feat(web): design tokens, Tailwind config, base components (TEC-3057)

- Add chart palette, motion, and z-index CSS vars to globals.css
- Replace custom theme-provider with next-themes (dark default)
- Extend tailwind.config.ts with heading fonts, spacing (row-compact,
  row-roomy, sidebar), chart colors, elevation shadows, glow shadows,
  transition timing, pill border-radius, z-index scale
- Update tick-flash animations to match design token spec (480ms)
- Add prefers-reduced-motion support for all animations
- Create base design-system components:
  Surface, SurfaceElevated, Divider, DensityProvider/useDensity,
  Numeric (VND/percent/compact formatting), Signal (up/down/neutral pill)
- Add dev-only /dev/tokens showcase route (404 in production)
- Update theme-provider tests to match next-themes integration

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Ho Ngoc Hai
2026-04-21 03:19:40 +07:00
parent e1beda2573
commit 7d6fcb4d8d
13 changed files with 665 additions and 138 deletions

View File

@@ -18,3 +18,34 @@ export type { DashboardLayoutProps } from './dashboard-layout';
export { TickerStrip } from './ticker-strip';
export type { TickerStripProps, TickerItem } from './ticker-strip';
export { Badge } from './badge';
export type { BadgeProps } from './badge';
export { StatusChip } from './status-chip';
export type { StatusChipProps, PropertyStatus } from './status-chip';
export { DensityToggle } from './density-toggle';
export type { DensityToggleProps } from './density-toggle';
export { EmptyState } from './empty-state';
export type { EmptyStateProps } from './empty-state';
export { Skeleton } from './skeleton';
export type { SkeletonProps } from './skeleton';
export { KpiCard } from './kpi-card';
export type { KpiCardProps } from './kpi-card';
export { Surface, SurfaceElevated } from './surface';
export { Divider } from './divider';
export type { DividerProps } from './divider';
export { DensityProvider, useDensity, DENSITY_ROW_HEIGHT, DENSITY_CELL_PADDING, DENSITY_DATA_FONT } from './density-provider';
export type { DensityMode } from './density-provider';
export { Numeric } from './numeric';
export type { NumericProps } from './numeric';
export { Signal } from './signal';
export type { SignalDirection, SignalProps } from './signal';