@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,40 @@
1
+ # MenubarGroup
2
+
3
+ **Type**: component
4
+
5
+ Groups related menu items together within MenubarContent. Used to create logical groupings of menu items, often separated by MenubarSeparator components. Helps organize complex menus.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarGroup } from '@neynar/ui';
11
+
12
+ <MenubarGroup
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
+ ```tsx
27
+ <MenubarContent>
28
+ <MenubarGroup>
29
+ <MenubarItem>Cut</MenubarItem>
30
+ <MenubarItem>Copy</MenubarItem>
31
+ <MenubarItem>Paste</MenubarItem>
32
+ </MenubarGroup>
33
+ <MenubarSeparator />
34
+ <MenubarGroup>
35
+ <MenubarItem>Find</MenubarItem>
36
+ <MenubarItem>Replace</MenubarItem>
37
+ </MenubarGroup>
38
+ </MenubarContent>
39
+ ```
40
+ /
@@ -0,0 +1,62 @@
1
+ # MenubarItem
2
+
3
+ **Type**: component
4
+
5
+ A selectable menu item within MenubarContent. Can be enhanced with icons, keyboard shortcuts, and supports different variants including destructive actions. Automatically handles selection events and keyboard navigation.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarItem } from '@neynar/ui';
11
+
12
+ <MenubarItem
13
+ className="value"
14
+ inset={true}
15
+ variant={value}
16
+ disabled={true}
17
+ onSelect={handleSelect}
18
+ textValue="value"
19
+ />
20
+ ```
21
+
22
+ ## Component Props
23
+
24
+ ### className
25
+ - **Type**: `string`
26
+ - **Required**: No
27
+ - **Description**: Additional CSS classes to apply to the menu item
28
+
29
+ ### inset
30
+ - **Type**: `boolean`
31
+ - **Required**: No
32
+ - **Description**: Whether to add left padding for alignment with items that have icons
33
+
34
+ ### variant
35
+ - **Type**: `"default" | "destructive"`
36
+ - **Required**: No
37
+ - **Description**: Visual variant of the menu item
38
+
39
+ ### disabled
40
+ - **Type**: `boolean`
41
+ - **Required**: No
42
+ - **Description**: When true, prevents the user from interacting with the item
43
+
44
+ ### onSelect
45
+ - **Type**: `(event: Event) => void`
46
+ - **Required**: No
47
+ - **Description**: Event handler called when the user selects an item (via mouse or keyboard)
48
+
49
+ ### textValue
50
+ - **Type**: `string`
51
+ - **Required**: No
52
+ - **Description**: Optional text used for typeahead purposes when content is complex
53
+
54
+ ## Examples
55
+
56
+ ```tsx
57
+ <MenubarItem onSelect={() => deleteFile()} variant="destructive">
58
+ Delete File
59
+ <MenubarShortcut>⌫</MenubarShortcut>
60
+ </MenubarItem>
61
+ ```
62
+ /
@@ -0,0 +1,40 @@
1
+ # MenubarLabel
2
+
3
+ **Type**: component
4
+
5
+ A non-interactive label for grouping menu items. Used to provide section headings within menu content, helping users understand the organization of menu items. Cannot be focused or selected.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarLabel } from '@neynar/ui';
11
+
12
+ <MenubarLabel
13
+ className="value"
14
+ inset={true}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### className
21
+ - **Type**: `string`
22
+ - **Required**: No
23
+ - **Description**: Additional CSS classes to apply to the label
24
+
25
+ ### inset
26
+ - **Type**: `boolean`
27
+ - **Required**: No
28
+ - **Description**: Whether to add left padding for alignment with items that have icons
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ <MenubarContent>
34
+ <MenubarLabel>Recent Files</MenubarLabel>
35
+ <MenubarSeparator />
36
+ <MenubarItem>document.txt</MenubarItem>
37
+ <MenubarItem>photo.jpg</MenubarItem>
38
+ </MenubarContent>
39
+ ```
40
+ /
@@ -0,0 +1,32 @@
1
+ # MenubarMenu
2
+
3
+ **Type**: component
4
+
5
+ Container for a single menu within the menubar. Each MenubarMenu represents one dropdown menu that can be triggered by its corresponding MenubarTrigger. Must be used within a Menubar root.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarMenu } from '@neynar/ui';
11
+
12
+ <MenubarMenu
13
+ value="value"
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### value
20
+ - **Type**: `string`
21
+ - **Required**: No
22
+ - **Description**: The unique value of the menu for controlled state management
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ <MenubarMenu value="edit">
28
+ <MenubarTrigger>Edit</MenubarTrigger>
29
+ <MenubarContent>...</MenubarContent>
30
+ </MenubarMenu>
31
+ ```
32
+ /
@@ -0,0 +1,38 @@
1
+ # MenubarPortal
2
+
3
+ **Type**: component
4
+
5
+ Portal for rendering menu content outside the DOM hierarchy. Automatically used by MenubarContent to ensure proper layering and positioning of dropdown menus. Prevents z-index conflicts.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarPortal } from '@neynar/ui';
11
+
12
+ <MenubarPortal
13
+ forceMount={value}
14
+ container={value}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### forceMount
21
+ - **Type**: `true`
22
+ - **Required**: No
23
+ - **Description**: Used to force mounting when more control is needed. Useful when controlling animation with React animation libraries
24
+
25
+ ### container
26
+ - **Type**: `HTMLElement`
27
+ - **Required**: No
28
+ - **Description**: Specify a container element to portal the content into
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ // Usually used automatically by MenubarContent
34
+ <MenubarPortal container={customContainer}>
35
+ <MenubarPrimitive.Content>...</MenubarPrimitive.Content>
36
+ </MenubarPortal>
37
+ ```
38
+ /
@@ -0,0 +1,39 @@
1
+ # MenubarRadioGroup
2
+
3
+ **Type**: component
4
+
5
+ Container for mutually exclusive radio items. Use for single-selection scenarios like theme selection, view modes, or other settings where only one option can be active. Only one RadioItem can be selected at a time within the group.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarRadioGroup } from '@neynar/ui';
11
+
12
+ <MenubarRadioGroup
13
+ value="value"
14
+ onValueChange={handleValueChange}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### value
21
+ - **Type**: `string`
22
+ - **Required**: No
23
+ - **Description**: The controlled value of the radio item to check. Should be used in conjunction with onValueChange
24
+
25
+ ### onValueChange
26
+ - **Type**: `(value: string) => void`
27
+ - **Required**: No
28
+ - **Description**: Event handler called when the value changes
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ <MenubarRadioGroup value={theme} onValueChange={setTheme}>
34
+ <MenubarRadioItem value="light">Light</MenubarRadioItem>
35
+ <MenubarRadioItem value="dark">Dark</MenubarRadioItem>
36
+ <MenubarRadioItem value="system">System</MenubarRadioItem>
37
+ </MenubarRadioGroup>
38
+ ```
39
+ /
@@ -0,0 +1,59 @@
1
+ # MenubarRadioItem
2
+
3
+ **Type**: component
4
+
5
+ A menu item for single selection within a MenubarRadioGroup. Use within MenubarRadioGroup for mutually exclusive options. Only one radio item can be selected at a time within the group. Displays a filled circle icon when selected.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarRadioItem } from '@neynar/ui';
11
+
12
+ <MenubarRadioItem
13
+ className="value"
14
+ value="value"
15
+ disabled={true}
16
+ onSelect={handleSelect}
17
+ textValue="value"
18
+ >
19
+ {/* Your content here */}
20
+ </MenubarRadioItem>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: Additional CSS classes to apply to the radio item
29
+
30
+ ### value
31
+ - **Type**: `string`
32
+ - **Required**: Yes
33
+ - **Description**: The unique value of the item (required)
34
+
35
+ ### disabled
36
+ - **Type**: `boolean`
37
+ - **Required**: No
38
+ - **Description**: When true, prevents the user from interacting with the item
39
+
40
+ ### onSelect
41
+ - **Type**: `(event: Event) => void`
42
+ - **Required**: No
43
+ - **Description**: Event handler called when the user selects an item (via mouse or keyboard)
44
+
45
+ ### textValue
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: Optional text used for typeahead purposes when content is complex
49
+
50
+ ## Examples
51
+
52
+ ```tsx
53
+ <MenubarRadioGroup value={theme} onValueChange={setTheme}>
54
+ <MenubarRadioItem value="light">Light Theme</MenubarRadioItem>
55
+ <MenubarRadioItem value="dark">Dark Theme</MenubarRadioItem>
56
+ <MenubarRadioItem value="system">System Theme</MenubarRadioItem>
57
+ </MenubarRadioGroup>
58
+ ```
59
+ /
@@ -0,0 +1,35 @@
1
+ # MenubarSeparator
2
+
3
+ **Type**: component
4
+
5
+ A visual divider between menu items. Use to create logical groupings and improve visual hierarchy within menu content. Creates clear sections for related items.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarSeparator } from '@neynar/ui';
11
+
12
+ <MenubarSeparator
13
+ className="value"
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### className
20
+ - **Type**: `string`
21
+ - **Required**: No
22
+ - **Description**: Additional CSS classes to apply to the separator
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ <MenubarContent>
28
+ <MenubarItem>New</MenubarItem>
29
+ <MenubarItem>Open</MenubarItem>
30
+ <MenubarSeparator />
31
+ <MenubarItem>Save</MenubarItem>
32
+ <MenubarItem>Save As</MenubarItem>
33
+ </MenubarContent>
34
+ ```
35
+ /
@@ -0,0 +1,37 @@
1
+ # MenubarShortcut
2
+
3
+ **Type**: component
4
+
5
+ Displays keyboard shortcut for a menu item. Shows keyboard shortcuts aligned to the right of menu items. Use standard platform conventions (⌘ for Mac, Ctrl+ for Windows/Linux). Purely visual - does not implement the actual keyboard functionality.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarShortcut } from '@neynar/ui';
11
+
12
+ <MenubarShortcut
13
+ className="value"
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### className
20
+ - **Type**: `string`
21
+ - **Required**: No
22
+ - **Description**: Additional CSS classes to apply to the shortcut text
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ <MenubarItem onSelect={() => save()}>
28
+ Save File
29
+ <MenubarShortcut>⌘S</MenubarShortcut>
30
+ </MenubarItem>
31
+ // Platform-specific shortcuts
32
+ <MenubarItem>
33
+ Copy
34
+ <MenubarShortcut>{isMac ? '⌘C' : 'Ctrl+C'}</MenubarShortcut>
35
+ </MenubarItem>
36
+ ```
37
+ /
@@ -0,0 +1,127 @@
1
+ # MenubarSubContent
2
+
3
+ **Type**: component
4
+
5
+ Content container for a submenu. Contains the menu items that appear when a MenubarSubTrigger is hovered or focused. Supports all the same content as MenubarContent. Automatically positioned to avoid viewport collisions.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarSubContent } from '@neynar/ui';
11
+
12
+ <MenubarSubContent
13
+ className="value"
14
+ align={value}
15
+ alignOffset={0}
16
+ sideOffset={0}
17
+ side={value}
18
+ avoidCollisions={true}
19
+ collisionBoundary={value}
20
+ arrowPadding={0}
21
+ sticky={value}
22
+ hideWhenDetached={true}
23
+ loop={true}
24
+ onEscapeKeyDown={handleEscapeKeyDown}
25
+ onPointerDownOutside={handlePointerDownOutside}
26
+ onFocusOutside={handleFocusOutside}
27
+ onInteractOutside={handleInteractOutside}
28
+ forceMount={value}
29
+ />
30
+ ```
31
+
32
+ ## Component Props
33
+
34
+ ### className
35
+ - **Type**: `string`
36
+ - **Required**: No
37
+ - **Description**: Additional CSS classes to apply to the sub-content container
38
+
39
+ ### align
40
+ - **Type**: `"start" | "center" | "end"`
41
+ - **Required**: No
42
+ - **Description**: The preferred alignment against the trigger. May change when collisions occur
43
+
44
+ ### alignOffset
45
+ - **Type**: `number`
46
+ - **Required**: No
47
+ - **Description**: An offset in pixels from the "start" or "end" alignment options
48
+
49
+ ### sideOffset
50
+ - **Type**: `number`
51
+ - **Required**: No
52
+ - **Description**: The distance in pixels from the trigger
53
+
54
+ ### side
55
+ - **Type**: `"top" | "right" | "bottom" | "left"`
56
+ - **Required**: No
57
+ - **Description**: The preferred side of the trigger to render against when open
58
+
59
+ ### avoidCollisions
60
+ - **Type**: `boolean`
61
+ - **Required**: No
62
+ - **Description**: When true, overrides the side and align preferences to prevent collisions with viewport edges
63
+
64
+ ### collisionBoundary
65
+ - **Type**: `Element | null | Array<Element | null>`
66
+ - **Required**: No
67
+ - **Description**: The element used as the collision boundary for positioning
68
+
69
+ ### arrowPadding
70
+ - **Type**: `number`
71
+ - **Required**: No
72
+ - **Description**: No description available
73
+
74
+ ### sticky
75
+ - **Type**: `"partial" | "always"`
76
+ - **Required**: No
77
+ - **Description**: No description available
78
+
79
+ ### hideWhenDetached
80
+ - **Type**: `boolean`
81
+ - **Required**: No
82
+ - **Description**: No description available
83
+
84
+ ### loop
85
+ - **Type**: `boolean`
86
+ - **Required**: No
87
+ - **Description**: Whether keyboard navigation should loop from last item to first, and vice versa
88
+
89
+ ### onEscapeKeyDown
90
+ - **Type**: `(event: KeyboardEvent) => void`
91
+ - **Required**: No
92
+ - **Description**: Event handler called when the escape key is down
93
+
94
+ ### onPointerDownOutside
95
+ - **Type**: `(
96
+ event: CustomEvent<{ originalEvent: PointerEvent }>,
97
+ ) => void`
98
+ - **Required**: No
99
+ - **Description**: Event handler called when a pointerdown event happens outside of the component
100
+
101
+ ### onFocusOutside
102
+ - **Type**: `(event: CustomEvent<{ originalEvent: FocusEvent }>) => void`
103
+ - **Required**: No
104
+ - **Description**: Event handler called when focus moves outside of the component
105
+
106
+ ### onInteractOutside
107
+ - **Type**: `(
108
+ event: CustomEvent<{ originalEvent: PointerEvent | FocusEvent }>,
109
+ ) => void`
110
+ - **Required**: No
111
+ - **Description**: Event handler called when an interaction happens outside the component
112
+
113
+ ### forceMount
114
+ - **Type**: `true`
115
+ - **Required**: No
116
+ - **Description**: No description available
117
+
118
+ ## Examples
119
+
120
+ ```tsx
121
+ <MenubarSubContent>
122
+ <MenubarItem>document1.txt</MenubarItem>
123
+ <MenubarItem>document2.txt</MenubarItem>
124
+ <MenubarItem>document3.txt</MenubarItem>
125
+ </MenubarSubContent>
126
+ ```
127
+ /
@@ -0,0 +1,51 @@
1
+ # MenubarSubTrigger
2
+
3
+ **Type**: component
4
+
5
+ Menu item that opens a submenu. Automatically includes a right arrow indicator to show that it opens a submenu when hovered or focused. Opens submenu on hover or right arrow key press.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarSubTrigger } from '@neynar/ui';
11
+
12
+ <MenubarSubTrigger
13
+ className="value"
14
+ inset={true}
15
+ disabled={true}
16
+ textValue="value"
17
+ >
18
+ {/* Your content here */}
19
+ </MenubarSubTrigger>
20
+ ```
21
+
22
+ ## Component Props
23
+
24
+ ### className
25
+ - **Type**: `string`
26
+ - **Required**: No
27
+ - **Description**: Additional CSS classes to apply to the sub-trigger
28
+
29
+ ### inset
30
+ - **Type**: `boolean`
31
+ - **Required**: No
32
+ - **Description**: Whether to add left padding for alignment with items that have icons
33
+
34
+ ### disabled
35
+ - **Type**: `boolean`
36
+ - **Required**: No
37
+ - **Description**: When true, prevents the user from interacting with the item
38
+
39
+ ### textValue
40
+ - **Type**: `string`
41
+ - **Required**: No
42
+ - **Description**: Optional text used for typeahead purposes when content is complex
43
+
44
+ ## Examples
45
+
46
+ ```tsx
47
+ <MenubarSubTrigger>
48
+ Recent Files
49
+ </MenubarSubTrigger>
50
+ ```
51
+ /
@@ -0,0 +1,53 @@
1
+ # MenubarSub
2
+
3
+ **Type**: component
4
+
5
+ Container for a submenu. Wraps MenubarSubTrigger and MenubarSubContent to create nested menu structures. Supports controlled and uncontrolled states.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarSub } from '@neynar/ui';
11
+
12
+ <MenubarSub
13
+ open={true}
14
+ defaultOpen={true}
15
+ onOpenChange={handleOpenChange}
16
+ />
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### open
22
+ - **Type**: `boolean`
23
+ - **Required**: No
24
+ - **Description**: The controlled open state of the sub menu. Must be used in conjunction with onOpenChange
25
+
26
+ ### defaultOpen
27
+ - **Type**: `boolean`
28
+ - **Required**: No
29
+ - **Description**: The open state of the submenu when it is initially rendered. Use when you do not need to control its open state
30
+
31
+ ### onOpenChange
32
+ - **Type**: `(open: boolean) => void`
33
+ - **Required**: No
34
+ - **Description**: Event handler called when the open state of the submenu changes
35
+
36
+ ## Examples
37
+
38
+ ```tsx
39
+ <MenubarSub>
40
+ <MenubarSubTrigger>Export</MenubarSubTrigger>
41
+ <MenubarSubContent>
42
+ <MenubarItem>Export as PDF</MenubarItem>
43
+ <MenubarItem>Export as CSV</MenubarItem>
44
+ <MenubarItem>Export as JSON</MenubarItem>
45
+ </MenubarSubContent>
46
+ </MenubarSub>
47
+ // Controlled submenu
48
+ <MenubarSub open={exportOpen} onOpenChange={setExportOpen}>
49
+ <MenubarSubTrigger>Export</MenubarSubTrigger>
50
+ <MenubarSubContent>...</MenubarSubContent>
51
+ </MenubarSub>
52
+ ```
53
+ /
@@ -0,0 +1,37 @@
1
+ # MenubarTrigger
2
+
3
+ **Type**: component
4
+
5
+ Button that opens a dropdown menu. The trigger text should be concise and descriptive of the menu contents. Common patterns include "File", "Edit", "View", "Tools", "Help". Automatically receives focus management and keyboard navigation.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarTrigger } from '@neynar/ui';
11
+
12
+ <MenubarTrigger
13
+ className="value"
14
+ asChild={true}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### className
21
+ - **Type**: `string`
22
+ - **Required**: No
23
+ - **Description**: Additional CSS classes to apply to the trigger button
24
+
25
+ ### asChild
26
+ - **Type**: `boolean`
27
+ - **Required**: No
28
+ - **Description**: Change the default rendered element for the one passed as a child, merging their props and behavior
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ <MenubarTrigger>
34
+ File
35
+ </MenubarTrigger>
36
+ ```
37
+ /