@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,339 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
3
|
+
/**
|
|
4
|
+
* ContextMenu - A contextual menu that appears on right-click or long-press
|
|
5
|
+
*
|
|
6
|
+
* Context menus provide contextual actions for specific elements or areas.
|
|
7
|
+
* Built on Radix UI primitives, they appear when users right-click (or long-press
|
|
8
|
+
* on touch devices) and offer actions relevant to the clicked item or region.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* // Basic context menu with items
|
|
13
|
+
* <ContextMenu>
|
|
14
|
+
* <ContextMenuTrigger>
|
|
15
|
+
* <div className="border rounded p-4">
|
|
16
|
+
* Right-click here
|
|
17
|
+
* </div>
|
|
18
|
+
* </ContextMenuTrigger>
|
|
19
|
+
* <ContextMenuContent>
|
|
20
|
+
* <ContextMenuItem>Copy</ContextMenuItem>
|
|
21
|
+
* <ContextMenuItem>Paste</ContextMenuItem>
|
|
22
|
+
* <ContextMenuSeparator />
|
|
23
|
+
* <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
|
|
24
|
+
* </ContextMenuContent>
|
|
25
|
+
* </ContextMenu>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* // With sub-menus and shortcuts
|
|
31
|
+
* <ContextMenu>
|
|
32
|
+
* <ContextMenuTrigger>Right-click me</ContextMenuTrigger>
|
|
33
|
+
* <ContextMenuContent>
|
|
34
|
+
* <ContextMenuItem>
|
|
35
|
+
* Edit <ContextMenuShortcut>⌘E</ContextMenuShortcut>
|
|
36
|
+
* </ContextMenuItem>
|
|
37
|
+
* <ContextMenuSub>
|
|
38
|
+
* <ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
39
|
+
* <ContextMenuSubContent>
|
|
40
|
+
* <ContextMenuItem>Email</ContextMenuItem>
|
|
41
|
+
* <ContextMenuItem>Copy Link</ContextMenuItem>
|
|
42
|
+
* </ContextMenuSubContent>
|
|
43
|
+
* </ContextMenuSub>
|
|
44
|
+
* </ContextMenuContent>
|
|
45
|
+
* </ContextMenu>
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @accessibility
|
|
49
|
+
* - Triggered by right-click, long-press, or Shift+F10
|
|
50
|
+
* - Full keyboard navigation with arrow keys
|
|
51
|
+
* - Escape key closes the menu and sub-menus
|
|
52
|
+
* - Enter/Space activates menu items
|
|
53
|
+
* - Tab moves focus outside the menu
|
|
54
|
+
* - Proper ARIA roles and focus management
|
|
55
|
+
* - Screen reader announcements for menu state changes
|
|
56
|
+
*
|
|
57
|
+
* @see {@link https://ui.shadcn.com/docs/components/context-menu} shadcn/ui docs
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @see {@link https://www.radix-ui.com/primitives/docs/components/context-menu} Radix UI docs
|
|
60
|
+
*/
|
|
61
|
+
declare function ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
/**
|
|
63
|
+
* ContextMenuTrigger - The element that triggers the context menu
|
|
64
|
+
*
|
|
65
|
+
* Wraps any element to make it respond to right-click or long-press events.
|
|
66
|
+
* The trigger element should provide visual feedback about its interactive nature.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <ContextMenuTrigger>
|
|
71
|
+
* <Button variant="outline">Right-click me</Button>
|
|
72
|
+
* </ContextMenuTrigger>
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @param children - Any React element that should trigger the context menu
|
|
76
|
+
*/
|
|
77
|
+
declare function ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
/**
|
|
79
|
+
* ContextMenuGroup - Logical grouping for menu items
|
|
80
|
+
*
|
|
81
|
+
* Groups related menu items together for better organization and accessibility.
|
|
82
|
+
* Provides semantic structure without visual changes.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```tsx
|
|
86
|
+
* <ContextMenuGroup>
|
|
87
|
+
* <ContextMenuItem>Copy</ContextMenuItem>
|
|
88
|
+
* <ContextMenuItem>Cut</ContextMenuItem>
|
|
89
|
+
* <ContextMenuItem>Paste</ContextMenuItem>
|
|
90
|
+
* </ContextMenuGroup>
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
declare function ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
94
|
+
/**
|
|
95
|
+
* ContextMenuPortal - Portal container for menu content
|
|
96
|
+
*
|
|
97
|
+
* Renders menu content in a portal to ensure proper layering and positioning.
|
|
98
|
+
* Typically used with sub-menus to control rendering context.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```tsx
|
|
102
|
+
* <ContextMenuPortal>
|
|
103
|
+
* <ContextMenuSubContent>
|
|
104
|
+
* <ContextMenuItem>Portal Item</ContextMenuItem>
|
|
105
|
+
* </ContextMenuSubContent>
|
|
106
|
+
* </ContextMenuPortal>
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @param container - Custom container element for the portal
|
|
110
|
+
*/
|
|
111
|
+
declare function ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
112
|
+
/**
|
|
113
|
+
* ContextMenuSub - Container for sub-menu functionality
|
|
114
|
+
*
|
|
115
|
+
* Wraps a sub-menu trigger and its content to create nested menu structures.
|
|
116
|
+
* Enables hierarchical organization of menu items.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```tsx
|
|
120
|
+
* <ContextMenuSub>
|
|
121
|
+
* <ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
122
|
+
* <ContextMenuSubContent>
|
|
123
|
+
* <ContextMenuItem>Email</ContextMenuItem>
|
|
124
|
+
* <ContextMenuItem>Copy Link</ContextMenuItem>
|
|
125
|
+
* </ContextMenuSubContent>
|
|
126
|
+
* </ContextMenuSub>
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
declare function ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
|
|
130
|
+
/**
|
|
131
|
+
* ContextMenuRadioGroup - Container for radio button items
|
|
132
|
+
*
|
|
133
|
+
* Groups radio items together to allow single selection from multiple options.
|
|
134
|
+
* Manages the selected state and ensures only one item can be selected.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```tsx
|
|
138
|
+
* <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
|
|
139
|
+
* <ContextMenuRadioItem value="light">Light</ContextMenuRadioItem>
|
|
140
|
+
* <ContextMenuRadioItem value="dark">Dark</ContextMenuRadioItem>
|
|
141
|
+
* <ContextMenuRadioItem value="system">System</ContextMenuRadioItem>
|
|
142
|
+
* </ContextMenuRadioGroup>
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* @param value - The currently selected value
|
|
146
|
+
* @param onValueChange - Callback fired when selection changes
|
|
147
|
+
*/
|
|
148
|
+
declare function ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
|
|
149
|
+
/**
|
|
150
|
+
* ContextMenuSubTrigger - Trigger element for opening sub-menus
|
|
151
|
+
*
|
|
152
|
+
* Menu item that opens a sub-menu on hover or focus. Automatically includes
|
|
153
|
+
* a chevron icon to indicate the presence of a sub-menu.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```tsx
|
|
157
|
+
* <ContextMenuSubTrigger>
|
|
158
|
+
* <Share className="mr-2 h-4 w-4" />
|
|
159
|
+
* Share Options
|
|
160
|
+
* </ContextMenuSubTrigger>
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @param inset - Whether to indent the trigger for proper alignment
|
|
164
|
+
* @param children - Content of the trigger (text, icons, etc.)
|
|
165
|
+
*/
|
|
166
|
+
declare function ContextMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
|
|
167
|
+
/** Whether to indent the trigger for proper alignment */
|
|
168
|
+
inset?: boolean;
|
|
169
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
170
|
+
/**
|
|
171
|
+
* ContextMenuSubContent - Container for sub-menu items
|
|
172
|
+
*
|
|
173
|
+
* Contains the items within a sub-menu. Automatically positioned relative
|
|
174
|
+
* to its trigger with collision detection and smooth animations.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```tsx
|
|
178
|
+
* <ContextMenuSubContent>
|
|
179
|
+
* <ContextMenuItem>Option 1</ContextMenuItem>
|
|
180
|
+
* <ContextMenuItem>Option 2</ContextMenuItem>
|
|
181
|
+
* <ContextMenuSeparator />
|
|
182
|
+
* <ContextMenuItem>Option 3</ContextMenuItem>
|
|
183
|
+
* </ContextMenuSubContent>
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @param className - Additional CSS classes for styling
|
|
187
|
+
* @param children - Sub-menu items, separators, and labels
|
|
188
|
+
*/
|
|
189
|
+
declare function ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
|
|
190
|
+
/**
|
|
191
|
+
* ContextMenuContent - The container for context menu items
|
|
192
|
+
*
|
|
193
|
+
* Contains all menu items, separators, labels, and sub-menus. Automatically
|
|
194
|
+
* positioned relative to the trigger point with collision detection.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```tsx
|
|
198
|
+
* <ContextMenuContent className="w-56">
|
|
199
|
+
* <ContextMenuLabel>Actions</ContextMenuLabel>
|
|
200
|
+
* <ContextMenuSeparator />
|
|
201
|
+
* <ContextMenuItem>Copy</ContextMenuItem>
|
|
202
|
+
* <ContextMenuItem>Paste</ContextMenuItem>
|
|
203
|
+
* </ContextMenuContent>
|
|
204
|
+
* ```
|
|
205
|
+
*
|
|
206
|
+
* @param className - Additional CSS classes for styling
|
|
207
|
+
* @param children - Menu items, separators, labels, and sub-menus
|
|
208
|
+
*/
|
|
209
|
+
declare function ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
210
|
+
/**
|
|
211
|
+
* ContextMenuItem - An actionable item within the context menu
|
|
212
|
+
*
|
|
213
|
+
* Individual menu items that users can interact with. Supports different
|
|
214
|
+
* variants for visual hierarchy and includes automatic icon styling.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```tsx
|
|
218
|
+
* <ContextMenuItem>
|
|
219
|
+
* <Edit className="mr-2 h-4 w-4" />
|
|
220
|
+
* Edit
|
|
221
|
+
* <ContextMenuShortcut>⌘E</ContextMenuShortcut>
|
|
222
|
+
* </ContextMenuItem>
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```tsx
|
|
227
|
+
* <ContextMenuItem variant="destructive">
|
|
228
|
+
* <Trash2 className="mr-2 h-4 w-4" />
|
|
229
|
+
* Delete
|
|
230
|
+
* </ContextMenuItem>
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @param inset - Whether to indent the item (useful when mixing items with/without icons)
|
|
234
|
+
* @param variant - Visual variant: "default" for normal actions, "destructive" for dangerous actions
|
|
235
|
+
* @param disabled - Whether the item is disabled and non-interactive
|
|
236
|
+
* @param onSelect - Callback fired when the item is selected
|
|
237
|
+
*/
|
|
238
|
+
declare function ContextMenuItem({ className, inset, variant, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {
|
|
239
|
+
/** Whether to indent the item for proper alignment */
|
|
240
|
+
inset?: boolean;
|
|
241
|
+
/** Visual variant for the menu item */
|
|
242
|
+
variant?: "default" | "destructive";
|
|
243
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
244
|
+
/**
|
|
245
|
+
* ContextMenuCheckboxItem - A menu item with checkbox functionality
|
|
246
|
+
*
|
|
247
|
+
* Menu items that can be toggled on/off, useful for binary settings or options.
|
|
248
|
+
* Displays a check mark when selected and supports controlled state management.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```tsx
|
|
252
|
+
* const [showGrid, setShowGrid] = useState(true)
|
|
253
|
+
*
|
|
254
|
+
* <ContextMenuCheckboxItem
|
|
255
|
+
* checked={showGrid}
|
|
256
|
+
* onCheckedChange={setShowGrid}
|
|
257
|
+
* >
|
|
258
|
+
* Show Grid
|
|
259
|
+
* </ContextMenuCheckboxItem>
|
|
260
|
+
* ```
|
|
261
|
+
*
|
|
262
|
+
* @param checked - Whether the checkbox is checked
|
|
263
|
+
* @param onCheckedChange - Callback fired when the checked state changes
|
|
264
|
+
* @param disabled - Whether the item is disabled
|
|
265
|
+
*/
|
|
266
|
+
declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>): import("react/jsx-runtime").JSX.Element;
|
|
267
|
+
/**
|
|
268
|
+
* ContextMenuRadioItem - A radio button item within a radio group
|
|
269
|
+
*
|
|
270
|
+
* Menu items that allow single selection from a group of options.
|
|
271
|
+
* Must be used within a ContextMenuRadioGroup for proper functionality.
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```tsx
|
|
275
|
+
* <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
|
|
276
|
+
* <ContextMenuRadioItem value="light">Light</ContextMenuRadioItem>
|
|
277
|
+
* <ContextMenuRadioItem value="dark">Dark</ContextMenuRadioItem>
|
|
278
|
+
* <ContextMenuRadioItem value="system">System</ContextMenuRadioItem>
|
|
279
|
+
* </ContextMenuRadioGroup>
|
|
280
|
+
* ```
|
|
281
|
+
*
|
|
282
|
+
* @param value - The value of this radio item
|
|
283
|
+
* @param disabled - Whether the item is disabled
|
|
284
|
+
*/
|
|
285
|
+
declare function ContextMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>): import("react/jsx-runtime").JSX.Element;
|
|
286
|
+
/**
|
|
287
|
+
* ContextMenuLabel - A non-interactive label for menu sections
|
|
288
|
+
*
|
|
289
|
+
* Used to group related menu items and provide context. Labels are not
|
|
290
|
+
* focusable and serve as visual section headers within the menu.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```tsx
|
|
294
|
+
* <ContextMenuLabel>File Actions</ContextMenuLabel>
|
|
295
|
+
* <ContextMenuSeparator />
|
|
296
|
+
* <ContextMenuItem>Open</ContextMenuItem>
|
|
297
|
+
* <ContextMenuItem>Save</ContextMenuItem>
|
|
298
|
+
* ```
|
|
299
|
+
*
|
|
300
|
+
* @param inset - Whether to indent the label to align with inset items
|
|
301
|
+
*/
|
|
302
|
+
declare function ContextMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {
|
|
303
|
+
/** Whether to indent the label for proper alignment */
|
|
304
|
+
inset?: boolean;
|
|
305
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
306
|
+
/**
|
|
307
|
+
* ContextMenuSeparator - A visual divider between menu items
|
|
308
|
+
*
|
|
309
|
+
* Creates visual separation between groups of related menu items.
|
|
310
|
+
* Typically used after labels or to separate different types of actions.
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```tsx
|
|
314
|
+
* <ContextMenuItem>Copy</ContextMenuItem>
|
|
315
|
+
* <ContextMenuItem>Paste</ContextMenuItem>
|
|
316
|
+
* <ContextMenuSeparator />
|
|
317
|
+
* <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
declare function ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
321
|
+
/**
|
|
322
|
+
* ContextMenuShortcut - Displays keyboard shortcuts within menu items
|
|
323
|
+
*
|
|
324
|
+
* Shows keyboard shortcuts aligned to the right side of menu items.
|
|
325
|
+
* Provides visual indication of available keyboard shortcuts for actions.
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```tsx
|
|
329
|
+
* <ContextMenuItem>
|
|
330
|
+
* Copy
|
|
331
|
+
* <ContextMenuShortcut>⌘C</ContextMenuShortcut>
|
|
332
|
+
* </ContextMenuItem>
|
|
333
|
+
* ```
|
|
334
|
+
*
|
|
335
|
+
* @param children - The shortcut text (e.g., "⌘C", "Ctrl+V")
|
|
336
|
+
*/
|
|
337
|
+
declare function ContextMenuShortcut({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
338
|
+
export { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuShortcut, ContextMenuGroup, ContextMenuPortal, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuRadioGroup, };
|
|
339
|
+
//# sourceMappingURL=context-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/context-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Properties for the DatePicker component
|
|
3
|
+
*
|
|
4
|
+
* @type DatePickerProps
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
type DatePickerProps = {
|
|
8
|
+
/**
|
|
9
|
+
* The currently selected date value. When undefined, no date is selected.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const [selectedDate, setSelectedDate] = useState<Date>();
|
|
14
|
+
* <DatePicker date={selectedDate} onDateChange={setSelectedDate} />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
date?: Date;
|
|
18
|
+
/**
|
|
19
|
+
* Callback function invoked when the user selects or clears a date.
|
|
20
|
+
* Receives the selected date or undefined when cleared.
|
|
21
|
+
*
|
|
22
|
+
* @param date - The newly selected date or undefined if cleared
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <DatePicker onDateChange={(date) => console.log('Selected:', date)} />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
onDateChange?: (date: Date | undefined) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Placeholder text displayed in the trigger button when no date is selected.
|
|
32
|
+
* Provides context about what kind of date selection is expected.
|
|
33
|
+
*
|
|
34
|
+
* @default "Pick a date"
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <DatePicker placeholder="Select your birthday" />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
/**
|
|
43
|
+
* When true, disables the date picker preventing user interaction.
|
|
44
|
+
* The trigger button will appear disabled and the popover cannot be opened.
|
|
45
|
+
*
|
|
46
|
+
* @default false
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```tsx
|
|
50
|
+
* <DatePicker disabled={true} placeholder="Date locked" />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
disabled?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Additional CSS classes to apply to the trigger button.
|
|
56
|
+
* Useful for customizing width, spacing, or other styling.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* <DatePicker className="w-full" /> // Full width
|
|
61
|
+
* <DatePicker className="w-[300px]" /> // Fixed width
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
className?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* A comprehensive date selection component that combines an accessible button trigger
|
|
68
|
+
* with a full-featured calendar popover for intuitive date picking.
|
|
69
|
+
*
|
|
70
|
+
* Built on shadcn/ui design principles, this component provides a polished interface
|
|
71
|
+
* for date selection with proper accessibility, keyboard navigation, and visual feedback.
|
|
72
|
+
* The selected date is displayed using date-fns formatting for consistent presentation.
|
|
73
|
+
*
|
|
74
|
+
* @component
|
|
75
|
+
* @example
|
|
76
|
+
* ```tsx
|
|
77
|
+
* // Basic controlled date picker
|
|
78
|
+
* const [date, setDate] = useState<Date>();
|
|
79
|
+
*
|
|
80
|
+
* <DatePicker
|
|
81
|
+
* date={date}
|
|
82
|
+
* onDateChange={setDate}
|
|
83
|
+
* placeholder="Select date"
|
|
84
|
+
* />
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```tsx
|
|
89
|
+
* // Date picker for forms with validation
|
|
90
|
+
* const [birthDate, setBirthDate] = useState<Date>();
|
|
91
|
+
*
|
|
92
|
+
* <DatePicker
|
|
93
|
+
* date={birthDate}
|
|
94
|
+
* onDateChange={setBirthDate}
|
|
95
|
+
* placeholder="Select birth date"
|
|
96
|
+
* className="w-[280px]"
|
|
97
|
+
* disabled={isSubmitting}
|
|
98
|
+
* />
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```tsx
|
|
103
|
+
* // Date range start/end picker
|
|
104
|
+
* <div className="flex gap-2 items-center">
|
|
105
|
+
* <DatePicker
|
|
106
|
+
* date={startDate}
|
|
107
|
+
* onDateChange={setStartDate}
|
|
108
|
+
* placeholder="Start date"
|
|
109
|
+
* className="w-[180px]"
|
|
110
|
+
* />
|
|
111
|
+
* <span>to</span>
|
|
112
|
+
* <DatePicker
|
|
113
|
+
* date={endDate}
|
|
114
|
+
* onDateChange={setEndDate}
|
|
115
|
+
* placeholder="End date"
|
|
116
|
+
* className="w-[180px]"
|
|
117
|
+
* />
|
|
118
|
+
* </div>
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @accessibility
|
|
122
|
+
* - **Keyboard Navigation**: Full keyboard support with Tab, Enter, Escape, and arrow keys
|
|
123
|
+
* - **Screen Reader Support**: Proper ARIA labels and live announcements for date changes
|
|
124
|
+
* - **Focus Management**: Focus returns to trigger button when popover closes
|
|
125
|
+
* - **Visual Indicators**: Clear visual states for disabled, selected, and focused elements
|
|
126
|
+
* - **Date Formatting**: Consistent date presentation using localized formatting
|
|
127
|
+
*
|
|
128
|
+
* @features
|
|
129
|
+
* - Single date selection with visual confirmation
|
|
130
|
+
* - Popover-based calendar that doesn't interfere with page layout
|
|
131
|
+
* - Automatic popover positioning and collision detection
|
|
132
|
+
* - Internal state management with optional external control
|
|
133
|
+
* - Customizable trigger button styling and width
|
|
134
|
+
* - Date formatting using date-fns for internationalization support
|
|
135
|
+
*
|
|
136
|
+
* @see {@link https://ui.shadcn.com/docs/components/date-picker} shadcn/ui Date Picker patterns
|
|
137
|
+
* @see {@link Calendar} - The underlying calendar component
|
|
138
|
+
* @see {@link Popover} - The popover container component
|
|
139
|
+
* @see {@link Button} - The trigger button component
|
|
140
|
+
*
|
|
141
|
+
* @since 1.0.0
|
|
142
|
+
*/
|
|
143
|
+
declare function DatePicker({ date, onDateChange, placeholder, disabled, className, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
144
|
+
export { DatePicker };
|
|
145
|
+
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/date-picker.tsx"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,KAAK,eAAe,GAAG;IACrB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAEhD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,iBAAS,UAAU,CAAC,EAClB,IAAI,EACJ,YAAY,EACZ,WAA2B,EAC3B,QAAgB,EAChB,SAAS,GACV,EAAE,eAAe,2CAgDjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|