feat(reports,settings): report library + focused report routes, settings modal (#629)

* feat(reports,settings): report library + focused report routes, settings modal

Reports
- Replace the monolithic /reports tab-switcher with a calm, grouped report
  library landing (ReportLibrary + RecentReportsShelf) driven by a new
  lib/reports/catalog.ts.
- Each report opens a focused /reports/[slug] route (FocusedReport) with a
  shared fiscal-year selector, optional date-range, and URL-based account
  drill-down into the general ledger.
- Extract every report view into components/reports/views, add a reusable
  ReportExportMenu, and remove the old ReportsNav.

Settings
- Add an intercepting @settingsModal parallel route so in-app navigation to
  /settings opens as a modal over the current page; hard loads still resolve
  to the full page.
- Share one SettingsShell (rail + content) between page and modal, extract each
  section into components/settings/sections/*Content, add a settings hotkey and
  command-palette entry, and remove the old SettingsSidebar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(reports,settings): remove dead salary-journal entry, fix border token

Addresses PR review feedback (#629):

- Remove the unreachable `salary-journal` report from the catalog. It had
  needsEmployees + no route + no FocusedView handler and `hasEmployees` was
  never plumbed through, so it never appeared in the library and a direct
  /reports/salary-journal URL rendered a blank frame. The report was never on
  the old page and has no view component; the API + generator stay in place for
  a proper follow-up. Drops its two now-unused i18n keys.

- Replace opacity-suffixed `border-border/8` section dividers with full-opacity
  `border-border` across the extracted settings section components, per the
  design system (no opacity-suffixed border tokens on surfaces).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: re-trigger checks (pg-real hit a Docker Hub registry timeout)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-06-02 14:50:50 +02:00
committed by GitHub
co-authored by Claude Opus 4.8
parent f6ee0c2a82
commit ff01640f60
44 changed files with 4755 additions and 3974 deletions
+38 -1
View File
@@ -176,7 +176,16 @@
"assistant": "Assistant",
"backup": "Backup",
"account": "Account",
"api": "API"
"api": "API",
"group_account": "Account",
"group_company": "Company",
"group_accounting": "Accounting & tax",
"group_sales": "Sales",
"group_tools": "Tools & integrations"
},
"settings_modal": {
"title": "Settings",
"description": "Manage your company and account"
},
"settings": {
"section_appearance": "Appearance",
@@ -3628,6 +3637,34 @@
"sie_moved_hint": "SIE export now lives under Import/Export.",
"sie_moved_link": "Open SIE export",
"download_pdf": "Download PDF",
"download_excel": "Download Excel",
"export": "Export",
"recent_heading": "Recently opened",
"back_to_library": "Reports",
"switch_report": "Switch report",
"calendar_badge": "Calendar",
"group_payroll": "Payroll",
"group_export": "Export & archive",
"name_kpi": "Key figures",
"name_sie_export": "SIE export",
"desc_resultatrapport": "Revenue less costs for the period",
"desc_balansrapport": "Assets, liabilities and equity by account",
"desc_trial_balance": "All accounts with opening and closing balances",
"desc_kpi": "Margin, liquidity and other key figures",
"desc_income_statement": "Profit or loss in the statutory layout",
"desc_balance_sheet": "Financial position at the end of the period",
"desc_kassaflodesanalys": "Change in liquidity during the year",
"desc_arsredovisning": "Directors' report, notes and signatures",
"desc_vat_declaration": "Basis for the VAT return (boxes)",
"desc_periodisk_sammanstallning": "EU sales of goods and services",
"desc_ne_declaration": "NE appendix for sole traders",
"desc_ink2_declaration": "Income tax return 2 for limited companies",
"desc_huvudbok": "All transactions grouped by account",
"desc_grundbok": "Vouchers in registration order",
"desc_kundreskontra": "Outstanding receivables with aging",
"desc_supplier_ledger": "Outstanding payables with aging",
"desc_bank_reconciliation": "Reconcile bank transactions against the books",
"desc_sie_export": "Export the books as a SIE file",
"categories_aria": "Report categories",
"group_interim": "Interim",
"group_year_end": "Year-end",
+38 -1
View File
@@ -176,7 +176,16 @@
"assistant": "Assistenten",
"backup": "Säkerhetsbackup",
"account": "Konto",
"api": "API"
"api": "API",
"group_account": "Konto",
"group_company": "Företag",
"group_accounting": "Bokföring & skatt",
"group_sales": "Försäljning",
"group_tools": "Verktyg & integrationer"
},
"settings_modal": {
"title": "Inställningar",
"description": "Hantera ditt företag och konto"
},
"settings": {
"section_appearance": "Utseende",
@@ -3628,6 +3637,34 @@
"sie_moved_hint": "SIE-export finns nu under Importera/Exportera.",
"sie_moved_link": "Öppna SIE-export",
"download_pdf": "Ladda ner PDF",
"download_excel": "Ladda ner Excel",
"export": "Exportera",
"recent_heading": "Senast öppnade",
"back_to_library": "Rapporter",
"switch_report": "Byt rapport",
"calendar_badge": "Kalender",
"group_payroll": "Lön",
"group_export": "Export & arkiv",
"name_kpi": "Nyckeltal",
"name_sie_export": "SIE-export",
"desc_resultatrapport": "Intäkter minus kostnader för perioden",
"desc_balansrapport": "Tillgångar, skulder och eget kapital per konto",
"desc_trial_balance": "Alla konton med ingående och utgående saldo",
"desc_kpi": "Marginal, likviditet och andra nyckeltal",
"desc_income_statement": "Årets resultat enligt uppställningsform",
"desc_balance_sheet": "Ekonomisk ställning vid periodens slut",
"desc_kassaflodesanalys": "Likviditetens förändring under året",
"desc_arsredovisning": "Förvaltningsberättelse, noter och underskrifter",
"desc_vat_declaration": "Underlag till momsdeklarationen (rutor)",
"desc_periodisk_sammanstallning": "EU-försäljning av varor och tjänster",
"desc_ne_declaration": "NE-bilaga för enskild firma",
"desc_ink2_declaration": "Inkomstdeklaration 2 för aktiebolag",
"desc_huvudbok": "Alla transaktioner grupperade per konto",
"desc_grundbok": "Verifikationer i registreringsordning",
"desc_kundreskontra": "Utestående kundfordringar med åldersfördelning",
"desc_supplier_ledger": "Utestående leverantörsskulder med åldersfördelning",
"desc_bank_reconciliation": "Stäm av banktransaktioner mot bokföringen",
"desc_sie_export": "Exportera bokföringen som SIE-fil",
"categories_aria": "Rapportkategorier",
"group_interim": "Löpande",
"group_year_end": "Bokslut",