* style(design): normalize daily-operator flows to locked design system
Sweep the dashboard, transactions, reconciliation, invoicing and supplier
flows for design-system violations (.claude/rules/design.md):
- font-medium removed from Hedvig display headings/numerals
- font-mono -> tabular-nums on monetary values (voucher ids stay mono)
- raw Tailwind status colors -> Badge variants / muted-alert pattern
- semantic colors removed from chrome backgrounds (deadline widgets, icon halos)
- hand-rolled skeletons/empty-states -> Skeleton / EmptyState primitives
- opacity-suffixed borders, the invisible warning-foreground count color, and
shadow-sm/rounded-xl on non-overlay surfaces normalized
The four files that also received UX changes carry their token fixes in the
following commit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(ux): clearer dashboard CTA, match confidence, AI provenance, invoice actions
Four high-impact UX fixes from the design critique (these files also carry their
design-system token normalization):
- Dashboard: render the next-best-action hero for every agent-built company, not
only 'slim' nav density, so there is always one obvious next step instead of
four equal-weight metric tiles.
- Reconciliation: surface the match engine's 0-1 confidence as a graded strength
badge (Stark / Trolig / Svag traff) in the shared verifikat picker rows and
selected chip; drop the uninformative binary "Foreslagen traff" badge from the
match dialog.
- Supplier inbox: show AI-filled provenance per extracted field (a success dot
that clears once the user verifies/edits the value) so misparsed amounts/dates
get proofread before they post to an immutable verifikat.
- Invoice detail: keep each status's primary action only in the header row; the
sidebar "Status actions" card now holds secondary/reversible actions only
(makulera, ta bort, skapa kreditnota, manual-send alternative), removing the
duplicated CTAs and closing a viewer-permission gap on the old sidebar buttons.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(ux): Tier-B medium design-critique fixes across daily-operator flows
- Reconciliation: standardise the match-confirm verb on "Matcha" (was "Koppla"
in MatchVoucherDialog) and replace the hand-rolled date <input>s in the bank
reconciliation view with the Input primitive.
- Supplier inbox: fold the two alternative bookings (Skapa leverantorsfaktura /
Bokfor som verifikat) behind a single "Andra satt att bokfora" dropdown so the
default path (Matcha mot transaktion) stays the lone primary action.
- Duplicate-payment guard: demote the "Skapa ny verifikation anda" escape hatch
to a ghost button so the safe "Koppla till befintlig" path dominates.
- Onboarding: raise the "start fresh" escape hatch from a muted text link to a
visible secondary button; normalise the checklist's off-scale spacing.
- Supplier flows: finish the font-mono -> tabular-nums sweep on monetary values
in the supplier-invoice detail / create / review surfaces (ids stay mono).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(deadlines): keep overdue rows visually distinct (destructive chrome is allowed)
The Tier-A normalization stripped all semantic-color row tints from the deadline
widgets, but design.md exempts --destructive ("only --destructive survives in
chrome"). Restore a subtle bg-destructive/5 on OVERDUE rows so missed tax/AGI
deadlines (-> skattetillagg) stay noticeable in a list scan; action-needed
(warning) rows stay clean since warning is data-only. Surfaced by the Swedish
compliance review on #741.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(reconciliation): hide match-strength badge on already-matched verifikat
Per the Swedish compliance review on #741: a green "Stark traff" confidence badge
rendered alongside "Redan matchad" could visually nudge an accidental double-match
of a posted verifikat (a BFL 5 kap audit-trail concern). Suppress the strength
badge when linked_transaction_count > 0 so "Redan matchad" is the lone signal
there; N:1 matching stays an explicit opt-in.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>