@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,400 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { RadioGroup, RadioGroupItem } from "../radio-group";
|
|
4
|
+
import { Label } from "../label";
|
|
5
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../card";
|
|
6
|
+
|
|
7
|
+
const meta = {
|
|
8
|
+
title: "Form & Input/RadioGroup",
|
|
9
|
+
component: RadioGroup,
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "centered",
|
|
12
|
+
docs: {
|
|
13
|
+
description: {
|
|
14
|
+
component:
|
|
15
|
+
"A radio group component for single selection from multiple options. Built on Radix UI primitives with accessible keyboard navigation and screen reader support.",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
tags: ["autodocs"],
|
|
20
|
+
argTypes: {
|
|
21
|
+
defaultValue: {
|
|
22
|
+
control: { type: "text" },
|
|
23
|
+
description: "The default selected value when uncontrolled",
|
|
24
|
+
},
|
|
25
|
+
value: {
|
|
26
|
+
control: { type: "text" },
|
|
27
|
+
description: "The controlled value of the selected radio option",
|
|
28
|
+
},
|
|
29
|
+
onValueChange: {
|
|
30
|
+
action: "valueChanged",
|
|
31
|
+
description: "Callback fired when the selection changes",
|
|
32
|
+
},
|
|
33
|
+
disabled: {
|
|
34
|
+
control: { type: "boolean" },
|
|
35
|
+
description: "Whether the entire radio group is disabled",
|
|
36
|
+
},
|
|
37
|
+
required: {
|
|
38
|
+
control: { type: "boolean" },
|
|
39
|
+
description: "Whether the radio group is required for form validation",
|
|
40
|
+
},
|
|
41
|
+
orientation: {
|
|
42
|
+
control: { type: "radio" },
|
|
43
|
+
options: ["horizontal", "vertical"],
|
|
44
|
+
description: "The orientation of the radio group layout",
|
|
45
|
+
},
|
|
46
|
+
className: {
|
|
47
|
+
control: { type: "text" },
|
|
48
|
+
description: "Additional CSS classes to apply",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
} satisfies Meta<typeof RadioGroup>;
|
|
52
|
+
|
|
53
|
+
export default meta;
|
|
54
|
+
type Story = StoryObj<typeof meta>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Interactive playground with all available props and options.
|
|
58
|
+
* Use the controls panel to test different configurations.
|
|
59
|
+
*/
|
|
60
|
+
export const Interactive: Story = {
|
|
61
|
+
args: {
|
|
62
|
+
defaultValue: "option-two",
|
|
63
|
+
disabled: false,
|
|
64
|
+
required: false,
|
|
65
|
+
},
|
|
66
|
+
render: (args) => (
|
|
67
|
+
<RadioGroup {...args}>
|
|
68
|
+
<div className="flex items-center space-x-2">
|
|
69
|
+
<RadioGroupItem value="option-one" id="option-one" />
|
|
70
|
+
<Label htmlFor="option-one">Option One</Label>
|
|
71
|
+
</div>
|
|
72
|
+
<div className="flex items-center space-x-2">
|
|
73
|
+
<RadioGroupItem value="option-two" id="option-two" />
|
|
74
|
+
<Label htmlFor="option-two">Option Two</Label>
|
|
75
|
+
</div>
|
|
76
|
+
<div className="flex items-center space-x-2">
|
|
77
|
+
<RadioGroupItem value="option-three" id="option-three" />
|
|
78
|
+
<Label htmlFor="option-three">Option Three</Label>
|
|
79
|
+
</div>
|
|
80
|
+
<div className="flex items-center space-x-2">
|
|
81
|
+
<RadioGroupItem value="option-four" id="option-four" disabled />
|
|
82
|
+
<Label htmlFor="option-four" className="opacity-50">
|
|
83
|
+
Disabled Option
|
|
84
|
+
</Label>
|
|
85
|
+
</div>
|
|
86
|
+
</RadioGroup>
|
|
87
|
+
),
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Comprehensive showcase of all radio group variants and states.
|
|
92
|
+
* Demonstrates different layouts, styling options, and use cases.
|
|
93
|
+
*/
|
|
94
|
+
export const Variants: Story = {
|
|
95
|
+
render: () => (
|
|
96
|
+
<div className="grid gap-8 w-full max-w-4xl">
|
|
97
|
+
{/* Basic Vertical Layout */}
|
|
98
|
+
<div>
|
|
99
|
+
<h3 className="mb-3 text-lg font-semibold">Vertical Layout (Default)</h3>
|
|
100
|
+
<RadioGroup defaultValue="comfortable">
|
|
101
|
+
<div className="flex items-center space-x-2">
|
|
102
|
+
<RadioGroupItem value="default" id="v1" />
|
|
103
|
+
<Label htmlFor="v1">Default</Label>
|
|
104
|
+
</div>
|
|
105
|
+
<div className="flex items-center space-x-2">
|
|
106
|
+
<RadioGroupItem value="comfortable" id="v2" />
|
|
107
|
+
<Label htmlFor="v2">Comfortable</Label>
|
|
108
|
+
</div>
|
|
109
|
+
<div className="flex items-center space-x-2">
|
|
110
|
+
<RadioGroupItem value="compact" id="v3" />
|
|
111
|
+
<Label htmlFor="v3">Compact</Label>
|
|
112
|
+
</div>
|
|
113
|
+
</RadioGroup>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
{/* Horizontal Layout */}
|
|
117
|
+
<div>
|
|
118
|
+
<h3 className="mb-3 text-lg font-semibold">Horizontal Layout</h3>
|
|
119
|
+
<RadioGroup defaultValue="medium" className="flex gap-4">
|
|
120
|
+
<div className="flex items-center space-x-2">
|
|
121
|
+
<RadioGroupItem value="small" id="h1" />
|
|
122
|
+
<Label htmlFor="h1">Small</Label>
|
|
123
|
+
</div>
|
|
124
|
+
<div className="flex items-center space-x-2">
|
|
125
|
+
<RadioGroupItem value="medium" id="h2" />
|
|
126
|
+
<Label htmlFor="h2">Medium</Label>
|
|
127
|
+
</div>
|
|
128
|
+
<div className="flex items-center space-x-2">
|
|
129
|
+
<RadioGroupItem value="large" id="h3" />
|
|
130
|
+
<Label htmlFor="h3">Large</Label>
|
|
131
|
+
</div>
|
|
132
|
+
</RadioGroup>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
{/* With Descriptions */}
|
|
136
|
+
<div>
|
|
137
|
+
<h3 className="mb-3 text-lg font-semibold">With Descriptions</h3>
|
|
138
|
+
<RadioGroup defaultValue="card">
|
|
139
|
+
<div className="flex items-start space-x-2">
|
|
140
|
+
<RadioGroupItem value="card" id="desc1" className="mt-1" />
|
|
141
|
+
<div className="grid gap-1">
|
|
142
|
+
<Label htmlFor="desc1">Credit Card</Label>
|
|
143
|
+
<p className="text-sm text-muted-foreground">
|
|
144
|
+
Pay with your credit or debit card
|
|
145
|
+
</p>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
<div className="flex items-start space-x-2">
|
|
149
|
+
<RadioGroupItem value="paypal" id="desc2" className="mt-1" />
|
|
150
|
+
<div className="grid gap-1">
|
|
151
|
+
<Label htmlFor="desc2">PayPal</Label>
|
|
152
|
+
<p className="text-sm text-muted-foreground">
|
|
153
|
+
Pay with your PayPal account
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
<div className="flex items-start space-x-2">
|
|
158
|
+
<RadioGroupItem value="bank" id="desc3" className="mt-1" />
|
|
159
|
+
<div className="grid gap-1">
|
|
160
|
+
<Label htmlFor="desc3">Bank Transfer</Label>
|
|
161
|
+
<p className="text-sm text-muted-foreground">
|
|
162
|
+
Direct transfer from your bank account
|
|
163
|
+
</p>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</RadioGroup>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
{/* Disabled States */}
|
|
170
|
+
<div>
|
|
171
|
+
<h3 className="mb-3 text-lg font-semibold">Disabled States</h3>
|
|
172
|
+
<div className="grid gap-4">
|
|
173
|
+
<div>
|
|
174
|
+
<h4 className="mb-2 text-sm font-medium text-muted-foreground">
|
|
175
|
+
Entire Group Disabled
|
|
176
|
+
</h4>
|
|
177
|
+
<RadioGroup defaultValue="option-two" disabled>
|
|
178
|
+
<div className="flex items-center space-x-2">
|
|
179
|
+
<RadioGroupItem value="option-one" id="d1" />
|
|
180
|
+
<Label htmlFor="d1">Option One</Label>
|
|
181
|
+
</div>
|
|
182
|
+
<div className="flex items-center space-x-2">
|
|
183
|
+
<RadioGroupItem value="option-two" id="d2" />
|
|
184
|
+
<Label htmlFor="d2">Option Two (Selected)</Label>
|
|
185
|
+
</div>
|
|
186
|
+
</RadioGroup>
|
|
187
|
+
</div>
|
|
188
|
+
<div>
|
|
189
|
+
<h4 className="mb-2 text-sm font-medium text-muted-foreground">
|
|
190
|
+
Individual Item Disabled
|
|
191
|
+
</h4>
|
|
192
|
+
<RadioGroup defaultValue="active">
|
|
193
|
+
<div className="flex items-center space-x-2">
|
|
194
|
+
<RadioGroupItem value="active" id="d3" />
|
|
195
|
+
<Label htmlFor="d3">Active</Label>
|
|
196
|
+
</div>
|
|
197
|
+
<div className="flex items-center space-x-2">
|
|
198
|
+
<RadioGroupItem value="paused" id="d4" disabled />
|
|
199
|
+
<Label htmlFor="d4" className="opacity-50">
|
|
200
|
+
Paused (Unavailable)
|
|
201
|
+
</Label>
|
|
202
|
+
</div>
|
|
203
|
+
<div className="flex items-center space-x-2">
|
|
204
|
+
<RadioGroupItem value="inactive" id="d5" />
|
|
205
|
+
<Label htmlFor="d5">Inactive</Label>
|
|
206
|
+
</div>
|
|
207
|
+
</RadioGroup>
|
|
208
|
+
</div>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
{/* Custom Styling */}
|
|
213
|
+
<div>
|
|
214
|
+
<h3 className="mb-3 text-lg font-semibold">Custom Colors</h3>
|
|
215
|
+
<RadioGroup defaultValue="purple">
|
|
216
|
+
<div className="flex items-center space-x-2">
|
|
217
|
+
<RadioGroupItem
|
|
218
|
+
value="purple"
|
|
219
|
+
id="c1"
|
|
220
|
+
className="border-purple-500 text-purple-500"
|
|
221
|
+
/>
|
|
222
|
+
<Label htmlFor="c1">Purple Theme</Label>
|
|
223
|
+
</div>
|
|
224
|
+
<div className="flex items-center space-x-2">
|
|
225
|
+
<RadioGroupItem
|
|
226
|
+
value="green"
|
|
227
|
+
id="c2"
|
|
228
|
+
className="border-green-500 text-green-500"
|
|
229
|
+
/>
|
|
230
|
+
<Label htmlFor="c2">Green Theme</Label>
|
|
231
|
+
</div>
|
|
232
|
+
<div className="flex items-center space-x-2">
|
|
233
|
+
<RadioGroupItem
|
|
234
|
+
value="orange"
|
|
235
|
+
id="c3"
|
|
236
|
+
className="border-orange-500 text-orange-500"
|
|
237
|
+
/>
|
|
238
|
+
<Label htmlFor="c3">Orange Theme</Label>
|
|
239
|
+
</div>
|
|
240
|
+
</RadioGroup>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
),
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Real-world usage example showing radio groups in a practical context.
|
|
248
|
+
* Demonstrates how the component integrates within forms and user interfaces.
|
|
249
|
+
*/
|
|
250
|
+
export const InContext: Story = {
|
|
251
|
+
render: function PreferencesForm() {
|
|
252
|
+
const [preferences, setPreferences] = React.useState({
|
|
253
|
+
theme: "light",
|
|
254
|
+
notifications: "email",
|
|
255
|
+
plan: "pro",
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
const handleSubmit = (e: React.FormEvent) => {
|
|
259
|
+
e.preventDefault();
|
|
260
|
+
alert(`Preferences saved: ${JSON.stringify(preferences, null, 2)}`);
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
return (
|
|
264
|
+
<Card className="w-[500px]">
|
|
265
|
+
<CardHeader>
|
|
266
|
+
<CardTitle>User Preferences</CardTitle>
|
|
267
|
+
<CardDescription>
|
|
268
|
+
Configure your account settings and preferences
|
|
269
|
+
</CardDescription>
|
|
270
|
+
</CardHeader>
|
|
271
|
+
<CardContent>
|
|
272
|
+
<form onSubmit={handleSubmit} className="space-y-6">
|
|
273
|
+
{/* Theme Selection */}
|
|
274
|
+
<div className="space-y-3">
|
|
275
|
+
<Label className="text-sm font-medium">Theme</Label>
|
|
276
|
+
<RadioGroup
|
|
277
|
+
value={preferences.theme}
|
|
278
|
+
onValueChange={(value) =>
|
|
279
|
+
setPreferences((prev) => ({ ...prev, theme: value }))
|
|
280
|
+
}
|
|
281
|
+
>
|
|
282
|
+
<div className="flex items-center space-x-2">
|
|
283
|
+
<RadioGroupItem value="light" id="theme-light" />
|
|
284
|
+
<Label htmlFor="theme-light">Light Mode</Label>
|
|
285
|
+
</div>
|
|
286
|
+
<div className="flex items-center space-x-2">
|
|
287
|
+
<RadioGroupItem value="dark" id="theme-dark" />
|
|
288
|
+
<Label htmlFor="theme-dark">Dark Mode</Label>
|
|
289
|
+
</div>
|
|
290
|
+
<div className="flex items-center space-x-2">
|
|
291
|
+
<RadioGroupItem value="system" id="theme-system" />
|
|
292
|
+
<Label htmlFor="theme-system">System Default</Label>
|
|
293
|
+
</div>
|
|
294
|
+
</RadioGroup>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
{/* Notification Preferences */}
|
|
298
|
+
<div className="space-y-3">
|
|
299
|
+
<Label className="text-sm font-medium">Notifications</Label>
|
|
300
|
+
<RadioGroup
|
|
301
|
+
value={preferences.notifications}
|
|
302
|
+
onValueChange={(value) =>
|
|
303
|
+
setPreferences((prev) => ({ ...prev, notifications: value }))
|
|
304
|
+
}
|
|
305
|
+
>
|
|
306
|
+
<div className="flex items-start space-x-2">
|
|
307
|
+
<RadioGroupItem value="email" id="notif-email" className="mt-1" />
|
|
308
|
+
<div className="grid gap-1">
|
|
309
|
+
<Label htmlFor="notif-email">Email Notifications</Label>
|
|
310
|
+
<p className="text-sm text-muted-foreground">
|
|
311
|
+
Receive updates via email
|
|
312
|
+
</p>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
<div className="flex items-start space-x-2">
|
|
316
|
+
<RadioGroupItem value="push" id="notif-push" className="mt-1" />
|
|
317
|
+
<div className="grid gap-1">
|
|
318
|
+
<Label htmlFor="notif-push">Push Notifications</Label>
|
|
319
|
+
<p className="text-sm text-muted-foreground">
|
|
320
|
+
Receive browser push notifications
|
|
321
|
+
</p>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
<div className="flex items-start space-x-2">
|
|
325
|
+
<RadioGroupItem value="none" id="notif-none" className="mt-1" />
|
|
326
|
+
<div className="grid gap-1">
|
|
327
|
+
<Label htmlFor="notif-none">No Notifications</Label>
|
|
328
|
+
<p className="text-sm text-muted-foreground">
|
|
329
|
+
Disable all notifications
|
|
330
|
+
</p>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</RadioGroup>
|
|
334
|
+
</div>
|
|
335
|
+
|
|
336
|
+
{/* Plan Selection */}
|
|
337
|
+
<div className="space-y-3">
|
|
338
|
+
<Label className="text-sm font-medium">Subscription Plan</Label>
|
|
339
|
+
<RadioGroup
|
|
340
|
+
value={preferences.plan}
|
|
341
|
+
onValueChange={(value) =>
|
|
342
|
+
setPreferences((prev) => ({ ...prev, plan: value }))
|
|
343
|
+
}
|
|
344
|
+
>
|
|
345
|
+
<div className="flex items-start space-x-2">
|
|
346
|
+
<RadioGroupItem value="free" id="plan-free" className="mt-1" />
|
|
347
|
+
<div className="grid gap-1">
|
|
348
|
+
<Label htmlFor="plan-free" className="flex items-center gap-2">
|
|
349
|
+
Free Plan
|
|
350
|
+
<span className="text-xs text-muted-foreground">$0/month</span>
|
|
351
|
+
</Label>
|
|
352
|
+
<p className="text-sm text-muted-foreground">
|
|
353
|
+
Basic features for personal use
|
|
354
|
+
</p>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
<div className="flex items-start space-x-2">
|
|
358
|
+
<RadioGroupItem value="pro" id="plan-pro" className="mt-1" />
|
|
359
|
+
<div className="grid gap-1">
|
|
360
|
+
<Label htmlFor="plan-pro" className="flex items-center gap-2">
|
|
361
|
+
Pro Plan
|
|
362
|
+
<span className="text-xs text-muted-foreground">$19/month</span>
|
|
363
|
+
</Label>
|
|
364
|
+
<p className="text-sm text-muted-foreground">
|
|
365
|
+
Advanced features for professionals
|
|
366
|
+
</p>
|
|
367
|
+
</div>
|
|
368
|
+
</div>
|
|
369
|
+
<div className="flex items-start space-x-2">
|
|
370
|
+
<RadioGroupItem value="enterprise" id="plan-enterprise" className="mt-1" />
|
|
371
|
+
<div className="grid gap-1">
|
|
372
|
+
<Label htmlFor="plan-enterprise" className="flex items-center gap-2">
|
|
373
|
+
Enterprise Plan
|
|
374
|
+
<span className="text-xs text-muted-foreground">Custom pricing</span>
|
|
375
|
+
</Label>
|
|
376
|
+
<p className="text-sm text-muted-foreground">
|
|
377
|
+
Custom solutions for large organizations
|
|
378
|
+
</p>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
</RadioGroup>
|
|
382
|
+
</div>
|
|
383
|
+
|
|
384
|
+
<div className="flex justify-between items-center pt-4 border-t">
|
|
385
|
+
<p className="text-sm text-muted-foreground">
|
|
386
|
+
Changes are saved automatically
|
|
387
|
+
</p>
|
|
388
|
+
<button
|
|
389
|
+
type="submit"
|
|
390
|
+
className="px-4 py-2 bg-primary text-primary-foreground rounded-md text-sm font-medium hover:bg-primary/90 transition-colors"
|
|
391
|
+
>
|
|
392
|
+
Save Preferences
|
|
393
|
+
</button>
|
|
394
|
+
</div>
|
|
395
|
+
</form>
|
|
396
|
+
</CardContent>
|
|
397
|
+
</Card>
|
|
398
|
+
);
|
|
399
|
+
},
|
|
400
|
+
};
|