@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,53 @@
1
+ # AlertDialogDescription
2
+
3
+ **Type**: component
4
+
5
+ Description text of the alert dialog Provides additional context and explanation for the alert or action. Should clearly explain the consequences of the action being confirmed. Automatically provides proper ARIA description via aria-describedby for screen readers. Can be omitted if aria-describedby is provided to Content.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogDescription } from '@neynar/ui';
11
+
12
+ <AlertDialogDescription
13
+ asChild={true}
14
+ className="value"
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### asChild
21
+ - **Type**: `boolean`
22
+ - **Required**: No
23
+ - **Description**: Render as child element, merging props and behavior
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: Additional CSS classes for custom styling
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ // Standard descriptions
34
+ <AlertDialogDescription>
35
+ This action cannot be undone. This will permanently delete your
36
+ account and remove your data from our servers.
37
+ </AlertDialogDescription>
38
+ <AlertDialogDescription>
39
+ You will be signed out of all devices and will need to sign in again
40
+ to access your account.
41
+ </AlertDialogDescription>
42
+ // Custom styling
43
+ <AlertDialogDescription className="text-center text-lg">
44
+ Are you sure you want to continue?
45
+ </AlertDialogDescription>
46
+ // Composition with custom element
47
+ <AlertDialogDescription asChild>
48
+ <p className="custom-description">
49
+ Custom description element
50
+ </p>
51
+ </AlertDialogDescription>
52
+ ```
53
+ /
@@ -0,0 +1,41 @@
1
+ # AlertDialogFooter
2
+
3
+ **Type**: component
4
+
5
+ Footer section of the alert dialog Contains the action buttons (cancel and confirm). Uses responsive layout with stacked buttons on mobile (cancel on top) and horizontal layout on larger screens (cancel on left, action on right). Should contain AlertDialogCancel and AlertDialogAction for proper UX.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogFooter } from '@neynar/ui';
11
+
12
+ <AlertDialogFooter
13
+ className="value"
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### className
20
+ - **Type**: `string`
21
+ - **Required**: No
22
+ - **Description**: Additional CSS classes for custom styling
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ <AlertDialogFooter>
28
+ <AlertDialogCancel>Cancel</AlertDialogCancel>
29
+ <AlertDialogAction>Delete Account</AlertDialogAction>
30
+ </AlertDialogFooter>
31
+ // Custom button order
32
+ <AlertDialogFooter className="flex-row">
33
+ <AlertDialogAction>Continue</AlertDialogAction>
34
+ <AlertDialogCancel>Go Back</AlertDialogCancel>
35
+ </AlertDialogFooter>
36
+ // Single action footer
37
+ <AlertDialogFooter>
38
+ <AlertDialogAction>I Understand</AlertDialogAction>
39
+ </AlertDialogFooter>
40
+ ```
41
+ /
@@ -0,0 +1,39 @@
1
+ # AlertDialogHeader
2
+
3
+ **Type**: component
4
+
5
+ Header section of the alert dialog Contains the title and description of the alert dialog. Provides consistent spacing and alignment, with responsive text alignment (centered on mobile, left-aligned on larger screens). Should contain AlertDialogTitle and optionally AlertDialogDescription for proper accessibility.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogHeader } from '@neynar/ui';
11
+
12
+ <AlertDialogHeader
13
+ className="value"
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### className
20
+ - **Type**: `string`
21
+ - **Required**: No
22
+ - **Description**: Additional CSS classes for custom styling
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ <AlertDialogHeader>
28
+ <AlertDialogTitle>Delete Account</AlertDialogTitle>
29
+ <AlertDialogDescription>
30
+ This will permanently delete your account and all associated data.
31
+ This action cannot be undone.
32
+ </AlertDialogDescription>
33
+ </AlertDialogHeader>
34
+ // Custom styling
35
+ <AlertDialogHeader className="text-left">
36
+ <AlertDialogTitle>Custom Header</AlertDialogTitle>
37
+ </AlertDialogHeader>
38
+ ```
39
+ /
@@ -0,0 +1,44 @@
1
+ # AlertDialogOverlay
2
+
3
+ **Type**: component
4
+
5
+ Overlay backdrop behind the alert dialog A semi-transparent backdrop that covers the entire viewport when the dialog is open. Provides visual separation and prevents interaction with background content. Includes smooth fade in/out animations and proper z-index stacking.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogOverlay } from '@neynar/ui';
11
+
12
+ <AlertDialogOverlay
13
+ asChild={true}
14
+ forceMount={true}
15
+ className="value"
16
+ />
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### asChild
22
+ - **Type**: `boolean`
23
+ - **Required**: No
24
+ - **Description**: Render as child element, merging props and behavior
25
+
26
+ ### forceMount
27
+ - **Type**: `boolean`
28
+ - **Required**: No
29
+ - **Description**: Force mount the component even when dialog is closed
30
+
31
+ ### className
32
+ - **Type**: `string`
33
+ - **Required**: No
34
+ - **Description**: Additional CSS classes for custom styling
35
+
36
+ ## Examples
37
+
38
+ ```tsx
39
+ // Custom overlay styling
40
+ <AlertDialogOverlay className="bg-black/80" />
41
+ // Force mounted overlay
42
+ <AlertDialogOverlay forceMount className="custom-backdrop" />
43
+ ```
44
+ /
@@ -0,0 +1,41 @@
1
+ # AlertDialogPortal
2
+
3
+ **Type**: component
4
+
5
+ Portal component for rendering dialog outside normal DOM tree Renders the alert dialog content into a portal, typically at the end of the document body. This ensures the dialog appears above other content and is properly accessible. Usually not used directly - AlertDialogContent includes this automatically.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogPortal } from '@neynar/ui';
11
+
12
+ <AlertDialogPortal
13
+ forceMount={true}
14
+ container={value}
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### forceMount
21
+ - **Type**: `boolean`
22
+ - **Required**: No
23
+ - **Description**: Force mount the component even when dialog is closed
24
+
25
+ ### container
26
+ - **Type**: `HTMLElement`
27
+ - **Required**: No
28
+ - **Description**: Container element to portal into (defaults to document.body)
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ // Custom portal container
34
+ <AlertDialogPortal container={customContainer}>
35
+ <AlertDialogOverlay />
36
+ <AlertDialogPrimitive.Content>
37
+ // content
38
+ </AlertDialogPrimitive.Content>
39
+ </AlertDialogPortal>
40
+ ```
41
+ /
@@ -0,0 +1,46 @@
1
+ # AlertDialogTitle
2
+
3
+ **Type**: component
4
+
5
+ Title heading of the alert dialog The main heading that describes the alert or action being confirmed. Automatically provides proper ARIA labeling for screen readers via aria-labelledby. Should be concise and clearly state what the dialog is asking.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogTitle } from '@neynar/ui';
11
+
12
+ <AlertDialogTitle
13
+ asChild={true}
14
+ className="value"
15
+ />
16
+ ```
17
+
18
+ ## Component Props
19
+
20
+ ### asChild
21
+ - **Type**: `boolean`
22
+ - **Required**: No
23
+ - **Description**: Render as child element, merging props and behavior
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: Additional CSS classes for custom styling
29
+
30
+ ## Examples
31
+
32
+ ```tsx
33
+ // Standard titles
34
+ <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
35
+ <AlertDialogTitle>Delete Account</AlertDialogTitle>
36
+ <AlertDialogTitle>Confirm Sign Out</AlertDialogTitle>
37
+ // Custom styling
38
+ <AlertDialogTitle className="text-red-600 text-xl">
39
+ Destructive Action
40
+ </AlertDialogTitle>
41
+ // Composition with custom element
42
+ <AlertDialogTitle asChild>
43
+ <h1 className="custom-title">Custom Title Element</h1>
44
+ </AlertDialogTitle>
45
+ ```
46
+ /
@@ -0,0 +1,40 @@
1
+ # AlertDialogTrigger
2
+
3
+ **Type**: component
4
+
5
+ Trigger element that opens the alert dialog The element that opens the alert dialog when activated. Usually a button, but can be any interactive element through composition. When opened, the dialog will trap focus and require user interaction before continuing.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialogTrigger } from '@neynar/ui';
11
+
12
+ <AlertDialogTrigger
13
+ asChild={true}
14
+ />
15
+ ```
16
+
17
+ ## Component Props
18
+
19
+ ### asChild
20
+ - **Type**: `boolean`
21
+ - **Required**: No
22
+ - **Description**: Render as child element, merging props and behavior
23
+
24
+ ## Examples
25
+
26
+ ```tsx
27
+ // Direct usage
28
+ <AlertDialogTrigger>
29
+ Delete Account
30
+ </AlertDialogTrigger>
31
+ // Composition with Button component
32
+ <AlertDialogTrigger asChild>
33
+ <Button variant="destructive">Delete Account</Button>
34
+ </AlertDialogTrigger>
35
+ // Composition with custom element
36
+ <AlertDialogTrigger asChild>
37
+ <button className="custom-trigger">Custom Trigger</button>
38
+ </AlertDialogTrigger>
39
+ ```
40
+ /
@@ -0,0 +1,80 @@
1
+ # AlertDialog
2
+
3
+ **Type**: component
4
+
5
+ Alert dialog component for critical confirmations and destructive actions A specialized modal dialog built on Radix UI Alert Dialog primitives that interrupts users with important information requiring immediate acknowledgment or decision. Unlike regular dialogs, alert dialogs cannot be dismissed by clicking outside and focus the action button by default for critical decisions. Based on the WAI-ARIA Alert Dialog design pattern, this component is specifically designed for destructive actions, confirmations, or critical warnings that need immediate attention before the user can continue.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertDialog } from '@neynar/ui';
11
+
12
+ <AlertDialog
13
+ defaultOpen={true}
14
+ open={true}
15
+ onOpenChange={handleOpenChange}
16
+ />
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### defaultOpen
22
+ - **Type**: `boolean`
23
+ - **Required**: No
24
+ - **Description**: No description available
25
+
26
+ ### open
27
+ - **Type**: `boolean`
28
+ - **Required**: No
29
+ - **Description**: No description available
30
+
31
+ ### onOpenChange
32
+ - **Type**: `(open: boolean) => void`
33
+ - **Required**: No
34
+ - **Description**: No description available
35
+
36
+ ## Examples
37
+
38
+ ### Example 1
39
+ ```tsx
40
+ // Basic destructive confirmation
41
+ <AlertDialog>
42
+ <AlertDialogTrigger asChild>
43
+ <Button variant="destructive">Delete Account</Button>
44
+ </AlertDialogTrigger>
45
+ <AlertDialogContent>
46
+ <AlertDialogHeader>
47
+ <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
48
+ <AlertDialogDescription>
49
+ This action cannot be undone. This will permanently delete
50
+ your account and remove your data from our servers.
51
+ </AlertDialogDescription>
52
+ </AlertDialogHeader>
53
+ <AlertDialogFooter>
54
+ <AlertDialogCancel>Cancel</AlertDialogCancel>
55
+ <AlertDialogAction>Delete Account</AlertDialogAction>
56
+ </AlertDialogFooter>
57
+ </AlertDialogContent>
58
+ </AlertDialog>
59
+ ```
60
+ ### Example 2
61
+ ```tsx
62
+ // Simple confirmation
63
+ <AlertDialog>
64
+ <AlertDialogTrigger asChild>
65
+ <Button variant="outline">Sign Out</Button>
66
+ </AlertDialogTrigger>
67
+ <AlertDialogContent>
68
+ <AlertDialogHeader>
69
+ <AlertDialogTitle>Sign Out</AlertDialogTitle>
70
+ <AlertDialogDescription>
71
+ Are you sure you want to sign out of your account?
72
+ </AlertDialogDescription>
73
+ </AlertDialogHeader>
74
+ <AlertDialogFooter>
75
+ <AlertDialogCancel>Cancel</AlertDialogCancel>
76
+ <AlertDialogAction>Sign Out</AlertDialogAction>
77
+ </AlertDialogFooter>
78
+ </AlertDialogContent>
79
+ </AlertDialog>
80
+ ```
@@ -0,0 +1,48 @@
1
+ # AlertTitle
2
+
3
+ **Type**: component
4
+
5
+ AlertTitle - The title/heading component for alerts Provides a prominent title or heading for the alert message. Automatically styled with medium font weight, line clamping, and proper grid positioning. Used to give context and immediate recognition of the alert's purpose. ## Features - Medium font weight for visual hierarchy - Single line with overflow handling (line-clamp-1) - Consistent minimum height for layout stability - Proper grid positioning (col-start-2) for icon layout - Tight character spacing (tracking-tight) for readability
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AlertTitle } from '@neynar/ui';
11
+
12
+ <AlertTitle
13
+ className="value"
14
+ >
15
+ {/* Your content here */}
16
+ </AlertTitle>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### className
22
+ - **Type**: `string`
23
+ - **Required**: No
24
+ - **Description**: Additional CSS classes to apply
25
+
26
+ ### children
27
+ - **Type**: `React.ReactNode`
28
+ - **Required**: No
29
+ - **Description**: Title text content
30
+
31
+ ## Examples
32
+
33
+ ### Example 1
34
+ ```tsx
35
+ <Alert>
36
+ <Info className="size-4" />
37
+ <AlertTitle>Payment Successful</AlertTitle>
38
+ <AlertDescription>Your payment has been processed.</AlertDescription>
39
+ </Alert>
40
+ ```
41
+ ### Example 2
42
+ ```tsx
43
+ // Title-only alert (no description)
44
+ <Alert variant="destructive">
45
+ <AlertCircle className="size-4" />
46
+ <AlertTitle>Connection Failed</AlertTitle>
47
+ </Alert>
48
+ ```
@@ -0,0 +1,92 @@
1
+ # Alert
2
+
3
+ **Type**: component
4
+
5
+ Alert - Display important messages and notifications to users A flexible alert component for displaying important messages, notifications, and status updates. Built with shadcn/ui design patterns and Tailwind CSS. Alerts are used to communicate critical information that requires user attention and potentially action. ## When to use - System-wide notifications and announcements - Form validation errors and success messages - Important warnings that need persistent visibility - Status updates that don't require immediate action - Progress indicators and completion messages ## Features - Two built-in variants: `default` and `destructive` - Automatic icon grid layout with proper spacing using CSS Grid - Semantic HTML with proper ARIA attributes (`role="alert"`) - Responsive design with consistent spacing - Dark mode support via CSS custom properties - Composition pattern with AlertTitle and AlertDescription - Support for custom styling through className prop - Icon-aware layout that adapts to presence of SVG icons ## Design Philosophy Follows the shadcn/ui principle of providing unstyled, accessible components that can be easily customized. The alert uses CSS Grid for intelligent layout that automatically adjusts based on whether an icon is present.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Alert } from '@neynar/ui';
11
+
12
+ <Alert
13
+ variant={value}
14
+ className="value"
15
+ >
16
+ {/* Your content here */}
17
+ </Alert>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### variant
23
+ - **Type**: `"default" | "destructive"`
24
+ - **Required**: No
25
+ - **Description**: Visual style variant determining colors and emphasis
26
+
27
+ ### className
28
+ - **Type**: `string`
29
+ - **Required**: No
30
+ - **Description**: Additional CSS classes to merge with default styles
31
+
32
+ ### children
33
+ - **Type**: `React.ReactNode`
34
+ - **Required**: No
35
+ - **Description**: Alert content including optional icon, title, and description
36
+
37
+ ## Examples
38
+
39
+ ### Example 1
40
+ ```tsx
41
+ // Basic informational alert
42
+ <Alert>
43
+ <Info className="size-4" />
44
+ <AlertTitle>Heads up!</AlertTitle>
45
+ <AlertDescription>
46
+ You can add components to your app using the cli.
47
+ </AlertDescription>
48
+ </Alert>
49
+ ```
50
+ ### Example 2
51
+ ```tsx
52
+ // Destructive error alert
53
+ import { AlertCircle } from "lucide-react";
54
+ <Alert variant="destructive">
55
+ <AlertCircle className="size-4" />
56
+ <AlertTitle>Error</AlertTitle>
57
+ <AlertDescription>
58
+ Your session has expired. Please log in again.
59
+ </AlertDescription>
60
+ </Alert>
61
+ ```
62
+ ### Example 3
63
+ ```tsx
64
+ // Custom styled success alert
65
+ <Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-200">
66
+ <CheckCircle className="size-4" />
67
+ <AlertTitle>Success</AlertTitle>
68
+ <AlertDescription>
69
+ Your changes have been saved successfully.
70
+ </AlertDescription>
71
+ </Alert>
72
+ ```
73
+ ### Example 4
74
+ ```tsx
75
+ // Alert without icon
76
+ <Alert>
77
+ <AlertTitle>Simple Notice</AlertTitle>
78
+ <AlertDescription>
79
+ This alert doesn't use an icon.
80
+ </AlertDescription>
81
+ </Alert>
82
+ ```
83
+ ### Example 5
84
+ ```tsx
85
+ // Alert with only description
86
+ <Alert variant="destructive">
87
+ <AlertCircle className="size-4" />
88
+ <AlertDescription>
89
+ Something went wrong. Please try again.
90
+ </AlertDescription>
91
+ </Alert>
92
+ ```
@@ -0,0 +1,41 @@
1
+ # AspectRatio
2
+
3
+ **Type**: component
4
+
5
+ AspectRatio - Maintains consistent width-to-height ratios for content A foundational layout component that preserves specific aspect ratios regardless of container size. Essential for responsive images, videos, and media content that needs consistent proportions across different screen sizes. Built on Radix UI primitives with zero JavaScript runtime overhead. This component creates a CSS-based aspect ratio container using the modern `aspect-ratio` property, ensuring content maintains its intended proportions without layout shifts or JavaScript calculations. The component acts as a constraint wrapper that forces its children to maintain the specified ratio.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AspectRatio } from '@neynar/ui';
11
+
12
+ <AspectRatio
13
+ ratio={0}
14
+ className="value"
15
+ asChild={true}
16
+ >
17
+ {/* Your content here */}
18
+ </AspectRatio>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### ratio
24
+ - **Type**: `number`
25
+ - **Required**: No
26
+ - **Description**: The desired aspect ratio as width/height (e.g., 16/9, 4/3, 1)
27
+
28
+ ### children
29
+ - **Type**: `React.ReactNode`
30
+ - **Required**: No
31
+ - **Description**: Content to be constrained within the aspect ratio
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: Additional CSS classes for styling
37
+
38
+ ### asChild
39
+ - **Type**: `boolean`
40
+ - **Required**: No
41
+ - **Description**: Merge props with child element instead of wrapping
@@ -0,0 +1,41 @@
1
+ # AvatarFallback
2
+
3
+ **Type**: component
4
+
5
+ AvatarFallback - Fallback content displayed when the avatar image is unavailable This component renders alternative content when the AvatarImage is loading, fails to load, or is not provided. It's built on Radix UI's Avatar.Fallback primitive and provides a visually appealing placeholder that maintains the avatar's design consistency. ## When AvatarFallback is Shown The fallback is automatically displayed in these scenarios: - **Image loading**: While the AvatarImage is being loaded - **Image error**: When the AvatarImage fails to load (broken URL, network error) - **No image**: When no AvatarImage component is provided - **Empty src**: When AvatarImage has no src prop or empty src ## Common Use Cases - **User initials**: Most common pattern (2-3 characters) - **Generic icons**: User, person, or company icons - **Brand initials**: For organization avatars - **Loading states**: With animations or loading indicators - **Placeholder content**: For new or anonymous users - **Custom graphics**: SVG icons or other visual elements ## Design Considerations - Uses muted background color for subtle appearance - Automatically centers content both horizontally and vertically - Inherits size and border radius from parent Avatar - Should complement the overall design system - Supports delay to prevent flash during fast image loads
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AvatarFallback } from '@neynar/ui';
11
+
12
+ <AvatarFallback
13
+ className="value"
14
+ delayMs={0}
15
+ asChild={true}
16
+ >
17
+ {/* Your content here */}
18
+ </AvatarFallback>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### children
24
+ - **Type**: `React.ReactNode`
25
+ - **Required**: No
26
+ - **Description**: The fallback content to display. Common patterns include user initials (2-3 characters), icons, or loading indicators
27
+
28
+ ### className
29
+ - **Type**: `string`
30
+ - **Required**: No
31
+ - **Description**: Additional CSS classes. Use for custom background colors, text styling, or animations
32
+
33
+ ### delayMs
34
+ - **Type**: `number`
35
+ - **Required**: No
36
+ - **Description**: Optional delay in milliseconds before showing the fallback. Useful for delaying rendering so it only appears for those with slower connections
37
+
38
+ ### asChild
39
+ - **Type**: `boolean`
40
+ - **Required**: No
41
+ - **Description**: Change the default rendered element for the one passed as a child, merging their props and behavior
@@ -0,0 +1,48 @@
1
+ # AvatarImage
2
+
3
+ **Type**: component
4
+
5
+ AvatarImage - The image element component for displaying avatar pictures This component renders the actual avatar image and automatically handles loading states. It's built on Radix UI's Avatar.Image primitive which provides robust image loading behavior - when the image fails to load or is still loading, it remains hidden and the AvatarFallback will be displayed instead. ## Key Features - **Automatic loading state management**: Handles "idle", "loading", "loaded", and "error" states - **Graceful error handling**: Automatically falls back when images fail to load - **Proper aspect ratio maintenance**: Square aspect ratio maintained by default - **Flexible rendering**: Supports asChild for custom element composition - **Loading status callbacks**: Provides onLoadingStatusChange for custom loading logic - **Accessible implementation**: Proper alt text handling and ARIA support ## Loading States The component automatically manages these states: - **idle**: Initial state before loading begins - **loading**: Image is currently being loaded - **loaded**: Image has loaded successfully and is displayed - **error**: Image failed to load, fallback will be shown
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { AvatarImage } from '@neynar/ui';
11
+
12
+ <AvatarImage
13
+ src="value"
14
+ alt="value"
15
+ className="value"
16
+ onLoadingStatusChange={handleLoadingStatusChange}
17
+ asChild={true}
18
+ />
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### src
24
+ - **Type**: `string`
25
+ - **Required**: No
26
+ - **Description**: The URL of the image to display. Can be relative or absolute URL. When src changes, loading will restart
27
+
28
+ ### alt
29
+ - **Type**: `string`
30
+ - **Required**: No
31
+ - **Description**: Descriptive alternative text for the image. Should describe the person or entity, not just "avatar" or "profile picture"
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: Additional CSS classes to apply to the image element. Applied to the img element or asChild component
37
+
38
+ ### onLoadingStatusChange
39
+ - **Type**: `(
40
+ status: "idle" | "loading" | "loaded" | "error",
41
+ ) => void`
42
+ - **Required**: No
43
+ - **Description**: Optional callback fired when the loading status changes. Receives status: "idle" | "loading" | "loaded" | "error"
44
+
45
+ ### asChild
46
+ - **Type**: `boolean`
47
+ - **Required**: No
48
+ - **Description**: Change the default rendered element for the one passed as a child, merging their props and behavior