@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,53 @@
1
+ # ButtonGroupSeparator
2
+
3
+ **Type**: component
4
+
5
+ ButtonGroupSeparator - Visual divider for buttons within a button group A specialized separator component that creates visual divisions between buttons or elements within a ButtonGroup. Built on the Separator primitive with automatic sizing and styling to match button group layouts. The separator orientation typically matches the button group orientation (vertical separators in horizontal groups, horizontal separators in vertical groups). Key behaviors: - Self-stretches to match parent height/width automatically - Uses input border color for subtle visual division - Removes margins for seamless integration - Decorative by default (hidden from screen readers) Note: Separators are typically unnecessary for outline variant buttons since they already have visible borders. Use separators with ghost, default, or other variants where the visual separation is needed.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ButtonGroupSeparator } from '@neynar/ui';
11
+
12
+ <ButtonGroupSeparator
13
+ orientation={value}
14
+ className="value"
15
+ decorative={true}
16
+ />
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### orientation
22
+ - **Type**: `"horizontal" | "vertical"`
23
+ - **Required**: No
24
+ - **Description**: No description available
25
+
26
+ ### className
27
+ - **Type**: `string`
28
+ - **Required**: No
29
+ - **Description**: No description available
30
+
31
+ ### decorative
32
+ - **Type**: `boolean`
33
+ - **Required**: No
34
+ - **Description**: No description available
35
+
36
+ ## Examples
37
+
38
+ ### Example 1
39
+ ```tsx
40
+ // Horizontal button group with vertical separators
41
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
42
+ ### Example 2
43
+ ```tsx
44
+ // Vertical button group with horizontal separators
45
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
46
+ ### Example 3
47
+ ```tsx
48
+ // Separating button group sections in toolbar
49
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
50
+ ### Example 4
51
+ ```tsx
52
+ // Separator with custom height for specific layouts
53
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
@@ -0,0 +1,56 @@
1
+ # ButtonGroupText
2
+
3
+ **Type**: component
4
+
5
+ ButtonGroupText - Text display element for labels and information within button groups A styled text container designed to display non-interactive content within button groups, such as labels, pagination information, or contextual text. Maintains visual consistency with grouped buttons through matching height, border, and styling while being clearly non-interactive with a muted background. Common use cases: - Pagination counters ("Page 1 of 10") - Section labels ("Actions:", "Tools:") - Status indicators or counts - Contextual information between action buttons The component automatically: - Matches button group styling with appropriate borders and spacing - Sizes icons consistently at 16px (size-4) - Maintains visual hierarchy with muted background - Prevents pointer events on icons to avoid interaction confusion
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ButtonGroupText } from '@neynar/ui';
11
+
12
+ <ButtonGroupText
13
+ asChild={true}
14
+ className="value"
15
+ >
16
+ {/* Your content here */}
17
+ </ButtonGroupText>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### asChild
23
+ - **Type**: `boolean`
24
+ - **Required**: No
25
+ - **Description**: No description available
26
+
27
+ ### className
28
+ - **Type**: `string`
29
+ - **Required**: No
30
+ - **Description**: No description available
31
+
32
+ ### children
33
+ - **Type**: `React.ReactNode`
34
+ - **Required**: No
35
+ - **Description**: No description available
36
+
37
+ ## Examples
38
+
39
+ ### Example 1
40
+ ```tsx
41
+ // Pagination with page count display
42
+ import { Button, ButtonGroup, ButtonGroupText } from "
43
+ ### Example 2
44
+ ```tsx
45
+ // Section label with action buttons
46
+ import { Copy, Download } from "lucide-react"
47
+ import { Button, ButtonGroup, ButtonGroupText, ButtonGroupSeparator } from "
48
+ ### Example 3
49
+ ```tsx
50
+ // Status indicator with icon
51
+ import { CheckCircle2 } from "lucide-react"
52
+ import { ButtonGroup, ButtonGroupText } from "
53
+ ### Example 4
54
+ ```tsx
55
+ // Custom composition with asChild
56
+ import { ButtonGroup, ButtonGroupText } from "
@@ -0,0 +1,81 @@
1
+ # ButtonGroup
2
+
3
+ **Type**: component
4
+
5
+ ButtonGroup - Container for grouping related buttons with consistent styling A flexible container component that groups related action buttons together with seamless visual connection. Built for toolbars, pagination controls, action menus, and navigation interfaces. Supports both horizontal and vertical layouts with intelligent border and border-radius management to create cohesive button groups. The component automatically handles: - Border collapsing between adjacent buttons for seamless appearance - Focus state z-index management to ensure proper focus ring visibility - Integration with Button, Input, and Select components - Nested button group support for complex layouts - Responsive sizing that adapts to button content
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ButtonGroup } from '@neynar/ui';
11
+
12
+ <ButtonGroup
13
+ orientation={value}
14
+ className="value"
15
+ "aria-label"="value"
16
+ "aria-labelledby"="value"
17
+ "aria-describedby"="value"
18
+ >
19
+ {/* Your content here */}
20
+ </ButtonGroup>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### orientation
26
+ - **Type**: `"horizontal" | "vertical"`
27
+ - **Required**: No
28
+ - **Description**: No description available
29
+
30
+ ### className
31
+ - **Type**: `string`
32
+ - **Required**: No
33
+ - **Description**: No description available
34
+
35
+ ### children
36
+ - **Type**: `React.ReactNode`
37
+ - **Required**: No
38
+ - **Description**: No description available
39
+
40
+ ### "aria-label"
41
+ - **Type**: `string`
42
+ - **Required**: No
43
+ - **Description**: No description available
44
+
45
+ ### "aria-labelledby"
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: No description available
49
+
50
+ ### "aria-describedby"
51
+ - **Type**: `string`
52
+ - **Required**: No
53
+ - **Description**: No description available
54
+
55
+ ## Examples
56
+
57
+ ### Example 1
58
+ ```tsx
59
+ // Basic horizontal button group (most common usage)
60
+ import { Button, ButtonGroup } from "
61
+ ### Example 2
62
+ ```tsx
63
+ // Vertical button group for navigation menus
64
+ import { Button, ButtonGroup } from "
65
+ ### Example 3
66
+ ```tsx
67
+ // Button group with icons and separators
68
+ import { Copy, Download, Share2 } from "lucide-react"
69
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
70
+ ### Example 4
71
+ ```tsx
72
+ // Pagination controls with text element
73
+ import { Button, ButtonGroup, ButtonGroupText } from "
74
+ ### Example 5
75
+ ```tsx
76
+ // Toolbar with multiple grouped sections
77
+ import { Button, ButtonGroup, ButtonGroupSeparator } from "
78
+ ### Example 6
79
+ ```tsx
80
+ // Different button sizes in groups
81
+ import { Button, ButtonGroup } from "
@@ -0,0 +1,281 @@
1
+ # Button
2
+
3
+ **Type**: component
4
+
5
+ Button - A versatile, accessible button component with multiple style variants A fundamental UI element built on Radix UI's Slot primitive that supports extensive customization through variants, composition patterns, and comprehensive accessibility features. The component automatically handles icon styling, focus management, form integration, and can be rendered as other elements using the asChild pattern.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Button } from '@neynar/ui';
11
+
12
+ <Button
13
+ variant={value}
14
+ size={value}
15
+ asChild={true}
16
+ className="value"
17
+ disabled={true}
18
+ type={value}
19
+ onClick={handleClick}
20
+ onFocus={handleFocus}
21
+ onBlur={handleBlur}
22
+ onMouseEnter={handleMouseEnter}
23
+ onMouseLeave={handleMouseLeave}
24
+ "aria-label"="value"
25
+ "aria-describedby"="value"
26
+ "aria-invalid"={value}
27
+ "aria-expanded"={value}
28
+ "aria-controls"="value"
29
+ "aria-pressed"={value}
30
+ tabIndex={0}
31
+ autoFocus={true}
32
+ form="value"
33
+ formAction={() => {}}
34
+ formEncType="value"
35
+ formMethod="value"
36
+ formNoValidate={true}
37
+ formTarget="value"
38
+ name="value"
39
+ value={value}
40
+ ref={value}
41
+ >
42
+ {/* Your content here */}
43
+ </Button>
44
+ ```
45
+
46
+ ## Component Props
47
+
48
+ ### variant
49
+ - **Type**: `| "default"
50
+ | "destructive"
51
+ | "outline"
52
+ | "secondary"
53
+ | "ghost"
54
+ | "link"`
55
+ - **Required**: No
56
+ - **Description**: No description available
57
+
58
+ ### size
59
+ - **Type**: `"default" | "sm" | "lg" | "icon"`
60
+ - **Required**: No
61
+ - **Description**: No description available
62
+
63
+ ### asChild
64
+ - **Type**: `boolean`
65
+ - **Required**: No
66
+ - **Description**: No description available
67
+
68
+ ### children
69
+ - **Type**: `React.ReactNode`
70
+ - **Required**: No
71
+ - **Description**: No description available
72
+
73
+ ### className
74
+ - **Type**: `string`
75
+ - **Required**: No
76
+ - **Description**: No description available
77
+
78
+ ### disabled
79
+ - **Type**: `boolean`
80
+ - **Required**: No
81
+ - **Description**: No description available
82
+
83
+ ### type
84
+ - **Type**: `"button" | "submit" | "reset"`
85
+ - **Required**: No
86
+ - **Description**: No description available
87
+
88
+ ### onClick
89
+ - **Type**: `React.MouseEventHandler<HTMLButtonElement>`
90
+ - **Required**: No
91
+ - **Description**: No description available
92
+
93
+ ### onFocus
94
+ - **Type**: `React.FocusEventHandler<HTMLButtonElement>`
95
+ - **Required**: No
96
+ - **Description**: No description available
97
+
98
+ ### onBlur
99
+ - **Type**: `React.FocusEventHandler<HTMLButtonElement>`
100
+ - **Required**: No
101
+ - **Description**: No description available
102
+
103
+ ### onMouseEnter
104
+ - **Type**: `React.MouseEventHandler<HTMLButtonElement>`
105
+ - **Required**: No
106
+ - **Description**: No description available
107
+
108
+ ### onMouseLeave
109
+ - **Type**: `React.MouseEventHandler<HTMLButtonElement>`
110
+ - **Required**: No
111
+ - **Description**: No description available
112
+
113
+ ### "aria-label"
114
+ - **Type**: `string`
115
+ - **Required**: No
116
+ - **Description**: No description available
117
+
118
+ ### "aria-describedby"
119
+ - **Type**: `string`
120
+ - **Required**: No
121
+ - **Description**: No description available
122
+
123
+ ### "aria-invalid"
124
+ - **Type**: `boolean | "false" | "true" | "grammar" | "spelling"`
125
+ - **Required**: No
126
+ - **Description**: No description available
127
+
128
+ ### "aria-expanded"
129
+ - **Type**: `React.AriaAttributes["aria-expanded"]`
130
+ - **Required**: No
131
+ - **Description**: No description available
132
+
133
+ ### "aria-controls"
134
+ - **Type**: `string`
135
+ - **Required**: No
136
+ - **Description**: No description available
137
+
138
+ ### "aria-pressed"
139
+ - **Type**: `boolean | "false" | "true" | "mixed"`
140
+ - **Required**: No
141
+ - **Description**: No description available
142
+
143
+ ### tabIndex
144
+ - **Type**: `number`
145
+ - **Required**: No
146
+ - **Description**: No description available
147
+
148
+ ### autoFocus
149
+ - **Type**: `boolean`
150
+ - **Required**: No
151
+ - **Description**: No description available
152
+
153
+ ### form
154
+ - **Type**: `string`
155
+ - **Required**: No
156
+ - **Description**: No description available
157
+
158
+ ### formAction
159
+ - **Type**: `string | ((formData: FormData) => void | Promise<void>)`
160
+ - **Required**: No
161
+ - **Description**: No description available
162
+
163
+ ### formEncType
164
+ - **Type**: `string`
165
+ - **Required**: No
166
+ - **Description**: No description available
167
+
168
+ ### formMethod
169
+ - **Type**: `string`
170
+ - **Required**: No
171
+ - **Description**: No description available
172
+
173
+ ### formNoValidate
174
+ - **Type**: `boolean`
175
+ - **Required**: No
176
+ - **Description**: No description available
177
+
178
+ ### formTarget
179
+ - **Type**: `string`
180
+ - **Required**: No
181
+ - **Description**: No description available
182
+
183
+ ### name
184
+ - **Type**: `string`
185
+ - **Required**: No
186
+ - **Description**: No description available
187
+
188
+ ### value
189
+ - **Type**: `string | ReadonlyArray<string> | number`
190
+ - **Required**: No
191
+ - **Description**: No description available
192
+
193
+ ### ref
194
+ - **Type**: `React.Ref<HTMLButtonElement>`
195
+ - **Required**: No
196
+ - **Description**: No description available
197
+
198
+ ## Examples
199
+
200
+ ### Example 1
201
+ ```tsx
202
+ // Basic usage with different variants
203
+ <Button>Default Button</Button>
204
+ <Button variant="destructive">Delete Item</Button>
205
+ <Button variant="outline" size="lg">Large Outline</Button>
206
+ <Button variant="ghost" size="sm">Small Ghost</Button>
207
+ <Button variant="link">Link Button</Button>
208
+ ```
209
+ ### Example 2
210
+ ```tsx
211
+ // Icon usage (automatically styled with proper spacing)
212
+ import { Download, ArrowRight, Plus, Trash2 } from "lucide-react";
213
+ <Button>
214
+ <Download className="mr-2" /> Download File
215
+ </Button>
216
+ <Button variant="outline">
217
+ Continue <ArrowRight className="ml-2" />
218
+ </Button>
219
+ // Icon-only button (always include aria-label)
220
+ <Button size="icon" aria-label="Add new item">
221
+ <Plus />
222
+ </Button>
223
+ <Button size="icon" variant="destructive" aria-label="Delete item">
224
+ <Trash2 />
225
+ </Button>
226
+ ```
227
+ ### Example 3
228
+ ```tsx
229
+ // Composition with asChild (render as different elements)
230
+ import Link from "next/link";
231
+ import { ExternalLink } from "lucide-react";
232
+ <Button asChild>
233
+ <Link href="/dashboard">Go to Dashboard</Link>
234
+ </Button>
235
+ <Button asChild variant="outline">
236
+ <a href="https://example.com" target="_blank" rel="noopener noreferrer">
237
+ External Link <ExternalLink className="ml-2 h-4 w-4" />
238
+ </a>
239
+ </Button>
240
+ ```
241
+ ### Example 4
242
+ ```tsx
243
+ // Form integration and states
244
+ <Button type="submit" disabled={isSubmitting}>
245
+ {isSubmitting ? "Submitting..." : "Submit Form"}
246
+ </Button>
247
+ <Button
248
+ variant="destructive"
249
+ onClick={() => handleDelete()}
250
+ aria-describedby="delete-warning"
251
+ >
252
+ Delete Account
253
+ </Button>
254
+ <p id="delete-warning" className="sr-only">
255
+ This action cannot be undone
256
+ </p>
257
+ // Toggle button with pressed state
258
+ <Button
259
+ variant="outline"
260
+ aria-pressed={isToggled}
261
+ onClick={() => setIsToggled(!isToggled)}
262
+ >
263
+ {isToggled ? "Enabled" : "Disabled"}
264
+ </Button>
265
+ ```
266
+ ### Example 5
267
+ ```tsx
268
+ // Loading states and advanced usage
269
+ import { Loader2, Save } from "lucide-react";
270
+ <Button disabled={isLoading}>
271
+ {isLoading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
272
+ {isLoading ? "Saving..." : "Save Changes"}
273
+ </Button>
274
+ // With custom styling
275
+ <Button
276
+ className="bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600"
277
+ size="lg"
278
+ >
279
+ Gradient Button
280
+ </Button>
281
+ ```
@@ -0,0 +1,57 @@
1
+ # CalendarDayButton
2
+
3
+ **Type**: component
4
+
5
+ CalendarDayButton - Individual day button component for calendar dates Renders a single interactive day button with appropriate styling for different states including selected, today, disabled, and range selection indicators. This component is used internally by the Calendar component but can be customized if needed.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { CalendarDayButton } from '@neynar/ui';
11
+
12
+ <CalendarDayButton
13
+ className={value}
14
+ day={value}
15
+ modifiers={value}
16
+ ...props={value}
17
+ />
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### className
23
+ - **Type**: `unknown`
24
+ - **Required**: Yes
25
+ - **Description**: No description available
26
+
27
+ ### day
28
+ - **Type**: `unknown`
29
+ - **Required**: Yes
30
+ - **Description**: No description available
31
+
32
+ ### modifiers
33
+ - **Type**: `unknown`
34
+ - **Required**: Yes
35
+ - **Description**: No description available
36
+
37
+ ### ...props
38
+ - **Type**: `unknown`
39
+ - **Required**: Yes
40
+ - **Description**: No description available
41
+
42
+ ## Examples
43
+
44
+ ```tsx
45
+ // Used internally by Calendar component
46
+ <CalendarDayButton
47
+ day={dayObject}
48
+ modifiers={{
49
+ selected: true,
50
+ today: false,
51
+ disabled: false,
52
+ range_start: false,
53
+ range_end: false,
54
+ range_middle: false
55
+ }}
56
+ />
57
+ ```