Lay the Almanacka design foundation: tokens, type, shell

New token system in global.css (near-white surfaces, one ink-blue
accent, no sub-12px type), self-hosted Schibsted Grotesk, rewritten
primitives (buttons, fields, modal shell, segmented, disclosure,
skeleton), a borderless 56px header with an SV | EN language toggle,
an Icon component replacing glyphs, page skeletons that keep the
layout during loading, and leave-type colours moved out of TS into
CSS variables. Feature blocks keep their structure for later phases.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-19 18:25:04 +02:00
parent 95444d3bf4
commit d14f86478a
44 changed files with 1358 additions and 485 deletions
+3 -3
View File
@@ -146,7 +146,7 @@ describe('Dashboard', () => {
})
)
renderWithRouter(<Dashboard />)
expect(screen.getByText(/Laddar/)).toBeInTheDocument()
expect(screen.getByTestId('page-skeleton')).toBeInTheDocument()
})
it('hands off to Onboarding when there are no children yet', () => {
@@ -528,7 +528,7 @@ describe('Dashboard', () => {
})
)
renderWithRouter(<Dashboard />)
expect(screen.getByText(/Laddar/)).toBeInTheDocument()
expect(screen.getByTestId('page-skeleton')).toBeInTheDocument()
})
it('shows planned days loading state', () => {
@@ -539,7 +539,7 @@ describe('Dashboard', () => {
})
)
renderWithRouter(<Dashboard />)
expect(screen.getByText(/Laddar/)).toBeInTheDocument()
expect(screen.getByTestId('page-skeleton')).toBeInTheDocument()
})
it('renders with zero planned days', () => {