Skip to content

UI audit fixes: mobile nav, toast rollout, semantic color tokens - #51

Merged
crewcricle merged 1 commit into
mainfrom
claude/beautiful-bun-91716b
Aug 8, 2026
Merged

UI audit fixes: mobile nav, toast rollout, semantic color tokens#51
crewcricle merged 1 commit into
mainfrom
claude/beautiful-bun-91716b

Conversation

@rprabhat

@rprabhat rprabhat commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements the top 3 priorities from the UI audit, in the order requested, plus the remaining moderate/polish findings:

1. Mobile compatibility

  • The dashboard header's nav had zero responsive handling — full-width labels in a fixed 3-column grid, no breakpoint anywhere. Now collapses into a hamburger-triggered drawer (MobileNav.tsx) below md.
  • The marketing header hid its nav below md with no replacement at all — every page except Home was unreachable on a phone. Now has the same drawer pattern (MarketingMobileNav.tsx), verified live at 375px width.

2. Toast adoption

  • Sonner was mounted globally but barely used. Every error catch across 9 dashboard pages (Query, Documents ×2, Knowledge, Knowledge Base, ATO Correspondence, Settings ×2, Analytics) now fires a toast — including the suggestion approve/reject/assign actions, which previously failed completely silently.

3. Semantic color tokens

  • Added --success / --warning / --info to the theme (globals.css), migrated ~30 raw Tailwind palette-color usages (bg-emerald-50, text-amber-700, etc.) across 13 files. Two deliberate, commented exceptions left in place: the Sources panel's 6-color citation-index rotation (needs distinct hues, not a single meaning) and one tooltip's fixed amber (tooltips render with an inverted fg/bg pair, so the page's normal-contrast token isn't right there).

Remaining findings

  • Fixed the one real missing aria-label (CollapsedPanelRail) — re-audited the rest and found them already correct.
  • Replaced "Loading…" text with shape-matching Skeleton placeholders across 7 pages; fixed a real bug in Knowledge where the empty state flashed before the list loaded.
  • Rejecting a knowledge suggestion now goes through ConfirmDialog like other destructive actions, instead of firing on click.
  • Deduplicated the copy-pasted document STATUS_VARIANT mapping into lib/documents.ts.
  • Tooltip coverage and border-radius scale: reassessed and left as-is — self-descriptive buttons don't need tooltips, and a blanket radius rewrite is pure cosmetic risk with no functional upside.

Test plan

  • npx tsc --noEmit clean
  • npx eslint . clean
  • Verified the marketing mobile drawer live at 375×812 (opens, lists all nav links + Login/Start free trial) and confirmed the hamburger is display: none at desktop width
  • User to verify the dashboard header's mobile drawer visually (this worktree has no Supabase env vars, so /dashboard/* can't render locally)

🤖 Generated with Claude Code

… 1-3 + polish)

Implements the top 3 priorities from the UI audit plus the remaining
moderate/polish findings:

1. Mobile - the dashboard header's nav had zero responsive handling (full-
   width labels in a fixed grid, no breakpoint), and the marketing header
   hid its nav below `md` with no replacement at all. Both now collapse into
   a hamburger-triggered Sheet drawer (MobileNav, MarketingMobileNav).

2. Toast adoption - the Sonner toaster was mounted globally but almost never
   used; every error catch across 9 dashboard pages now fires a toast
   alongside (or instead of) silent/easy-to-miss inline text, including two
   suggestion actions (approve/reject/assign) that previously failed with
   zero feedback at all.

3. Semantic color tokens - added --success/--warning/--info to the theme
   (globals.css), and migrated ~30 raw Tailwind palette-color usages
   (bg-emerald-50, text-amber-700, etc.) across 13 files to the new tokens,
   so dark mode no longer depends on someone remembering a `dark:` override
   per usage. Left two deliberate exceptions in place with a comment: the
   Sources panel's 6-color citation-index rotation (not semantic, needs
   distinct hues) and a tooltip's fixed amber (tooltips render with an
   inverted foreground/background pair, so the page's normal-contrast
   --warning token isn't right there).

Remaining findings addressed:
- Fixed the one genuine icon-only button missing an accessible name
  (CollapsedPanelRail) - broader audit found the rest already correct
- Replaced "Loading..." text with shape-matching Skeleton placeholders
  across Documents, Knowledge, Knowledge Base, ATO Correspondence, Settings,
  and Settings > Staff; fixed a knowledge-page bug where the empty state
  briefly flashed before the real list loaded
- Rejecting a knowledge suggestion now goes through the same ConfirmDialog
  pattern as other destructive actions, instead of firing on click
- Deduplicated the copy-pasted document STATUS_VARIANT badge mapping into
  lib/documents.ts

Tooltip coverage and border-radius scale were reassessed and left as-is:
self-descriptive buttons don't need tooltips, and a blanket radius rewrite
carries real regression risk for a purely cosmetic gain.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
taxflow-dashboard Ready Ready Preview Aug 8, 2026 7:33am

@crewcricle
crewcricle merged commit ae3c1b5 into main Aug 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants