# Basecoat Multi-Style + Theme Refactor Plan ## Goals - Support the current shadcn/ui visual packs: `vega`, `nova`, `maia`, `lyra`, `mira`, `luma`, `sera`, `rhea`. - Keep current CDN and Tailwind/NPM usage working. - Keep Basecoat's own class API (`btn`, `dialog`, `popover`, etc.). - Split CSS into base tokens/utilities, component structure, style-pack visuals, and aggregate outputs. - Make custom token themes, including TweakCN-style themes, predictable by loading them after Basecoat CSS. ## Current Upstream Reference - Local repo: `../_sandbox/shadcn-ui` - Style registry: `../_sandbox/shadcn-ui/apps/v4/registry/styles.tsx` - Style files: `../_sandbox/shadcn-ui/apps/v4/registry/styles/style-{vega,nova,maia,lyra,mira,luma,sera,rhea}.css` - Base components: `../_sandbox/shadcn-ui/apps/v4/registry/bases/base/ui/.tsx` ## Target CSS Architecture 1. `src/css/base/base.css` - base layer, default token fallbacks, and semantic utilities needed by CDN users 2. `src/css/components/*.css` - Basecoat component selectors and shared structural behavior 3. `src/css/styles/*.css` - one file per style pack: `vega`, `nova`, `maia`, `lyra`, `mira`, `luma`, `sera`, `rhea` - component visuals: size, spacing, radius, typography, shadows, focus rings, variant colors when style-owned 4. Aggregates - `src/css/basecoat.css`: backward-compatible Basecoat default aggregate, currently Vega - `src/css/basecoat-