You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Thomas Joise 35a26de442 fix(review): frontend quality pass — a11y, UX safety, error handling (medium/low)
Red-team frontend clusters (a11y + UX + code quality), three coordinated passes:

Accessibility:
- DataTable clickable rows keyboard-operable (role=button, tabindex, Enter/Space).
- <main> landmark + skip link; icon-only buttons get aria-labels; inputs relying
  on placeholder alone get aria-labels; AWS-ranking link is a real <button>;
  Login fields wrapped in a <form> so Enter submits from either field; toasts
  role=alert for errors (urgency not by color alone).

UX safety:
- 'Notify all' and reminder 'Send' now behind ConfirmDialogs naming the count/
  client; document action bar disables while an action is in flight (no
  double-submit dupes); SendDialog surfaces why a send is blocked instead of
  failing silently; client search + ticket search debounced (~300ms); inline
  Client-360 edit failures surface via toast, not an off-screen banner; LivePreview
  gets a real Retry; destructive client-status transitions confirm first.

Code quality:
- ErrorBoundary wraps the app (a render throw no longer white-screens).
- useData clears stale data on dep change (no record flashing under a new id).
- Shared ErrorBoundary/SecretField/Pager components extracted; Pager adopted in
  Documents; write-call api types tightened off Record<string,unknown>.

typecheck clean (root + both workspaces), web build clean, web tests 4/4, full
suite 388 green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4 days ago
..
ThemeSwitcher.tsx feat(ui): warm token system — teal default accent, ink primary, flat surfaces 5 days ago
avatar.ts fix(redesign): final-review fixes — palette races+a11y, avatar dark contrast, micro-label floor, drawer focus, pulse legend/labels/targets, warn contrast 5 days ago
chips.tsx fix(redesign): final-review fixes — palette races+a11y, avatar dark contrast, micro-label floor, drawer focus, pulse legend/labels/targets, warn contrast 5 days ago
components.tsx fix(review): frontend quality pass — a11y, UX safety, error handling (medium/low) 4 days ago
dialog.tsx fix(iwa): final-review fixes — dialog layering/scrim/scroll-lock, a11y labels+disabled+alerts, settings guards+errors, edit-mode locks, strict offsets, titles 5 days ago
formgrid.tsx feat(ui): Toaster with pure store (TDD) + FormGrid; provider mounted at root 5 days ago
index.ts feat(ui): Toaster with pure store (TDD) + FormGrid; provider mounted at root 5 days ago
palette-match.ts feat(ui): command palette with pure AND-term matcher 5 days ago
palette.tsx fix(review): frontend quality pass — a11y, UX safety, error handling (medium/low) 4 days ago
record.tsx feat(ui): RecordHeader; PageHeader breadcrumb; DataTable rowTone + mono columns 5 days ago
states.tsx feat(ui): Skeleton, ErrorState, FilterChips, Tabs 5 days ago
tabs.tsx fix(redesign): final-review fixes — palette races+a11y, avatar dark contrast, micro-label floor, drawer focus, pulse legend/labels/targets, warn contrast 5 days ago
theme.ts feat(ui): warm token system — teal default accent, ink primary, flat surfaces 5 days ago
toast-store.ts feat(ui): Toaster with pure store (TDD) + FormGrid; provider mounted at root 5 days ago
toast.tsx fix(review): frontend quality pass — a11y, UX safety, error handling (medium/low) 4 days ago
tokens.css feat(ui): Toaster with pure store (TDD) + FormGrid; provider mounted at root 5 days ago