@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,115 @@
1
+ # Item
2
+
3
+ **Type**: component
4
+
5
+ Item - Flexible container for displaying structured content A composable component for creating rich list items, cards, and data displays. Built with a slot-based architecture allowing flexible combinations of media, content, actions, headers, and footers. Supports rendering as any HTML element via the asChild prop for semantic flexibility (e.g., links, buttons).
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Item } from '@neynar/ui';
11
+
12
+ <Item
13
+ variant={value}
14
+ size={value}
15
+ asChild={true}
16
+ className="value"
17
+ >
18
+ {/* Your content here */}
19
+ </Item>
20
+ ```
21
+
22
+ ## Component Props
23
+
24
+ ### variant
25
+ - **Type**: `"default" | "outline" | "muted"`
26
+ - **Required**: No
27
+ - **Description**: No description available
28
+
29
+ ### size
30
+ - **Type**: `"default" | "sm"`
31
+ - **Required**: No
32
+ - **Description**: No description available
33
+
34
+ ### asChild
35
+ - **Type**: `boolean`
36
+ - **Required**: No
37
+ - **Description**: No description available
38
+
39
+ ### className
40
+ - **Type**: `string`
41
+ - **Required**: No
42
+ - **Description**: No description available
43
+
44
+ ### children
45
+ - **Type**: `React.ReactNode`
46
+ - **Required**: No
47
+ - **Description**: No description available
48
+
49
+ ## Examples
50
+
51
+ ### Example 1
52
+ ```tsx
53
+ // Basic item with icon and content
54
+ <Item>
55
+ <ItemMedia variant="icon">
56
+ <FileText />
57
+ </ItemMedia>
58
+ <ItemContent>
59
+ <ItemTitle>Document.pdf</ItemTitle>
60
+ <ItemDescription>Last modified today</ItemDescription>
61
+ </ItemContent>
62
+ </Item>
63
+ ```
64
+ ### Example 2
65
+ ```tsx
66
+ // Item as a clickable link with asChild
67
+ <Item asChild>
68
+ <a href="/dashboard">
69
+ <ItemMedia variant="icon">
70
+ <Home />
71
+ </ItemMedia>
72
+ <ItemContent>
73
+ <ItemTitle>Dashboard</ItemTitle>
74
+ <ItemDescription>View your account overview</ItemDescription>
75
+ </ItemContent>
76
+ <ItemActions>
77
+ <ChevronRight />
78
+ </ItemActions>
79
+ </a>
80
+ </Item>
81
+ ```
82
+ ### Example 3
83
+ ```tsx
84
+ // Rich item with header, footer, and actions
85
+ <Item variant="outline">
86
+ <ItemMedia variant="image">
87
+ <img src="/avatar.jpg" alt="User" />
88
+ </ItemMedia>
89
+ <ItemContent>
90
+ <ItemHeader>
91
+ <ItemTitle>John Doe</ItemTitle>
92
+ <Badge>Pro</Badge>
93
+ </ItemHeader>
94
+ <ItemDescription>Product Manager</ItemDescription>
95
+ <ItemFooter>
96
+ <span className="text-xs">Last active 5m ago</span>
97
+ </ItemFooter>
98
+ </ItemContent>
99
+ <ItemActions>
100
+ <Button size="sm">Message</Button>
101
+ </ItemActions>
102
+ </Item>
103
+ ```
104
+ ### Example 4
105
+ ```tsx
106
+ // Small size variant for compact layouts
107
+ <Item size="sm">
108
+ <ItemContent>
109
+ <ItemTitle>Settings</ItemTitle>
110
+ </ItemContent>
111
+ <ItemActions>
112
+ <ChevronRight className="size-4" />
113
+ </ItemActions>
114
+ </Item>
115
+ ```
@@ -0,0 +1,71 @@
1
+ # KbdGroup
2
+
3
+ **Type**: component
4
+
5
+ KbdGroup - Group multiple keyboard keys together A container component for grouping multiple Kbd components to represent complex keyboard shortcuts or key combinations. Automatically handles spacing between individual keys and provides semantic grouping. Useful for displaying shortcuts like "Ctrl+Shift+P" or "Cmd+K".
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { KbdGroup } from '@neynar/ui';
11
+
12
+ <KbdGroup
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </KbdGroup>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: No description available
25
+
26
+ ### children
27
+ - **Type**: `React.ReactNode`
28
+ - **Required**: No
29
+ - **Description**: No description available
30
+
31
+ ## Examples
32
+
33
+ ### Example 1
34
+ ```tsx
35
+ // Basic keyboard shortcut
36
+ <KbdGroup>
37
+ <Kbd>Ctrl</Kbd>
38
+ <Kbd>C</Kbd>
39
+ </KbdGroup>
40
+ ```
41
+ ### Example 2
42
+ ```tsx
43
+ // Multiple modifier keys
44
+ <KbdGroup>
45
+ <Kbd>⌘</Kbd>
46
+ <Kbd>⇧</Kbd>
47
+ <Kbd>P</Kbd>
48
+ </KbdGroup>
49
+ ```
50
+ ### Example 3
51
+ ```tsx
52
+ // With custom separators using text
53
+ <KbdGroup>
54
+ <Kbd>Ctrl</Kbd>
55
+ <span className="text-muted-foreground">+</span>
56
+ <Kbd>Alt</Kbd>
57
+ <span className="text-muted-foreground">+</span>
58
+ <Kbd>Delete</Kbd>
59
+ </KbdGroup>
60
+ ```
61
+ ### Example 4
62
+ ```tsx
63
+ // In a command palette or menu item
64
+ <div className="flex items-center justify-between">
65
+ <span>Open command palette</span>
66
+ <KbdGroup>
67
+ <Kbd>⌘</Kbd>
68
+ <Kbd>K</Kbd>
69
+ </KbdGroup>
70
+ </div>
71
+ ```
@@ -0,0 +1,71 @@
1
+ # Kbd
2
+
3
+ **Type**: component
4
+
5
+ Kbd - Display keyboard input and shortcuts A semantic component for representing keyboard keys, shortcuts, and input in documentation, tutorials, and UI instructions. Uses the HTML kbd element with consistent styling for monospace text, subtle background, and appropriate sizing. Supports icons, text, and modifier keys like Cmd, Shift, Ctrl, and Alt.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Kbd } from '@neynar/ui';
11
+
12
+ <Kbd
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </Kbd>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: No description available
25
+
26
+ ### children
27
+ - **Type**: `React.ReactNode`
28
+ - **Required**: No
29
+ - **Description**: No description available
30
+
31
+ ## Examples
32
+
33
+ ### Example 1
34
+ ```tsx
35
+ // Display a single keyboard key
36
+ <Kbd>K</Kbd>
37
+ ```
38
+ ### Example 2
39
+ ```tsx
40
+ // Display keyboard shortcuts with modifiers
41
+ <KbdGroup>
42
+ <Kbd>⌘</Kbd>
43
+ <Kbd>K</Kbd>
44
+ </KbdGroup>
45
+ ```
46
+ ### Example 3
47
+ ```tsx
48
+ // Display keyboard shortcuts in help text
49
+ <p>
50
+ Press <Kbd>Ctrl</Kbd> + <Kbd>S</Kbd> to save your work
51
+ </p>
52
+ ```
53
+ ### Example 4
54
+ ```tsx
55
+ // Complex keyboard shortcut with multiple modifiers
56
+ <KbdGroup>
57
+ <Kbd>Ctrl</Kbd>
58
+ <Kbd>Shift</Kbd>
59
+ <Kbd>P</Kbd>
60
+ </KbdGroup>
61
+ ```
62
+ ### Example 5
63
+ ```tsx
64
+ // Display keyboard shortcuts with icons
65
+ <KbdGroup>
66
+ <Kbd>
67
+ <Command className="h-3 w-3" />
68
+ </Kbd>
69
+ <Kbd>K</Kbd>
70
+ </KbdGroup>
71
+ ```
@@ -0,0 +1,145 @@
1
+ # Label
2
+
3
+ **Type**: component
4
+
5
+ Label component for form controls with full accessibility support A fundamental form component that provides accessible text labels for form controls. Built on Radix UI Label primitive, it automatically associates with form elements and expands their clickable area for improved usability and accessibility. Essential for creating accessible forms that meet WCAG guidelines.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Label } from '@neynar/ui';
11
+
12
+ <Label
13
+ className="value"
14
+ htmlFor="value"
15
+ asChild={true}
16
+ onClick={handleClick}
17
+ onKeyDown={handleKeyDown}
18
+ id="value"
19
+ style={value}
20
+ tabIndex={0}
21
+ "aria-label"="value"
22
+ "aria-describedby"="value"
23
+ "aria-invalid"={true}
24
+ "aria-required"={true}
25
+ >
26
+ {/* Your content here */}
27
+ </Label>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### className
33
+ - **Type**: `string`
34
+ - **Required**: No
35
+ - **Description**: No description available
36
+
37
+ ### htmlFor
38
+ - **Type**: `string`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### children
43
+ - **Type**: `React.ReactNode`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### asChild
48
+ - **Type**: `boolean`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### onClick
53
+ - **Type**: `React.MouseEventHandler<HTMLLabelElement>`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### onKeyDown
58
+ - **Type**: `React.KeyboardEventHandler<HTMLLabelElement>`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### id
63
+ - **Type**: `string`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### style
68
+ - **Type**: `React.CSSProperties`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### tabIndex
73
+ - **Type**: `number`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### "aria-label"
78
+ - **Type**: `string`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### "aria-describedby"
83
+ - **Type**: `string`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### "aria-invalid"
88
+ - **Type**: `boolean`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### "aria-required"
93
+ - **Type**: `boolean`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ## Examples
98
+
99
+ ### Example 1
100
+ ```tsx
101
+ // Basic label with input
102
+ <div className="space-y-2">
103
+ <Label htmlFor="email">Email address</Label>
104
+ <Input id="email" type="email" placeholder="Enter your email" />
105
+ </div>
106
+ ```
107
+ ### Example 2
108
+ ```tsx
109
+ // Required field with indicator
110
+ <Label htmlFor="username">
111
+ Username <span className="text-destructive">*</span>
112
+ </Label>
113
+ <Input id="username" required />
114
+ ```
115
+ ### Example 3
116
+ ```tsx
117
+ // Checkbox with label
118
+ <div className="flex items-center space-x-2">
119
+ <Checkbox id="terms" />
120
+ <Label htmlFor="terms" className="text-sm font-normal">
121
+ I agree to the terms and conditions
122
+ </Label>
123
+ </div>
124
+ ```
125
+ ### Example 4
126
+ ```tsx
127
+ // Label with helper text
128
+ <div className="space-y-1">
129
+ <Label htmlFor="password">Password</Label>
130
+ <Input id="password" type="password" />
131
+ <p className="text-sm text-muted-foreground">
132
+ Must be at least 8 characters long
133
+ </p>
134
+ </div>
135
+ ```
136
+ ### Example 5
137
+ ```tsx
138
+ // Complex label with nested content
139
+ <Label htmlFor="plan" className="flex flex-col space-y-1 cursor-pointer">
140
+ <span className="font-semibold">Choose your plan</span>
141
+ <span className="text-sm text-muted-foreground">
142
+ You can upgrade or downgrade anytime
143
+ </span>
144
+ </Label>
145
+ ```
@@ -0,0 +1,66 @@
1
+ # MenubarCheckboxItem
2
+
3
+ **Type**: component
4
+
5
+ A menu item that can be checked/unchecked. Perfect for toggle options like "Show Toolbar", "Enable Feature", or any binary setting that can be turned on/off. Displays a checkmark icon when checked.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarCheckboxItem } from '@neynar/ui';
11
+
12
+ <MenubarCheckboxItem
13
+ className="value"
14
+ checked={value}
15
+ onCheckedChange={handleCheckedChange}
16
+ disabled={true}
17
+ onSelect={handleSelect}
18
+ textValue="value"
19
+ >
20
+ {/* Your content here */}
21
+ </MenubarCheckboxItem>
22
+ ```
23
+
24
+ ## Component Props
25
+
26
+ ### className
27
+ - **Type**: `string`
28
+ - **Required**: No
29
+ - **Description**: Additional CSS classes to apply to the checkbox item
30
+
31
+ ### checked
32
+ - **Type**: `boolean | "indeterminate"`
33
+ - **Required**: No
34
+ - **Description**: The controlled checked state of the item. Must be used in conjunction with onCheckedChange
35
+
36
+ ### onCheckedChange
37
+ - **Type**: `(checked: boolean) => void`
38
+ - **Required**: No
39
+ - **Description**: Event handler called when the checked state changes
40
+
41
+ ### disabled
42
+ - **Type**: `boolean`
43
+ - **Required**: No
44
+ - **Description**: When true, prevents the user from interacting with the item
45
+
46
+ ### onSelect
47
+ - **Type**: `(event: Event) => void`
48
+ - **Required**: No
49
+ - **Description**: Event handler called when the user selects an item (via mouse or keyboard)
50
+
51
+ ### textValue
52
+ - **Type**: `string`
53
+ - **Required**: No
54
+ - **Description**: Optional text used for typeahead purposes when content is complex
55
+
56
+ ## Examples
57
+
58
+ ```tsx
59
+ <MenubarCheckboxItem
60
+ checked={showLineNumbers}
61
+ onCheckedChange={setShowLineNumbers}
62
+ >
63
+ Show Line Numbers
64
+ </MenubarCheckboxItem>
65
+ ```
66
+ /
@@ -0,0 +1,128 @@
1
+ # MenubarContent
2
+
3
+ **Type**: component
4
+
5
+ Dropdown content container for menu items. Contains the actual menu items, separators, and submenus that appear when a MenubarTrigger is activated. Automatically portaled and positioned.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { MenubarContent } from '@neynar/ui';
11
+
12
+ <MenubarContent
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 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
+ <MenubarContent align="center" sideOffset={12}>
122
+ <MenubarItem>New File</MenubarItem>
123
+ <MenubarItem>Open File</MenubarItem>
124
+ <MenubarSeparator />
125
+ <MenubarItem>Exit</MenubarItem>
126
+ </MenubarContent>
127
+ ```
128
+ /
@@ -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
+ /