Give a new account a first run, and drop to three tabs

Registering used to land you on a bare form asking for a child, with no hint
what came next. A short wizard now walks through the child, whether you are
planning alone or together, and where the day balances come from: fetched from
Försäkringskassan, entered by hand, or skipped — and if skipped, the figures
carry a badge saying they are estimates until real ones arrive.

Fetching is the first option rather than a hidden one, so the scraper is on by
default and the script that used to force it on no longer needs to.

Planning and Tips lose their tabs. Authoring moved to the calendar and the
figures moved to the overview, so both pages were only a second way to reach
what is already on screen; their routes now redirect rather than dead-end. The
dead translations went with them.

Dates also follow the chosen language now instead of always formatting as
Swedish.
This commit is contained in:
2026-09-17 22:05:54 +02:00
parent 064bcc2b3a
commit a4fce16dd1
40 changed files with 1060 additions and 4986 deletions
+18
View File
@@ -38,6 +38,24 @@ describe('dates.ts utilities', () => {
const result = formatDateForDisplay('invalid')
expect(result).toBe('')
})
it('defaults to Swedish when no locale is passed', () => {
expect(formatDateForDisplay('2026-06-15')).toBe(formatDateForDisplay('2026-06-15', 'sv'))
})
it('formats in English when the "en" locale is passed', () => {
const result = formatDateForDisplay('2026-06-15', 'en')
expect(result).toBe('June 15, 2026')
})
it('formats in Swedish when the "sv" locale is explicitly passed', () => {
const result = formatDateForDisplay('2026-06-15', 'sv')
expect(result).toBe('15 juni 2026')
})
it('returns empty string for invalid date in the "en" locale too', () => {
expect(formatDateForDisplay('invalid', 'en')).toBe('')
})
})
describe('formatDateForInput', () => {