ae6db7e16f
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>
115 lines
5.9 KiB
TypeScript
115 lines
5.9 KiB
TypeScript
export const calendar = {
|
||
'calendar.advanceMonthAria': '{month} - click to advance month',
|
||
'calendar.advanceYearAria': '{year} - click to advance year',
|
||
'calendar.selectMonthAria': 'Select month',
|
||
'calendar.selectYearAria': 'Select year',
|
||
'calendar.deleteError': 'Failed to delete the planned day',
|
||
'calendar.legendDoubleDay': 'Double day',
|
||
'calendar.legendIncomeBased': 'Income-based rate (sjukpenningnivå)',
|
||
'calendar.legendKlamdag': 'Bridge day',
|
||
'calendar.legendMinimumRate': 'Minimum rate (lägstanivå)',
|
||
'calendar.legendOverride': 'Exception (working/day off)',
|
||
'calendar.legendRedDay': 'R = public holiday',
|
||
'calendar.legendTitle': 'Legend',
|
||
'calendar.legendVacation': 'Vacation',
|
||
'calendar.loading': 'Loading calendar...',
|
||
'calendar.nextMonthAria': 'Next month',
|
||
'calendar.overrideError': 'Failed to update the exception',
|
||
'calendar.overrideModeActiveLabel': 'Stop editing days',
|
||
'calendar.overrideModeHint': 'Click a day to mark it as a working day or a day off. Click a marked day again to reset it.',
|
||
'calendar.overrideModeLabel': 'Mark working/day off',
|
||
'calendar.partner': 'Partner',
|
||
'calendar.prevMonthAria': 'Previous month',
|
||
'calendar.saveError': 'Failed to save the planned days',
|
||
'calendar.weekdayFri': 'Fri',
|
||
'calendar.weekdayMon': 'Mon',
|
||
'calendar.weekdaySat': 'Sat',
|
||
'calendar.weekdaySun': 'Sun',
|
||
'calendar.weekdayThu': 'Thu',
|
||
'calendar.weekdayTue': 'Tue',
|
||
'calendar.weekdayWed': 'Wed',
|
||
'calendar.you': 'You',
|
||
'calendarDay.ariaWithEvents': '{date} with {count} event(s)',
|
||
'calendarDay.klamdagAria': 'bridge day',
|
||
'calendarDay.overrideFreeAria': 'marked as a day off (exception)',
|
||
'calendarDay.overrideWorkingAria': 'marked as a working day (exception)',
|
||
'calendarDay.pinnedAria': 'pinned by you — the planner will not retype this day',
|
||
'calendarDay.sundayAria': 'Sunday',
|
||
'calendarEvent.dismissAria': 'Dismiss {leaveType}',
|
||
'plannedDayModal.cancelButton': 'Cancel',
|
||
'plannedDayModal.closeAria': 'Close',
|
||
'plannedDayModal.confirmDelete': 'Are you sure you want to delete this planned day?',
|
||
'plannedDayModal.deleteButton': 'Delete',
|
||
'plannedDayModal.deleteConfirmButton': 'Yes, delete',
|
||
'plannedDayModal.deleteError': 'Failed to delete planned day',
|
||
'plannedDayModal.deletingButton': 'Deleting…',
|
||
'plannedDayModal.doubleDayHint': 'Double days do not apply to vacation',
|
||
'plannedDayModal.doubleDayLabel': 'Double day (both parents taking leave)',
|
||
'plannedDayModal.editTitle': 'Edit Planned Day',
|
||
'plannedDayModal.lagstaOption': 'Lägstanivå (minimum-rate, 90-day tier)',
|
||
'plannedDayModal.leaveTypeLabel': 'Leave Type',
|
||
'plannedDayModal.newTitle': 'Plan a Day',
|
||
'plannedDayModal.parentLabel': 'Parent',
|
||
'plannedDayModal.pinnedNotice': 'This day is pinned by you — the planner will not change it automatically.',
|
||
'plannedDayModal.dayStatusLabel': 'This day is:',
|
||
'plannedDayModal.rangeTitle': 'Plan {count} days',
|
||
'plannedDayModal.saveButton': 'Save',
|
||
'plannedDayModal.saveError': 'Failed to save planned day',
|
||
'plannedDayModal.savingButton': 'Saving…',
|
||
'plannedDayModal.sjukpenningOption': 'Sjukpenningnivå (income-based, 390-day tier)',
|
||
'plannedDayModal.vacationOption': 'Vacation',
|
||
'redDaysList.effectiveFree': 'Off',
|
||
'redDaysList.effectiveWorking': 'Working day',
|
||
'redDaysList.emptyYear': 'No public holidays or exceptions this year.',
|
||
'redDaysList.loading': 'Loading public holidays...',
|
||
'redDaysList.nextWindow': 'Next 4 years',
|
||
'redDaysList.overrideFree': 'Exception: day off',
|
||
'redDaysList.overrideWorking': 'Exception: working day',
|
||
'redDaysList.prevWindow': 'Previous 4 years',
|
||
|
||
// §Task7 — the calendar becomes the plan: drag-select, period popover,
|
||
// preset rail, and the sync toast/undo.
|
||
'calendar.newPeriodName': 'New period',
|
||
'calendar.periodCreateError': 'Failed to create the period',
|
||
'calendar.syncError': 'Failed to sync the plan',
|
||
'calendar.syncingLabel': 'Syncing…',
|
||
'calendar.toastChangedDays': '{name}: {count} day(s) changed',
|
||
'calendar.toastGenericPeriod': 'The period',
|
||
'calendar.toastShortfallNone':
|
||
'{name} ({start}–{end}): none of the {weeksWished} week(s) requested could be funded — {shortfallDays} day(s) short',
|
||
'calendar.toastShortfallPartial':
|
||
'{name} ({start}–{end}): only {weeksFunded} of {weeksWished} week(s) funded — {shortfallDays} day(s) short',
|
||
'calendar.toastShortfallNoneDays':
|
||
'{name} ({start}–{end}): none of the {daysWished} day(s) requested could be funded — {shortfallDays} day(s) short',
|
||
'calendar.toastShortfallPartialDays':
|
||
'{name} ({start}–{end}): only {daysFunded} of {daysWished} day(s) funded — {shortfallDays} day(s) short',
|
||
'calendar.undoButton': 'Undo',
|
||
'calendar.undoError': 'Failed to undo the change',
|
||
'calendar.dismissToastAria': 'Dismiss the message',
|
||
|
||
'calendar.railHeading': 'Add leave',
|
||
'calendar.railHint': 'Click to add — the calendar jumps to wherever it fits best.',
|
||
'calendar.presetAddAria': 'Add {name}',
|
||
|
||
'calendar.periodPopoverTitle': 'Edit period',
|
||
'calendar.periodAdHocTitle': 'Period',
|
||
'calendar.periodAdHocNotice': 'This period is not linked to a saved wish.',
|
||
'calendar.periodNameLabel': 'Name',
|
||
'calendar.periodNameAria': "The period's name",
|
||
'calendar.periodStartLabel': 'Start date',
|
||
'calendar.periodEndLabel': 'End date',
|
||
'calendar.periodRepeatLabel': 'Repeat',
|
||
'calendar.periodRepeatNever': 'Never',
|
||
'calendar.periodRepeatYearly': 'Yearly',
|
||
'calendar.periodLastYearLabel': 'Last year',
|
||
'calendar.periodSaveButton': 'Save period',
|
||
'calendar.periodSavingButton': 'Saving…',
|
||
'calendar.periodDeleteButton': 'Delete period',
|
||
'calendar.periodDeletingButton': 'Deleting…',
|
||
'calendar.periodDeleteConfirm': 'Are you sure you want to delete this period?',
|
||
'calendar.periodDeleteConfirmButton': 'Yes, delete',
|
||
'calendar.periodDeleteAdHocButton': 'Delete these days',
|
||
'calendar.periodCancelButton': 'Cancel',
|
||
'calendar.periodCloseAria': 'Close',
|
||
} as const
|