@neynar/ui 0.3.0 → 0.4.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/.llm/accordion-content.llm.md +67 -0
- package/.llm/accordion-item.llm.md +61 -0
- package/.llm/accordion-trigger.llm.md +69 -0
- package/.llm/accordion.llm.md +88 -0
- package/.llm/alert-description.llm.md +78 -0
- package/.llm/alert-dialog-action.llm.md +51 -0
- package/.llm/alert-dialog-cancel.llm.md +48 -0
- package/.llm/alert-dialog-content.llm.md +88 -0
- package/.llm/alert-dialog-description.llm.md +53 -0
- package/.llm/alert-dialog-footer.llm.md +41 -0
- package/.llm/alert-dialog-header.llm.md +39 -0
- package/.llm/alert-dialog-overlay.llm.md +44 -0
- package/.llm/alert-dialog-portal.llm.md +41 -0
- package/.llm/alert-dialog-title.llm.md +46 -0
- package/.llm/alert-dialog-trigger.llm.md +40 -0
- package/.llm/alert-dialog.llm.md +80 -0
- package/.llm/alert-title.llm.md +48 -0
- package/.llm/alert.llm.md +92 -0
- package/.llm/aspect-ratio.llm.md +41 -0
- package/.llm/avatar-fallback.llm.md +41 -0
- package/.llm/avatar-image.llm.md +48 -0
- package/.llm/avatar.llm.md +35 -0
- package/.llm/badge.llm.md +117 -0
- package/.llm/blockquote.llm.md +55 -0
- package/.llm/body-text-large.llm.md +49 -0
- package/.llm/body-text-small.llm.md +49 -0
- package/.llm/body-text.llm.md +52 -0
- package/.llm/breadcrumb-ellipsis.llm.md +73 -0
- package/.llm/breadcrumb-item.llm.md +53 -0
- package/.llm/breadcrumb-link.llm.md +84 -0
- package/.llm/breadcrumb-list.llm.md +54 -0
- package/.llm/breadcrumb-page.llm.md +52 -0
- package/.llm/breadcrumb-separator.llm.md +60 -0
- package/.llm/breadcrumb.llm.md +110 -0
- package/.llm/button-group-separator.llm.md +53 -0
- package/.llm/button-group-text.llm.md +56 -0
- package/.llm/button-group.llm.md +81 -0
- package/.llm/button.llm.md +281 -0
- package/.llm/calendar-day-button.llm.md +57 -0
- package/.llm/calendar.llm.md +340 -0
- package/.llm/caption.llm.md +48 -0
- package/.llm/card-action.llm.md +64 -0
- package/.llm/card-content.llm.md +48 -0
- package/.llm/card-description.llm.md +46 -0
- package/.llm/card-footer.llm.md +56 -0
- package/.llm/card-header.llm.md +53 -0
- package/.llm/card-title.llm.md +43 -0
- package/.llm/card.llm.md +100 -0
- package/.llm/carousel-content.llm.md +77 -0
- package/.llm/carousel-item.llm.md +96 -0
- package/.llm/carousel-next.llm.md +95 -0
- package/.llm/carousel-previous.llm.md +95 -0
- package/.llm/carousel.llm.md +211 -0
- package/.llm/chart-config.llm.md +71 -0
- package/.llm/chart-container.llm.md +148 -0
- package/.llm/chart-legend-content.llm.md +85 -0
- package/.llm/chart-legend.llm.md +144 -0
- package/.llm/chart-style.llm.md +28 -0
- package/.llm/chart-tooltip-content.llm.md +149 -0
- package/.llm/chart-tooltip.llm.md +184 -0
- package/.llm/checkbox.llm.md +100 -0
- package/.llm/cn.llm.md +46 -0
- package/.llm/code.llm.md +45 -0
- package/.llm/collapsible-content.llm.md +109 -0
- package/.llm/collapsible-trigger.llm.md +75 -0
- package/.llm/collapsible.llm.md +109 -0
- package/.llm/combobox-option.llm.md +53 -0
- package/.llm/combobox.llm.md +208 -0
- package/.llm/command-dialog.llm.md +112 -0
- package/.llm/command-empty.llm.md +63 -0
- package/.llm/command-group.llm.md +83 -0
- package/.llm/command-input.llm.md +82 -0
- package/.llm/command-item.llm.md +97 -0
- package/.llm/command-list.llm.md +53 -0
- package/.llm/command-loading.llm.md +48 -0
- package/.llm/command-separator.llm.md +44 -0
- package/.llm/command-shortcut.llm.md +63 -0
- package/.llm/command.llm.md +147 -0
- package/.llm/container.llm.md +236 -0
- package/.llm/context-menu-checkbox-item.llm.md +97 -0
- package/.llm/context-menu-content.llm.md +91 -0
- package/.llm/context-menu-group.llm.md +61 -0
- package/.llm/context-menu-item.llm.md +94 -0
- package/.llm/context-menu-label.llm.md +60 -0
- package/.llm/context-menu-portal.llm.md +49 -0
- package/.llm/context-menu-radio-group.llm.md +66 -0
- package/.llm/context-menu-radio-item.llm.md +76 -0
- package/.llm/context-menu-separator.llm.md +51 -0
- package/.llm/context-menu-shortcut.llm.md +57 -0
- package/.llm/context-menu-sub-content.llm.md +90 -0
- package/.llm/context-menu-sub-trigger.llm.md +73 -0
- package/.llm/context-menu-sub.llm.md +61 -0
- package/.llm/context-menu-trigger.llm.md +53 -0
- package/.llm/context-menu.llm.md +103 -0
- package/.llm/date-picker.llm.md +90 -0
- package/.llm/dialog-close.llm.md +61 -0
- package/.llm/dialog-content.llm.md +128 -0
- package/.llm/dialog-description.llm.md +44 -0
- package/.llm/dialog-footer.llm.md +38 -0
- package/.llm/dialog-header.llm.md +40 -0
- package/.llm/dialog-overlay.llm.md +57 -0
- package/.llm/dialog-portal.llm.md +47 -0
- package/.llm/dialog-title.llm.md +41 -0
- package/.llm/dialog-trigger.llm.md +51 -0
- package/.llm/dialog.llm.md +113 -0
- package/.llm/drawer-close.llm.md +53 -0
- package/.llm/drawer-content.llm.md +58 -0
- package/.llm/drawer-description.llm.md +54 -0
- package/.llm/drawer-footer.llm.md +67 -0
- package/.llm/drawer-header.llm.md +60 -0
- package/.llm/drawer-overlay.llm.md +40 -0
- package/.llm/drawer-portal.llm.md +42 -0
- package/.llm/drawer-title.llm.md +51 -0
- package/.llm/drawer-trigger.llm.md +44 -0
- package/.llm/drawer.llm.md +194 -0
- package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
- package/.llm/dropdown-menu-content.llm.md +109 -0
- package/.llm/dropdown-menu-group.llm.md +38 -0
- package/.llm/dropdown-menu-item.llm.md +94 -0
- package/.llm/dropdown-menu-label.llm.md +66 -0
- package/.llm/dropdown-menu-portal.llm.md +32 -0
- package/.llm/dropdown-menu-radio-group.llm.md +73 -0
- package/.llm/dropdown-menu-radio-item.llm.md +92 -0
- package/.llm/dropdown-menu-separator.llm.md +55 -0
- package/.llm/dropdown-menu-shortcut.llm.md +74 -0
- package/.llm/dropdown-menu-sub-content.llm.md +80 -0
- package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
- package/.llm/dropdown-menu-sub.llm.md +74 -0
- package/.llm/dropdown-menu-trigger.llm.md +48 -0
- package/.llm/dropdown-menu.llm.md +120 -0
- package/.llm/empty-content.llm.md +103 -0
- package/.llm/empty-description.llm.md +70 -0
- package/.llm/empty-header.llm.md +64 -0
- package/.llm/empty-media.llm.md +81 -0
- package/.llm/empty-state.llm.md +174 -0
- package/.llm/empty-title.llm.md +54 -0
- package/.llm/empty.llm.md +158 -0
- package/.llm/field-content.llm.md +28 -0
- package/.llm/field-description.llm.md +28 -0
- package/.llm/field-error.llm.md +41 -0
- package/.llm/field-group.llm.md +84 -0
- package/.llm/field-label.llm.md +28 -0
- package/.llm/field-legend.llm.md +77 -0
- package/.llm/field-separator.llm.md +35 -0
- package/.llm/field-set.llm.md +80 -0
- package/.llm/field-title.llm.md +28 -0
- package/.llm/field.llm.md +35 -0
- package/.llm/hover-card-content.llm.md +167 -0
- package/.llm/hover-card-trigger.llm.md +65 -0
- package/.llm/hover-card.llm.md +121 -0
- package/.llm/input-group-addon.llm.md +91 -0
- package/.llm/input-group-button.llm.md +120 -0
- package/.llm/input-group-input.llm.md +145 -0
- package/.llm/input-group-text.llm.md +75 -0
- package/.llm/input-group-textarea.llm.md +157 -0
- package/.llm/input-group.llm.md +108 -0
- package/.llm/input.llm.md +319 -0
- package/.llm/item-actions.llm.md +77 -0
- package/.llm/item-content.llm.md +73 -0
- package/.llm/item-description.llm.md +61 -0
- package/.llm/item-footer.llm.md +68 -0
- package/.llm/item-group.llm.md +73 -0
- package/.llm/item-header.llm.md +66 -0
- package/.llm/item-media.llm.md +75 -0
- package/.llm/item-separator.llm.md +80 -0
- package/.llm/item-title.llm.md +59 -0
- package/.llm/item.llm.md +115 -0
- package/.llm/kbd-group.llm.md +71 -0
- package/.llm/kbd.llm.md +71 -0
- package/.llm/label.llm.md +145 -0
- package/.llm/menubar-checkbox-item.llm.md +66 -0
- package/.llm/menubar-content.llm.md +128 -0
- package/.llm/menubar-group.llm.md +40 -0
- package/.llm/menubar-item.llm.md +62 -0
- package/.llm/menubar-label.llm.md +40 -0
- package/.llm/menubar-menu.llm.md +32 -0
- package/.llm/menubar-portal.llm.md +38 -0
- package/.llm/menubar-radio-group.llm.md +39 -0
- package/.llm/menubar-radio-item.llm.md +59 -0
- package/.llm/menubar-separator.llm.md +35 -0
- package/.llm/menubar-shortcut.llm.md +37 -0
- package/.llm/menubar-sub-content.llm.md +127 -0
- package/.llm/menubar-sub-trigger.llm.md +51 -0
- package/.llm/menubar-sub.llm.md +53 -0
- package/.llm/menubar-trigger.llm.md +37 -0
- package/.llm/menubar.llm.md +115 -0
- package/.llm/navigation-menu-content.llm.md +116 -0
- package/.llm/navigation-menu-indicator.llm.md +68 -0
- package/.llm/navigation-menu-item.llm.md +62 -0
- package/.llm/navigation-menu-link.llm.md +109 -0
- package/.llm/navigation-menu-list.llm.md +52 -0
- package/.llm/navigation-menu-trigger-style.llm.md +22 -0
- package/.llm/navigation-menu-trigger.llm.md +57 -0
- package/.llm/navigation-menu-viewport.llm.md +51 -0
- package/.llm/navigation-menu.llm.md +184 -0
- package/.llm/overline.llm.md +51 -0
- package/.llm/page-title.llm.md +52 -0
- package/.llm/pagination-content.llm.md +60 -0
- package/.llm/pagination-ellipsis.llm.md +107 -0
- package/.llm/pagination-item.llm.md +59 -0
- package/.llm/pagination-link.llm.md +150 -0
- package/.llm/pagination-next.llm.md +115 -0
- package/.llm/pagination-previous.llm.md +115 -0
- package/.llm/pagination.llm.md +190 -0
- package/.llm/popover-anchor.llm.md +53 -0
- package/.llm/popover-content.llm.md +109 -0
- package/.llm/popover-trigger.llm.md +54 -0
- package/.llm/popover.llm.md +116 -0
- package/.llm/progress.llm.md +76 -0
- package/.llm/radio-group-indicator.llm.md +28 -0
- package/.llm/radio-group-item.llm.md +40 -0
- package/.llm/radio-group.llm.md +76 -0
- package/.llm/resizable-handle.llm.md +156 -0
- package/.llm/resizable-panel-group.llm.md +149 -0
- package/.llm/resizable-panel.llm.md +157 -0
- package/.llm/scroll-area-corner.llm.md +41 -0
- package/.llm/scroll-area-thumb.llm.md +39 -0
- package/.llm/scroll-area-viewport.llm.md +60 -0
- package/.llm/scroll-area.llm.md +125 -0
- package/.llm/scroll-bar.llm.md +78 -0
- package/.llm/sdk-items-registry.json +2984 -0
- package/.llm/section-title.llm.md +48 -0
- package/.llm/select-content.llm.md +139 -0
- package/.llm/select-group.llm.md +60 -0
- package/.llm/select-item.llm.md +75 -0
- package/.llm/select-label.llm.md +62 -0
- package/.llm/select-scroll-down-button.llm.md +45 -0
- package/.llm/select-scroll-up-button.llm.md +45 -0
- package/.llm/select-separator.llm.md +59 -0
- package/.llm/select-trigger.llm.md +66 -0
- package/.llm/select-value.llm.md +67 -0
- package/.llm/select.llm.md +159 -0
- package/.llm/separator.llm.md +129 -0
- package/.llm/sheet-close.llm.md +49 -0
- package/.llm/sheet-content.llm.md +115 -0
- package/.llm/sheet-description.llm.md +62 -0
- package/.llm/sheet-footer.llm.md +64 -0
- package/.llm/sheet-header.llm.md +52 -0
- package/.llm/sheet-title.llm.md +53 -0
- package/.llm/sheet-trigger.llm.md +46 -0
- package/.llm/sheet.llm.md +126 -0
- package/.llm/sidebar-content.llm.md +63 -0
- package/.llm/sidebar-footer.llm.md +50 -0
- package/.llm/sidebar-group-action.llm.md +60 -0
- package/.llm/sidebar-group-content.llm.md +64 -0
- package/.llm/sidebar-group-label.llm.md +53 -0
- package/.llm/sidebar-group.llm.md +56 -0
- package/.llm/sidebar-header.llm.md +67 -0
- package/.llm/sidebar-input.llm.md +50 -0
- package/.llm/sidebar-inset.llm.md +52 -0
- package/.llm/sidebar-menu-action.llm.md +84 -0
- package/.llm/sidebar-menu-badge.llm.md +60 -0
- package/.llm/sidebar-menu-button.llm.md +103 -0
- package/.llm/sidebar-menu-item.llm.md +75 -0
- package/.llm/sidebar-menu-skeleton.llm.md +76 -0
- package/.llm/sidebar-menu-sub-button.llm.md +85 -0
- package/.llm/sidebar-menu-sub-item.llm.md +54 -0
- package/.llm/sidebar-menu-sub.llm.md +74 -0
- package/.llm/sidebar-menu.llm.md +65 -0
- package/.llm/sidebar-provider.llm.md +79 -0
- package/.llm/sidebar-rail.llm.md +34 -0
- package/.llm/sidebar-separator.llm.md +57 -0
- package/.llm/sidebar-trigger.llm.md +49 -0
- package/.llm/sidebar.llm.md +129 -0
- package/.llm/skeleton.llm.md +134 -0
- package/.llm/slider.llm.md +173 -0
- package/.llm/spinner.llm.md +182 -0
- package/.llm/stack.llm.md +28 -0
- package/.llm/subsection-title.llm.md +46 -0
- package/.llm/switch.llm.md +76 -0
- package/.llm/table-body.llm.md +36 -0
- package/.llm/table-caption.llm.md +48 -0
- package/.llm/table-cell.llm.md +53 -0
- package/.llm/table-footer.llm.md +41 -0
- package/.llm/table-head.llm.md +69 -0
- package/.llm/table-header.llm.md +41 -0
- package/.llm/table-row.llm.md +42 -0
- package/.llm/table.llm.md +123 -0
- package/.llm/tabs-content.llm.md +47 -0
- package/.llm/tabs-list.llm.md +41 -0
- package/.llm/tabs-trigger.llm.md +47 -0
- package/.llm/tabs.llm.md +71 -0
- package/.llm/text-field.llm.md +327 -0
- package/.llm/textarea.llm.md +311 -0
- package/.llm/theme-preference.llm.md +25 -0
- package/.llm/theme-toggle.llm.md +57 -0
- package/.llm/theme.llm.md +14 -0
- package/.llm/toaster.llm.md +193 -0
- package/.llm/toggle-group-item.llm.md +59 -0
- package/.llm/toggle-group.llm.md +101 -0
- package/.llm/toggle.llm.md +40 -0
- package/.llm/tooltip-content.llm.md +185 -0
- package/.llm/tooltip-provider.llm.md +68 -0
- package/.llm/tooltip-trigger.llm.md +70 -0
- package/.llm/tooltip.llm.md +129 -0
- package/.llm/use-carousel.llm.md +55 -0
- package/.llm/use-command-state.llm.md +32 -0
- package/.llm/use-is-mobile.llm.md +73 -0
- package/.llm/use-sidebar.llm.md +61 -0
- package/dist/components/ui/scroll-area.d.ts +5 -5
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
- package/dist/components/ui/stories/typography.stories.d.ts +8 -108
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
- package/dist/components/ui/theme-toggle.d.ts +0 -3
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +211 -474
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +5160 -9875
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/components/ui/stack.tsx +3 -1
- package/src/components/ui/stories/typography.stories.tsx +261 -1512
- package/src/components/ui/theme-toggle.tsx +1 -3
- package/src/components/ui/theme.tsx +6 -1
- package/src/components/ui/typography.tsx +416 -1136
- package/src/styles/globals.css +57 -106
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# ToggleGroup
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Toggle Group - A group of toggle buttons with single or multiple selection ToggleGroup provides a way to group related toggle buttons together, allowing users to select from a set of mutually exclusive options (single selection) or independent options (multiple selection). Built on Radix UI Toggle Group primitive with enhanced styling through CVA variants and full accessibility support including keyboard navigation. The component supports both controlled and uncontrolled usage patterns, with automatic focus management and roving tabindex behavior. Visual variants are inherited by all child items but can be overridden per item if needed.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ToggleGroup } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ToggleGroup
|
|
13
|
+
className="value"
|
|
14
|
+
type={value}
|
|
15
|
+
variant={value}
|
|
16
|
+
size={value}
|
|
17
|
+
defaultValue={[]}
|
|
18
|
+
value={[]}
|
|
19
|
+
onValueChange={handleValueChange}
|
|
20
|
+
disabled={true}
|
|
21
|
+
rovingFocus={true}
|
|
22
|
+
orientation={value}
|
|
23
|
+
dir={value}
|
|
24
|
+
loop={true}
|
|
25
|
+
asChild={true}
|
|
26
|
+
>
|
|
27
|
+
{/* Your content here */}
|
|
28
|
+
</ToggleGroup>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Component Props
|
|
32
|
+
|
|
33
|
+
### className
|
|
34
|
+
- **Type**: `string`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### type
|
|
39
|
+
- **Type**: `"single" | "multiple"`
|
|
40
|
+
- **Required**: Yes
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
### variant
|
|
44
|
+
- **Type**: `"default" | "outline"`
|
|
45
|
+
- **Required**: No
|
|
46
|
+
- **Description**: No description available
|
|
47
|
+
|
|
48
|
+
### size
|
|
49
|
+
- **Type**: `"sm" | "default" | "lg"`
|
|
50
|
+
- **Required**: No
|
|
51
|
+
- **Description**: No description available
|
|
52
|
+
|
|
53
|
+
### defaultValue
|
|
54
|
+
- **Type**: `string | string[]`
|
|
55
|
+
- **Required**: No
|
|
56
|
+
- **Description**: No description available
|
|
57
|
+
|
|
58
|
+
### value
|
|
59
|
+
- **Type**: `string | string[]`
|
|
60
|
+
- **Required**: No
|
|
61
|
+
- **Description**: No description available
|
|
62
|
+
|
|
63
|
+
### onValueChange
|
|
64
|
+
- **Type**: `(value: string | string[]) => void`
|
|
65
|
+
- **Required**: No
|
|
66
|
+
- **Description**: No description available
|
|
67
|
+
|
|
68
|
+
### disabled
|
|
69
|
+
- **Type**: `boolean`
|
|
70
|
+
- **Required**: No
|
|
71
|
+
- **Description**: No description available
|
|
72
|
+
|
|
73
|
+
### rovingFocus
|
|
74
|
+
- **Type**: `boolean`
|
|
75
|
+
- **Required**: No
|
|
76
|
+
- **Description**: No description available
|
|
77
|
+
|
|
78
|
+
### orientation
|
|
79
|
+
- **Type**: `"horizontal" | "vertical"`
|
|
80
|
+
- **Required**: No
|
|
81
|
+
- **Description**: No description available
|
|
82
|
+
|
|
83
|
+
### dir
|
|
84
|
+
- **Type**: `"ltr" | "rtl"`
|
|
85
|
+
- **Required**: No
|
|
86
|
+
- **Description**: No description available
|
|
87
|
+
|
|
88
|
+
### loop
|
|
89
|
+
- **Type**: `boolean`
|
|
90
|
+
- **Required**: No
|
|
91
|
+
- **Description**: No description available
|
|
92
|
+
|
|
93
|
+
### asChild
|
|
94
|
+
- **Type**: `boolean`
|
|
95
|
+
- **Required**: No
|
|
96
|
+
- **Description**: No description available
|
|
97
|
+
|
|
98
|
+
### children
|
|
99
|
+
- **Type**: `React.ReactNode`
|
|
100
|
+
- **Required**: No
|
|
101
|
+
- **Description**: No description available
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Toggle
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
A two-state button that can be either on or off The Toggle component provides an accessible button with on/off state functionality. Built on Radix UI Toggle primitives with customizable variants and sizes. Perfect for text formatting controls, feature toggles, and any binary state controls. Automatically manages ARIA attributes and provides keyboard navigation.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Toggle } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Toggle
|
|
13
|
+
className={value}
|
|
14
|
+
variant={value}
|
|
15
|
+
size={value}
|
|
16
|
+
...props={value}
|
|
17
|
+
/>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### className
|
|
23
|
+
- **Type**: `unknown`
|
|
24
|
+
- **Required**: Yes
|
|
25
|
+
- **Description**: No description available
|
|
26
|
+
|
|
27
|
+
### variant
|
|
28
|
+
- **Type**: `unknown`
|
|
29
|
+
- **Required**: Yes
|
|
30
|
+
- **Description**: No description available
|
|
31
|
+
|
|
32
|
+
### size
|
|
33
|
+
- **Type**: `unknown`
|
|
34
|
+
- **Required**: Yes
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
### ...props
|
|
38
|
+
- **Type**: `unknown`
|
|
39
|
+
- **Required**: Yes
|
|
40
|
+
- **Description**: No description available
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# TooltipContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
TooltipContent - The floating tooltip content container Contains the content displayed in the tooltip popup. Automatically positioned relative to the trigger element with intelligent collision detection to ensure the tooltip stays within the viewport. Includes smooth animations and an arrow pointer for visual connection to the trigger. The content component handles complex positioning logic, including collision detection, viewport boundaries, and responsive positioning. It supports rich content including text, images, and interactive elements while maintaining accessibility standards.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { TooltipContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<TooltipContent
|
|
13
|
+
asChild={true}
|
|
14
|
+
"aria-label"="value"
|
|
15
|
+
onEscapeKeyDown={handleEscapeKeyDown}
|
|
16
|
+
onPointerDownOutside={handlePointerDownOutside}
|
|
17
|
+
forceMount={true}
|
|
18
|
+
side={value}
|
|
19
|
+
sideOffset={0}
|
|
20
|
+
align={value}
|
|
21
|
+
alignOffset={0}
|
|
22
|
+
avoidCollisions={true}
|
|
23
|
+
collisionBoundary={[]}
|
|
24
|
+
collisionPadding={value}
|
|
25
|
+
arrowPadding={0}
|
|
26
|
+
sticky={value}
|
|
27
|
+
hideWhenDetached={true}
|
|
28
|
+
className="value"
|
|
29
|
+
>
|
|
30
|
+
{/* Your content here */}
|
|
31
|
+
</TooltipContent>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Component Props
|
|
35
|
+
|
|
36
|
+
### asChild
|
|
37
|
+
- **Type**: `boolean`
|
|
38
|
+
- **Required**: No
|
|
39
|
+
- **Description**: No description available
|
|
40
|
+
|
|
41
|
+
### "aria-label"
|
|
42
|
+
- **Type**: `string`
|
|
43
|
+
- **Required**: No
|
|
44
|
+
- **Description**: No description available
|
|
45
|
+
|
|
46
|
+
### onEscapeKeyDown
|
|
47
|
+
- **Type**: `(event: KeyboardEvent) => void`
|
|
48
|
+
- **Required**: No
|
|
49
|
+
- **Description**: No description available
|
|
50
|
+
|
|
51
|
+
### onPointerDownOutside
|
|
52
|
+
- **Type**: `(event: PointerEvent) => void`
|
|
53
|
+
- **Required**: No
|
|
54
|
+
- **Description**: No description available
|
|
55
|
+
|
|
56
|
+
### forceMount
|
|
57
|
+
- **Type**: `boolean`
|
|
58
|
+
- **Required**: No
|
|
59
|
+
- **Description**: No description available
|
|
60
|
+
|
|
61
|
+
### side
|
|
62
|
+
- **Type**: `"top" | "right" | "bottom" | "left"`
|
|
63
|
+
- **Required**: No
|
|
64
|
+
- **Description**: No description available
|
|
65
|
+
|
|
66
|
+
### sideOffset
|
|
67
|
+
- **Type**: `number`
|
|
68
|
+
- **Required**: No
|
|
69
|
+
- **Description**: No description available
|
|
70
|
+
|
|
71
|
+
### align
|
|
72
|
+
- **Type**: `"start" | "center" | "end"`
|
|
73
|
+
- **Required**: No
|
|
74
|
+
- **Description**: No description available
|
|
75
|
+
|
|
76
|
+
### alignOffset
|
|
77
|
+
- **Type**: `number`
|
|
78
|
+
- **Required**: No
|
|
79
|
+
- **Description**: No description available
|
|
80
|
+
|
|
81
|
+
### avoidCollisions
|
|
82
|
+
- **Type**: `boolean`
|
|
83
|
+
- **Required**: No
|
|
84
|
+
- **Description**: No description available
|
|
85
|
+
|
|
86
|
+
### collisionBoundary
|
|
87
|
+
- **Type**: `Element | Element[]`
|
|
88
|
+
- **Required**: No
|
|
89
|
+
- **Description**: No description available
|
|
90
|
+
|
|
91
|
+
### collisionPadding
|
|
92
|
+
- **Type**: `| number
|
|
93
|
+
| { top?: number; right?: number; bottom?: number; left?: number }`
|
|
94
|
+
- **Required**: No
|
|
95
|
+
- **Description**: No description available
|
|
96
|
+
|
|
97
|
+
### arrowPadding
|
|
98
|
+
- **Type**: `number`
|
|
99
|
+
- **Required**: No
|
|
100
|
+
- **Description**: No description available
|
|
101
|
+
|
|
102
|
+
### sticky
|
|
103
|
+
- **Type**: `"partial" | "always"`
|
|
104
|
+
- **Required**: No
|
|
105
|
+
- **Description**: No description available
|
|
106
|
+
|
|
107
|
+
### hideWhenDetached
|
|
108
|
+
- **Type**: `boolean`
|
|
109
|
+
- **Required**: No
|
|
110
|
+
- **Description**: No description available
|
|
111
|
+
|
|
112
|
+
### className
|
|
113
|
+
- **Type**: `string`
|
|
114
|
+
- **Required**: No
|
|
115
|
+
- **Description**: No description available
|
|
116
|
+
|
|
117
|
+
### children
|
|
118
|
+
- **Type**: `React.ReactNode`
|
|
119
|
+
- **Required**: No
|
|
120
|
+
- **Description**: No description available
|
|
121
|
+
|
|
122
|
+
## Examples
|
|
123
|
+
|
|
124
|
+
### Example 1
|
|
125
|
+
```tsx
|
|
126
|
+
// Simple text tooltip
|
|
127
|
+
<TooltipContent>
|
|
128
|
+
<p>This is helpful information</p>
|
|
129
|
+
</TooltipContent>
|
|
130
|
+
```
|
|
131
|
+
### Example 2
|
|
132
|
+
```tsx
|
|
133
|
+
// Positioned tooltip with custom offset
|
|
134
|
+
<TooltipContent
|
|
135
|
+
side="left"
|
|
136
|
+
sideOffset={12}
|
|
137
|
+
align="start"
|
|
138
|
+
alignOffset={-4}
|
|
139
|
+
>
|
|
140
|
+
<p>Precisely positioned tooltip</p>
|
|
141
|
+
</TooltipContent>
|
|
142
|
+
```
|
|
143
|
+
### Example 3
|
|
144
|
+
```tsx
|
|
145
|
+
// Rich content with custom styling
|
|
146
|
+
<TooltipContent className="max-w-[320px] p-4">
|
|
147
|
+
<div className="space-y-2">
|
|
148
|
+
<div className="flex items-center gap-2">
|
|
149
|
+
<InfoIcon className="h-4 w-4 text-blue-500" />
|
|
150
|
+
<p className="font-semibold">Pro Feature</p>
|
|
151
|
+
</div>
|
|
152
|
+
<p className="text-sm text-gray-600">
|
|
153
|
+
This feature is available in Pro plans. Upgrade to unlock
|
|
154
|
+
advanced functionality and premium support.
|
|
155
|
+
</p>
|
|
156
|
+
<Button size="sm" className="mt-2">Upgrade Now</Button>
|
|
157
|
+
</div>
|
|
158
|
+
</TooltipContent>
|
|
159
|
+
```
|
|
160
|
+
### Example 4
|
|
161
|
+
```tsx
|
|
162
|
+
// Tooltip with collision boundary
|
|
163
|
+
<TooltipContent
|
|
164
|
+
collisionPadding={{ top: 10, bottom: 10 }}
|
|
165
|
+
hideWhenDetached
|
|
166
|
+
sticky="always"
|
|
167
|
+
>
|
|
168
|
+
<p>Stays within safe boundaries</p>
|
|
169
|
+
</TooltipContent>
|
|
170
|
+
```
|
|
171
|
+
### Example 5
|
|
172
|
+
```tsx
|
|
173
|
+
// Controlled tooltip with escape handling
|
|
174
|
+
<TooltipContent
|
|
175
|
+
onEscapeKeyDown={(e) => {
|
|
176
|
+
console.log('Tooltip dismissed with Escape');
|
|
177
|
+
// Custom handling if needed
|
|
178
|
+
}}
|
|
179
|
+
onPointerDownOutside={(e) => {
|
|
180
|
+
console.log('Clicked outside tooltip');
|
|
181
|
+
}}
|
|
182
|
+
>
|
|
183
|
+
<p>Interactive tooltip with event handlers</p>
|
|
184
|
+
</TooltipContent>
|
|
185
|
+
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# TooltipProvider
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
TooltipProvider - Global context provider for tooltip functionality Wraps your application or component tree to enable tooltip functionality. Controls global tooltip behavior such as delay duration before showing tooltips. Required for tooltip components to function properly across your app. The provider manages global settings that affect all tooltips within its tree, including timing behavior and accessibility features. Individual tooltips can override these settings as needed.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { TooltipProvider } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<TooltipProvider
|
|
13
|
+
delayDuration={0}
|
|
14
|
+
skipDelayDuration={0}
|
|
15
|
+
disableHoverableContent={true}
|
|
16
|
+
>
|
|
17
|
+
{/* Your content here */}
|
|
18
|
+
</TooltipProvider>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### delayDuration
|
|
24
|
+
- **Type**: `number`
|
|
25
|
+
- **Required**: No
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### skipDelayDuration
|
|
29
|
+
- **Type**: `number`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### disableHoverableContent
|
|
34
|
+
- **Type**: `boolean`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### children
|
|
39
|
+
- **Type**: `React.ReactNode`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Example 1
|
|
46
|
+
```tsx
|
|
47
|
+
// Wrap your entire app
|
|
48
|
+
<TooltipProvider>
|
|
49
|
+
<App />
|
|
50
|
+
</TooltipProvider>
|
|
51
|
+
```
|
|
52
|
+
### Example 2
|
|
53
|
+
```tsx
|
|
54
|
+
// With custom delay and skip behavior
|
|
55
|
+
<TooltipProvider
|
|
56
|
+
delayDuration={500}
|
|
57
|
+
skipDelayDuration={200}
|
|
58
|
+
>
|
|
59
|
+
<MyComponent />
|
|
60
|
+
</TooltipProvider>
|
|
61
|
+
```
|
|
62
|
+
### Example 3
|
|
63
|
+
```tsx
|
|
64
|
+
// Disable hoverable content for stricter accessibility
|
|
65
|
+
<TooltipProvider disableHoverableContent>
|
|
66
|
+
<Form />
|
|
67
|
+
</TooltipProvider>
|
|
68
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# TooltipTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
TooltipTrigger - The element that triggers the tooltip display Wraps the element that will show the tooltip on hover or focus. Use the `asChild` prop to merge props with the child element rather than rendering an additional wrapper element. Essential for maintaining semantic meaning and avoiding unnecessary DOM nesting. The trigger automatically handles all interaction events including mouse hover, touch interactions, keyboard focus, and blur events. It preserves the original element's accessibility properties while adding tooltip functionality.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { TooltipTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<TooltipTrigger
|
|
13
|
+
asChild={true}
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</TooltipTrigger>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### asChild
|
|
22
|
+
- **Type**: `boolean`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: No description available
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: No description available
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Basic trigger with button
|
|
36
|
+
<TooltipTrigger asChild>
|
|
37
|
+
<Button>Hover me</Button>
|
|
38
|
+
</TooltipTrigger>
|
|
39
|
+
```
|
|
40
|
+
### Example 2
|
|
41
|
+
```tsx
|
|
42
|
+
// With icon button
|
|
43
|
+
<TooltipTrigger asChild>
|
|
44
|
+
<Button variant="ghost" size="icon">
|
|
45
|
+
<Settings className="h-4 w-4" />
|
|
46
|
+
</Button>
|
|
47
|
+
</TooltipTrigger>
|
|
48
|
+
```
|
|
49
|
+
### Example 3
|
|
50
|
+
```tsx
|
|
51
|
+
// With disabled element (requires wrapper for pointer events)
|
|
52
|
+
<TooltipTrigger asChild>
|
|
53
|
+
<span className="inline-block cursor-not-allowed">
|
|
54
|
+
<Button disabled>Disabled Action</Button>
|
|
55
|
+
</span>
|
|
56
|
+
</TooltipTrigger>
|
|
57
|
+
```
|
|
58
|
+
### Example 4
|
|
59
|
+
```tsx
|
|
60
|
+
// With custom element
|
|
61
|
+
<TooltipTrigger asChild>
|
|
62
|
+
<div
|
|
63
|
+
role="button"
|
|
64
|
+
tabIndex={0}
|
|
65
|
+
className="cursor-pointer p-2 rounded hover:bg-gray-100"
|
|
66
|
+
>
|
|
67
|
+
Custom trigger element
|
|
68
|
+
</div>
|
|
69
|
+
</TooltipTrigger>
|
|
70
|
+
```
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Tooltip
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Tooltip - Display contextual information on hover or focus A versatile tooltip component built on Radix UI primitives that provides contextual information when users hover over or focus on an element. Perfect for displaying help text, definitions, or additional context without cluttering the interface. Automatically wraps content in a TooltipProvider for convenience. The tooltip supports both controlled and uncontrolled usage patterns, with intelligent positioning, collision detection, and smooth animations. Built with accessibility as a priority, including proper ARIA attributes and keyboard navigation support.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Tooltip } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Tooltip
|
|
13
|
+
defaultOpen={true}
|
|
14
|
+
open={true}
|
|
15
|
+
onOpenChange={handleOpenChange}
|
|
16
|
+
delayDuration={0}
|
|
17
|
+
disableHoverableContent={true}
|
|
18
|
+
>
|
|
19
|
+
{/* Your content here */}
|
|
20
|
+
</Tooltip>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Component Props
|
|
24
|
+
|
|
25
|
+
### defaultOpen
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: No description available
|
|
29
|
+
|
|
30
|
+
### open
|
|
31
|
+
- **Type**: `boolean`
|
|
32
|
+
- **Required**: No
|
|
33
|
+
- **Description**: No description available
|
|
34
|
+
|
|
35
|
+
### onOpenChange
|
|
36
|
+
- **Type**: `(open: boolean) => void`
|
|
37
|
+
- **Required**: No
|
|
38
|
+
- **Description**: No description available
|
|
39
|
+
|
|
40
|
+
### delayDuration
|
|
41
|
+
- **Type**: `number`
|
|
42
|
+
- **Required**: No
|
|
43
|
+
- **Description**: No description available
|
|
44
|
+
|
|
45
|
+
### disableHoverableContent
|
|
46
|
+
- **Type**: `boolean`
|
|
47
|
+
- **Required**: No
|
|
48
|
+
- **Description**: No description available
|
|
49
|
+
|
|
50
|
+
### children
|
|
51
|
+
- **Type**: `React.ReactNode`
|
|
52
|
+
- **Required**: No
|
|
53
|
+
- **Description**: No description available
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
### Example 1
|
|
58
|
+
```tsx
|
|
59
|
+
// Basic tooltip
|
|
60
|
+
<Tooltip>
|
|
61
|
+
<TooltipTrigger asChild>
|
|
62
|
+
<Button variant="outline">Hover me</Button>
|
|
63
|
+
</TooltipTrigger>
|
|
64
|
+
<TooltipContent>
|
|
65
|
+
<p>This is a helpful tooltip</p>
|
|
66
|
+
</TooltipContent>
|
|
67
|
+
</Tooltip>
|
|
68
|
+
```
|
|
69
|
+
### Example 2
|
|
70
|
+
```tsx
|
|
71
|
+
// Icon button with tooltip
|
|
72
|
+
import { Info } from "lucide-react"
|
|
73
|
+
<Tooltip>
|
|
74
|
+
<TooltipTrigger asChild>
|
|
75
|
+
<Button variant="ghost" size="icon">
|
|
76
|
+
<Info className="h-4 w-4" />
|
|
77
|
+
</Button>
|
|
78
|
+
</TooltipTrigger>
|
|
79
|
+
<TooltipContent>
|
|
80
|
+
<p>Additional information</p>
|
|
81
|
+
</TooltipContent>
|
|
82
|
+
</Tooltip>
|
|
83
|
+
```
|
|
84
|
+
### Example 3
|
|
85
|
+
```tsx
|
|
86
|
+
// Controlled tooltip with custom delay
|
|
87
|
+
const [open, setOpen] = useState(false)
|
|
88
|
+
<Tooltip
|
|
89
|
+
open={open}
|
|
90
|
+
onOpenChange={setOpen}
|
|
91
|
+
delayDuration={300}
|
|
92
|
+
>
|
|
93
|
+
<TooltipTrigger asChild>
|
|
94
|
+
<Button onClick={() => setOpen(!open)}>Toggle</Button>
|
|
95
|
+
</TooltipTrigger>
|
|
96
|
+
<TooltipContent>
|
|
97
|
+
<p>Controlled tooltip state</p>
|
|
98
|
+
</TooltipContent>
|
|
99
|
+
</Tooltip>
|
|
100
|
+
```
|
|
101
|
+
### Example 4
|
|
102
|
+
```tsx
|
|
103
|
+
// Disabled element with tooltip (requires wrapper)
|
|
104
|
+
<Tooltip>
|
|
105
|
+
<TooltipTrigger asChild>
|
|
106
|
+
<span className="inline-block">
|
|
107
|
+
<Button disabled>Disabled Action</Button>
|
|
108
|
+
</span>
|
|
109
|
+
</TooltipTrigger>
|
|
110
|
+
<TooltipContent>
|
|
111
|
+
<p>You need to complete setup first</p>
|
|
112
|
+
</TooltipContent>
|
|
113
|
+
</Tooltip>
|
|
114
|
+
```
|
|
115
|
+
### Example 5
|
|
116
|
+
```tsx
|
|
117
|
+
// Positioned tooltip with rich content
|
|
118
|
+
<Tooltip>
|
|
119
|
+
<TooltipTrigger asChild>
|
|
120
|
+
<Badge variant="secondary">API Key</Badge>
|
|
121
|
+
</TooltipTrigger>
|
|
122
|
+
<TooltipContent side="right" className="max-w-[250px]">
|
|
123
|
+
<div className="space-y-1">
|
|
124
|
+
<p className="font-medium">API Authentication</p>
|
|
125
|
+
<p className="text-xs">Your key is used to authenticate requests</p>
|
|
126
|
+
</div>
|
|
127
|
+
</TooltipContent>
|
|
128
|
+
</Tooltip>
|
|
129
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# useCarousel
|
|
2
|
+
|
|
3
|
+
**Type**: hook
|
|
4
|
+
|
|
5
|
+
Hook to access carousel context and controls Must be used within a Carousel component. Provides access to the carousel API and navigation methods for building custom carousel interactions.
|
|
6
|
+
|
|
7
|
+
## API Surface
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { useCarousel } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
export function useCarousel(): ReturnType<typeof useCarousel> { ... }
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Returns
|
|
16
|
+
|
|
17
|
+
**Return Type**: `ReturnType<typeof useCarousel>`
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
**Description**: Carousel context containing API, navigation controls, and state
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { useCarousel } from '@neynar/ui';
|
|
25
|
+
|
|
26
|
+
const result = useCarousel();
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
function CarouselDots() {
|
|
33
|
+
const { api, scrollNext, canScrollNext } = useCarousel();
|
|
34
|
+
const [current, setCurrent] = useState(0);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!api) return;
|
|
37
|
+
setCurrent(api.selectedScrollSnap());
|
|
38
|
+
api.on('select', () => setCurrent(api.selectedScrollSnap()));
|
|
39
|
+
}, [api]);
|
|
40
|
+
return (
|
|
41
|
+
<div className="flex gap-2">
|
|
42
|
+
{Array.from({ length: 5 }).map((_, i) => (
|
|
43
|
+
<button
|
|
44
|
+
key={i}
|
|
45
|
+
className={current === i ? "active" : ""}
|
|
46
|
+
onClick={() => api?.scrollTo(i)}
|
|
47
|
+
/>
|
|
48
|
+
))}
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
## Throws
|
|
54
|
+
|
|
55
|
+
- Error when used outside of Carousel component
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# useCmdk
|
|
2
|
+
|
|
3
|
+
**Type**: hook
|
|
4
|
+
|
|
5
|
+
Run a selector against the store state.
|
|
6
|
+
|
|
7
|
+
## API Surface
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { useCmdk } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
export function useCmdk(selector: (state: State) => T): T { ... }
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Parameters
|
|
16
|
+
|
|
17
|
+
### selector
|
|
18
|
+
- **Type**: `(state: State) => T`
|
|
19
|
+
- **Required**: Yes
|
|
20
|
+
- **Description**: No description available
|
|
21
|
+
## Returns
|
|
22
|
+
|
|
23
|
+
**Return Type**: `T`
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { useCmdk } from '@neynar/ui';
|
|
30
|
+
|
|
31
|
+
const result = useCmdk(() => {});
|
|
32
|
+
```
|