@neynar/ui 0.3.0 → 0.3.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.
Files changed (320) hide show
  1. package/.llm/a.llm.md +131 -0
  2. package/.llm/accordion-content.llm.md +67 -0
  3. package/.llm/accordion-item.llm.md +61 -0
  4. package/.llm/accordion-trigger.llm.md +69 -0
  5. package/.llm/accordion.llm.md +88 -0
  6. package/.llm/alert-description.llm.md +78 -0
  7. package/.llm/alert-dialog-action.llm.md +51 -0
  8. package/.llm/alert-dialog-cancel.llm.md +48 -0
  9. package/.llm/alert-dialog-content.llm.md +88 -0
  10. package/.llm/alert-dialog-description.llm.md +53 -0
  11. package/.llm/alert-dialog-footer.llm.md +41 -0
  12. package/.llm/alert-dialog-header.llm.md +39 -0
  13. package/.llm/alert-dialog-overlay.llm.md +44 -0
  14. package/.llm/alert-dialog-portal.llm.md +41 -0
  15. package/.llm/alert-dialog-title.llm.md +46 -0
  16. package/.llm/alert-dialog-trigger.llm.md +40 -0
  17. package/.llm/alert-dialog.llm.md +80 -0
  18. package/.llm/alert-title.llm.md +48 -0
  19. package/.llm/alert.llm.md +92 -0
  20. package/.llm/aspect-ratio.llm.md +41 -0
  21. package/.llm/avatar-fallback.llm.md +41 -0
  22. package/.llm/avatar-image.llm.md +48 -0
  23. package/.llm/avatar.llm.md +35 -0
  24. package/.llm/badge.llm.md +117 -0
  25. package/.llm/blockquote.llm.md +117 -0
  26. package/.llm/breadcrumb-ellipsis.llm.md +73 -0
  27. package/.llm/breadcrumb-item.llm.md +53 -0
  28. package/.llm/breadcrumb-link.llm.md +84 -0
  29. package/.llm/breadcrumb-list.llm.md +54 -0
  30. package/.llm/breadcrumb-page.llm.md +52 -0
  31. package/.llm/breadcrumb-separator.llm.md +60 -0
  32. package/.llm/breadcrumb.llm.md +110 -0
  33. package/.llm/button-group-separator.llm.md +53 -0
  34. package/.llm/button-group-text.llm.md +56 -0
  35. package/.llm/button-group.llm.md +81 -0
  36. package/.llm/button.llm.md +281 -0
  37. package/.llm/calendar-day-button.llm.md +57 -0
  38. package/.llm/calendar.llm.md +340 -0
  39. package/.llm/card-action.llm.md +64 -0
  40. package/.llm/card-content.llm.md +48 -0
  41. package/.llm/card-description.llm.md +46 -0
  42. package/.llm/card-footer.llm.md +56 -0
  43. package/.llm/card-header.llm.md +53 -0
  44. package/.llm/card-title.llm.md +43 -0
  45. package/.llm/card.llm.md +100 -0
  46. package/.llm/carousel-content.llm.md +77 -0
  47. package/.llm/carousel-item.llm.md +96 -0
  48. package/.llm/carousel-next.llm.md +95 -0
  49. package/.llm/carousel-previous.llm.md +95 -0
  50. package/.llm/carousel.llm.md +211 -0
  51. package/.llm/chart-config.llm.md +71 -0
  52. package/.llm/chart-container.llm.md +148 -0
  53. package/.llm/chart-legend-content.llm.md +85 -0
  54. package/.llm/chart-legend.llm.md +144 -0
  55. package/.llm/chart-style.llm.md +28 -0
  56. package/.llm/chart-tooltip-content.llm.md +149 -0
  57. package/.llm/chart-tooltip.llm.md +184 -0
  58. package/.llm/checkbox.llm.md +100 -0
  59. package/.llm/cn.llm.md +46 -0
  60. package/.llm/code.llm.md +103 -0
  61. package/.llm/collapsible-content.llm.md +109 -0
  62. package/.llm/collapsible-trigger.llm.md +75 -0
  63. package/.llm/collapsible.llm.md +109 -0
  64. package/.llm/combobox-option.llm.md +53 -0
  65. package/.llm/combobox.llm.md +208 -0
  66. package/.llm/command-dialog.llm.md +112 -0
  67. package/.llm/command-empty.llm.md +63 -0
  68. package/.llm/command-group.llm.md +83 -0
  69. package/.llm/command-input.llm.md +82 -0
  70. package/.llm/command-item.llm.md +97 -0
  71. package/.llm/command-list.llm.md +53 -0
  72. package/.llm/command-loading.llm.md +48 -0
  73. package/.llm/command-separator.llm.md +44 -0
  74. package/.llm/command-shortcut.llm.md +63 -0
  75. package/.llm/command.llm.md +147 -0
  76. package/.llm/container.llm.md +236 -0
  77. package/.llm/context-menu-checkbox-item.llm.md +97 -0
  78. package/.llm/context-menu-content.llm.md +91 -0
  79. package/.llm/context-menu-group.llm.md +61 -0
  80. package/.llm/context-menu-item.llm.md +94 -0
  81. package/.llm/context-menu-label.llm.md +60 -0
  82. package/.llm/context-menu-portal.llm.md +49 -0
  83. package/.llm/context-menu-radio-group.llm.md +66 -0
  84. package/.llm/context-menu-radio-item.llm.md +76 -0
  85. package/.llm/context-menu-separator.llm.md +51 -0
  86. package/.llm/context-menu-shortcut.llm.md +57 -0
  87. package/.llm/context-menu-sub-content.llm.md +90 -0
  88. package/.llm/context-menu-sub-trigger.llm.md +73 -0
  89. package/.llm/context-menu-sub.llm.md +61 -0
  90. package/.llm/context-menu-trigger.llm.md +53 -0
  91. package/.llm/context-menu.llm.md +103 -0
  92. package/.llm/date-picker.llm.md +90 -0
  93. package/.llm/dialog-close.llm.md +61 -0
  94. package/.llm/dialog-content.llm.md +128 -0
  95. package/.llm/dialog-description.llm.md +44 -0
  96. package/.llm/dialog-footer.llm.md +38 -0
  97. package/.llm/dialog-header.llm.md +40 -0
  98. package/.llm/dialog-overlay.llm.md +57 -0
  99. package/.llm/dialog-portal.llm.md +47 -0
  100. package/.llm/dialog-title.llm.md +41 -0
  101. package/.llm/dialog-trigger.llm.md +51 -0
  102. package/.llm/dialog.llm.md +113 -0
  103. package/.llm/drawer-close.llm.md +53 -0
  104. package/.llm/drawer-content.llm.md +58 -0
  105. package/.llm/drawer-description.llm.md +54 -0
  106. package/.llm/drawer-footer.llm.md +67 -0
  107. package/.llm/drawer-header.llm.md +60 -0
  108. package/.llm/drawer-overlay.llm.md +40 -0
  109. package/.llm/drawer-portal.llm.md +42 -0
  110. package/.llm/drawer-title.llm.md +51 -0
  111. package/.llm/drawer-trigger.llm.md +44 -0
  112. package/.llm/drawer.llm.md +194 -0
  113. package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
  114. package/.llm/dropdown-menu-content.llm.md +109 -0
  115. package/.llm/dropdown-menu-group.llm.md +38 -0
  116. package/.llm/dropdown-menu-item.llm.md +94 -0
  117. package/.llm/dropdown-menu-label.llm.md +66 -0
  118. package/.llm/dropdown-menu-portal.llm.md +32 -0
  119. package/.llm/dropdown-menu-radio-group.llm.md +73 -0
  120. package/.llm/dropdown-menu-radio-item.llm.md +92 -0
  121. package/.llm/dropdown-menu-separator.llm.md +55 -0
  122. package/.llm/dropdown-menu-shortcut.llm.md +74 -0
  123. package/.llm/dropdown-menu-sub-content.llm.md +80 -0
  124. package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
  125. package/.llm/dropdown-menu-sub.llm.md +74 -0
  126. package/.llm/dropdown-menu-trigger.llm.md +48 -0
  127. package/.llm/dropdown-menu.llm.md +120 -0
  128. package/.llm/empty-content.llm.md +103 -0
  129. package/.llm/empty-description.llm.md +70 -0
  130. package/.llm/empty-header.llm.md +64 -0
  131. package/.llm/empty-media.llm.md +81 -0
  132. package/.llm/empty-state.llm.md +174 -0
  133. package/.llm/empty-title.llm.md +54 -0
  134. package/.llm/empty.llm.md +158 -0
  135. package/.llm/field-content.llm.md +28 -0
  136. package/.llm/field-description.llm.md +28 -0
  137. package/.llm/field-error.llm.md +41 -0
  138. package/.llm/field-group.llm.md +84 -0
  139. package/.llm/field-label.llm.md +28 -0
  140. package/.llm/field-legend.llm.md +77 -0
  141. package/.llm/field-separator.llm.md +35 -0
  142. package/.llm/field-set.llm.md +80 -0
  143. package/.llm/field-title.llm.md +28 -0
  144. package/.llm/field.llm.md +35 -0
  145. package/.llm/h1.llm.md +108 -0
  146. package/.llm/h2.llm.md +108 -0
  147. package/.llm/h3.llm.md +106 -0
  148. package/.llm/h4.llm.md +104 -0
  149. package/.llm/h5.llm.md +105 -0
  150. package/.llm/h6.llm.md +105 -0
  151. package/.llm/hover-card-content.llm.md +167 -0
  152. package/.llm/hover-card-trigger.llm.md +65 -0
  153. package/.llm/hover-card.llm.md +121 -0
  154. package/.llm/input-group-addon.llm.md +91 -0
  155. package/.llm/input-group-button.llm.md +120 -0
  156. package/.llm/input-group-input.llm.md +145 -0
  157. package/.llm/input-group-text.llm.md +75 -0
  158. package/.llm/input-group-textarea.llm.md +157 -0
  159. package/.llm/input-group.llm.md +108 -0
  160. package/.llm/input.llm.md +319 -0
  161. package/.llm/item-actions.llm.md +77 -0
  162. package/.llm/item-content.llm.md +73 -0
  163. package/.llm/item-description.llm.md +61 -0
  164. package/.llm/item-footer.llm.md +68 -0
  165. package/.llm/item-group.llm.md +73 -0
  166. package/.llm/item-header.llm.md +66 -0
  167. package/.llm/item-media.llm.md +75 -0
  168. package/.llm/item-separator.llm.md +80 -0
  169. package/.llm/item-title.llm.md +59 -0
  170. package/.llm/item.llm.md +115 -0
  171. package/.llm/kbd-group.llm.md +71 -0
  172. package/.llm/kbd.llm.md +71 -0
  173. package/.llm/label.llm.md +145 -0
  174. package/.llm/lead.llm.md +114 -0
  175. package/.llm/menubar-checkbox-item.llm.md +66 -0
  176. package/.llm/menubar-content.llm.md +128 -0
  177. package/.llm/menubar-group.llm.md +40 -0
  178. package/.llm/menubar-item.llm.md +62 -0
  179. package/.llm/menubar-label.llm.md +40 -0
  180. package/.llm/menubar-menu.llm.md +32 -0
  181. package/.llm/menubar-portal.llm.md +38 -0
  182. package/.llm/menubar-radio-group.llm.md +39 -0
  183. package/.llm/menubar-radio-item.llm.md +59 -0
  184. package/.llm/menubar-separator.llm.md +35 -0
  185. package/.llm/menubar-shortcut.llm.md +37 -0
  186. package/.llm/menubar-sub-content.llm.md +127 -0
  187. package/.llm/menubar-sub-trigger.llm.md +51 -0
  188. package/.llm/menubar-sub.llm.md +53 -0
  189. package/.llm/menubar-trigger.llm.md +37 -0
  190. package/.llm/menubar.llm.md +115 -0
  191. package/.llm/navigation-menu-content.llm.md +116 -0
  192. package/.llm/navigation-menu-indicator.llm.md +68 -0
  193. package/.llm/navigation-menu-item.llm.md +62 -0
  194. package/.llm/navigation-menu-link.llm.md +109 -0
  195. package/.llm/navigation-menu-list.llm.md +52 -0
  196. package/.llm/navigation-menu-trigger-style.llm.md +22 -0
  197. package/.llm/navigation-menu-trigger.llm.md +57 -0
  198. package/.llm/navigation-menu-viewport.llm.md +51 -0
  199. package/.llm/navigation-menu.llm.md +184 -0
  200. package/.llm/p.llm.md +110 -0
  201. package/.llm/pagination-content.llm.md +60 -0
  202. package/.llm/pagination-ellipsis.llm.md +107 -0
  203. package/.llm/pagination-item.llm.md +59 -0
  204. package/.llm/pagination-link.llm.md +150 -0
  205. package/.llm/pagination-next.llm.md +115 -0
  206. package/.llm/pagination-previous.llm.md +115 -0
  207. package/.llm/pagination.llm.md +190 -0
  208. package/.llm/popover-anchor.llm.md +53 -0
  209. package/.llm/popover-content.llm.md +109 -0
  210. package/.llm/popover-trigger.llm.md +54 -0
  211. package/.llm/popover.llm.md +116 -0
  212. package/.llm/progress.llm.md +76 -0
  213. package/.llm/radio-group-indicator.llm.md +28 -0
  214. package/.llm/radio-group-item.llm.md +40 -0
  215. package/.llm/radio-group.llm.md +76 -0
  216. package/.llm/resizable-handle.llm.md +156 -0
  217. package/.llm/resizable-panel-group.llm.md +149 -0
  218. package/.llm/resizable-panel.llm.md +157 -0
  219. package/.llm/scroll-area-corner.llm.md +41 -0
  220. package/.llm/scroll-area-thumb.llm.md +39 -0
  221. package/.llm/scroll-area-viewport.llm.md +60 -0
  222. package/.llm/scroll-area.llm.md +125 -0
  223. package/.llm/scroll-bar.llm.md +78 -0
  224. package/.llm/sdk-items-registry.json +3022 -0
  225. package/.llm/select-content.llm.md +139 -0
  226. package/.llm/select-group.llm.md +60 -0
  227. package/.llm/select-item.llm.md +75 -0
  228. package/.llm/select-label.llm.md +62 -0
  229. package/.llm/select-scroll-down-button.llm.md +45 -0
  230. package/.llm/select-scroll-up-button.llm.md +45 -0
  231. package/.llm/select-separator.llm.md +59 -0
  232. package/.llm/select-trigger.llm.md +66 -0
  233. package/.llm/select-value.llm.md +67 -0
  234. package/.llm/select.llm.md +159 -0
  235. package/.llm/separator.llm.md +129 -0
  236. package/.llm/sheet-close.llm.md +49 -0
  237. package/.llm/sheet-content.llm.md +115 -0
  238. package/.llm/sheet-description.llm.md +62 -0
  239. package/.llm/sheet-footer.llm.md +64 -0
  240. package/.llm/sheet-header.llm.md +52 -0
  241. package/.llm/sheet-title.llm.md +53 -0
  242. package/.llm/sheet-trigger.llm.md +46 -0
  243. package/.llm/sheet.llm.md +126 -0
  244. package/.llm/sidebar-content.llm.md +63 -0
  245. package/.llm/sidebar-footer.llm.md +50 -0
  246. package/.llm/sidebar-group-action.llm.md +60 -0
  247. package/.llm/sidebar-group-content.llm.md +64 -0
  248. package/.llm/sidebar-group-label.llm.md +53 -0
  249. package/.llm/sidebar-group.llm.md +56 -0
  250. package/.llm/sidebar-header.llm.md +67 -0
  251. package/.llm/sidebar-input.llm.md +50 -0
  252. package/.llm/sidebar-inset.llm.md +52 -0
  253. package/.llm/sidebar-menu-action.llm.md +84 -0
  254. package/.llm/sidebar-menu-badge.llm.md +60 -0
  255. package/.llm/sidebar-menu-button.llm.md +103 -0
  256. package/.llm/sidebar-menu-item.llm.md +75 -0
  257. package/.llm/sidebar-menu-skeleton.llm.md +76 -0
  258. package/.llm/sidebar-menu-sub-button.llm.md +85 -0
  259. package/.llm/sidebar-menu-sub-item.llm.md +54 -0
  260. package/.llm/sidebar-menu-sub.llm.md +74 -0
  261. package/.llm/sidebar-menu.llm.md +65 -0
  262. package/.llm/sidebar-provider.llm.md +79 -0
  263. package/.llm/sidebar-rail.llm.md +34 -0
  264. package/.llm/sidebar-separator.llm.md +57 -0
  265. package/.llm/sidebar-trigger.llm.md +49 -0
  266. package/.llm/sidebar.llm.md +129 -0
  267. package/.llm/skeleton.llm.md +134 -0
  268. package/.llm/slider.llm.md +173 -0
  269. package/.llm/small.llm.md +110 -0
  270. package/.llm/span.llm.md +118 -0
  271. package/.llm/spinner.llm.md +182 -0
  272. package/.llm/stack.llm.md +28 -0
  273. package/.llm/strong.llm.md +110 -0
  274. package/.llm/switch.llm.md +76 -0
  275. package/.llm/table-body.llm.md +36 -0
  276. package/.llm/table-caption.llm.md +48 -0
  277. package/.llm/table-cell.llm.md +53 -0
  278. package/.llm/table-footer.llm.md +41 -0
  279. package/.llm/table-head.llm.md +69 -0
  280. package/.llm/table-header.llm.md +41 -0
  281. package/.llm/table-row.llm.md +42 -0
  282. package/.llm/table.llm.md +123 -0
  283. package/.llm/tabs-content.llm.md +47 -0
  284. package/.llm/tabs-list.llm.md +41 -0
  285. package/.llm/tabs-trigger.llm.md +47 -0
  286. package/.llm/tabs.llm.md +71 -0
  287. package/.llm/text-field.llm.md +327 -0
  288. package/.llm/textarea.llm.md +311 -0
  289. package/.llm/theme-preference.llm.md +25 -0
  290. package/.llm/theme-toggle.llm.md +57 -0
  291. package/.llm/theme.llm.md +14 -0
  292. package/.llm/toast.llm.md +32 -0
  293. package/.llm/toaster.llm.md +193 -0
  294. package/.llm/toggle-group-item.llm.md +59 -0
  295. package/.llm/toggle-group.llm.md +101 -0
  296. package/.llm/toggle.llm.md +40 -0
  297. package/.llm/tooltip-content.llm.md +185 -0
  298. package/.llm/tooltip-provider.llm.md +68 -0
  299. package/.llm/tooltip-trigger.llm.md +70 -0
  300. package/.llm/tooltip.llm.md +129 -0
  301. package/.llm/typography.llm.md +161 -0
  302. package/.llm/use-carousel.llm.md +55 -0
  303. package/.llm/use-command-state.llm.md +32 -0
  304. package/.llm/use-is-mobile.llm.md +73 -0
  305. package/.llm/use-sidebar.llm.md +61 -0
  306. package/dist/components/ui/scroll-area.d.ts +5 -5
  307. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  308. package/dist/components/ui/stack.d.ts.map +1 -1
  309. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
  310. package/dist/components/ui/theme-toggle.d.ts +0 -3
  311. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  312. package/dist/components/ui/theme.d.ts.map +1 -1
  313. package/dist/index.js +4972 -9636
  314. package/dist/index.js.map +1 -1
  315. package/dist/tsconfig.tsbuildinfo +1 -1
  316. package/package.json +2 -2
  317. package/src/components/ui/stack.tsx +3 -1
  318. package/src/components/ui/theme-toggle.tsx +1 -3
  319. package/src/components/ui/theme.tsx +6 -1
  320. package/src/styles/globals.css +57 -85
@@ -0,0 +1,82 @@
1
+ # CommandInput
2
+
3
+ **Type**: component
4
+
5
+ CommandInput - Search input for command menu filtering Provides a search input with search icon for filtering command menu items. Automatically filters items as the user types and triggers live region announcements for screen readers. Supports both controlled and uncontrolled usage patterns. The input integrates with the Command context to provide real-time filtering, search highlighting, and result announcements. Includes built-in search icon and proper focus management.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandInput } from '@neynar/ui';
11
+
12
+ <CommandInput
13
+ value="value"
14
+ onValueChange={handleValueChange}
15
+ placeholder="value"
16
+ disabled={true}
17
+ autoFocus={true}
18
+ className="value"
19
+ />
20
+ ```
21
+
22
+ ## Component Props
23
+
24
+ ### value
25
+ - **Type**: `string`
26
+ - **Required**: No
27
+ - **Description**: Controlled input value for managing search state externally
28
+
29
+ ### onValueChange
30
+ - **Type**: `(search: string) => void`
31
+ - **Required**: No
32
+ - **Description**: Callback fired when input value changes
33
+
34
+ ### placeholder
35
+ - **Type**: `string`
36
+ - **Required**: No
37
+ - **Description**: Placeholder text displayed when input is empty
38
+
39
+ ### disabled
40
+ - **Type**: `boolean`
41
+ - **Required**: No
42
+ - **Description**: Disables the input and prevents interaction
43
+
44
+ ### autoFocus
45
+ - **Type**: `boolean`
46
+ - **Required**: No
47
+ - **Description**: Auto-focus the input when rendered
48
+
49
+ ### className
50
+ - **Type**: `string`
51
+ - **Required**: No
52
+ - **Description**: Additional CSS classes
53
+
54
+ ## Examples
55
+
56
+ ### Example 1
57
+ ```tsx
58
+ // Basic uncontrolled input
59
+ <Command>
60
+ <CommandInput placeholder="Search commands..." />
61
+ <CommandList>...</CommandList>
62
+ </Command>
63
+ ```
64
+ ### Example 2
65
+ ```tsx
66
+ // Controlled input with external state
67
+ const [search, setSearch] = useState('');
68
+ <CommandInput
69
+ value={search}
70
+ onValueChange={setSearch}
71
+ placeholder="Type a command or search..."
72
+ autoFocus
73
+ />
74
+ ```
75
+ ### Example 3
76
+ ```tsx
77
+ // With disabled state
78
+ <CommandInput
79
+ placeholder="Loading..."
80
+ disabled={isLoading}
81
+ />
82
+ ```
@@ -0,0 +1,97 @@
1
+ # CommandItem
2
+
3
+ **Type**: component
4
+
5
+ CommandItem - Individual selectable command item Represents a single command or action that can be selected via keyboard or mouse interaction. Supports icons, text, shortcuts, and advanced filtering with keywords. Items can be disabled, have custom values for filtering, and trigger callbacks on selection. The item's value is used for filtering - if not provided, it defaults to the text content. Keywords can be added to improve search matching without affecting the display.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandItem } from '@neynar/ui';
11
+
12
+ <CommandItem
13
+ value="value"
14
+ keywords={[]}
15
+ disabled={true}
16
+ onSelect={handleSelect}
17
+ forceMount={true}
18
+ className="value"
19
+ >
20
+ {/* Your content here */}
21
+ </CommandItem>
22
+ ```
23
+
24
+ ## Component Props
25
+
26
+ ### value
27
+ - **Type**: `string`
28
+ - **Required**: No
29
+ - **Description**: Unique identifier for filtering and selection (defaults to text content)
30
+
31
+ ### keywords
32
+ - **Type**: `string[]`
33
+ - **Required**: No
34
+ - **Description**: Additional search terms for improved filtering
35
+
36
+ ### disabled
37
+ - **Type**: `boolean`
38
+ - **Required**: No
39
+ - **Description**: Disables interaction and selection
40
+
41
+ ### onSelect
42
+ - **Type**: `(value: string) => void`
43
+ - **Required**: No
44
+ - **Description**: Callback fired when item is selected with Enter or click
45
+
46
+ ### forceMount
47
+ - **Type**: `boolean`
48
+ - **Required**: No
49
+ - **Description**: Always render even when filtered out
50
+
51
+ ### className
52
+ - **Type**: `string`
53
+ - **Required**: No
54
+ - **Description**: Additional CSS classes
55
+
56
+ ### children
57
+ - **Type**: `React.ReactNode`
58
+ - **Required**: No
59
+ - **Description**: No description available
60
+
61
+ ## Examples
62
+
63
+ ### Example 1
64
+ ```tsx
65
+ // Basic command item
66
+ <CommandItem onSelect={() => console.log("File opened")}>
67
+ Open File
68
+ </CommandItem>
69
+ ```
70
+ ### Example 2
71
+ ```tsx
72
+ // Command item with icon and shortcut
73
+ <CommandItem value="new-document" onSelect={handleCreateDocument}>
74
+ <FileIcon className="mr-2 h-4 w-4" />
75
+ New Document
76
+ <CommandShortcut>⌘N</CommandShortcut>
77
+ </CommandItem>
78
+ ```
79
+ ### Example 3
80
+ ```tsx
81
+ // Item with keywords for better search
82
+ <CommandItem
83
+ value="apple"
84
+ keywords={['fruit', 'red', 'healthy']}
85
+ onSelect={() => selectFruit('apple')}
86
+ >
87
+ 🍎 Apple
88
+ </CommandItem>
89
+ ```
90
+ ### Example 4
91
+ ```tsx
92
+ // Disabled item that shows but cannot be selected
93
+ <CommandItem disabled>
94
+ <LockIcon className="mr-2 h-4 w-4" />
95
+ Premium Feature
96
+ </CommandItem>
97
+ ```
@@ -0,0 +1,53 @@
1
+ # CommandList
2
+
3
+ **Type**: component
4
+
5
+ CommandList - Scrollable container for command items Contains and manages the list of command items with automatic scrolling, overflow handling, and dynamic height calculation. Provides the scrollable viewport for command items and groups with proper keyboard navigation. Uses CSS custom property `--cmdk-list-height` for smooth height transitions when items are filtered. Supports scroll padding for better item visibility.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandList } from '@neynar/ui';
11
+
12
+ <CommandList
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </CommandList>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: Additional CSS classes
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
+ <CommandList>
36
+ <CommandEmpty>No results found</CommandEmpty>
37
+ <CommandGroup heading="Actions">
38
+ <CommandItem>New File</CommandItem>
39
+ <CommandItem>Open File</CommandItem>
40
+ </CommandGroup>
41
+ </CommandList>
42
+ ```
43
+ ### Example 2
44
+ ```tsx
45
+ // With custom height and scroll behavior
46
+ <CommandList className="max-h-[400px] scroll-py-2">
47
+ {items.map((item) => (
48
+ <CommandItem key={item.id} value={item.id}>
49
+ {item.name}
50
+ </CommandItem>
51
+ ))}
52
+ </CommandList>
53
+ ```
@@ -0,0 +1,48 @@
1
+ # CommandLoading
2
+
3
+ **Type**: component
4
+
5
+ CommandLoading - Loading state indicator for command menu Displays a loading message while command items are being fetched asynchronously. Should be conditionally rendered based on loading state. Shares the same styling and behavior as CommandEmpty but indicates active loading rather than empty state.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandLoading } from '@neynar/ui';
11
+
12
+ <CommandLoading
13
+ ...props={value}
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### ...props
20
+ - **Type**: `unknown`
21
+ - **Required**: Yes
22
+ - **Description**: No description available
23
+
24
+ ## Examples
25
+
26
+ ### Example 1
27
+ ```tsx
28
+ const [loading, setLoading] = useState(false);
29
+ const [items, setItems] = useState([]);
30
+ <CommandList>
31
+ {loading && <CommandLoading>Fetching commands...</CommandLoading>}
32
+ {items.map(item => (
33
+ <CommandItem key={item.id} value={item.id}>
34
+ {item.name}
35
+ </CommandItem>
36
+ ))}
37
+ </CommandList>
38
+ ```
39
+ ### Example 2
40
+ ```tsx
41
+ // With custom loading indicator
42
+ <CommandLoading>
43
+ <div className="flex items-center justify-center py-6">
44
+ <Spinner className="mr-2 h-4 w-4" />
45
+ <span>Loading commands...</span>
46
+ </div>
47
+ </CommandLoading>
48
+ ```
@@ -0,0 +1,44 @@
1
+ # CommandSeparator
2
+
3
+ **Type**: component
4
+
5
+ CommandSeparator - Visual separator between command groups Provides visual separation between different sections of commands. Purely decorative element that improves visual organization and hierarchy. Automatically hides when adjacent groups are filtered out. The separator will only render when it has visible content before and after it, unless `alwaysRender` is true.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandSeparator } from '@neynar/ui';
11
+
12
+ <CommandSeparator
13
+ alwaysRender={true}
14
+ className="value"
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### alwaysRender
21
+ - **Type**: `boolean`
22
+ - **Required**: No
23
+ - **Description**: Whether to always show separator regardless of context
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: Additional CSS classes
29
+
30
+ ## Examples
31
+
32
+ ### Example 1
33
+ ```tsx
34
+ <CommandGroup heading="Recent">...</CommandGroup>
35
+ <CommandSeparator />
36
+ <CommandGroup heading="Actions">...</CommandGroup>
37
+ ```
38
+ ### Example 2
39
+ ```tsx
40
+ // Separator that always renders
41
+ <CommandGroup heading="Primary">...</CommandGroup>
42
+ <CommandSeparator alwaysRender />
43
+ <CommandGroup heading="Secondary">...</CommandGroup>
44
+ ```
@@ -0,0 +1,63 @@
1
+ # CommandShortcut
2
+
3
+ **Type**: component
4
+
5
+ CommandShortcut - Displays keyboard shortcut for command items Shows the keyboard shortcut associated with a command item, typically displayed on the right side with proper spacing. Supports platform-specific shortcuts and complex key combinations with consistent formatting. The component uses monospace-style formatting with appropriate opacity and spacing to clearly indicate keyboard shortcuts without overwhelming the item content.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CommandShortcut } from '@neynar/ui';
11
+
12
+ <CommandShortcut
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </CommandShortcut>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: Additional CSS classes
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
+ <CommandItem>
36
+ Save File
37
+ <CommandShortcut>⌘S</CommandShortcut>
38
+ </CommandItem>
39
+ ```
40
+ ### Example 2
41
+ ```tsx
42
+ // Multi-key shortcuts
43
+ <CommandItem>
44
+ Redo
45
+ <CommandShortcut>⇧⌘Z</CommandShortcut>
46
+ </CommandItem>
47
+ ```
48
+ ### Example 3
49
+ ```tsx
50
+ // Platform-specific shortcuts
51
+ <CommandItem>
52
+ Copy
53
+ <CommandShortcut>{isMac ? '⌘C' : 'Ctrl+C'}</CommandShortcut>
54
+ </CommandItem>
55
+ ```
56
+ ### Example 4
57
+ ```tsx
58
+ // Complex shortcuts with modifiers
59
+ <CommandItem>
60
+ Open Command Palette
61
+ <CommandShortcut>⌘⇧P</CommandShortcut>
62
+ </CommandItem>
63
+ ```
@@ -0,0 +1,147 @@
1
+ # Command
2
+
3
+ **Type**: component
4
+
5
+ Command - A fast, composable command menu for search and navigation Built on the cmdk primitive, this component provides a powerful command palette interface with search, filtering, and keyboard navigation. Perfect for creating search interfaces, command palettes, and action menus with full accessibility support. Features advanced filtering with fuzzy search, keyboard shortcuts, nested navigation, asynchronous loading states, and comprehensive accessibility patterns.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Command } from '@neynar/ui';
11
+
12
+ <Command
13
+ label="value"
14
+ shouldFilter={true}
15
+ filter={[]}
16
+ value="value"
17
+ onValueChange={handleValueChange}
18
+ loop={true}
19
+ disablePointerSelection={true}
20
+ vimBindings={true}
21
+ className="value"
22
+ >
23
+ {/* Your content here */}
24
+ </Command>
25
+ ```
26
+
27
+ ## Component Props
28
+
29
+ ### label
30
+ - **Type**: `string`
31
+ - **Required**: No
32
+ - **Description**: Accessibility label for screen readers and assistive technology
33
+
34
+ ### shouldFilter
35
+ - **Type**: `boolean`
36
+ - **Required**: No
37
+ - **Description**: Controls automatic filtering and sorting
38
+
39
+ ### filter
40
+ - **Type**: `(value: string, search: string, keywords?: string[]) => number`
41
+ - **Required**: No
42
+ - **Description**: Custom filter function for ranking items based on search
43
+
44
+ ### value
45
+ - **Type**: `string`
46
+ - **Required**: No
47
+ - **Description**: Currently selected item value for controlled usage
48
+
49
+ ### onValueChange
50
+ - **Type**: `(value: string) => void`
51
+ - **Required**: No
52
+ - **Description**: Callback fired when selected item changes
53
+
54
+ ### loop
55
+ - **Type**: `boolean`
56
+ - **Required**: No
57
+ - **Description**: Enables circular navigation through items
58
+
59
+ ### disablePointerSelection
60
+ - **Type**: `boolean`
61
+ - **Required**: No
62
+ - **Description**: Prevents mouse selection behavior
63
+
64
+ ### vimBindings
65
+ - **Type**: `boolean`
66
+ - **Required**: No
67
+ - **Description**: Enables Vim-style navigation keybindings
68
+
69
+ ### className
70
+ - **Type**: `string`
71
+ - **Required**: No
72
+ - **Description**: Additional CSS classes
73
+
74
+ ### children
75
+ - **Type**: `React.ReactNode`
76
+ - **Required**: No
77
+ - **Description**: No description available
78
+
79
+ ## Examples
80
+
81
+ ### Example 1
82
+ ```tsx
83
+ // Basic command menu
84
+ <Command label="Main Menu">
85
+ <CommandInput placeholder="Type a command or search..." />
86
+ <CommandList>
87
+ <CommandEmpty>No results found.</CommandEmpty>
88
+ <CommandGroup heading="Suggestions">
89
+ <CommandItem>Calendar</CommandItem>
90
+ <CommandItem>Search Emoji</CommandItem>
91
+ <CommandItem>Calculator</CommandItem>
92
+ </CommandGroup>
93
+ </CommandList>
94
+ </Command>
95
+ ```
96
+ ### Example 2
97
+ ```tsx
98
+ // Controlled command menu with custom filtering
99
+ const [value, setValue] = useState('');
100
+ const [search, setSearch] = useState('');
101
+ <Command
102
+ value={value}
103
+ onValueChange={setValue}
104
+ filter={(value, search, keywords) => {
105
+ const extended = value + ' ' + (keywords?.join(' ') || '');
106
+ return extended.toLowerCase().includes(search.toLowerCase()) ? 1 : 0;
107
+ }}
108
+ loop
109
+ >
110
+ <CommandInput
111
+ value={search}
112
+ onValueChange={setSearch}
113
+ placeholder="Search..."
114
+ />
115
+ <CommandList>
116
+ <CommandItem value="apple" keywords={['fruit', 'red']}>
117
+ Apple
118
+ </CommandItem>
119
+ </CommandList>
120
+ </Command>
121
+ ```
122
+ ### Example 3
123
+ ```tsx
124
+ // Command dialog with keyboard shortcut
125
+ const [open, setOpen] = useState(false);
126
+ useEffect(() => {
127
+ const down = (e: KeyboardEvent) => {
128
+ if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
129
+ e.preventDefault();
130
+ setOpen((open) => !open);
131
+ }
132
+ };
133
+ document.addEventListener("keydown", down);
134
+ return () => document.removeEventListener("keydown", down);
135
+ }, []);
136
+ <CommandDialog open={open} onOpenChange={setOpen}>
137
+ <CommandInput placeholder="Type a command..." />
138
+ <CommandList>
139
+ <CommandGroup heading="Actions">
140
+ <CommandItem onSelect={() => console.log("New file")}>
141
+ New File
142
+ <CommandShortcut>⌘N</CommandShortcut>
143
+ </CommandItem>
144
+ </CommandGroup>
145
+ </CommandList>
146
+ </CommandDialog>
147
+ ```