@neynar/ui 0.2.1 → 0.3.0
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/dist/components/ui/button-group.d.ts +448 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/empty-state.d.ts +1 -0
- package/dist/components/ui/empty-state.d.ts.map +1 -1
- package/dist/components/ui/empty.d.ts +630 -0
- package/dist/components/ui/empty.d.ts.map +1 -0
- package/dist/components/ui/field.d.ts +238 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/input-group.d.ts +636 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/item.d.ts +766 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/kbd.d.ts +149 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/spinner.d.ts +194 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/stories/accordion.stories.d.ts +0 -1
- package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/alert-dialog.stories.d.ts +0 -1
- package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/alert.stories.d.ts +0 -1
- package/dist/components/ui/stories/alert.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts +0 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/avatar.stories.d.ts +0 -1
- package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/badge.stories.d.ts +0 -1
- package/dist/components/ui/stories/badge.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/breadcrumb.stories.d.ts +0 -1
- package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/button-group.stories.d.ts +48 -0
- package/dist/components/ui/stories/button-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/button.stories.d.ts +0 -1
- package/dist/components/ui/stories/button.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/calendar.stories.d.ts +0 -1
- package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/card.stories.d.ts +0 -1
- package/dist/components/ui/stories/card.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/carousel.stories.d.ts +0 -1
- package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/chart.stories.d.ts +0 -1
- package/dist/components/ui/stories/chart.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/checkbox.stories.d.ts +0 -1
- package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/cn.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/collapsible.stories.d.ts +0 -1
- package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/colors.stories.d.ts +0 -1
- package/dist/components/ui/stories/colors.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/combobox.stories.d.ts +0 -1
- package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/command.stories.d.ts +0 -1
- package/dist/components/ui/stories/command.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/container.stories.d.ts +0 -1
- package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/context-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/date-picker.stories.d.ts +0 -1
- package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/dialog.stories.d.ts +0 -1
- package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/drawer.stories.d.ts +0 -1
- package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts +0 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty.stories.d.ts +38 -0
- package/dist/components/ui/stories/empty.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/field.stories.d.ts +48 -0
- package/dist/components/ui/stories/field.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/hover-card.stories.d.ts +0 -1
- package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/input-group.stories.d.ts +37 -0
- package/dist/components/ui/stories/input-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/input.stories.d.ts +0 -1
- package/dist/components/ui/stories/input.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/item.stories.d.ts +61 -0
- package/dist/components/ui/stories/item.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/kbd.stories.d.ts +37 -0
- package/dist/components/ui/stories/kbd.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/label.stories.d.ts +0 -1
- package/dist/components/ui/stories/label.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/menubar.stories.d.ts +0 -1
- package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/navigation-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/pagination.stories.d.ts +0 -1
- package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/popover.stories.d.ts +0 -1
- package/dist/components/ui/stories/popover.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/progress.stories.d.ts +0 -1
- package/dist/components/ui/stories/progress.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/radio-group.stories.d.ts +0 -1
- package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/resizable.stories.d.ts +0 -1
- package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts +0 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/select.stories.d.ts +0 -1
- package/dist/components/ui/stories/select.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/separator.stories.d.ts +0 -1
- package/dist/components/ui/stories/separator.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sheet.stories.d.ts +0 -1
- package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sidebar.stories.d.ts +0 -1
- package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/skeleton.stories.d.ts +0 -1
- package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/slider.stories.d.ts +0 -1
- package/dist/components/ui/stories/slider.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/spinner.stories.d.ts +37 -0
- package/dist/components/ui/stories/spinner.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/stack.stories.d.ts +0 -1
- package/dist/components/ui/stories/stack.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/switch.stories.d.ts +0 -1
- package/dist/components/ui/stories/switch.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/table.stories.d.ts +0 -1
- package/dist/components/ui/stories/table.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/tabs.stories.d.ts +0 -1
- package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/text-field.stories.d.ts +0 -1
- package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/textarea.stories.d.ts +0 -1
- package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/theme-toggle.stories.d.ts +0 -1
- package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/theme.stories.d.ts +0 -1
- package/dist/components/ui/stories/theme.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/toggle-group.stories.d.ts +0 -1
- package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/toggle.stories.d.ts +0 -1
- package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/tooltip.stories.d.ts +0 -1
- package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/typography.stories.d.ts +0 -1
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +12 -11
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10391 -3107
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/llm/components/display.md +125 -0
- package/docs/llm/components/feedback.md +0 -14
- package/docs/llm/components/forms.md +94 -0
- package/docs/llm/components/layout.md +169 -0
- package/llms.txt +18 -12
- package/package.json +6 -5
- package/src/components/ui/button-group.tsx +525 -0
- package/src/components/ui/button.tsx +9 -12
- package/src/components/ui/empty-state.tsx +1 -0
- package/src/components/ui/empty.tsx +793 -0
- package/src/components/ui/field.tsx +494 -0
- package/src/components/ui/input-group.tsx +801 -0
- package/src/components/ui/item.tsx +955 -0
- package/src/components/ui/kbd.tsx +175 -0
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/spinner.tsx +211 -0
- package/src/components/ui/stories/accordion.stories.tsx +0 -1
- package/src/components/ui/stories/alert-dialog.stories.tsx +0 -1
- package/src/components/ui/stories/alert.stories.tsx +0 -1
- package/src/components/ui/stories/aspect-ratio.stories.tsx +0 -1
- package/src/components/ui/stories/avatar.stories.tsx +0 -1
- package/src/components/ui/stories/badge.stories.tsx +0 -1
- package/src/components/ui/stories/breadcrumb.stories.tsx +0 -1
- package/src/components/ui/stories/button-group.stories.tsx +300 -0
- package/src/components/ui/stories/button.stories.tsx +0 -1
- package/src/components/ui/stories/calendar.stories.tsx +0 -1
- package/src/components/ui/stories/card.stories.tsx +0 -1
- package/src/components/ui/stories/carousel.stories.tsx +0 -1
- package/src/components/ui/stories/chart.stories.tsx +0 -1
- package/src/components/ui/stories/checkbox.stories.tsx +0 -1
- package/src/components/ui/stories/cn.stories.tsx +0 -1
- package/src/components/ui/stories/collapsible.stories.tsx +0 -1
- package/src/components/ui/stories/colors.stories.tsx +0 -1
- package/src/components/ui/stories/combobox.stories.tsx +0 -1
- package/src/components/ui/stories/command.stories.tsx +0 -1
- package/src/components/ui/stories/container.stories.tsx +0 -1
- package/src/components/ui/stories/context-menu.stories.tsx +0 -1
- package/src/components/ui/stories/date-picker.stories.tsx +0 -1
- package/src/components/ui/stories/dialog.stories.tsx +0 -1
- package/src/components/ui/stories/drawer.stories.tsx +0 -1
- package/src/components/ui/stories/dropdown-menu.stories.tsx +0 -1
- package/src/components/ui/stories/empty-state.stories.tsx +0 -1
- package/src/components/ui/stories/empty.stories.tsx +293 -0
- package/src/components/ui/stories/field.stories.tsx +470 -0
- package/src/components/ui/stories/hover-card.stories.tsx +0 -1
- package/src/components/ui/stories/input-group.stories.tsx +444 -0
- package/src/components/ui/stories/input.stories.tsx +0 -1
- package/src/components/ui/stories/item.stories.tsx +601 -0
- package/src/components/ui/stories/kbd.stories.tsx +462 -0
- package/src/components/ui/stories/label.stories.tsx +0 -1
- package/src/components/ui/stories/menubar.stories.tsx +0 -1
- package/src/components/ui/stories/navigation-menu.stories.tsx +0 -1
- package/src/components/ui/stories/pagination.stories.tsx +0 -1
- package/src/components/ui/stories/popover.stories.tsx +0 -1
- package/src/components/ui/stories/progress.stories.tsx +0 -1
- package/src/components/ui/stories/radio-group.stories.tsx +0 -1
- package/src/components/ui/stories/resizable.stories.tsx +0 -1
- package/src/components/ui/stories/scroll-area.stories.tsx +0 -1
- package/src/components/ui/stories/select.stories.tsx +0 -1
- package/src/components/ui/stories/separator.stories.tsx +0 -1
- package/src/components/ui/stories/sheet.stories.tsx +0 -1
- package/src/components/ui/stories/sidebar.stories.tsx +0 -1
- package/src/components/ui/stories/skeleton.stories.tsx +0 -1
- package/src/components/ui/stories/slider.stories.tsx +0 -1
- package/src/components/ui/stories/sonner.stories.tsx +0 -1
- package/src/components/ui/stories/spinner.stories.tsx +356 -0
- package/src/components/ui/stories/stack.stories.tsx +0 -1
- package/src/components/ui/stories/switch.stories.tsx +0 -1
- package/src/components/ui/stories/table.stories.tsx +0 -1
- package/src/components/ui/stories/tabs.stories.tsx +0 -1
- package/src/components/ui/stories/text-field.stories.tsx +0 -1
- package/src/components/ui/stories/textarea.stories.tsx +0 -1
- package/src/components/ui/stories/theme-toggle.stories.tsx +0 -1
- package/src/components/ui/stories/theme.stories.tsx +0 -1
- package/src/components/ui/stories/toggle-group.stories.tsx +0 -1
- package/src/components/ui/stories/toggle.stories.tsx +0 -1
- package/src/components/ui/stories/tooltip.stories.tsx +0 -1
- package/src/components/ui/stories/typography.stories.tsx +5 -2
- package/src/components/ui/stories/use-mobile.stories.tsx +0 -1
- package/src/components/ui/stories/use-theme.stories.tsx +0 -1
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/typography.tsx +29 -129
- package/src/index.ts +7 -0
- package/src/styles/globals.css +40 -24
- package/llm-docs/a.llm.md +0 -145
- package/llm-docs/accordion-content.llm.md +0 -67
- package/llm-docs/accordion-item.llm.md +0 -61
- package/llm-docs/accordion-trigger.llm.md +0 -69
- package/llm-docs/accordion.llm.md +0 -88
- package/llm-docs/alert-description.llm.md +0 -78
- package/llm-docs/alert-dialog-action.llm.md +0 -51
- package/llm-docs/alert-dialog-cancel.llm.md +0 -48
- package/llm-docs/alert-dialog-content.llm.md +0 -88
- package/llm-docs/alert-dialog-description.llm.md +0 -53
- package/llm-docs/alert-dialog-footer.llm.md +0 -41
- package/llm-docs/alert-dialog-header.llm.md +0 -39
- package/llm-docs/alert-dialog-overlay.llm.md +0 -44
- package/llm-docs/alert-dialog-portal.llm.md +0 -41
- package/llm-docs/alert-dialog-title.llm.md +0 -46
- package/llm-docs/alert-dialog-trigger.llm.md +0 -40
- package/llm-docs/alert-dialog.llm.md +0 -80
- package/llm-docs/alert-title.llm.md +0 -48
- package/llm-docs/alert.llm.md +0 -92
- package/llm-docs/aspect-ratio.llm.md +0 -41
- package/llm-docs/avatar-fallback.llm.md +0 -41
- package/llm-docs/avatar-image.llm.md +0 -48
- package/llm-docs/avatar.llm.md +0 -35
- package/llm-docs/badge.llm.md +0 -122
- package/llm-docs/blockquote.llm.md +0 -122
- package/llm-docs/breadcrumb-ellipsis.llm.md +0 -73
- package/llm-docs/breadcrumb-item.llm.md +0 -53
- package/llm-docs/breadcrumb-link.llm.md +0 -84
- package/llm-docs/breadcrumb-list.llm.md +0 -54
- package/llm-docs/breadcrumb-page.llm.md +0 -52
- package/llm-docs/breadcrumb-separator.llm.md +0 -60
- package/llm-docs/breadcrumb.llm.md +0 -110
- package/llm-docs/button.llm.md +0 -281
- package/llm-docs/calendar-day-button.llm.md +0 -57
- package/llm-docs/calendar.llm.md +0 -340
- package/llm-docs/card-action.llm.md +0 -64
- package/llm-docs/card-content.llm.md +0 -48
- package/llm-docs/card-description.llm.md +0 -46
- package/llm-docs/card-footer.llm.md +0 -56
- package/llm-docs/card-header.llm.md +0 -53
- package/llm-docs/card-title.llm.md +0 -43
- package/llm-docs/card.llm.md +0 -100
- package/llm-docs/carousel-content.llm.md +0 -77
- package/llm-docs/carousel-item.llm.md +0 -96
- package/llm-docs/carousel-next.llm.md +0 -95
- package/llm-docs/carousel-previous.llm.md +0 -95
- package/llm-docs/carousel.llm.md +0 -211
- package/llm-docs/chart-config.llm.md +0 -71
- package/llm-docs/chart-container.llm.md +0 -148
- package/llm-docs/chart-legend-content.llm.md +0 -85
- package/llm-docs/chart-legend.llm.md +0 -144
- package/llm-docs/chart-style.llm.md +0 -28
- package/llm-docs/chart-tooltip-content.llm.md +0 -149
- package/llm-docs/chart-tooltip.llm.md +0 -184
- package/llm-docs/checkbox.llm.md +0 -100
- package/llm-docs/cn.llm.md +0 -46
- package/llm-docs/code.llm.md +0 -108
- package/llm-docs/collapsible-content.llm.md +0 -109
- package/llm-docs/collapsible-trigger.llm.md +0 -75
- package/llm-docs/collapsible.llm.md +0 -109
- package/llm-docs/combobox-option.llm.md +0 -53
- package/llm-docs/combobox.llm.md +0 -208
- package/llm-docs/command-dialog.llm.md +0 -112
- package/llm-docs/command-empty.llm.md +0 -63
- package/llm-docs/command-group.llm.md +0 -83
- package/llm-docs/command-input.llm.md +0 -82
- package/llm-docs/command-item.llm.md +0 -97
- package/llm-docs/command-list.llm.md +0 -53
- package/llm-docs/command-loading.llm.md +0 -48
- package/llm-docs/command-separator.llm.md +0 -44
- package/llm-docs/command-shortcut.llm.md +0 -63
- package/llm-docs/command.llm.md +0 -147
- package/llm-docs/container.llm.md +0 -236
- package/llm-docs/context-menu-checkbox-item.llm.md +0 -97
- package/llm-docs/context-menu-content.llm.md +0 -91
- package/llm-docs/context-menu-group.llm.md +0 -61
- package/llm-docs/context-menu-item.llm.md +0 -94
- package/llm-docs/context-menu-label.llm.md +0 -60
- package/llm-docs/context-menu-portal.llm.md +0 -49
- package/llm-docs/context-menu-radio-group.llm.md +0 -66
- package/llm-docs/context-menu-radio-item.llm.md +0 -76
- package/llm-docs/context-menu-separator.llm.md +0 -51
- package/llm-docs/context-menu-shortcut.llm.md +0 -57
- package/llm-docs/context-menu-sub-content.llm.md +0 -90
- package/llm-docs/context-menu-sub-trigger.llm.md +0 -73
- package/llm-docs/context-menu-sub.llm.md +0 -61
- package/llm-docs/context-menu-trigger.llm.md +0 -53
- package/llm-docs/context-menu.llm.md +0 -103
- package/llm-docs/date-picker.llm.md +0 -90
- package/llm-docs/dialog-close.llm.md +0 -61
- package/llm-docs/dialog-content.llm.md +0 -128
- package/llm-docs/dialog-description.llm.md +0 -44
- package/llm-docs/dialog-footer.llm.md +0 -38
- package/llm-docs/dialog-header.llm.md +0 -40
- package/llm-docs/dialog-overlay.llm.md +0 -57
- package/llm-docs/dialog-portal.llm.md +0 -47
- package/llm-docs/dialog-title.llm.md +0 -41
- package/llm-docs/dialog-trigger.llm.md +0 -51
- package/llm-docs/dialog.llm.md +0 -113
- package/llm-docs/drawer-close.llm.md +0 -53
- package/llm-docs/drawer-content.llm.md +0 -58
- package/llm-docs/drawer-description.llm.md +0 -54
- package/llm-docs/drawer-footer.llm.md +0 -67
- package/llm-docs/drawer-header.llm.md +0 -60
- package/llm-docs/drawer-overlay.llm.md +0 -40
- package/llm-docs/drawer-portal.llm.md +0 -42
- package/llm-docs/drawer-title.llm.md +0 -51
- package/llm-docs/drawer-trigger.llm.md +0 -44
- package/llm-docs/drawer.llm.md +0 -194
- package/llm-docs/dropdown-menu-checkbox-item.llm.md +0 -111
- package/llm-docs/dropdown-menu-content.llm.md +0 -109
- package/llm-docs/dropdown-menu-group.llm.md +0 -38
- package/llm-docs/dropdown-menu-item.llm.md +0 -94
- package/llm-docs/dropdown-menu-label.llm.md +0 -66
- package/llm-docs/dropdown-menu-portal.llm.md +0 -32
- package/llm-docs/dropdown-menu-radio-group.llm.md +0 -73
- package/llm-docs/dropdown-menu-radio-item.llm.md +0 -92
- package/llm-docs/dropdown-menu-separator.llm.md +0 -55
- package/llm-docs/dropdown-menu-shortcut.llm.md +0 -74
- package/llm-docs/dropdown-menu-sub-content.llm.md +0 -80
- package/llm-docs/dropdown-menu-sub-trigger.llm.md +0 -84
- package/llm-docs/dropdown-menu-sub.llm.md +0 -74
- package/llm-docs/dropdown-menu-trigger.llm.md +0 -48
- package/llm-docs/dropdown-menu.llm.md +0 -120
- package/llm-docs/empty-state.llm.md +0 -174
- package/llm-docs/h1.llm.md +0 -113
- package/llm-docs/h2.llm.md +0 -113
- package/llm-docs/h3.llm.md +0 -111
- package/llm-docs/h4.llm.md +0 -109
- package/llm-docs/h5.llm.md +0 -110
- package/llm-docs/h6.llm.md +0 -110
- package/llm-docs/hover-card-content.llm.md +0 -167
- package/llm-docs/hover-card-trigger.llm.md +0 -65
- package/llm-docs/hover-card.llm.md +0 -121
- package/llm-docs/input.llm.md +0 -319
- package/llm-docs/label.llm.md +0 -145
- package/llm-docs/lead.llm.md +0 -119
- package/llm-docs/menubar-checkbox-item.llm.md +0 -66
- package/llm-docs/menubar-content.llm.md +0 -128
- package/llm-docs/menubar-group.llm.md +0 -40
- package/llm-docs/menubar-item.llm.md +0 -62
- package/llm-docs/menubar-label.llm.md +0 -40
- package/llm-docs/menubar-menu.llm.md +0 -32
- package/llm-docs/menubar-portal.llm.md +0 -38
- package/llm-docs/menubar-radio-group.llm.md +0 -39
- package/llm-docs/menubar-radio-item.llm.md +0 -59
- package/llm-docs/menubar-separator.llm.md +0 -35
- package/llm-docs/menubar-shortcut.llm.md +0 -37
- package/llm-docs/menubar-sub-content.llm.md +0 -127
- package/llm-docs/menubar-sub-trigger.llm.md +0 -51
- package/llm-docs/menubar-sub.llm.md +0 -53
- package/llm-docs/menubar-trigger.llm.md +0 -37
- package/llm-docs/menubar.llm.md +0 -115
- package/llm-docs/navigation-menu-content.llm.md +0 -116
- package/llm-docs/navigation-menu-indicator.llm.md +0 -68
- package/llm-docs/navigation-menu-item.llm.md +0 -62
- package/llm-docs/navigation-menu-link.llm.md +0 -109
- package/llm-docs/navigation-menu-list.llm.md +0 -52
- package/llm-docs/navigation-menu-trigger-style.llm.md +0 -22
- package/llm-docs/navigation-menu-trigger.llm.md +0 -57
- package/llm-docs/navigation-menu-viewport.llm.md +0 -51
- package/llm-docs/navigation-menu.llm.md +0 -184
- package/llm-docs/p.llm.md +0 -115
- package/llm-docs/pagination-content.llm.md +0 -60
- package/llm-docs/pagination-ellipsis.llm.md +0 -107
- package/llm-docs/pagination-item.llm.md +0 -59
- package/llm-docs/pagination-link.llm.md +0 -150
- package/llm-docs/pagination-next.llm.md +0 -115
- package/llm-docs/pagination-previous.llm.md +0 -115
- package/llm-docs/pagination.llm.md +0 -190
- package/llm-docs/popover-anchor.llm.md +0 -53
- package/llm-docs/popover-content.llm.md +0 -109
- package/llm-docs/popover-trigger.llm.md +0 -54
- package/llm-docs/popover.llm.md +0 -116
- package/llm-docs/progress.llm.md +0 -76
- package/llm-docs/radio-group-indicator.llm.md +0 -28
- package/llm-docs/radio-group-item.llm.md +0 -40
- package/llm-docs/radio-group.llm.md +0 -76
- package/llm-docs/resizable-handle.llm.md +0 -156
- package/llm-docs/resizable-panel-group.llm.md +0 -149
- package/llm-docs/resizable-panel.llm.md +0 -157
- package/llm-docs/scroll-area-corner.llm.md +0 -41
- package/llm-docs/scroll-area-thumb.llm.md +0 -39
- package/llm-docs/scroll-area-viewport.llm.md +0 -60
- package/llm-docs/scroll-area.llm.md +0 -125
- package/llm-docs/scroll-bar.llm.md +0 -78
- package/llm-docs/sdk-items-registry.json +0 -2638
- package/llm-docs/select-content.llm.md +0 -139
- package/llm-docs/select-group.llm.md +0 -60
- package/llm-docs/select-item.llm.md +0 -75
- package/llm-docs/select-label.llm.md +0 -62
- package/llm-docs/select-scroll-down-button.llm.md +0 -45
- package/llm-docs/select-scroll-up-button.llm.md +0 -45
- package/llm-docs/select-separator.llm.md +0 -59
- package/llm-docs/select-trigger.llm.md +0 -66
- package/llm-docs/select-value.llm.md +0 -67
- package/llm-docs/select.llm.md +0 -159
- package/llm-docs/separator.llm.md +0 -129
- package/llm-docs/sheet-close.llm.md +0 -49
- package/llm-docs/sheet-content.llm.md +0 -115
- package/llm-docs/sheet-description.llm.md +0 -62
- package/llm-docs/sheet-footer.llm.md +0 -64
- package/llm-docs/sheet-header.llm.md +0 -52
- package/llm-docs/sheet-title.llm.md +0 -53
- package/llm-docs/sheet-trigger.llm.md +0 -46
- package/llm-docs/sheet.llm.md +0 -126
- package/llm-docs/sidebar-content.llm.md +0 -63
- package/llm-docs/sidebar-footer.llm.md +0 -50
- package/llm-docs/sidebar-group-action.llm.md +0 -60
- package/llm-docs/sidebar-group-content.llm.md +0 -64
- package/llm-docs/sidebar-group-label.llm.md +0 -53
- package/llm-docs/sidebar-group.llm.md +0 -56
- package/llm-docs/sidebar-header.llm.md +0 -67
- package/llm-docs/sidebar-input.llm.md +0 -50
- package/llm-docs/sidebar-inset.llm.md +0 -52
- package/llm-docs/sidebar-menu-action.llm.md +0 -84
- package/llm-docs/sidebar-menu-badge.llm.md +0 -60
- package/llm-docs/sidebar-menu-button.llm.md +0 -103
- package/llm-docs/sidebar-menu-item.llm.md +0 -75
- package/llm-docs/sidebar-menu-skeleton.llm.md +0 -76
- package/llm-docs/sidebar-menu-sub-button.llm.md +0 -85
- package/llm-docs/sidebar-menu-sub-item.llm.md +0 -54
- package/llm-docs/sidebar-menu-sub.llm.md +0 -74
- package/llm-docs/sidebar-menu.llm.md +0 -65
- package/llm-docs/sidebar-provider.llm.md +0 -79
- package/llm-docs/sidebar-rail.llm.md +0 -34
- package/llm-docs/sidebar-separator.llm.md +0 -57
- package/llm-docs/sidebar-trigger.llm.md +0 -49
- package/llm-docs/sidebar.llm.md +0 -129
- package/llm-docs/skeleton.llm.md +0 -134
- package/llm-docs/slider.llm.md +0 -173
- package/llm-docs/small.llm.md +0 -115
- package/llm-docs/span.llm.md +0 -132
- package/llm-docs/stack.llm.md +0 -28
- package/llm-docs/strong.llm.md +0 -115
- package/llm-docs/switch.llm.md +0 -76
- package/llm-docs/table-body.llm.md +0 -36
- package/llm-docs/table-caption.llm.md +0 -48
- package/llm-docs/table-cell.llm.md +0 -53
- package/llm-docs/table-footer.llm.md +0 -41
- package/llm-docs/table-head.llm.md +0 -69
- package/llm-docs/table-header.llm.md +0 -41
- package/llm-docs/table-row.llm.md +0 -42
- package/llm-docs/table.llm.md +0 -123
- package/llm-docs/tabs-content.llm.md +0 -47
- package/llm-docs/tabs-list.llm.md +0 -41
- package/llm-docs/tabs-trigger.llm.md +0 -47
- package/llm-docs/tabs.llm.md +0 -71
- package/llm-docs/text-field.llm.md +0 -327
- package/llm-docs/textarea.llm.md +0 -311
- package/llm-docs/theme-preference.llm.md +0 -25
- package/llm-docs/theme-toggle.llm.md +0 -57
- package/llm-docs/theme.llm.md +0 -14
- package/llm-docs/toast.llm.md +0 -32
- package/llm-docs/toaster.llm.md +0 -193
- package/llm-docs/toggle-group-item.llm.md +0 -59
- package/llm-docs/toggle-group.llm.md +0 -101
- package/llm-docs/toggle.llm.md +0 -40
- package/llm-docs/tooltip-content.llm.md +0 -185
- package/llm-docs/tooltip-provider.llm.md +0 -68
- package/llm-docs/tooltip-trigger.llm.md +0 -70
- package/llm-docs/tooltip.llm.md +0 -129
- package/llm-docs/typography.llm.md +0 -175
- package/llm-docs/use-carousel.llm.md +0 -55
- package/llm-docs/use-command-state.llm.md +0 -32
- package/llm-docs/use-is-mobile.llm.md +0 -73
- package/llm-docs/use-sidebar.llm.md +0 -61
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
# TextField
|
|
2
|
-
|
|
3
|
-
**Type**: component
|
|
4
|
-
|
|
5
|
-
TextField - Complete form field with label, input, and descriptive text A comprehensive form field component that combines Input and Label components with additional helper text and error handling capabilities. Automatically manages accessibility attributes, ID generation, and ARIA relationships to ensure forms are usable by all users including those using assistive technologies. Built on top of the Input and Label primitives, TextField provides a complete form field solution with consistent styling, proper semantic markup, and enhanced UX features. Supports all HTML input types while adding form validation states, descriptive text, and automatic accessibility compliance.
|
|
6
|
-
|
|
7
|
-
## JSX Usage
|
|
8
|
-
|
|
9
|
-
```jsx
|
|
10
|
-
import { TextField } from '@neynar/ui';
|
|
11
|
-
|
|
12
|
-
<TextField
|
|
13
|
-
label="value"
|
|
14
|
-
helperText="value"
|
|
15
|
-
error="value"
|
|
16
|
-
required={true}
|
|
17
|
-
id="value"
|
|
18
|
-
type={value}
|
|
19
|
-
placeholder="value"
|
|
20
|
-
value={value}
|
|
21
|
-
defaultValue={value}
|
|
22
|
-
disabled={true}
|
|
23
|
-
readOnly={true}
|
|
24
|
-
name="value"
|
|
25
|
-
autoComplete="value"
|
|
26
|
-
autoFocus={true}
|
|
27
|
-
maxLength={0}
|
|
28
|
-
minLength={0}
|
|
29
|
-
pattern="value"
|
|
30
|
-
min={value}
|
|
31
|
-
max={value}
|
|
32
|
-
step={value}
|
|
33
|
-
onChange={handleChange}
|
|
34
|
-
onFocus={handleFocus}
|
|
35
|
-
onBlur={handleBlur}
|
|
36
|
-
onKeyDown={handleKeyDown}
|
|
37
|
-
onKeyUp={handleKeyUp}
|
|
38
|
-
className="value"
|
|
39
|
-
/>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Component Props
|
|
43
|
-
|
|
44
|
-
### label
|
|
45
|
-
- **Type**: `string`
|
|
46
|
-
- **Required**: No
|
|
47
|
-
- **Description**: No description available
|
|
48
|
-
|
|
49
|
-
### helperText
|
|
50
|
-
- **Type**: `string`
|
|
51
|
-
- **Required**: No
|
|
52
|
-
- **Description**: No description available
|
|
53
|
-
|
|
54
|
-
### error
|
|
55
|
-
- **Type**: `string`
|
|
56
|
-
- **Required**: No
|
|
57
|
-
- **Description**: No description available
|
|
58
|
-
|
|
59
|
-
### required
|
|
60
|
-
- **Type**: `boolean`
|
|
61
|
-
- **Required**: No
|
|
62
|
-
- **Description**: No description available
|
|
63
|
-
|
|
64
|
-
### id
|
|
65
|
-
- **Type**: `string`
|
|
66
|
-
- **Required**: No
|
|
67
|
-
- **Description**: No description available
|
|
68
|
-
|
|
69
|
-
### type
|
|
70
|
-
- **Type**: `React.HTMLInputTypeAttribute`
|
|
71
|
-
- **Required**: No
|
|
72
|
-
- **Description**: No description available
|
|
73
|
-
|
|
74
|
-
### placeholder
|
|
75
|
-
- **Type**: `string`
|
|
76
|
-
- **Required**: No
|
|
77
|
-
- **Description**: No description available
|
|
78
|
-
|
|
79
|
-
### value
|
|
80
|
-
- **Type**: `string | ReadonlyArray<string> | number`
|
|
81
|
-
- **Required**: No
|
|
82
|
-
- **Description**: No description available
|
|
83
|
-
|
|
84
|
-
### defaultValue
|
|
85
|
-
- **Type**: `string | ReadonlyArray<string> | number`
|
|
86
|
-
- **Required**: No
|
|
87
|
-
- **Description**: No description available
|
|
88
|
-
|
|
89
|
-
### disabled
|
|
90
|
-
- **Type**: `boolean`
|
|
91
|
-
- **Required**: No
|
|
92
|
-
- **Description**: No description available
|
|
93
|
-
|
|
94
|
-
### readOnly
|
|
95
|
-
- **Type**: `boolean`
|
|
96
|
-
- **Required**: No
|
|
97
|
-
- **Description**: No description available
|
|
98
|
-
|
|
99
|
-
### name
|
|
100
|
-
- **Type**: `string`
|
|
101
|
-
- **Required**: No
|
|
102
|
-
- **Description**: No description available
|
|
103
|
-
|
|
104
|
-
### autoComplete
|
|
105
|
-
- **Type**: `string`
|
|
106
|
-
- **Required**: No
|
|
107
|
-
- **Description**: No description available
|
|
108
|
-
|
|
109
|
-
### autoFocus
|
|
110
|
-
- **Type**: `boolean`
|
|
111
|
-
- **Required**: No
|
|
112
|
-
- **Description**: No description available
|
|
113
|
-
|
|
114
|
-
### maxLength
|
|
115
|
-
- **Type**: `number`
|
|
116
|
-
- **Required**: No
|
|
117
|
-
- **Description**: No description available
|
|
118
|
-
|
|
119
|
-
### minLength
|
|
120
|
-
- **Type**: `number`
|
|
121
|
-
- **Required**: No
|
|
122
|
-
- **Description**: No description available
|
|
123
|
-
|
|
124
|
-
### pattern
|
|
125
|
-
- **Type**: `string`
|
|
126
|
-
- **Required**: No
|
|
127
|
-
- **Description**: No description available
|
|
128
|
-
|
|
129
|
-
### min
|
|
130
|
-
- **Type**: `string | number`
|
|
131
|
-
- **Required**: No
|
|
132
|
-
- **Description**: No description available
|
|
133
|
-
|
|
134
|
-
### max
|
|
135
|
-
- **Type**: `string | number`
|
|
136
|
-
- **Required**: No
|
|
137
|
-
- **Description**: No description available
|
|
138
|
-
|
|
139
|
-
### step
|
|
140
|
-
- **Type**: `string | number`
|
|
141
|
-
- **Required**: No
|
|
142
|
-
- **Description**: No description available
|
|
143
|
-
|
|
144
|
-
### onChange
|
|
145
|
-
- **Type**: `(event: React.ChangeEvent<HTMLInputElement>) => void`
|
|
146
|
-
- **Required**: No
|
|
147
|
-
- **Description**: No description available
|
|
148
|
-
|
|
149
|
-
### onFocus
|
|
150
|
-
- **Type**: `(event: React.FocusEvent<HTMLInputElement>) => void`
|
|
151
|
-
- **Required**: No
|
|
152
|
-
- **Description**: No description available
|
|
153
|
-
|
|
154
|
-
### onBlur
|
|
155
|
-
- **Type**: `(event: React.FocusEvent<HTMLInputElement>) => void`
|
|
156
|
-
- **Required**: No
|
|
157
|
-
- **Description**: No description available
|
|
158
|
-
|
|
159
|
-
### onKeyDown
|
|
160
|
-
- **Type**: `(event: React.KeyboardEvent<HTMLInputElement>) => void`
|
|
161
|
-
- **Required**: No
|
|
162
|
-
- **Description**: No description available
|
|
163
|
-
|
|
164
|
-
### onKeyUp
|
|
165
|
-
- **Type**: `(event: React.KeyboardEvent<HTMLInputElement>) => void`
|
|
166
|
-
- **Required**: No
|
|
167
|
-
- **Description**: No description available
|
|
168
|
-
|
|
169
|
-
### className
|
|
170
|
-
- **Type**: `string`
|
|
171
|
-
- **Required**: No
|
|
172
|
-
- **Description**: No description available
|
|
173
|
-
|
|
174
|
-
## Examples
|
|
175
|
-
|
|
176
|
-
### Example 1
|
|
177
|
-
```tsx
|
|
178
|
-
// Basic text input with label
|
|
179
|
-
<TextField
|
|
180
|
-
label="Email Address"
|
|
181
|
-
type="email"
|
|
182
|
-
placeholder="Enter your email"
|
|
183
|
-
name="email"
|
|
184
|
-
/>
|
|
185
|
-
```
|
|
186
|
-
### Example 2
|
|
187
|
-
```tsx
|
|
188
|
-
// Required field with helper text
|
|
189
|
-
<TextField
|
|
190
|
-
label="Username"
|
|
191
|
-
placeholder="
|
|
192
|
-
### Example 3
|
|
193
|
-
```tsx
|
|
194
|
-
// Password field with validation error
|
|
195
|
-
<TextField
|
|
196
|
-
label="Password"
|
|
197
|
-
type="password"
|
|
198
|
-
required
|
|
199
|
-
error="Password must be at least 8 characters long"
|
|
200
|
-
value={password}
|
|
201
|
-
onChange={(e) => setPassword(e.target.value)}
|
|
202
|
-
minLength={8}
|
|
203
|
-
autoComplete="new-password"
|
|
204
|
-
/>
|
|
205
|
-
```
|
|
206
|
-
### Example 4
|
|
207
|
-
```tsx
|
|
208
|
-
// Controlled component with real-time validation
|
|
209
|
-
const [email, setEmail] = useState("");
|
|
210
|
-
const [error, setError] = useState("");
|
|
211
|
-
const validateEmail = (value: string) => {
|
|
212
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
213
|
-
if (!emailRegex.test(value)) {
|
|
214
|
-
setError("Please enter a valid email address");
|
|
215
|
-
} else {
|
|
216
|
-
setError("");
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
<TextField
|
|
220
|
-
label="Email"
|
|
221
|
-
type="email"
|
|
222
|
-
value={email}
|
|
223
|
-
onChange={(e) => {
|
|
224
|
-
setEmail(e.target.value);
|
|
225
|
-
validateEmail(e.target.value);
|
|
226
|
-
}}
|
|
227
|
-
onBlur={(e) => validateEmail(e.target.value)}
|
|
228
|
-
error={error}
|
|
229
|
-
required
|
|
230
|
-
autoComplete="email"
|
|
231
|
-
/>
|
|
232
|
-
```
|
|
233
|
-
### Example 5
|
|
234
|
-
```tsx
|
|
235
|
-
// Number input with constraints
|
|
236
|
-
<TextField
|
|
237
|
-
label="Age"
|
|
238
|
-
type="number"
|
|
239
|
-
min={0}
|
|
240
|
-
max={120}
|
|
241
|
-
step={1}
|
|
242
|
-
helperText="Enter your age in years"
|
|
243
|
-
placeholder="25"
|
|
244
|
-
/>
|
|
245
|
-
```
|
|
246
|
-
### Example 6
|
|
247
|
-
```tsx
|
|
248
|
-
// Search input with custom styling
|
|
249
|
-
<TextField
|
|
250
|
-
label="Search"
|
|
251
|
-
type="search"
|
|
252
|
-
placeholder="Search products..."
|
|
253
|
-
className="max-w-md"
|
|
254
|
-
onKeyDown={(e) => {
|
|
255
|
-
if (e.key === 'Enter') {
|
|
256
|
-
handleSearch(e.currentTarget.value);
|
|
257
|
-
}
|
|
258
|
-
}}
|
|
259
|
-
/>
|
|
260
|
-
```
|
|
261
|
-
### Example 7
|
|
262
|
-
```tsx
|
|
263
|
-
// Form integration with React Hook Form
|
|
264
|
-
const { register, formState: { errors } } = useForm();
|
|
265
|
-
<form onSubmit={handleSubmit(onSubmit)}>
|
|
266
|
-
<TextField
|
|
267
|
-
label="Full Name"
|
|
268
|
-
{...register("fullName", { required: "Full name is required" })}
|
|
269
|
-
error={errors.fullName?.message}
|
|
270
|
-
helperText="Enter your first and last name"
|
|
271
|
-
/>
|
|
272
|
-
<TextField
|
|
273
|
-
label="Phone Number"
|
|
274
|
-
type="tel"
|
|
275
|
-
{...register("phone", {
|
|
276
|
-
pattern: {
|
|
277
|
-
value: /^[\+]?[1-9][\d]{0,15}$/,
|
|
278
|
-
message: "Please enter a valid phone number"
|
|
279
|
-
}
|
|
280
|
-
})}
|
|
281
|
-
error={errors.phone?.message}
|
|
282
|
-
autoComplete="tel"
|
|
283
|
-
/>
|
|
284
|
-
</form>
|
|
285
|
-
```
|
|
286
|
-
### Example 8
|
|
287
|
-
```tsx
|
|
288
|
-
// File input with custom validation
|
|
289
|
-
<TextField
|
|
290
|
-
label="Profile Picture"
|
|
291
|
-
type="file"
|
|
292
|
-
accept="image/*"
|
|
293
|
-
helperText="Upload a PNG, JPG or GIF (max 5MB)"
|
|
294
|
-
onChange={(e) => {
|
|
295
|
-
const file = e.target.files?.[0];
|
|
296
|
-
if (file && file.size > 5 * 1024 * 1024) {
|
|
297
|
-
setError("File size must be less than 5MB");
|
|
298
|
-
} else {
|
|
299
|
-
setError("");
|
|
300
|
-
handleFileUpload(file);
|
|
301
|
-
}
|
|
302
|
-
}}
|
|
303
|
-
error={fileError}
|
|
304
|
-
/>
|
|
305
|
-
```
|
|
306
|
-
### Example 9
|
|
307
|
-
```tsx
|
|
308
|
-
// Date input with range constraints
|
|
309
|
-
<TextField
|
|
310
|
-
label="Birth Date"
|
|
311
|
-
type="date"
|
|
312
|
-
min="1900-01-01"
|
|
313
|
-
max={new Date().toISOString().split('T')[0]}
|
|
314
|
-
helperText="You must be 18 or older to register"
|
|
315
|
-
required
|
|
316
|
-
/>
|
|
317
|
-
```
|
|
318
|
-
### Example 10
|
|
319
|
-
```tsx
|
|
320
|
-
// Disabled field with explanation
|
|
321
|
-
<TextField
|
|
322
|
-
label="Account ID"
|
|
323
|
-
value="ACC-12345"
|
|
324
|
-
disabled
|
|
325
|
-
helperText="This value is automatically generated and cannot be changed"
|
|
326
|
-
/>
|
|
327
|
-
```
|
package/llm-docs/textarea.llm.md
DELETED
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
# Textarea
|
|
2
|
-
|
|
3
|
-
**Type**: component
|
|
4
|
-
|
|
5
|
-
Textarea - Multi-line text input control for extended content entry A styled textarea component built on the native HTML textarea element for entering longer pieces of text that span multiple lines, such as comments, descriptions, messages, or any content that requires multiple lines of input. Features automatic content-based resizing using CSS field-sizing when supported by the browser. Built following shadcn/ui design patterns with consistent styling and behavior across form elements. Inherits all native HTML textarea functionality while providing enhanced visual design and better accessibility patterns.
|
|
6
|
-
|
|
7
|
-
## JSX Usage
|
|
8
|
-
|
|
9
|
-
```jsx
|
|
10
|
-
import { Textarea } from '@neynar/ui';
|
|
11
|
-
|
|
12
|
-
<Textarea
|
|
13
|
-
className="value"
|
|
14
|
-
placeholder="value"
|
|
15
|
-
disabled={true}
|
|
16
|
-
readOnly={true}
|
|
17
|
-
rows={0}
|
|
18
|
-
cols={0}
|
|
19
|
-
maxLength={0}
|
|
20
|
-
minLength={0}
|
|
21
|
-
required={true}
|
|
22
|
-
form="value"
|
|
23
|
-
name="value"
|
|
24
|
-
id="value"
|
|
25
|
-
value="value"
|
|
26
|
-
defaultValue="value"
|
|
27
|
-
wrap={value}
|
|
28
|
-
autoFocus={true}
|
|
29
|
-
autoComplete="value"
|
|
30
|
-
autoCapitalize={value}
|
|
31
|
-
spellCheck={true}
|
|
32
|
-
onChange={handleChange}
|
|
33
|
-
onFocus={handleFocus}
|
|
34
|
-
onBlur={handleBlur}
|
|
35
|
-
onKeyDown={handleKeyDown}
|
|
36
|
-
onKeyUp={handleKeyUp}
|
|
37
|
-
onKeyPress={handleKeyPress}
|
|
38
|
-
"aria-invalid"={value}
|
|
39
|
-
"aria-describedby"="value"
|
|
40
|
-
"aria-labelledby"="value"
|
|
41
|
-
"aria-label"="value"
|
|
42
|
-
tabIndex={0}
|
|
43
|
-
style={value}
|
|
44
|
-
/>
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Component Props
|
|
48
|
-
|
|
49
|
-
### className
|
|
50
|
-
- **Type**: `string`
|
|
51
|
-
- **Required**: No
|
|
52
|
-
- **Description**: No description available
|
|
53
|
-
|
|
54
|
-
### placeholder
|
|
55
|
-
- **Type**: `string`
|
|
56
|
-
- **Required**: No
|
|
57
|
-
- **Description**: No description available
|
|
58
|
-
|
|
59
|
-
### disabled
|
|
60
|
-
- **Type**: `boolean`
|
|
61
|
-
- **Required**: No
|
|
62
|
-
- **Description**: No description available
|
|
63
|
-
|
|
64
|
-
### readOnly
|
|
65
|
-
- **Type**: `boolean`
|
|
66
|
-
- **Required**: No
|
|
67
|
-
- **Description**: No description available
|
|
68
|
-
|
|
69
|
-
### rows
|
|
70
|
-
- **Type**: `number`
|
|
71
|
-
- **Required**: No
|
|
72
|
-
- **Description**: No description available
|
|
73
|
-
|
|
74
|
-
### cols
|
|
75
|
-
- **Type**: `number`
|
|
76
|
-
- **Required**: No
|
|
77
|
-
- **Description**: No description available
|
|
78
|
-
|
|
79
|
-
### maxLength
|
|
80
|
-
- **Type**: `number`
|
|
81
|
-
- **Required**: No
|
|
82
|
-
- **Description**: No description available
|
|
83
|
-
|
|
84
|
-
### minLength
|
|
85
|
-
- **Type**: `number`
|
|
86
|
-
- **Required**: No
|
|
87
|
-
- **Description**: No description available
|
|
88
|
-
|
|
89
|
-
### required
|
|
90
|
-
- **Type**: `boolean`
|
|
91
|
-
- **Required**: No
|
|
92
|
-
- **Description**: No description available
|
|
93
|
-
|
|
94
|
-
### form
|
|
95
|
-
- **Type**: `string`
|
|
96
|
-
- **Required**: No
|
|
97
|
-
- **Description**: No description available
|
|
98
|
-
|
|
99
|
-
### name
|
|
100
|
-
- **Type**: `string`
|
|
101
|
-
- **Required**: No
|
|
102
|
-
- **Description**: No description available
|
|
103
|
-
|
|
104
|
-
### id
|
|
105
|
-
- **Type**: `string`
|
|
106
|
-
- **Required**: No
|
|
107
|
-
- **Description**: No description available
|
|
108
|
-
|
|
109
|
-
### value
|
|
110
|
-
- **Type**: `string`
|
|
111
|
-
- **Required**: No
|
|
112
|
-
- **Description**: No description available
|
|
113
|
-
|
|
114
|
-
### defaultValue
|
|
115
|
-
- **Type**: `string`
|
|
116
|
-
- **Required**: No
|
|
117
|
-
- **Description**: No description available
|
|
118
|
-
|
|
119
|
-
### wrap
|
|
120
|
-
- **Type**: `"soft" | "hard" | "off"`
|
|
121
|
-
- **Required**: No
|
|
122
|
-
- **Description**: No description available
|
|
123
|
-
|
|
124
|
-
### autoFocus
|
|
125
|
-
- **Type**: `boolean`
|
|
126
|
-
- **Required**: No
|
|
127
|
-
- **Description**: No description available
|
|
128
|
-
|
|
129
|
-
### autoComplete
|
|
130
|
-
- **Type**: `string`
|
|
131
|
-
- **Required**: No
|
|
132
|
-
- **Description**: No description available
|
|
133
|
-
|
|
134
|
-
### autoCapitalize
|
|
135
|
-
- **Type**: `"none" | "sentences" | "words" | "characters"`
|
|
136
|
-
- **Required**: No
|
|
137
|
-
- **Description**: No description available
|
|
138
|
-
|
|
139
|
-
### spellCheck
|
|
140
|
-
- **Type**: `boolean`
|
|
141
|
-
- **Required**: No
|
|
142
|
-
- **Description**: No description available
|
|
143
|
-
|
|
144
|
-
### onChange
|
|
145
|
-
- **Type**: `(event: React.ChangeEvent<HTMLTextAreaElement>) => void`
|
|
146
|
-
- **Required**: No
|
|
147
|
-
- **Description**: No description available
|
|
148
|
-
|
|
149
|
-
### onFocus
|
|
150
|
-
- **Type**: `(event: React.FocusEvent<HTMLTextAreaElement>) => void`
|
|
151
|
-
- **Required**: No
|
|
152
|
-
- **Description**: No description available
|
|
153
|
-
|
|
154
|
-
### onBlur
|
|
155
|
-
- **Type**: `(event: React.FocusEvent<HTMLTextAreaElement>) => void`
|
|
156
|
-
- **Required**: No
|
|
157
|
-
- **Description**: No description available
|
|
158
|
-
|
|
159
|
-
### onKeyDown
|
|
160
|
-
- **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
|
|
161
|
-
- **Required**: No
|
|
162
|
-
- **Description**: No description available
|
|
163
|
-
|
|
164
|
-
### onKeyUp
|
|
165
|
-
- **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
|
|
166
|
-
- **Required**: No
|
|
167
|
-
- **Description**: No description available
|
|
168
|
-
|
|
169
|
-
### onKeyPress
|
|
170
|
-
- **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
|
|
171
|
-
- **Required**: No
|
|
172
|
-
- **Description**: No description available
|
|
173
|
-
|
|
174
|
-
### "aria-invalid"
|
|
175
|
-
- **Type**: `boolean | "false" | "true" | "grammar" | "spelling"`
|
|
176
|
-
- **Required**: No
|
|
177
|
-
- **Description**: No description available
|
|
178
|
-
|
|
179
|
-
### "aria-describedby"
|
|
180
|
-
- **Type**: `string`
|
|
181
|
-
- **Required**: No
|
|
182
|
-
- **Description**: No description available
|
|
183
|
-
|
|
184
|
-
### "aria-labelledby"
|
|
185
|
-
- **Type**: `string`
|
|
186
|
-
- **Required**: No
|
|
187
|
-
- **Description**: No description available
|
|
188
|
-
|
|
189
|
-
### "aria-label"
|
|
190
|
-
- **Type**: `string`
|
|
191
|
-
- **Required**: No
|
|
192
|
-
- **Description**: No description available
|
|
193
|
-
|
|
194
|
-
### tabIndex
|
|
195
|
-
- **Type**: `number`
|
|
196
|
-
- **Required**: No
|
|
197
|
-
- **Description**: No description available
|
|
198
|
-
|
|
199
|
-
### style
|
|
200
|
-
- **Type**: `React.CSSProperties & {
|
|
201
|
-
resize?: "none" | "both" | "horizontal" | "vertical";
|
|
202
|
-
}`
|
|
203
|
-
- **Required**: No
|
|
204
|
-
- **Description**: No description available
|
|
205
|
-
|
|
206
|
-
## Examples
|
|
207
|
-
|
|
208
|
-
### Example 1
|
|
209
|
-
```tsx
|
|
210
|
-
// Basic usage
|
|
211
|
-
<Textarea placeholder="Type your message here..." />
|
|
212
|
-
```
|
|
213
|
-
### Example 2
|
|
214
|
-
```tsx
|
|
215
|
-
// With label and validation
|
|
216
|
-
<div className="space-y-2">
|
|
217
|
-
<Label htmlFor="description">Description</Label>
|
|
218
|
-
<Textarea
|
|
219
|
-
id="description"
|
|
220
|
-
placeholder="Enter a description..."
|
|
221
|
-
rows={4}
|
|
222
|
-
required
|
|
223
|
-
/>
|
|
224
|
-
</div>
|
|
225
|
-
```
|
|
226
|
-
### Example 3
|
|
227
|
-
```tsx
|
|
228
|
-
// Controlled with character limit and validation
|
|
229
|
-
const [bio, setBio] = useState("");
|
|
230
|
-
const [error, setError] = useState("");
|
|
231
|
-
const maxLength = 160;
|
|
232
|
-
<div className="space-y-2">
|
|
233
|
-
<Label htmlFor="bio">Bio</Label>
|
|
234
|
-
<Textarea
|
|
235
|
-
id="bio"
|
|
236
|
-
value={bio}
|
|
237
|
-
onChange={(e) => {
|
|
238
|
-
setBio(e.target.value);
|
|
239
|
-
if (e.target.value.length > maxLength) {
|
|
240
|
-
setError("Bio is too long");
|
|
241
|
-
} else {
|
|
242
|
-
setError("");
|
|
243
|
-
}
|
|
244
|
-
}}
|
|
245
|
-
placeholder="Tell us about yourself..."
|
|
246
|
-
maxLength={maxLength}
|
|
247
|
-
aria-invalid={!!error}
|
|
248
|
-
aria-describedby={error ? "bio-error" : "bio-count"}
|
|
249
|
-
/>
|
|
250
|
-
<div className="flex justify-between items-center">
|
|
251
|
-
<p id="bio-count" className="text-sm text-muted-foreground">
|
|
252
|
-
{bio.length}/{maxLength} characters
|
|
253
|
-
</p>
|
|
254
|
-
{error && (
|
|
255
|
-
<p id="bio-error" className="text-sm text-destructive">
|
|
256
|
-
{error}
|
|
257
|
-
</p>
|
|
258
|
-
)}
|
|
259
|
-
</div>
|
|
260
|
-
</div>
|
|
261
|
-
```
|
|
262
|
-
### Example 4
|
|
263
|
-
```tsx
|
|
264
|
-
// Auto-resizing with minimum height
|
|
265
|
-
<Textarea
|
|
266
|
-
placeholder="This textarea grows with content"
|
|
267
|
-
className="min-h-[100px] max-h-[300px]"
|
|
268
|
-
style={{ resize: "vertical" }}
|
|
269
|
-
/>
|
|
270
|
-
```
|
|
271
|
-
### Example 5
|
|
272
|
-
```tsx
|
|
273
|
-
// Form integration with validation
|
|
274
|
-
<form onSubmit={handleSubmit}>
|
|
275
|
-
<div className="space-y-2">
|
|
276
|
-
<Label htmlFor="feedback">Feedback</Label>
|
|
277
|
-
<Textarea
|
|
278
|
-
id="feedback"
|
|
279
|
-
name="feedback"
|
|
280
|
-
placeholder="Share your thoughts..."
|
|
281
|
-
required
|
|
282
|
-
minLength={10}
|
|
283
|
-
maxLength={500}
|
|
284
|
-
rows={3}
|
|
285
|
-
/>
|
|
286
|
-
</div>
|
|
287
|
-
<Button type="submit">Submit Feedback</Button>
|
|
288
|
-
</form>
|
|
289
|
-
```
|
|
290
|
-
### Example 6
|
|
291
|
-
```tsx
|
|
292
|
-
// Different wrap behaviors for code/text
|
|
293
|
-
<div className="space-y-4">
|
|
294
|
-
<div>
|
|
295
|
-
<Label>Code (no wrapping)</Label>
|
|
296
|
-
<Textarea
|
|
297
|
-
wrap="off"
|
|
298
|
-
placeholder="Enter code here..."
|
|
299
|
-
className="font-mono text-sm"
|
|
300
|
-
style={{ resize: "both" }}
|
|
301
|
-
/>
|
|
302
|
-
</div>
|
|
303
|
-
<div>
|
|
304
|
-
<Label>Text (soft wrapping)</Label>
|
|
305
|
-
<Textarea
|
|
306
|
-
wrap="soft"
|
|
307
|
-
placeholder="Enter text content..."
|
|
308
|
-
/>
|
|
309
|
-
</div>
|
|
310
|
-
</div>
|
|
311
|
-
```
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# ThemePreference
|
|
2
|
-
|
|
3
|
-
**Type**: type
|
|
4
|
-
|
|
5
|
-
Theme preference options for the theme system Controls how the application determines the active theme: - `"system"` - Automatically follows the user's OS preference - `"light"` - Forces light theme regardless of system preference - `"dark"` - Forces dark theme regardless of system preference
|
|
6
|
-
|
|
7
|
-
## Type Definition
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
import { ThemePreference } from '@neynar/ui';
|
|
11
|
-
|
|
12
|
-
type ThemePreference = "system" | "light" | "dark"
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Examples
|
|
16
|
-
|
|
17
|
-
```tsx
|
|
18
|
-
const { preference, setPreference } = useTheme();
|
|
19
|
-
|
|
20
|
-
// Switch to dark mode
|
|
21
|
-
setPreference("dark");
|
|
22
|
-
|
|
23
|
-
// Follow system preference
|
|
24
|
-
setPreference("system");
|
|
25
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# ThemeToggle
|
|
2
|
-
|
|
3
|
-
**Type**: component
|
|
4
|
-
|
|
5
|
-
ThemeToggle - A zero-configuration theme switcher with system, light, and dark modes A completely self-contained theme toggle component that provides an intuitive dropdown interface for switching between system preference, light mode, and dark mode. Works immediately without any provider setup, context configuration, or additional dependencies. Built on top of shadcn/ui components (Button + DropdownMenu) with the Neynar useTheme hook for state management. Handles theme persistence via cookies, system preference detection, real-time system changes, and synchronization across multiple instances. **Zero Configuration Design:** Just import and use - no providers, no setup, no configuration required. The component handles all theme management internally and provides a complete solution out of the box. **Perfect for:** - Application headers and navigation bars - Settings panels and preference screens - Toolbars and floating action areas - Any location where users need quick theme access
|
|
6
|
-
|
|
7
|
-
## JSX Usage
|
|
8
|
-
|
|
9
|
-
```jsx
|
|
10
|
-
import { ThemeToggle } from '@neynar/ui';
|
|
11
|
-
|
|
12
|
-
<ThemeToggle
|
|
13
|
-
variant={value}
|
|
14
|
-
size={value}
|
|
15
|
-
className="value"
|
|
16
|
-
showLabel={true}
|
|
17
|
-
align={value}
|
|
18
|
-
asChild={true}
|
|
19
|
-
/>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Component Props
|
|
23
|
-
|
|
24
|
-
### variant
|
|
25
|
-
- **Type**: `| "default"
|
|
26
|
-
| "destructive"
|
|
27
|
-
| "outline"
|
|
28
|
-
| "secondary"
|
|
29
|
-
| "ghost"
|
|
30
|
-
| "link"`
|
|
31
|
-
- **Required**: No
|
|
32
|
-
- **Description**: Visual style variant inherited from Button component (default: "outline")
|
|
33
|
-
|
|
34
|
-
### size
|
|
35
|
-
- **Type**: `"default" | "sm" | "lg" | "icon"`
|
|
36
|
-
- **Required**: No
|
|
37
|
-
- **Description**: Size variant inherited from Button component (default: "icon")
|
|
38
|
-
|
|
39
|
-
### className
|
|
40
|
-
- **Type**: `string`
|
|
41
|
-
- **Required**: No
|
|
42
|
-
- **Description**: Additional CSS classes for custom styling
|
|
43
|
-
|
|
44
|
-
### showLabel
|
|
45
|
-
- **Type**: `boolean`
|
|
46
|
-
- **Required**: No
|
|
47
|
-
- **Description**: Whether to show theme name text (auto-enabled for non-icon sizes)
|
|
48
|
-
|
|
49
|
-
### align
|
|
50
|
-
- **Type**: `"start" | "center" | "end"`
|
|
51
|
-
- **Required**: No
|
|
52
|
-
- **Description**: Dropdown menu alignment relative to trigger button (default: "end")
|
|
53
|
-
|
|
54
|
-
### asChild
|
|
55
|
-
- **Type**: `boolean`
|
|
56
|
-
- **Required**: No
|
|
57
|
-
- **Description**: No description available
|