From 03087f4fbba5985aa1aef2066d1797d976bd931e Mon Sep 17 00:00:00 2001 From: DanielS Date: Tue, 18 Aug 2026 15:30:24 +0200 Subject: [PATCH] feat(theme): configure colors via global css variables --- shop/app/globals.css | 24 ++++++++++- shop/components/admin/ColorThemePicker.tsx | 46 +++++++++++----------- 2 files changed, 46 insertions(+), 24 deletions(-) diff --git a/shop/app/globals.css b/shop/app/globals.css index 18578fa..a443357 100644 --- a/shop/app/globals.css +++ b/shop/app/globals.css @@ -151,11 +151,33 @@ html { border-color: color-mix(in srgb, var(--destructive-custom) 35%, transparent) !important; } -/* Background Glowing Orbs */ +/* Background Glowing Orbs & Dynamic Surfaces */ .blur-\[120px\] { background-color: var(--bg-glow-1) !important; } +.bg-\[\#020617\] { + background-color: oklch(var(--oklch-background)) !important; +} + +/* Dynamische Buttons & Badges über globale CSS Variablen */ +.btn-primary-theme, .bg-primary-theme { + background-color: var(--button-bg, var(--primary-custom)) !important; + color: #ffffff !important; +} + +.text-highlight-theme { + color: var(--text-highlight, var(--accent-custom)) !important; +} + +.border-glow-theme { + border-color: var(--card-border-glow, color-mix(in srgb, var(--accent-custom) 35%, transparent)) !important; +} + +.ring-theme { + --tw-ring-color: var(--ring-color, var(--primary-custom)) !important; +} + input, select, textarea, option { background-color: oklch(var(--oklch-surface)) !important; color: oklch(var(--oklch-text-main)) !important; diff --git a/shop/components/admin/ColorThemePicker.tsx b/shop/components/admin/ColorThemePicker.tsx index 8f3210f..c64294f 100644 --- a/shop/components/admin/ColorThemePicker.tsx +++ b/shop/components/admin/ColorThemePicker.tsx @@ -58,16 +58,16 @@ export function ColorThemePicker({ const isSelected = colorScheme === preset.id const tokenSwatches = [ - preset.primary, - preset.accent, - preset.bgGlow1, - preset.bgGlow2, - preset.gradientFrom, - preset.gradientTo, - preset.textHighlight, - preset.buttonBg, - preset.ringColor, - preset.cardBorder, + { name: 'Primary', color: preset.primary, desc: 'Helle/edle Hauptfarbe für Navigation/Texte' }, + { name: 'Accent', color: preset.accent, desc: 'Scharfe Highlight-Farbe für Badges/Meldungen' }, + { name: 'bgGlow1', color: preset.bgGlow1, desc: 'Atmosphärischer Lichtnebel von oben' }, + { name: 'bgGlow2', color: preset.bgGlow2, desc: 'Subtiles Gegenlicht von unten' }, + { name: 'gradientFrom', color: preset.gradientFrom, desc: 'Startfarbe für Core-Verläufe' }, + { name: 'gradientTo', color: preset.gradientTo, desc: 'Endfarbe für Core-Verläufe' }, + { name: 'textHighlight', color: preset.textHighlight, desc: 'Soft-Pastell Text-Empfehlung' }, + { name: 'buttonBg', color: preset.buttonBg, desc: 'Satte Basisfarbe Hauptbuttons' }, + { name: 'ringColor', color: preset.ringColor, desc: 'Präzise Fokus-Rand-Farbe' }, + { name: 'cardBorder', color: preset.cardBorder, desc: 'Subtiler Rahmen-Ton Karten' }, ] return ( @@ -99,12 +99,12 @@ export function ColorThemePicker({ {/* 10 Color Token Swatches Bar */}
- {tokenSwatches.map((color, i) => ( + {tokenSwatches.map((item, i) => ( ))}
@@ -199,11 +199,11 @@ export function ColorThemePicker({ {/* Animated Background Orbs Preview */}
{/* Header Preview */} @@ -211,7 +211,7 @@ export function ColorThemePicker({
@@ -221,7 +221,7 @@ export function ColorThemePicker({
Aktiv @@ -233,7 +233,7 @@ export function ColorThemePicker({ type="button" className="px-4 py-2 rounded-lg text-xs font-bold text-white shadow-md flex items-center gap-1.5 transition-all" style={{ - background: `linear-gradient(135deg, ${primaryColor} 0%, ${activePreset.gradientTo || primaryColor} 100%)`, + background: `linear-gradient(135deg, var(--gradient-from, ${primaryColor}) 0%, var(--gradient-to, ${activePreset.gradientTo || primaryColor}) 100%)`, }} > @@ -243,7 +243,7 @@ export function ColorThemePicker({ @@ -251,9 +251,9 @@ export function ColorThemePicker({