@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,297 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Checkbox } from "../checkbox";
|
|
4
|
+
import { Label } from "../label";
|
|
5
|
+
|
|
6
|
+
const meta = {
|
|
7
|
+
title: "Form & Input/Checkbox",
|
|
8
|
+
component: Checkbox,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: "centered",
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component:
|
|
14
|
+
"A checkbox component that allows users to select one or more items from a set of options. Built on Radix UI with custom Tailwind CSS 4 styling.",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
tags: ["autodocs"],
|
|
19
|
+
argTypes: {
|
|
20
|
+
checked: {
|
|
21
|
+
control: { type: "radio" },
|
|
22
|
+
options: [true, false, "indeterminate"],
|
|
23
|
+
description: "The controlled checked state of the checkbox",
|
|
24
|
+
},
|
|
25
|
+
defaultChecked: {
|
|
26
|
+
control: { type: "boolean" },
|
|
27
|
+
description: "The default checked state when uncontrolled",
|
|
28
|
+
},
|
|
29
|
+
disabled: {
|
|
30
|
+
control: { type: "boolean" },
|
|
31
|
+
description: "Whether the checkbox is disabled",
|
|
32
|
+
},
|
|
33
|
+
required: {
|
|
34
|
+
control: { type: "boolean" },
|
|
35
|
+
description: "Whether the checkbox is required",
|
|
36
|
+
},
|
|
37
|
+
name: {
|
|
38
|
+
control: { type: "text" },
|
|
39
|
+
description: "The name of the checkbox for form submission",
|
|
40
|
+
},
|
|
41
|
+
value: {
|
|
42
|
+
control: { type: "text" },
|
|
43
|
+
description: "The value of the checkbox for form submission",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
} satisfies Meta<typeof Checkbox>;
|
|
47
|
+
|
|
48
|
+
export default meta;
|
|
49
|
+
type Story = StoryObj<typeof meta>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Interactive story with all available controls for testing different checkbox configurations.
|
|
53
|
+
* This story allows designers and developers to experiment with all checkbox props in Storybook.
|
|
54
|
+
*/
|
|
55
|
+
export const Interactive: Story = {
|
|
56
|
+
args: {
|
|
57
|
+
disabled: false,
|
|
58
|
+
required: false,
|
|
59
|
+
},
|
|
60
|
+
render: (args) => (
|
|
61
|
+
<div className="flex items-center space-x-2">
|
|
62
|
+
<Checkbox id="interactive-checkbox" {...args} />
|
|
63
|
+
<Label htmlFor="interactive-checkbox">
|
|
64
|
+
Interactive checkbox
|
|
65
|
+
{args.required && <span className="text-destructive ml-1">*</span>}
|
|
66
|
+
</Label>
|
|
67
|
+
</div>
|
|
68
|
+
),
|
|
69
|
+
parameters: {
|
|
70
|
+
docs: {
|
|
71
|
+
description: {
|
|
72
|
+
story:
|
|
73
|
+
"Use the controls panel to test different checkbox configurations including checked states, disabled state, and form properties.",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Comprehensive showcase of all checkbox variants and states.
|
|
81
|
+
* Displays all possible visual combinations to help designers understand available options.
|
|
82
|
+
*/
|
|
83
|
+
export const Variants: Story = {
|
|
84
|
+
render: () => (
|
|
85
|
+
<div className="space-y-6">
|
|
86
|
+
{/* Basic States */}
|
|
87
|
+
<div className="space-y-3">
|
|
88
|
+
<Label className="text-sm font-semibold">Basic States</Label>
|
|
89
|
+
<div className="grid grid-cols-3 gap-4">
|
|
90
|
+
<div className="flex items-center space-x-2">
|
|
91
|
+
<Checkbox id="unchecked" />
|
|
92
|
+
<Label htmlFor="unchecked" className="text-sm">Unchecked</Label>
|
|
93
|
+
</div>
|
|
94
|
+
<div className="flex items-center space-x-2">
|
|
95
|
+
<Checkbox id="checked" defaultChecked />
|
|
96
|
+
<Label htmlFor="checked" className="text-sm">Checked</Label>
|
|
97
|
+
</div>
|
|
98
|
+
<div className="flex items-center space-x-2">
|
|
99
|
+
<Checkbox id="indeterminate" checked="indeterminate" />
|
|
100
|
+
<Label htmlFor="indeterminate" className="text-sm">Indeterminate</Label>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
{/* Disabled States */}
|
|
106
|
+
<div className="space-y-3">
|
|
107
|
+
<Label className="text-sm font-semibold">Disabled States</Label>
|
|
108
|
+
<div className="grid grid-cols-3 gap-4">
|
|
109
|
+
<div className="flex items-center space-x-2">
|
|
110
|
+
<Checkbox id="disabled-unchecked" disabled />
|
|
111
|
+
<Label htmlFor="disabled-unchecked" className="text-sm">Disabled unchecked</Label>
|
|
112
|
+
</div>
|
|
113
|
+
<div className="flex items-center space-x-2">
|
|
114
|
+
<Checkbox id="disabled-checked" disabled defaultChecked />
|
|
115
|
+
<Label htmlFor="disabled-checked" className="text-sm">Disabled checked</Label>
|
|
116
|
+
</div>
|
|
117
|
+
<div className="flex items-center space-x-2">
|
|
118
|
+
<Checkbox id="disabled-indeterminate" disabled checked="indeterminate" />
|
|
119
|
+
<Label htmlFor="disabled-indeterminate" className="text-sm">Disabled indeterminate</Label>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
{/* Form States */}
|
|
125
|
+
<div className="space-y-3">
|
|
126
|
+
<Label className="text-sm font-semibold">Form Integration</Label>
|
|
127
|
+
<div className="space-y-2">
|
|
128
|
+
<div className="flex items-center space-x-2">
|
|
129
|
+
<Checkbox id="required-field" required />
|
|
130
|
+
<Label htmlFor="required-field" className="text-sm">
|
|
131
|
+
Required field <span className="text-destructive">*</span>
|
|
132
|
+
</Label>
|
|
133
|
+
</div>
|
|
134
|
+
<div className="flex items-center space-x-2">
|
|
135
|
+
<Checkbox id="with-value" name="preferences" value="notifications" />
|
|
136
|
+
<Label htmlFor="with-value" className="text-sm">With form name and value</Label>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
),
|
|
142
|
+
parameters: {
|
|
143
|
+
docs: {
|
|
144
|
+
description: {
|
|
145
|
+
story:
|
|
146
|
+
"Complete overview of all checkbox states including basic, disabled, and form integration variants.",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Real-world usage example showing checkbox in realistic UI context.
|
|
154
|
+
* Demonstrates practical patterns for business and design teams.
|
|
155
|
+
*/
|
|
156
|
+
export const InContext: Story = {
|
|
157
|
+
render: function InContextExample() {
|
|
158
|
+
const [checkedItems, setCheckedItems] = React.useState({
|
|
159
|
+
terms: false,
|
|
160
|
+
newsletter: true,
|
|
161
|
+
marketing: false,
|
|
162
|
+
analytics: false,
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const preferenceItems = ['newsletter', 'marketing', 'analytics'];
|
|
166
|
+
const checkedPreferences = preferenceItems.filter(item => checkedItems[item as keyof typeof checkedItems]);
|
|
167
|
+
const allPreferencesChecked = checkedPreferences.length === preferenceItems.length;
|
|
168
|
+
const somePreferencesChecked = checkedPreferences.length > 0;
|
|
169
|
+
const parentChecked = allPreferencesChecked ? true : somePreferencesChecked ? "indeterminate" : false;
|
|
170
|
+
|
|
171
|
+
return (
|
|
172
|
+
<div className="max-w-md space-y-6 rounded-lg border p-6 shadow-sm">
|
|
173
|
+
<div className="space-y-2">
|
|
174
|
+
<h3 className="text-lg font-semibold">Account Settings</h3>
|
|
175
|
+
<p className="text-sm text-muted-foreground">
|
|
176
|
+
Manage your account preferences and communications.
|
|
177
|
+
</p>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
{/* Terms and Conditions */}
|
|
181
|
+
<div className="space-y-3">
|
|
182
|
+
<div className="flex items-center space-x-2">
|
|
183
|
+
<Checkbox
|
|
184
|
+
id="terms"
|
|
185
|
+
checked={checkedItems.terms}
|
|
186
|
+
onCheckedChange={(checked) =>
|
|
187
|
+
setCheckedItems(prev => ({ ...prev, terms: checked === true }))
|
|
188
|
+
}
|
|
189
|
+
required
|
|
190
|
+
/>
|
|
191
|
+
<Label htmlFor="terms" className="text-sm">
|
|
192
|
+
I agree to the{" "}
|
|
193
|
+
<a href="#" className="text-primary underline hover:no-underline">
|
|
194
|
+
Terms and Conditions
|
|
195
|
+
</a>{" "}
|
|
196
|
+
<span className="text-destructive">*</span>
|
|
197
|
+
</Label>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
{/* Email Preferences */}
|
|
202
|
+
<div className="space-y-3">
|
|
203
|
+
<div className="space-y-2">
|
|
204
|
+
<Label className="text-sm font-medium">Email Preferences</Label>
|
|
205
|
+
<div className="flex items-center space-x-2">
|
|
206
|
+
<Checkbox
|
|
207
|
+
id="select-all-preferences"
|
|
208
|
+
checked={parentChecked}
|
|
209
|
+
onCheckedChange={(checked) => {
|
|
210
|
+
const newValue = checked === true;
|
|
211
|
+
setCheckedItems(prev => ({
|
|
212
|
+
...prev,
|
|
213
|
+
newsletter: newValue,
|
|
214
|
+
marketing: newValue,
|
|
215
|
+
analytics: newValue,
|
|
216
|
+
}));
|
|
217
|
+
}}
|
|
218
|
+
/>
|
|
219
|
+
<Label htmlFor="select-all-preferences" className="text-sm font-medium">
|
|
220
|
+
Select all communications
|
|
221
|
+
</Label>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<div className="ml-6 space-y-2 border-l-2 border-border pl-4">
|
|
226
|
+
<div className="flex items-center space-x-2">
|
|
227
|
+
<Checkbox
|
|
228
|
+
id="newsletter"
|
|
229
|
+
checked={checkedItems.newsletter}
|
|
230
|
+
onCheckedChange={(checked) =>
|
|
231
|
+
setCheckedItems(prev => ({ ...prev, newsletter: checked === true }))
|
|
232
|
+
}
|
|
233
|
+
/>
|
|
234
|
+
<Label htmlFor="newsletter" className="text-sm">
|
|
235
|
+
Weekly newsletter
|
|
236
|
+
</Label>
|
|
237
|
+
</div>
|
|
238
|
+
<div className="flex items-center space-x-2">
|
|
239
|
+
<Checkbox
|
|
240
|
+
id="marketing"
|
|
241
|
+
checked={checkedItems.marketing}
|
|
242
|
+
onCheckedChange={(checked) =>
|
|
243
|
+
setCheckedItems(prev => ({ ...prev, marketing: checked === true }))
|
|
244
|
+
}
|
|
245
|
+
/>
|
|
246
|
+
<Label htmlFor="marketing" className="text-sm">
|
|
247
|
+
Marketing updates
|
|
248
|
+
</Label>
|
|
249
|
+
</div>
|
|
250
|
+
<div className="flex items-center space-x-2">
|
|
251
|
+
<Checkbox
|
|
252
|
+
id="analytics"
|
|
253
|
+
checked={checkedItems.analytics}
|
|
254
|
+
onCheckedChange={(checked) =>
|
|
255
|
+
setCheckedItems(prev => ({ ...prev, analytics: checked === true }))
|
|
256
|
+
}
|
|
257
|
+
/>
|
|
258
|
+
<Label htmlFor="analytics" className="text-sm">
|
|
259
|
+
Usage analytics
|
|
260
|
+
</Label>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
{/* Action Buttons */}
|
|
266
|
+
<div className="flex justify-between pt-4 border-t">
|
|
267
|
+
<button
|
|
268
|
+
type="button"
|
|
269
|
+
className="px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
|
|
270
|
+
onClick={() => setCheckedItems({ terms: false, newsletter: false, marketing: false, analytics: false })}
|
|
271
|
+
>
|
|
272
|
+
Reset
|
|
273
|
+
</button>
|
|
274
|
+
<button
|
|
275
|
+
type="button"
|
|
276
|
+
className={`px-4 py-2 text-sm font-medium rounded-md transition-colors ${
|
|
277
|
+
checkedItems.terms
|
|
278
|
+
? "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
279
|
+
: "bg-muted text-muted-foreground cursor-not-allowed"
|
|
280
|
+
}`}
|
|
281
|
+
disabled={!checkedItems.terms}
|
|
282
|
+
>
|
|
283
|
+
Save Settings
|
|
284
|
+
</button>
|
|
285
|
+
</div>
|
|
286
|
+
</div>
|
|
287
|
+
);
|
|
288
|
+
},
|
|
289
|
+
parameters: {
|
|
290
|
+
docs: {
|
|
291
|
+
description: {
|
|
292
|
+
story:
|
|
293
|
+
"Realistic account settings form demonstrating checkbox usage in a complete UI context with parent-child relationships, form validation, and user interactions.",
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
};
|