@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,495 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
3
|
+
import { XIcon } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Sheet - A slide-out panel that displays supplementary content
|
|
9
|
+
*
|
|
10
|
+
* A versatile sheet component that slides in from any edge of the screen to display
|
|
11
|
+
* supplementary content without fully blocking the main interface. Built on Radix UI
|
|
12
|
+
* Dialog primitives with smooth animations and comprehensive accessibility support.
|
|
13
|
+
*
|
|
14
|
+
* Sheets are ideal for:
|
|
15
|
+
* - Mobile navigation menus
|
|
16
|
+
* - Settings panels and configuration forms
|
|
17
|
+
* - Contextual information displays
|
|
18
|
+
* - Secondary actions that don't require full attention
|
|
19
|
+
* - Filters and search interfaces
|
|
20
|
+
*
|
|
21
|
+
* @component
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* // Basic sheet from right side (default)
|
|
25
|
+
* <Sheet>
|
|
26
|
+
* <SheetTrigger asChild>
|
|
27
|
+
* <Button>Open Settings</Button>
|
|
28
|
+
* </SheetTrigger>
|
|
29
|
+
* <SheetContent>
|
|
30
|
+
* <SheetHeader>
|
|
31
|
+
* <SheetTitle>Settings</SheetTitle>
|
|
32
|
+
* <SheetDescription>
|
|
33
|
+
* Configure your application preferences.
|
|
34
|
+
* </SheetDescription>
|
|
35
|
+
* </SheetHeader>
|
|
36
|
+
* <div className="py-4">
|
|
37
|
+
* <p>Settings content here</p>
|
|
38
|
+
* </div>
|
|
39
|
+
* <SheetFooter>
|
|
40
|
+
* <Button type="submit">Save Changes</Button>
|
|
41
|
+
* </SheetFooter>
|
|
42
|
+
* </SheetContent>
|
|
43
|
+
* </Sheet>
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```tsx
|
|
48
|
+
* // Sheet from different sides with controlled state
|
|
49
|
+
* function NavigationSheet() {
|
|
50
|
+
* const [open, setOpen] = useState(false)
|
|
51
|
+
*
|
|
52
|
+
* return (
|
|
53
|
+
* <Sheet open={open} onOpenChange={setOpen}>
|
|
54
|
+
* <SheetTrigger asChild>
|
|
55
|
+
* <Button variant="outline">Menu</Button>
|
|
56
|
+
* </SheetTrigger>
|
|
57
|
+
* <SheetContent side="left">
|
|
58
|
+
* <SheetHeader>
|
|
59
|
+
* <SheetTitle>Navigation</SheetTitle>
|
|
60
|
+
* </SheetHeader>
|
|
61
|
+
* <nav className="py-4">
|
|
62
|
+
* <Button variant="ghost" className="w-full justify-start">
|
|
63
|
+
* Dashboard
|
|
64
|
+
* </Button>
|
|
65
|
+
* </nav>
|
|
66
|
+
* </SheetContent>
|
|
67
|
+
* </Sheet>
|
|
68
|
+
* )
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```tsx
|
|
74
|
+
* // Sheet with form handling
|
|
75
|
+
* <Sheet>
|
|
76
|
+
* <SheetTrigger asChild>
|
|
77
|
+
* <Button>Edit Profile</Button>
|
|
78
|
+
* </SheetTrigger>
|
|
79
|
+
* <SheetContent>
|
|
80
|
+
* <form onSubmit={handleSubmit}>
|
|
81
|
+
* <SheetHeader>
|
|
82
|
+
* <SheetTitle>Edit Profile</SheetTitle>
|
|
83
|
+
* <SheetDescription>
|
|
84
|
+
* Update your profile information.
|
|
85
|
+
* </SheetDescription>
|
|
86
|
+
* </SheetHeader>
|
|
87
|
+
* <div className="grid gap-4 py-4">
|
|
88
|
+
* <Input placeholder="Name" />
|
|
89
|
+
* <Input placeholder="Email" type="email" />
|
|
90
|
+
* </div>
|
|
91
|
+
* <SheetFooter>
|
|
92
|
+
* <SheetClose asChild>
|
|
93
|
+
* <Button type="button" variant="outline">Cancel</Button>
|
|
94
|
+
* </SheetClose>
|
|
95
|
+
* <Button type="submit">Save</Button>
|
|
96
|
+
* </SheetFooter>
|
|
97
|
+
* </form>
|
|
98
|
+
* </SheetContent>
|
|
99
|
+
* </Sheet>
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @accessibility
|
|
103
|
+
* - Focus is trapped within the sheet when open
|
|
104
|
+
* - Escape key closes the sheet
|
|
105
|
+
* - Background scroll is locked when sheet is open
|
|
106
|
+
* - Proper ARIA labeling for screen readers
|
|
107
|
+
* - Close button always visible and accessible
|
|
108
|
+
* - Supports keyboard navigation
|
|
109
|
+
*
|
|
110
|
+
* @see {@link https://ui.shadcn.com/docs/components/sheet} shadcn/ui Sheet documentation
|
|
111
|
+
* @see {@link https://www.radix-ui.com/primitives/docs/components/dialog} Radix UI Dialog primitive
|
|
112
|
+
* @since 1.0.0
|
|
113
|
+
*/
|
|
114
|
+
function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
|
|
115
|
+
return <SheetPrimitive.Root data-slot="sheet" {...props} />;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* SheetTrigger - Button or element that opens the sheet
|
|
120
|
+
*
|
|
121
|
+
* The trigger element that users interact with to open the sheet.
|
|
122
|
+
* Use the `asChild` prop to render as a different element while
|
|
123
|
+
* maintaining the trigger functionality.
|
|
124
|
+
*
|
|
125
|
+
* @component
|
|
126
|
+
* @example
|
|
127
|
+
* ```tsx
|
|
128
|
+
* // As a styled button
|
|
129
|
+
* <SheetTrigger asChild>
|
|
130
|
+
* <Button variant="outline">Open Settings</Button>
|
|
131
|
+
* </SheetTrigger>
|
|
132
|
+
*
|
|
133
|
+
* // As a simple button
|
|
134
|
+
* <SheetTrigger>Click to open</SheetTrigger>
|
|
135
|
+
*
|
|
136
|
+
* // As an icon button
|
|
137
|
+
* <SheetTrigger asChild>
|
|
138
|
+
* <Button size="icon" variant="ghost">
|
|
139
|
+
* <MenuIcon className="h-4 w-4" />
|
|
140
|
+
* </Button>
|
|
141
|
+
* </SheetTrigger>
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @param asChild - When true, merges props with the child element instead of rendering a button
|
|
145
|
+
*/
|
|
146
|
+
function SheetTrigger({
|
|
147
|
+
...props
|
|
148
|
+
}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
|
|
149
|
+
return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* SheetClose - Button that closes the sheet
|
|
154
|
+
*
|
|
155
|
+
* A button that closes the sheet when clicked. Can be placed anywhere
|
|
156
|
+
* within the sheet content. Use the `asChild` prop to render as a
|
|
157
|
+
* different element while maintaining the close functionality.
|
|
158
|
+
*
|
|
159
|
+
* @component
|
|
160
|
+
* @example
|
|
161
|
+
* ```tsx
|
|
162
|
+
* // In footer with styled button
|
|
163
|
+
* <SheetFooter>
|
|
164
|
+
* <SheetClose asChild>
|
|
165
|
+
* <Button variant="outline">Cancel</Button>
|
|
166
|
+
* </SheetClose>
|
|
167
|
+
* <Button type="submit">Save</Button>
|
|
168
|
+
* </SheetFooter>
|
|
169
|
+
*
|
|
170
|
+
* // As simple text button
|
|
171
|
+
* <SheetClose>Close</SheetClose>
|
|
172
|
+
*
|
|
173
|
+
* // Custom close button in content
|
|
174
|
+
* <SheetClose asChild>
|
|
175
|
+
* <Button variant="ghost" size="sm" className="ml-auto">
|
|
176
|
+
* <XIcon className="h-4 w-4" />
|
|
177
|
+
* </Button>
|
|
178
|
+
* </SheetClose>
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @param asChild - When true, merges props with the child element instead of rendering a button
|
|
182
|
+
*/
|
|
183
|
+
function SheetClose({
|
|
184
|
+
...props
|
|
185
|
+
}: React.ComponentProps<typeof SheetPrimitive.Close>) {
|
|
186
|
+
return <SheetPrimitive.Close data-slot="sheet-close" {...props} />;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* SheetPortal - Portal container for sheet content
|
|
191
|
+
*
|
|
192
|
+
* Renders the sheet content in a portal at the end of the document body.
|
|
193
|
+
* This ensures the sheet appears above other content with proper z-index.
|
|
194
|
+
* Usually not used directly - SheetContent handles this automatically.
|
|
195
|
+
*
|
|
196
|
+
* @component
|
|
197
|
+
* @param container - Optional container element to portal into
|
|
198
|
+
*/
|
|
199
|
+
function SheetPortal({
|
|
200
|
+
...props
|
|
201
|
+
}: React.ComponentProps<typeof SheetPrimitive.Portal>) {
|
|
202
|
+
return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* SheetOverlay - Background overlay behind the sheet
|
|
207
|
+
*
|
|
208
|
+
* A semi-transparent overlay that covers the entire viewport behind the sheet.
|
|
209
|
+
* Clicking the overlay closes the sheet. Includes smooth fade animations.
|
|
210
|
+
* Usually not used directly - SheetContent handles this automatically.
|
|
211
|
+
*
|
|
212
|
+
* @component
|
|
213
|
+
* @param className - Additional CSS classes for styling customization
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```tsx
|
|
217
|
+
* // Custom overlay with different opacity
|
|
218
|
+
* <SheetOverlay className="bg-black/30" />
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
function SheetOverlay({
|
|
222
|
+
className,
|
|
223
|
+
...props
|
|
224
|
+
}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
|
|
225
|
+
return (
|
|
226
|
+
<SheetPrimitive.Overlay
|
|
227
|
+
data-slot="sheet-overlay"
|
|
228
|
+
className={cn(
|
|
229
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
230
|
+
className,
|
|
231
|
+
)}
|
|
232
|
+
{...props}
|
|
233
|
+
/>
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* SheetContent - Main container for sheet content
|
|
239
|
+
*
|
|
240
|
+
* The primary content area of the sheet that slides in from the specified side.
|
|
241
|
+
* Includes automatic overlay, portal rendering, and close button. Contains smooth
|
|
242
|
+
* slide animations and responsive sizing.
|
|
243
|
+
*
|
|
244
|
+
* @component
|
|
245
|
+
* @param side - Which side of the screen the sheet slides in from
|
|
246
|
+
* @param className - Additional CSS classes for styling customization
|
|
247
|
+
* @param children - Content to display inside the sheet
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```tsx
|
|
251
|
+
* // Default right-side sheet
|
|
252
|
+
* <SheetContent>
|
|
253
|
+
* <SheetHeader>
|
|
254
|
+
* <SheetTitle>Settings</SheetTitle>
|
|
255
|
+
* </SheetHeader>
|
|
256
|
+
* <div className="py-4">
|
|
257
|
+
* Settings content here
|
|
258
|
+
* </div>
|
|
259
|
+
* </SheetContent>
|
|
260
|
+
*
|
|
261
|
+
* // Left-side navigation sheet
|
|
262
|
+
* <SheetContent side="left">
|
|
263
|
+
* <nav>
|
|
264
|
+
* <Button variant="ghost">Dashboard</Button>
|
|
265
|
+
* <Button variant="ghost">Profile</Button>
|
|
266
|
+
* </nav>
|
|
267
|
+
* </SheetContent>
|
|
268
|
+
*
|
|
269
|
+
* // Top sheet with custom height
|
|
270
|
+
* <SheetContent side="top" className="h-[300px]">
|
|
271
|
+
* <SheetHeader>
|
|
272
|
+
* <SheetTitle>Notifications</SheetTitle>
|
|
273
|
+
* </SheetHeader>
|
|
274
|
+
* </SheetContent>
|
|
275
|
+
*
|
|
276
|
+
* // Bottom sheet for mobile actions
|
|
277
|
+
* <SheetContent side="bottom" className="h-[400px]">
|
|
278
|
+
* <div className="grid grid-cols-2 gap-4">
|
|
279
|
+
* <Button>Action 1</Button>
|
|
280
|
+
* <Button>Action 2</Button>
|
|
281
|
+
* </div>
|
|
282
|
+
* </SheetContent>
|
|
283
|
+
* ```
|
|
284
|
+
*
|
|
285
|
+
* @accessibility
|
|
286
|
+
* - Includes built-in close button with proper ARIA labels
|
|
287
|
+
* - Focus trapped within content when open
|
|
288
|
+
* - Supports all keyboard interactions
|
|
289
|
+
*/
|
|
290
|
+
function SheetContent({
|
|
291
|
+
className,
|
|
292
|
+
children,
|
|
293
|
+
side = "right",
|
|
294
|
+
...props
|
|
295
|
+
}: React.ComponentProps<typeof SheetPrimitive.Content> & {
|
|
296
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
297
|
+
}) {
|
|
298
|
+
return (
|
|
299
|
+
<SheetPortal>
|
|
300
|
+
<SheetOverlay />
|
|
301
|
+
<SheetPrimitive.Content
|
|
302
|
+
data-slot="sheet-content"
|
|
303
|
+
className={cn(
|
|
304
|
+
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
305
|
+
side === "right" &&
|
|
306
|
+
"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
|
|
307
|
+
side === "left" &&
|
|
308
|
+
"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
|
|
309
|
+
side === "top" &&
|
|
310
|
+
"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
|
|
311
|
+
side === "bottom" &&
|
|
312
|
+
"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
|
|
313
|
+
className,
|
|
314
|
+
)}
|
|
315
|
+
{...props}
|
|
316
|
+
>
|
|
317
|
+
{children}
|
|
318
|
+
<SheetPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none">
|
|
319
|
+
<XIcon className="size-4" />
|
|
320
|
+
<span className="sr-only">Close</span>
|
|
321
|
+
</SheetPrimitive.Close>
|
|
322
|
+
</SheetPrimitive.Content>
|
|
323
|
+
</SheetPortal>
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* SheetHeader - Header section for sheet content
|
|
329
|
+
*
|
|
330
|
+
* A container for the sheet's title and description, positioned at the top
|
|
331
|
+
* of the sheet content. Provides consistent spacing and layout for sheet headers.
|
|
332
|
+
*
|
|
333
|
+
* @component
|
|
334
|
+
* @param className - Additional CSS classes for styling customization
|
|
335
|
+
*
|
|
336
|
+
* @example
|
|
337
|
+
* ```tsx
|
|
338
|
+
* <SheetHeader>
|
|
339
|
+
* <SheetTitle>Edit Profile</SheetTitle>
|
|
340
|
+
* <SheetDescription>
|
|
341
|
+
* Make changes to your profile information.
|
|
342
|
+
* </SheetDescription>
|
|
343
|
+
* </SheetHeader>
|
|
344
|
+
*
|
|
345
|
+
* // With custom styling
|
|
346
|
+
* <SheetHeader className="border-b pb-4">
|
|
347
|
+
* <SheetTitle>Settings</SheetTitle>
|
|
348
|
+
* </SheetHeader>
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
352
|
+
return (
|
|
353
|
+
<div
|
|
354
|
+
data-slot="sheet-header"
|
|
355
|
+
className={cn("flex flex-col gap-1.5 p-4", className)}
|
|
356
|
+
{...props}
|
|
357
|
+
/>
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* SheetFooter - Footer section for sheet actions
|
|
363
|
+
*
|
|
364
|
+
* A container for action buttons positioned at the bottom of the sheet content.
|
|
365
|
+
* Uses `mt-auto` to stick to the bottom and provides consistent spacing for buttons.
|
|
366
|
+
*
|
|
367
|
+
* @component
|
|
368
|
+
* @param className - Additional CSS classes for styling customization
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* ```tsx
|
|
372
|
+
* <SheetFooter>
|
|
373
|
+
* <SheetClose asChild>
|
|
374
|
+
* <Button variant="outline">Cancel</Button>
|
|
375
|
+
* </SheetClose>
|
|
376
|
+
* <Button type="submit">Save Changes</Button>
|
|
377
|
+
* </SheetFooter>
|
|
378
|
+
*
|
|
379
|
+
* // Single action footer
|
|
380
|
+
* <SheetFooter>
|
|
381
|
+
* <SheetClose asChild>
|
|
382
|
+
* <Button className="w-full">Done</Button>
|
|
383
|
+
* </SheetClose>
|
|
384
|
+
* </SheetFooter>
|
|
385
|
+
*
|
|
386
|
+
* // Custom layout
|
|
387
|
+
* <SheetFooter className="flex-row justify-between">
|
|
388
|
+
* <Button variant="ghost">Reset</Button>
|
|
389
|
+
* <div className="flex gap-2">
|
|
390
|
+
* <SheetClose asChild>
|
|
391
|
+
* <Button variant="outline">Cancel</Button>
|
|
392
|
+
* </SheetClose>
|
|
393
|
+
* <Button>Save</Button>
|
|
394
|
+
* </div>
|
|
395
|
+
* </SheetFooter>
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
399
|
+
return (
|
|
400
|
+
<div
|
|
401
|
+
data-slot="sheet-footer"
|
|
402
|
+
className={cn("mt-auto flex flex-col gap-2 p-4", className)}
|
|
403
|
+
{...props}
|
|
404
|
+
/>
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* SheetTitle - Title element for the sheet
|
|
410
|
+
*
|
|
411
|
+
* The main heading for the sheet content. Provides proper semantic heading
|
|
412
|
+
* and accessibility labeling for screen readers. Should be used within SheetHeader.
|
|
413
|
+
*
|
|
414
|
+
* @component
|
|
415
|
+
* @param className - Additional CSS classes for styling customization
|
|
416
|
+
*
|
|
417
|
+
* @example
|
|
418
|
+
* ```tsx
|
|
419
|
+
* <SheetHeader>
|
|
420
|
+
* <SheetTitle>Edit Profile</SheetTitle>
|
|
421
|
+
* <SheetDescription>Update your profile information.</SheetDescription>
|
|
422
|
+
* </SheetHeader>
|
|
423
|
+
*
|
|
424
|
+
* // With custom styling
|
|
425
|
+
* <SheetTitle className="text-lg text-blue-600">Settings</SheetTitle>
|
|
426
|
+
* ```
|
|
427
|
+
*
|
|
428
|
+
* @accessibility
|
|
429
|
+
* - Automatically provides ARIA labeling for the sheet
|
|
430
|
+
* - Renders as proper heading element
|
|
431
|
+
*/
|
|
432
|
+
function SheetTitle({
|
|
433
|
+
className,
|
|
434
|
+
...props
|
|
435
|
+
}: React.ComponentProps<typeof SheetPrimitive.Title>) {
|
|
436
|
+
return (
|
|
437
|
+
<SheetPrimitive.Title
|
|
438
|
+
data-slot="sheet-title"
|
|
439
|
+
className={cn("text-foreground font-semibold", className)}
|
|
440
|
+
{...props}
|
|
441
|
+
/>
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* SheetDescription - Description text for the sheet
|
|
447
|
+
*
|
|
448
|
+
* Provides additional context about the sheet's purpose or instructions.
|
|
449
|
+
* Appears below the title with muted styling. Should be used within SheetHeader.
|
|
450
|
+
*
|
|
451
|
+
* @component
|
|
452
|
+
* @param className - Additional CSS classes for styling customization
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* ```tsx
|
|
456
|
+
* <SheetHeader>
|
|
457
|
+
* <SheetTitle>Edit Profile</SheetTitle>
|
|
458
|
+
* <SheetDescription>
|
|
459
|
+
* Make changes to your profile here. Click save when you're done.
|
|
460
|
+
* </SheetDescription>
|
|
461
|
+
* </SheetHeader>
|
|
462
|
+
*
|
|
463
|
+
* // Optional description
|
|
464
|
+
* <SheetDescription className="text-orange-600">
|
|
465
|
+
* This action cannot be undone.
|
|
466
|
+
* </SheetDescription>
|
|
467
|
+
* ```
|
|
468
|
+
*
|
|
469
|
+
* @accessibility
|
|
470
|
+
* - Provides additional context for screen readers
|
|
471
|
+
* - Linked to the sheet via ARIA attributes
|
|
472
|
+
*/
|
|
473
|
+
function SheetDescription({
|
|
474
|
+
className,
|
|
475
|
+
...props
|
|
476
|
+
}: React.ComponentProps<typeof SheetPrimitive.Description>) {
|
|
477
|
+
return (
|
|
478
|
+
<SheetPrimitive.Description
|
|
479
|
+
data-slot="sheet-description"
|
|
480
|
+
className={cn("text-muted-foreground text-sm", className)}
|
|
481
|
+
{...props}
|
|
482
|
+
/>
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
export {
|
|
487
|
+
Sheet,
|
|
488
|
+
SheetTrigger,
|
|
489
|
+
SheetClose,
|
|
490
|
+
SheetContent,
|
|
491
|
+
SheetHeader,
|
|
492
|
+
SheetFooter,
|
|
493
|
+
SheetTitle,
|
|
494
|
+
SheetDescription,
|
|
495
|
+
};
|