feat(frontend): Oberfläche mit RRULE-Editor und Logo-Auswahl
- Vite, React 18, TypeScript und Tailwind mit dunklem Standard-Theme über CSS-Variablen, heller Modus umschaltbar und in localStorage gemerkt - Anmeldung, erzwungener Passwortwechsel, Layout mit Seitenleiste - API-Client mit stiller Token-Erneuerung, TanStack Query mit Fehler-Toasts - Seiten Recurrences (inkl. Detail-Drawer), Transactions, Merchants, Settings - Geführter RRULE-Editor mit Vorlagen, Expertenmodus, deutschem Klartext und Live-Vorschau der nächsten Termine vom preview-Endpunkt - Firmen-Kachelgrid mit Logo, Markenfarbe und Logo-Auswahldialog samt Upload - Beträge durchgängig in de-DE, Eingabe in beiden Schreibweisen - 49 Tests, tsc --noEmit und eslint sauber, Produktionsbundle baut Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer base {
|
||||
/* Heller Modus */
|
||||
:root {
|
||||
--color-ground: 248 250 252;
|
||||
--color-surface: 255 255 255;
|
||||
--color-raised: 241 245 249;
|
||||
--color-line: 226 232 240;
|
||||
--color-ink: 15 23 42;
|
||||
--color-muted: 71 85 105;
|
||||
--color-faint: 148 163 184;
|
||||
--color-accent: 22 163 74;
|
||||
--color-accent-ink: 255 255 255;
|
||||
--color-positive: 21 128 61;
|
||||
--color-negative: 190 18 60;
|
||||
--color-warning: 180 83 9;
|
||||
}
|
||||
|
||||
/* Dunkler Modus – die Vorgabe der Anwendung */
|
||||
.dark {
|
||||
--color-ground: 15 17 21;
|
||||
--color-surface: 24 27 33;
|
||||
--color-raised: 33 37 45;
|
||||
--color-line: 51 57 68;
|
||||
--color-ink: 226 232 240;
|
||||
--color-muted: 148 163 184;
|
||||
--color-faint: 100 116 139;
|
||||
--color-accent: 34 197 94;
|
||||
--color-accent-ink: 4 20 11;
|
||||
--color-positive: 74 222 128;
|
||||
--color-negative: 248 113 113;
|
||||
--color-warning: 251 191 36;
|
||||
}
|
||||
|
||||
html {
|
||||
@apply h-full;
|
||||
}
|
||||
|
||||
body {
|
||||
@apply h-full bg-ground font-sans text-ink antialiased;
|
||||
}
|
||||
|
||||
#root {
|
||||
@apply h-full;
|
||||
}
|
||||
|
||||
/* Sichtbarer Fokus überall – die Anwendung ist vollständig per Tastatur bedienbar. */
|
||||
:focus-visible {
|
||||
@apply outline-none ring-2 ring-accent ring-offset-2 ring-offset-ground;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
@apply h-2 w-2;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
@apply rounded-full bg-line;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
.card {
|
||||
@apply rounded-card border border-line bg-surface;
|
||||
}
|
||||
|
||||
/* Zahlen sollen untereinander bündig stehen. */
|
||||
.tabular {
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user