Done — merged to main (3575282). Scoped to scannability + parity (layout/edit-modality unification and API-backed counts filed as follow-ups below).
Scannability:
- Sort — new…
Done — merged to main (53c9810).
Added web/src/components/ui/skeletons.tsx with three shared recipes built on the existing Skeleton, each a `role="status" aria-busy aria-label={t("com…
Done — merged to main (f45f1d8).
Added web/src/components/ui/select.tsx (Base UI Select) styled to match ui/Input — same h-8/rounded-lg/border-input/padding and a real…
Done — merged to main (28e444c). All the compounding data-loss/duplicate-record risks are closed.
Foundation: migrated the app to a React Router data router (createBrowserRouter,…
Done — merged to main (b7242ca). The header now carries real wayfinding.
Breadcrumb (left): a page-driven useBreadcrumb(trail) hook + BreadcrumbProvider (parallel to the #57 title…
Done — merged to main (9b3a587).
Typography hierarchy + page <h1>:
- New
PageTitlecomponent (web/src/components/ui/page-title.tsx) — a semantic<h1>at `text-2xl font-semibold…