'use client' /** * Brandbook - Corporate Design & Styleguide * * Aktualisiert fuer admin-v2 mit: * - Neuen Kategorie-Farben * - Aktuellem UI-Design * - Inter Font Family */ import { useState } from 'react' // Primary brand color (Sky Blue) const PRIMARY_COLORS = { name: 'Primary (Sky Blue)', description: 'Haupt-Markenfarbe fuer Buttons, Links und Akzente', shades: [ { name: '50', value: '#f0f9ff', text: 'dark' }, { name: '100', value: '#e0f2fe', text: 'dark' }, { name: '200', value: '#bae6fd', text: 'dark' }, { name: '300', value: '#7dd3fc', text: 'dark' }, { name: '400', value: '#38bdf8', text: 'dark' }, { name: '500', value: '#0ea5e9', text: 'light' }, { name: '600', value: '#0284c7', text: 'light' }, { name: '700', value: '#0369a1', text: 'light' }, { name: '800', value: '#075985', text: 'light' }, { name: '900', value: '#0c4a6e', text: 'light' }, ], } // Accent brand color (Fuchsia) - for logo gradient and highlights const ACCENT_COLORS = { name: 'Accent (Fuchsia)', description: 'Akzentfarbe fuer Logo-Gradient und besondere Highlights', shades: [ { name: '50', value: '#fdf4ff', text: 'dark' }, { name: '100', value: '#fae8ff', text: 'dark' }, { name: '200', value: '#f5d0fe', text: 'dark' }, { name: '300', value: '#f0abfc', text: 'dark' }, { name: '400', value: '#e879f9', text: 'dark' }, { name: '500', value: '#d946ef', text: 'light' }, { name: '600', value: '#c026d3', text: 'light' }, { name: '700', value: '#a21caf', text: 'light' }, { name: '800', value: '#86198f', text: 'light' }, { name: '900', value: '#701a75', text: 'light' }, ], } // Category colors for navigation and modules const CATEGORY_COLORS = [ { id: 'dsgvo', name: 'DSGVO (Violet)', description: 'Datenschutz & Betroffenenrechte', main: '#7c3aed', shades: [ { name: '100', value: '#ede9fe', text: 'dark' }, { name: '500', value: '#8b5cf6', text: 'light' }, { name: '600', value: '#7c3aed', text: 'light' }, { name: '700', value: '#6d28d9', text: 'light' }, ], }, { id: 'compliance', name: 'Compliance (Purple)', description: 'Audit, Controls & Regulierung', main: '#9333ea', shades: [ { name: '100', value: '#f3e8ff', text: 'dark' }, { name: '500', value: '#a855f7', text: 'light' }, { name: '600', value: '#9333ea', text: 'light' }, { name: '700', value: '#7e22ce', text: 'light' }, ], }, { id: 'ai', name: 'KI & Automatisierung (Teal)', description: 'LLM, OCR, RAG & Machine Learning', main: '#14b8a6', shades: [ { name: '100', value: '#ccfbf1', text: 'dark' }, { name: '500', value: '#14b8a6', text: 'light' }, { name: '600', value: '#0d9488', text: 'light' }, { name: '700', value: '#0f766e', text: 'light' }, ], }, { id: 'infrastructure', name: 'Infrastruktur (Orange)', description: 'GPU, Security, CI/CD & Monitoring', main: '#f97316', shades: [ { name: '100', value: '#ffedd5', text: 'dark' }, { name: '500', value: '#f97316', text: 'light' }, { name: '600', value: '#ea580c', text: 'light' }, { name: '700', value: '#c2410c', text: 'light' }, ], }, { id: 'education', name: 'Bildung & Schule (Blue)', description: 'Bildungsquellen & Lehrplaene', main: '#3b82f6', shades: [ { name: '100', value: '#dbeafe', text: 'dark' }, { name: '500', value: '#3b82f6', text: 'light' }, { name: '600', value: '#2563eb', text: 'light' }, { name: '700', value: '#1d4ed8', text: 'light' }, ], }, { id: 'communication', name: 'Kommunikation (Green)', description: 'Matrix, E-Mail & Benachrichtigungen', main: '#22c55e', shades: [ { name: '100', value: '#dcfce7', text: 'dark' }, { name: '500', value: '#22c55e', text: 'light' }, { name: '600', value: '#16a34a', text: 'light' }, { name: '700', value: '#15803d', text: 'light' }, ], }, { id: 'development', name: 'Entwicklung (Slate)', description: 'Workflow, Game, Docs & Brandbook', main: '#64748b', shades: [ { name: '100', value: '#f1f5f9', text: 'dark' }, { name: '500', value: '#64748b', text: 'light' }, { name: '600', value: '#475569', text: 'light' }, { name: '700', value: '#334155', text: 'light' }, ], }, ] // Semantic colors const SEMANTIC_COLORS = { success: { name: 'Success (Emerald)', shades: [ { name: '100', value: '#d1fae5', text: 'dark' }, { name: '500', value: '#10b981', text: 'light' }, { name: '600', value: '#059669', text: 'light' }, ], }, warning: { name: 'Warning (Amber)', shades: [ { name: '100', value: '#fef3c7', text: 'dark' }, { name: '500', value: '#f59e0b', text: 'dark' }, { name: '600', value: '#d97706', text: 'light' }, ], }, danger: { name: 'Danger (Red)', shades: [ { name: '100', value: '#fee2e2', text: 'dark' }, { name: '500', value: '#ef4444', text: 'light' }, { name: '600', value: '#dc2626', text: 'light' }, ], }, neutral: { name: 'Neutral (Slate)', shades: [ { name: '50', value: '#f8fafc', text: 'dark' }, { name: '100', value: '#f1f5f9', text: 'dark' }, { name: '200', value: '#e2e8f0', text: 'dark' }, { name: '300', value: '#cbd5e1', text: 'dark' }, { name: '400', value: '#94a3b8', text: 'dark' }, { name: '500', value: '#64748b', text: 'light' }, { name: '600', value: '#475569', text: 'light' }, { name: '700', value: '#334155', text: 'light' }, { name: '800', value: '#1e293b', text: 'light' }, { name: '900', value: '#0f172a', text: 'light' }, ], }, } const TYPOGRAPHY = { fontFamily: "'Inter', system-ui, -apple-system, sans-serif", weights: [ { weight: 400, name: 'Regular', usage: 'Fliesstext, Beschreibungen' }, { weight: 500, name: 'Medium', usage: 'Labels, Buttons, Navigation' }, { weight: 600, name: 'Semi-Bold', usage: 'Ueberschriften H3-H6, Card-Titel' }, { weight: 700, name: 'Bold', usage: 'Ueberschriften H1-H2, CTAs' }, ], sizes: [ { name: 'xs', size: '0.75rem (12px)', usage: 'Footnotes, Badges' }, { name: 'sm', size: '0.875rem (14px)', usage: 'Nebentext, Labels' }, { name: 'base', size: '1rem (16px)', usage: 'Fliesstext, Body' }, { name: 'lg', size: '1.125rem (18px)', usage: 'Lead Text' }, { name: 'xl', size: '1.25rem (20px)', usage: 'H4, Card Titles' }, { name: '2xl', size: '1.5rem (24px)', usage: 'H3' }, { name: '3xl', size: '1.875rem (30px)', usage: 'H2' }, { name: '4xl', size: '2.25rem (36px)', usage: 'H1, Hero' }, ], } const SPACING = [ { name: '1', value: '0.25rem (4px)', usage: 'Minimaler Abstand' }, { name: '2', value: '0.5rem (8px)', usage: 'Kompakter Abstand' }, { name: '3', value: '0.75rem (12px)', usage: 'Standard klein' }, { name: '4', value: '1rem (16px)', usage: 'Standard' }, { name: '6', value: '1.5rem (24px)', usage: 'Card Padding' }, { name: '8', value: '2rem (32px)', usage: 'Section Spacing' }, ] const VOICE_TONE = { attributes: [ 'Professionell & Vertrauenswuerdig', 'Klar & Direkt', 'Hilfreich & Unterstuetzend', 'Modern & Innovativ', 'DSGVO-konform & Sicher', ], doList: [ 'Einfache, klare Sprache verwenden', 'Aktiv formulieren', 'Nutzenorientiert schreiben', 'Konkrete Beispiele geben', 'Technische Begriffe erklaeren', ], dontList: [ 'Fachjargon ohne Erklaerung', 'Passive Formulierungen', 'Uebertriebene Versprechen', 'Marketing-Floskeln', 'Unpersoenliche Ansprache', ], } function ColorSwatch({ color, name }: { color: { name: string; value: string; text: string }; name?: string }) { const [copied, setCopied] = useState(false) const copyToClipboard = () => { navigator.clipboard.writeText(color.value) setCopied(true) setTimeout(() => setCopied(false), 2000) } return ( ) } export default function BrandbookPage() { const [activeTab, setActiveTab] = useState<'colors' | 'typography' | 'components' | 'logo' | 'voice'>('colors') return (
{/* Header */}

Brandbook

Corporate Design & Styleguide fuer BreakPilot Admin v2

{/* Tabs */}
{[ { id: 'colors', label: 'Farben' }, { id: 'typography', label: 'Typografie' }, { id: 'components', label: 'Komponenten' }, { id: 'logo', label: 'Logo' }, { id: 'voice', label: 'Tonalitaet' }, ].map((tab) => ( ))}
{/* Colors Tab */} {activeTab === 'colors' && (
{/* Primary Color */}

{PRIMARY_COLORS.name}

{PRIMARY_COLORS.description}

{PRIMARY_COLORS.shades.map((shade) => ( ))}
{/* Accent Color */}

{ACCENT_COLORS.name}

{ACCENT_COLORS.description}

{ACCENT_COLORS.shades.map((shade) => ( ))}
{/* Logo Gradient Preview */}

Logo-Gradient

B
bg-gradient-to-br from-primary-500 to-accent-500

Sky Blue (#0ea5e9) → Fuchsia (#d946ef)

{/* Category Colors */}

Kategorie-Farben

Jede Kategorie hat eine eigene Farbe fuer Navigation, Module und Akzente.

{CATEGORY_COLORS.map((cat) => (

{cat.name}

{cat.description}

{cat.shades.map((shade) => ( ))}
))}
{/* Semantic Colors */}

Semantische Farben

{Object.entries(SEMANTIC_COLORS).map(([key, palette]) => (

{palette.name}

{palette.shades.map((shade) => ( ))}
))}
{/* Usage Guidelines */}

Verwendungsrichtlinien

Primary (Sky Blue)

  • - Primaere Buttons und CTAs
  • - Links und interaktive Elemente
  • - Fokuszustaende
  • - Ausgewaehlte Navigation

Kategorie-Farben

  • - Sidebar-Navigation Icons
  • - Modul-Cards und Badges
  • - Bereichs-spezifische Akzente
  • - Breadcrumbs und Headers
)} {/* Typography Tab */} {activeTab === 'typography' && (
{/* Font Family */}

Schriftart: Inter

font-family: {TYPOGRAPHY.fontFamily};

Inter ist eine moderne, variable Sans-Serif Schrift, optimiert fuer Bildschirme. Sie ist unter der SIL Open Font License verfuegbar und frei fuer kommerzielle Nutzung.

{/* Font Licenses */}

Lizenzen

{/* Inter License */}

Inter Font

Designer: Rasmus Andersson

OFL-1.1
Lizenz: SIL Open Font License 1.1
Kommerzielle Nutzung: Ja, uneingeschraenkt
Attribution erforderlich: Nein
{/* Heroicons License */}

Heroicons

Designer: Tailwind Labs

MIT
Lizenz: MIT License
Kommerzielle Nutzung: Ja, uneingeschraenkt
Attribution erforderlich: Nein (empfohlen)
{/* License Summary */}

Lizenz-Compliance

Alle verwendeten Schriftarten und Icons sind Open Source und fuer kommerzielle Nutzung freigegeben. Keine Attribution erforderlich. Vollstaendige Dokumentation in der SBOM.

{/* Font Weights */}

Schriftschnitte

{TYPOGRAPHY.weights.map((w) => (
The quick brown fox
{w.name} ({w.weight}) {w.usage}
))}
{/* Font Sizes */}

Schriftgroessen

{TYPOGRAPHY.sizes.map((s) => (
{s.name} {s.size} {s.usage}
))}
{/* Headings Preview */}

Ueberschriften-Hierarchie

H1: Hauptueberschrift
H2: Abschnittsueberschrift
H3: Unterabschnitt
H4: Card-Titel
H5: Kleiner Titel
H6: Label
{/* Spacing */}

Spacing Scale

{SPACING.map((s) => (
{s.name}
{s.value} {s.usage}
))}
)} {/* Components Tab */} {activeTab === 'components' && (
{/* Buttons */}

Buttons

{/* Inputs */}

Eingabefelder

{/* Cards */}

Cards

Feature Card

Standard Card mit Hover-Effekt.

Highlight Card

Mit Gradient-Hintergrund.

Dark Card

Sidebar-Style.

{/* Category Cards */}

Kategorie-Cards

{CATEGORY_COLORS.slice(0, 3).map((cat) => (

{cat.name.split(' (')[0]}

{cat.description}

))}
{/* Badges */}

Badges & Tags

Primary Success Warning Danger Neutral

Kategorie-Badges

{CATEGORY_COLORS.map((cat) => ( {cat.name.split(' (')[0]} ))}
{/* Border Radius */}

Border Radius

rounded (4px)
rounded-lg (8px)
rounded-xl (12px)
rounded-2xl (16px)
rounded-full
)} {/* Logo Tab */} {activeTab === 'logo' && (
{/* Logo Display */}

Logo

B
BreakPilot Admin v2
B
BreakPilot Admin v2
{/* Gradient Info */}
background: linear-gradient(to bottom right, #0ea5e9, #d946ef) Primary → Accent (Sky Blue → Fuchsia)
{/* Logo Variations */}

Logo-Varianten

B
Icon Only
BreakPilot Text Only
B
BreakPilot
Horizontal
B
BreakPilot
Stacked
{/* Favicon */}

Favicon & App Icon

B
16x16
B
32x32
B
180x180
B
512x512
{/* Donts */}

Nicht erlaubt

B
BreakPilot
Falsche Farben
B
BreakPilot
Verzerrt
B
Break Pilot
Falsche Schreibweise
{/* Studio Logo - BP mit Fluegeln */}

Studio Logo (BP mit Fluegeln)

Das Studio-Logo verwendet ein rotes Farbschema und zeigt "BP" mit stilisierten Fluegeln. Es gibt drei Design-Varianten fuer unterschiedliche Anwendungsfaelle.

{/* Variante A: Cupertino Clean */}

A: Cupertino Clean

BP
BreakPilot Studio
#ef4444 → #b91c1c

Minimalistisch, SF-Style, BP mit Fluegel-Linien

{/* Variante B: Glassmorphism Pro */}

B: Glassmorphism Pro

BreakPilot Studio
#f87171 → #dc2626

Glassmorphism, Glow-Effekt, Papierflugzeug-Silhouette

{/* Variante C: Bento Style */}

C: Bento Style

BreakPilot Studio
#ef4444 → #991b1b

Geometrisch, Monoweight, B+P als Kreise/Linien

{/* Studio Farbpalette */}

Studio Farbpalette (Rot)

red-50
red-400
red-500
red-600
red-700
red-800

Quelle: /studio-v2/components/Logo.tsx

)} {/* Voice & Tone Tab */} {activeTab === 'voice' && (
{/* Brand Attributes */}

Markenpersoenlichkeit

{VOICE_TONE.attributes.map((attr) => ( {attr} ))}
{/* Do & Dont */}

So schreiben wir

    {VOICE_TONE.doList.map((item) => (
  • {item}
  • ))}

Das vermeiden wir

    {VOICE_TONE.dontList.map((item) => (
  • {item}
  • ))}
{/* Example Texts */}

Beispieltexte

GUT

"Verwalten Sie Ihre Datenschutz-Dokumente einfach und sicher. Alle Aenderungen werden protokolliert."

SCHLECHT

"Unsere revolutionaere KI-Loesung optimiert Ihre Compliance-Workflows durch state-of-the-art NLP."

{/* Target Audience */}

Zielgruppe

Lehrkraefte

Zeitersparnis, einfache Bedienung

DSB

DSGVO-Compliance, Dokumentation

Entwickler

APIs, Integration, DevOps

Schulleitung

Ueberblick, Kosten, Compliance

)}
) }