@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,228 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { AlertCircle, AlertTriangle, CheckCircle, Info, X } from "lucide-react";
|
|
3
|
+
import { Alert, AlertDescription, AlertTitle } from "../alert";
|
|
4
|
+
import { Button } from "../button";
|
|
5
|
+
|
|
6
|
+
const meta = {
|
|
7
|
+
title: "Data Display/Alert",
|
|
8
|
+
component: Alert,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: "centered",
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component:
|
|
14
|
+
"A flexible alert component for displaying important messages, notifications, and status updates. Supports two built-in variants with icon-aware CSS Grid layout and semantic ARIA attributes.",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
tags: ["autodocs"],
|
|
19
|
+
argTypes: {
|
|
20
|
+
variant: {
|
|
21
|
+
control: { type: "select" },
|
|
22
|
+
options: ["default", "destructive"],
|
|
23
|
+
description: "Visual style variant determining colors and emphasis",
|
|
24
|
+
},
|
|
25
|
+
className: {
|
|
26
|
+
control: { type: "text" },
|
|
27
|
+
description: "Additional CSS classes to merge with default styles",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
} satisfies Meta<typeof Alert>;
|
|
31
|
+
|
|
32
|
+
export default meta;
|
|
33
|
+
type Story = StoryObj<typeof meta>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Interactive playground for testing Alert component with all available props and variants.
|
|
37
|
+
* Use the controls below to experiment with different configurations.
|
|
38
|
+
*/
|
|
39
|
+
export const Interactive: Story = {
|
|
40
|
+
args: {
|
|
41
|
+
variant: "default",
|
|
42
|
+
className: "w-96",
|
|
43
|
+
},
|
|
44
|
+
render: (args) => (
|
|
45
|
+
<Alert {...args}>
|
|
46
|
+
<Info className="size-4" />
|
|
47
|
+
<AlertTitle>Alert Title</AlertTitle>
|
|
48
|
+
<AlertDescription>
|
|
49
|
+
This is an interactive alert where you can test different variants and styling options using the controls below.
|
|
50
|
+
</AlertDescription>
|
|
51
|
+
</Alert>
|
|
52
|
+
),
|
|
53
|
+
parameters: {
|
|
54
|
+
docs: {
|
|
55
|
+
description: {
|
|
56
|
+
story:
|
|
57
|
+
"Interactive playground showing the Alert component with all configurable props. Use the controls panel to experiment with different variants and styling options.",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Comprehensive showcase of all alert variants and styling patterns.
|
|
65
|
+
* Demonstrates built-in variants, custom styling, and composition patterns.
|
|
66
|
+
*/
|
|
67
|
+
export const Variants: Story = {
|
|
68
|
+
render: () => (
|
|
69
|
+
<div className="space-y-4 w-full max-w-2xl">
|
|
70
|
+
{/* Built-in variants */}
|
|
71
|
+
<div className="space-y-3">
|
|
72
|
+
<h3 className="text-sm font-medium text-muted-foreground">Built-in Variants</h3>
|
|
73
|
+
<Alert>
|
|
74
|
+
<Info className="size-4" />
|
|
75
|
+
<AlertTitle>Default Alert</AlertTitle>
|
|
76
|
+
<AlertDescription>
|
|
77
|
+
Default variant with subtle styling for general information.
|
|
78
|
+
</AlertDescription>
|
|
79
|
+
</Alert>
|
|
80
|
+
|
|
81
|
+
<Alert variant="destructive">
|
|
82
|
+
<AlertCircle className="size-4" />
|
|
83
|
+
<AlertTitle>Destructive Alert</AlertTitle>
|
|
84
|
+
<AlertDescription>
|
|
85
|
+
Destructive variant for errors and critical warnings.
|
|
86
|
+
</AlertDescription>
|
|
87
|
+
</Alert>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
{/* Custom styled variants */}
|
|
91
|
+
<div className="space-y-3">
|
|
92
|
+
<h3 className="text-sm font-medium text-muted-foreground">Custom Styled Variants</h3>
|
|
93
|
+
<Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-200">
|
|
94
|
+
<CheckCircle className="size-4" />
|
|
95
|
+
<AlertTitle>Success Alert</AlertTitle>
|
|
96
|
+
<AlertDescription>
|
|
97
|
+
Custom success styling with green color scheme.
|
|
98
|
+
</AlertDescription>
|
|
99
|
+
</Alert>
|
|
100
|
+
|
|
101
|
+
<Alert className="border-yellow-200 bg-yellow-50 text-yellow-800 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-200">
|
|
102
|
+
<AlertTriangle className="size-4" />
|
|
103
|
+
<AlertTitle>Warning Alert</AlertTitle>
|
|
104
|
+
<AlertDescription>
|
|
105
|
+
Custom warning styling with yellow color scheme.
|
|
106
|
+
</AlertDescription>
|
|
107
|
+
</Alert>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
{/* Composition patterns */}
|
|
111
|
+
<div className="space-y-3">
|
|
112
|
+
<h3 className="text-sm font-medium text-muted-foreground">Composition Patterns</h3>
|
|
113
|
+
<Alert>
|
|
114
|
+
<Info className="size-4" />
|
|
115
|
+
<AlertDescription>
|
|
116
|
+
Alert with description only, no title.
|
|
117
|
+
</AlertDescription>
|
|
118
|
+
</Alert>
|
|
119
|
+
|
|
120
|
+
<Alert>
|
|
121
|
+
<AlertTitle>Title Only Alert</AlertTitle>
|
|
122
|
+
</Alert>
|
|
123
|
+
|
|
124
|
+
<Alert>
|
|
125
|
+
<AlertTitle>No Icon Alert</AlertTitle>
|
|
126
|
+
<AlertDescription>
|
|
127
|
+
Alert without icon showing CSS Grid adaptation.
|
|
128
|
+
</AlertDescription>
|
|
129
|
+
</Alert>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
),
|
|
133
|
+
parameters: {
|
|
134
|
+
docs: {
|
|
135
|
+
description: {
|
|
136
|
+
story:
|
|
137
|
+
"Comprehensive showcase of all alert variants including built-in variants (default, destructive), custom styled variants (success, warning), and different composition patterns (title-only, description-only, no-icon).",
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Real-world context showing alerts in typical application scenarios.
|
|
145
|
+
* Demonstrates practical usage patterns for designers and business teams.
|
|
146
|
+
*/
|
|
147
|
+
export const InContext: Story = {
|
|
148
|
+
render: () => (
|
|
149
|
+
<div className="space-y-6 w-full max-w-2xl">
|
|
150
|
+
{/* Form validation context */}
|
|
151
|
+
<div className="space-y-3">
|
|
152
|
+
<h3 className="text-sm font-medium text-muted-foreground">Form Validation</h3>
|
|
153
|
+
<Alert variant="destructive">
|
|
154
|
+
<AlertCircle className="size-4" />
|
|
155
|
+
<AlertTitle>Validation Error</AlertTitle>
|
|
156
|
+
<AlertDescription>
|
|
157
|
+
Please correct the following errors before submitting:
|
|
158
|
+
<ul className="list-disc list-inside mt-2 space-y-1">
|
|
159
|
+
<li>Email address is required</li>
|
|
160
|
+
<li>Password must be at least 8 characters</li>
|
|
161
|
+
</ul>
|
|
162
|
+
</AlertDescription>
|
|
163
|
+
</Alert>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
{/* System notifications */}
|
|
167
|
+
<div className="space-y-3">
|
|
168
|
+
<h3 className="text-sm font-medium text-muted-foreground">System Notifications</h3>
|
|
169
|
+
<Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-200">
|
|
170
|
+
<CheckCircle className="size-4" />
|
|
171
|
+
<AlertTitle>Changes Saved</AlertTitle>
|
|
172
|
+
<AlertDescription>
|
|
173
|
+
Your profile has been updated successfully. Changes may take a few minutes to appear across all devices.
|
|
174
|
+
</AlertDescription>
|
|
175
|
+
</Alert>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
{/* Interactive alerts with actions */}
|
|
179
|
+
<div className="space-y-3">
|
|
180
|
+
<h3 className="text-sm font-medium text-muted-foreground">Interactive Alerts</h3>
|
|
181
|
+
<Alert className="relative">
|
|
182
|
+
<Info className="size-4" />
|
|
183
|
+
<AlertTitle>Software Update Available</AlertTitle>
|
|
184
|
+
<AlertDescription className="mb-4">
|
|
185
|
+
Version 2.1.0 is now available with improved performance and new features.
|
|
186
|
+
</AlertDescription>
|
|
187
|
+
<div className="flex gap-2">
|
|
188
|
+
<Button size="sm">Update Now</Button>
|
|
189
|
+
<Button size="sm" variant="outline">
|
|
190
|
+
Remind Me Later
|
|
191
|
+
</Button>
|
|
192
|
+
</div>
|
|
193
|
+
<Button
|
|
194
|
+
size="icon"
|
|
195
|
+
variant="ghost"
|
|
196
|
+
className="absolute top-2 right-2 size-6"
|
|
197
|
+
onClick={() => console.log("Alert dismissed")}
|
|
198
|
+
>
|
|
199
|
+
<X className="size-3" />
|
|
200
|
+
<span className="sr-only">Dismiss</span>
|
|
201
|
+
</Button>
|
|
202
|
+
</Alert>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
{/* Maintenance notice */}
|
|
206
|
+
<div className="space-y-3">
|
|
207
|
+
<h3 className="text-sm font-medium text-muted-foreground">Maintenance Notice</h3>
|
|
208
|
+
<Alert className="border-yellow-200 bg-yellow-50 text-yellow-800 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-200">
|
|
209
|
+
<AlertTriangle className="size-4" />
|
|
210
|
+
<AlertTitle>Scheduled Maintenance</AlertTitle>
|
|
211
|
+
<AlertDescription>
|
|
212
|
+
We will be performing scheduled maintenance on Sunday, December 15th from 2:00 AM to 4:00 AM EST.
|
|
213
|
+
Some services may be temporarily unavailable during this time. We apologize for any inconvenience.
|
|
214
|
+
</AlertDescription>
|
|
215
|
+
</Alert>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
),
|
|
219
|
+
parameters: {
|
|
220
|
+
layout: "padded",
|
|
221
|
+
docs: {
|
|
222
|
+
description: {
|
|
223
|
+
story:
|
|
224
|
+
"Real-world application scenarios showing alerts in typical UI contexts: form validation errors, system notifications, interactive alerts with actions, and maintenance notices. This demonstrates practical usage patterns for designers and business teams.",
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { AspectRatio } from "../aspect-ratio";
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Layout and Structure/AspectRatio",
|
|
6
|
+
component: AspectRatio,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "centered",
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component:
|
|
12
|
+
"A layout component that maintains consistent aspect ratios for responsive media content. Built with Radix UI primitives and zero JavaScript overhead.",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
tags: ["autodocs"],
|
|
17
|
+
argTypes: {
|
|
18
|
+
ratio: {
|
|
19
|
+
control: { type: "number", min: 0.1, max: 5, step: 0.1 },
|
|
20
|
+
description: "The desired aspect ratio (width / height)",
|
|
21
|
+
},
|
|
22
|
+
className: {
|
|
23
|
+
control: { type: "text" },
|
|
24
|
+
description: "Additional CSS classes",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
args: {
|
|
28
|
+
ratio: 16 / 9,
|
|
29
|
+
},
|
|
30
|
+
} satisfies Meta<typeof AspectRatio>;
|
|
31
|
+
|
|
32
|
+
export default meta;
|
|
33
|
+
type Story = StoryObj<typeof meta>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Interactive playground to test all AspectRatio props and configurations.
|
|
37
|
+
* Use the controls panel to experiment with different aspect ratios and styling.
|
|
38
|
+
*/
|
|
39
|
+
export const Interactive: Story = {
|
|
40
|
+
render: (args) => (
|
|
41
|
+
<div className="w-[450px]">
|
|
42
|
+
<AspectRatio {...args}>
|
|
43
|
+
<img
|
|
44
|
+
src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
|
|
45
|
+
alt="Photo by Drew Beamer"
|
|
46
|
+
className="rounded-md object-cover w-full h-full"
|
|
47
|
+
/>
|
|
48
|
+
</AspectRatio>
|
|
49
|
+
</div>
|
|
50
|
+
),
|
|
51
|
+
parameters: {
|
|
52
|
+
docs: {
|
|
53
|
+
description: {
|
|
54
|
+
story:
|
|
55
|
+
"Use the controls to experiment with different aspect ratios. Common ratios include 16:9 (1.78), 4:3 (1.33), 3:2 (1.5), and 1:1 (square).",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Showcase of common aspect ratio variants used in modern web design.
|
|
63
|
+
* Demonstrates square, portrait, landscape, and widescreen orientations.
|
|
64
|
+
*/
|
|
65
|
+
export const Variants: Story = {
|
|
66
|
+
render: () => (
|
|
67
|
+
<div className="grid grid-cols-2 gap-6 w-[800px]">
|
|
68
|
+
<div>
|
|
69
|
+
<h4 className="text-sm font-medium mb-2">Square (1:1)</h4>
|
|
70
|
+
<AspectRatio ratio={1}>
|
|
71
|
+
<div className="bg-gradient-to-br from-blue-400 to-purple-600 rounded-md flex items-center justify-center text-white font-medium w-full h-full">
|
|
72
|
+
Profile Images
|
|
73
|
+
</div>
|
|
74
|
+
</AspectRatio>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<div>
|
|
78
|
+
<h4 className="text-sm font-medium mb-2">Portrait (3:4)</h4>
|
|
79
|
+
<AspectRatio ratio={3 / 4}>
|
|
80
|
+
<div className="bg-gradient-to-br from-green-400 to-blue-600 rounded-md flex items-center justify-center text-white font-medium w-full h-full">
|
|
81
|
+
Mobile Photos
|
|
82
|
+
</div>
|
|
83
|
+
</AspectRatio>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<div>
|
|
87
|
+
<h4 className="text-sm font-medium mb-2">Landscape (16:9)</h4>
|
|
88
|
+
<AspectRatio ratio={16 / 9}>
|
|
89
|
+
<div className="bg-gradient-to-br from-orange-400 to-red-600 rounded-md flex items-center justify-center text-white font-medium w-full h-full">
|
|
90
|
+
Video Content
|
|
91
|
+
</div>
|
|
92
|
+
</AspectRatio>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div>
|
|
96
|
+
<h4 className="text-sm font-medium mb-2">Widescreen (21:9)</h4>
|
|
97
|
+
<AspectRatio ratio={21 / 9}>
|
|
98
|
+
<div className="bg-gradient-to-br from-purple-400 to-pink-600 rounded-md flex items-center justify-center text-white font-medium w-full h-full">
|
|
99
|
+
Cinematic Content
|
|
100
|
+
</div>
|
|
101
|
+
</AspectRatio>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
),
|
|
105
|
+
parameters: {
|
|
106
|
+
docs: {
|
|
107
|
+
description: {
|
|
108
|
+
story:
|
|
109
|
+
"Common aspect ratios: Square (1:1) for avatars, Portrait (3:4) for mobile photos, Landscape (16:9) for videos, and Widescreen (21:9) for cinematic content.",
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Real-world usage example showing AspectRatio in a responsive image gallery
|
|
117
|
+
* context that designers and business teams would encounter in production.
|
|
118
|
+
*/
|
|
119
|
+
export const InContext: Story = {
|
|
120
|
+
render: () => (
|
|
121
|
+
<div className="max-w-4xl space-y-6">
|
|
122
|
+
{/* Hero Section */}
|
|
123
|
+
<div>
|
|
124
|
+
<h3 className="text-lg font-semibold mb-3">Featured Article</h3>
|
|
125
|
+
<div className="w-full max-w-2xl">
|
|
126
|
+
<AspectRatio ratio={16 / 9}>
|
|
127
|
+
<img
|
|
128
|
+
src="https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&dpr=2&q=80"
|
|
129
|
+
alt="Mountain landscape hero image"
|
|
130
|
+
className="rounded-lg object-cover w-full h-full"
|
|
131
|
+
/>
|
|
132
|
+
</AspectRatio>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
{/* Image Gallery Grid */}
|
|
137
|
+
<div>
|
|
138
|
+
<h3 className="text-lg font-semibold mb-3">Related Images</h3>
|
|
139
|
+
<div className="grid grid-cols-3 gap-4">
|
|
140
|
+
{[
|
|
141
|
+
{
|
|
142
|
+
src: "https://images.unsplash.com/photo-1576075796033-848c2a5a3e3b?w=400&dpr=2&q=80",
|
|
143
|
+
alt: "Portrait photo",
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
src: "https://images.unsplash.com/photo-1492693429561-11c25e90df39?w=400&dpr=2&q=80",
|
|
147
|
+
alt: "Architecture photo",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
src: "https://images.unsplash.com/photo-1516681100942-77d8e7f9dd97?w=400&dpr=2&q=80",
|
|
151
|
+
alt: "Urban landscape",
|
|
152
|
+
},
|
|
153
|
+
].map((image, index) => (
|
|
154
|
+
<AspectRatio key={index} ratio={4 / 3}>
|
|
155
|
+
<img
|
|
156
|
+
src={image.src}
|
|
157
|
+
alt={image.alt}
|
|
158
|
+
className="rounded-md object-cover w-full h-full hover:scale-105 transition-transform duration-200"
|
|
159
|
+
/>
|
|
160
|
+
</AspectRatio>
|
|
161
|
+
))}
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
|
|
165
|
+
{/* Video Player Section */}
|
|
166
|
+
<div>
|
|
167
|
+
<h3 className="text-lg font-semibold mb-3">Video Content</h3>
|
|
168
|
+
<div className="w-full max-w-xl">
|
|
169
|
+
<AspectRatio ratio={16 / 9}>
|
|
170
|
+
<div className="flex items-center justify-center bg-muted rounded-lg w-full h-full border">
|
|
171
|
+
<div className="text-center">
|
|
172
|
+
<div className="size-16 mx-auto mb-4 bg-primary rounded-full flex items-center justify-center">
|
|
173
|
+
<svg
|
|
174
|
+
className="size-6 text-primary-foreground"
|
|
175
|
+
fill="currentColor"
|
|
176
|
+
viewBox="0 0 24 24"
|
|
177
|
+
>
|
|
178
|
+
<path d="M8 5v14l11-7z" />
|
|
179
|
+
</svg>
|
|
180
|
+
</div>
|
|
181
|
+
<p className="text-sm font-medium">Video Player</p>
|
|
182
|
+
<p className="text-xs text-muted-foreground">
|
|
183
|
+
16:9 Aspect Ratio
|
|
184
|
+
</p>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</AspectRatio>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
),
|
|
192
|
+
parameters: {
|
|
193
|
+
docs: {
|
|
194
|
+
description: {
|
|
195
|
+
story:
|
|
196
|
+
"Real-world example showing AspectRatio in a content layout with hero image, image gallery, and video player - maintaining consistent proportions across different media types.",
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
};
|