MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
Remove outdated claims (CRDT, DocRooms, presence, .md files on disk) and document the actual architecture, API, permissions and known flaws. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
6.4 KiB
6.4 KiB
🎨 Single-File CSS Theming Engine & Design-System
MindSift implementiert ein radikal einfaches, modulares Theming-System. Anstatt Farb- und Geometriewerte in Dutzenden Tailwind-Klassen über hunderte Komponenten zu verstreuen, wird das komplette Erscheinungsbild der Plattform über eine einzige CSS-Datei pro Theme gesteuert.
💡 1. Philosophie: 1 Datei = 1 komplettes Theme
Jedes Theme liegt im Verzeichnis frontend/src/themes/ und definiert alle visuellen Eigenschaften über standardisierte CSS-Variablen.
Trennung von Struktur und Design
- React-Komponenten definieren ausschließlich semantische Klassen (wie
.panel-surface,.input-field,.btn-primary,text-main,bg-canvas). - Die aktive Theme-CSS-Datei bestimmt, welche konkreten Farben, Kontraste, Rahmenbreiten und Ecken-Rundungen diesen Klassen zugewiesen werden.
🧱 2. Die 6 standardisierten Variablen-Blöcke
Jede Theme-Datei gliedert sich in sechs exakt definierte Bereiche:
:root[data-theme="dein-theme"] {
/* ==========================================================================
1. AKZENTFARBE (Fokus, Primäraktionen, Highlights)
========================================================================== */
--accent: #2563eb; /* Primäre Schaltflächen & aktive Tabs */
--accent-hover: #3b82f6; /* Hover-Zustand */
--accent-dim: rgba(37, 99, 235, 0.15);/* Transparenter Hintergrund für Badges */
--accent-contrast: #ffffff; /* Textfarbe auf Akzentflächen */
/* ==========================================================================
2. OBERFLÄCHEN & HINTERGRÜNDE
========================================================================== */
--bg-canvas: #0e1013; /* Grundhintergrund der gesamten Seite */
--bg-panel: #16181d; /* Panels, Karten, Modals & Seitenleisten */
--bg-panel-elevated: #1f2229; /* Hervorgehobene Elemente & Hover-Panels */
--bg-input: #121418; /* Hintergrund von Textfeldern */
--bg-code: #0b0c0f; /* Codeblöcke & Tastatur-Badges */
--bg-overlay: rgba(0, 0, 0, 0.75); /* Modal-Hintergrund Backdrop */
/* ==========================================================================
3. TEXT & KONTRASTE
========================================================================== */
--text-main: #f4f4f5; /* Haupttext, Überschriften, Labels */
--text-muted: #a1a1aa; /* Sekundärtext, Beschreibungen */
--text-faint: #71717a; /* Dezentester Text, Tastaturhinweise */
--text-on-accent: #ffffff; /* Lesbarer Text auf --accent */
/* ==========================================================================
4. RAHMEN, LINIEN & SCHATTEN
========================================================================== */
--border-color: rgba(255, 255, 255, 0.08); /* Standard-Trennlinien */
--border-strong: rgba(255, 255, 255, 0.18);/* Fokussierte Rahmen, Tabs */
--shadow-panel: 0 4px 20px -2px rgba(0, 0, 0, 0.45); /* Box-Shadows */
/* ==========================================================================
5. STATUS- & SIGNALFARBEN
========================================================================== */
--status-ok: #22c55e; /* Erledigt, Online, Aktiv (Grün) */
--status-err: #ef4444; /* Fehler, Löschen, Dringend (Rot) */
--status-warn: #eab308; /* Wichtig, Warnung, Gesperrt (Gelb) */
--status-info: #3b82f6; /* Hinweise, Information (Blau) */
/* ==========================================================================
6. RUNDUNGEN / GEOMETRIE
========================================================================== */
--radius-card: 0px; /* Eckenrundung von Panels & Karten */
--radius-btn: 2px; /* Eckenrundung von Schaltflächen */
--radius-input: 2px; /* Eckenrundung von Eingabefeldern */
--radius-checkbox: 2px; /* Checkboxen */
--radius-pill: 9999px; /* Pillen & Status-Badges */
}
🎭 3. Verfügbare Standard-Themes
| Theme-ID | Datei | Stil & Charakter | Standard-Geometrie |
|---|---|---|---|
dark |
theme-dark.css |
Standard Dark Slate / Monochrom | Streng eckig (0px Cards, 2px Buttons) |
light |
theme-light.css |
Daylight Clean White / Minimalistisch | Modern dezent (4px Cards, 4px Buttons) |
high-contrast |
theme-high-contrast.css |
Reines Schwarz/Weiß mit AAA-Kontrast | Streng eckig (0px, kräftige Rahmen) |
soft |
theme-soft.css |
Warmes Soft Slate mit Indigo-Akzent | Weich gerundet (12px Cards, 8px Buttons) |
| Template | theme-template.css |
Vollständig dokumentierte Kopiervorlage | Frei anpassbar |
🔌 4. Tailwind-Bridge & Semantische Klassen
In frontend/src/index.css und tailwind.config.js sind die semantischen Utility-Klassen definiert, die sich automatisch an das gewählte Theme anpassen:
.panel-surface: Wendet--bg-panel,--border-colorund--radius-cardan..input-field: Wendet--bg-input,--border-color,--radius-inputund--text-mainan..btn-primary: Akzent-Schaltfläche mit--accent,--accent-hover,--text-on-accentund--radius-btn..btn-action: Sekundär-Aktion mit dezentem Rahmen und Hover-Zustand..checkbox-square: Kontrollkästchen mit--radius-checkbox..capture-pill: Spezial-Pille für die Desktop-Schnelleingabeleiste mit--radius-pill.
🛠️ 5. Ein eigenes Theme erstellen
Um ein neues Theme (z.B. „Nordic Blue" oder „Cyberpunk") hinzuzufügen:
- Kopiere
frontend/src/themes/theme-template.cssnachfrontend/src/themes/theme-meintheme.css. - Ändere den Selektor
:root[data-theme="template"]in:root[data-theme="meintheme"]. - Passe Farben und Rundungen nach Belieben an.
- Importiere die CSS-Datei in
frontend/src/lib/theme.tsund trage das Theme imAVAILABLE_THEMES-Array ein. - Das neue Theme steht sofort in den Kontoeinstellungen und im Profil-Dropdown zur Verfügung!