@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,66 @@
1
+ # ContextMenuRadioGroup
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuRadioGroup - Container for radio button items Groups radio items together to allow single selection from multiple options. Manages the selected state and ensures only one item can be selected at a time. Provides controlled state management for radio selections within menus.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuRadioGroup } from '@neynar/ui';
11
+
12
+ <ContextMenuRadioGroup
13
+ value="value"
14
+ onValueChange={handleValueChange}
15
+ className="value"
16
+ >
17
+ {/* Your content here */}
18
+ </ContextMenuRadioGroup>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### value
24
+ - **Type**: `string`
25
+ - **Required**: No
26
+ - **Description**: The currently selected value that matches a RadioItem's value
27
+
28
+ ### onValueChange
29
+ - **Type**: `(value: string) => void`
30
+ - **Required**: No
31
+ - **Description**: Callback fired when selection changes, receives new value
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### children
39
+ - **Type**: `React.ReactNode`
40
+ - **Required**: Yes
41
+ - **Description**: ContextMenuRadioItem components to group together
42
+
43
+ ## Examples
44
+
45
+ ### Example 1
46
+ ```tsx
47
+ const [theme, setTheme] = useState("light")
48
+ <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
49
+ <ContextMenuRadioItem value="light">Light</ContextMenuRadioItem>
50
+ <ContextMenuRadioItem value="dark">Dark</ContextMenuRadioItem>
51
+ <ContextMenuRadioItem value="system">System</ContextMenuRadioItem>
52
+ </ContextMenuRadioGroup>
53
+ ```
54
+ ### Example 2
55
+ ```tsx
56
+ // With label and separator
57
+ <ContextMenuContent>
58
+ <ContextMenuLabel>Theme Selection</ContextMenuLabel>
59
+ <ContextMenuSeparator />
60
+ <ContextMenuRadioGroup value={currentTheme} onValueChange={handleThemeChange}>
61
+ <ContextMenuRadioItem value="light">Light Mode</ContextMenuRadioItem>
62
+ <ContextMenuRadioItem value="dark">Dark Mode</ContextMenuRadioItem>
63
+ <ContextMenuRadioItem value="auto">Auto</ContextMenuRadioItem>
64
+ </ContextMenuRadioGroup>
65
+ </ContextMenuContent>
66
+ ```
@@ -0,0 +1,76 @@
1
+ # ContextMenuRadioItem
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuRadioItem - A radio button item within a radio group Menu items that allow single selection from a group of options. Must be used within a ContextMenuRadioGroup for proper functionality. Displays a filled circle indicator when selected.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuRadioItem } from '@neynar/ui';
11
+
12
+ <ContextMenuRadioItem
13
+ value="value"
14
+ disabled={true}
15
+ onSelect={handleSelect}
16
+ textValue="value"
17
+ className="value"
18
+ >
19
+ {/* Your content here */}
20
+ </ContextMenuRadioItem>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### value
26
+ - **Type**: `string`
27
+ - **Required**: Yes
28
+ - **Description**: The unique value for this radio item (required)
29
+
30
+ ### disabled
31
+ - **Type**: `boolean`
32
+ - **Required**: No
33
+ - **Description**: Whether the item is disabled and non-interactive
34
+
35
+ ### onSelect
36
+ - **Type**: `(event: Event) => void`
37
+ - **Required**: No
38
+ - **Description**: Callback fired when the item is selected (before parent's onValueChange)
39
+
40
+ ### textValue
41
+ - **Type**: `string`
42
+ - **Required**: No
43
+ - **Description**: Custom text for typeahead navigation
44
+
45
+ ### className
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: Additional CSS classes for styling
49
+
50
+ ### children
51
+ - **Type**: `React.ReactNode`
52
+ - **Required**: Yes
53
+ - **Description**: Content of the radio item (typically text)
54
+
55
+ ## Examples
56
+
57
+ ### Example 1
58
+ ```tsx
59
+ <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
60
+ <ContextMenuRadioItem value="light">Light Theme</ContextMenuRadioItem>
61
+ <ContextMenuRadioItem value="dark">Dark Theme</ContextMenuRadioItem>
62
+ <ContextMenuRadioItem value="system">System Theme</ContextMenuRadioItem>
63
+ </ContextMenuRadioGroup>
64
+ ```
65
+ ### Example 2
66
+ ```tsx
67
+ // With disabled state and custom text
68
+ <ContextMenuRadioGroup value={quality} onValueChange={setQuality}>
69
+ <ContextMenuRadioItem value="low">Low Quality</ContextMenuRadioItem>
70
+ <ContextMenuRadioItem value="medium">Medium Quality</ContextMenuRadioItem>
71
+ <ContextMenuRadioItem value="high">High Quality</ContextMenuRadioItem>
72
+ <ContextMenuRadioItem value="ultra" disabled>
73
+ Ultra Quality (Premium)
74
+ </ContextMenuRadioItem>
75
+ </ContextMenuRadioGroup>
76
+ ```
@@ -0,0 +1,51 @@
1
+ # ContextMenuSeparator
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuSeparator - A visual divider between menu items Creates visual separation between groups of related menu items. Typically used after labels or to separate different types of actions. Improves visual hierarchy and content organization in menus.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuSeparator } from '@neynar/ui';
11
+
12
+ <ContextMenuSeparator
13
+ asChild={true}
14
+ className="value"
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### asChild
21
+ - **Type**: `boolean`
22
+ - **Required**: No
23
+ - **Description**: Merges props with child element instead of rendering wrapper
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: Additional CSS classes for styling
29
+
30
+ ## Examples
31
+
32
+ ### Example 1
33
+ ```tsx
34
+ <ContextMenuItem>Copy</ContextMenuItem>
35
+ <ContextMenuItem>Paste</ContextMenuItem>
36
+ <ContextMenuSeparator />
37
+ <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
38
+ ```
39
+ ### Example 2
40
+ ```tsx
41
+ // Organizing menu sections
42
+ <ContextMenuContent>
43
+ <ContextMenuLabel>Edit</ContextMenuLabel>
44
+ <ContextMenuItem>Copy</ContextMenuItem>
45
+ <ContextMenuItem>Paste</ContextMenuItem>
46
+ <ContextMenuSeparator />
47
+ <ContextMenuLabel>View</ContextMenuLabel>
48
+ <ContextMenuItem>Zoom In</ContextMenuItem>
49
+ <ContextMenuItem>Zoom Out</ContextMenuItem>
50
+ </ContextMenuContent>
51
+ ```
@@ -0,0 +1,57 @@
1
+ # ContextMenuShortcut
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuShortcut - Displays keyboard shortcuts within menu items Shows keyboard shortcuts aligned to the right side of menu items. Provides visual indication of available keyboard shortcuts for actions. Improves discoverability of keyboard navigation options.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuShortcut } from '@neynar/ui';
11
+
12
+ <ContextMenuShortcut
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </ContextMenuShortcut>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: Additional CSS classes for styling
25
+
26
+ ### children
27
+ - **Type**: `React.ReactNode`
28
+ - **Required**: Yes
29
+ - **Description**: The keyboard shortcut text to display (e.g., "⌘C", "Ctrl+V")
30
+
31
+ ## Examples
32
+
33
+ ### Example 1
34
+ ```tsx
35
+ <ContextMenuItem>
36
+ Copy
37
+ <ContextMenuShortcut>⌘C</ContextMenuShortcut>
38
+ </ContextMenuItem>
39
+ ```
40
+ ### Example 2
41
+ ```tsx
42
+ // Multiple shortcuts for different platforms
43
+ <ContextMenuItem>
44
+ Save
45
+ <ContextMenuShortcut>
46
+ {isMac ? '⌘S' : 'Ctrl+S'}
47
+ </ContextMenuShortcut>
48
+ </ContextMenuItem>
49
+ ```
50
+ ### Example 3
51
+ ```tsx
52
+ // Complex shortcuts
53
+ <ContextMenuItem>
54
+ Find and Replace
55
+ <ContextMenuShortcut>⌘⌥F</ContextMenuShortcut>
56
+ </ContextMenuItem>
57
+ ```
@@ -0,0 +1,90 @@
1
+ # ContextMenuSubContent
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuSubContent - Container for sub-menu items Contains the items within a sub-menu. Automatically positioned relative to its trigger with collision detection and smooth animations. Supports all the same features as main menu content including keyboard navigation.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuSubContent } from '@neynar/ui';
11
+
12
+ <ContextMenuSubContent
13
+ asChild={true}
14
+ loop={true}
15
+ onCloseAutoFocus={handleCloseAutoFocus}
16
+ onEscapeKeyDown={handleEscapeKeyDown}
17
+ avoidCollisions={true}
18
+ sideOffset={0}
19
+ className="value"
20
+ >
21
+ {/* Your content here */}
22
+ </ContextMenuSubContent>
23
+ ```
24
+
25
+ ## Component Props
26
+
27
+ ### asChild
28
+ - **Type**: `boolean`
29
+ - **Required**: No
30
+ - **Description**: Merges props with child element instead of rendering wrapper
31
+
32
+ ### loop
33
+ - **Type**: `boolean`
34
+ - **Required**: No
35
+ - **Description**: Enable keyboard navigation looping from last to first item
36
+
37
+ ### onCloseAutoFocus
38
+ - **Type**: `(event: Event) => void`
39
+ - **Required**: No
40
+ - **Description**: Handle focus return when sub-menu closes
41
+
42
+ ### onEscapeKeyDown
43
+ - **Type**: `(event: KeyboardEvent) => void`
44
+ - **Required**: No
45
+ - **Description**: Handle escape key presses
46
+
47
+ ### avoidCollisions
48
+ - **Type**: `boolean`
49
+ - **Required**: No
50
+ - **Description**: Prevent collisions with viewport boundaries
51
+
52
+ ### sideOffset
53
+ - **Type**: `number`
54
+ - **Required**: No
55
+ - **Description**: Distance in pixels from the trigger anchor
56
+
57
+ ### className
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: Additional CSS classes for styling
61
+
62
+ ### children
63
+ - **Type**: `React.ReactNode`
64
+ - **Required**: Yes
65
+ - **Description**: Sub-menu items, separators, and labels
66
+
67
+ ## Examples
68
+
69
+ ### Example 1
70
+ ```tsx
71
+ <ContextMenuSubContent>
72
+ <ContextMenuItem>Option 1</ContextMenuItem>
73
+ <ContextMenuItem>Option 2</ContextMenuItem>
74
+ <ContextMenuSeparator />
75
+ <ContextMenuItem>Option 3</ContextMenuItem>
76
+ </ContextMenuSubContent>
77
+ ```
78
+ ### Example 2
79
+ ```tsx
80
+ // With portal and collision avoidance
81
+ <ContextMenuSubContent
82
+ avoidCollisions={true}
83
+ sideOffset={8}
84
+ className="min-w-[200px]"
85
+ >
86
+ <ContextMenuLabel>Sub Options</ContextMenuLabel>
87
+ <ContextMenuItem>Action A</ContextMenuItem>
88
+ <ContextMenuItem>Action B</ContextMenuItem>
89
+ </ContextMenuSubContent>
90
+ ```
@@ -0,0 +1,73 @@
1
+ # ContextMenuSubTrigger
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuSubTrigger - Trigger element for opening sub-menus Menu item that opens a sub-menu on hover or focus. Automatically includes a chevron icon to indicate the presence of a sub-menu. Supports the same interaction patterns as regular menu items with additional sub-menu behavior.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuSubTrigger } from '@neynar/ui';
11
+
12
+ <ContextMenuSubTrigger
13
+ asChild={true}
14
+ disabled={true}
15
+ textValue="value"
16
+ inset={true}
17
+ className="value"
18
+ >
19
+ {/* Your content here */}
20
+ </ContextMenuSubTrigger>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### asChild
26
+ - **Type**: `boolean`
27
+ - **Required**: No
28
+ - **Description**: Merges props with child element instead of rendering wrapper
29
+
30
+ ### disabled
31
+ - **Type**: `boolean`
32
+ - **Required**: No
33
+ - **Description**: Prevents interaction and sub-menu opening
34
+
35
+ ### textValue
36
+ - **Type**: `string`
37
+ - **Required**: No
38
+ - **Description**: Custom text for typeahead navigation
39
+
40
+ ### inset
41
+ - **Type**: `boolean`
42
+ - **Required**: No
43
+ - **Description**: Whether to indent the trigger for proper visual alignment
44
+
45
+ ### className
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: No description available
49
+
50
+ ### children
51
+ - **Type**: `React.ReactNode`
52
+ - **Required**: Yes
53
+ - **Description**: Content of the trigger (text, icons, etc.)
54
+
55
+ ## Examples
56
+
57
+ ### Example 1
58
+ ```tsx
59
+ <ContextMenuSubTrigger>
60
+ <Share className="mr-2 h-4 w-4" />
61
+ Share Options
62
+ </ContextMenuSubTrigger>
63
+ ```
64
+ ### Example 2
65
+ ```tsx
66
+ // With inset alignment for icon consistency
67
+ <ContextMenuContent>
68
+ <ContextMenuItem inset>Regular Item</ContextMenuItem>
69
+ <ContextMenuSubTrigger inset>
70
+ More Actions
71
+ </ContextMenuSubTrigger>
72
+ </ContextMenuContent>
73
+ ```
@@ -0,0 +1,61 @@
1
+ # ContextMenuSub
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuSub - Container for sub-menu functionality Wraps a sub-menu trigger and its content to create nested menu structures. Enables hierarchical organization of menu items with proper state management for opening and closing sub-menus.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuSub } from '@neynar/ui';
11
+
12
+ <ContextMenuSub
13
+ open={true}
14
+ onOpenChange={handleOpenChange}
15
+ >
16
+ {/* Your content here */}
17
+ </ContextMenuSub>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### open
23
+ - **Type**: `boolean`
24
+ - **Required**: No
25
+ - **Description**: Controlled open state of the sub-menu
26
+
27
+ ### onOpenChange
28
+ - **Type**: `(open: boolean) => void`
29
+ - **Required**: No
30
+ - **Description**: Callback fired when sub-menu open state changes
31
+
32
+ ### children
33
+ - **Type**: `React.ReactNode`
34
+ - **Required**: Yes
35
+ - **Description**: Sub-menu trigger and content components
36
+
37
+ ## Examples
38
+
39
+ ### Example 1
40
+ ```tsx
41
+ <ContextMenuSub>
42
+ <ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
43
+ <ContextMenuSubContent>
44
+ <ContextMenuItem>Email</ContextMenuItem>
45
+ <ContextMenuItem>Copy Link</ContextMenuItem>
46
+ </ContextMenuSubContent>
47
+ </ContextMenuSub>
48
+ ```
49
+ ### Example 2
50
+ ```tsx
51
+ // Controlled sub-menu
52
+ const [subOpen, setSubOpen] = useState(false)
53
+ <ContextMenuSub open={subOpen} onOpenChange={setSubOpen}>
54
+ <ContextMenuSubTrigger>More Actions</ContextMenuSubTrigger>
55
+ <ContextMenuSubContent>
56
+ <ContextMenuItem onClick={() => setSubOpen(false)}>
57
+ Archive
58
+ </ContextMenuItem>
59
+ </ContextMenuSubContent>
60
+ </ContextMenuSub>
61
+ ```
@@ -0,0 +1,53 @@
1
+ # ContextMenuTrigger
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuTrigger - The element that triggers the context menu Wraps any element to make it respond to right-click or long-press events. The trigger element should provide visual feedback about its interactive nature. Uses the `asChild` pattern to merge props with child elements for composition.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuTrigger } from '@neynar/ui';
11
+
12
+ <ContextMenuTrigger
13
+ asChild={true}
14
+ disabled={true}
15
+ >
16
+ {/* Your content here */}
17
+ </ContextMenuTrigger>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### asChild
23
+ - **Type**: `boolean`
24
+ - **Required**: No
25
+ - **Description**: Merges props with child element instead of rendering wrapper
26
+
27
+ ### disabled
28
+ - **Type**: `boolean`
29
+ - **Required**: No
30
+ - **Description**: Prevents context menu from opening when trigger is activated
31
+
32
+ ### children
33
+ - **Type**: `React.ReactNode`
34
+ - **Required**: Yes
35
+ - **Description**: The element that should respond to right-click events
36
+
37
+ ## Examples
38
+
39
+ ### Example 1
40
+ ```tsx
41
+ <ContextMenuTrigger>
42
+ <Button variant="outline">Right-click me</Button>
43
+ </ContextMenuTrigger>
44
+ ```
45
+ ### Example 2
46
+ ```tsx
47
+ // With asChild for direct prop merging
48
+ <ContextMenuTrigger asChild>
49
+ <div className="p-4 border rounded cursor-pointer">
50
+ Right-click target area
51
+ </div>
52
+ </ContextMenuTrigger>
53
+ ```
@@ -0,0 +1,103 @@
1
+ # ContextMenu
2
+
3
+ **Type**: component
4
+
5
+ ContextMenu - A contextual menu that appears on right-click or long-press Context menus provide contextual actions for specific elements or areas. Built on Radix UI primitives, they appear when users right-click (or long-press on touch devices) and offer actions relevant to the clicked item or region.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenu } from '@neynar/ui';
11
+
12
+ <ContextMenu
13
+ dir={value}
14
+ onOpenChange={handleOpenChange}
15
+ modal={true}
16
+ >
17
+ {/* Your content here */}
18
+ </ContextMenu>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### dir
24
+ - **Type**: `"ltr" | "rtl"`
25
+ - **Required**: No
26
+ - **Description**: No description available
27
+
28
+ ### onOpenChange
29
+ - **Type**: `(open: boolean) => void`
30
+ - **Required**: No
31
+ - **Description**: No description available
32
+
33
+ ### modal
34
+ - **Type**: `boolean`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### children
39
+ - **Type**: `React.ReactNode`
40
+ - **Required**: No
41
+ - **Description**: No description available
42
+
43
+ ## Examples
44
+
45
+ ### Example 1
46
+ ```tsx
47
+ // Basic context menu with items
48
+ <ContextMenu>
49
+ <ContextMenuTrigger>
50
+ <div className="border rounded p-4">
51
+ Right-click here
52
+ </div>
53
+ </ContextMenuTrigger>
54
+ <ContextMenuContent>
55
+ <ContextMenuItem>Copy</ContextMenuItem>
56
+ <ContextMenuItem>Paste</ContextMenuItem>
57
+ <ContextMenuSeparator />
58
+ <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
59
+ </ContextMenuContent>
60
+ </ContextMenu>
61
+ ```
62
+ ### Example 2
63
+ ```tsx
64
+ // With sub-menus and shortcuts
65
+ <ContextMenu>
66
+ <ContextMenuTrigger>Right-click me</ContextMenuTrigger>
67
+ <ContextMenuContent>
68
+ <ContextMenuItem>
69
+ Edit <ContextMenuShortcut>⌘E</ContextMenuShortcut>
70
+ </ContextMenuItem>
71
+ <ContextMenuSub>
72
+ <ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
73
+ <ContextMenuSubContent>
74
+ <ContextMenuItem>Email</ContextMenuItem>
75
+ <ContextMenuItem>Copy Link</ContextMenuItem>
76
+ </ContextMenuSubContent>
77
+ </ContextMenuSub>
78
+ </ContextMenuContent>
79
+ </ContextMenu>
80
+ ```
81
+ ### Example 3
82
+ ```tsx
83
+ // With checkboxes and radio groups
84
+ <ContextMenu>
85
+ <ContextMenuTrigger>Settings Menu</ContextMenuTrigger>
86
+ <ContextMenuContent>
87
+ <ContextMenuLabel>Preferences</ContextMenuLabel>
88
+ <ContextMenuSeparator />
89
+ <ContextMenuCheckboxItem checked={showToolbar} onCheckedChange={setShowToolbar}>
90
+ Show Toolbar
91
+ </ContextMenuCheckboxItem>
92
+ <ContextMenuCheckboxItem checked={showSidebar} onCheckedChange={setShowSidebar}>
93
+ Show Sidebar
94
+ </ContextMenuCheckboxItem>
95
+ <ContextMenuSeparator />
96
+ <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
97
+ <ContextMenuRadioItem value="light">Light Theme</ContextMenuRadioItem>
98
+ <ContextMenuRadioItem value="dark">Dark Theme</ContextMenuRadioItem>
99
+ <ContextMenuRadioItem value="system">System Theme</ContextMenuRadioItem>
100
+ </ContextMenuRadioGroup>
101
+ </ContextMenuContent>
102
+ </ContextMenu>
103
+ ```