@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,114 @@
|
|
|
1
|
+
# Utilities
|
|
2
|
+
|
|
3
|
+
Essential utility components, hooks, and functions for building responsive and accessible interfaces.
|
|
4
|
+
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
### ThemeToggle
|
|
8
|
+
Theme switching component with light/dark mode support.
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { ThemeToggle } from "@neynar/ui"
|
|
12
|
+
|
|
13
|
+
export function Header() {
|
|
14
|
+
return (
|
|
15
|
+
<div className="flex items-center justify-between p-4">
|
|
16
|
+
<h1>My App</h1>
|
|
17
|
+
<ThemeToggle />
|
|
18
|
+
</div>
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### ScrollArea
|
|
24
|
+
Custom scrollable container with styled scrollbars.
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { ScrollArea } from "@neynar/ui"
|
|
28
|
+
|
|
29
|
+
export function MessageList({ messages }) {
|
|
30
|
+
return (
|
|
31
|
+
<ScrollArea className="h-96 w-full border rounded-md p-4">
|
|
32
|
+
{messages.map((message) => (
|
|
33
|
+
<div key={message.id} className="mb-2">{message.text}</div>
|
|
34
|
+
))}
|
|
35
|
+
</ScrollArea>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Resizable
|
|
41
|
+
Resizable panels with drag handles.
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from "@neynar/ui"
|
|
45
|
+
|
|
46
|
+
export function Layout() {
|
|
47
|
+
return (
|
|
48
|
+
<ResizablePanelGroup direction="horizontal">
|
|
49
|
+
<ResizablePanel defaultSize={25}>Sidebar</ResizablePanel>
|
|
50
|
+
<ResizableHandle />
|
|
51
|
+
<ResizablePanel defaultSize={75}>Main Content</ResizablePanel>
|
|
52
|
+
</ResizablePanelGroup>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Hooks
|
|
58
|
+
|
|
59
|
+
### useTheme
|
|
60
|
+
Theme management hook for dark/light mode.
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
import { useTheme } from "@neynar/ui"
|
|
64
|
+
|
|
65
|
+
export function CustomThemeToggle() {
|
|
66
|
+
const { theme, setTheme } = useTheme()
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<button onClick={() => setTheme(theme === "dark" ? "light" : "dark")}>
|
|
70
|
+
Current: {theme}
|
|
71
|
+
</button>
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### useMobile
|
|
77
|
+
Responsive design hook for mobile detection.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { useMobile } from "@neynar/ui"
|
|
81
|
+
|
|
82
|
+
export function ResponsiveComponent() {
|
|
83
|
+
const isMobile = useMobile()
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div className={isMobile ? "grid-cols-1" : "grid-cols-3"}>
|
|
87
|
+
Content adapts to screen size
|
|
88
|
+
</div>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Utils
|
|
94
|
+
|
|
95
|
+
### cn
|
|
96
|
+
Class name utility for conditional styling.
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
import { cn } from "@neynar/ui"
|
|
100
|
+
|
|
101
|
+
export function Button({ variant, className, ...props }) {
|
|
102
|
+
return (
|
|
103
|
+
<button
|
|
104
|
+
className={cn(
|
|
105
|
+
"px-4 py-2 rounded",
|
|
106
|
+
variant === "primary" && "bg-blue-500 text-white",
|
|
107
|
+
variant === "secondary" && "bg-gray-200",
|
|
108
|
+
className
|
|
109
|
+
)}
|
|
110
|
+
{...props}
|
|
111
|
+
/>
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
```
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# @neynar/ui Composition Guide
|
|
2
|
+
|
|
3
|
+
Essential patterns for building interfaces with @neynar/ui components. Focus on practical composition techniques and TypeScript best practices.
|
|
4
|
+
|
|
5
|
+
## Import Patterns
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// ✅ Correct - named imports with alias
|
|
9
|
+
import { Button, Card, CardContent, CardHeader, CardTitle } from "@neynar/ui"
|
|
10
|
+
import { useIsMobile, cn } from "@neynar/ui"
|
|
11
|
+
|
|
12
|
+
// ❌ Avoid - relative imports or default exports
|
|
13
|
+
import { Button } from "./ui/button"
|
|
14
|
+
import Button from "@neynar/ui"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Component Composition
|
|
18
|
+
|
|
19
|
+
### Card-Based Layouts
|
|
20
|
+
Cards are the primary container component. Always use sub-components for structure:
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { Card, CardHeader, CardTitle, CardContent, CardFooter, Button } from "@neynar/ui"
|
|
24
|
+
|
|
25
|
+
function UserProfile() {
|
|
26
|
+
return (
|
|
27
|
+
<Card>
|
|
28
|
+
<CardHeader>
|
|
29
|
+
<CardTitle>User Settings</CardTitle>
|
|
30
|
+
</CardHeader>
|
|
31
|
+
<CardContent>
|
|
32
|
+
<p>Manage your account preferences</p>
|
|
33
|
+
</CardContent>
|
|
34
|
+
<CardFooter>
|
|
35
|
+
<Button>Save Changes</Button>
|
|
36
|
+
</CardFooter>
|
|
37
|
+
</Card>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Form Patterns
|
|
43
|
+
Combine form components with consistent spacing:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { Label, Input, Button, Card, CardContent } from "@neynar/ui"
|
|
47
|
+
|
|
48
|
+
function LoginForm() {
|
|
49
|
+
return (
|
|
50
|
+
<Card className="w-96">
|
|
51
|
+
<CardContent className="space-y-4 pt-6">
|
|
52
|
+
<div className="space-y-2">
|
|
53
|
+
<Label htmlFor="email">Email</Label>
|
|
54
|
+
<Input id="email" type="email" placeholder="Enter email" />
|
|
55
|
+
</div>
|
|
56
|
+
<div className="space-y-2">
|
|
57
|
+
<Label htmlFor="password">Password</Label>
|
|
58
|
+
<Input id="password" type="password" />
|
|
59
|
+
</div>
|
|
60
|
+
<Button className="w-full">Sign In</Button>
|
|
61
|
+
</CardContent>
|
|
62
|
+
</Card>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Responsive Patterns
|
|
68
|
+
|
|
69
|
+
Use `useIsMobile` for adaptive layouts:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { useIsMobile, Dialog, Sheet, Button } from "@neynar/ui"
|
|
73
|
+
|
|
74
|
+
function ResponsiveModal({ children }) {
|
|
75
|
+
const isMobile = useIsMobile()
|
|
76
|
+
|
|
77
|
+
const Wrapper = isMobile ? Sheet : Dialog
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<Wrapper>
|
|
81
|
+
<Button>Open Modal</Button>
|
|
82
|
+
{children}
|
|
83
|
+
</Wrapper>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Data Display
|
|
89
|
+
|
|
90
|
+
Combine table components for structured data:
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from "@neynar/ui"
|
|
94
|
+
|
|
95
|
+
function UserTable({ users }) {
|
|
96
|
+
return (
|
|
97
|
+
<Table>
|
|
98
|
+
<TableHeader>
|
|
99
|
+
<TableRow>
|
|
100
|
+
<TableHead>Name</TableHead>
|
|
101
|
+
<TableHead>Email</TableHead>
|
|
102
|
+
</TableRow>
|
|
103
|
+
</TableHeader>
|
|
104
|
+
<TableBody>
|
|
105
|
+
{users.map(user => (
|
|
106
|
+
<TableRow key={user.id}>
|
|
107
|
+
<TableCell>{user.name}</TableCell>
|
|
108
|
+
<TableCell>{user.email}</TableCell>
|
|
109
|
+
</TableRow>
|
|
110
|
+
))}
|
|
111
|
+
</TableBody>
|
|
112
|
+
</Table>
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## TypeScript Patterns
|
|
118
|
+
|
|
119
|
+
Always use function declarations and type definitions:
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
import { Button, type ButtonProps } from "@neynar/ui"
|
|
123
|
+
|
|
124
|
+
// ✅ Function declaration with types
|
|
125
|
+
function CustomButton({ variant = "default", ...props }: ButtonProps) {
|
|
126
|
+
return <Button variant={variant} {...props} />
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ❌ Avoid const/arrow functions for components
|
|
130
|
+
const CustomButton = ({ variant = "default", ...props }: ButtonProps) => {
|
|
131
|
+
return <Button variant={variant} {...props} />
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Utility Usage
|
|
136
|
+
|
|
137
|
+
Use `cn()` for conditional styling:
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
import { Button, cn } from "@neynar/ui"
|
|
141
|
+
|
|
142
|
+
function StatusButton({ isActive, children }) {
|
|
143
|
+
return (
|
|
144
|
+
<Button
|
|
145
|
+
className={cn(
|
|
146
|
+
"transition-colors",
|
|
147
|
+
isActive && "bg-green-500 hover:bg-green-600"
|
|
148
|
+
)}
|
|
149
|
+
>
|
|
150
|
+
{children}
|
|
151
|
+
</Button>
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Common Patterns Summary
|
|
157
|
+
|
|
158
|
+
1. **Always use named imports** from `@neynar/ui`
|
|
159
|
+
2. **Function declarations** for all components
|
|
160
|
+
3. **Type definitions** instead of interfaces
|
|
161
|
+
4. **Composition over configuration** - combine simple components
|
|
162
|
+
5. **Use `useIsMobile`** for responsive behavior
|
|
163
|
+
6. **Leverage `cn()`** for conditional classes
|
|
164
|
+
7. **Structure with Cards** for most layouts
|
|
165
|
+
8. **Consistent spacing** with Tailwind classes like `space-y-4`
|
package/llms.txt
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# @neynar/ui Component Library
|
|
2
|
+
|
|
3
|
+
A production-ready React component library with 52 components, 2 hooks, and 1 utility. All components use modern TypeScript patterns with function declarations and named exports.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { Button, Card, useIsMobile, cn } from "@neynar/ui"
|
|
9
|
+
import "@neynar/ui/styles"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Components (52)
|
|
13
|
+
|
|
14
|
+
### Layout Components → [docs/llm/components/layout.md](docs/llm/components/layout.md)
|
|
15
|
+
- **Container** - Responsive container with max-width constraints
|
|
16
|
+
- **Stack** - Flexible vertical and horizontal layout primitive
|
|
17
|
+
- **Separator** - Visual content dividers
|
|
18
|
+
- **AspectRatio** - Responsive aspect ratio containers
|
|
19
|
+
- **ResizablePanelGroup**, **ResizablePanel**, **ResizableHandle** - Interactive resizable layouts
|
|
20
|
+
- **ScrollArea**, **ScrollBar** - Custom scrollable areas
|
|
21
|
+
- **Accordion**, **AccordionItem**, **AccordionTrigger**, **AccordionContent** - Collapsible sections
|
|
22
|
+
- **Collapsible**, **CollapsibleTrigger**, **CollapsibleContent** - Simple show/hide content
|
|
23
|
+
|
|
24
|
+
### Navigation Components → [docs/llm/components/navigation.md](docs/llm/components/navigation.md)
|
|
25
|
+
- **NavigationMenu** + 8 sub-components - Complex navigation menus
|
|
26
|
+
- **Breadcrumb** + 6 sub-components - Hierarchical navigation
|
|
27
|
+
- **Pagination** + 6 sub-components - Data pagination
|
|
28
|
+
- **Menubar** + 14 sub-components - Desktop-style menu bars
|
|
29
|
+
- **Sidebar** + 20 sub-components - Application sidebars
|
|
30
|
+
- **Tabs**, **TabsList**, **TabsTrigger**, **TabsContent** - Tabbed interfaces
|
|
31
|
+
|
|
32
|
+
### Form Components → [docs/llm/components/forms.md](docs/llm/components/forms.md)
|
|
33
|
+
- **Input** - Text input fields with validation states
|
|
34
|
+
- **Textarea** - Multi-line text input with auto-resize
|
|
35
|
+
- **TextField** - Complete form field with label and validation
|
|
36
|
+
- **Label** - Accessible form labels
|
|
37
|
+
- **Checkbox** - Boolean input with indeterminate state
|
|
38
|
+
- **RadioGroup**, **RadioGroupItem** - Single-choice selection
|
|
39
|
+
- **Switch** - Toggle switch for boolean settings
|
|
40
|
+
- **Slider** - Range input for numeric values
|
|
41
|
+
- **DatePicker** - Calendar-based date selection
|
|
42
|
+
- **Combobox** - Searchable dropdown with custom options
|
|
43
|
+
- **Select** + 9 sub-components - Dropdown selection
|
|
44
|
+
|
|
45
|
+
### Button Components → [docs/llm/components/buttons.md](docs/llm/components/buttons.md)
|
|
46
|
+
- **Button** - Primary action component with variants and sizes
|
|
47
|
+
- **Toggle**, **ToggleGroup**, **ToggleGroupItem** - Multi-state buttons
|
|
48
|
+
|
|
49
|
+
### Card Components → [docs/llm/components/cards.md](docs/llm/components/cards.md)
|
|
50
|
+
- **Card** + 5 sub-components - Content containers
|
|
51
|
+
|
|
52
|
+
### Display Components → [docs/llm/components/display.md](docs/llm/components/display.md)
|
|
53
|
+
- **Badge** - Status and category indicators
|
|
54
|
+
- **Avatar** + 2 sub-components - User profile pictures
|
|
55
|
+
- **Progress** - Loading and completion indicators
|
|
56
|
+
- **Skeleton** - Loading state placeholders
|
|
57
|
+
- **Chart** + 5 sub-components - Data visualization
|
|
58
|
+
- **EmptyState** - No data placeholder with actions
|
|
59
|
+
|
|
60
|
+
### Table Components → [docs/llm/components/tables.md](docs/llm/components/tables.md)
|
|
61
|
+
- **Table** + 7 sub-components - Data tables
|
|
62
|
+
|
|
63
|
+
### Overlay Components → [docs/llm/components/overlays.md](docs/llm/components/overlays.md)
|
|
64
|
+
- **Dialog** + 7 sub-components - Modal dialogs
|
|
65
|
+
- **AlertDialog** + 8 sub-components - Confirmation dialogs
|
|
66
|
+
- **Sheet** + 6 sub-components - Side panel overlays
|
|
67
|
+
- **Drawer** + 6 sub-components - Mobile-first bottom sheets
|
|
68
|
+
- **Popover** + 3 sub-components - Contextual overlays
|
|
69
|
+
- **HoverCard** + 2 sub-components - Hover-triggered content
|
|
70
|
+
- **Tooltip** + 3 sub-components - Informational overlays
|
|
71
|
+
|
|
72
|
+
### Menu Components → [docs/llm/components/menus.md](docs/llm/components/menus.md)
|
|
73
|
+
- **DropdownMenu** + 15 sub-components - Context menus
|
|
74
|
+
- **ContextMenu** + 15 sub-components - Right-click menus
|
|
75
|
+
- **Command** + 8 sub-components - Command palette interfaces
|
|
76
|
+
- **Calendar** + 1 sub-component - Full calendar interface
|
|
77
|
+
- **Carousel** + 4 sub-components - Content slideshows
|
|
78
|
+
|
|
79
|
+
### Feedback Components → [docs/llm/components/feedback.md](docs/llm/components/feedback.md)
|
|
80
|
+
- **Alert** + 2 sub-components - Status messages and notifications
|
|
81
|
+
- **Toaster**, **toast** - Toast notification system (Sonner-based)
|
|
82
|
+
- **ThemeToggle** - Dark/light mode switcher
|
|
83
|
+
|
|
84
|
+
### Typography Components → [docs/llm/components/typography.md](docs/llm/components/typography.md)
|
|
85
|
+
- Text styling and typography components
|
|
86
|
+
|
|
87
|
+
## Utilities & Hooks → [docs/llm/components/utilities.md](docs/llm/components/utilities.md)
|
|
88
|
+
- **cn()** - Class name merging with Tailwind conflict resolution
|
|
89
|
+
- **useIsMobile()** - Responsive breakpoint detection (768px)
|
|
90
|
+
- **useTheme()** - Theme state management with system preference detection
|
|
91
|
+
|
|
92
|
+
## TypeScript Standards
|
|
93
|
+
|
|
94
|
+
All components follow these patterns:
|
|
95
|
+
- Function declarations (not const/arrow functions)
|
|
96
|
+
- Named exports only
|
|
97
|
+
- Type definitions (not interfaces)
|
|
98
|
+
- Comprehensive prop types
|
|
99
|
+
- Full IntelliSense support
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// ✅ Correct patterns
|
|
103
|
+
import { Button, type ButtonProps } from "@neynar/ui"
|
|
104
|
+
|
|
105
|
+
function MyButton(props: ButtonProps) {
|
|
106
|
+
return <Button {...props} />
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Additional Documentation
|
|
111
|
+
|
|
112
|
+
- **[docs/llm/guide.md](docs/llm/guide.md)** - Core composition patterns and usage examples
|
|
113
|
+
- **[docs/llm/colors.md](docs/llm/colors.md)** - Tailwind CSS color system and design tokens
|
|
114
|
+
|
|
115
|
+
## Source Code Access
|
|
116
|
+
- **src/** - Complete TypeScript source with TSDoc comments, type definitions, and implementation details
|
|
117
|
+
|
|
118
|
+
## Key Features
|
|
119
|
+
- Built on Radix UI primitives + Tailwind CSS v4
|
|
120
|
+
- WCAG-compliant accessibility
|
|
121
|
+
- Tree-shakeable and performant
|
|
122
|
+
- Zero runtime overhead
|
package/package.json
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@neynar/ui",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"author": "Neynar Inc.",
|
|
6
|
+
"description": "React UI component library built on shadcn/ui and Tailwind CSS",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"react",
|
|
9
|
+
"ui",
|
|
10
|
+
"components",
|
|
11
|
+
"tailwind",
|
|
12
|
+
"shadcn",
|
|
13
|
+
"neynar"
|
|
14
|
+
],
|
|
15
|
+
"public": true,
|
|
16
|
+
"type": "module",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./styles": "./src/styles/globals.css"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist/**",
|
|
26
|
+
"src/**",
|
|
27
|
+
"LICENSE",
|
|
28
|
+
"README.md",
|
|
29
|
+
"llms.txt",
|
|
30
|
+
"docs/llm/**"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "vite build && tsc --emitDeclarationOnly",
|
|
34
|
+
"dev": "vite build --watch",
|
|
35
|
+
"lint": "eslint src/",
|
|
36
|
+
"type-check": "tsc --noEmit",
|
|
37
|
+
"clean": "rm -rf dist",
|
|
38
|
+
"storybook": "storybook dev --no-open -p 6006",
|
|
39
|
+
"build-storybook": "storybook build"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@radix-ui/react-accordion": "1.2.11",
|
|
43
|
+
"@radix-ui/react-aspect-ratio": "1.1.7",
|
|
44
|
+
"@radix-ui/react-avatar": "1.1.10",
|
|
45
|
+
"@radix-ui/react-checkbox": "1.3.2",
|
|
46
|
+
"@radix-ui/react-collapsible": "1.1.11",
|
|
47
|
+
"@radix-ui/react-context-menu": "2.2.15",
|
|
48
|
+
"@radix-ui/react-dialog": "1.1.14",
|
|
49
|
+
"@radix-ui/react-dropdown-menu": "2.1.15",
|
|
50
|
+
"@radix-ui/react-hover-card": "1.1.14",
|
|
51
|
+
"@radix-ui/react-label": "2.1.7",
|
|
52
|
+
"@radix-ui/react-menubar": "1.1.15",
|
|
53
|
+
"@radix-ui/react-navigation-menu": "1.2.13",
|
|
54
|
+
"@radix-ui/react-popover": "1.1.14",
|
|
55
|
+
"@radix-ui/react-progress": "1.1.7",
|
|
56
|
+
"@radix-ui/react-radio-group": "1.3.7",
|
|
57
|
+
"@radix-ui/react-select": "2.2.5",
|
|
58
|
+
"@radix-ui/react-separator": "1.1.7",
|
|
59
|
+
"@radix-ui/react-slider": "1.3.5",
|
|
60
|
+
"@radix-ui/react-slot": "1.2.3",
|
|
61
|
+
"@radix-ui/react-switch": "1.2.5",
|
|
62
|
+
"@radix-ui/react-tabs": "1.1.12",
|
|
63
|
+
"@radix-ui/react-toggle": "1.1.9",
|
|
64
|
+
"@radix-ui/react-toggle-group": "1.1.10",
|
|
65
|
+
"@radix-ui/react-tooltip": "1.2.7",
|
|
66
|
+
"class-variance-authority": "0.7.1",
|
|
67
|
+
"clsx": "2.1.1",
|
|
68
|
+
"cmdk": "1.1.1",
|
|
69
|
+
"date-fns": "4.1.0",
|
|
70
|
+
"embla-carousel-react": "8.6.0",
|
|
71
|
+
"lucide-react": "0.539.0",
|
|
72
|
+
"react-day-picker": "9.8.1",
|
|
73
|
+
"react-resizable-panels": "3.0.4",
|
|
74
|
+
"recharts": "2.15.4",
|
|
75
|
+
"sonner": "2.0.7",
|
|
76
|
+
"tailwind-merge": "3.3.1",
|
|
77
|
+
"tw-animate-css": "1.3.6",
|
|
78
|
+
"vaul": "1.1.2"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@neynar/eslint-plugin": "0.0.3",
|
|
82
|
+
"@neynar/tsconfig": "0.0.2",
|
|
83
|
+
"@storybook/addon-docs": "9.1.2",
|
|
84
|
+
"@storybook/addon-themes": "9.1.2",
|
|
85
|
+
"@storybook/react-vite": "9.1.2",
|
|
86
|
+
"@tailwindcss/vite": "4.1.11",
|
|
87
|
+
"@types/react": "19.1.10",
|
|
88
|
+
"@types/react-dom": "19.1.7",
|
|
89
|
+
"eslint": "9.33.0",
|
|
90
|
+
"eslint-plugin-storybook": "9.1.2",
|
|
91
|
+
"postcss": "8.5.6",
|
|
92
|
+
"prettier": "3.6.2",
|
|
93
|
+
"react": "19.1.1",
|
|
94
|
+
"react-dom": "19.1.1",
|
|
95
|
+
"storybook": "9.1.2",
|
|
96
|
+
"tailwindcss": "4.1.11",
|
|
97
|
+
"typescript": "5.9.2",
|
|
98
|
+
"vite": "7.1.2"
|
|
99
|
+
},
|
|
100
|
+
"peerDependencies": {
|
|
101
|
+
"react": "^19.1.1",
|
|
102
|
+
"react-dom": "^19.1.1"
|
|
103
|
+
}
|
|
104
|
+
}
|