@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,101 @@
1
+ # ToggleGroup
2
+
3
+ **Type**: component
4
+
5
+ Toggle Group - A group of toggle buttons with single or multiple selection ToggleGroup provides a way to group related toggle buttons together, allowing users to select from a set of mutually exclusive options (single selection) or independent options (multiple selection). Built on Radix UI Toggle Group primitive with enhanced styling through CVA variants and full accessibility support including keyboard navigation. The component supports both controlled and uncontrolled usage patterns, with automatic focus management and roving tabindex behavior. Visual variants are inherited by all child items but can be overridden per item if needed.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ToggleGroup } from '@neynar/ui';
11
+
12
+ <ToggleGroup
13
+ className="value"
14
+ type={value}
15
+ variant={value}
16
+ size={value}
17
+ defaultValue={[]}
18
+ value={[]}
19
+ onValueChange={handleValueChange}
20
+ disabled={true}
21
+ rovingFocus={true}
22
+ orientation={value}
23
+ dir={value}
24
+ loop={true}
25
+ asChild={true}
26
+ >
27
+ {/* Your content here */}
28
+ </ToggleGroup>
29
+ ```
30
+
31
+ ## Component Props
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### type
39
+ - **Type**: `"single" | "multiple"`
40
+ - **Required**: Yes
41
+ - **Description**: No description available
42
+
43
+ ### variant
44
+ - **Type**: `"default" | "outline"`
45
+ - **Required**: No
46
+ - **Description**: No description available
47
+
48
+ ### size
49
+ - **Type**: `"sm" | "default" | "lg"`
50
+ - **Required**: No
51
+ - **Description**: No description available
52
+
53
+ ### defaultValue
54
+ - **Type**: `string | string[]`
55
+ - **Required**: No
56
+ - **Description**: No description available
57
+
58
+ ### value
59
+ - **Type**: `string | string[]`
60
+ - **Required**: No
61
+ - **Description**: No description available
62
+
63
+ ### onValueChange
64
+ - **Type**: `(value: string | string[]) => void`
65
+ - **Required**: No
66
+ - **Description**: No description available
67
+
68
+ ### disabled
69
+ - **Type**: `boolean`
70
+ - **Required**: No
71
+ - **Description**: No description available
72
+
73
+ ### rovingFocus
74
+ - **Type**: `boolean`
75
+ - **Required**: No
76
+ - **Description**: No description available
77
+
78
+ ### orientation
79
+ - **Type**: `"horizontal" | "vertical"`
80
+ - **Required**: No
81
+ - **Description**: No description available
82
+
83
+ ### dir
84
+ - **Type**: `"ltr" | "rtl"`
85
+ - **Required**: No
86
+ - **Description**: No description available
87
+
88
+ ### loop
89
+ - **Type**: `boolean`
90
+ - **Required**: No
91
+ - **Description**: No description available
92
+
93
+ ### asChild
94
+ - **Type**: `boolean`
95
+ - **Required**: No
96
+ - **Description**: No description available
97
+
98
+ ### children
99
+ - **Type**: `React.ReactNode`
100
+ - **Required**: No
101
+ - **Description**: No description available
@@ -0,0 +1,40 @@
1
+ # Toggle
2
+
3
+ **Type**: component
4
+
5
+ A two-state button that can be either on or off The Toggle component provides an accessible button with on/off state functionality. Built on Radix UI Toggle primitives with customizable variants and sizes. Perfect for text formatting controls, feature toggles, and any binary state controls. Automatically manages ARIA attributes and provides keyboard navigation.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Toggle } from '@neynar/ui';
11
+
12
+ <Toggle
13
+ className={value}
14
+ variant={value}
15
+ size={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
+ ### variant
28
+ - **Type**: `unknown`
29
+ - **Required**: Yes
30
+ - **Description**: No description available
31
+
32
+ ### size
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
@@ -0,0 +1,185 @@
1
+ # TooltipContent
2
+
3
+ **Type**: component
4
+
5
+ TooltipContent - The floating tooltip content container Contains the content displayed in the tooltip popup. Automatically positioned relative to the trigger element with intelligent collision detection to ensure the tooltip stays within the viewport. Includes smooth animations and an arrow pointer for visual connection to the trigger. The content component handles complex positioning logic, including collision detection, viewport boundaries, and responsive positioning. It supports rich content including text, images, and interactive elements while maintaining accessibility standards.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { TooltipContent } from '@neynar/ui';
11
+
12
+ <TooltipContent
13
+ asChild={true}
14
+ "aria-label"="value"
15
+ onEscapeKeyDown={handleEscapeKeyDown}
16
+ onPointerDownOutside={handlePointerDownOutside}
17
+ forceMount={true}
18
+ side={value}
19
+ sideOffset={0}
20
+ align={value}
21
+ alignOffset={0}
22
+ avoidCollisions={true}
23
+ collisionBoundary={[]}
24
+ collisionPadding={value}
25
+ arrowPadding={0}
26
+ sticky={value}
27
+ hideWhenDetached={true}
28
+ className="value"
29
+ >
30
+ {/* Your content here */}
31
+ </TooltipContent>
32
+ ```
33
+
34
+ ## Component Props
35
+
36
+ ### asChild
37
+ - **Type**: `boolean`
38
+ - **Required**: No
39
+ - **Description**: No description available
40
+
41
+ ### "aria-label"
42
+ - **Type**: `string`
43
+ - **Required**: No
44
+ - **Description**: No description available
45
+
46
+ ### onEscapeKeyDown
47
+ - **Type**: `(event: KeyboardEvent) => void`
48
+ - **Required**: No
49
+ - **Description**: No description available
50
+
51
+ ### onPointerDownOutside
52
+ - **Type**: `(event: PointerEvent) => void`
53
+ - **Required**: No
54
+ - **Description**: No description available
55
+
56
+ ### forceMount
57
+ - **Type**: `boolean`
58
+ - **Required**: No
59
+ - **Description**: No description available
60
+
61
+ ### side
62
+ - **Type**: `"top" | "right" | "bottom" | "left"`
63
+ - **Required**: No
64
+ - **Description**: No description available
65
+
66
+ ### sideOffset
67
+ - **Type**: `number`
68
+ - **Required**: No
69
+ - **Description**: No description available
70
+
71
+ ### align
72
+ - **Type**: `"start" | "center" | "end"`
73
+ - **Required**: No
74
+ - **Description**: No description available
75
+
76
+ ### alignOffset
77
+ - **Type**: `number`
78
+ - **Required**: No
79
+ - **Description**: No description available
80
+
81
+ ### avoidCollisions
82
+ - **Type**: `boolean`
83
+ - **Required**: No
84
+ - **Description**: No description available
85
+
86
+ ### collisionBoundary
87
+ - **Type**: `Element | Element[]`
88
+ - **Required**: No
89
+ - **Description**: No description available
90
+
91
+ ### collisionPadding
92
+ - **Type**: `| number
93
+ | { top?: number; right?: number; bottom?: number; left?: number }`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ### arrowPadding
98
+ - **Type**: `number`
99
+ - **Required**: No
100
+ - **Description**: No description available
101
+
102
+ ### sticky
103
+ - **Type**: `"partial" | "always"`
104
+ - **Required**: No
105
+ - **Description**: No description available
106
+
107
+ ### hideWhenDetached
108
+ - **Type**: `boolean`
109
+ - **Required**: No
110
+ - **Description**: No description available
111
+
112
+ ### className
113
+ - **Type**: `string`
114
+ - **Required**: No
115
+ - **Description**: No description available
116
+
117
+ ### children
118
+ - **Type**: `React.ReactNode`
119
+ - **Required**: No
120
+ - **Description**: No description available
121
+
122
+ ## Examples
123
+
124
+ ### Example 1
125
+ ```tsx
126
+ // Simple text tooltip
127
+ <TooltipContent>
128
+ <p>This is helpful information</p>
129
+ </TooltipContent>
130
+ ```
131
+ ### Example 2
132
+ ```tsx
133
+ // Positioned tooltip with custom offset
134
+ <TooltipContent
135
+ side="left"
136
+ sideOffset={12}
137
+ align="start"
138
+ alignOffset={-4}
139
+ >
140
+ <p>Precisely positioned tooltip</p>
141
+ </TooltipContent>
142
+ ```
143
+ ### Example 3
144
+ ```tsx
145
+ // Rich content with custom styling
146
+ <TooltipContent className="max-w-[320px] p-4">
147
+ <div className="space-y-2">
148
+ <div className="flex items-center gap-2">
149
+ <InfoIcon className="h-4 w-4 text-blue-500" />
150
+ <p className="font-semibold">Pro Feature</p>
151
+ </div>
152
+ <p className="text-sm text-gray-600">
153
+ This feature is available in Pro plans. Upgrade to unlock
154
+ advanced functionality and premium support.
155
+ </p>
156
+ <Button size="sm" className="mt-2">Upgrade Now</Button>
157
+ </div>
158
+ </TooltipContent>
159
+ ```
160
+ ### Example 4
161
+ ```tsx
162
+ // Tooltip with collision boundary
163
+ <TooltipContent
164
+ collisionPadding={{ top: 10, bottom: 10 }}
165
+ hideWhenDetached
166
+ sticky="always"
167
+ >
168
+ <p>Stays within safe boundaries</p>
169
+ </TooltipContent>
170
+ ```
171
+ ### Example 5
172
+ ```tsx
173
+ // Controlled tooltip with escape handling
174
+ <TooltipContent
175
+ onEscapeKeyDown={(e) => {
176
+ console.log('Tooltip dismissed with Escape');
177
+ // Custom handling if needed
178
+ }}
179
+ onPointerDownOutside={(e) => {
180
+ console.log('Clicked outside tooltip');
181
+ }}
182
+ >
183
+ <p>Interactive tooltip with event handlers</p>
184
+ </TooltipContent>
185
+ ```
@@ -0,0 +1,68 @@
1
+ # TooltipProvider
2
+
3
+ **Type**: component
4
+
5
+ TooltipProvider - Global context provider for tooltip functionality Wraps your application or component tree to enable tooltip functionality. Controls global tooltip behavior such as delay duration before showing tooltips. Required for tooltip components to function properly across your app. The provider manages global settings that affect all tooltips within its tree, including timing behavior and accessibility features. Individual tooltips can override these settings as needed.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { TooltipProvider } from '@neynar/ui';
11
+
12
+ <TooltipProvider
13
+ delayDuration={0}
14
+ skipDelayDuration={0}
15
+ disableHoverableContent={true}
16
+ >
17
+ {/* Your content here */}
18
+ </TooltipProvider>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### delayDuration
24
+ - **Type**: `number`
25
+ - **Required**: No
26
+ - **Description**: No description available
27
+
28
+ ### skipDelayDuration
29
+ - **Type**: `number`
30
+ - **Required**: No
31
+ - **Description**: No description available
32
+
33
+ ### disableHoverableContent
34
+ - **Type**: `boolean`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### children
39
+ - **Type**: `React.ReactNode`
40
+ - **Required**: No
41
+ - **Description**: No description available
42
+
43
+ ## Examples
44
+
45
+ ### Example 1
46
+ ```tsx
47
+ // Wrap your entire app
48
+ <TooltipProvider>
49
+ <App />
50
+ </TooltipProvider>
51
+ ```
52
+ ### Example 2
53
+ ```tsx
54
+ // With custom delay and skip behavior
55
+ <TooltipProvider
56
+ delayDuration={500}
57
+ skipDelayDuration={200}
58
+ >
59
+ <MyComponent />
60
+ </TooltipProvider>
61
+ ```
62
+ ### Example 3
63
+ ```tsx
64
+ // Disable hoverable content for stricter accessibility
65
+ <TooltipProvider disableHoverableContent>
66
+ <Form />
67
+ </TooltipProvider>
68
+ ```
@@ -0,0 +1,70 @@
1
+ # TooltipTrigger
2
+
3
+ **Type**: component
4
+
5
+ TooltipTrigger - The element that triggers the tooltip display Wraps the element that will show the tooltip on hover or focus. Use the `asChild` prop to merge props with the child element rather than rendering an additional wrapper element. Essential for maintaining semantic meaning and avoiding unnecessary DOM nesting. The trigger automatically handles all interaction events including mouse hover, touch interactions, keyboard focus, and blur events. It preserves the original element's accessibility properties while adding tooltip functionality.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { TooltipTrigger } from '@neynar/ui';
11
+
12
+ <TooltipTrigger
13
+ asChild={true}
14
+ >
15
+ {/* Your content here */}
16
+ </TooltipTrigger>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### asChild
22
+ - **Type**: `boolean`
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 trigger with button
36
+ <TooltipTrigger asChild>
37
+ <Button>Hover me</Button>
38
+ </TooltipTrigger>
39
+ ```
40
+ ### Example 2
41
+ ```tsx
42
+ // With icon button
43
+ <TooltipTrigger asChild>
44
+ <Button variant="ghost" size="icon">
45
+ <Settings className="h-4 w-4" />
46
+ </Button>
47
+ </TooltipTrigger>
48
+ ```
49
+ ### Example 3
50
+ ```tsx
51
+ // With disabled element (requires wrapper for pointer events)
52
+ <TooltipTrigger asChild>
53
+ <span className="inline-block cursor-not-allowed">
54
+ <Button disabled>Disabled Action</Button>
55
+ </span>
56
+ </TooltipTrigger>
57
+ ```
58
+ ### Example 4
59
+ ```tsx
60
+ // With custom element
61
+ <TooltipTrigger asChild>
62
+ <div
63
+ role="button"
64
+ tabIndex={0}
65
+ className="cursor-pointer p-2 rounded hover:bg-gray-100"
66
+ >
67
+ Custom trigger element
68
+ </div>
69
+ </TooltipTrigger>
70
+ ```
@@ -0,0 +1,129 @@
1
+ # Tooltip
2
+
3
+ **Type**: component
4
+
5
+ Tooltip - Display contextual information on hover or focus A versatile tooltip component built on Radix UI primitives that provides contextual information when users hover over or focus on an element. Perfect for displaying help text, definitions, or additional context without cluttering the interface. Automatically wraps content in a TooltipProvider for convenience. The tooltip supports both controlled and uncontrolled usage patterns, with intelligent positioning, collision detection, and smooth animations. Built with accessibility as a priority, including proper ARIA attributes and keyboard navigation support.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Tooltip } from '@neynar/ui';
11
+
12
+ <Tooltip
13
+ defaultOpen={true}
14
+ open={true}
15
+ onOpenChange={handleOpenChange}
16
+ delayDuration={0}
17
+ disableHoverableContent={true}
18
+ >
19
+ {/* Your content here */}
20
+ </Tooltip>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### defaultOpen
26
+ - **Type**: `boolean`
27
+ - **Required**: No
28
+ - **Description**: No description available
29
+
30
+ ### open
31
+ - **Type**: `boolean`
32
+ - **Required**: No
33
+ - **Description**: No description available
34
+
35
+ ### onOpenChange
36
+ - **Type**: `(open: boolean) => void`
37
+ - **Required**: No
38
+ - **Description**: No description available
39
+
40
+ ### delayDuration
41
+ - **Type**: `number`
42
+ - **Required**: No
43
+ - **Description**: No description available
44
+
45
+ ### disableHoverableContent
46
+ - **Type**: `boolean`
47
+ - **Required**: No
48
+ - **Description**: No description available
49
+
50
+ ### children
51
+ - **Type**: `React.ReactNode`
52
+ - **Required**: No
53
+ - **Description**: No description available
54
+
55
+ ## Examples
56
+
57
+ ### Example 1
58
+ ```tsx
59
+ // Basic tooltip
60
+ <Tooltip>
61
+ <TooltipTrigger asChild>
62
+ <Button variant="outline">Hover me</Button>
63
+ </TooltipTrigger>
64
+ <TooltipContent>
65
+ <p>This is a helpful tooltip</p>
66
+ </TooltipContent>
67
+ </Tooltip>
68
+ ```
69
+ ### Example 2
70
+ ```tsx
71
+ // Icon button with tooltip
72
+ import { Info } from "lucide-react"
73
+ <Tooltip>
74
+ <TooltipTrigger asChild>
75
+ <Button variant="ghost" size="icon">
76
+ <Info className="h-4 w-4" />
77
+ </Button>
78
+ </TooltipTrigger>
79
+ <TooltipContent>
80
+ <p>Additional information</p>
81
+ </TooltipContent>
82
+ </Tooltip>
83
+ ```
84
+ ### Example 3
85
+ ```tsx
86
+ // Controlled tooltip with custom delay
87
+ const [open, setOpen] = useState(false)
88
+ <Tooltip
89
+ open={open}
90
+ onOpenChange={setOpen}
91
+ delayDuration={300}
92
+ >
93
+ <TooltipTrigger asChild>
94
+ <Button onClick={() => setOpen(!open)}>Toggle</Button>
95
+ </TooltipTrigger>
96
+ <TooltipContent>
97
+ <p>Controlled tooltip state</p>
98
+ </TooltipContent>
99
+ </Tooltip>
100
+ ```
101
+ ### Example 4
102
+ ```tsx
103
+ // Disabled element with tooltip (requires wrapper)
104
+ <Tooltip>
105
+ <TooltipTrigger asChild>
106
+ <span className="inline-block">
107
+ <Button disabled>Disabled Action</Button>
108
+ </span>
109
+ </TooltipTrigger>
110
+ <TooltipContent>
111
+ <p>You need to complete setup first</p>
112
+ </TooltipContent>
113
+ </Tooltip>
114
+ ```
115
+ ### Example 5
116
+ ```tsx
117
+ // Positioned tooltip with rich content
118
+ <Tooltip>
119
+ <TooltipTrigger asChild>
120
+ <Badge variant="secondary">API Key</Badge>
121
+ </TooltipTrigger>
122
+ <TooltipContent side="right" className="max-w-[250px]">
123
+ <div className="space-y-1">
124
+ <p className="font-medium">API Authentication</p>
125
+ <p className="text-xs">Your key is used to authenticate requests</p>
126
+ </div>
127
+ </TooltipContent>
128
+ </Tooltip>
129
+ ```
@@ -0,0 +1,55 @@
1
+ # useCarousel
2
+
3
+ **Type**: hook
4
+
5
+ Hook to access carousel context and controls Must be used within a Carousel component. Provides access to the carousel API and navigation methods for building custom carousel interactions.
6
+
7
+ ## API Surface
8
+
9
+ ```typescript
10
+ import { useCarousel } from '@neynar/ui';
11
+
12
+ export function useCarousel(): ReturnType<typeof useCarousel> { ... }
13
+ ```
14
+
15
+ ## Returns
16
+
17
+ **Return Type**: `ReturnType<typeof useCarousel>`
18
+
19
+
20
+ **Description**: Carousel context containing API, navigation controls, and state
21
+ ## Usage
22
+
23
+ ```typescript
24
+ import { useCarousel } from '@neynar/ui';
25
+
26
+ const result = useCarousel();
27
+ ```
28
+
29
+ ## Examples
30
+
31
+ ```tsx
32
+ function CarouselDots() {
33
+ const { api, scrollNext, canScrollNext } = useCarousel();
34
+ const [current, setCurrent] = useState(0);
35
+ useEffect(() => {
36
+ if (!api) return;
37
+ setCurrent(api.selectedScrollSnap());
38
+ api.on('select', () => setCurrent(api.selectedScrollSnap()));
39
+ }, [api]);
40
+ return (
41
+ <div className="flex gap-2">
42
+ {Array.from({ length: 5 }).map((_, i) => (
43
+ <button
44
+ key={i}
45
+ className={current === i ? "active" : ""}
46
+ onClick={() => api?.scrollTo(i)}
47
+ />
48
+ ))}
49
+ </div>
50
+ );
51
+ }
52
+ ```
53
+ ## Throws
54
+
55
+ - Error when used outside of Carousel component
@@ -0,0 +1,32 @@
1
+ # useCmdk
2
+
3
+ **Type**: hook
4
+
5
+ Run a selector against the store state.
6
+
7
+ ## API Surface
8
+
9
+ ```typescript
10
+ import { useCmdk } from '@neynar/ui';
11
+
12
+ export function useCmdk(selector: (state: State) => T): T { ... }
13
+ ```
14
+
15
+ ## Parameters
16
+
17
+ ### selector
18
+ - **Type**: `(state: State) => T`
19
+ - **Required**: Yes
20
+ - **Description**: No description available
21
+ ## Returns
22
+
23
+ **Return Type**: `T`
24
+
25
+
26
+ ## Usage
27
+
28
+ ```typescript
29
+ import { useCmdk } from '@neynar/ui';
30
+
31
+ const result = useCmdk(() => {});
32
+ ```