@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.
Files changed (320) hide show
  1. package/.llm/accordion-content.llm.md +67 -0
  2. package/.llm/accordion-item.llm.md +61 -0
  3. package/.llm/accordion-trigger.llm.md +69 -0
  4. package/.llm/accordion.llm.md +88 -0
  5. package/.llm/alert-description.llm.md +78 -0
  6. package/.llm/alert-dialog-action.llm.md +51 -0
  7. package/.llm/alert-dialog-cancel.llm.md +48 -0
  8. package/.llm/alert-dialog-content.llm.md +88 -0
  9. package/.llm/alert-dialog-description.llm.md +53 -0
  10. package/.llm/alert-dialog-footer.llm.md +41 -0
  11. package/.llm/alert-dialog-header.llm.md +39 -0
  12. package/.llm/alert-dialog-overlay.llm.md +44 -0
  13. package/.llm/alert-dialog-portal.llm.md +41 -0
  14. package/.llm/alert-dialog-title.llm.md +46 -0
  15. package/.llm/alert-dialog-trigger.llm.md +40 -0
  16. package/.llm/alert-dialog.llm.md +80 -0
  17. package/.llm/alert-title.llm.md +48 -0
  18. package/.llm/alert.llm.md +92 -0
  19. package/.llm/aspect-ratio.llm.md +41 -0
  20. package/.llm/avatar-fallback.llm.md +41 -0
  21. package/.llm/avatar-image.llm.md +48 -0
  22. package/.llm/avatar.llm.md +35 -0
  23. package/.llm/badge.llm.md +117 -0
  24. package/.llm/blockquote.llm.md +55 -0
  25. package/.llm/body-text-large.llm.md +49 -0
  26. package/.llm/body-text-small.llm.md +49 -0
  27. package/.llm/body-text.llm.md +52 -0
  28. package/.llm/breadcrumb-ellipsis.llm.md +73 -0
  29. package/.llm/breadcrumb-item.llm.md +53 -0
  30. package/.llm/breadcrumb-link.llm.md +84 -0
  31. package/.llm/breadcrumb-list.llm.md +54 -0
  32. package/.llm/breadcrumb-page.llm.md +52 -0
  33. package/.llm/breadcrumb-separator.llm.md +60 -0
  34. package/.llm/breadcrumb.llm.md +110 -0
  35. package/.llm/button-group-separator.llm.md +53 -0
  36. package/.llm/button-group-text.llm.md +56 -0
  37. package/.llm/button-group.llm.md +81 -0
  38. package/.llm/button.llm.md +281 -0
  39. package/.llm/calendar-day-button.llm.md +57 -0
  40. package/.llm/calendar.llm.md +340 -0
  41. package/.llm/caption.llm.md +48 -0
  42. package/.llm/card-action.llm.md +64 -0
  43. package/.llm/card-content.llm.md +48 -0
  44. package/.llm/card-description.llm.md +46 -0
  45. package/.llm/card-footer.llm.md +56 -0
  46. package/.llm/card-header.llm.md +53 -0
  47. package/.llm/card-title.llm.md +43 -0
  48. package/.llm/card.llm.md +100 -0
  49. package/.llm/carousel-content.llm.md +77 -0
  50. package/.llm/carousel-item.llm.md +96 -0
  51. package/.llm/carousel-next.llm.md +95 -0
  52. package/.llm/carousel-previous.llm.md +95 -0
  53. package/.llm/carousel.llm.md +211 -0
  54. package/.llm/chart-config.llm.md +71 -0
  55. package/.llm/chart-container.llm.md +148 -0
  56. package/.llm/chart-legend-content.llm.md +85 -0
  57. package/.llm/chart-legend.llm.md +144 -0
  58. package/.llm/chart-style.llm.md +28 -0
  59. package/.llm/chart-tooltip-content.llm.md +149 -0
  60. package/.llm/chart-tooltip.llm.md +184 -0
  61. package/.llm/checkbox.llm.md +100 -0
  62. package/.llm/cn.llm.md +46 -0
  63. package/.llm/code.llm.md +45 -0
  64. package/.llm/collapsible-content.llm.md +109 -0
  65. package/.llm/collapsible-trigger.llm.md +75 -0
  66. package/.llm/collapsible.llm.md +109 -0
  67. package/.llm/combobox-option.llm.md +53 -0
  68. package/.llm/combobox.llm.md +208 -0
  69. package/.llm/command-dialog.llm.md +112 -0
  70. package/.llm/command-empty.llm.md +63 -0
  71. package/.llm/command-group.llm.md +83 -0
  72. package/.llm/command-input.llm.md +82 -0
  73. package/.llm/command-item.llm.md +97 -0
  74. package/.llm/command-list.llm.md +53 -0
  75. package/.llm/command-loading.llm.md +48 -0
  76. package/.llm/command-separator.llm.md +44 -0
  77. package/.llm/command-shortcut.llm.md +63 -0
  78. package/.llm/command.llm.md +147 -0
  79. package/.llm/container.llm.md +236 -0
  80. package/.llm/context-menu-checkbox-item.llm.md +97 -0
  81. package/.llm/context-menu-content.llm.md +91 -0
  82. package/.llm/context-menu-group.llm.md +61 -0
  83. package/.llm/context-menu-item.llm.md +94 -0
  84. package/.llm/context-menu-label.llm.md +60 -0
  85. package/.llm/context-menu-portal.llm.md +49 -0
  86. package/.llm/context-menu-radio-group.llm.md +66 -0
  87. package/.llm/context-menu-radio-item.llm.md +76 -0
  88. package/.llm/context-menu-separator.llm.md +51 -0
  89. package/.llm/context-menu-shortcut.llm.md +57 -0
  90. package/.llm/context-menu-sub-content.llm.md +90 -0
  91. package/.llm/context-menu-sub-trigger.llm.md +73 -0
  92. package/.llm/context-menu-sub.llm.md +61 -0
  93. package/.llm/context-menu-trigger.llm.md +53 -0
  94. package/.llm/context-menu.llm.md +103 -0
  95. package/.llm/date-picker.llm.md +90 -0
  96. package/.llm/dialog-close.llm.md +61 -0
  97. package/.llm/dialog-content.llm.md +128 -0
  98. package/.llm/dialog-description.llm.md +44 -0
  99. package/.llm/dialog-footer.llm.md +38 -0
  100. package/.llm/dialog-header.llm.md +40 -0
  101. package/.llm/dialog-overlay.llm.md +57 -0
  102. package/.llm/dialog-portal.llm.md +47 -0
  103. package/.llm/dialog-title.llm.md +41 -0
  104. package/.llm/dialog-trigger.llm.md +51 -0
  105. package/.llm/dialog.llm.md +113 -0
  106. package/.llm/drawer-close.llm.md +53 -0
  107. package/.llm/drawer-content.llm.md +58 -0
  108. package/.llm/drawer-description.llm.md +54 -0
  109. package/.llm/drawer-footer.llm.md +67 -0
  110. package/.llm/drawer-header.llm.md +60 -0
  111. package/.llm/drawer-overlay.llm.md +40 -0
  112. package/.llm/drawer-portal.llm.md +42 -0
  113. package/.llm/drawer-title.llm.md +51 -0
  114. package/.llm/drawer-trigger.llm.md +44 -0
  115. package/.llm/drawer.llm.md +194 -0
  116. package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
  117. package/.llm/dropdown-menu-content.llm.md +109 -0
  118. package/.llm/dropdown-menu-group.llm.md +38 -0
  119. package/.llm/dropdown-menu-item.llm.md +94 -0
  120. package/.llm/dropdown-menu-label.llm.md +66 -0
  121. package/.llm/dropdown-menu-portal.llm.md +32 -0
  122. package/.llm/dropdown-menu-radio-group.llm.md +73 -0
  123. package/.llm/dropdown-menu-radio-item.llm.md +92 -0
  124. package/.llm/dropdown-menu-separator.llm.md +55 -0
  125. package/.llm/dropdown-menu-shortcut.llm.md +74 -0
  126. package/.llm/dropdown-menu-sub-content.llm.md +80 -0
  127. package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
  128. package/.llm/dropdown-menu-sub.llm.md +74 -0
  129. package/.llm/dropdown-menu-trigger.llm.md +48 -0
  130. package/.llm/dropdown-menu.llm.md +120 -0
  131. package/.llm/empty-content.llm.md +103 -0
  132. package/.llm/empty-description.llm.md +70 -0
  133. package/.llm/empty-header.llm.md +64 -0
  134. package/.llm/empty-media.llm.md +81 -0
  135. package/.llm/empty-state.llm.md +174 -0
  136. package/.llm/empty-title.llm.md +54 -0
  137. package/.llm/empty.llm.md +158 -0
  138. package/.llm/field-content.llm.md +28 -0
  139. package/.llm/field-description.llm.md +28 -0
  140. package/.llm/field-error.llm.md +41 -0
  141. package/.llm/field-group.llm.md +84 -0
  142. package/.llm/field-label.llm.md +28 -0
  143. package/.llm/field-legend.llm.md +77 -0
  144. package/.llm/field-separator.llm.md +35 -0
  145. package/.llm/field-set.llm.md +80 -0
  146. package/.llm/field-title.llm.md +28 -0
  147. package/.llm/field.llm.md +35 -0
  148. package/.llm/hover-card-content.llm.md +167 -0
  149. package/.llm/hover-card-trigger.llm.md +65 -0
  150. package/.llm/hover-card.llm.md +121 -0
  151. package/.llm/input-group-addon.llm.md +91 -0
  152. package/.llm/input-group-button.llm.md +120 -0
  153. package/.llm/input-group-input.llm.md +145 -0
  154. package/.llm/input-group-text.llm.md +75 -0
  155. package/.llm/input-group-textarea.llm.md +157 -0
  156. package/.llm/input-group.llm.md +108 -0
  157. package/.llm/input.llm.md +319 -0
  158. package/.llm/item-actions.llm.md +77 -0
  159. package/.llm/item-content.llm.md +73 -0
  160. package/.llm/item-description.llm.md +61 -0
  161. package/.llm/item-footer.llm.md +68 -0
  162. package/.llm/item-group.llm.md +73 -0
  163. package/.llm/item-header.llm.md +66 -0
  164. package/.llm/item-media.llm.md +75 -0
  165. package/.llm/item-separator.llm.md +80 -0
  166. package/.llm/item-title.llm.md +59 -0
  167. package/.llm/item.llm.md +115 -0
  168. package/.llm/kbd-group.llm.md +71 -0
  169. package/.llm/kbd.llm.md +71 -0
  170. package/.llm/label.llm.md +145 -0
  171. package/.llm/menubar-checkbox-item.llm.md +66 -0
  172. package/.llm/menubar-content.llm.md +128 -0
  173. package/.llm/menubar-group.llm.md +40 -0
  174. package/.llm/menubar-item.llm.md +62 -0
  175. package/.llm/menubar-label.llm.md +40 -0
  176. package/.llm/menubar-menu.llm.md +32 -0
  177. package/.llm/menubar-portal.llm.md +38 -0
  178. package/.llm/menubar-radio-group.llm.md +39 -0
  179. package/.llm/menubar-radio-item.llm.md +59 -0
  180. package/.llm/menubar-separator.llm.md +35 -0
  181. package/.llm/menubar-shortcut.llm.md +37 -0
  182. package/.llm/menubar-sub-content.llm.md +127 -0
  183. package/.llm/menubar-sub-trigger.llm.md +51 -0
  184. package/.llm/menubar-sub.llm.md +53 -0
  185. package/.llm/menubar-trigger.llm.md +37 -0
  186. package/.llm/menubar.llm.md +115 -0
  187. package/.llm/navigation-menu-content.llm.md +116 -0
  188. package/.llm/navigation-menu-indicator.llm.md +68 -0
  189. package/.llm/navigation-menu-item.llm.md +62 -0
  190. package/.llm/navigation-menu-link.llm.md +109 -0
  191. package/.llm/navigation-menu-list.llm.md +52 -0
  192. package/.llm/navigation-menu-trigger-style.llm.md +22 -0
  193. package/.llm/navigation-menu-trigger.llm.md +57 -0
  194. package/.llm/navigation-menu-viewport.llm.md +51 -0
  195. package/.llm/navigation-menu.llm.md +184 -0
  196. package/.llm/overline.llm.md +51 -0
  197. package/.llm/page-title.llm.md +52 -0
  198. package/.llm/pagination-content.llm.md +60 -0
  199. package/.llm/pagination-ellipsis.llm.md +107 -0
  200. package/.llm/pagination-item.llm.md +59 -0
  201. package/.llm/pagination-link.llm.md +150 -0
  202. package/.llm/pagination-next.llm.md +115 -0
  203. package/.llm/pagination-previous.llm.md +115 -0
  204. package/.llm/pagination.llm.md +190 -0
  205. package/.llm/popover-anchor.llm.md +53 -0
  206. package/.llm/popover-content.llm.md +109 -0
  207. package/.llm/popover-trigger.llm.md +54 -0
  208. package/.llm/popover.llm.md +116 -0
  209. package/.llm/progress.llm.md +76 -0
  210. package/.llm/radio-group-indicator.llm.md +28 -0
  211. package/.llm/radio-group-item.llm.md +40 -0
  212. package/.llm/radio-group.llm.md +76 -0
  213. package/.llm/resizable-handle.llm.md +156 -0
  214. package/.llm/resizable-panel-group.llm.md +149 -0
  215. package/.llm/resizable-panel.llm.md +157 -0
  216. package/.llm/scroll-area-corner.llm.md +41 -0
  217. package/.llm/scroll-area-thumb.llm.md +39 -0
  218. package/.llm/scroll-area-viewport.llm.md +60 -0
  219. package/.llm/scroll-area.llm.md +125 -0
  220. package/.llm/scroll-bar.llm.md +78 -0
  221. package/.llm/sdk-items-registry.json +2984 -0
  222. package/.llm/section-title.llm.md +48 -0
  223. package/.llm/select-content.llm.md +139 -0
  224. package/.llm/select-group.llm.md +60 -0
  225. package/.llm/select-item.llm.md +75 -0
  226. package/.llm/select-label.llm.md +62 -0
  227. package/.llm/select-scroll-down-button.llm.md +45 -0
  228. package/.llm/select-scroll-up-button.llm.md +45 -0
  229. package/.llm/select-separator.llm.md +59 -0
  230. package/.llm/select-trigger.llm.md +66 -0
  231. package/.llm/select-value.llm.md +67 -0
  232. package/.llm/select.llm.md +159 -0
  233. package/.llm/separator.llm.md +129 -0
  234. package/.llm/sheet-close.llm.md +49 -0
  235. package/.llm/sheet-content.llm.md +115 -0
  236. package/.llm/sheet-description.llm.md +62 -0
  237. package/.llm/sheet-footer.llm.md +64 -0
  238. package/.llm/sheet-header.llm.md +52 -0
  239. package/.llm/sheet-title.llm.md +53 -0
  240. package/.llm/sheet-trigger.llm.md +46 -0
  241. package/.llm/sheet.llm.md +126 -0
  242. package/.llm/sidebar-content.llm.md +63 -0
  243. package/.llm/sidebar-footer.llm.md +50 -0
  244. package/.llm/sidebar-group-action.llm.md +60 -0
  245. package/.llm/sidebar-group-content.llm.md +64 -0
  246. package/.llm/sidebar-group-label.llm.md +53 -0
  247. package/.llm/sidebar-group.llm.md +56 -0
  248. package/.llm/sidebar-header.llm.md +67 -0
  249. package/.llm/sidebar-input.llm.md +50 -0
  250. package/.llm/sidebar-inset.llm.md +52 -0
  251. package/.llm/sidebar-menu-action.llm.md +84 -0
  252. package/.llm/sidebar-menu-badge.llm.md +60 -0
  253. package/.llm/sidebar-menu-button.llm.md +103 -0
  254. package/.llm/sidebar-menu-item.llm.md +75 -0
  255. package/.llm/sidebar-menu-skeleton.llm.md +76 -0
  256. package/.llm/sidebar-menu-sub-button.llm.md +85 -0
  257. package/.llm/sidebar-menu-sub-item.llm.md +54 -0
  258. package/.llm/sidebar-menu-sub.llm.md +74 -0
  259. package/.llm/sidebar-menu.llm.md +65 -0
  260. package/.llm/sidebar-provider.llm.md +79 -0
  261. package/.llm/sidebar-rail.llm.md +34 -0
  262. package/.llm/sidebar-separator.llm.md +57 -0
  263. package/.llm/sidebar-trigger.llm.md +49 -0
  264. package/.llm/sidebar.llm.md +129 -0
  265. package/.llm/skeleton.llm.md +134 -0
  266. package/.llm/slider.llm.md +173 -0
  267. package/.llm/spinner.llm.md +182 -0
  268. package/.llm/stack.llm.md +28 -0
  269. package/.llm/subsection-title.llm.md +46 -0
  270. package/.llm/switch.llm.md +76 -0
  271. package/.llm/table-body.llm.md +36 -0
  272. package/.llm/table-caption.llm.md +48 -0
  273. package/.llm/table-cell.llm.md +53 -0
  274. package/.llm/table-footer.llm.md +41 -0
  275. package/.llm/table-head.llm.md +69 -0
  276. package/.llm/table-header.llm.md +41 -0
  277. package/.llm/table-row.llm.md +42 -0
  278. package/.llm/table.llm.md +123 -0
  279. package/.llm/tabs-content.llm.md +47 -0
  280. package/.llm/tabs-list.llm.md +41 -0
  281. package/.llm/tabs-trigger.llm.md +47 -0
  282. package/.llm/tabs.llm.md +71 -0
  283. package/.llm/text-field.llm.md +327 -0
  284. package/.llm/textarea.llm.md +311 -0
  285. package/.llm/theme-preference.llm.md +25 -0
  286. package/.llm/theme-toggle.llm.md +57 -0
  287. package/.llm/theme.llm.md +14 -0
  288. package/.llm/toaster.llm.md +193 -0
  289. package/.llm/toggle-group-item.llm.md +59 -0
  290. package/.llm/toggle-group.llm.md +101 -0
  291. package/.llm/toggle.llm.md +40 -0
  292. package/.llm/tooltip-content.llm.md +185 -0
  293. package/.llm/tooltip-provider.llm.md +68 -0
  294. package/.llm/tooltip-trigger.llm.md +70 -0
  295. package/.llm/tooltip.llm.md +129 -0
  296. package/.llm/use-carousel.llm.md +55 -0
  297. package/.llm/use-command-state.llm.md +32 -0
  298. package/.llm/use-is-mobile.llm.md +73 -0
  299. package/.llm/use-sidebar.llm.md +61 -0
  300. package/dist/components/ui/scroll-area.d.ts +5 -5
  301. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  302. package/dist/components/ui/stack.d.ts.map +1 -1
  303. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
  304. package/dist/components/ui/stories/typography.stories.d.ts +8 -108
  305. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  306. package/dist/components/ui/theme-toggle.d.ts +0 -3
  307. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  308. package/dist/components/ui/theme.d.ts.map +1 -1
  309. package/dist/components/ui/typography.d.ts +211 -474
  310. package/dist/components/ui/typography.d.ts.map +1 -1
  311. package/dist/index.js +5160 -9875
  312. package/dist/index.js.map +1 -1
  313. package/dist/tsconfig.tsbuildinfo +1 -1
  314. package/package.json +2 -2
  315. package/src/components/ui/stack.tsx +3 -1
  316. package/src/components/ui/stories/typography.stories.tsx +261 -1512
  317. package/src/components/ui/theme-toggle.tsx +1 -3
  318. package/src/components/ui/theme.tsx +6 -1
  319. package/src/components/ui/typography.tsx +416 -1136
  320. package/src/styles/globals.css +57 -106
@@ -0,0 +1,32 @@
1
+ # DropdownMenuPortal
2
+
3
+ **Type**: component
4
+
5
+ Portal component for rendering menu content in a different DOM location Renders dropdown content outside of the normal DOM hierarchy to avoid z-index and overflow issues. Automatically used by DropdownMenuContent but can be used explicitly for advanced positioning scenarios.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuPortal } from '@neynar/ui';
11
+
12
+ <DropdownMenuPortal
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
+ <DropdownMenuPortal container={customContainer}>
28
+ <DropdownMenuContent>
29
+ <DropdownMenuItem>Item</DropdownMenuItem>
30
+ </DropdownMenuContent>
31
+ </DropdownMenuPortal>
32
+ ```
@@ -0,0 +1,73 @@
1
+ # DropdownMenuRadioGroup
2
+
3
+ **Type**: component
4
+
5
+ Groups radio items for single selection Creates a group where only one radio item can be selected at a time. Manages the selection state and ensures mutual exclusivity between options. Use with DropdownMenuRadioItem components to create single-choice scenarios like theme selection, sorting options, or view modes.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuRadioGroup } from '@neynar/ui';
11
+
12
+ <DropdownMenuRadioGroup
13
+ value="value"
14
+ onValueChange={handleValueChange}
15
+ disabled={true}
16
+ >
17
+ {/* Your content here */}
18
+ </DropdownMenuRadioGroup>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### value
24
+ - **Type**: `string`
25
+ - **Required**: No
26
+ - **Description**: The currently selected value in the radio group
27
+
28
+ ### onValueChange
29
+ - **Type**: `(value: string) => void`
30
+ - **Required**: No
31
+ - **Description**: Callback fired when the selection changes to a different value
32
+
33
+ ### disabled
34
+ - **Type**: `boolean`
35
+ - **Required**: No
36
+ - **Description**: Whether the entire radio group is disabled
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
+ // Theme selection with radio group
48
+ const [theme, setTheme] = useState("light");
49
+ <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>
50
+ <DropdownMenuRadioItem value="light">
51
+ <Sun className="mr-2 h-4 w-4" />
52
+ Light Theme
53
+ </DropdownMenuRadioItem>
54
+ <DropdownMenuRadioItem value="dark">
55
+ <Moon className="mr-2 h-4 w-4" />
56
+ Dark Theme
57
+ </DropdownMenuRadioItem>
58
+ <DropdownMenuRadioItem value="system">
59
+ <Monitor className="mr-2 h-4 w-4" />
60
+ System Theme
61
+ </DropdownMenuRadioItem>
62
+ </DropdownMenuRadioGroup>
63
+ ```
64
+ ### Example 2
65
+ ```tsx
66
+ // Sorting options
67
+ const [sortBy, setSortBy] = useState("name");
68
+ <DropdownMenuRadioGroup value={sortBy} onValueChange={setSortBy}>
69
+ <DropdownMenuRadioItem value="name">Sort by Name</DropdownMenuRadioItem>
70
+ <DropdownMenuRadioItem value="date">Sort by Date</DropdownMenuRadioItem>
71
+ <DropdownMenuRadioItem value="size">Sort by Size</DropdownMenuRadioItem>
72
+ </DropdownMenuRadioGroup>
73
+ ```
@@ -0,0 +1,92 @@
1
+ # DropdownMenuRadioItem
2
+
3
+ **Type**: component
4
+
5
+ A radio button menu item for single selection within a group Must be used within a DropdownMenuRadioGroup. Shows a filled circle indicator when selected. Only one radio item can be selected per group, ensuring mutually exclusive selection behavior.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuRadioItem } from '@neynar/ui';
11
+
12
+ <DropdownMenuRadioItem
13
+ value="value"
14
+ disabled={true}
15
+ onSelect={handleSelect}
16
+ textValue="value"
17
+ inset={true}
18
+ className="value"
19
+ >
20
+ {/* Your content here */}
21
+ </DropdownMenuRadioItem>
22
+ ```
23
+
24
+ ## Component Props
25
+
26
+ ### value
27
+ - **Type**: `string`
28
+ - **Required**: Yes
29
+ - **Description**: The unique value this radio item represents
30
+
31
+ ### disabled
32
+ - **Type**: `boolean`
33
+ - **Required**: No
34
+ - **Description**: Whether the item is disabled and cannot be selected
35
+
36
+ ### onSelect
37
+ - **Type**: `(event: Event) => void`
38
+ - **Required**: No
39
+ - **Description**: Callback fired when the item is selected via click or keyboard
40
+
41
+ ### textValue
42
+ - **Type**: `string`
43
+ - **Required**: No
44
+ - **Description**: Optional text value used for typeahead search functionality
45
+
46
+ ### inset
47
+ - **Type**: `boolean`
48
+ - **Required**: No
49
+ - **Description**: Whether to add extra left padding to align with items that have icons
50
+
51
+ ### className
52
+ - **Type**: `string`
53
+ - **Required**: No
54
+ - **Description**: No description available
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 radio group for theme selection
66
+ <DropdownMenuRadioGroup value={selectedTheme} onValueChange={setSelectedTheme}>
67
+ <DropdownMenuRadioItem value="light">
68
+ <Sun className="mr-2 h-4 w-4" />
69
+ Light Theme
70
+ </DropdownMenuRadioItem>
71
+ <DropdownMenuRadioItem value="dark">
72
+ <Moon className="mr-2 h-4 w-4" />
73
+ Dark Theme
74
+ </DropdownMenuRadioItem>
75
+ <DropdownMenuRadioItem value="system">
76
+ <Monitor className="mr-2 h-4 w-4" />
77
+ System Theme
78
+ </DropdownMenuRadioItem>
79
+ </DropdownMenuRadioGroup>
80
+ ```
81
+ ### Example 2
82
+ ```tsx
83
+ // Priority selection with disabled option
84
+ <DropdownMenuRadioGroup value={priority} onValueChange={setPriority}>
85
+ <DropdownMenuRadioItem value="low">Low Priority</DropdownMenuRadioItem>
86
+ <DropdownMenuRadioItem value="medium">Medium Priority</DropdownMenuRadioItem>
87
+ <DropdownMenuRadioItem value="high">High Priority</DropdownMenuRadioItem>
88
+ <DropdownMenuRadioItem value="urgent" disabled>
89
+ Urgent (Premium Only)
90
+ </DropdownMenuRadioItem>
91
+ </DropdownMenuRadioGroup>
92
+ ```
@@ -0,0 +1,55 @@
1
+ # DropdownMenuSeparator
2
+
3
+ **Type**: component
4
+
5
+ A visual separator between menu items or groups Renders a thin horizontal line to visually separate different sections of menu items. Improves visual hierarchy and helps users understand the logical grouping of menu options. Commonly used after labels or between different types of actions.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuSeparator } from '@neynar/ui';
11
+
12
+ <DropdownMenuSeparator
13
+ className={value}
14
+ ...props={value}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### className
21
+ - **Type**: `unknown`
22
+ - **Required**: Yes
23
+ - **Description**: No description available
24
+
25
+ ### ...props
26
+ - **Type**: `unknown`
27
+ - **Required**: Yes
28
+ - **Description**: No description available
29
+
30
+ ## Examples
31
+
32
+ ### Example 1
33
+ ```tsx
34
+ // Separating different action groups
35
+ <DropdownMenuContent>
36
+ <DropdownMenuItem>View</DropdownMenuItem>
37
+ <DropdownMenuItem>Edit</DropdownMenuItem>
38
+ <DropdownMenuSeparator />
39
+ <DropdownMenuItem variant="destructive">Delete</DropdownMenuItem>
40
+ </DropdownMenuContent>
41
+ ```
42
+ ### Example 2
43
+ ```tsx
44
+ // Separating sections with labels
45
+ <DropdownMenuContent>
46
+ <DropdownMenuLabel>User Actions</DropdownMenuLabel>
47
+ <DropdownMenuSeparator />
48
+ <DropdownMenuItem>Profile</DropdownMenuItem>
49
+ <DropdownMenuItem>Settings</DropdownMenuItem>
50
+ <DropdownMenuSeparator />
51
+ <DropdownMenuLabel>System</DropdownMenuLabel>
52
+ <DropdownMenuSeparator />
53
+ <DropdownMenuItem>Logout</DropdownMenuItem>
54
+ </DropdownMenuContent>
55
+ ```
@@ -0,0 +1,74 @@
1
+ # DropdownMenuShortcut
2
+
3
+ **Type**: component
4
+
5
+ Displays keyboard shortcut hints in menu items Shows keyboard shortcut text aligned to the right side of menu items. Purely visual component - does not implement the actual keyboard functionality. Use standard keyboard shortcut notation and symbols (⌘, ⌃, ⌥, ⇧, Ctrl, Alt, Shift). Helps users discover and remember keyboard shortcuts for menu actions.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuShortcut } from '@neynar/ui';
11
+
12
+ <DropdownMenuShortcut
13
+ className={value}
14
+ ...props={value}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### className
21
+ - **Type**: `unknown`
22
+ - **Required**: Yes
23
+ - **Description**: No description available
24
+
25
+ ### ...props
26
+ - **Type**: `unknown`
27
+ - **Required**: Yes
28
+ - **Description**: No description available
29
+
30
+ ## Examples
31
+
32
+ ### Example 1
33
+ ```tsx
34
+ // macOS style shortcuts
35
+ <DropdownMenuItem onSelect={handleSave}>
36
+ Save Document
37
+ <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
38
+ </DropdownMenuItem>
39
+ ```
40
+ ### Example 2
41
+ ```tsx
42
+ // Windows/Linux style shortcuts
43
+ <DropdownMenuItem onSelect={handleCopy}>
44
+ Copy
45
+ <DropdownMenuShortcut>Ctrl+C</DropdownMenuShortcut>
46
+ </DropdownMenuItem>
47
+ ```
48
+ ### Example 3
49
+ ```tsx
50
+ // Complex shortcuts with multiple modifiers
51
+ <DropdownMenuItem onSelect={handleForceRefresh}>
52
+ Force Refresh
53
+ <DropdownMenuShortcut>⌘⇧R</DropdownMenuShortcut>
54
+ </DropdownMenuItem>
55
+ ```
56
+ ### Example 4
57
+ ```tsx
58
+ // Multiple menu items with shortcuts
59
+ <DropdownMenuContent>
60
+ <DropdownMenuItem>
61
+ New File <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>
62
+ </DropdownMenuItem>
63
+ <DropdownMenuItem>
64
+ Open File <DropdownMenuShortcut>⌘O</DropdownMenuShortcut>
65
+ </DropdownMenuItem>
66
+ <DropdownMenuSeparator />
67
+ <DropdownMenuItem>
68
+ Save <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
69
+ </DropdownMenuItem>
70
+ <DropdownMenuItem>
71
+ Save As <DropdownMenuShortcut>⌘⇧S</DropdownMenuShortcut>
72
+ </DropdownMenuItem>
73
+ </DropdownMenuContent>
74
+ ```
@@ -0,0 +1,80 @@
1
+ # DropdownMenuSubContent
2
+
3
+ **Type**: component
4
+
5
+ Content container for submenu items Contains the items displayed when a submenu is opened. Positioned relative to the submenu trigger with intelligent collision detection. Supports all the same item types as the main menu content, enabling complex nested menu structures with consistent behavior and styling.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuSubContent } from '@neynar/ui';
11
+
12
+ <DropdownMenuSubContent
13
+ className={value}
14
+ ...props={value}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### className
21
+ - **Type**: `unknown`
22
+ - **Required**: Yes
23
+ - **Description**: No description available
24
+
25
+ ### ...props
26
+ - **Type**: `unknown`
27
+ - **Required**: Yes
28
+ - **Description**: No description available
29
+
30
+ ## Examples
31
+
32
+ ### Example 1
33
+ ```tsx
34
+ // Basic submenu content with various item types
35
+ <DropdownMenuSubContent>
36
+ <DropdownMenuItem>
37
+ <Mail className="mr-2 h-4 w-4" />
38
+ Send via Email
39
+ </DropdownMenuItem>
40
+ <DropdownMenuItem>
41
+ <Link className="mr-2 h-4 w-4" />
42
+ Copy Share Link
43
+ </DropdownMenuItem>
44
+ <DropdownMenuSeparator />
45
+ <DropdownMenuItem>
46
+ <QrCode className="mr-2 h-4 w-4" />
47
+ Generate QR Code
48
+ </DropdownMenuItem>
49
+ </DropdownMenuSubContent>
50
+ ```
51
+ ### Example 2
52
+ ```tsx
53
+ // Submenu with checkbox items for multi-selection
54
+ <DropdownMenuSubContent>
55
+ <DropdownMenuLabel>Export Options</DropdownMenuLabel>
56
+ <DropdownMenuSeparator />
57
+ <DropdownMenuCheckboxItem checked={includeMetadata} onCheckedChange={setIncludeMetadata}>
58
+ Include Metadata
59
+ </DropdownMenuCheckboxItem>
60
+ <DropdownMenuCheckboxItem checked={compressFile} onCheckedChange={setCompressFile}>
61
+ Compress File
62
+ </DropdownMenuCheckboxItem>
63
+ <DropdownMenuSeparator />
64
+ <DropdownMenuItem>Export Now</DropdownMenuItem>
65
+ </DropdownMenuSubContent>
66
+ ```
67
+ ### Example 3
68
+ ```tsx
69
+ // Nested submenu structure
70
+ <DropdownMenuSubContent>
71
+ <DropdownMenuItem>Basic Export</DropdownMenuItem>
72
+ <DropdownMenuSub>
73
+ <DropdownMenuSubTrigger>Advanced Settings</DropdownMenuSubTrigger>
74
+ <DropdownMenuSubContent>
75
+ <DropdownMenuItem>High Quality</DropdownMenuItem>
76
+ <DropdownMenuItem>Custom Resolution</DropdownMenuItem>
77
+ </DropdownMenuSubContent>
78
+ </DropdownMenuSub>
79
+ </DropdownMenuSubContent>
80
+ ```
@@ -0,0 +1,84 @@
1
+ # DropdownMenuSubTrigger
2
+
3
+ **Type**: component
4
+
5
+ Trigger element for opening a submenu Displays an arrow indicator and opens the associated submenu on hover or keyboard navigation. Must be used within a DropdownMenuSub component. Automatically includes a chevron icon to indicate submenu availability and handles focus states.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuSubTrigger } from '@neynar/ui';
11
+
12
+ <DropdownMenuSubTrigger
13
+ className={value}
14
+ inset={value}
15
+ ...props={value}
16
+ >
17
+ {/* Your content here */}
18
+ </DropdownMenuSubTrigger>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### className
24
+ - **Type**: `unknown`
25
+ - **Required**: Yes
26
+ - **Description**: No description available
27
+
28
+ ### inset
29
+ - **Type**: `unknown`
30
+ - **Required**: Yes
31
+ - **Description**: No description available
32
+
33
+ ### children
34
+ - **Type**: `unknown`
35
+ - **Required**: Yes
36
+ - **Description**: No description available
37
+
38
+ ### ...props
39
+ - **Type**: `unknown`
40
+ - **Required**: Yes
41
+ - **Description**: No description available
42
+
43
+ ## Examples
44
+
45
+ ### Example 1
46
+ ```tsx
47
+ // Basic submenu trigger with icon
48
+ <DropdownMenuSub>
49
+ <DropdownMenuSubTrigger>
50
+ <Share className="mr-2 h-4 w-4" />
51
+ Share Options
52
+ </DropdownMenuSubTrigger>
53
+ <DropdownMenuSubContent>
54
+ <DropdownMenuItem>Email Link</DropdownMenuItem>
55
+ <DropdownMenuItem>Copy to Clipboard</DropdownMenuItem>
56
+ </DropdownMenuSubContent>
57
+ </DropdownMenuSub>
58
+ ```
59
+ ### Example 2
60
+ ```tsx
61
+ // Submenu trigger with inset alignment
62
+ <DropdownMenuContent>
63
+ <DropdownMenuItem>
64
+ <FileText className="mr-2 h-4 w-4" />
65
+ Open File
66
+ </DropdownMenuItem>
67
+ <DropdownMenuSub>
68
+ <DropdownMenuSubTrigger inset>
69
+ Recent Files
70
+ </DropdownMenuSubTrigger>
71
+ <DropdownMenuSubContent>
72
+ <DropdownMenuItem>Document.pdf</DropdownMenuItem>
73
+ <DropdownMenuItem>Presentation.pptx</DropdownMenuItem>
74
+ </DropdownMenuSubContent>
75
+ </DropdownMenuSub>
76
+ </DropdownMenuContent>
77
+ ```
78
+ ### Example 3
79
+ ```tsx
80
+ // Disabled submenu trigger
81
+ <DropdownMenuSubTrigger disabled>
82
+ Advanced Options (Pro Only)
83
+ </DropdownMenuSubTrigger>
84
+ ```
@@ -0,0 +1,74 @@
1
+ # DropdownMenuSub
2
+
3
+ **Type**: component
4
+
5
+ Container for creating nested submenus Wraps a submenu trigger and content to create hierarchical menu structures. Enables multi-level navigation within dropdown menus. Use with DropdownMenuSubTrigger and DropdownMenuSubContent to build complex menu hierarchies with proper focus management and keyboard navigation.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuSub } from '@neynar/ui';
11
+
12
+ <DropdownMenuSub
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
+ // Basic submenu structure
29
+ <DropdownMenuSub>
30
+ <DropdownMenuSubTrigger>
31
+ <Share className="mr-2 h-4 w-4" />
32
+ Share Options
33
+ </DropdownMenuSubTrigger>
34
+ <DropdownMenuSubContent>
35
+ <DropdownMenuItem>Email Link</DropdownMenuItem>
36
+ <DropdownMenuItem>Copy to Clipboard</DropdownMenuItem>
37
+ <DropdownMenuItem>Generate QR Code</DropdownMenuItem>
38
+ </DropdownMenuSubContent>
39
+ </DropdownMenuSub>
40
+ ```
41
+ ### Example 2
42
+ ```tsx
43
+ // Controlled submenu with state management
44
+ const [isShareOpen, setIsShareOpen] = useState(false);
45
+ <DropdownMenuSub open={isShareOpen} onOpenChange={setIsShareOpen}>
46
+ <DropdownMenuSubTrigger>Share</DropdownMenuSubTrigger>
47
+ <DropdownMenuSubContent>
48
+ <DropdownMenuItem onSelect={() => handleShare('email')}>Email</DropdownMenuItem>
49
+ <DropdownMenuItem onSelect={() => handleShare('link')}>Copy Link</DropdownMenuItem>
50
+ </DropdownMenuSubContent>
51
+ </DropdownMenuSub>
52
+ ```
53
+ ### Example 3
54
+ ```tsx
55
+ // Complex nested menu structure
56
+ <DropdownMenuContent>
57
+ <DropdownMenuItem>Edit</DropdownMenuItem>
58
+ <DropdownMenuSeparator />
59
+ <DropdownMenuSub>
60
+ <DropdownMenuSubTrigger>Export</DropdownMenuSubTrigger>
61
+ <DropdownMenuSubContent>
62
+ <DropdownMenuItem>Export as PDF</DropdownMenuItem>
63
+ <DropdownMenuItem>Export as PNG</DropdownMenuItem>
64
+ <DropdownMenuSub>
65
+ <DropdownMenuSubTrigger>Advanced Export</DropdownMenuSubTrigger>
66
+ <DropdownMenuSubContent>
67
+ <DropdownMenuItem>Custom Resolution</DropdownMenuItem>
68
+ <DropdownMenuItem>Batch Export</DropdownMenuItem>
69
+ </DropdownMenuSubContent>
70
+ </DropdownMenuSub>
71
+ </DropdownMenuSubContent>
72
+ </DropdownMenuSub>
73
+ </DropdownMenuContent>
74
+ ```
@@ -0,0 +1,48 @@
1
+ # DropdownMenuTrigger
2
+
3
+ **Type**: component
4
+
5
+ The element that triggers the dropdown menu Renders the interactive element that opens and closes the dropdown menu. Typically wraps a button or other interactive element using the asChild prop. Automatically receives proper ARIA attributes and keyboard event handlers.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { DropdownMenuTrigger } from '@neynar/ui';
11
+
12
+ <DropdownMenuTrigger
13
+ asChild={true}
14
+ >
15
+ {/* Your content here */}
16
+ </DropdownMenuTrigger>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### asChild
22
+ - **Type**: `boolean`
23
+ - **Required**: No
24
+ - **Description**: Merge props onto the immediate child instead of rendering a wrapper element
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
+ <DropdownMenuTrigger asChild>
37
+ <Button variant="outline">Open Menu</Button>
38
+ </DropdownMenuTrigger>
39
+ ```
40
+ ### Example 2
41
+ ```tsx
42
+ // Icon button trigger
43
+ <DropdownMenuTrigger asChild>
44
+ <Button variant="ghost" size="icon" aria-label="More options">
45
+ <MoreVertical className="h-4 w-4" />
46
+ </Button>
47
+ </DropdownMenuTrigger>
48
+ ```