Redesign the setup flow and consolidate the CSS into one primitives layer

Onboarding asks explicitly for one or two parents and shows one card per
parent for balances; the balance form is per parent with inline
validation; the partner can be filled from the FK deduction or added
from it. Settings and Dashboard reuse the same form.

CSS: bare buttons carry no colour any more; buttons, cards, choice
cards, fields, alerts, badges, eyebrow and modal chrome are defined once
in primitives.css. Media queries live only in responsive.css. A style
guard test blocks hex, !important and stray media queries. Bilingual
fixes: calendar selects size by content, header no longer wraps. Vitest
is capped at four workers.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-19 12:27:29 +02:00
parent e4719cb9ae
commit ae6db7e16f
105 changed files with 5683 additions and 3690 deletions
+11
View File
@@ -13,6 +13,17 @@ export default defineConfig({
globals: true,
environment: 'jsdom',
setupFiles: ['./tests/setup.ts'],
// Cap the worker pool: unbounded, Vitest forks one jsdom worker per CPU core
// (12 on the dev machine) and a coverage run has exhausted the machine's memory
// when two runs overlapped. Four workers keeps a run under ~3 GB with little
// wall-clock cost; CI runners have fewer cores anyway.
pool: 'forks',
poolOptions: {
forks: {
maxForks: 4,
minForks: 1,
},
},
// The Playwright E2E suite lives under e2e/ and uses @playwright/test's
// own test runner (`npm run e2e`), not Vitest's — exclude it here so
// `vitest run` never tries to collect those specs.