@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,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,114 @@
1
+ # Lead
2
+
3
+ **Type**: component
4
+
5
+ Lead - Introductory paragraph component for article openings Lead paragraph for article introductions, page descriptions, and summary content. Uses "subheading" variant with muted color for visual hierarchy.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Lead } from '@neynar/ui';
11
+
12
+ <Lead
13
+ color={value}
14
+ align={value}
15
+ transform={value}
16
+ weight={value}
17
+ htmlFor="value"
18
+ asChild={true}
19
+ italic={true}
20
+ underline={true}
21
+ strikethrough={true}
22
+ truncate={true}
23
+ srOnly={true}
24
+ className="value"
25
+ >
26
+ {/* Your content here */}
27
+ </Lead>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### color
33
+ - **Type**: `TypographyColor`
34
+ - **Required**: No
35
+ - **Description**: No description available
36
+
37
+ ### align
38
+ - **Type**: `"left" | "center" | "right" | "justify"`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### transform
43
+ - **Type**: `"uppercase" | "lowercase" | "capitalize"`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### weight
48
+ - **Type**: `"normal" | "medium" | "semibold" | "bold"`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### htmlFor
53
+ - **Type**: `string`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### asChild
58
+ - **Type**: `boolean`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### italic
63
+ - **Type**: `boolean`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### underline
68
+ - **Type**: `boolean`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### strikethrough
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### truncate
78
+ - **Type**: `boolean`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### srOnly
83
+ - **Type**: `boolean`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### className
88
+ - **Type**: `string`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### children
93
+ - **Type**: `React.ReactNode`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ## Examples
98
+
99
+ ```tsx
100
+ // Article introduction
101
+ <Lead>
102
+ This comprehensive guide covers everything you need to know about
103
+ building modern web applications with React and TypeScript.
104
+ </Lead>
105
+ // Page description
106
+ <Lead className="mb-8">
107
+ Discover powerful APIs and tools to build the next generation
108
+ of social applications on Farcaster.
109
+ </Lead>
110
+ // With custom color
111
+ <Lead color="default">
112
+ This lead paragraph uses the default text color for more prominence.
113
+ </Lead>
114
+ ```
@@ -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
+ /