Skip to content

Commit 0f45747

Browse files
committed
fix(web): consolidate dark mode into single source of truth
Move all hardcoded color hex values from @theme in index.css into variables.css as -val CSS variables with light/dark pairs. @theme now uses var() references only, making it a pure mapping layer. - Add ~60 -val token variables to variables.css with [data-theme="dark"] overrides - Add --color-popover/--color-popover-foreground for shadcn components - Delete separate [data-theme='dark'] override block from index.css - Fix hardcoded background: white in UploadAnimation.css, base-popup.css, image-slider.css - Add matching overrides to @media (prefers-color-scheme: dark) fallback
1 parent 9e40b5f commit 0f45747

5 files changed

Lines changed: 343 additions & 143 deletions

File tree

apps/web/src/assets/styles/common/variables.css

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,116 @@
175175
--form-element-padding-y: var(--spacing-responsive-small);
176176
--form-element-padding-x: var(--spacing-responsive-small);
177177
--form-element-min-height: 44px;
178+
179+
/* ── Tailwind @theme token values (light mode) ──
180+
These -val variables are referenced by @theme in index.css.
181+
Dark overrides live in the [data-theme="dark"] block below. */
182+
183+
/* Primary shortcuts */
184+
--color-primary-light-val: #46962b;
185+
--color-primary-dark-val: #1a332a;
186+
187+
/* Surface & Layout */
188+
--color-surface-val: #f3f4f6;
189+
--color-surface-hover-val: #e5e7eb;
190+
--color-hover-overlay-val: rgba(0,0,0,0.05);
191+
--color-user-bubble-val: #f0f8f4;
192+
--color-background-secondary-val: #f8faf9;
193+
--color-background-dark-val: #1a332a;
194+
195+
/* Text */
196+
--color-foreground-muted-val: #666666;
197+
--color-foreground-dark-val: #e5e5e5;
198+
--color-muted-foreground-val: #666666;
199+
200+
/* Borders */
201+
--color-border-val: #e5e5e5;
202+
--color-border-dark-val: #374151;
203+
204+
/* Card */
205+
--color-card-val: #ffffff;
206+
--color-card-foreground-val: #1a1a1a;
207+
208+
/* Popover (same as card) */
209+
--color-popover-val: #ffffff;
210+
--color-popover-foreground-val: #1a1a1a;
211+
212+
/* Accent & Actions */
213+
--color-accent-hover-val: #3d8225;
214+
--color-destructive-val: #dc2626;
215+
216+
/* Code Blocks */
217+
--color-code-block-bg-val: #111827;
218+
--color-code-block-fg-val: #e5e7eb;
219+
--color-code-inline-bg-val: #f3f4f6;
220+
221+
/* Error */
222+
--color-error-bg-val: #fef2f2;
223+
224+
/* Badge Colors */
225+
--color-badge-purple-val: #7c3aed;
226+
--color-badge-purple-bg-val: rgba(139,92,246,0.1);
227+
--color-badge-indigo-val: #4338ca;
228+
--color-badge-indigo-bg-val: rgba(99,102,241,0.1);
229+
--color-badge-indigo-hover-val: rgba(99,102,241,0.15);
230+
231+
/* Status Colors */
232+
--color-status-green-val: #16a34a;
233+
--color-status-yellow-val: #ca8a04;
234+
--color-status-red-val: #dc2626;
235+
236+
/* Muted / Disabled */
237+
--color-muted-disabled-val: #9ca3af;
238+
239+
/* Tool Colors */
240+
--color-tool-indigo-val: #4f46e5;
241+
--color-tool-indigo-bg-val: #e0e7ff;
242+
--color-tool-emerald-val: #059669;
243+
--color-tool-emerald-bg-val: #d1fae5;
244+
--color-tool-orange-val: #ea580c;
245+
--color-tool-orange-bg-val: #ffedd5;
246+
--color-tool-purple-val: #9333ea;
247+
--color-tool-purple-bg-val: #f3e8ff;
248+
249+
/* Section / Toggle */
250+
--color-section-border-val: #e5e7eb;
251+
--color-toggle-track-val: #cbd5e1;
252+
253+
/* Collection Badge Colors */
254+
--color-collection-grundsatzprogramm-val: #059669;
255+
--color-collection-grundsatzprogramm-bg-val: rgba(5,150,105,0.1);
256+
--color-collection-bundestagsfraktion-val: #2563eb;
257+
--color-collection-bundestagsfraktion-bg-val: rgba(37,99,235,0.1);
258+
--color-collection-gruene-de-val: #16a34a;
259+
--color-collection-gruene-de-bg-val: rgba(22,163,74,0.1);
260+
--color-collection-kommunalwiki-val: #d97706;
261+
--color-collection-kommunalwiki-bg-val: rgba(217,119,6,0.1);
262+
--color-collection-web-val: #ea580c;
263+
--color-collection-web-bg-val: rgba(234,88,12,0.1);
264+
--color-collection-research-val: #4f46e5;
265+
--color-collection-research-bg-val: rgba(79,70,229,0.1);
266+
--color-collection-landesverband-val: #0d9488;
267+
--color-collection-landesverband-bg-val: rgba(13,148,136,0.1);
268+
--color-collection-boell-val: #7c3aed;
269+
--color-collection-boell-bg-val: rgba(124,58,237,0.1);
270+
--color-collection-examples-val: #ec4899;
271+
--color-collection-examples-bg-val: rgba(236,72,153,0.1);
272+
--color-collection-oesterreich-val: #0891b2;
273+
--color-collection-oesterreich-bg-val: rgba(8,145,178,0.1);
274+
275+
/* Relevance Indicator Colors */
276+
--color-relevance-high-val: #16a34a;
277+
--color-relevance-medium-val: #ca8a04;
278+
--color-relevance-low-val: #dc2626;
279+
280+
/* Standard shadcn semantic tokens */
281+
--color-primary-foreground-val: #ffffff;
282+
--color-secondary-foreground-val: #ffffff;
283+
--color-accent-foreground-val: #1a1a1a;
284+
--color-muted-val: #f3f4f6;
285+
--color-destructive-foreground-val: #ffffff;
286+
--color-input-val: #e5e5e5;
287+
--color-ring-val: var(--primary-500);
178288
}
179289

180290

@@ -219,6 +329,99 @@
219329

220330
/* Form Input Styles for dark theme */
221331
--input-background: var(--background-color-alt);
332+
333+
/* ── Tailwind @theme token values (dark mode) ── */
334+
335+
/* Surface & Layout */
336+
--color-surface-val: rgba(255,255,255,0.05);
337+
--color-surface-hover-val: rgba(255,255,255,0.1);
338+
--color-hover-overlay-val: rgba(255,255,255,0.05);
339+
--color-user-bubble-val: rgba(255,255,255,0.1);
340+
--color-background-secondary-val: #242424;
341+
342+
/* Text */
343+
--color-foreground-muted-val: #999999;
344+
--color-muted-foreground-val: #999999;
345+
346+
/* Borders */
347+
--color-border-val: #374151;
348+
349+
/* Card */
350+
--color-card-val: #242424;
351+
--color-card-foreground-val: #e5e5e5;
352+
353+
/* Popover (same as card) */
354+
--color-popover-val: #242424;
355+
--color-popover-foreground-val: #e5e5e5;
356+
357+
/* Code Blocks */
358+
--color-code-inline-bg-val: #1f2937;
359+
360+
/* Error */
361+
--color-error-bg-val: rgba(153,27,27,0.2);
362+
363+
/* Badge Colors */
364+
--color-badge-purple-val: #c4b5fd;
365+
--color-badge-purple-bg-val: rgba(91,33,182,0.3);
366+
--color-badge-indigo-val: #a5b4fc;
367+
--color-badge-indigo-bg-val: rgba(67,56,202,0.4);
368+
--color-badge-indigo-hover-val: rgba(67,56,202,0.5);
369+
370+
/* Status Colors */
371+
--color-status-green-val: #4ade80;
372+
--color-status-yellow-val: #facc15;
373+
--color-status-red-val: #f87171;
374+
375+
/* Muted / Disabled */
376+
--color-muted-disabled-val: #6b7280;
377+
378+
/* Tool Colors */
379+
--color-tool-indigo-val: #818cf8;
380+
--color-tool-indigo-bg-val: rgba(67,56,202,0.3);
381+
--color-tool-emerald-val: #34d399;
382+
--color-tool-emerald-bg-val: rgba(5,150,105,0.3);
383+
--color-tool-orange-val: #fb923c;
384+
--color-tool-orange-bg-val: rgba(234,88,12,0.3);
385+
--color-tool-purple-val: #c084fc;
386+
--color-tool-purple-bg-val: rgba(147,51,234,0.3);
387+
388+
/* Section / Toggle */
389+
--color-section-border-val: #374151;
390+
--color-toggle-track-val: #4b5563;
391+
392+
/* Collection Badge Colors */
393+
--color-collection-grundsatzprogramm-val: #34d399;
394+
--color-collection-grundsatzprogramm-bg-val: rgba(5,150,105,0.25);
395+
--color-collection-bundestagsfraktion-val: #60a5fa;
396+
--color-collection-bundestagsfraktion-bg-val: rgba(37,99,235,0.25);
397+
--color-collection-gruene-de-val: #4ade80;
398+
--color-collection-gruene-de-bg-val: rgba(22,163,74,0.25);
399+
--color-collection-kommunalwiki-val: #fbbf24;
400+
--color-collection-kommunalwiki-bg-val: rgba(217,119,6,0.25);
401+
--color-collection-web-val: #fb923c;
402+
--color-collection-web-bg-val: rgba(234,88,12,0.25);
403+
--color-collection-research-val: #818cf8;
404+
--color-collection-research-bg-val: rgba(79,70,229,0.25);
405+
--color-collection-landesverband-val: #2dd4bf;
406+
--color-collection-landesverband-bg-val: rgba(13,148,136,0.25);
407+
--color-collection-boell-val: #a78bfa;
408+
--color-collection-boell-bg-val: rgba(124,58,237,0.25);
409+
--color-collection-examples-val: #f472b6;
410+
--color-collection-examples-bg-val: rgba(236,72,153,0.25);
411+
--color-collection-oesterreich-val: #22d3ee;
412+
--color-collection-oesterreich-bg-val: rgba(8,145,178,0.25);
413+
414+
/* Relevance Indicator Colors */
415+
--color-relevance-high-val: #4ade80;
416+
--color-relevance-medium-val: #facc15;
417+
--color-relevance-low-val: #f87171;
418+
419+
/* Standard shadcn semantic tokens */
420+
--color-accent-foreground-val: #e5e5e5;
421+
--color-muted-val: #2a2a2a;
422+
--color-destructive-val: #f87171;
423+
--color-input-val: #374151;
424+
--color-ring-val: #56a17e;
222425
}
223426

224427

@@ -265,6 +468,69 @@
265468

266469
/* Form Input Styles for prefers-color-scheme: dark */
267470
--input-background: var(--background-color-alt);
471+
472+
/* ── Tailwind @theme token values (prefers-color-scheme dark) ── */
473+
--color-surface-val: rgba(255,255,255,0.05);
474+
--color-surface-hover-val: rgba(255,255,255,0.1);
475+
--color-hover-overlay-val: rgba(255,255,255,0.05);
476+
--color-user-bubble-val: rgba(255,255,255,0.1);
477+
--color-background-secondary-val: #242424;
478+
--color-foreground-muted-val: #999999;
479+
--color-muted-foreground-val: #999999;
480+
--color-border-val: #374151;
481+
--color-card-val: #242424;
482+
--color-card-foreground-val: #e5e5e5;
483+
--color-popover-val: #242424;
484+
--color-popover-foreground-val: #e5e5e5;
485+
--color-code-inline-bg-val: #1f2937;
486+
--color-error-bg-val: rgba(153,27,27,0.2);
487+
--color-badge-purple-val: #c4b5fd;
488+
--color-badge-purple-bg-val: rgba(91,33,182,0.3);
489+
--color-badge-indigo-val: #a5b4fc;
490+
--color-badge-indigo-bg-val: rgba(67,56,202,0.4);
491+
--color-badge-indigo-hover-val: rgba(67,56,202,0.5);
492+
--color-status-green-val: #4ade80;
493+
--color-status-yellow-val: #facc15;
494+
--color-status-red-val: #f87171;
495+
--color-muted-disabled-val: #6b7280;
496+
--color-tool-indigo-val: #818cf8;
497+
--color-tool-indigo-bg-val: rgba(67,56,202,0.3);
498+
--color-tool-emerald-val: #34d399;
499+
--color-tool-emerald-bg-val: rgba(5,150,105,0.3);
500+
--color-tool-orange-val: #fb923c;
501+
--color-tool-orange-bg-val: rgba(234,88,12,0.3);
502+
--color-tool-purple-val: #c084fc;
503+
--color-tool-purple-bg-val: rgba(147,51,234,0.3);
504+
--color-section-border-val: #374151;
505+
--color-toggle-track-val: #4b5563;
506+
--color-collection-grundsatzprogramm-val: #34d399;
507+
--color-collection-grundsatzprogramm-bg-val: rgba(5,150,105,0.25);
508+
--color-collection-bundestagsfraktion-val: #60a5fa;
509+
--color-collection-bundestagsfraktion-bg-val: rgba(37,99,235,0.25);
510+
--color-collection-gruene-de-val: #4ade80;
511+
--color-collection-gruene-de-bg-val: rgba(22,163,74,0.25);
512+
--color-collection-kommunalwiki-val: #fbbf24;
513+
--color-collection-kommunalwiki-bg-val: rgba(217,119,6,0.25);
514+
--color-collection-web-val: #fb923c;
515+
--color-collection-web-bg-val: rgba(234,88,12,0.25);
516+
--color-collection-research-val: #818cf8;
517+
--color-collection-research-bg-val: rgba(79,70,229,0.25);
518+
--color-collection-landesverband-val: #2dd4bf;
519+
--color-collection-landesverband-bg-val: rgba(13,148,136,0.25);
520+
--color-collection-boell-val: #a78bfa;
521+
--color-collection-boell-bg-val: rgba(124,58,237,0.25);
522+
--color-collection-examples-val: #f472b6;
523+
--color-collection-examples-bg-val: rgba(236,72,153,0.25);
524+
--color-collection-oesterreich-val: #22d3ee;
525+
--color-collection-oesterreich-bg-val: rgba(8,145,178,0.25);
526+
--color-relevance-high-val: #4ade80;
527+
--color-relevance-medium-val: #facc15;
528+
--color-relevance-low-val: #f87171;
529+
--color-accent-foreground-val: #e5e5e5;
530+
--color-muted-val: #2a2a2a;
531+
--color-destructive-val: #f87171;
532+
--color-input-val: #374151;
533+
--color-ring-val: #56a17e;
268534
}
269535
}
270536

apps/web/src/assets/styles/components/ui/image-slider.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
}
9292

9393
.image-gallery-bullet.active {
94-
background-color: white;
94+
background-color: var(--background-color-pure);
9595
transform: scale(1.2);
9696
}
9797

0 commit comments

Comments
 (0)