You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Set up Storybook with interactive component playgrounds for all 25+ exported components. This is Phase 2 — Phase 1 (markdown docs) should be merged first but this can proceed independently.
Scope
Files to create
Storybook config (deterministic setup, no interactive wizard)
Stories using useToast render within ToastProvider decorator
Stories using useTheme render within ThemeProvider decorator
No third-party dependencies in examples (inline SVGs only)
pnpm build-storybook succeeds
@storybook/addon-storysource shows source code inline for each story
Notes
Phase 1 (markdown docs) is tracked separately. This can proceed independently.
@storybook/addon-storysource eliminates the need for manual "code preview" sections — source is shown automatically in the UI.
Radix-wrapped components (Avatar, DropdownMenu, Select, etc.) expose all underlying Radix props via React.ComponentProps in argTypes so users can see the full API surface.
Goal
Set up Storybook with interactive component playgrounds for all 25+ exported components. This is Phase 2 — Phase 1 (markdown docs) should be merged first but this can proceed independently.
Scope
Files to create
Storybook config (deterministic setup, no interactive wizard)
.storybook/main.ts— Vite bundler, CSS modules support,@tomny-dev/uzialias, essential addons.storybook/preview.tsx— ThemeProvider decorator (light/blue default), ToastProvider decorator for feedback stories, CSS importtsconfig.storybook.json— TypeScript config for StorybookStory files (14 files, one per component/group)
src/components/button/Button.stories.tsx— All 7 variants × 5 sizes, asChild, anchor variantsrc/components/avatar/Avatar.stories.tsx— 4 sizes, image+fallback composition, fallback statessrc/components/card/Card.stories.tsx— 3 tones × 4 padding presets, interactive, semantic elementssrc/components/pill/Pill.stories.tsx— 5 tones × 2 sizes, icon variant, element typessrc/components/modal/Modal.stories.tsx— 4 sizes, controlled open/close pattern, ModalOverlaysrc/components/alert/Alert.stories.tsx— 4 tones with sample contentsrc/components/toast/Toast.stories.tsx— useToast hook with trigger buttons, action/toast typessrc/components/skeleton/Skeleton.stories.tsx— width/height combos, radius presets, loading card layoutsrc/components/progress/Progress.stories.tsx— 4 tones, value range (0-100), aria-label examplessrc/components/input/Input.stories.tsx— Input types, Label pairing, disabled/required states, Checkbox+Label form groupsrc/components/select/Select.stories.tsx— Options array, controlled state, placeholder, disabledsrc/components/multi-select/MultiSelect.stories.tsx— Checkbox menu, chip display, overflow behaviorsrc/components/segmented-toggle/SegmentedToggle.stories.tsx— View toggle, disabled options, custom labelssrc/components/top-bar/TopBar.stories.tsx— Layout variants (brand left/center, sticky/static, with theme toggle)src/components/theme-toggle-button/ThemeToggleButton.stories.tsx— Icon/text variants, inside TopBarsrc/components/sidebar-nav/SidebarNav.stories.tsx— Flat/sectioned nav, active detection, collapsed state, icons/badgessrc/components/app-shell/AppShell.stories.tsx— Full dashboard layout, responsive sidebar, custom widthsrc/components/dropdown-menu/DropdownMenu.stories.tsx— 13-component ecosystem: basic menu, checkbox items, radio group, separator, nested sub-menus, destructive variantsrc/components/theme/Theme.stories.tsx— Theme rendering (light/dark), 6 accent palettes, controlled vs uncontrolled, full theme switcher UIFiles to update
package.json— Addpnpm storybookandpnpm build-storybookscriptsStorybook configuration
@storybook/addon-vite)@storybook/addon-essentials,@storybook/addon-links,@storybook/addon-storysourceThemeProviderwrapping all stories (default: light theme, blue accent)ToastProviderwrapping feedback component storiesimport "@tomny-dev/uzi/styles.css"in preview.tsxdata-uzi-themeattribute on documentElementAcceptance criteria
pnpm storybook) with no errorssrc/components/<name>/useToastrender within ToastProvider decoratoruseThemerender within ThemeProvider decoratorpnpm build-storybooksucceeds@storybook/addon-storysourceshows source code inline for each storyNotes
@storybook/addon-storysourceeliminates the need for manual "code preview" sections — source is shown automatically in the UI.React.ComponentPropsin argTypes so users can see the full API surface.SidebarNav.matchStrategydefaults to"prefix";"most-specific"is an opt-in for parent+child routes (related to issue SidebarNav: opt-in for most-specific active matching (parent + child both highlight) #8).