From 6da317d0717ccdf776c18bf7c3208801e4903087 Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 15 Apr 2026 22:11:42 +0200 Subject: [PATCH] refactor(theme): migrate shared packages to --color-* token naming MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Several shared-ui / shared-auth-ui / subscriptions / credits components used shadcn-style bare CSS variables (--muted, --primary, --foreground, etc.), but the Mana theme system standardized on --color-*. The mismatch meant bg-[hsl(var(--muted))] classes resolved to an invalid color and rendered transparent — most visible on the Allgemein settings tab where language and week-start buttons had no background. Mechanical prefix across ~30 files. Two semantic renames: - --destructive → --color-error (Mana uses "error" as the token name) - --popover → --color-card (no popover token; card is the closest) With shared packages on the correct naming, drop the shadcn-compat alias shim from app.css. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/mana/apps/web/src/app.css | 20 ----- packages/credits/src/web/CreditBalance.svelte | 8 +- .../credits/src/web/CreditPricingTable.svelte | 14 +-- packages/credits/src/web/CreditToast.svelte | 8 +- .../src/components/AuthGate.svelte | 22 ++--- .../src/charts/ActivityHeatmap.svelte | 28 +++--- .../shared-ui/src/charts/DonutChart.svelte | 12 +-- .../shared-ui/src/charts/ProgressBars.svelte | 12 +-- .../src/charts/StatisticsSkeleton.svelte | 12 +-- .../shared-ui/src/charts/StatsGrid.svelte | 4 +- .../src/charts/TrendLineChart.svelte | 16 ++-- .../loaders/AppLoadingSkeleton.svelte | 20 ++--- .../organisms/network/NetworkControls.svelte | 88 +++++++++---------- .../src/organisms/network/NetworkGraph.svelte | 53 ++++++----- .../shared-ui/src/pages/ProfilePage.svelte | 22 ++--- .../src/settings/GlobalSettingsSection.svelte | 70 +++++++-------- .../src/settings/NavVisibilitySettings.svelte | 12 +-- .../src/settings/SettingsPage.svelte | 12 +-- .../src/settings/SettingsSection.svelte | 2 +- .../src/settings/SettingsToggle.svelte | 2 +- .../subscriptions/src/BillingToggle.svelte | 6 +- packages/subscriptions/src/CostCard.svelte | 8 +- packages/subscriptions/src/PackageCard.svelte | 14 +-- .../src/SubscriptionButton.svelte | 8 +- .../subscriptions/src/SubscriptionCard.svelte | 16 ++-- packages/subscriptions/src/UsageCard.svelte | 8 +- .../src/pages/SubscriptionPage.svelte | 8 +- 27 files changed, 245 insertions(+), 260 deletions(-) diff --git a/apps/mana/apps/web/src/app.css b/apps/mana/apps/web/src/app.css index 308553d45..34e7b134f 100644 --- a/apps/mana/apps/web/src/app.css +++ b/apps/mana/apps/web/src/app.css @@ -13,26 +13,6 @@ @layer base { :root { color-scheme: light dark; - - /* shadcn-compat aliases — some shared-ui components (GlobalSettingsSection, - a few auth-ui pieces) use bare `--muted`, `--primary`, etc. instead of - the `--color-*` tokens this app standardized on. Bridge them here so - `bg-[hsl(var(--muted))]` and friends resolve to a real color. */ - --primary: var(--color-primary); - --primary-foreground: var(--color-primary-foreground); - --secondary: var(--color-secondary); - --secondary-foreground: var(--color-secondary-foreground); - --background: var(--color-background); - --foreground: var(--color-foreground); - --muted: var(--color-muted); - --muted-foreground: var(--color-muted-foreground); - --border: var(--color-border); - --card: var(--color-card); - --card-foreground: var(--color-card-foreground); - --accent: var(--color-accent); - --accent-foreground: var(--color-accent-foreground); - --input: var(--color-input); - --ring: var(--color-ring); } h1 { diff --git a/packages/credits/src/web/CreditBalance.svelte b/packages/credits/src/web/CreditBalance.svelte index 1f7762f9b..25f789c2c 100644 --- a/packages/credits/src/web/CreditBalance.svelte +++ b/packages/credits/src/web/CreditBalance.svelte @@ -144,7 +144,7 @@ transition: all 0.15s ease; font-size: 0.875rem; font-weight: 600; - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); } :global(.dark) .credit-balance__button { @@ -235,7 +235,7 @@ margin: 0; font-size: 0.875rem; font-weight: 600; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); } .credit-balance__total { @@ -247,13 +247,13 @@ .credit-balance__value--large { font-size: 1.5rem; font-weight: 700; - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); } .credit-balance__free { margin: 0 0 0.75rem 0; font-size: 0.75rem; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); } .credit-balance__warning { diff --git a/packages/credits/src/web/CreditPricingTable.svelte b/packages/credits/src/web/CreditPricingTable.svelte index 6e3e3c76e..8d50e91f5 100644 --- a/packages/credits/src/web/CreditPricingTable.svelte +++ b/packages/credits/src/web/CreditPricingTable.svelte @@ -177,14 +177,14 @@ margin: 0 0 1rem 0; font-size: 1.125rem; font-weight: 700; - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); } .pricing-table__empty { margin: 0; padding: 1rem; text-align: center; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); font-size: 0.875rem; } @@ -219,7 +219,7 @@ margin: 0; font-size: 0.8125rem; font-weight: 600; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); text-transform: uppercase; letter-spacing: 0.025em; } @@ -236,7 +236,7 @@ border-bottom: 1px solid rgba(0, 0, 0, 0.1); font-size: 0.75rem; font-weight: 600; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); text-transform: uppercase; letter-spacing: 0.025em; } @@ -276,12 +276,12 @@ .pricing-table__item-name { font-size: 0.875rem; font-weight: 500; - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); } .pricing-table__item-description { font-size: 0.75rem; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); } .pricing-table__item-cost { @@ -305,7 +305,7 @@ padding-top: 0.75rem; border-top: 1px solid rgba(0, 0, 0, 0.05); font-size: 0.75rem; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); } :global(.dark) .pricing-table__footer { diff --git a/packages/credits/src/web/CreditToast.svelte b/packages/credits/src/web/CreditToast.svelte index 232d9c382..2ff01e2e3 100644 --- a/packages/credits/src/web/CreditToast.svelte +++ b/packages/credits/src/web/CreditToast.svelte @@ -195,7 +195,7 @@ margin: 0 0 0.25rem 0; font-size: 0.875rem; font-weight: 500; - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -222,7 +222,7 @@ } .credit-toast__remaining { - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); } .credit-toast__dismiss { @@ -235,7 +235,7 @@ padding: 0; border: none; background: transparent; - color: hsl(var(--muted-foreground)); + color: hsl(var(--color-muted-foreground)); cursor: pointer; border-radius: 0.25rem; transition: all 0.15s ease; @@ -243,7 +243,7 @@ .credit-toast__dismiss:hover { background: rgba(0, 0, 0, 0.05); - color: hsl(var(--foreground)); + color: hsl(var(--color-foreground)); } :global(.dark) .credit-toast__dismiss:hover { diff --git a/packages/shared-auth-ui/src/components/AuthGate.svelte b/packages/shared-auth-ui/src/components/AuthGate.svelte index b9952af5f..848aa1e0c 100644 --- a/packages/shared-auth-ui/src/components/AuthGate.svelte +++ b/packages/shared-auth-ui/src/components/AuthGate.svelte @@ -113,22 +113,22 @@ {#if tierDenied}
{#if appName} -

+

{appName}

{/if}
🔒

{locale === 'en' ? `This app is currently in closed ` @@ -137,18 +137,18 @@

- {locale === 'en' ? 'Your access:' : 'Dein Zugang:'} - {userTierLabel}
- {locale === 'en' ? 'Required:' : 'Benötigt:'} {requiredTierLabel} @@ -156,8 +156,8 @@
-

Farbschema

-

+

Farbschema

+

Akzentfarbe der Benutzeroberfläche

@@ -177,7 +177,7 @@