-
-
- Something went wrong
-
+// With utility helper
+
+ Responsive card
```
-### Form Validation
-```tsx
-// Error message
-
- This field is required
-
-
+## Theme Inheritance
-// Success message
-
- Valid
-
-
-```
+Colors automatically switch based on the active theme (light/dark) set on the `html` or `body` element:
-### Badge Styles
```tsx
-// Default badge
-
Default
-
-// Destructive badge
-
Error
+// Theme provider handles token switching
+
+
+
```
-## Color Reference Cards
+Tokens are defined in the theme stylesheet and applied globally. No conditional logic needed—use the token name consistently.
-### Approved Colors
-```
-text-primary → Primary text, foreground content
-text-destructive → Destructive actions, errors, warnings
-```
+## Overriding Tokens
-### Forbidden Colors
-```
-text-muted-foreground ❌ Not part of LSD
-bg-muted ❌ Not part of LSD
-ring-offset-background ❌ Not part of LSD
-accent ❌ Not part of LSD
-accent-foreground ❌ Not part of LSD
-```
-
-### Theme Behavior
-```
-Light Mode:
- text-primary → Dark gray
- text-destructive → Red
+Override specific tokens in your component or global CSS:
-Dark Mode (.dark class):
- text-primary → Light gray
- text-destructive → Light red
+```css
+/* Component override */
+.custom-button {
+ --lsd-primary: #6366f1;
+}
-Accent Themes (data-theme):
- monochrome, teal, nord, terracotta, catppuccin
+/* Global override */
+:root[data-theme="custom"] {
+ --lsd-primary: #6366f1;
+ --lsd-primary-foreground: #ffffff;
+}
```
-## Important Notes
+## Critical Rules
-- **ALWAYS** use `text-primary` for normal content
-- **ALWAYS** use `text-destructive` for destructive actions and errors
-- **NEVER** use `text-muted-foreground` or `bg-muted` - these don't exist in LSD
-- Colors automatically adapt to light/dark mode
-- Component variants (`filled`, `outlined`, `ghost`, `link`) handle colors internally
-- Icons inherit text color unless explicitly set
-- Hover and focus states should use the same color system
-- Maintain visual hierarchy with consistent color usage
+1. **NEVER use raw hex colors** in production code
+2. **ALWAYS use token variables** for color values
+3. **Token naming**: Prefixed with `--lsd-` for consistency
+4. **Theme switching**: Automatic via data attributes
+5. **Accessibility**: Semantic tokens maintain WCAG contrast ratios
diff --git a/skills/nipsys-lsd/references/component-catalog.md b/skills/nipsys-lsd/references/component-catalog.md
new file mode 100644
index 00000000..3dea2e08
--- /dev/null
+++ b/skills/nipsys-lsd/references/component-catalog.md
@@ -0,0 +1,69 @@
+# LSD Component Catalog
+
+Quick reference for all 41 components in the @nipsys/lsd library.
+
+## External Dependencies
+- **cmdk** - Command component
+- **react-day-picker** - Calendar component
+- **sonner** - Sonner toast component
+
+---
+
+## Forms & Input (10)
+- **Input** - Text input with label, supporting text, error states. Multiple border variants.
+- **Textarea** - Multi-line text input with label and validation states.
+- **Checkbox** - Checkable input with labeled state.
+- **Switch** - Toggle switch for binary states. `[CVA]`
+- **RadioGroup** - Single-select radio button group. `[Composite]`
+- **Select** - Dropdown select with custom styling. `[Composite]`
+- **Autocomplete** - Select with search/filter functionality. `[Composite]`
+- **InputGroup** - Input with prepend/append elements. `[CVA] [Composite]`
+- **Slider** - Range selector with value indicator.
+- **Field** - Complex form field with label, description, error, helper. `[Composite]`
+
+## Buttons & Actions (4)
+- **Button** - Interactive button with variants, loading, sizes. `[CVA]`
+- **ButtonGroup** - Grouped buttons with separators and text. `[CVA] [Composite]`
+- **Toggle** - Pressable toggle button. `[CVA]`
+- **ToggleGroup** - Single/multi-select toggle group. `[CVA] [Composite]`
+
+## Navigation (5)
+- **Tabs** - Tabbed interface with panels. `[CVA]`
+- **Accordion** - Collapsible panels (single/multiple modes).
+- **NavigationMenu** - Multi-level navigation with dropdowns. `[CVA]`
+- **Menubar** - Horizontal menu bar with nested items. `[CVA]`
+- **Sidebar** - Collapsible sidebar with groups and menus. `[CVA] [Composite]`
+
+## Overlays & Modals (6)
+- **Dialog** - Modal dialog with header, footer, content. `[Composite]`
+- **AlertDialog** - Confirmation dialog for critical actions. `[Composite]`
+- **Sheet** - Slide-over panel from edges. `[Composite]`
+- **Popover** - Floating content positioned relative to trigger.
+- **Tooltip** - Hover information popup.
+- **DropdownMenu** - Context menu with actions. `[Composite]`
+
+## Data Display (7)
+- **Table** - Structured data table with header/body/caption. `[Composite]`
+- **Card** - Content container with header/footer. `[Composite]`
+- **Badge** - Status tags with variants, dismissible, dots. `[CVA]`
+- **Avatar** - User profile image with fallback. `[Composite]`
+- **Progress** - Progress bar with determinate/indeterminate states.
+- **Alert** - Contextual messages with semantic variants. `[CVA]`
+- **Command** - Command palette with search, groups, keyboard nav. `[Composite]`
+
+## Layout & Structure (5)
+- **Separator** - Visual divider line.
+- **ScrollArea** - Custom-styled scrollable area.
+- **Typography** - Text styles (headings, body, code, captions). `[CVA]`
+- **Calendar** - Date picker and calendar display. `[Composite]`
+- **Label** - Form field label with sizing. `[CVA]`
+
+## Feedback & Utilities (2)
+- **Sonner** - Toast notification system.
+- **Form** - Form validation context with react-hook-form.
+
+---
+
+**Legend:**
+- `[CVA]` - Uses class-variance-authority for variant styling
+- `[Composite]` - Requires sub-components for full functionality
\ No newline at end of file
diff --git a/skills/nipsys-lsd/references/component-list.md b/skills/nipsys-lsd/references/component-list.md
deleted file mode 100644
index 9ea39fd8..00000000
--- a/skills/nipsys-lsd/references/component-list.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# LSD Component List
-
-Complete list of all 39 components in @nipsys/lsd organized by category.
-
-## Forms (15 components)
-- **Input** - Single-line text input
-- **Textarea** - Multi-line text input
-- **Checkbox** - Boolean toggle checkbox
-- **Switch** - On/off toggle switch
-- **RadioGroup** - Radio button group for single selection
-- **TextField** - Enhanced input with label integration
-- **Form** - Form container with validation (react-hook-form)
-- **Field** - Form field with label integration
-- **Select** - Dropdown selector
-- **Autocomplete** - Searchable autocomplete with cmdk
-- **InputGroup** - Input with prefix/suffix add-ons and icons
-- **Accordion** - Collapsible content panels
-- **Label** - Form label for inputs
-- **Button** - Primary action button
-- **ToggleGroup** - Group of toggle buttons for multi-selection
-
-## Navigation (6 components)
-- **Menubar** - Application menubar
-- **NavigationMenu** - Hierarchical navigation menu
-- **Tabs** - Tabbed content panels
-- **ButtonGroup** - Group of related buttons
-- **Toggle** - Toggle button
-- **Sidebar** - Application sidebar navigation
-
-## Overlays (5 components)
-- **Dialog** - Modal dialog box
-- **AlertDialog** - Alert dialog for confirmations
-- **Popover** - Floating content popover
-- **DropdownMenu** - Dropdown menu with actions
-- **Sheet** - Slide-over sheet panel
-
-## Feedback (3 components)
-- **Alert** - Alert message with icon
-- **Progress** - Progress indicator bar
-- **Sonner** - Toast notification system
-
-## Layout (3 components)
-- **Card** - Card container with header/content
-- **Separator** - Horizontal/vertical separator
-- **ScrollArea** - Custom scrollable area
-
-## Data Display (6 components)
-- **Table** - Data table with sorting/filtering
-- **Badge** - Badge indicator
-- **Avatar** - User avatar with fallback
-- **Calendar** - Date picker calendar
-- **Slider** - Range slider control
-- **Command** - Command palette with search
-
-## Typography (1 component)
-- **Typography** - Typography component for headings, body text, labels, and UI copy
-
-## Dependency Summary
-
-| Component | External Dependency |
-|-----------|-------------------|
-| Accordion | @radix-ui/react-accordion |
-| AlertDialog | @radix-ui/react-alert-dialog |
-| Autocomplete | cmdk |
-| Calendar | react-day-picker |
-| Checkbox | @radix-ui/react-checkbox |
-| Command | cmdk |
-| Dialog | @radix-ui/react-dialog |
-| DropdownMenu | @radix-ui/react-dropdown-menu |
-| Form | react-hook-form |
-| Icons | @phosphor-icons/react |
-| Label | @radix-ui/react-label |
-| Menubar | @radix-ui/react-menubar |
-| NavigationMenu | @radix-ui/react-navigation-menu |
-| Popover | @radix-ui/react-popover |
-| Progress | @radix-ui/react-progress |
-| RadioGroup | @radix-ui/react-radio-group |
-| ScrollArea | @radix-ui/react-scroll-area |
-| Select | @radix-ui/react-select |
-| Separator | @radix-ui/react-separator |
-| Sheet | @radix-ui/react-dialog (built) |
-| Slider | @radix-ui/react-slider |
-| Sonner | sonner |
-| Switch | @radix-ui/react-switch |
-| Tabs | @radix-ui/react-tabs |
-| Toggle | @radix-ui/react-toggle |
-| ToggleGroup | @radix-ui/react-toggle-group |
-| Tooltip | @radix-ui/react-tooltip |
-
-## Usage Notes
-
-- All components support `className` prop for custom styling
-- Components using CVA support `variant` and `size` props
-- Composite components require importing sub-components
-- All components are fully accessible with ARIA attributes
-- Forward refs are supported on all components
-- Dark mode support via `.dark` class on HTML element
-- Accent themes via `data-theme` attribute on HTML element
diff --git a/skills/nipsys-lsd/references/component-patterns.md b/skills/nipsys-lsd/references/component-patterns.md
new file mode 100644
index 00000000..0f8d6a86
--- /dev/null
+++ b/skills/nipsys-lsd/references/component-patterns.md
@@ -0,0 +1,371 @@
+# LSD Component Usage Patterns
+
+## Forms & Input Component Patterns
+
+### Input
+```tsx
+import { Input } from '@nipsys/lsd'
+
+
+
+// variants: underlined (default), outlined, ghost | sizes: sm, md (default), lg
+```
+
+### Textarea
+```tsx
+import { Textarea } from '@nipsys/lsd'
+
+
+
+```
+
+### Checkbox
+```tsx
+import { Checkbox } from '@nipsys/lsd'
+
+
Accept terms
+
+```
+
+### Switch
+```tsx
+import { Switch } from '@nipsys/lsd'
+
+
+
+```
+
+### Select
+```tsx
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@nipsys/lsd'
+
+
+
+
+ Option 1
+ Option 2
+
+
+```
+
+### Autocomplete
+```tsx
+import { Autocomplete } from '@nipsys/lsd'
+
+
item} />
+```
+
+### InputGroup
+```tsx
+import { InputGroup, InputGroupInput, InputGroupAddon } from '@nipsys/lsd'
+
+
+ $
+
+ USD
+
+```
+
+### Slider
+```tsx
+import { Slider } from '@nipsys/lsd'
+
+
+```
+
+### Field
+```tsx
+import { Field, FieldLabel, FieldContent, FieldError, FieldDescription } from '@nipsys/lsd'
+
+
+ Full Name
+
+ Name is required
+ Enter your legal name
+
+```
+
+## Buttons & Actions Patterns
+
+### Button
+```tsx
+import { Button } from '@nipsys/lsd'
+
+// Variants
+Default
+Outlined
+Rounded
+Destructive
+Success
+Link
+Ghost
+
+// Sizes
+Small
+Medium
+Large
+
+
+// Features
+Save
+Full Width
+ View Profile
+```
+
+### ButtonGroup
+```tsx
+import { ButtonGroup, Button } from '@nipsys/lsd'
+
+
+ Previous
+ Next
+
+```
+
+### Toggle/ToggleGroup
+```tsx
+import { Toggle, ToggleGroup, ToggleGroupItem } from '@nipsys/lsd'
+
+Bold
+
+
+ B
+ I
+
+
+
+ Left
+ Center
+
+```
+
+## Navigation Patterns
+
+### Tabs
+```tsx
+import { Tabs, TabsList, TabsTrigger, TabsContent } from '@nipsys/lsd'
+
+
+
+ Profile
+ Settings
+
+ Profile content
+ Settings content
+
+
+
+```
+
+### Accordion
+```tsx
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@nipsys/lsd'
+
+
+
+ Is it accessible?
+ Yes, it's fully accessible.
+
+
+```
+
+### NavigationMenu/Menubar
+```tsx
+import { NavigationMenu, NavigationMenuTrigger, NavigationMenuContent } from '@nipsys/lsd'
+import { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem } from '@nipsys/lsd'
+
+
+
+
+ Products
+ Product 1
+
+
+
+
+
+
+ File
+ New
+
+
+```
+
+### Sidebar
+```tsx
+import { Sidebar, SidebarContent, SidebarGroup, SidebarMenu, SidebarMenuItem } from '@nipsys/lsd'
+
+
+
+
+
+ Dashboard
+
+
+
+
+```
+
+## Overlays & Modals Patterns
+
+### Dialog
+```tsx
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogClose } from '@nipsys/lsd'
+
+
+ Open Dialog
+
+ Are you sure?
+
+ Cancel
+ Confirm
+
+
+
+```
+
+### AlertDialog
+```tsx
+import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@nipsys/lsd'
+
+
+ Delete
+
+ Are you absolutely sure?
+
+ Cancel
+ Continue
+
+
+
+```
+
+### Sheet/Popover/Tooltip
+```tsx
+import { Sheet, SheetContent, SheetTrigger } from '@nipsys/lsd'
+import { Popover, PopoverContent, PopoverTrigger } from '@nipsys/lsd'
+import { Tooltip, TooltipContent, TooltipTrigger } from '@nipsys/lsd'
+
+Open Content
+Info Popover
+Hover Tooltip
+```
+
+### DropdownMenu
+```tsx
+import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuShortcut } from '@nipsys/lsd'
+
+
+ Menu
+
+ Profile⌘P
+
+ Dark mode
+
+ List view
+ Grid view
+
+
+
+```
+
+## Data Display Patterns
+
+### Table
+```tsx
+import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@nipsys/lsd'
+
+
+ Name Email
+ John Doe john@example.com
+
+```
+
+### Badge
+```tsx
+import { Badge } from '@nipsys/lsd'
+
+Default
+Error
+Success
+Small
+ } iconPosition="left">With Icon
+ {}}>Removable
+
+ {}}>Clickable
+// variants: default, outline, destructive, success, dot | sizes: sm, md, lg | iconPosition: left, right
+```
+
+### Avatar/Progress/Alert/Command
+```tsx
+import { Avatar, AvatarFallback, AvatarImage } from '@nipsys/lsd'
+import { Progress } from '@nipsys/lsd'
+import { Alert, AlertDescription, AlertTitle } from '@nipsys/lsd'
+import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut } from '@nipsys/lsd'
+
+JD
+
+Error Something went wrong.
+No results Calendar⌘K
+```
+
+## Layout & Structure Patterns
+
+### Separator/ScrollArea/Typography/Calendar/Label
+```tsx
+import { Separator } from '@nipsys/lsd'
+import { ScrollArea } from '@nipsys/lsd'
+import { Typography } from '@nipsys/lsd'
+import { Calendar } from '@nipsys/lsd'
+import { Label } from '@nipsys/lsd'
+
+
+Scrollable content
+Heading 1
+Body text
+
+Email
+```
+
+## Feedback Patterns
+
+### Sonner (Toasts)/Form Validation
+```tsx
+import { toast } from '@nipsys/lsd/ui/toast'
+import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@nipsys/lsd/ui/form'
+
+toast.success("Changes saved successfully")
+toast.error("Failed to save changes")
+
+
+```
+
+## Key Component Props Reference
+
+**Button**: variant (filled, outlined, filled-rounded, outlined-rounded, link, ghost, ghost-rounded, destructive, destructive-rounded, success, success-rounded), size (sm, md, lg, square-sm, square-md, square-lg), loading, fullWidth, asChild
+
+**Input**: variant (underlined, outlined, ghost), size (sm, md, lg), label, supportingText, error
+
+**Badge**: variant (default, outline, destructive, success, dot), size (sm, md, lg), asChild, onDismiss, onClick, icon, iconPosition, dot
+
+**Switch**: size (sm, md, lg)
+
+**Tabs**: size (sm, md, lg), fullWidth, bordered
+
+## Composition Notes
+
+**Dialog**: Dialog → DialogTrigger → DialogContent → DialogHeader → DialogTitle → DialogDescription → DialogFooter → DialogClose
+
+**Form Fields**: Form → FormField → FormItem → FormLabel → FormControl → FormMessage
+
+**Navigation**: TabsList → TabsTrigger, TabsContent | AccordionItem → AccordionTrigger → AccordionContent
+
+**Menus**: DropdownMenuTrigger → DropdownMenuContent → DropdownMenuItem | DropdownMenuCheckboxItem | DropdownMenuRadioItem
diff --git a/skills/nipsys-lsd/references/composition.md b/skills/nipsys-lsd/references/composition.md
index 7c73a573..6362a7cf 100644
--- a/skills/nipsys-lsd/references/composition.md
+++ b/skills/nipsys-lsd/references/composition.md
@@ -1,531 +1,187 @@
-# LSD Component Composition
+# Component Composition Patterns
-Complete guide to component composition patterns and sub-component usage in @nipsys/lsd.
+## Pattern Overview
-## Concept
+LSD uses compound component composition where parent components manage state and behavior, while sub-components render UI and interact with the parent context. This enables flexible layouts without prop drilling.
-Many LSD components are composable, meaning they consist of a root component and sub-components that work together. Always import and use all required sub-components for proper functionality and accessibility.
+## Major Composition Trees
-## Composite Components
-
-### Dialog
-
-**Structure:** DialogRoot, DialogTrigger, DialogContent, DialogTitle, DialogClose
-
-```tsx
-import { Dialog, DialogTrigger, DialogContent, DialogTitle, DialogClose } from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
- Open Dialog
-
-
-
- Dialog Title
-
-
- Dialog description goes here.
-
-
- Continue
-
- Cancel
-
-
-
-
- );
-}
-```
-
-**Required sub-components:**
-- ❌ **You MUST import:** Dialog, DialogTrigger, DialogContent, DialogTitle, DialogClose
-
-### AlertDialog
-
-**Structure:** AlertDialogRoot, AlertDialogTrigger, AlertDialogContent, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel
-
-```tsx
-import {
- AlertDialog,
- AlertDialogTrigger,
- AlertDialogContent,
- AlertDialogTitle,
- AlertDialogDescription,
- AlertDialogAction,
- AlertDialogCancel,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
- Delete
-
-
-
- Are you sure?
-
-
-
- This action cannot be undone.
-
-
-
-
- Cancel
-
-
- Delete
-
-
-
-
- );
-}
-```
-
-**Required sub-components:**
-- ❌ **You MUST import:** AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel
-
-### Sheet
-
-**Structure:** SheetRoot, SheetTrigger, SheetContent, SheetTitle, SheetClose, SheetHeader
-
-```tsx
-import {
- Sheet,
- SheetTrigger,
- SheetContent,
- SheetTitle,
- SheetClose,
- SheetHeader,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
- Open Sheet
-
-
-
-
- Sheet Title
-
-
-
- Sheet content goes here.
-
-
- Close
-
-
-
- );
-}
+### Dialog (11 sub-components)
```
-
-**Required sub-components:**
-- ❌ **You MUST import:** Sheet, SheetTrigger, SheetContent, SheetTitle, SheetClose, SheetHeader
-
-### DropdownMenu
-
-**Structure:** DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator
-
-```tsx
-import {
- DropdownMenu,
- DropdownMenuTrigger,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
- Menu
-
-
-
- Actions
-
-
-
- Edit
-
-
- Delete
-
-
-
- );
-}
-```
-
-**Required sub-components:**
-- ❌ **You MUST import:** DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem
-
-### Popover
-
-**Structure:** PopoverRoot, PopoverTrigger, PopoverContent
-
-```tsx
-import { Popover, PopoverTrigger, PopoverContent } from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
- Trigger
-
-
- Popover content
-
-
- );
-}
+Dialog
+├── DialogTrigger (opens dialog)
+├── DialogPortal (portal container)
+├── DialogOverlay (backdrop)
+├── DialogContent (main container)
+│ ├── DialogHeader
+│ │ ├── DialogTitle
+│ │ └── DialogDescription
+│ ├── DialogFooter
+│ └── DialogClose
```
-**Required sub-components:**
-- ❌ **You MUST import:** Popover, PopoverTrigger, PopoverContent
-
-### Tabs
-
-**Structure:** TabsRoot, TabsList, TabsTrigger, TabsContent
-
-```tsx
-import { Tabs, TabsList, TabsTrigger, TabsContent } from '@nipsys/lsd';
+### AlertDialog (12 sub-components)
+Same hierarchy as Dialog, prefixed with AlertDialog:
+- AlertDialog, AlertDialogTrigger, AlertDialogPortal, AlertDialogOverlay
+- AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription
+- AlertDialogFooter, AlertDialogAction, AlertDialogCancel
-function Example() {
- const [value, setValue] = React.useState('tab1');
+### Sheet (11 sub-components)
+Same hierarchy as Dialog, prefixed with Sheet:
+- Sheet, SheetTrigger, SheetPortal, SheetOverlay, SheetContent
+- SheetHeader, SheetTitle, SheetDescription, SheetFooter, SheetClose
- return (
-
-
-
- Tab 1
-
-
- Tab 2
-
-
-
- Content 1
-
-
- Content 2
-
-
- );
-}
+### DropdownMenu (16 sub-components)
```
-
-**Required sub-components:**
-- ❌ **You MUST import:** Tabs, TabsList, TabsTrigger, TabsContent
-
-### InputGroup
-
-**Structure:** InputGroupRoot, InputGroupAddOn, InputGroupAddOnIcon
-
-```tsx
-import { InputGroup, InputGroupAddOn, InputGroupAddOnIcon } from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
-
-
-
-
-
- USD
-
- );
-}
+DropdownMenu
+├── DropdownMenuTrigger
+├── DropdownMenuPortal
+└── DropdownMenuContent
+ ├── DropdownMenuLabel
+ ├── DropdownMenuGroup
+ │ └── DropdownMenuItem / DropdownMenuCheckboxItem / DropdownMenuRadioItem
+ ├── DropdownMenuRadioGroup
+ │ └── DropdownMenuRadioItem
+ ├── DropdownMenuSeparator
+ ├── DropdownMenuShortcut
+ └── DropdownMenuSub
+ ├── DropdownMenuSubTrigger
+ └── DropdownMenuSubContent
```
-**Required sub-components:**
-- ❌ **You MUST import:** InputGroup, InputGroupAddOn, InputGroupAddOnIcon
-
-### Select
-
-**Structure:** SelectRoot, SelectTrigger, SelectValue, SelectContent, SelectItem
-
-```tsx
-import {
- Select,
- SelectTrigger,
- SelectValue,
- SelectContent,
- SelectItem,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
-
-
-
-
- Option 1
-
-
- Option 2
-
-
-
- );
-}
+### Sidebar (22 sub-components)
```
-
-**Required sub-components:**
-- ❌ **You MUST import:** Select, SelectTrigger, SelectValue, SelectContent, SelectItem
-
-### Command
-
-**Structure:** CommandRoot, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator
-
-```tsx
-import {
- Command,
- CommandInput,
- CommandList,
- CommandEmpty,
- CommandGroup,
- CommandItem,
- CommandSeparator,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
-
- No results found.
-
-
- Calendar
-
-
- Settings
-
-
-
-
- );
-}
+Sidebar (main container)
+├── SidebarProvider (context)
+├── SidebarContent (scrollable area)
+│ ├── SidebarHeader
+│ ├── SidebarGroup
+│ │ ├── SidebarGroupLabel
+│ │ ├── SidebarGroupAction
+│ │ └── SidebarGroupContent
+│ │ └── SidebarMenu
+│ │ ├── SidebarMenuItem
+│ │ │ ├── SidebarMenuButton
+│ │ │ ├── SidebarMenuAction
+│ │ │ ├── SidebarMenuBadge
+│ │ │ ├── SidebarMenuSub
+│ │ │ │ ├── SidebarMenuSubItem
+│ │ │ │ └── SidebarMenuSubButton
+│ │ └── SidebarMenuSkeleton
+│ ├── SidebarSeparator
+│ ├── SidebarInput
+│ └── SidebarFooter
+├── SidebarInset (main content area)
+├── SidebarTrigger (toggle button)
+└── SidebarRail (collapsed toggle)
```
-**Required sub-components:**
-- ❌ **You MUST import:** Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem
-
-### NavigationMenu
+### Field (10 sub-components)
+Field, FieldTitle, FieldLabel, FieldLegend, FieldContent, FieldSet, FieldGroup, FieldSeparator, FieldDescription, FieldError
-**Structure:** NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink
+### Select (10 sub-components)
+Select, SelectTrigger, SelectValue, SelectContent, SelectGroup, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton
-```tsx
-import {
- NavigationMenu,
- NavigationMenuList,
- NavigationMenuItem,
- NavigationMenuTrigger,
- NavigationMenuContent,
- NavigationMenuLink,
-} from '@nipsys/lsd';
+### Card (7 sub-components)
+Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, CardAction
-function Example() {
- return (
-
-
-
-
- Menu
-
-
-
- Item 1
-
-
- Item 2
-
-
-
-
-
- );
-}
-```
+### Avatar (6 sub-components)
+Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge
-**Required sub-components:**
-- ❌ **You MUST import:** NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger
+### Table (8 sub-components)
+Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption
-### Menubar
+### Command (9 sub-components)
+Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut
-**Structure:** MenubarRoot, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarSeparator
+### NavigationMenu (8 sub-components)
+NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuViewport, NavigationMenuIndicator
-```tsx
-import {
- Menubar,
- MenubarMenu,
- MenubarTrigger,
- MenubarContent,
- MenubarItem,
- MenubarSeparator,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
-
- File
-
-
-
- New
-
-
- Open
-
-
-
- Quit
-
-
-
-
- );
-}
-```
+### Menubar (16 sub-components)
+Menubar, MenubarMenu, MenubarTrigger, MenubarPortal, MenubarContent, MenubarGroup, MenubarLabel, MenubarItem, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarSub, MenubarSubTrigger, MenubarSubContent MenubarShortcut
-**Required sub-components:**
-- ❌ **You MUST import:** Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem
-
-### Form
-
-**Structure:** FormRoot, FormField, FormItem, FormLabel, FormControl, FormMessage
+## Example Implementations
+### Basic Dialog
```tsx
-import {
- Form,
- FormField,
- FormItem,
- FormLabel,
- FormControl,
- FormMessage
-} from '@nipsys/lsd';
-
-function Example() {
- const form = useForm();
-
- return (
-
- );
-}
+
+ Open
+
+
+
+
+ Title
+ Description text
+
+
+ Cancel
+
+
+
+
```
-**Required sub-components:**
-- ❌ **You MUST import:** Form, FormField, FormItem, FormLabel, FormControl, FormMessage
-
-### Sidebar
-
-**Structure:** SidebarRoot, SidebarHeader, SidebarLogo, SidebarContent, SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuItem, SidebarMenuButton
-
+### Sidebar with Navigation
```tsx
-import {
- Sidebar,
- SidebarHeader,
- SidebarLogo,
- SidebarContent,
- SidebarGroup,
- SidebarGroupLabel,
- SidebarMenu,
- SidebarMenuItem,
- SidebarMenuButton,
-} from '@nipsys/lsd';
-
-function Example() {
- return (
-
-
-
- Logo
-
-
-
-
-
- Menu
-
+
+
+
+
+
+ Home
+
+
+
+
+
+ Projects
+
-
- Dashboard
+ Project A
+ 3
-
-
-
- );
-}
+
+
+
+
+ Main content
+
```
-**Required sub-components:**
-- ❌ **You MUST import:** Sidebar, SidebarHeader, SidebarLogo, SidebarContent, SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuItem, SidebarMenuButton
-
-## Simple Components (No Composition)
-
-These components work standalone and don't require sub-components:
-
-- Button, ButtonGroup
-- Input, Textarea
-- Checkbox, Switch, RadioGroup, Toggle, ToggleGroup
-- Card, Alert, Badge, Avatar
-- Progress, Slider
-- Typography, Separator, ScrollArea
-- Sonner, Tooltip
+### Nested Dropdown Menu
+```tsx
+
+ Menu
+
+
+ Item 1
+
+ Submenu
+
+ Sub item 1
+
+
+
+
+
+```
## Common Pitfalls
-| ❌ Wrong | ✅ Right |
-|----------|----------|
-| Using only root component | Import ALL required sub-components |
-| `import { Dialog } from '@nipsys/lsd'` | `import { Dialog, DialogTrigger, DialogContent, DialogTitle } from '@nipsys/lsd'` |
-| Forgetting DialogTitle | Always include DialogTitle for accessibility |
-| Mixing components incorrectly | Follow the defined pattern for each component |
-| Using Dialog for confirmations | Use AlertDialog for destructive actions |
+**Missing Sub-components:**
+- Forgetting DialogHeader/DialogFooter breaks semantic structure
+- Missing DropdownMenuPortal causes z-index issues
+- SidebarGroup without SidebarGroupContent won't render menu items
-## Important Notes
+**Incorrect Nesting:**
+- DropdownMenuSub must be within DropdownMenuContent, not at root level
+- NavigationMenuContent requires NavigationMenuTrigger as sibling
+- SidebarMenuSubItem requires SidebarMenuSub container
-- **ALWAYS** import all sub-components for composite components
-- Sub-components provide accessibility features (ARIA, keyboard navigation)
-- Missing sub-components may break functionality and accessibility
-- Composite components use React Context internally for state sharing
-- Each composite component has a specific structure - follow the pattern
-- Use the example patterns above as templates
+**Provider Context:**
+- Sidebar requires SidebarProvider at app root
+- Dialog/Sheet manage open state internally, don't need external context
diff --git a/skills/nipsys-lsd/references/cva-patterns.md b/skills/nipsys-lsd/references/cva-patterns.md
index a5e11c03..7e7da093 100644
--- a/skills/nipsys-lsd/references/cva-patterns.md
+++ b/skills/nipsys-lsd/references/cva-patterns.md
@@ -1,1086 +1,201 @@
-# LSD CVA Patterns
-
-Complete guide to CVA (class-variance-authority) variant patterns in @nipsys/lsd.
-
-## Concept
-
-17 LSD components use CVA for variant management. These components support `variant` and `size` props to change appearance and behavior without custom CSS.
-
-## CVA Components
-
-1. **Button** - Multiple variants (filled, outlined, rounded variants, destructive, success) with sizes
-2. **Badge** - Semantic variants (destructive, success, warning, info, filled, outlined, ghost) with sizes
-3. **Toggle** - Single toggle with size variants
-4. **ToggleGroup** - Groups toggles with orientation
-5. **Switch** - On/off toggle with size variants
-6. **Typography** - Text variant system (display, heading, subtitle, body, label) with colors
-7. **Tabs** - Tabbed content with size variants and full-width option
-8. **Accordion** - Expandable sections with size variants
-9. **Sidebar** - Menu button variants (default, outline) with sizes
-10. **ButtonGroup** - Group buttons with orientation (horizontal, vertical)
-11. **Menubar** - Menu bar with multiple variant types (trigger, item, label, etc.)
-12. **Label** - Form labels with variant and size
-13. **InputGroupAddon** - Input group addons with alignment
-14. **Alert** - Alerts with semantic variants (destructive, success, warning, info)
-
-## Button
-
-### Variants
-```tsx
-Save
-Cancel
-Save
-Cancel
-Close
-Close
-Learn more
-Delete
-Delete
-Confirm
-Confirm
-```
-
-### Sizes
-```tsx
-Small
-Medium
-Large
-{ }
-{ }
-{ }
-```
-
-### Examples
-```tsx
-// Primary action with icon
-
-
- Add Item
-
-
-// Secondary action
-Cancel
-
-// Outlined rounded
-
-
- Share
-
-
-// Ghost action in toolbar
-
-
-
-
-// Destructive action
-
-
- Delete
-
-
-// Destructive rounded
-
-
-
-
-// Success action
-
-
- Confirm
-
-
-// Success rounded
-
-
-
-
-// Small button
-Save
-
-// Large button
-Continue
-
-// Square icon button
-
-
-
-```
-
-## Badge
-
-### Variants
-```tsx
-New
-Info
-Critical
-Complete
-Pending
-Note
-{}
-```
-
-### Sizes
-```tsx
-Small
-Medium
-Large
-```
-
-### Examples
-```tsx
-// Filled badge
-New
-
-// Outlined badge with icon
-
-
- Verified
-
-
-// Destructive badge
-Error
-
-// Success badge
-Complete
-
-// Warning badge
-Pending
-
-// Info badge
-
-
- Info
-
-
-// Dot badge
-
-
-
-
-// Small badge
-Pro
-
-// Large badge
-Verified
-```
-
-## Toggle
-
-### Sizes
-```tsx
-Small
-Medium
-Large
-```
-
-### Examples
-```tsx
-// Default toggle
-
- Toggle option
-
-
-// With icons
-
-
-
-
-
-
-
-// Small toggle
-
- Small toggle
-
-
-// Large toggle
-
- Large toggle
-
-```
-
-## ToggleGroup
-
-### Orientation
-```tsx
-...
-...
-```
-
-### Types
-```tsx
-// Single selection (radio-like)
-
- Option 1
- Option 2
-
-
-// Multiple selection (checkbox-like)
-
- Option 1
- Option 2
-
-```
-
-### Sizes
-```tsx
-...
-...
-```
-
-### Examples
-```tsx
-// Single selection
-
-
-
-
-
-
-
-
-
-
-
-
-// Multiple selection
-
-
- Bold
-
-
- Italic
-
-
- Underline
-
-
-
-// Vertical orientation
-
- Top
- Middle
- Bottom
-
-
-// Small size
-
- A
- B
-
-```
-
-## Switch
-
-### Size
-```tsx
-
-
-```
-
-### Examples
-```tsx
-// Default switch with label
-
-
- Enable notifications
-
-
-// Small switch
-
-
- Small option
-
-```
-
-## Typography
-
-### Variants
-```tsx
-// Display variants
-Hero Title
-Large Title
-Medium Title
-Small Title
-
-// Heading variants
-Page Title
-Section Title
-Subsection Title
-Component Title
-Small Title
-Micro Title
-
-// Subtitle variants
-Primary Subtitle
-Secondary Subtitle
-Tertiary Subtitle
-Quaternary Subtitle
-
-// Body variants
-Primary Body
-Secondary Body
-Tertiary Body
-
-// Label variants
-Primary Label
-Secondary Label
-```
-
-### Colors
-```tsx
-Primary text
-Secondary text
-Destructive text
-Success text
-Warning text
-Info text
-```
-
-### Examples
-```tsx
-// Display heading
-Welcome to LSD
-
-// Page heading
-Documentation
-
-// Section heading
-Getting Started
-
-// Subtitle
-Learn about LSD components
-
-// Body text
-
- LSD is a component library built on Radix UI primitives.
-
-
-// Secondary body
-
- Additional context information here.
-
-
-// Label
-Email Address
-
-// Destructive text
-
- This action cannot be undone.
-
-
-// Success text
-
- Changes saved successfully.
-
-```
-
-## Tabs
-
-### Sizes
-```tsx
-...
-...
-...
-```
-
-### Full Width
-```tsx
-...
-```
-
-### Examples
-```tsx
-// Default tabs
-
-
- Tab 1
- Tab 2
-
- Content 1
- Content 2
-
-
-// Small tabs
-
-
- Small
- Tab
-
- Content
-
-
-// Large tabs
-
-
- Large
- Tab
-
- Content
-
-
-// Full width tabs
-
-
- Full Width
- Tab 2
- Tab 3
-
- Content 1
-
-
-// Tabs with icons
-
-
-
-
- Info
-
-
-
- Settings
-
-
- Information content
- Settings content
-
-```
-
-## Accordion
-
-### Sizes
-```tsx
-...
-...
-...
-```
-
-### Examples
-```tsx
-// Default accordion
-
-
- Section 1
- Content for section 1
-
-
- Section 2
- Content for section 2
-
-
-
-// Small accordion
-
-
- Small
- Small content
-
-
-
-// Large accordion
-
-
- Large
- Large content
-
-
-
-// Multiple items open
-
-
- Section 1
- Content 1
-
-
- Section 2
- Content 2
-
-
-
-// Collapsible single mode
-
-
- Toggle Me
- Can close all items
-
-
-```
-
-## Sidebar
-
-### Menu Button Variants
-```tsx
-Default
-Outline
-```
-
-### Menu Button Sizes
-```tsx
-Default
-Small
-Large
-```
-
-### Examples
-```tsx
-// Default menu button
-
-
- Home
-
-
-// Active menu button
-
-
- Dashboard
-
-
-// Outline variant
-
-
- Settings
-
-
-// Small menu button
-
-
- Profile
-
-
-// With tooltip
-
-
- Shortcuts
-
-```
-
-## ButtonGroup
-
-### Orientation
-```tsx
-...
-...
-```
-
-### Examples
-```tsx
-// Horizontal button group
-
- Left
- Middle
- Right
-
-
-// Vertical button group
-
- Top
- Middle
- Bottom
-
-
-// Mixed buttons
-
- Save
- Cancel
-
-
-// With icons
-
-
-
-
-
-
-
-
-```
-
-## Menubar
-
-### Variants
-```tsx
-Default Item
-Delete
-```
-
-### Inset
-```tsx
-Indented Item
-Indented Label
-```
-
-### Examples
-```tsx
-// Simple menubar
-
-
- File
-
- New
- Open
-
- Quit
-
-
-
- Edit
-
- Undo
- Redo
-
-
-
-
-// With labels
-
-
- View
-
- Zoom
- Zoom In
- Zoom Out
-
- Display
- Full Screen
-
-
-
-
-// Inset items
-
-
- Options
-
- General
- Advanced
- Expert
-
-
-
-
-// With submenus
-
-
- Share
-
-
-
- Email
-
- Send as PDF
- Send as Link
-
-
-
-
-
-```
-
-## Label
-
-### Variants
-```tsx
-Email
-Optional
-```
-
-### Sizes
-```tsx
-Small
-Medium
-Large
-```
-
-### Examples
-```tsx
-// Default label
-Email Address
-
-// Secondary label
-Phone (Optional)
-
-// Small label
-Code
-
-// Large label
-Full Name
-
-// With disabled field
-
- Username
-
-
-```
-
-## InputGroupAddon
-
-### Alignment
-```tsx
-prefix
-suffix
-```
-
-### Examples
-```tsx
-// Prefix
-
-
-
-
-
-
-
-// Suffix
-
-
-
-
-
-
-
-// With text prefix
-
- https://
-
-
-
-// With keyboard shortcut
-
-
-
- ⌘K
-
-
-```
-
-## Alert
-
-### Variants
-```tsx
-Error
-Success
-Warning
-Info
-```
-
-### Examples
-```tsx
-// Destructive alert
-
-
- This action is destructive and cannot be undone.
-
-
-
-// Success alert
-
-
- Your changes have been saved successfully.
-
-
-
-// Warning alert
-
-
- Your account will expire in 3 days.
-
-
-
-// Info alert
-
-
- New features are available in the latest update.
-
-
-```
-
-## Types
-
-### Using VariantProps
-
-To extend component types with CVA variant props:
-
-```tsx
-import type { VariantProps } from 'class-variance-authority';
-import { buttonVariants } from '@/components/ui/button/types';
-
-type ButtonVariantProps = VariantProps;
-
-// ButtonVariantProps is:
-// {
-// variant?: 'filled' | 'outlined' | 'filled-rounded' | ...;
-// size?: 'sm' | 'md' | 'lg' | 'square-sm' | 'square-md' | 'square-lg';
-// }
-```
-
-### Extending Custom Props
-
-```tsx
-import type { VariantProps } from 'class-variance-authority';
-import { badgeVariants } from '@/components/ui/badge/types';
-
-interface CustomBadgeProps
- extends VariantProps {
- customProp?: string;
- onClick?: () => void;
-}
-
-function CustomBadge({
- variant = 'filled',
- size = 'md',
- customProp,
- onClick,
- ...props
-}: CustomBadgeProps) {
- return (
-
- {customProp}
-
- );
-}
-```
-
-### Combining with HTML Attributes
-
-```tsx
-import type { VariantProps } from 'class-variance-authority';
-import { typographyVariants } from '@/components/ui/typography/types';
-
-interface CustomHeadingProps
- extends React.HTMLAttributes,
- VariantProps {
- as?: React.ElementType;
-}
-```
-
-## CVA Reference Cards
-
-### Button Variants
-```
-filled - Primary action, solid background
-outlined - Secondary action, border only
-filled-rounded - Primary action with rounded corners
-outlined-rounded - Secondary action with rounded corners
-ghost - Subtle action, transparent background
-ghost-rounded - Subtle action with rounded corners
-link - Text only, minimal action
-destructive - Danger action, red styling
-destructive-rounded - Danger action with rounded corners
-success - Success action, green styling
-success-rounded - Success action with rounded corners
-```
-
-### Badge Variants
-```
-filled - Solid background color
-outlined - Border only, transparent background
-destructive - Red styling for errors
-success - Green styling for success
-warning - Yellow styling for warnings
-info - Blue styling for information
-dot - Small dot variant
-```
-
-### Toggle Sizes
-```
-sm - 32px height
-md - 40px height (default)
-lg - 48px height
-```
-
-### ToggleGroup Types
-```
-single - Radio-like behavior, one selection
-multiple - Checkbox-like behavior, multiple selections
-```
-
-### ToggleGroup Orientation
-```
-horizontal - Buttons arranged horizontally (default)
-vertical - Buttons arranged vertically
-```
-
-### Typography Variants
-```
-display1 - 5.5rem, 96px line-height
-display2 - 4rem, 72px line-height
-display3 - 3.5rem, 64px line-height
-display4 - 3rem, 56px line-height
-h1 - 2.5rem, 48px line-height (page title)
-h2 - 2rem, 40px line-height (section title)
-h3 - 1.75rem, 36px line-height
-h4 - 1.5rem, 32px line-height
-h5 - 1.25rem, 28px line-height
-h6 - 1rem, 24px line-height
-subtitle1 - 1.125rem, 24px line-height
-subtitle2 - 1rem, 24px line-height
-subtitle3 - 0.875rem, 20px line-height
-subtitle4 - 0.75rem, 16px line-height
-body1 - 1rem, 24px line-height (default)
-body2 - 0.875rem, 20px line-height
-body3 - 0.75rem, 16px line-height
-label1 - 0.875rem, 20px line-height
-label2 - 0.75rem, 16px line-height
-```
-
-### Typography Colors
-```
-primary - Primary text color
-secondary - Secondary text color
-destructive - Destructive (red) text color
-success - Success (green) text color
-warning - Warning (yellow) text color
-info - Info (blue) text color
-```
-
-### Tabs Sizes
-```
-sm - 32px height
-md - 40px height (default)
-lg - 48px height
-```
-
-### Accordion Sizes
-```
-sm - Small text and spacing (xs)
-md - Medium text and spacing (sm, default)
-lg - Large text and spacing (base)
-```
-
-### Sidebar Menu Button Variants
-```
-default - Hover background accent
-outline - Outline border with shadow
-```
-
-### Sidebar Menu Button Sizes
-```
-default - 32px height, sm text
-sm - 28px height, xs text
-lg - 48px height, sm text
-```
-
-### ButtonGroup Orientation
-```
-horizontal - Buttons arranged horizontally (default)
-vertical - Buttons arranged vertically
-```
-
-### MenubarItem Variants
-```
-default - Standard styling
-destructive - Red text styling
-```
-
-### Menubar Inset
-```
-true - Adds left padding (2rem)
-false - No padding (default)
-```
-
-### Label Variants
-```
-default - Primary text color
-secondary - Secondary text color
-```
-
-### Label Sizes
-```
-sm - 0.75rem, 16px line-height
-md - 0.875rem, 20px line-height (default)
-lg - 1rem, 24px line-height
-```
-
-### InputGroupAddon Alignment
-```
-inline-start - Left side (prefix, default)
-inline-end - Right side (suffix)
-```
-
-### Alert Variants
-```
-destructive - Red styling for errors
-success - Green styling for success
-warning - Yellow styling for warnings
-info - Blue styling for information
+# CVA (Class Variance Authority) Variant Patterns - LSD Codebase Reference
+
+## CVA Concept Overview
+
+CVA is a utility for managing component variants in a type-safe, composable way. It allows components to define multiple variant categories (e.g., visual style, size) that combine into className sets without conflicts.
+
+Key benefits:
+- Type-safe variant combinations
+- Conflict resolution through className merging
+- Composable variant definitions
+- Default values for each variant category
+
+## Component Reference
+
+### 1. Button
+**Variants**: filled, outlined, filled-rounded, outlined-rounded, link, ghost, ghost-rounded, destructive, destructive-rounded, success, success-rounded
+**Sizes**: sm, md, lg, square-sm, square-md, square-lg
+**Notes**: Most complete variant system; includes semantic (destructive, success), shape variants (rounded), and button-specific (square) sizes
+
+### 2. Badge
+**Variants**: filled, outlined, destructive, success, warning, info, dot
+**Sizes**: sm, md, lg
+**Notes**: Semantic variants aligned with alert types; includes dot variant for indicators
+
+### 3. Toggle
+**Sizes**: sm, md, lg
+**Pattern**: Uses `data-state="on"` attribute for highlight state instead of variant prop
+
+### 4. Label
+**Variants**: default, secondary
+**Sizes**: sm, md, lg
+**Notes**: Minimal variant set focused on visual weight
+
+### 5. Alert
+**Variants**: destructive, success, warning, info
+**Pattern**: Semantic-only variants for status communication
+
+### 6. InputGroupAddon
+**Variants**: Defined (specific to input grouping context)
+
+### 7. Tabs
+**Size**: sm, md, lg
+**Features**: fullWidth boolean prop
+**Variant Sets**: tabsListVariants, tabsTriggerVariants (nested variant system)
+
+### 8. Accordion
+**Size**: sm, md, lg
+**Variant Sets**: accordionTriggerVariants, accordionContentVariants (nested variant system)
+
+### 9. SidebarMenuButton
+**Variants**: default, outline
+**Sizes**: default, sm, lg
+**Notes**: Variant set specific to sidebar navigation context
+
+### 10. ButtonGroup
+**Variants**: orientation: horizontal, vertical
+**Pattern**: orientation-only variant, no visual styling variants
+
+### 11. Typography
+**Variants**: display1, display2, display3, display4, h1, h2, h3, h4, h5, h6, subtitle1, subtitle2, subtitle3, subtitle4, body1, body2, body3, label1, label2
+**Colors**: primary, secondary, destructive, success, warning, info
+**Pattern**: Hierarchical type scale with separate variant for semantic coloring
+
+### 12. Menubar
+**Pattern**: Multiple variant types for nested menu structure
+
+### 13. NavigationMenuTrigger
+**Pattern**: Uses navigationMenuTriggerStyle helper for variant application
+
+## Example Usage
+
+### Button Component
+```tsx
+import { cva } from "class-variance-authority";
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center font-medium transition-colors",
+ {
+ variants: {
+ variant: {
+ filled: "bg-primary text-primary-foreground hover:bg-primary/90",
+ outlined: "border border-primary text-primary hover:bg-primary/5",
+ ghost: "hover:bg-primary/5 text-primary",
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
+ },
+ size: {
+ sm: "h-8 px-3 text-sm rounded-md",
+ md: "h-10 px-4 text-base rounded-md",
+ lg: "h-12 px-6 text-lg rounded-md",
+ },
+ },
+ defaultVariants: {
+ variant: "filled",
+ size: "md",
+ },
+ }
+);
+
+// Usage
+Click me
+```
+
+### Badge Component
+```tsx
+const badgeVariants = cva(
+ "inline-flex items-center rounded-full px-2.5 py-0.5 font-medium",
+ {
+ variants: {
+ variant: {
+ filled: "bg-primary text-primary-foreground",
+ outlined: "border border-primary text-primary",
+ destructive: "bg-destructive text-destructive-foreground",
+ success: "bg-success text-success-foreground",
+ dot: "flex items-center gap-1.5",
+ },
+ size: {
+ sm: "text-xs px-2",
+ md: "text-sm",
+ lg: "text-base px-3",
+ },
+ },
+ defaultVariants: {
+ variant: "filled",
+ size: "md",
+ },
+ }
+);
+
+// Usage
+Active
+```
+
+### Typography Component
+```tsx
+const typographyVariants = cva("", {
+ variants: {
+ variant: {
+ h1: "text-4xl font-bold tracking-tight",
+ h2: "text-3xl font-semibold tracking-tight",
+ body1: "text-base leading-normal",
+ label1: "text-sm font-medium",
+ },
+ color: {
+ primary: "text-primary",
+ secondary: "text-muted-foreground",
+ destructive: "text-destructive",
+ },
+ },
+ defaultVariants: {
+ variant: "body1",
+ color: "primary",
+ },
+});
+
+// Usage
+Heading
```
## Common Patterns
-### Consistent Button Styling
-```tsx
-// Primary actions - filled
-Save
-Submit
-Create
-
-// Secondary actions - outlined
-Cancel
-Back
-Edit
-
-// Subtle actions - ghost
-Close
-Dismiss
-
-
-
-
-// Destructive actions - destructive
-Delete
-Disable
-
-// Success actions - success
-Confirm
-
-
-
-```
-
-### Badge Hierarchy
-```tsx
-// Prominent - filled
-New
-Pro
-
-// Subtle - outlined
-Info
-
-// Status - semantic
-Complete
-Pending
-Error
-Note
-```
-
-### Typography Hierarchy
-```tsx
-// Page
-Welcome
-Documentation
-Getting Started
-
-// Content
-Main content text
-
- Supporting information
-
-Form field label
-```
-
-## Important Notes
-
-- **ALWAYS** use built-in `variant` and `size` props instead of custom CSS
-- Variants provide consistent styling across components
-- Default variants are designed for most use cases
-- Use `destructive` variant only for dangerous/irreversible actions
-- Use semantic badge/alert variants (success, warning, info) to convey status
-- Typography variants follow a clear hierarchy from display to label
-- Size options (`sm`, `md`, `lg`) maintain consistent scaling
-- CVA components automatically handle focus, hover, and disabled states
-- Use `VariantProps` to type custom component extensions
-- Avoid custom `className` overrides - use variants instead
+### Semantic Variants
+Components communicate status through consistent semantic variant naming:
+- `destructive`: Error states, dangerous actions
+- `success`: Positive feedback, completed actions
+- `warning`: Cautionary states
+- `info`: Neutral information
+
+### Shape Variants
+Button component extends visual variants with shape modifiers:
+- `-rounded` suffix: Increased border-radius
+- Supports side-by-side use with visual variants (e.g., `filled-rounded`)
+
+### Nested Variant Systems
+Complex components expose multiple variant sets:
+- Tabs: `tabsListVariants`, `tabsTriggerVariants`
+- Accordion: `accordionTriggerVariants`, `accordionContentVariants`
+
+### Size Standardization
+Consistent size naming across components:
+- `sm`: Small (condensed)
+- `md`: Medium (default)
+- `lg`: Large (expanded)
+- Additional sizes: `square-*` for Button (square buttons)
+
+### Data Attribute Pattern
+State changes use data attributes instead of component variants:
+- Toggle: `data-state="on"` for active state
+- Allows dynamic styling without prop proliferation
+
+### Orientation Variant
+ButtonGroup demonstrates orientation as a variant type:
+- `horizontal`: Default row layout
+- `vertical`: Column layout
+
+## Implementation Guidelines
+
+1. **Define clear variant categories** (visual style, size, orientation)
+2. **Use semantic naming** for status-related variants
+3. **Provide sensible defaults** via `defaultVariants`
+4. **Compose variants** through compound variants if needed
+5. **Consider accessibility** in variant choices (color contrast, focus states)
diff --git a/skills/nipsys-lsd/references/icons.md b/skills/nipsys-lsd/references/icons.md
index 810a9fce..853cdad6 100644
--- a/skills/nipsys-lsd/references/icons.md
+++ b/skills/nipsys-lsd/references/icons.md
@@ -1,323 +1,45 @@
-# LSD Icon System
+# Icon Usage Patterns - LSD Components
-Complete icon system for @nipsys/lsd using Phosphor icons.
+## Import Pattern
-## Concept
-
-**ALWAYS** use Phosphor icons from `@phosphor-icons/react` for all icons in LSD components.
-
-## Icon Import Pattern
-
-```tsx
-// Standard import
-import { PlusIcon, ShareIcon, CheckIcon } from '@phosphor-icons/react';
-
-// Use in components
-
-
-```
-
-## Icon Weight Rules
-
-### Default Weight (No weight prop)
-Use for:
-- CheckIcon
-- PlusIcon
-
-```tsx
-
-
-```
-
-### Duotone Weight (`weight="duotone"`)
-Use for:
-- All other icons (ShareIcon, TrashIcon, DownloadIcon, etc.)
-- Icons in tooltips, badges, cards, alerts
-
-```tsx
-
-
-```
-
-## Common Icons
-
-### Action Icons
-```tsx
-import {
- PlusIcon, // Add, create new
- TrashIcon, // Delete, remove
- EditIcon, // Edit, modify
- ShareIcon, // Share, collaborate
- DownloadIcon, // Download, export
- UploadIcon, // Upload, import
- CopyIcon, // Copy, duplicate
-} from '@phosphor-icons/react';
-```
-
-### Navigation Icons
-```tsx
-import {
- ArrowRightIcon, // Next, continue
- ArrowLeftIcon, // Back, previous
- ArrowUpIcon, // Up, collapse
- ArrowDownIcon, // Down, expand
- CaretDownIcon, // Dropdown, select
- CaretRightIcon, // Submenu, nested
-} from '@phosphor-icons/react';
-```
-
-### Status Icons
-```tsx
-import {
- CheckIcon, // Success, completed (default weight)
- CheckCircleIcon, // Success, verified (duotone)
- WarningIcon, // Warning, alert
- ErrorIcon, // Error, failure
- InfoIcon, // Information, help
- QuestionIcon, // Question, tooltip
-} from '@phosphor-icons/react';
-```
-
-### UI Element Icons
-```tsx
-import {
- TextboxIcon, // Input, text field
- ListIcon, // List, menu
- GridIcon, // Grid, cards
- GearIcon, // Settings, configuration
- BellIcon, // Notifications
- SearchIcon, // Search, filter
- FilterIcon, // Filter options
- SortIcon, // Sort, order
- CalendarIcon, // Date, calendar
- ClockIcon, // Time, duration
- UserIcon, // User, person
- UsersIcon, // Users, team
- FolderIcon, // Folder, directory
- FileIcon, // File, document
- LinkIcon, // Link, URL
-} from '@phosphor-icons/react';
-```
-
-### Feedback Icons
-```tsx
-import {
- ThumbsUpIcon, // Like, approve
- ThumbsDownIcon, // Dislike, reject
- StarIcon, // Star, favorite
- HeartIcon, // Love, save
- BookmarkIcon, // Bookmark, save for later
-} from '@phosphor-icons/react';
-```
-
-## Icon Usage Patterns
-
-### Icons in Buttons
-```tsx
-// Icon only button
-
-
-
-// Icon + text button
-
-
- Add Item
-
-
-// Text before icon
-
- Save
-
-
-
-// Icon buttons with hover effects
-
-
-
-```
-
-### Icons in Cards
-```tsx
-// Card header with icon
-
-
-
- Document
-
-
-
-// Card content with icon
-
-
-
- April 24, 2026
-
-
-```
-
-### Icons in Alerts
-```tsx
-// Info alert
-
-
-
- Information message
-
-
-
-// Error alert
-
-
-
- Error message
-
-
-
-// Success alert
-
-
-
- Success message
-
-
-```
-
-### Icons in Badges
-```tsx
-
-
- New
-
-```
-
-### Icons with Tooltips
-```tsx
-
-
-
-
-
-
-
-```
-
-### Icons in Input Groups
-```tsx
-
-
-
-
-
-
-```
-
-### Icons in Avatars
-```tsx
-
-
-
-
-
-
-```
-
-### Icons in Navigation
+Icons are imported from `@phosphor-icons/react`:
```tsx
-// Sidebar menu items
-
-
-
- Dashboard
-
-
-
-// Tabs
-
-
- Overview
-
+import { XIcon, CheckIcon, MagnifyingGlassIcon } from '@phosphor-icons/react'
```
-## Icon Sizing
-
+Optional weight/dimension props:
```tsx
-// Small icon (16px)
-
-
-// Default/medium icon (24px)
-
-
-// Large icon (32px)
-
-
-// Extra large icon (48px)
-
+
```
-## Icon Colors
-
-Icons inherit text color by default:
-
-```tsx
-// Inherits text-primary
-
-
-
-// Inherits text-destructive
-
+## Common Icons & Use Cases
-// Custom color
-
+| Icon | Component/Use Case |
+|------|-------------------|
+| `XIcon` | Close buttons: Dialog, Sheet, Autocomplete, Badge |
+| `CheckIcon` | Selection indicators: Checkbox, DropdownMenuItem, SelectItem |
+| `CircleIcon` | Radio indicators: RadioGroupItem, DropdownMenuRadioItem |
+| `MagnifyingGlassIcon` | Search input: CommandInput |
+| `CaretRightIcon` | Submenu navigation |
+| `CaretDownIcon` | Dropdown triggers, accordions |
+| `CaretUpIcon` | Scroll buttons |
+| `CircleNotchIcon` | Loading spinners |
+| `SidebarSimpleIcon` | Sidebar trigger |
-// Hover effect
-
-
-
+## CRITICAL: Icon Suffix Rule
-// With CSS class
-
-```
-
-## Icon Rotation
-
-```tsx
-// Rotate 90 degrees
-
-
-// Rotate 180 degrees
-
-```
+**ALL icons MUST have "Icon" suffix**
-## Icon Reference Cards
+❌ `import { X, Check } from '@phosphor-icons/react'`
+✅ `import { XIcon, CheckIcon } from '@phosphor-icons/react'`
-### Default Weight (No prop)
-```
-CheckIcon - Success, completed
-PlusIcon - Add, create new
-```
+This is enforced throughout the LSD codebase. Always verify imports end with "Icon".
-### Duotone Weight (`weight="duotone"`)
-```
-ShareIcon - Share, collaborate
-TrashIcon - Delete, remove
-EditIcon - Edit, modify
-DownloadIcon - Download, export
-UploadIcon - Upload, import
-CopyIcon - Copy, duplicate
-CheckCircleIcon - Success, verified
-WarningIcon - Warning, alert
-ErrorIcon - Error, failure
-InfoIcon - Information, help
-QuestionIcon - Question, tooltip
-```
+## Finding Icons
-## Important Notes
+Browse available icons at: https://phosphoricons.com
-- **ALWAYS** use Phosphor icons from `@phosphor-icons/react`
-- Use `weight="duotone"` for all icons except CheckIcon and PlusIcon
-- Icons inherit text color, add `text-primary` or `text-destructive` if needed
-- Use appropriate spacing with icons and text: `gap-(--lsd-spacing-smaller)`
-- Icon-only buttons work well for toolbars and action menus
-- Use size prop for non-standard icon sizes
-- Consider accessibility - add `aria-label` to icon-only buttons
-- Icons should be meaningful and follow common UI patterns
+All Phosphor Icons are available. Names convert to PascalCase + Icon suffix:
+- `magnifying-glass` → `MagnifyingGlassIcon`
+- `caret-right` → `CaretRightIcon`
+- `sidebar-simple` → `SidebarSimpleIcon`
diff --git a/skills/nipsys-lsd/references/spacing.md b/skills/nipsys-lsd/references/spacing.md
index f1d2edd6..c9596963 100644
--- a/skills/nipsys-lsd/references/spacing.md
+++ b/skills/nipsys-lsd/references/spacing.md
@@ -1,204 +1,47 @@
-# LSD Spacing System
+## LSD Spacing System
-Complete spacing scale for @nipsys/lsd with usage patterns and examples.
+A 7-step scale for consistent spacing across all components.
-## Concept
+### Spacing Scale
-**CRITICAL:** Always use LSD spacing variables with `var()`, NEVER standard Tailwind spacing classes.
+| Variable Name | CSS Value | Pixels | Use Cases |
+|---------------|-----------|--------|-----------|
+| `--lsd-spacing-smallest` | 0.25rem | 4px | Tight spacing, icon text gaps |
+| `--lsd-spacing-smaller` | 0.5rem | 8px | Small spacing, adjacent elements |
+| `--lsd-spacing-small` | 0.75rem | 12px | Compact spacing, card headers |
+| `--lsd-spacing-base` | 1rem | 16px | Default spacing, padding |
+| `--lsd-spacing-large` | 1.25rem | 20px | Comfortable spacing, sections |
+| `--lsd-spacing-larger` | 1.5rem | 24px | Generous spacing, layout gaps |
+| `--lsd-spacing-largest` | 1.75rem | 28px | Maximum spacing, major sections |
-## The 7-Value Scale
+### Tailwind Integration
-| Variable | Value | Tailwind Equivalent | Use Case |
-|----------|-------|---------------------|----------|
-| `--lsd-spacing-smallest` | 0.25rem | `4px` / `p-1` / `gap-1` | Tight spacing, icon with text |
-| `--lsd-spacing-smaller` | 0.5rem | `8px` / `p-2` / `gap-2` | Default sibling spacing |
-| `--lsd-spacing-small` | 0.75rem | `12px` / `p-3` / `gap-3` | Medium gaps |
-| `--lsd-spacing-base` | 1rem | `16px` / `p-4` / `gap-4` | Section margins/padding |
-| `--lsd-spacing-large` | 1.25rem | `20px` / `p-5` / `gap-5` | Large gaps |
-| `--lsd-spacing-larger` | 1.5rem | `24px` / `p-6` / `gap-6` | Section spacing |
-| `--lsd-spacing-largest` | 1.75rem | `28px` / `p-7` / `gap-7` | Maximum spacing |
+Use parentheses syntax to reference LSD variables:
-## Usage Syntax
-
-### Margin
-```tsx
-// Single direction
-className="mt-(--lsd-spacing-base)" // margin-top
-className="mb-(--lsd-spacing-smaller)" // margin-bottom
-className="ml-(--lsd-spacing-small)" // margin-left
-className="mr-(--lsd-spacing-base)" // margin-right
-
-// Multiple directions
-className="mx-(--lsd-spacing-base)" // margin-x (left & right)
-className="my-(--lsd-spacing-base)" // margin-y (top & bottom)
-className="m-(--lsd-spacing-large)" // margin (all directions)
-```
-
-### Padding
-```tsx
-// Single direction
-className="pt-(--lsd-spacing-base)" // padding-top
-className="pb-(--lsd-spacing-smaller)" // padding-bottom
-className="pl-(--lsd-spacing-small)" // padding-left
-className="pr-(--lsd-spacing-base)" // padding-right
-
-// Multiple directions
-className="px-(--lsd-spacing-base)" // padding-x
-className="py-(--lsd-spacing-base)" // padding-y
-className="p-(--lsd-spacing-large)" // padding (all directions)
-```
-
-### Gap
-```tsx
-// Flexbox gap
-className="flex gap-(--lsd-spacing-base)"
-
-// Grid gap
-className="grid grid-cols-2 gap-(--lsd-spacing-base)"
-
-// Row/column gap
-className="grid gap-x-(--lsd-spacing-base) gap-y-(--lsd-spacing-smaller)"
-```
-
-## Common Patterns
-
-### Icons with Text
```tsx
-// Icon + text in button
-
-
- Add Item
-
+// Padding
+
+
-// Icon + text in list item
-
-
- Completed
-
-```
-
-### Card Spacing
-```tsx
-// Card header padding
-
-
-// Card content padding
-
-```
-
-### Form Field Spacing
-```tsx
-// Label + input gap
-
- Email
-
-
+// Margin
+
+
-// Form field spacing
-
+// Gap
+
+
```
-### Section Spacing
-```tsx
-// Between sections
-
-
-// Section margins
-
-```
-
-### Button Group Spacing
-```tsx
-// Buttons with gap
-
- Save
- Cancel
-
-```
-
-### Table Cell Spacing
-```tsx
-// Table cell padding
-
-```
-
-### Dialog Content Spacing
-```tsx
-// Dialog content padding
-
-```
-
-## Responsive Spacing
-
-Tailwind's responsive prefixes work with LSD variables:
-
-```tsx
-// Different spacing on different breakpoints
-
-
-// Gap responsive
-
-```
-
-## Negative Spacing
-
-```tsx
-// Pull elements closer
-
-```
-
-## Examples from LSD components
-
-### Alert Component
-```tsx
-// Icon + text gap
-
-```
-
-### Card Component
-```tsx
-// Header bottom margin
-
-
-// Content zero padding
-
-```
-
-### Badge Component
-```tsx
-// Icon + badge text
-
-```
-
-## Reference Cards
-
-### Spacing Decision Tree
-```
-Tight spacing (icon + text) → --lsd-spacing-smallest (4px)
-Default sibling spacing → --lsd-spacing-smaller (8px)
-Medium gaps → --lsd-spacing-small (12px)
-Section margins/padding → --lsd-spacing-base (16px)
-Large gaps → --lsd-spacing-large (20px)
-Section spacing → --lsd-spacing-larger (24px)
-Maximum spacing → --lsd-spacing-largest (28px)
-```
+### Common Patterns
-### Quick Reference
```
-Tightest: --lsd-spacing-smallest (4px) [icon with text]
-Tighter: --lsd-spacing-smaller (8px) [default sibling]
-Small: --lsd-spacing-small (12px) [medium gaps]
-Base: --lsd-spacing-base (16px) [section padding]
-Large: --lsd-spacing-large (20px) [large gaps]
-Larger: --lsd-spacing-larger (24px) [section spacing]
-Largest: --lsd-spacing-largest (28px) [maximum spacing]
+Component padding: p-(--lsd-spacing-base)
+Section spacing: gap-(--lsd-spacing-large)
+Header padding: px-(--lsd-spacing-large) py-(--lsd-spacing-smaller)
+List item spacing: py-(--lsd-spacing-smaller)
+Critical rule: ALWAYS use LSD variables, NEVER Tailwind numbers
```
-## Important Notes
+### Critical Rule
-- **ALWAYS** use `var()` syntax in className: `className="mt-(--lsd-spacing-base)"`
-- **NEVER** use Tailwind numbers: `className="mt-4"`
-- The scale is intentionally small (7 values) to maintain consistency
-- Spacing variables are defined in CSS custom properties
-- All LSD components use these spacing variables internally
-- Use responsive prefixes when needed for different screen sizes
+**Always use LSD spacing variables. Never use Tailwind arbitrary values (like p-4, gap-8).**
diff --git a/skills/nipsys-lsd/references/theme-variables.md b/skills/nipsys-lsd/references/theme-variables.md
new file mode 100644
index 00000000..412437dd
--- /dev/null
+++ b/skills/nipsys-lsd/references/theme-variables.md
@@ -0,0 +1,118 @@
+# LSD Theme Variables Reference
+
+## Theme Mechanism
+
+LSD uses a two-layer theme system combining **color modes** (light/dark) with **accent themes**. Both work simultaneously—elements have both a mode and an accent theme.
+
+## Mode Control
+
+Color modes are controlled via CSS classes on the `` or `` element:
+
+```tsx
+// Light mode (default)
+
+
+// Dark mode
+
+
+// Toggle between modes
+
+```
+
+## Accent Theme Control
+
+Accent themes are set via the `data-theme` attribute on any HTML element. Child elements inherit their parent's accent theme.
+
+```tsx
+// Set global accent theme
+
+
+// Set section-specific accent theme
+
+
+// Override for a specific component
+Custom accent
+```
+
+## Built-in Accent Themes
+
+| Theme | Style |
+|-------|-------|
+| `monochrome` | Black/white accent (default) |
+| `teal` | Teal-based accent |
+| `nord` | Cool blue-gray Nordic palette |
+| `terracotta` | Warm earth tones |
+| `catppuccin` | Pastel Catppuccin palette |
+
+## CSS Variable Categories
+
+### Structural Variables
+- `--radius`: Base border radius (0.625rem / 10px)
+- Radius variants: `--radius-sm`, `--radius-md`, `--radius-lg`, `--radius-xl`
+
+### Typography Variables
+- `--lsd-font-family`: Active font family (mono/sans-serif/serif)
+- Font utility classes: `font-mono`, `font-sans`, `font-serif` (aliases as `font-sans-serif`)
+
+### Color Variables
+Full color token list available in [colors.md](./colors.md):
+- Primary: `--lsd-primary`, `--lsd-primary-foreground`
+- Text: `--lsd-text-primary`, `--lsd-text-secondary`
+- Surface/Border: `--lsd-surface`, `--lsd-border`
+- Icon: `--lsd-icon-primary`, `--lsd-icon-secondary`
+- Semantic: `--lsd-destructive`, `--lsd-success`, `--lsd-warning`, `--lsd-info`
+
+### Spacing Variables
+- `--lsd-spacing-smallest` to `--lsd-spacing-largest`: 0.25rem to 1.75rem
+
+## Custom Theme Creation
+
+Create a custom accent theme by defining CSS variables scoped to a specific `data-theme` value:
+
+```css
+:root[data-theme="mytheme"] {
+ --lsd-primary: #6366f1;
+ --lsd-primary-foreground: #ffffff;
+ --lsd-border: #818cf8;
+}
+
+[data-theme="mytheme"] .dark {
+ --lsd-primary: #818cf8;
+ --lsd-primary-foreground: #000000;
+ --lsd-border: #6366f1;
+}
+```
+
+Then apply it to any element:
+
+```tsx
+
+
+ Custom Theme Button
+
+
+```
+
+## Theme Inheritance
+
+Themes cascade hierarchically:
+- Parent elements set the mode via CSS class
+- Parent elements set accent theme via `data-theme`
+- Child elements inherit both unless overridden
+
+```tsx
+// Parent sets dark mode + teal theme
+
+ {/* Inherits dark + teal by default */}
+ Dark teal text
+
+ {/* Keeps dark mode, switches to catppuccin accent */}
+
+
+```
+
+ accents apply at any scope—use broadly for page-level theming or narrowly for component-specific customization.
diff --git a/skills/nipsys-lsd/references/typography.md b/skills/nipsys-lsd/references/typography.md
deleted file mode 100644
index 570b0224..00000000
--- a/skills/nipsys-lsd/references/typography.md
+++ /dev/null
@@ -1,251 +0,0 @@
-# LSD Typography System
-
-Complete typography system for @nipsys/lsd with variants, sizing, and responsive behavior.
-
-## Concept
-
-Use the Typography component for all text elements in LSD components. The Typography component provides consistent variants for headings, subtitles, body text, and labels.
-
-## Typography Variants
-
-### Headings
-```tsx
- // Page titles (largest)
- // Section titles
- // Subsection titles
- // Card titles
- // Small headings
-```
-
-### Subtitles
-```tsx
- // Primary subtitle
- // Secondary subtitle
-```
-
-### Body Text
-```tsx
- // Main content text (default)
- // Smaller text, metadata, captions
-```
-
-### Labels
-```tsx
- // Form labels, inline labels
- // Small labels, helper text
-```
-
-## Usage Patterns
-
-### Page Structure
-```tsx
-// Page title
-
-// Internally uses h1 and subtitle1
-
-// Section heading
-
- Content here...
-
-// Internally uses h2
-```
-
-### Card Content
-```tsx
-
-
- // Uses h4 internally
- Card Title
-
- // Uses body2 internally
- Card description
-
-
-
- Main content
-
-
-```
-
-### Form Labels
-```tsx
-
- Email Address
-
-
-```
-
-### Alert Messages
-```tsx
-
-
-
-
- Your changes have been saved successfully
-
-
-
-```
-
-### Metadata and Captions
-```tsx
-
-
-
- John Doe
- john@example.com
-
-
-```
-
-## Typography Hierarchy
-
-### Document Structure
-```
-h1 → Page titles (PageHeader)
-h2 → Section titles (PageSection)
-h3 → Subsection titles
-h4 → Card titles (CardTitle)
-h5 → Small headings, group titles
-subtitle1 → Subtitles, descriptions
-body1 → Main content (default)
-body2 → Secondary text, metadata
-label1 → Form labels, inline labels
-label2 → Small labels, helper text
-```
-
-### Visual Hierarchy Example
-```tsx
-
-
Recent Activity
-
- Here's what's been happening in your workspace.
-
-
-
-
- Document A
- Updated 2 hours ago
-
-
-
- Document B
- Updated yesterday
-
-
-
-```
-
-## Common Patterns
-
-### Button with Text
-```tsx
-
-
- Add Item
-
-```
-
-### Tooltip Content
-```tsx
-Learn more }>
-
-
-```
-
-### Table Cell Content
-```tsx
-
- John Doe
-
-
- john@example.com
-
-```
-
-### Dialog Content
-```tsx
-
-
-
- Confirm Action
-
-
-
- Are you sure you want to proceed?
-
-
-
-
-```
-
-### Empty State
-```tsx
-
-
- No items found
-
- Try adjusting your search or filters
-
-
-```
-
-## Typography with Modifiers
-
-### Inline Text
-```tsx
-
- This is bold and italic text.
-
-```
-
-### Truncation
-```tsx
-
- This text will be truncated if it's too long...
-
-```
-
-### Line Numbers
-```tsx
-
- This text will be limited to 2 lines with ellipsis.
-
-```
-
-## Typography Reference Cards
-
-### Heading Variants
-```
-h1 → Page titles (PageHeader)
-h2 → Section titles (PageSection)
-h3 → Subsection titles
-h4 → Card titles
-h5 → Small headings
-```
-
-### Body Variants
-```
-subtitle1 → Primary subtitle
-subtitle2 → Secondary subtitle
-body1 → Main content (default)
-body2 → Smaller text, metadata
-```
-
-### Label Variants
-```
-label1 → Form labels, inline labels
-label2 → Small labels, helper text
-```
-
-## Important Notes
-
-- **ALWAYS** use the Typography component for text (don't use raw `h1`, `p`, `span` tags directly)
-- PageHeader and PageSection components internally use h1/h2
-- CardTitle and CardDescription internally use h4/body2
-- body1 is the default for main content text
-- body2 is for metadata, captions, and secondary information
-- label1 and label2 are for form labels and helper text
-- Typography variants automatically scale with the LSD design system
-- Headings include semantic HTML elements (`h1`-`h5`)
-- All text uses `text-primary` color by default (see colors.md)