@neynar/ui 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/.llm/accordion-content.llm.md +67 -0
  2. package/.llm/accordion-item.llm.md +61 -0
  3. package/.llm/accordion-trigger.llm.md +69 -0
  4. package/.llm/accordion.llm.md +88 -0
  5. package/.llm/alert-description.llm.md +78 -0
  6. package/.llm/alert-dialog-action.llm.md +51 -0
  7. package/.llm/alert-dialog-cancel.llm.md +48 -0
  8. package/.llm/alert-dialog-content.llm.md +88 -0
  9. package/.llm/alert-dialog-description.llm.md +53 -0
  10. package/.llm/alert-dialog-footer.llm.md +41 -0
  11. package/.llm/alert-dialog-header.llm.md +39 -0
  12. package/.llm/alert-dialog-overlay.llm.md +44 -0
  13. package/.llm/alert-dialog-portal.llm.md +41 -0
  14. package/.llm/alert-dialog-title.llm.md +46 -0
  15. package/.llm/alert-dialog-trigger.llm.md +40 -0
  16. package/.llm/alert-dialog.llm.md +80 -0
  17. package/.llm/alert-title.llm.md +48 -0
  18. package/.llm/alert.llm.md +92 -0
  19. package/.llm/aspect-ratio.llm.md +41 -0
  20. package/.llm/avatar-fallback.llm.md +41 -0
  21. package/.llm/avatar-image.llm.md +48 -0
  22. package/.llm/avatar.llm.md +35 -0
  23. package/.llm/badge.llm.md +117 -0
  24. package/.llm/blockquote.llm.md +55 -0
  25. package/.llm/body-text-large.llm.md +49 -0
  26. package/.llm/body-text-small.llm.md +49 -0
  27. package/.llm/body-text.llm.md +52 -0
  28. package/.llm/breadcrumb-ellipsis.llm.md +73 -0
  29. package/.llm/breadcrumb-item.llm.md +53 -0
  30. package/.llm/breadcrumb-link.llm.md +84 -0
  31. package/.llm/breadcrumb-list.llm.md +54 -0
  32. package/.llm/breadcrumb-page.llm.md +52 -0
  33. package/.llm/breadcrumb-separator.llm.md +60 -0
  34. package/.llm/breadcrumb.llm.md +110 -0
  35. package/.llm/button-group-separator.llm.md +53 -0
  36. package/.llm/button-group-text.llm.md +56 -0
  37. package/.llm/button-group.llm.md +81 -0
  38. package/.llm/button.llm.md +281 -0
  39. package/.llm/calendar-day-button.llm.md +57 -0
  40. package/.llm/calendar.llm.md +340 -0
  41. package/.llm/caption.llm.md +48 -0
  42. package/.llm/card-action.llm.md +64 -0
  43. package/.llm/card-content.llm.md +48 -0
  44. package/.llm/card-description.llm.md +46 -0
  45. package/.llm/card-footer.llm.md +56 -0
  46. package/.llm/card-header.llm.md +53 -0
  47. package/.llm/card-title.llm.md +43 -0
  48. package/.llm/card.llm.md +100 -0
  49. package/.llm/carousel-content.llm.md +77 -0
  50. package/.llm/carousel-item.llm.md +96 -0
  51. package/.llm/carousel-next.llm.md +95 -0
  52. package/.llm/carousel-previous.llm.md +95 -0
  53. package/.llm/carousel.llm.md +211 -0
  54. package/.llm/chart-config.llm.md +71 -0
  55. package/.llm/chart-container.llm.md +148 -0
  56. package/.llm/chart-legend-content.llm.md +85 -0
  57. package/.llm/chart-legend.llm.md +144 -0
  58. package/.llm/chart-style.llm.md +28 -0
  59. package/.llm/chart-tooltip-content.llm.md +149 -0
  60. package/.llm/chart-tooltip.llm.md +184 -0
  61. package/.llm/checkbox.llm.md +100 -0
  62. package/.llm/cn.llm.md +46 -0
  63. package/.llm/code.llm.md +45 -0
  64. package/.llm/collapsible-content.llm.md +109 -0
  65. package/.llm/collapsible-trigger.llm.md +75 -0
  66. package/.llm/collapsible.llm.md +109 -0
  67. package/.llm/combobox-option.llm.md +53 -0
  68. package/.llm/combobox.llm.md +208 -0
  69. package/.llm/command-dialog.llm.md +112 -0
  70. package/.llm/command-empty.llm.md +63 -0
  71. package/.llm/command-group.llm.md +83 -0
  72. package/.llm/command-input.llm.md +82 -0
  73. package/.llm/command-item.llm.md +97 -0
  74. package/.llm/command-list.llm.md +53 -0
  75. package/.llm/command-loading.llm.md +48 -0
  76. package/.llm/command-separator.llm.md +44 -0
  77. package/.llm/command-shortcut.llm.md +63 -0
  78. package/.llm/command.llm.md +147 -0
  79. package/.llm/container.llm.md +236 -0
  80. package/.llm/context-menu-checkbox-item.llm.md +97 -0
  81. package/.llm/context-menu-content.llm.md +91 -0
  82. package/.llm/context-menu-group.llm.md +61 -0
  83. package/.llm/context-menu-item.llm.md +94 -0
  84. package/.llm/context-menu-label.llm.md +60 -0
  85. package/.llm/context-menu-portal.llm.md +49 -0
  86. package/.llm/context-menu-radio-group.llm.md +66 -0
  87. package/.llm/context-menu-radio-item.llm.md +76 -0
  88. package/.llm/context-menu-separator.llm.md +51 -0
  89. package/.llm/context-menu-shortcut.llm.md +57 -0
  90. package/.llm/context-menu-sub-content.llm.md +90 -0
  91. package/.llm/context-menu-sub-trigger.llm.md +73 -0
  92. package/.llm/context-menu-sub.llm.md +61 -0
  93. package/.llm/context-menu-trigger.llm.md +53 -0
  94. package/.llm/context-menu.llm.md +103 -0
  95. package/.llm/date-picker.llm.md +90 -0
  96. package/.llm/dialog-close.llm.md +61 -0
  97. package/.llm/dialog-content.llm.md +128 -0
  98. package/.llm/dialog-description.llm.md +44 -0
  99. package/.llm/dialog-footer.llm.md +38 -0
  100. package/.llm/dialog-header.llm.md +40 -0
  101. package/.llm/dialog-overlay.llm.md +57 -0
  102. package/.llm/dialog-portal.llm.md +47 -0
  103. package/.llm/dialog-title.llm.md +41 -0
  104. package/.llm/dialog-trigger.llm.md +51 -0
  105. package/.llm/dialog.llm.md +113 -0
  106. package/.llm/drawer-close.llm.md +53 -0
  107. package/.llm/drawer-content.llm.md +58 -0
  108. package/.llm/drawer-description.llm.md +54 -0
  109. package/.llm/drawer-footer.llm.md +67 -0
  110. package/.llm/drawer-header.llm.md +60 -0
  111. package/.llm/drawer-overlay.llm.md +40 -0
  112. package/.llm/drawer-portal.llm.md +42 -0
  113. package/.llm/drawer-title.llm.md +51 -0
  114. package/.llm/drawer-trigger.llm.md +44 -0
  115. package/.llm/drawer.llm.md +194 -0
  116. package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
  117. package/.llm/dropdown-menu-content.llm.md +109 -0
  118. package/.llm/dropdown-menu-group.llm.md +38 -0
  119. package/.llm/dropdown-menu-item.llm.md +94 -0
  120. package/.llm/dropdown-menu-label.llm.md +66 -0
  121. package/.llm/dropdown-menu-portal.llm.md +32 -0
  122. package/.llm/dropdown-menu-radio-group.llm.md +73 -0
  123. package/.llm/dropdown-menu-radio-item.llm.md +92 -0
  124. package/.llm/dropdown-menu-separator.llm.md +55 -0
  125. package/.llm/dropdown-menu-shortcut.llm.md +74 -0
  126. package/.llm/dropdown-menu-sub-content.llm.md +80 -0
  127. package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
  128. package/.llm/dropdown-menu-sub.llm.md +74 -0
  129. package/.llm/dropdown-menu-trigger.llm.md +48 -0
  130. package/.llm/dropdown-menu.llm.md +120 -0
  131. package/.llm/empty-content.llm.md +103 -0
  132. package/.llm/empty-description.llm.md +70 -0
  133. package/.llm/empty-header.llm.md +64 -0
  134. package/.llm/empty-media.llm.md +81 -0
  135. package/.llm/empty-state.llm.md +174 -0
  136. package/.llm/empty-title.llm.md +54 -0
  137. package/.llm/empty.llm.md +158 -0
  138. package/.llm/field-content.llm.md +28 -0
  139. package/.llm/field-description.llm.md +28 -0
  140. package/.llm/field-error.llm.md +41 -0
  141. package/.llm/field-group.llm.md +84 -0
  142. package/.llm/field-label.llm.md +28 -0
  143. package/.llm/field-legend.llm.md +77 -0
  144. package/.llm/field-separator.llm.md +35 -0
  145. package/.llm/field-set.llm.md +80 -0
  146. package/.llm/field-title.llm.md +28 -0
  147. package/.llm/field.llm.md +35 -0
  148. package/.llm/hover-card-content.llm.md +167 -0
  149. package/.llm/hover-card-trigger.llm.md +65 -0
  150. package/.llm/hover-card.llm.md +121 -0
  151. package/.llm/input-group-addon.llm.md +91 -0
  152. package/.llm/input-group-button.llm.md +120 -0
  153. package/.llm/input-group-input.llm.md +145 -0
  154. package/.llm/input-group-text.llm.md +75 -0
  155. package/.llm/input-group-textarea.llm.md +157 -0
  156. package/.llm/input-group.llm.md +108 -0
  157. package/.llm/input.llm.md +319 -0
  158. package/.llm/item-actions.llm.md +77 -0
  159. package/.llm/item-content.llm.md +73 -0
  160. package/.llm/item-description.llm.md +61 -0
  161. package/.llm/item-footer.llm.md +68 -0
  162. package/.llm/item-group.llm.md +73 -0
  163. package/.llm/item-header.llm.md +66 -0
  164. package/.llm/item-media.llm.md +75 -0
  165. package/.llm/item-separator.llm.md +80 -0
  166. package/.llm/item-title.llm.md +59 -0
  167. package/.llm/item.llm.md +115 -0
  168. package/.llm/kbd-group.llm.md +71 -0
  169. package/.llm/kbd.llm.md +71 -0
  170. package/.llm/label.llm.md +145 -0
  171. package/.llm/menubar-checkbox-item.llm.md +66 -0
  172. package/.llm/menubar-content.llm.md +128 -0
  173. package/.llm/menubar-group.llm.md +40 -0
  174. package/.llm/menubar-item.llm.md +62 -0
  175. package/.llm/menubar-label.llm.md +40 -0
  176. package/.llm/menubar-menu.llm.md +32 -0
  177. package/.llm/menubar-portal.llm.md +38 -0
  178. package/.llm/menubar-radio-group.llm.md +39 -0
  179. package/.llm/menubar-radio-item.llm.md +59 -0
  180. package/.llm/menubar-separator.llm.md +35 -0
  181. package/.llm/menubar-shortcut.llm.md +37 -0
  182. package/.llm/menubar-sub-content.llm.md +127 -0
  183. package/.llm/menubar-sub-trigger.llm.md +51 -0
  184. package/.llm/menubar-sub.llm.md +53 -0
  185. package/.llm/menubar-trigger.llm.md +37 -0
  186. package/.llm/menubar.llm.md +115 -0
  187. package/.llm/navigation-menu-content.llm.md +116 -0
  188. package/.llm/navigation-menu-indicator.llm.md +68 -0
  189. package/.llm/navigation-menu-item.llm.md +62 -0
  190. package/.llm/navigation-menu-link.llm.md +109 -0
  191. package/.llm/navigation-menu-list.llm.md +52 -0
  192. package/.llm/navigation-menu-trigger-style.llm.md +22 -0
  193. package/.llm/navigation-menu-trigger.llm.md +57 -0
  194. package/.llm/navigation-menu-viewport.llm.md +51 -0
  195. package/.llm/navigation-menu.llm.md +184 -0
  196. package/.llm/overline.llm.md +51 -0
  197. package/.llm/page-title.llm.md +52 -0
  198. package/.llm/pagination-content.llm.md +60 -0
  199. package/.llm/pagination-ellipsis.llm.md +107 -0
  200. package/.llm/pagination-item.llm.md +59 -0
  201. package/.llm/pagination-link.llm.md +150 -0
  202. package/.llm/pagination-next.llm.md +115 -0
  203. package/.llm/pagination-previous.llm.md +115 -0
  204. package/.llm/pagination.llm.md +190 -0
  205. package/.llm/popover-anchor.llm.md +53 -0
  206. package/.llm/popover-content.llm.md +109 -0
  207. package/.llm/popover-trigger.llm.md +54 -0
  208. package/.llm/popover.llm.md +116 -0
  209. package/.llm/progress.llm.md +76 -0
  210. package/.llm/radio-group-indicator.llm.md +28 -0
  211. package/.llm/radio-group-item.llm.md +40 -0
  212. package/.llm/radio-group.llm.md +76 -0
  213. package/.llm/resizable-handle.llm.md +156 -0
  214. package/.llm/resizable-panel-group.llm.md +149 -0
  215. package/.llm/resizable-panel.llm.md +157 -0
  216. package/.llm/scroll-area-corner.llm.md +41 -0
  217. package/.llm/scroll-area-thumb.llm.md +39 -0
  218. package/.llm/scroll-area-viewport.llm.md +60 -0
  219. package/.llm/scroll-area.llm.md +125 -0
  220. package/.llm/scroll-bar.llm.md +78 -0
  221. package/.llm/sdk-items-registry.json +2984 -0
  222. package/.llm/section-title.llm.md +48 -0
  223. package/.llm/select-content.llm.md +139 -0
  224. package/.llm/select-group.llm.md +60 -0
  225. package/.llm/select-item.llm.md +75 -0
  226. package/.llm/select-label.llm.md +62 -0
  227. package/.llm/select-scroll-down-button.llm.md +45 -0
  228. package/.llm/select-scroll-up-button.llm.md +45 -0
  229. package/.llm/select-separator.llm.md +59 -0
  230. package/.llm/select-trigger.llm.md +66 -0
  231. package/.llm/select-value.llm.md +67 -0
  232. package/.llm/select.llm.md +159 -0
  233. package/.llm/separator.llm.md +129 -0
  234. package/.llm/sheet-close.llm.md +49 -0
  235. package/.llm/sheet-content.llm.md +115 -0
  236. package/.llm/sheet-description.llm.md +62 -0
  237. package/.llm/sheet-footer.llm.md +64 -0
  238. package/.llm/sheet-header.llm.md +52 -0
  239. package/.llm/sheet-title.llm.md +53 -0
  240. package/.llm/sheet-trigger.llm.md +46 -0
  241. package/.llm/sheet.llm.md +126 -0
  242. package/.llm/sidebar-content.llm.md +63 -0
  243. package/.llm/sidebar-footer.llm.md +50 -0
  244. package/.llm/sidebar-group-action.llm.md +60 -0
  245. package/.llm/sidebar-group-content.llm.md +64 -0
  246. package/.llm/sidebar-group-label.llm.md +53 -0
  247. package/.llm/sidebar-group.llm.md +56 -0
  248. package/.llm/sidebar-header.llm.md +67 -0
  249. package/.llm/sidebar-input.llm.md +50 -0
  250. package/.llm/sidebar-inset.llm.md +52 -0
  251. package/.llm/sidebar-menu-action.llm.md +84 -0
  252. package/.llm/sidebar-menu-badge.llm.md +60 -0
  253. package/.llm/sidebar-menu-button.llm.md +103 -0
  254. package/.llm/sidebar-menu-item.llm.md +75 -0
  255. package/.llm/sidebar-menu-skeleton.llm.md +76 -0
  256. package/.llm/sidebar-menu-sub-button.llm.md +85 -0
  257. package/.llm/sidebar-menu-sub-item.llm.md +54 -0
  258. package/.llm/sidebar-menu-sub.llm.md +74 -0
  259. package/.llm/sidebar-menu.llm.md +65 -0
  260. package/.llm/sidebar-provider.llm.md +79 -0
  261. package/.llm/sidebar-rail.llm.md +34 -0
  262. package/.llm/sidebar-separator.llm.md +57 -0
  263. package/.llm/sidebar-trigger.llm.md +49 -0
  264. package/.llm/sidebar.llm.md +129 -0
  265. package/.llm/skeleton.llm.md +134 -0
  266. package/.llm/slider.llm.md +173 -0
  267. package/.llm/spinner.llm.md +182 -0
  268. package/.llm/stack.llm.md +28 -0
  269. package/.llm/subsection-title.llm.md +46 -0
  270. package/.llm/switch.llm.md +76 -0
  271. package/.llm/table-body.llm.md +36 -0
  272. package/.llm/table-caption.llm.md +48 -0
  273. package/.llm/table-cell.llm.md +53 -0
  274. package/.llm/table-footer.llm.md +41 -0
  275. package/.llm/table-head.llm.md +69 -0
  276. package/.llm/table-header.llm.md +41 -0
  277. package/.llm/table-row.llm.md +42 -0
  278. package/.llm/table.llm.md +123 -0
  279. package/.llm/tabs-content.llm.md +47 -0
  280. package/.llm/tabs-list.llm.md +41 -0
  281. package/.llm/tabs-trigger.llm.md +47 -0
  282. package/.llm/tabs.llm.md +71 -0
  283. package/.llm/text-field.llm.md +327 -0
  284. package/.llm/textarea.llm.md +311 -0
  285. package/.llm/theme-preference.llm.md +25 -0
  286. package/.llm/theme-toggle.llm.md +57 -0
  287. package/.llm/theme.llm.md +14 -0
  288. package/.llm/toaster.llm.md +193 -0
  289. package/.llm/toggle-group-item.llm.md +59 -0
  290. package/.llm/toggle-group.llm.md +101 -0
  291. package/.llm/toggle.llm.md +40 -0
  292. package/.llm/tooltip-content.llm.md +185 -0
  293. package/.llm/tooltip-provider.llm.md +68 -0
  294. package/.llm/tooltip-trigger.llm.md +70 -0
  295. package/.llm/tooltip.llm.md +129 -0
  296. package/.llm/use-carousel.llm.md +55 -0
  297. package/.llm/use-command-state.llm.md +32 -0
  298. package/.llm/use-is-mobile.llm.md +73 -0
  299. package/.llm/use-sidebar.llm.md +61 -0
  300. package/dist/components/ui/scroll-area.d.ts +5 -5
  301. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  302. package/dist/components/ui/stack.d.ts.map +1 -1
  303. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
  304. package/dist/components/ui/stories/typography.stories.d.ts +8 -108
  305. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  306. package/dist/components/ui/theme-toggle.d.ts +0 -3
  307. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  308. package/dist/components/ui/theme.d.ts.map +1 -1
  309. package/dist/components/ui/typography.d.ts +211 -474
  310. package/dist/components/ui/typography.d.ts.map +1 -1
  311. package/dist/index.js +5160 -9875
  312. package/dist/index.js.map +1 -1
  313. package/dist/tsconfig.tsbuildinfo +1 -1
  314. package/package.json +2 -2
  315. package/src/components/ui/stack.tsx +3 -1
  316. package/src/components/ui/stories/typography.stories.tsx +261 -1512
  317. package/src/components/ui/theme-toggle.tsx +1 -3
  318. package/src/components/ui/theme.tsx +6 -1
  319. package/src/components/ui/typography.tsx +416 -1136
  320. package/src/styles/globals.css +57 -106
@@ -0,0 +1,115 @@
1
+ # PaginationNext
2
+
3
+ **Type**: component
4
+
5
+ Next page navigation button Navigates to the next page in the pagination sequence. Built on PaginationLink with fixed "default" size and includes a chevron-right icon for visual direction. Features responsive design that shows only an icon on mobile devices and "Next" text with icon on larger screens for optimal user experience. Uses buttonVariants with "ghost" variant by default, inheriting all focus management, hover states, and accessibility features from the Button component.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { PaginationNext } from '@neynar/ui';
11
+
12
+ <PaginationNext
13
+ href="value"
14
+ className="value"
15
+ onClick={handleClick}
16
+ "aria-label"="value"
17
+ "aria-disabled"={true}
18
+ tabIndex={0}
19
+ id="value"
20
+ title="value"
21
+ target={value}
22
+ rel="value"
23
+ />
24
+ ```
25
+
26
+ ## Component Props
27
+
28
+ ### href
29
+ - **Type**: `string`
30
+ - **Required**: No
31
+ - **Description**: No description available
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### onClick
39
+ - **Type**: `React.MouseEventHandler<HTMLAnchorElement>`
40
+ - **Required**: No
41
+ - **Description**: No description available
42
+
43
+ ### "aria-label"
44
+ - **Type**: `string`
45
+ - **Required**: No
46
+ - **Description**: No description available
47
+
48
+ ### "aria-disabled"
49
+ - **Type**: `boolean`
50
+ - **Required**: No
51
+ - **Description**: No description available
52
+
53
+ ### tabIndex
54
+ - **Type**: `number`
55
+ - **Required**: No
56
+ - **Description**: No description available
57
+
58
+ ### id
59
+ - **Type**: `string`
60
+ - **Required**: No
61
+ - **Description**: No description available
62
+
63
+ ### title
64
+ - **Type**: `string`
65
+ - **Required**: No
66
+ - **Description**: No description available
67
+
68
+ ### target
69
+ - **Type**: `"_self" | "_blank" | "_parent" | "_top"`
70
+ - **Required**: No
71
+ - **Description**: No description available
72
+
73
+ ### rel
74
+ - **Type**: `string`
75
+ - **Required**: No
76
+ - **Description**: No description available
77
+
78
+ ## Examples
79
+
80
+ ### Example 1
81
+ ```tsx
82
+ // Basic next button
83
+ <PaginationNext href="/products?page=3" />
84
+ ```
85
+ ### Example 2
86
+ ```tsx
87
+ // With disabled state (typically for last page)
88
+ <PaginationNext
89
+ href="#"
90
+ className="pointer-events-none opacity-50"
91
+ aria-disabled="true"
92
+ tabIndex={-1}
93
+ />
94
+ ```
95
+ ### Example 3
96
+ ```tsx
97
+ // With click handler for client-side navigation
98
+ <PaginationNext
99
+ href="#"
100
+ onClick={(e) => {
101
+ e.preventDefault();
102
+ if (currentPage < totalPages) {
103
+ onPageChange(currentPage + 1);
104
+ }
105
+ }}
106
+ />
107
+ ```
108
+ ### Example 4
109
+ ```tsx
110
+ // With custom aria-label for internationalization
111
+ <PaginationNext
112
+ href="/page/6"
113
+ aria-label="Ir a la página siguiente"
114
+ />
115
+ ```
@@ -0,0 +1,115 @@
1
+ # PaginationPrevious
2
+
3
+ **Type**: component
4
+
5
+ Previous page navigation button Navigates to the previous page in the pagination sequence. Built on PaginationLink with fixed "default" size and includes a chevron-left icon for visual direction. Features responsive design that shows only an icon on mobile devices and icon with "Previous" text on larger screens for optimal user experience. Uses buttonVariants with "ghost" variant by default, inheriting all focus management, hover states, and accessibility features from the Button component.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { PaginationPrevious } from '@neynar/ui';
11
+
12
+ <PaginationPrevious
13
+ href="value"
14
+ className="value"
15
+ onClick={handleClick}
16
+ "aria-label"="value"
17
+ "aria-disabled"={true}
18
+ tabIndex={0}
19
+ id="value"
20
+ title="value"
21
+ target={value}
22
+ rel="value"
23
+ />
24
+ ```
25
+
26
+ ## Component Props
27
+
28
+ ### href
29
+ - **Type**: `string`
30
+ - **Required**: No
31
+ - **Description**: No description available
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### onClick
39
+ - **Type**: `React.MouseEventHandler<HTMLAnchorElement>`
40
+ - **Required**: No
41
+ - **Description**: No description available
42
+
43
+ ### "aria-label"
44
+ - **Type**: `string`
45
+ - **Required**: No
46
+ - **Description**: No description available
47
+
48
+ ### "aria-disabled"
49
+ - **Type**: `boolean`
50
+ - **Required**: No
51
+ - **Description**: No description available
52
+
53
+ ### tabIndex
54
+ - **Type**: `number`
55
+ - **Required**: No
56
+ - **Description**: No description available
57
+
58
+ ### id
59
+ - **Type**: `string`
60
+ - **Required**: No
61
+ - **Description**: No description available
62
+
63
+ ### title
64
+ - **Type**: `string`
65
+ - **Required**: No
66
+ - **Description**: No description available
67
+
68
+ ### target
69
+ - **Type**: `"_self" | "_blank" | "_parent" | "_top"`
70
+ - **Required**: No
71
+ - **Description**: No description available
72
+
73
+ ### rel
74
+ - **Type**: `string`
75
+ - **Required**: No
76
+ - **Description**: No description available
77
+
78
+ ## Examples
79
+
80
+ ### Example 1
81
+ ```tsx
82
+ // Basic previous button
83
+ <PaginationPrevious href="/products?page=1" />
84
+ ```
85
+ ### Example 2
86
+ ```tsx
87
+ // With disabled state (typically for first page)
88
+ <PaginationPrevious
89
+ href="#"
90
+ className="pointer-events-none opacity-50"
91
+ aria-disabled="true"
92
+ tabIndex={-1}
93
+ />
94
+ ```
95
+ ### Example 3
96
+ ```tsx
97
+ // With click handler for client-side navigation
98
+ <PaginationPrevious
99
+ href="#"
100
+ onClick={(e) => {
101
+ e.preventDefault();
102
+ if (currentPage > 1) {
103
+ onPageChange(currentPage - 1);
104
+ }
105
+ }}
106
+ />
107
+ ```
108
+ ### Example 4
109
+ ```tsx
110
+ // With custom aria-label for internationalization
111
+ <PaginationPrevious
112
+ href="/page/4"
113
+ aria-label="Ir a la página anterior"
114
+ />
115
+ ```
@@ -0,0 +1,190 @@
1
+ # Pagination
2
+
3
+ **Type**: component
4
+
5
+ Pagination navigation component for large datasets A comprehensive pagination component built on shadcn/ui standards that provides intuitive navigation through pages of content. All interactive elements use buttonVariants from the Button component for consistent styling and behavior: - PaginationLink uses "outline" variant when active, "ghost" when inactive - PaginationPrevious/PaginationNext use "ghost" variant by default - All components inherit Button's focus management, hover states, and accessibility Features responsive design, full accessibility compliance, and flexible composition patterns for different use cases. Ideal for data tables, search results, product listings, and any paginated content that needs professional navigation controls.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Pagination } from '@neynar/ui';
11
+
12
+ <Pagination
13
+ className="value"
14
+ role="value"
15
+ "aria-label"="value"
16
+ id="value"
17
+ tabIndex={0}
18
+ >
19
+ {/* Your content here */}
20
+ </Pagination>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### className
26
+ - **Type**: `string`
27
+ - **Required**: No
28
+ - **Description**: No description available
29
+
30
+ ### children
31
+ - **Type**: `React.ReactNode`
32
+ - **Required**: No
33
+ - **Description**: No description available
34
+
35
+ ### role
36
+ - **Type**: `string`
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
+ ### id
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: No description available
49
+
50
+ ### tabIndex
51
+ - **Type**: `number`
52
+ - **Required**: No
53
+ - **Description**: No description available
54
+
55
+ ## Examples
56
+
57
+ ### Example 1
58
+ ```tsx
59
+ // Basic pagination with numbered pages
60
+ <Pagination>
61
+ <PaginationContent>
62
+ <PaginationItem>
63
+ <PaginationPrevious href="/products?page=1" />
64
+ </PaginationItem>
65
+ <PaginationItem>
66
+ <PaginationLink href="/products?page=1">1</PaginationLink>
67
+ </PaginationItem>
68
+ <PaginationItem>
69
+ <PaginationLink href="/products?page=2" isActive>2</PaginationLink>
70
+ </PaginationItem>
71
+ <PaginationItem>
72
+ <PaginationLink href="/products?page=3">3</PaginationLink>
73
+ </PaginationItem>
74
+ <PaginationItem>
75
+ <PaginationNext href="/products?page=3" />
76
+ </PaginationItem>
77
+ </PaginationContent>
78
+ </Pagination>
79
+ ```
80
+ ### Example 2
81
+ ```tsx
82
+ // Complete pagination with ellipsis for large datasets
83
+ <Pagination>
84
+ <PaginationContent>
85
+ <PaginationItem>
86
+ <PaginationPrevious href="/search?q=react&page=4" />
87
+ </PaginationItem>
88
+ <PaginationItem>
89
+ <PaginationLink href="/search?q=react&page=1">1</PaginationLink>
90
+ </PaginationItem>
91
+ <PaginationItem>
92
+ <PaginationEllipsis />
93
+ </PaginationItem>
94
+ <PaginationItem>
95
+ <PaginationLink href="/search?q=react&page=4">4</PaginationLink>
96
+ </PaginationItem>
97
+ <PaginationItem>
98
+ <PaginationLink href="/search?q=react&page=5" isActive>5</PaginationLink>
99
+ </PaginationItem>
100
+ <PaginationItem>
101
+ <PaginationLink href="/search?q=react&page=6">6</PaginationLink>
102
+ </PaginationItem>
103
+ <PaginationItem>
104
+ <PaginationEllipsis />
105
+ </PaginationItem>
106
+ <PaginationItem>
107
+ <PaginationLink href="/search?q=react&page=50">50</PaginationLink>
108
+ </PaginationItem>
109
+ <PaginationItem>
110
+ <PaginationNext href="/search?q=react&page=6" />
111
+ </PaginationItem>
112
+ </PaginationContent>
113
+ </Pagination>
114
+ ```
115
+ ### Example 3
116
+ ```tsx
117
+ // Client-side pagination with state management
118
+ function PaginatedResults() {
119
+ const [currentPage, setCurrentPage] = useState(1);
120
+ const totalPages = 25;
121
+ return (
122
+ <Pagination>
123
+ <PaginationContent>
124
+ <PaginationItem>
125
+ <PaginationPrevious
126
+ href="#"
127
+ onClick={(e) => {
128
+ e.preventDefault();
129
+ if (currentPage > 1) setCurrentPage(currentPage - 1);
130
+ }}
131
+ className={currentPage === 1 ? "pointer-events-none opacity-50" : ""}
132
+ aria-disabled={currentPage === 1}
133
+ />
134
+ </PaginationItem>
135
+ {[1, 2, 3].map((page) => (
136
+ <PaginationItem key={page}>
137
+ <PaginationLink
138
+ href="#"
139
+ isActive={currentPage === page}
140
+ onClick={(e) => {
141
+ e.preventDefault();
142
+ setCurrentPage(page);
143
+ }}
144
+ >
145
+ {page}
146
+ </PaginationLink>
147
+ </PaginationItem>
148
+ ))}
149
+ <PaginationItem>
150
+ <PaginationNext
151
+ href="#"
152
+ onClick={(e) => {
153
+ e.preventDefault();
154
+ if (currentPage < totalPages) setCurrentPage(currentPage + 1);
155
+ }}
156
+ className={currentPage === totalPages ? "pointer-events-none opacity-50" : ""}
157
+ aria-disabled={currentPage === totalPages}
158
+ />
159
+ </PaginationItem>
160
+ </PaginationContent>
161
+ </Pagination>
162
+ );
163
+ }
164
+ ```
165
+ ### Example 4
166
+ ```tsx
167
+ // Different sizes for various use cases
168
+ // Compact pagination for data tables
169
+ <Pagination>
170
+ <PaginationContent>
171
+ <PaginationItem>
172
+ <PaginationLink href="/data?page=1" size="sm">1</PaginationLink>
173
+ </PaginationItem>
174
+ <PaginationItem>
175
+ <PaginationLink href="/data?page=2" size="sm" isActive>2</PaginationLink>
176
+ </PaginationItem>
177
+ </PaginationContent>
178
+ </Pagination>
179
+ // Large pagination for primary content
180
+ <Pagination>
181
+ <PaginationContent>
182
+ <PaginationItem>
183
+ <PaginationLink href="/articles?page=1" size="lg">1</PaginationLink>
184
+ </PaginationItem>
185
+ <PaginationItem>
186
+ <PaginationLink href="/articles?page=2" size="lg" isActive>2</PaginationLink>
187
+ </PaginationItem>
188
+ </PaginationContent>
189
+ </Pagination>
190
+ ```
@@ -0,0 +1,53 @@
1
+ # PopoverAnchor
2
+
3
+ **Type**: component
4
+
5
+ PopoverAnchor - Optional anchor element for custom positioning Use PopoverAnchor when you need the popover to position relative to an element other than the trigger. This is useful for complex layouts where the visual trigger and positioning reference should be different elements.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { PopoverAnchor } from '@neynar/ui';
11
+
12
+ <PopoverAnchor
13
+ asChild={true}
14
+ className="value"
15
+ >
16
+ {/* Your content here */}
17
+ </PopoverAnchor>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### asChild
23
+ - **Type**: `boolean`
24
+ - **Required**: No
25
+ - **Description**: No description available
26
+
27
+ ### children
28
+ - **Type**: `React.ReactNode`
29
+ - **Required**: No
30
+ - **Description**: No description available
31
+
32
+ ### className
33
+ - **Type**: `string`
34
+ - **Required**: No
35
+ - **Description**: No description available
36
+
37
+ ## Examples
38
+
39
+ ```tsx
40
+ <Popover>
41
+ <PopoverAnchor asChild>
42
+ <div className="relative">
43
+ <span>Reference element for positioning</span>
44
+ </div>
45
+ </PopoverAnchor>
46
+ <PopoverTrigger asChild>
47
+ <Button>Open (positioned relative to anchor)</Button>
48
+ </PopoverTrigger>
49
+ <PopoverContent>
50
+ <p>This popover positions relative to the anchor, not the trigger</p>
51
+ </PopoverContent>
52
+ </Popover>
53
+ ```
@@ -0,0 +1,109 @@
1
+ # PopoverContent
2
+
3
+ **Type**: component
4
+
5
+ PopoverContent - The content container for the popover
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { PopoverContent } from '@neynar/ui';
11
+
12
+ <PopoverContent
13
+ side={value}
14
+ align={value}
15
+ sideOffset={0}
16
+ alignOffset={0}
17
+ avoidCollisions={true}
18
+ collisionBoundary={[]}
19
+ collisionPadding={value}
20
+ sticky={value}
21
+ hideWhenDetached={true}
22
+ className="value"
23
+ style={value}
24
+ >
25
+ {/* Your content here */}
26
+ </PopoverContent>
27
+ ```
28
+
29
+ ## Component Props
30
+
31
+ ### side
32
+ - **Type**: `"top" | "right" | "bottom" | "left"`
33
+ - **Required**: No
34
+ - **Description**: The preferred side of the trigger to render against ("top" | "right" | "bottom" | "left")
35
+
36
+ ### align
37
+ - **Type**: `"start" | "center" | "end"`
38
+ - **Required**: No
39
+ - **Description**: How to align the popover relative to the trigger ("start" | "center" | "end")
40
+
41
+ ### sideOffset
42
+ - **Type**: `number`
43
+ - **Required**: No
44
+ - **Description**: Distance in pixels from the trigger (default: 4)
45
+
46
+ ### alignOffset
47
+ - **Type**: `number`
48
+ - **Required**: No
49
+ - **Description**: Offset in pixels along the align axis
50
+
51
+ ### avoidCollisions
52
+ - **Type**: `boolean`
53
+ - **Required**: No
54
+ - **Description**: Whether to automatically avoid collisions with viewport edges (default: true)
55
+
56
+ ### collisionBoundary
57
+ - **Type**: `Element | Element[] | null`
58
+ - **Required**: No
59
+ - **Description**: Boundary element(s) to consider for collision detection
60
+
61
+ ### collisionPadding
62
+ - **Type**: `| number
63
+ | Partial<Record<"top" | "right" | "bottom" | "left", number>>`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### sticky
68
+ - **Type**: `"partial" | "always"`
69
+ - **Required**: No
70
+ - **Description**: Whether to stick to the boundary edges when colliding ("partial" | "always")
71
+
72
+ ### hideWhenDetached
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### children
78
+ - **Type**: `React.ReactNode`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### className
83
+ - **Type**: `string`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### style
88
+ - **Type**: `React.CSSProperties`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ## Examples
93
+
94
+ ```tsx
95
+ // Basic content with default positioning
96
+ <PopoverContent>
97
+ <div className="grid gap-4">
98
+ <h4 className="font-medium">Title</h4>
99
+ <p className="text-sm text-muted-foreground">Description</p>
100
+ </div>
101
+ </PopoverContent>
102
+ // Positioned content with custom width
103
+ <PopoverContent side="top" align="start" className="w-80">
104
+ <form className="grid gap-4">
105
+ <Input placeholder="Enter value" />
106
+ <Button type="submit">Save</Button>
107
+ </form>
108
+ </PopoverContent>
109
+ ```
@@ -0,0 +1,54 @@
1
+ # PopoverTrigger
2
+
3
+ **Type**: component
4
+
5
+ PopoverTrigger - The element that triggers the popover
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { PopoverTrigger } from '@neynar/ui';
11
+
12
+ <PopoverTrigger
13
+ asChild={true}
14
+ className="value"
15
+ disabled={true}
16
+ >
17
+ {/* Your content here */}
18
+ </PopoverTrigger>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### asChild
24
+ - **Type**: `boolean`
25
+ - **Required**: No
26
+ - **Description**: Changes the default rendered element to the one passed as a child,
27
+
28
+ ### children
29
+ - **Type**: `React.ReactNode`
30
+ - **Required**: No
31
+ - **Description**: No description available
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: No description available
37
+
38
+ ### disabled
39
+ - **Type**: `boolean`
40
+ - **Required**: No
41
+ - **Description**: No description available
42
+
43
+ ## Examples
44
+
45
+ ```tsx
46
+ // Using asChild with custom button
47
+ <PopoverTrigger asChild>
48
+ <Button variant="outline">Open Settings</Button>
49
+ </PopoverTrigger>
50
+ // Direct usage (renders as button)
51
+ <PopoverTrigger className="custom-trigger">
52
+ Click me
53
+ </PopoverTrigger>
54
+ ```