feat(deps): migrate Header from @mana/shared-ui@0.1.x to shared-ui-2
Some checks are pending
CI / validate (push) Waiting to run

@mana/shared-ui-2@0.1.0 wurde heute publiziert. Cards' einziger
shared-ui-Konsument war PillTabGroup im Header (Routen-Nav +
DE/EN-Switcher). Drop-in-Migration:

- apps/web/package.json: @mana/shared-ui + @mana/shared-icons raus
  (letzteres war nur shared-ui-Transitive, in Cards-Code nirgends
  direkt importiert), @mana/shared-ui-2 ^0.1.0 rein.
- Header.svelte: Import wechselt von @mana/shared-ui auf
  @mana/shared-ui-2. primaryColor-Prop entfernt — shared-ui-2
  PillTabGroup nutzt --color-primary direkt aus dem 12-Token-Set.

Bridge-Aliase in app.css bleiben — Cards' Eigen-Komponenten
(Header-Logo, Modals, Marketplace, Routen) nutzen historisch
--color-card, --color-popover, --color-accent etc. Diese Tokens
existieren im 12-Token-Mana-Set NICHT, aber die Aliase mappen sie
weiter aufs 12er-Set. Aliase-Kommentar präzisiert: nicht mehr für
shared-ui@0.1.x (raus), sondern für Cards-eigenen Code, bis Cards
in eigenem Refactor-Sprint auf das 12er-Vokabular umzieht.

Type-check-Pipeline schrumpft drastisch: von 3994 Files (mit
shared-ui@0.1.x's 176 Quellfiles + transitive) auf 439 Files (nur
Cards + shared-ui-2's kleinerer Surface). Build sauber, weniger
JS im Output-Bundle.

Cards ist damit die erste Vereins-App, die operativ auf
shared-ui-2 läuft — End-to-End-Beweis dass das System trägt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-09 18:27:24 +02:00
parent e4cf124cb7
commit d7f3b93996
5 changed files with 27 additions and 222 deletions

View file

@ -102,6 +102,15 @@ Cards zieht alle Shared-Pakete aus Verdaccio (`pkg.mana.how`):
- `@mana/shared-icons`, `@mana/shared-i18n`, `@mana/shared-theme`,
`@mana/shared-tailwind` — UI-Building-Blocks (kein Code-Duplikat
aus mana-monorepo)
- `@mana/themes` (`^0.1.0`) — `forest`-Variant aus 12-Token-System
(siehe `mana/docs/THEMING.md`); aktiviert via `data-theme="forest"`
in `app.html` + `@import` in `app.css`
- `@mana/shared-ui-2` (`^0.1.0` seit 2026-05-09) — Greenfield-
Komponenten mit strikter 12-Token-Disziplin. Cards konsumiert
heute `PillTabGroup` (im Header für Routen-Nav + DE/EN-Switcher).
Alte `@mana/shared-ui@0.1.x` aus den deps entfernt; Cards-Eigen-
Komponenten (Modals, Marketplace-Cards etc.) bleiben bis weiterer
Refactor-Sprint app-lokal.
Alle als reguläre `dependencies`. Versions-Disziplin ist Klasse-A
(siehe `mana/docs/SHARED_PACKAGES.md`).

View file

@ -16,13 +16,12 @@
},
"dependencies": {
"@cards/domain": "workspace:*",
"@mana/shared-icons": "^1.0.0",
"@mana/shared-ui": "^0.1.1",
"dompurify": "^3.4.2",
"jszip": "^3.10.1",
"marked": "^18.0.3",
"sql.js": "^1.14.1",
"@mana/themes": "^0.1.0"
"@mana/themes": "^0.1.0",
"@mana/shared-ui-2": "^0.1.0"
},
"devDependencies": {
"@sveltejs/adapter-node": "^5.2.0",

View file

@ -18,11 +18,15 @@
*/
@theme {
/* ===== Bridge-Aliase für shared-ui@0.1.x =====
* shared-ui@0.1.x erwartet ein 30-Token-Vokabular aus dem alten
* managarten-System. Damit Komponenten wie PillTabGroup nicht
* silent-fallback brechen, mappen wir die fehlenden Tokens auf
* unser 12er-Set. Mit shared-ui@2.0 entfällt diese Sektion.
/* ===== Bridge-Aliase für Cards' Eigen-Komponenten =====
* Cards' eigener Code (Header, Modals, Routen, Marketplace)
* nutzt historisch --color-card, --color-popover, --color-accent
* etc. Tokens die im 12er-Mana-Set NICHT existieren. Diese
* Aliase mappen sie auf das 12er-Set, damit Cards' eigene UI
* weiter rendert. Wird nur noch entfernbar wenn Cards' eigener
* Code komplett auf das 12er-Vokabular umgezogen ist
* (eigener Refactor-Sprint). shared-ui-2-Komponenten brauchen
* diese Aliase NICHT.
*/
--color-card: var(--color-surface);
--color-card-foreground: var(--color-foreground);

View file

@ -3,7 +3,7 @@
import { goto } from '$app/navigation';
import { devUser } from '$lib/auth/dev-stub.svelte.ts';
import { i18n, t } from '$lib/i18n/index.svelte.ts';
import { PillTabGroup } from '@mana/shared-ui';
import { PillTabGroup } from '@mana/shared-ui-2';
const langOptions = [
{ id: 'de', label: 'DE', title: 'Deutsch' },
@ -61,7 +61,6 @@
options={navOptions}
value={activeNav}
onChange={navTo}
primaryColor="hsl(var(--color-primary))"
/>
</nav>
@ -71,7 +70,6 @@
value={i18n.current}
onChange={(id: string) => i18n.set(id as 'de' | 'en')}
sectionLabel={t('common.language_switcher')}
primaryColor="hsl(var(--color-primary))"
/>
{#if devUser.id}
<a

217
pnpm-lock.yaml generated
View file

@ -69,12 +69,9 @@ importers:
'@cards/domain':
specifier: workspace:*
version: link:../../packages/cards-domain
'@mana/shared-icons':
specifier: ^1.0.0
version: 1.0.0(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))
'@mana/shared-ui':
specifier: ^0.1.1
version: 0.1.1(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))
'@mana/shared-ui-2':
specifier: ^0.1.0
version: 0.1.0(svelte@5.55.5)
'@mana/themes':
specifier: ^0.1.0
version: 0.1.0
@ -581,30 +578,12 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@mana/shared-branding@1.0.0':
resolution: {integrity: sha512-s2mcSUfT8It3NxmPZCAkObKc9vIGHUtAgmAgyyWHZBMt9/Ve4Krh+lnMPA6DgPQ+tVRoRRb3hVgl7RJqCr2Tsg==}
peerDependencies:
svelte: ^5.0.0
'@mana/shared-icons@1.0.0':
resolution: {integrity: sha512-71L1dLO6tias8floLv8s0MYzv4cA5IvwftxdFnTYOsKMTMkJ2xEiJ4VxoV5Rj7iAG0oCdV5cmjGyOEKWaLVGEA==}
peerDependencies:
svelte: ^5.0.0
'@mana/shared-share-protocol@0.1.0':
resolution: {integrity: sha512-I1fIDbS3nu++9LUXc08ICrLXE/cdV/n9D0Jm8LOhVH9izUXQSSg2EO4M2+m7K5vc5KdjGBcYrFPhAg48+KE6Kw==}
hasBin: true
'@mana/shared-theme@0.1.0':
resolution: {integrity: sha512-ECOLTCSNZakFENI3CIRDIJPq0vIwO3FN7dDUQ+EpSGZPoFXOj92KSu+OgsrOnLHqmXEVluqCPNKcOtZUUJKO0w==}
peerDependencies:
svelte: ^5.0.0
'@mana/shared-types@0.1.0':
resolution: {integrity: sha512-DLoTWqbmF/XePHe3VivpdSaVISpQgtWCOMgleO135a0+miWRXiecuwR+uR+HLRRaNp3bsKbwuq9iKhQixGUaMA==}
'@mana/shared-ui@0.1.1':
resolution: {integrity: sha512-70GJBsAX94I1mRIaqWbGuWf+5iWyeXyZskXD36eZbOnCjw/5GdngPiHWpXx2166p8iw/6E7YIIa75Ul6pbPdcg==}
'@mana/shared-ui-2@0.1.0':
resolution: {integrity: sha512-aaemqhbNFcZB7TwG/ikqrmjC5qL5aEXrOzHjatSO42ckkoLtHD7wTSmjTE6VUBmIVxFXk1/5PR9XKZ8yr0dR3g==}
peerDependencies:
svelte: ^5.0.0
@ -951,24 +930,6 @@ packages:
'@types/cookie@0.6.0':
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
'@types/d3-color@3.1.3':
resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
'@types/d3-force@3.0.10':
resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==}
'@types/d3-interpolate@3.0.4':
resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
'@types/d3-selection@3.0.11':
resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
'@types/d3-transition@3.0.9':
resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==}
'@types/d3-zoom@3.0.8':
resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
'@types/dompurify@3.2.0':
resolution: {integrity: sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==}
deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.
@ -1121,55 +1082,6 @@ packages:
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
d3-color@3.1.0:
resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
engines: {node: '>=12'}
d3-dispatch@3.0.1:
resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
engines: {node: '>=12'}
d3-drag@3.0.0:
resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
engines: {node: '>=12'}
d3-ease@3.0.1:
resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
engines: {node: '>=12'}
d3-force@3.0.0:
resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
engines: {node: '>=12'}
d3-interpolate@3.0.1:
resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
engines: {node: '>=12'}
d3-quadtree@3.0.1:
resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
engines: {node: '>=12'}
d3-selection@3.0.0:
resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
engines: {node: '>=12'}
d3-timer@3.0.1:
resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
engines: {node: '>=12'}
d3-transition@3.0.1:
resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
engines: {node: '>=12'}
peerDependencies:
d3-selection: 2 - 3
d3-zoom@3.0.0:
resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
engines: {node: '>=12'}
date-fns@4.1.0:
resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
@ -1601,15 +1513,6 @@ packages:
resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
engines: {node: '>= 14.16'}
phosphor-svelte@3.1.0:
resolution: {integrity: sha512-nldtxx+XCgNREvrb7O5xgDsefytXpSkPTx8Rnu3f2qQCUZLDV1rLxYSd2Jcwckuo9lZB1qKMqGR17P4UDC0PrA==}
peerDependencies:
svelte: ^5.0.0 || ^5.0.0-next.96
vite: '>=5'
peerDependenciesMeta:
vite:
optional: true
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@ -2192,49 +2095,14 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@mana/shared-branding@1.0.0(svelte@5.55.5)':
dependencies:
'@mana/shared-types': 0.1.0
svelte: 5.55.5
'@mana/shared-icons@1.0.0(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))':
dependencies:
phosphor-svelte: 3.1.0(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))
svelte: 5.55.5
transitivePeerDependencies:
- vite
'@mana/shared-share-protocol@0.1.0':
dependencies:
zod: 3.25.76
'@mana/shared-theme@0.1.0(svelte@5.55.5)':
'@mana/shared-ui-2@0.1.0(svelte@5.55.5)':
dependencies:
svelte: 5.55.5
'@mana/shared-types@0.1.0':
dependencies:
zod: 3.25.76
'@mana/shared-ui@0.1.1(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))':
dependencies:
'@mana/shared-branding': 1.0.0(svelte@5.55.5)
'@mana/shared-icons': 1.0.0(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0))
'@mana/shared-theme': 0.1.0(svelte@5.55.5)
'@mana/shared-types': 0.1.0
'@types/d3-force': 3.0.10
'@types/d3-selection': 3.0.11
'@types/d3-transition': 3.0.9
'@types/d3-zoom': 3.0.8
d3-force: 3.0.0
d3-selection: 3.0.0
d3-transition: 3.0.1(d3-selection@3.0.0)
d3-zoom: 3.0.0
date-fns: 4.1.0
svelte: 5.55.5
transitivePeerDependencies:
- vite
'@mana/themes@0.1.0': {}
'@nodable/entities@2.1.0': {}
@ -2502,25 +2370,6 @@ snapshots:
'@types/cookie@0.6.0': {}
'@types/d3-color@3.1.3': {}
'@types/d3-force@3.0.10': {}
'@types/d3-interpolate@3.0.4':
dependencies:
'@types/d3-color': 3.1.3
'@types/d3-selection@3.0.11': {}
'@types/d3-transition@3.0.9':
dependencies:
'@types/d3-selection': 3.0.11
'@types/d3-zoom@3.0.8':
dependencies:
'@types/d3-interpolate': 3.0.4
'@types/d3-selection': 3.0.11
'@types/dompurify@3.2.0':
dependencies:
dompurify: 3.4.2
@ -2668,52 +2517,6 @@ snapshots:
core-util-is@1.0.3: {}
d3-color@3.1.0: {}
d3-dispatch@3.0.1: {}
d3-drag@3.0.0:
dependencies:
d3-dispatch: 3.0.1
d3-selection: 3.0.0
d3-ease@3.0.1: {}
d3-force@3.0.0:
dependencies:
d3-dispatch: 3.0.1
d3-quadtree: 3.0.1
d3-timer: 3.0.1
d3-interpolate@3.0.1:
dependencies:
d3-color: 3.1.0
d3-quadtree@3.0.1: {}
d3-selection@3.0.0: {}
d3-timer@3.0.1: {}
d3-transition@3.0.1(d3-selection@3.0.0):
dependencies:
d3-color: 3.1.0
d3-dispatch: 3.0.1
d3-ease: 3.0.1
d3-interpolate: 3.0.1
d3-selection: 3.0.0
d3-timer: 3.0.1
d3-zoom@3.0.0:
dependencies:
d3-dispatch: 3.0.1
d3-drag: 3.0.0
d3-interpolate: 3.0.1
d3-selection: 3.0.0
d3-transition: 3.0.1(d3-selection@3.0.0)
date-fns@4.1.0: {}
debug@4.4.3:
dependencies:
ms: 2.1.3
@ -3058,14 +2861,6 @@ snapshots:
pathval@2.0.1: {}
phosphor-svelte@3.1.0(svelte@5.55.5)(vite@5.4.21(@types/node@22.19.18)(lightningcss@1.32.0)):
dependencies:
estree-walker: 3.0.3
magic-string: 0.30.21
svelte: 5.55.5
optionalDependencies:
vite: 5.4.21(@types/node@22.19.18)(lightningcss@1.32.0)
picocolors@1.1.1: {}
picomatch@4.0.4: {}