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
+1 -3
View File
@@ -9,7 +9,7 @@ export const calendar = {
'calendar.legendKlamdag': 'Bridge day',
'calendar.legendMinimumRate': 'Minimum rate (lägstanivå)',
'calendar.legendOverride': 'Exception (working/day off)',
'calendar.legendRedDay': 'Public holiday',
'calendar.legendRedDay': 'R = public holiday',
'calendar.legendTitle': 'Legend',
'calendar.legendVacation': 'Vacation',
'calendar.loading': 'Loading calendar...',
@@ -52,8 +52,6 @@ export const calendar = {
'plannedDayModal.parentLabel': 'Parent',
'plannedDayModal.pinnedNotice': 'This day is pinned by you — the planner will not change it automatically.',
'plannedDayModal.dayStatusLabel': 'This day is:',
'plannedDayModal.workdayOption': 'Working day',
'plannedDayModal.dayOffOption': 'Day off',
'plannedDayModal.rangeTitle': 'Plan {count} days',
'plannedDayModal.saveButton': 'Save',
'plannedDayModal.saveError': 'Failed to save planned day',