@neynar/ui 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +195 -0
- package/dist/components/ui/accordion.d.ts +229 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +247 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert.d.ts +187 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +94 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/avatar.d.ts +244 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +163 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +281 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +129 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/calendar.d.ts +169 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/card.d.ts +365 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/carousel.d.ts +369 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/chart.d.ts +442 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/checkbox.d.ts +88 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/collapsible.d.ts +182 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/combobox.d.ts +270 -0
- package/dist/components/ui/combobox.d.ts.map +1 -0
- package/dist/components/ui/command.d.ts +355 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/container.d.ts +102 -0
- package/dist/components/ui/container.d.ts.map +1 -0
- package/dist/components/ui/context-menu.d.ts +339 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/date-picker.d.ts +145 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +322 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/drawer.d.ts +154 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +349 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/empty-state.d.ts +133 -0
- package/dist/components/ui/empty-state.d.ts.map +1 -0
- package/dist/components/ui/hover-card.d.ts +109 -0
- package/dist/components/ui/hover-card.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +89 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +93 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/menubar.d.ts +306 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +318 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/pagination.d.ts +343 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/popover.d.ts +178 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/progress.d.ts +64 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/radio-group.d.ts +144 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/resizable.d.ts +164 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +82 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/select.d.ts +316 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/separator.d.ts +80 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/sheet.d.ts +346 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sidebar.d.ts +1561 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -0
- package/dist/components/ui/skeleton.d.ts +66 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/slider.d.ts +95 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/sonner.d.ts +101 -0
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/components/ui/stack.d.ts +192 -0
- package/dist/components/ui/stack.d.ts.map +1 -0
- package/dist/components/ui/stories/accordion.stories.d.ts +71 -0
- package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/alert-dialog.stories.d.ts +39 -0
- package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/alert.stories.d.ts +48 -0
- package/dist/components/ui/stories/alert.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts +53 -0
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/avatar.stories.d.ts +49 -0
- package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/badge.stories.d.ts +64 -0
- package/dist/components/ui/stories/badge.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/breadcrumb.stories.d.ts +27 -0
- package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/button.stories.d.ts +92 -0
- package/dist/components/ui/stories/button.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/calendar.stories.d.ts +94 -0
- package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/card.stories.d.ts +29 -0
- package/dist/components/ui/stories/card.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/carousel.stories.d.ts +42 -0
- package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/chart.stories.d.ts +51 -0
- package/dist/components/ui/stories/chart.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/checkbox.stories.d.ts +72 -0
- package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/cn.stories.d.ts +19 -0
- package/dist/components/ui/stories/cn.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/collapsible.stories.d.ts +51 -0
- package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/colors.stories.d.ts +31 -0
- package/dist/components/ui/stories/colors.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/combobox.stories.d.ts +89 -0
- package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/command.stories.d.ts +69 -0
- package/dist/components/ui/stories/command.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/container.stories.d.ts +42 -0
- package/dist/components/ui/stories/container.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/context-menu.stories.d.ts +32 -0
- package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/date-picker.stories.d.ts +67 -0
- package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/dialog.stories.d.ts +48 -0
- package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/drawer.stories.d.ts +33 -0
- package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts +31 -0
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/empty-state.stories.d.ts +74 -0
- package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/hover-card.stories.d.ts +35 -0
- package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/input.stories.d.ts +69 -0
- package/dist/components/ui/stories/input.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/label.stories.d.ts +47 -0
- package/dist/components/ui/stories/label.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/menubar.stories.d.ts +39 -0
- package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/navigation-menu.stories.d.ts +44 -0
- package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/pagination.stories.d.ts +33 -0
- package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/popover.stories.d.ts +36 -0
- package/dist/components/ui/stories/popover.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/progress.stories.d.ts +38 -0
- package/dist/components/ui/stories/progress.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/radio-group.stories.d.ts +76 -0
- package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/resizable.stories.d.ts +49 -0
- package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/scroll-area.stories.d.ts +35 -0
- package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/select.stories.d.ts +51 -0
- package/dist/components/ui/stories/select.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/separator.stories.d.ts +58 -0
- package/dist/components/ui/stories/separator.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/sheet.stories.d.ts +43 -0
- package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/sidebar.stories.d.ts +60 -0
- package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/skeleton.stories.d.ts +42 -0
- package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/slider.stories.d.ts +99 -0
- package/dist/components/ui/stories/slider.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/sonner.stories.d.ts +9 -0
- package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/stack.stories.d.ts +39 -0
- package/dist/components/ui/stories/stack.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/switch.stories.d.ts +71 -0
- package/dist/components/ui/stories/switch.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/table.stories.d.ts +40 -0
- package/dist/components/ui/stories/table.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/tabs.stories.d.ts +62 -0
- package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/text-field.stories.d.ts +78 -0
- package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/textarea.stories.d.ts +57 -0
- package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/theme-toggle.stories.d.ts +71 -0
- package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/theme.stories.d.ts +51 -0
- package/dist/components/ui/stories/theme.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/toggle-group.stories.d.ts +71 -0
- package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/toggle.stories.d.ts +78 -0
- package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/tooltip.stories.d.ts +37 -0
- package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/typography.stories.d.ts +137 -0
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/use-mobile.stories.d.ts +20 -0
- package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/use-theme.stories.d.ts +23 -0
- package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -0
- package/dist/components/ui/switch.d.ts +84 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/table.d.ts +321 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/tabs.d.ts +260 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/text-field.d.ts +157 -0
- package/dist/components/ui/text-field.d.ts.map +1 -0
- package/dist/components/ui/textarea.d.ts +84 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/theme-toggle.d.ts +105 -0
- package/dist/components/ui/theme-toggle.d.ts.map +1 -0
- package/dist/components/ui/theme.d.ts +110 -0
- package/dist/components/ui/theme.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +133 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle.d.ts +84 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/tooltip.d.ts +202 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/typography.d.ts +287 -0
- package/dist/components/ui/typography.d.ts.map +1 -0
- package/dist/hooks/use-mobile.d.ts +74 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-theme.d.ts +142 -0
- package/dist/hooks/use-theme.d.ts.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27498 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +43 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/docs/llm/colors.md +273 -0
- package/docs/llm/components/buttons.md +68 -0
- package/docs/llm/components/cards.md +53 -0
- package/docs/llm/components/display.md +134 -0
- package/docs/llm/components/feedback.md +96 -0
- package/docs/llm/components/forms.md +90 -0
- package/docs/llm/components/layout.md +59 -0
- package/docs/llm/components/menus.md +70 -0
- package/docs/llm/components/navigation.md +80 -0
- package/docs/llm/components/overlays.md +83 -0
- package/docs/llm/components/tables.md +73 -0
- package/docs/llm/components/typography.md +199 -0
- package/docs/llm/components/utilities.md +114 -0
- package/docs/llm/guide.md +165 -0
- package/llms.txt +122 -0
- package/package.json +104 -0
- package/src/components/ui/accordion.tsx +285 -0
- package/src/components/ui/alert-dialog.tsx +387 -0
- package/src/components/ui/alert.tsx +243 -0
- package/src/components/ui/aspect-ratio.tsx +99 -0
- package/src/components/ui/avatar.tsx +288 -0
- package/src/components/ui/badge.tsx +205 -0
- package/src/components/ui/breadcrumb.tsx +378 -0
- package/src/components/ui/button.tsx +195 -0
- package/src/components/ui/calendar.tsx +371 -0
- package/src/components/ui/card.tsx +447 -0
- package/src/components/ui/carousel.tsx +624 -0
- package/src/components/ui/chart.tsx +802 -0
- package/src/components/ui/checkbox.tsx +113 -0
- package/src/components/ui/collapsible.tsx +207 -0
- package/src/components/ui/combobox.tsx +373 -0
- package/src/components/ui/command.tsx +518 -0
- package/src/components/ui/container.tsx +114 -0
- package/src/components/ui/context-menu.tsx +563 -0
- package/src/components/ui/date-picker.tsx +213 -0
- package/src/components/ui/dialog.tsx +447 -0
- package/src/components/ui/drawer.tsx +273 -0
- package/src/components/ui/dropdown-menu.tsx +578 -0
- package/src/components/ui/empty-state.tsx +145 -0
- package/src/components/ui/hover-card.tsx +144 -0
- package/src/components/ui/input.tsx +106 -0
- package/src/components/ui/label.tsx +110 -0
- package/src/components/ui/menubar.tsx +553 -0
- package/src/components/ui/navigation-menu.tsx +471 -0
- package/src/components/ui/pagination.tsx +456 -0
- package/src/components/ui/popover.tsx +216 -0
- package/src/components/ui/progress.tsx +88 -0
- package/src/components/ui/radio-group.tsx +183 -0
- package/src/components/ui/resizable.tsx +209 -0
- package/src/components/ui/scroll-area.tsx +132 -0
- package/src/components/ui/select.tsx +485 -0
- package/src/components/ui/separator.tsx +101 -0
- package/src/components/ui/sheet.tsx +495 -0
- package/src/components/ui/sidebar.tsx +2211 -0
- package/src/components/ui/skeleton.tsx +76 -0
- package/src/components/ui/slider.tsx +147 -0
- package/src/components/ui/sonner.tsx +120 -0
- package/src/components/ui/stack.tsx +180 -0
- package/src/components/ui/stories/accordion.stories.tsx +429 -0
- package/src/components/ui/stories/alert-dialog.stories.tsx +519 -0
- package/src/components/ui/stories/alert.stories.tsx +228 -0
- package/src/components/ui/stories/aspect-ratio.stories.tsx +200 -0
- package/src/components/ui/stories/avatar.stories.tsx +317 -0
- package/src/components/ui/stories/badge.stories.tsx +260 -0
- package/src/components/ui/stories/breadcrumb.stories.tsx +482 -0
- package/src/components/ui/stories/button.stories.tsx +266 -0
- package/src/components/ui/stories/calendar.stories.tsx +375 -0
- package/src/components/ui/stories/card.stories.tsx +308 -0
- package/src/components/ui/stories/carousel.stories.tsx +328 -0
- package/src/components/ui/stories/chart.stories.tsx +430 -0
- package/src/components/ui/stories/checkbox.stories.tsx +297 -0
- package/src/components/ui/stories/cn.stories.tsx +433 -0
- package/src/components/ui/stories/collapsible.stories.tsx +256 -0
- package/src/components/ui/stories/colors.stories.tsx +502 -0
- package/src/components/ui/stories/combobox.stories.tsx +301 -0
- package/src/components/ui/stories/command.stories.tsx +632 -0
- package/src/components/ui/stories/container.stories.tsx +250 -0
- package/src/components/ui/stories/context-menu.stories.tsx +446 -0
- package/src/components/ui/stories/date-picker.stories.tsx +378 -0
- package/src/components/ui/stories/dialog.stories.tsx +535 -0
- package/src/components/ui/stories/drawer.stories.tsx +364 -0
- package/src/components/ui/stories/dropdown-menu.stories.tsx +374 -0
- package/src/components/ui/stories/empty-state.stories.tsx +244 -0
- package/src/components/ui/stories/hover-card.stories.tsx +355 -0
- package/src/components/ui/stories/input.stories.tsx +289 -0
- package/src/components/ui/stories/label.stories.tsx +294 -0
- package/src/components/ui/stories/menubar.stories.tsx +764 -0
- package/src/components/ui/stories/navigation-menu.stories.tsx +539 -0
- package/src/components/ui/stories/pagination.stories.tsx +604 -0
- package/src/components/ui/stories/popover.stories.tsx +392 -0
- package/src/components/ui/stories/progress.stories.tsx +218 -0
- package/src/components/ui/stories/radio-group.stories.tsx +400 -0
- package/src/components/ui/stories/resizable.stories.tsx +417 -0
- package/src/components/ui/stories/scroll-area.stories.tsx +180 -0
- package/src/components/ui/stories/select.stories.tsx +389 -0
- package/src/components/ui/stories/separator.stories.tsx +192 -0
- package/src/components/ui/stories/sheet.stories.tsx +468 -0
- package/src/components/ui/stories/sidebar.stories.tsx +731 -0
- package/src/components/ui/stories/skeleton.stories.tsx +216 -0
- package/src/components/ui/stories/slider.stories.tsx +321 -0
- package/src/components/ui/stories/sonner.stories.tsx +373 -0
- package/src/components/ui/stories/stack.stories.tsx +222 -0
- package/src/components/ui/stories/switch.stories.tsx +202 -0
- package/src/components/ui/stories/table.stories.tsx +541 -0
- package/src/components/ui/stories/tabs.stories.tsx +544 -0
- package/src/components/ui/stories/text-field.stories.tsx +280 -0
- package/src/components/ui/stories/textarea.stories.tsx +245 -0
- package/src/components/ui/stories/theme-toggle.stories.tsx +275 -0
- package/src/components/ui/stories/theme.stories.tsx +412 -0
- package/src/components/ui/stories/toggle-group.stories.tsx +337 -0
- package/src/components/ui/stories/toggle.stories.tsx +325 -0
- package/src/components/ui/stories/tooltip.stories.tsx +444 -0
- package/src/components/ui/stories/typography.stories.tsx +1586 -0
- package/src/components/ui/stories/use-mobile.stories.tsx +420 -0
- package/src/components/ui/stories/use-theme.stories.tsx +531 -0
- package/src/components/ui/switch.tsx +106 -0
- package/src/components/ui/table.tsx +424 -0
- package/src/components/ui/tabs.tsx +316 -0
- package/src/components/ui/text-field.tsx +206 -0
- package/src/components/ui/textarea.tsx +98 -0
- package/src/components/ui/theme-toggle.tsx +185 -0
- package/src/components/ui/theme.tsx +148 -0
- package/src/components/ui/toggle-group.tsx +196 -0
- package/src/components/ui/toggle.tsx +115 -0
- package/src/components/ui/tooltip.tsx +253 -0
- package/src/components/ui/typography.tsx +468 -0
- package/src/hooks/use-mobile.ts +91 -0
- package/src/hooks/use-theme.ts +319 -0
- package/src/index.ts +77 -0
- package/src/lib/utils.ts +57 -0
- package/src/styles/globals.css +160 -0
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Settings, User, Bell, Menu, HelpCircle, Check } from "lucide-react";
|
|
4
|
+
import {
|
|
5
|
+
Sheet,
|
|
6
|
+
SheetClose,
|
|
7
|
+
SheetContent,
|
|
8
|
+
SheetDescription,
|
|
9
|
+
SheetFooter,
|
|
10
|
+
SheetHeader,
|
|
11
|
+
SheetTitle,
|
|
12
|
+
SheetTrigger,
|
|
13
|
+
} from "../sheet";
|
|
14
|
+
import { Button } from "../button";
|
|
15
|
+
import { Input } from "../input";
|
|
16
|
+
import { Label } from "../label";
|
|
17
|
+
import { Textarea } from "../textarea";
|
|
18
|
+
import { Switch } from "../switch";
|
|
19
|
+
import { Separator } from "../separator";
|
|
20
|
+
|
|
21
|
+
const meta = {
|
|
22
|
+
title: "Overlays/Sheet",
|
|
23
|
+
component: Sheet,
|
|
24
|
+
parameters: {
|
|
25
|
+
layout: "centered",
|
|
26
|
+
docs: {
|
|
27
|
+
description: {
|
|
28
|
+
component:
|
|
29
|
+
"A slide-out panel that displays supplementary content from any edge of the screen. Built on Radix UI Dialog with smooth animations and comprehensive accessibility support. Perfect for navigation menus, settings panels, and contextual forms.",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
tags: ["autodocs"],
|
|
34
|
+
argTypes: {
|
|
35
|
+
open: {
|
|
36
|
+
control: "boolean",
|
|
37
|
+
description: "Controls the open state of the sheet",
|
|
38
|
+
},
|
|
39
|
+
onOpenChange: {
|
|
40
|
+
action: "onOpenChange",
|
|
41
|
+
description: "Callback fired when the open state changes",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
} satisfies Meta<typeof Sheet>;
|
|
45
|
+
|
|
46
|
+
export default meta;
|
|
47
|
+
type Story = StoryObj<typeof meta>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Interactive playground for testing all sheet props and configurations.
|
|
51
|
+
* Use the controls panel to experiment with different sides, content, and states.
|
|
52
|
+
*/
|
|
53
|
+
export const Interactive: Story = {
|
|
54
|
+
args: {
|
|
55
|
+
open: false,
|
|
56
|
+
},
|
|
57
|
+
render: function InteractiveSheet(args) {
|
|
58
|
+
const [open, setOpen] = React.useState(args.open);
|
|
59
|
+
const [side, setSide] = React.useState<"top" | "right" | "bottom" | "left">(
|
|
60
|
+
"right",
|
|
61
|
+
);
|
|
62
|
+
const [hasHeader, setHasHeader] = React.useState(true);
|
|
63
|
+
const [hasFooter, setHasFooter] = React.useState(true);
|
|
64
|
+
const [hasForm, setHasForm] = React.useState(false);
|
|
65
|
+
|
|
66
|
+
React.useEffect(() => {
|
|
67
|
+
setOpen(args.open);
|
|
68
|
+
}, [args.open]);
|
|
69
|
+
|
|
70
|
+
const handleOpenChange = (newOpen: boolean) => {
|
|
71
|
+
setOpen(newOpen);
|
|
72
|
+
args.onOpenChange?.(newOpen);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
<div className="space-y-4">
|
|
77
|
+
{/* Controls */}
|
|
78
|
+
<div className="grid grid-cols-2 gap-4 p-4 border rounded-lg">
|
|
79
|
+
<div>
|
|
80
|
+
<Label>Side</Label>
|
|
81
|
+
<select
|
|
82
|
+
value={side}
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
+
onChange={(e) => setSide(e.target.value as any)}
|
|
85
|
+
className="w-full p-2 border rounded"
|
|
86
|
+
>
|
|
87
|
+
<option value="right">Right</option>
|
|
88
|
+
<option value="left">Left</option>
|
|
89
|
+
<option value="top">Top</option>
|
|
90
|
+
<option value="bottom">Bottom</option>
|
|
91
|
+
</select>
|
|
92
|
+
</div>
|
|
93
|
+
<div className="space-y-2">
|
|
94
|
+
<label className="flex items-center gap-2">
|
|
95
|
+
<input
|
|
96
|
+
type="checkbox"
|
|
97
|
+
checked={hasHeader}
|
|
98
|
+
onChange={(e) => setHasHeader(e.target.checked)}
|
|
99
|
+
/>
|
|
100
|
+
Include Header
|
|
101
|
+
</label>
|
|
102
|
+
<label className="flex items-center gap-2">
|
|
103
|
+
<input
|
|
104
|
+
type="checkbox"
|
|
105
|
+
checked={hasFooter}
|
|
106
|
+
onChange={(e) => setHasFooter(e.target.checked)}
|
|
107
|
+
/>
|
|
108
|
+
Include Footer
|
|
109
|
+
</label>
|
|
110
|
+
<label className="flex items-center gap-2">
|
|
111
|
+
<input
|
|
112
|
+
type="checkbox"
|
|
113
|
+
checked={hasForm}
|
|
114
|
+
onChange={(e) => setHasForm(e.target.checked)}
|
|
115
|
+
/>
|
|
116
|
+
Form Content
|
|
117
|
+
</label>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
{/* Sheet Demo */}
|
|
122
|
+
<Sheet open={open} onOpenChange={handleOpenChange}>
|
|
123
|
+
<SheetTrigger asChild>
|
|
124
|
+
<Button>Open Sheet ({side})</Button>
|
|
125
|
+
</SheetTrigger>
|
|
126
|
+
<SheetContent
|
|
127
|
+
side={side}
|
|
128
|
+
className={
|
|
129
|
+
side === "top" || side === "bottom" ? "h-[400px]" : undefined
|
|
130
|
+
}
|
|
131
|
+
>
|
|
132
|
+
{hasHeader && (
|
|
133
|
+
<SheetHeader>
|
|
134
|
+
<SheetTitle>Interactive Sheet</SheetTitle>
|
|
135
|
+
<SheetDescription>
|
|
136
|
+
This sheet opens from the {side} side. Use the controls above
|
|
137
|
+
to customize its behavior.
|
|
138
|
+
</SheetDescription>
|
|
139
|
+
</SheetHeader>
|
|
140
|
+
)}
|
|
141
|
+
|
|
142
|
+
<div className="py-4 flex-1">
|
|
143
|
+
{hasForm ? (
|
|
144
|
+
<div className="space-y-4">
|
|
145
|
+
<div>
|
|
146
|
+
<Label htmlFor="name">Name</Label>
|
|
147
|
+
<Input id="name" placeholder="Enter your name" />
|
|
148
|
+
</div>
|
|
149
|
+
<div>
|
|
150
|
+
<Label htmlFor="email">Email</Label>
|
|
151
|
+
<Input
|
|
152
|
+
id="email"
|
|
153
|
+
type="email"
|
|
154
|
+
placeholder="Enter your email"
|
|
155
|
+
/>
|
|
156
|
+
</div>
|
|
157
|
+
<div>
|
|
158
|
+
<Label htmlFor="message">Message</Label>
|
|
159
|
+
<Textarea id="message" placeholder="Your message..." />
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
) : (
|
|
163
|
+
<div className="space-y-4">
|
|
164
|
+
<p className="text-sm text-muted-foreground">
|
|
165
|
+
This is the main content area of the sheet. You can put any
|
|
166
|
+
content here.
|
|
167
|
+
</p>
|
|
168
|
+
<div className="grid grid-cols-1 gap-2">
|
|
169
|
+
<Button variant="ghost" className="justify-start">
|
|
170
|
+
<User className="mr-2 h-4 w-4" />
|
|
171
|
+
Sample Action 1
|
|
172
|
+
</Button>
|
|
173
|
+
<Button variant="ghost" className="justify-start">
|
|
174
|
+
<Settings className="mr-2 h-4 w-4" />
|
|
175
|
+
Sample Action 2
|
|
176
|
+
</Button>
|
|
177
|
+
<Button variant="ghost" className="justify-start">
|
|
178
|
+
<Bell className="mr-2 h-4 w-4" />
|
|
179
|
+
Sample Action 3
|
|
180
|
+
</Button>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
)}
|
|
184
|
+
</div>
|
|
185
|
+
|
|
186
|
+
{hasFooter && (
|
|
187
|
+
<SheetFooter>
|
|
188
|
+
<SheetClose asChild>
|
|
189
|
+
<Button variant="outline">Cancel</Button>
|
|
190
|
+
</SheetClose>
|
|
191
|
+
<Button>{hasForm ? "Submit" : "Done"}</Button>
|
|
192
|
+
</SheetFooter>
|
|
193
|
+
)}
|
|
194
|
+
</SheetContent>
|
|
195
|
+
</Sheet>
|
|
196
|
+
|
|
197
|
+
<p className="text-xs text-muted-foreground">
|
|
198
|
+
Current state: {open ? "Open" : "Closed"}
|
|
199
|
+
</p>
|
|
200
|
+
</div>
|
|
201
|
+
);
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Demonstrates all available sheet variants and configurations.
|
|
207
|
+
* Shows sheets from all four sides with different content types.
|
|
208
|
+
*/
|
|
209
|
+
export const Variants: Story = {
|
|
210
|
+
render: () => (
|
|
211
|
+
<div className="grid grid-cols-2 gap-4">
|
|
212
|
+
{/* Right Side - Settings */}
|
|
213
|
+
<Sheet>
|
|
214
|
+
<SheetTrigger asChild>
|
|
215
|
+
<Button variant="outline">Settings (Right)</Button>
|
|
216
|
+
</SheetTrigger>
|
|
217
|
+
<SheetContent side="right">
|
|
218
|
+
<SheetHeader>
|
|
219
|
+
<SheetTitle>Settings</SheetTitle>
|
|
220
|
+
<SheetDescription>Configure your preferences</SheetDescription>
|
|
221
|
+
</SheetHeader>
|
|
222
|
+
<div className="space-y-4 py-4">
|
|
223
|
+
<div className="flex items-center justify-between">
|
|
224
|
+
<Label>Notifications</Label>
|
|
225
|
+
<Switch defaultChecked />
|
|
226
|
+
</div>
|
|
227
|
+
<div className="flex items-center justify-between">
|
|
228
|
+
<Label>Dark Mode</Label>
|
|
229
|
+
<Switch />
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
<SheetFooter>
|
|
233
|
+
<SheetClose asChild>
|
|
234
|
+
<Button>Done</Button>
|
|
235
|
+
</SheetClose>
|
|
236
|
+
</SheetFooter>
|
|
237
|
+
</SheetContent>
|
|
238
|
+
</Sheet>
|
|
239
|
+
|
|
240
|
+
{/* Left Side - Navigation */}
|
|
241
|
+
<Sheet>
|
|
242
|
+
<SheetTrigger asChild>
|
|
243
|
+
<Button variant="outline">
|
|
244
|
+
<Menu className="mr-2 h-4 w-4" />
|
|
245
|
+
Menu (Left)
|
|
246
|
+
</Button>
|
|
247
|
+
</SheetTrigger>
|
|
248
|
+
<SheetContent side="left" className="w-[300px]">
|
|
249
|
+
<SheetHeader>
|
|
250
|
+
<SheetTitle>Navigation</SheetTitle>
|
|
251
|
+
<SheetDescription>Browse app sections</SheetDescription>
|
|
252
|
+
</SheetHeader>
|
|
253
|
+
<nav className="space-y-2 py-4">
|
|
254
|
+
<Button variant="ghost" className="w-full justify-start">
|
|
255
|
+
<User className="mr-2 h-4 w-4" />
|
|
256
|
+
Profile
|
|
257
|
+
</Button>
|
|
258
|
+
<Button variant="ghost" className="w-full justify-start">
|
|
259
|
+
<Settings className="mr-2 h-4 w-4" />
|
|
260
|
+
Settings
|
|
261
|
+
</Button>
|
|
262
|
+
<Button variant="ghost" className="w-full justify-start">
|
|
263
|
+
<HelpCircle className="mr-2 h-4 w-4" />
|
|
264
|
+
Help
|
|
265
|
+
</Button>
|
|
266
|
+
</nav>
|
|
267
|
+
</SheetContent>
|
|
268
|
+
</Sheet>
|
|
269
|
+
|
|
270
|
+
{/* Top Side - Notifications */}
|
|
271
|
+
<Sheet>
|
|
272
|
+
<SheetTrigger asChild>
|
|
273
|
+
<Button variant="outline">Notifications (Top)</Button>
|
|
274
|
+
</SheetTrigger>
|
|
275
|
+
<SheetContent side="top" className="h-[250px]">
|
|
276
|
+
<SheetHeader>
|
|
277
|
+
<SheetTitle>Recent Notifications</SheetTitle>
|
|
278
|
+
<SheetDescription>Your latest updates</SheetDescription>
|
|
279
|
+
</SheetHeader>
|
|
280
|
+
<div className="py-4">
|
|
281
|
+
<div className="space-y-2">
|
|
282
|
+
<div className="flex items-center gap-2 p-2 bg-blue-50 dark:bg-blue-950 rounded">
|
|
283
|
+
<Check className="h-4 w-4 text-blue-600" />
|
|
284
|
+
<span className="text-sm">Task completed successfully</span>
|
|
285
|
+
</div>
|
|
286
|
+
<div className="flex items-center gap-2 p-2 bg-green-50 dark:bg-green-950 rounded">
|
|
287
|
+
<Bell className="h-4 w-4 text-green-600" />
|
|
288
|
+
<span className="text-sm">New message received</span>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
</div>
|
|
292
|
+
</SheetContent>
|
|
293
|
+
</Sheet>
|
|
294
|
+
|
|
295
|
+
{/* Bottom Side - Quick Actions */}
|
|
296
|
+
<Sheet>
|
|
297
|
+
<SheetTrigger asChild>
|
|
298
|
+
<Button variant="outline">Quick Actions (Bottom)</Button>
|
|
299
|
+
</SheetTrigger>
|
|
300
|
+
<SheetContent side="bottom" className="h-[300px]">
|
|
301
|
+
<SheetHeader>
|
|
302
|
+
<SheetTitle>Quick Actions</SheetTitle>
|
|
303
|
+
<SheetDescription>Common tasks at your fingertips</SheetDescription>
|
|
304
|
+
</SheetHeader>
|
|
305
|
+
<div className="grid grid-cols-2 gap-3 py-4">
|
|
306
|
+
<Button>Create New</Button>
|
|
307
|
+
<Button variant="outline">Import</Button>
|
|
308
|
+
<Button variant="secondary">Export</Button>
|
|
309
|
+
<Button variant="ghost">Archive</Button>
|
|
310
|
+
</div>
|
|
311
|
+
</SheetContent>
|
|
312
|
+
</Sheet>
|
|
313
|
+
</div>
|
|
314
|
+
),
|
|
315
|
+
parameters: {
|
|
316
|
+
docs: {
|
|
317
|
+
description: {
|
|
318
|
+
story:
|
|
319
|
+
"All available sheet sides and common use cases: settings panel (right), navigation menu (left), notifications banner (top), and quick actions panel (bottom).",
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Real-world example showing a sheet in a typical application context.
|
|
327
|
+
* Features a mobile-responsive navigation sheet with user profile section.
|
|
328
|
+
*/
|
|
329
|
+
export const InContext: Story = {
|
|
330
|
+
render: () => (
|
|
331
|
+
<div className="min-h-[400px] border rounded-lg bg-background">
|
|
332
|
+
{/* Mock App Header */}
|
|
333
|
+
<header className="flex items-center justify-between p-4 border-b">
|
|
334
|
+
<h1 className="text-lg font-semibold">Dashboard App</h1>
|
|
335
|
+
<div className="flex items-center gap-2">
|
|
336
|
+
<Button variant="ghost" size="sm">
|
|
337
|
+
Profile
|
|
338
|
+
</Button>
|
|
339
|
+
|
|
340
|
+
{/* Navigation Sheet */}
|
|
341
|
+
<Sheet>
|
|
342
|
+
<SheetTrigger asChild>
|
|
343
|
+
<Button variant="outline" size="sm">
|
|
344
|
+
<Menu className="h-4 w-4" />
|
|
345
|
+
<span className="sr-only">Open menu</span>
|
|
346
|
+
</Button>
|
|
347
|
+
</SheetTrigger>
|
|
348
|
+
<SheetContent side="left" className="w-[280px] sm:w-[350px]">
|
|
349
|
+
<SheetHeader>
|
|
350
|
+
<SheetTitle>Navigation</SheetTitle>
|
|
351
|
+
<SheetDescription>
|
|
352
|
+
Access all sections of the application
|
|
353
|
+
</SheetDescription>
|
|
354
|
+
</SheetHeader>
|
|
355
|
+
|
|
356
|
+
<div className="py-4">
|
|
357
|
+
{/* User Section */}
|
|
358
|
+
<div className="flex items-center gap-3 p-3 rounded-lg bg-muted/50">
|
|
359
|
+
<div className="h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center">
|
|
360
|
+
<User className="h-5 w-5" />
|
|
361
|
+
</div>
|
|
362
|
+
<div>
|
|
363
|
+
<p className="text-sm font-medium">John Doe</p>
|
|
364
|
+
<p className="text-xs text-muted-foreground">
|
|
365
|
+
john@example.com
|
|
366
|
+
</p>
|
|
367
|
+
</div>
|
|
368
|
+
</div>
|
|
369
|
+
|
|
370
|
+
<Separator className="my-4" />
|
|
371
|
+
|
|
372
|
+
{/* Navigation Links */}
|
|
373
|
+
<nav className="space-y-1">
|
|
374
|
+
<div className="px-2 py-1.5">
|
|
375
|
+
<h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
|
|
376
|
+
Main
|
|
377
|
+
</h4>
|
|
378
|
+
</div>
|
|
379
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
380
|
+
📊 Dashboard
|
|
381
|
+
</Button>
|
|
382
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
383
|
+
📝 Projects
|
|
384
|
+
</Button>
|
|
385
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
386
|
+
✅ Tasks
|
|
387
|
+
</Button>
|
|
388
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
389
|
+
📈 Analytics
|
|
390
|
+
</Button>
|
|
391
|
+
|
|
392
|
+
<Separator className="my-3" />
|
|
393
|
+
|
|
394
|
+
<div className="px-2 py-1.5">
|
|
395
|
+
<h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
|
|
396
|
+
Account
|
|
397
|
+
</h4>
|
|
398
|
+
</div>
|
|
399
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
400
|
+
<Settings className="mr-2 h-4 w-4" />
|
|
401
|
+
Settings
|
|
402
|
+
</Button>
|
|
403
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
404
|
+
<Bell className="mr-2 h-4 w-4" />
|
|
405
|
+
Notifications
|
|
406
|
+
</Button>
|
|
407
|
+
<Button variant="ghost" className="w-full justify-start h-9">
|
|
408
|
+
<HelpCircle className="mr-2 h-4 w-4" />
|
|
409
|
+
Help & Support
|
|
410
|
+
</Button>
|
|
411
|
+
</nav>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
414
|
+
<SheetFooter className="border-t pt-4">
|
|
415
|
+
<div className="flex w-full justify-between">
|
|
416
|
+
<Button variant="ghost" size="sm">
|
|
417
|
+
🌙 Dark Mode
|
|
418
|
+
</Button>
|
|
419
|
+
<SheetClose asChild>
|
|
420
|
+
<Button variant="outline" size="sm">
|
|
421
|
+
Close
|
|
422
|
+
</Button>
|
|
423
|
+
</SheetClose>
|
|
424
|
+
</div>
|
|
425
|
+
</SheetFooter>
|
|
426
|
+
</SheetContent>
|
|
427
|
+
</Sheet>
|
|
428
|
+
</div>
|
|
429
|
+
</header>
|
|
430
|
+
|
|
431
|
+
{/* Mock App Content */}
|
|
432
|
+
<main className="p-6">
|
|
433
|
+
<div className="space-y-4">
|
|
434
|
+
<h2 className="text-xl font-semibold">Welcome to your Dashboard</h2>
|
|
435
|
+
<p className="text-muted-foreground">
|
|
436
|
+
This is a realistic example of how the Sheet component works in a
|
|
437
|
+
real application. Click the menu button in the header to see the
|
|
438
|
+
navigation sheet in action.
|
|
439
|
+
</p>
|
|
440
|
+
|
|
441
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mt-6">
|
|
442
|
+
<div className="p-4 border rounded-lg">
|
|
443
|
+
<h3 className="font-medium">Active Projects</h3>
|
|
444
|
+
<p className="text-2xl font-bold text-primary">12</p>
|
|
445
|
+
</div>
|
|
446
|
+
<div className="p-4 border rounded-lg">
|
|
447
|
+
<h3 className="font-medium">Completed Tasks</h3>
|
|
448
|
+
<p className="text-2xl font-bold text-green-600">48</p>
|
|
449
|
+
</div>
|
|
450
|
+
<div className="p-4 border rounded-lg">
|
|
451
|
+
<h3 className="font-medium">Team Members</h3>
|
|
452
|
+
<p className="text-2xl font-bold text-blue-600">8</p>
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
</main>
|
|
457
|
+
</div>
|
|
458
|
+
),
|
|
459
|
+
parameters: {
|
|
460
|
+
layout: "fullscreen",
|
|
461
|
+
docs: {
|
|
462
|
+
description: {
|
|
463
|
+
story:
|
|
464
|
+
"A complete application example showing how the Sheet component integrates into a real dashboard interface. Features responsive design, user profile section, and organized navigation structure.",
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
};
|