Skip to content

feat(platform): dashboard UI modernization — align with marketing shadcn design system#109

Merged
8dazo merged 9 commits into
mainfrom
feature/95-dashboard-ui-modernization
Apr 30, 2026
Merged

feat(platform): dashboard UI modernization — align with marketing shadcn design system#109
8dazo merged 9 commits into
mainfrom
feature/95-dashboard-ui-modernization

Conversation

@8dazo
Copy link
Copy Markdown
Owner

@8dazo 8dazo commented Apr 30, 2026

Summary

Modernize the platform dashboard UI by adopting the marketing app's shadcn/new-york design system. All changes are cosmetic — no functional behavior changes.

What changed

Foundation (Issues #95 #96)

  • CSS variable design system (dark-mode-only, cyan as --primary)
  • components.json for shadcn CLI support
  • Installed 7 missing shadcn components: Select, Avatar, Tooltip, Skeleton, Breadcrumb, DropdownMenu, Sonner
  • Added <Toaster /> + <TooltipProvider> to root layout

Component unification (Issues #97 #98)

  • Unified MetricCard with icon/link/variant support
  • Badge status variants: completed, failed, blocked, pending
  • New utility components: CopyButton, CodeBlock, FileUpload
  • Button: added asChild prop, destructive variant, semantic tokens
  • Card: migrated to semantic tokens

Page-by-page improvements

Issue Page Changes
#99 Login Loading spinner, Sonner toast errors
#100 Projects Dialog for create form, search filter, Button links
#101 Project detail MetricCards, CodeBlock integration snippet, Breadcrumbs, CopyButton
#102 Dashboard Unified MetricCard/SpendCard/StatusBadge, Breadcrumbs
#103 Datasets shadcn Select, FileUpload, Button export links, Breadcrumbs
#104 Evals Styled empty states, Button links, Breadcrumbs
#105 Run reviewer shadcn Select, destructive Fail verdict, Sonner toasts, progress, Breadcrumbs
#106 Hook detail MetricCards, CodeBlock policy JSON, CopyButton, Breadcrumbs, Tooltip
#107 Trace detail shadcn Select, tree lines, CopyButton, semantic banners, Breadcrumbs
#108 Cross-cutting 11 loading states use Skeleton+AppShell, 4 error boundaries use Button, not-found uses AppShell+Button

Stats

57 files changed, +2182 insertions, −856 deletions

Issues

Closes #95
Closes #96
Closes #97
Closes #98
Closes #99
Closes #100
Closes #101
Closes #102
Closes #103
Closes #104
Closes #105
Closes #106
Closes #107
Closes #108

8dazo added 9 commits April 29, 2026 08:45
- Add components.json for shadcn CLI support (new-york style, neutral base)
- Migrate globals.css from hardcoded colors to CSS variables (dark-mode-only)
- Primary color is cyan (186 94% 60%) to preserve dashboard identity
- Radius set to 0.75rem matching existing rounded-xl preference
- Extend tailwind.config.ts with semantic color tokens and tailwindcss-animate
- Add tailwindcss-animate dependency

Issue: #95
- Add shadcn components: Select, Avatar, Tooltip, Skeleton, Breadcrumb, DropdownMenu, Sonner
- Create Providers wrapper with TooltipProvider
- Add Toaster to root layout
- Add ~ path alias to tsconfig.json for shadcn imports
- Install Radix dependencies: react-select, react-avatar, react-tooltip, react-dropdown-menu, react-slot

Issue: #96
- CopyButton: clipboard copy with Sonner toast feedback
- CodeBlock: pre wrapper with copy button and optional language label
- FileUpload: styled file input hiding raw input type=file

Issue: #98
…ard pages

- Login: add loading state with spinner, replace inline errors with Sonner toasts
- Projects: move create form to Dialog, add search filter, use semantic tokens
- Project detail: add CodeBlock, CopyButton, Breadcrumbs, Button outline links, toasts
- Dashboard: add Breadcrumbs, replace buttonVariants hacks with Button asChild
- Button: add asChild prop via Radix Slot, use semantic tokens
- Card: migrate to semantic tokens (border-border, bg-card, text-card-foreground)

Issues: #99 #100 #101 #102
…ail pages

- Datasets: shadcn Select, FileUpload, Breadcrumbs, Button links, toasts
- Evals: styled empty states, Breadcrumbs, semantic tokens, Button links
- Run reviewer: shadcn Select, destructive Fail verdict, Sonner toasts, Breadcrumbs
- Hook detail: MetricCard, CodeBlock, CopyButton, Breadcrumbs, Tooltip
- Button: add destructive variant with semantic tokens

Issues: #103 #104 #105 #106
… states

- Trace detail: shadcn Select, tree lines, CopyButton, semantic banners, Breadcrumbs
- TraceDatasetExportCard: shadcn Select replacing raw select
- All 11 loading.tsx: wrapped in AppShell, use Skeleton component
- All 4 error.tsx: use Button component instead of raw button
- not-found.tsx: AppShell wrapper, Button + Link
- TraceAutoRefresh: semantic token colors

Issues: #107 #108
…er import

- Replace all ../../../../components/* relative imports with ~/components/*
- Fix shadcn sonner.tsx circular import (was importing from itself)

Issue: #108
@8dazo 8dazo merged commit e21cd37 into main Apr 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment