feat(ui): back Button/Badge/Progress/Segmented with shadcn (prop APIs preserved) (#799)
Migrate four OmniVoice UI primitives onto shadcn/ui foundations while keeping their exact legacy prop APIs, so no call site changes. - Button: thin wrapper over src/components/ui/button.tsx. Extends the shadcn CVA with the OmniVoice variants (primary/subtle/softGhost/danger/chip[+Active]/ preset[+Active]/iconBtn[+Active]) + sizes (omniSm/omniMd/chip/preset/iconSm/ iconMd), styled via palette token utilities. Maps variant/size/iconSize/active/ loading/leading/trailing/block/ref. Each variant sets an explicit border (transparent where needed) since the app ships Tailwind without Preflight. - Badge: new src/components/ui/badge.tsx; CVA carries the tones (neutral/brand/ success/warn/danger/info/violet) + xs/sm sizes. Wrapper maps tone->variant and keeps the ui-badge / ui-badge__dot hooks so the Header --pulse animation works. - Progress: new src/components/ui/progress.tsx (on @radix-ui/react-progress) with indicatorClassName + indeterminate support. Wrapper keeps per-tone gradients, sizes, shimmer overlay, and the ui-progress / has-shimmer / is-indeterminate hooks (residual.css keyframes unchanged). - Segmented: new toggle.tsx + toggle-group.tsx (adds @radix-ui/react-toggle). The `seg` toggle variant reproduces the segmented look; wrapper preserves the items/value/onChange/size API. residual.css: drop the obsolete .ui-seg__opt:focus-visible rule (focus now falls through to the global ring). Badge pulse + Progress shimmer/indeterminate rules kept (still needed). Visual baselines: Badge/Progress/Segmented render byte-identical to before; only Button baselines updated (shadcn markup differs in padding/radius, palette- coherent across default/midnight/catppuccin). All gates pass: oxlint, oxfmt, tsc, vite build, vitest (641), test:visual (48), bun install --frozen-lockfile. Co-authored-by: mergetest <test@local> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
mergetest
Claude Opus 4.8
parent
836d69178c
commit
86b30ece98
Reference in New Issue
Block a user