@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,236 @@
1
+ # Container
2
+
3
+ **Type**: component
4
+
5
+ Container - A responsive layout wrapper with flexible width constraints and consistent padding A fundamental layout component built with class-variance-authority (CVA) that provides consistent horizontal centering, responsive padding, and flexible max-width constraints. Designed to be the primary content wrapper for pages, sections, and layout regions throughout the application. The component automatically applies responsive horizontal padding (px-4 on mobile, px-6 on small screens, px-8 on large screens) and centers content using mx-auto. Five size variants accommodate different content types from optimal reading widths to full-width layouts. Built following shadcn/ui and Tailwind UI patterns for maximum compatibility and consistency with modern React applications and design systems.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { Container } from '@neynar/ui';
11
+
12
+ <Container
13
+ size={value}
14
+ className="value"
15
+ id="value"
16
+ role="value"
17
+ "aria-label"="value"
18
+ "aria-labelledby"="value"
19
+ "aria-describedby"="value"
20
+ "aria-live"={value}
21
+ tabIndex={0}
22
+ onClick={handleClick}
23
+ onFocus={handleFocus}
24
+ onBlur={handleBlur}
25
+ onKeyDown={handleKeyDown}
26
+ onMouseEnter={handleMouseEnter}
27
+ onMouseLeave={handleMouseLeave}
28
+ >
29
+ {/* Your content here */}
30
+ </Container>
31
+ ```
32
+
33
+ ## Component Props
34
+
35
+ ### size
36
+ - **Type**: `"sm" | "md" | "lg" | "xl" | "full"`
37
+ - **Required**: No
38
+ - **Description**: No description available
39
+
40
+ ### children
41
+ - **Type**: `React.ReactNode`
42
+ - **Required**: No
43
+ - **Description**: No description available
44
+
45
+ ### className
46
+ - **Type**: `string`
47
+ - **Required**: No
48
+ - **Description**: No description available
49
+
50
+ ### id
51
+ - **Type**: `string`
52
+ - **Required**: No
53
+ - **Description**: No description available
54
+
55
+ ### role
56
+ - **Type**: `string`
57
+ - **Required**: No
58
+ - **Description**: No description available
59
+
60
+ ### "aria-label"
61
+ - **Type**: `string`
62
+ - **Required**: No
63
+ - **Description**: No description available
64
+
65
+ ### "aria-labelledby"
66
+ - **Type**: `string`
67
+ - **Required**: No
68
+ - **Description**: No description available
69
+
70
+ ### "aria-describedby"
71
+ - **Type**: `string`
72
+ - **Required**: No
73
+ - **Description**: No description available
74
+
75
+ ### "aria-live"
76
+ - **Type**: `"off" | "polite" | "assertive"`
77
+ - **Required**: No
78
+ - **Description**: No description available
79
+
80
+ ### tabIndex
81
+ - **Type**: `number`
82
+ - **Required**: No
83
+ - **Description**: No description available
84
+
85
+ ### onClick
86
+ - **Type**: `React.MouseEventHandler<HTMLDivElement>`
87
+ - **Required**: No
88
+ - **Description**: No description available
89
+
90
+ ### onFocus
91
+ - **Type**: `React.FocusEventHandler<HTMLDivElement>`
92
+ - **Required**: No
93
+ - **Description**: No description available
94
+
95
+ ### onBlur
96
+ - **Type**: `React.FocusEventHandler<HTMLDivElement>`
97
+ - **Required**: No
98
+ - **Description**: No description available
99
+
100
+ ### onKeyDown
101
+ - **Type**: `React.KeyboardEventHandler<HTMLDivElement>`
102
+ - **Required**: No
103
+ - **Description**: No description available
104
+
105
+ ### onMouseEnter
106
+ - **Type**: `React.MouseEventHandler<HTMLDivElement>`
107
+ - **Required**: No
108
+ - **Description**: No description available
109
+
110
+ ### onMouseLeave
111
+ - **Type**: `React.MouseEventHandler<HTMLDivElement>`
112
+ - **Required**: No
113
+ - **Description**: No description available
114
+
115
+ ## Examples
116
+
117
+ ### Example 1
118
+ ```tsx
119
+ // Basic usage with default large size (80rem max-width)
120
+ <Container>
121
+ <h1>Dashboard Overview</h1>
122
+ <p>Main application content with balanced width constraints</p>
123
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
124
+ <Card>Dashboard Widget</Card>
125
+ <Card>Analytics Panel</Card>
126
+ <Card>Recent Activity</Card>
127
+ </div>
128
+ </Container>
129
+ ```
130
+ ### Example 2
131
+ ```tsx
132
+ // Reading-optimized container for articles and blog posts
133
+ <Container size="sm">
134
+ <article className="prose prose-lg max-w-none">
135
+ <h1>The Future of Web Development</h1>
136
+ <p>
137
+ Long-form content with line lengths optimized for readability
138
+ and comfortable reading experience across all device sizes.
139
+ </p>
140
+ <p>
141
+ The small container (48rem) provides the ideal measure for
142
+ typography-focused content and sustained reading.
143
+ </p>
144
+ </article>
145
+ </Container>
146
+ ```
147
+ ### Example 3
148
+ ```tsx
149
+ // Medium container for forms and structured layouts
150
+ <Container size="md">
151
+ <div className="space-y-8">
152
+ <div className="text-center">
153
+ <h2>Account Settings</h2>
154
+ <p>Manage your account preferences and profile information</p>
155
+ </div>
156
+ <form className="space-y-6">
157
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
158
+ <Input label="First Name" />
159
+ <Input label="Last Name" />
160
+ </div>
161
+ <Input label="Email Address" type="email" />
162
+ <Button type="submit" className="w-full">Update Profile</Button>
163
+ </form>
164
+ </div>
165
+ </Container>
166
+ ```
167
+ ### Example 4
168
+ ```tsx
169
+ // Full-width container for complex layouts and hero sections
170
+ <Container size="full">
171
+ <div className="bg-gradient-to-r from-blue-600 to-purple-600 text-white py-20">
172
+ <div className="text-center space-y-6">
173
+ <h1 className="text-4xl md:text-6xl font-bold">
174
+ Welcome to Our Platform
175
+ </h1>
176
+ <p className="text-xl md:text-2xl opacity-90 max-w-3xl mx-auto">
177
+ Edge-to-edge hero section with full viewport width
178
+ </p>
179
+ <Button size="lg" variant="secondary">
180
+ Get Started
181
+ </Button>
182
+ </div>
183
+ </div>
184
+ </Container>
185
+ ```
186
+ ### Example 5
187
+ ```tsx
188
+ // Extra-large container for data-heavy interfaces
189
+ <Container size="xl" className="py-8">
190
+ <div className="space-y-6">
191
+ <div className="flex justify-between items-center">
192
+ <h1 className="text-3xl font-bold">Analytics Dashboard</h1>
193
+ <Button variant="outline">Export Data</Button>
194
+ </div>
195
+ // Wide data table that needs maximum available width
196
+ <DataTable
197
+ columns={analyticsColumns}
198
+ data={analyticsData}
199
+ className="min-w-[1200px]"
200
+ />
201
+ <div className="grid grid-cols-1 lg:grid-cols-4 gap-6">
202
+ <MetricCard />
203
+ <MetricCard />
204
+ <MetricCard />
205
+ <MetricCard />
206
+ </div>
207
+ </div>
208
+ </Container>
209
+ ```
210
+ ### Example 6
211
+ ```tsx
212
+ // Advanced usage with custom styling and ARIA landmarks
213
+ <Container
214
+ size="lg"
215
+ className="min-h-screen py-12 bg-gray-50 dark:bg-gray-900"
216
+ role="main"
217
+ aria-label="Application content"
218
+ >
219
+ <div className="space-y-10">
220
+ <header className="text-center space-y-4">
221
+ <Badge variant="secondary">New Feature</Badge>
222
+ <h1 className="text-4xl font-bold tracking-tight">
223
+ Product Announcement
224
+ </h1>
225
+ <p className="text-lg text-muted-foreground max-w-2xl mx-auto">
226
+ Discover the latest improvements to our platform
227
+ </p>
228
+ </header>
229
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
230
+ <FeatureCard />
231
+ <FeatureCard />
232
+ <FeatureCard />
233
+ </div>
234
+ </div>
235
+ </Container>
236
+ ```
@@ -0,0 +1,97 @@
1
+ # ContextMenuCheckboxItem
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuCheckboxItem - A menu item with checkbox functionality Menu items that can be toggled on/off, useful for binary settings or options. Displays a check mark when selected and supports controlled state management with indeterminate state for partially selected collections.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuCheckboxItem } from '@neynar/ui';
11
+
12
+ <ContextMenuCheckboxItem
13
+ asChild={true}
14
+ checked={value}
15
+ onCheckedChange={handleCheckedChange}
16
+ disabled={true}
17
+ onSelect={handleSelect}
18
+ textValue="value"
19
+ className="value"
20
+ >
21
+ {/* Your content here */}
22
+ </ContextMenuCheckboxItem>
23
+ ```
24
+
25
+ ## Component Props
26
+
27
+ ### asChild
28
+ - **Type**: `boolean`
29
+ - **Required**: No
30
+ - **Description**: Merges props with child element instead of rendering wrapper
31
+
32
+ ### checked
33
+ - **Type**: `boolean | "indeterminate"`
34
+ - **Required**: No
35
+ - **Description**: The checked state (true, false, or "indeterminate")
36
+
37
+ ### onCheckedChange
38
+ - **Type**: `(checked: boolean) => void`
39
+ - **Required**: No
40
+ - **Description**: Callback fired when the checked state changes
41
+
42
+ ### disabled
43
+ - **Type**: `boolean`
44
+ - **Required**: No
45
+ - **Description**: Whether the item is disabled and non-interactive
46
+
47
+ ### onSelect
48
+ - **Type**: `(event: Event) => void`
49
+ - **Required**: No
50
+ - **Description**: Callback fired when the item is selected (before onCheckedChange)
51
+
52
+ ### textValue
53
+ - **Type**: `string`
54
+ - **Required**: No
55
+ - **Description**: Custom text for typeahead navigation
56
+
57
+ ### className
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: Additional CSS classes for styling
61
+
62
+ ### children
63
+ - **Type**: `React.ReactNode`
64
+ - **Required**: Yes
65
+ - **Description**: Content of the checkbox item (typically text)
66
+
67
+ ## Examples
68
+
69
+ ### Example 1
70
+ ```tsx
71
+ const [showGrid, setShowGrid] = useState(true)
72
+ <ContextMenuCheckboxItem
73
+ checked={showGrid}
74
+ onCheckedChange={setShowGrid}
75
+ >
76
+ Show Grid
77
+ </ContextMenuCheckboxItem>
78
+ ```
79
+ ### Example 2
80
+ ```tsx
81
+ // With indeterminate state
82
+ const [selectedItems, setSelectedItems] = useState(['item1'])
83
+ const allItems = ['item1', 'item2', 'item3']
84
+ const checkedState = selectedItems.length === 0
85
+ ? false
86
+ : selectedItems.length === allItems.length
87
+ ? true
88
+ : "indeterminate"
89
+ <ContextMenuCheckboxItem
90
+ checked={checkedState}
91
+ onCheckedChange={(checked) =>
92
+ setSelectedItems(checked ? allItems : [])
93
+ }
94
+ >
95
+ Select All
96
+ </ContextMenuCheckboxItem>
97
+ ```
@@ -0,0 +1,91 @@
1
+ # ContextMenuContent
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuContent - The container for context menu items Contains all menu items, separators, labels, and sub-menus. Automatically positioned relative to the trigger point with collision detection and smooth animations. Renders in a portal by default for proper layering.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuContent } from '@neynar/ui';
11
+
12
+ <ContextMenuContent
13
+ asChild={true}
14
+ loop={true}
15
+ onCloseAutoFocus={handleCloseAutoFocus}
16
+ onEscapeKeyDown={handleEscapeKeyDown}
17
+ avoidCollisions={true}
18
+ sideOffset={0}
19
+ className="value"
20
+ >
21
+ {/* Your content here */}
22
+ </ContextMenuContent>
23
+ ```
24
+
25
+ ## Component Props
26
+
27
+ ### asChild
28
+ - **Type**: `boolean`
29
+ - **Required**: No
30
+ - **Description**: Merges props with child element instead of rendering wrapper
31
+
32
+ ### loop
33
+ - **Type**: `boolean`
34
+ - **Required**: No
35
+ - **Description**: Enable keyboard navigation looping from last to first item
36
+
37
+ ### onCloseAutoFocus
38
+ - **Type**: `(event: Event) => void`
39
+ - **Required**: No
40
+ - **Description**: Handle focus return when menu closes
41
+
42
+ ### onEscapeKeyDown
43
+ - **Type**: `(event: KeyboardEvent) => void`
44
+ - **Required**: No
45
+ - **Description**: Handle escape key presses
46
+
47
+ ### avoidCollisions
48
+ - **Type**: `boolean`
49
+ - **Required**: No
50
+ - **Description**: Prevent collisions with viewport boundaries
51
+
52
+ ### sideOffset
53
+ - **Type**: `number`
54
+ - **Required**: No
55
+ - **Description**: Distance in pixels from the cursor/trigger point
56
+
57
+ ### className
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: Additional CSS classes for styling
61
+
62
+ ### children
63
+ - **Type**: `React.ReactNode`
64
+ - **Required**: Yes
65
+ - **Description**: Menu items, labels, separators, and sub-menus to display
66
+
67
+ ## Examples
68
+
69
+ ### Example 1
70
+ ```tsx
71
+ <ContextMenuContent className="w-56">
72
+ <ContextMenuLabel>Actions</ContextMenuLabel>
73
+ <ContextMenuSeparator />
74
+ <ContextMenuItem>Copy</ContextMenuItem>
75
+ <ContextMenuItem>Paste</ContextMenuItem>
76
+ </ContextMenuContent>
77
+ ```
78
+ ### Example 2
79
+ ```tsx
80
+ // With event handlers and positioning
81
+ <ContextMenuContent
82
+ onCloseAutoFocus={(e) => e.preventDefault()}
83
+ onEscapeKeyDown={(e) => console.log('Escape pressed')}
84
+ avoidCollisions={true}
85
+ sideOffset={4}
86
+ loop={true}
87
+ >
88
+ <ContextMenuItem>Item 1</ContextMenuItem>
89
+ <ContextMenuItem>Item 2</ContextMenuItem>
90
+ </ContextMenuContent>
91
+ ```
@@ -0,0 +1,61 @@
1
+ # ContextMenuGroup
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuGroup - Logical grouping for menu items Groups related menu items together for better organization and accessibility. Provides semantic structure without visual changes but improves screen reader navigation by grouping related actions.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuGroup } from '@neynar/ui';
11
+
12
+ <ContextMenuGroup
13
+ asChild={true}
14
+ className="value"
15
+ >
16
+ {/* Your content here */}
17
+ </ContextMenuGroup>
18
+ ```
19
+
20
+ ## Component Props
21
+
22
+ ### asChild
23
+ - **Type**: `boolean`
24
+ - **Required**: No
25
+ - **Description**: Merges props with child element instead of rendering wrapper
26
+
27
+ ### className
28
+ - **Type**: `string`
29
+ - **Required**: No
30
+ - **Description**: No description available
31
+
32
+ ### children
33
+ - **Type**: `React.ReactNode`
34
+ - **Required**: Yes
35
+ - **Description**: The menu items to group together logically
36
+
37
+ ## Examples
38
+
39
+ ### Example 1
40
+ ```tsx
41
+ <ContextMenuGroup>
42
+ <ContextMenuItem>Copy</ContextMenuItem>
43
+ <ContextMenuItem>Cut</ContextMenuItem>
44
+ <ContextMenuItem>Paste</ContextMenuItem>
45
+ </ContextMenuGroup>
46
+ ```
47
+ ### Example 2
48
+ ```tsx
49
+ // Multiple groups with separators
50
+ <ContextMenuContent>
51
+ <ContextMenuGroup>
52
+ <ContextMenuItem>Undo</ContextMenuItem>
53
+ <ContextMenuItem>Redo</ContextMenuItem>
54
+ </ContextMenuGroup>
55
+ <ContextMenuSeparator />
56
+ <ContextMenuGroup>
57
+ <ContextMenuItem>Copy</ContextMenuItem>
58
+ <ContextMenuItem>Paste</ContextMenuItem>
59
+ </ContextMenuGroup>
60
+ </ContextMenuContent>
61
+ ```
@@ -0,0 +1,94 @@
1
+ # ContextMenuItem
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuItem - An actionable item within the context menu Individual menu items that users can interact with. Supports different variants for visual hierarchy and includes automatic icon styling. Items can be clicked, selected via keyboard, and support custom styling.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuItem } from '@neynar/ui';
11
+
12
+ <ContextMenuItem
13
+ asChild={true}
14
+ disabled={true}
15
+ onSelect={handleSelect}
16
+ textValue="value"
17
+ inset={true}
18
+ variant={value}
19
+ className="value"
20
+ >
21
+ {/* Your content here */}
22
+ </ContextMenuItem>
23
+ ```
24
+
25
+ ## Component Props
26
+
27
+ ### asChild
28
+ - **Type**: `boolean`
29
+ - **Required**: No
30
+ - **Description**: Merges props with child element instead of rendering wrapper
31
+
32
+ ### disabled
33
+ - **Type**: `boolean`
34
+ - **Required**: No
35
+ - **Description**: Prevents interaction and dims the item visually
36
+
37
+ ### onSelect
38
+ - **Type**: `(event: Event) => void`
39
+ - **Required**: No
40
+ - **Description**: Callback fired when item is selected (via mouse or keyboard)
41
+
42
+ ### textValue
43
+ - **Type**: `string`
44
+ - **Required**: No
45
+ - **Description**: Custom text for typeahead navigation when content is complex
46
+
47
+ ### inset
48
+ - **Type**: `boolean`
49
+ - **Required**: No
50
+ - **Description**: Whether to indent the item for alignment with icon-based items
51
+
52
+ ### variant
53
+ - **Type**: `"default" | "destructive"`
54
+ - **Required**: No
55
+ - **Description**: Visual variant ("default" for normal actions, "destructive" for dangerous actions)
56
+
57
+ ### className
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: Additional CSS classes for custom styling
61
+
62
+ ### children
63
+ - **Type**: `React.ReactNode`
64
+ - **Required**: Yes
65
+ - **Description**: Content of the menu item (text, icons, shortcuts, etc.)
66
+
67
+ ## Examples
68
+
69
+ ### Example 1
70
+ ```tsx
71
+ <ContextMenuItem onSelect={() => console.log('Edit selected')}>
72
+ <Edit className="mr-2 h-4 w-4" />
73
+ Edit
74
+ <ContextMenuShortcut>⌘E</ContextMenuShortcut>
75
+ </ContextMenuItem>
76
+ ```
77
+ ### Example 2
78
+ ```tsx
79
+ <ContextMenuItem variant="destructive" onSelect={handleDelete}>
80
+ <Trash2 className="mr-2 h-4 w-4" />
81
+ Delete
82
+ </ContextMenuItem>
83
+ ```
84
+ ### Example 3
85
+ ```tsx
86
+ // With custom text value for typeahead
87
+ <ContextMenuItem
88
+ textValue="Copy to clipboard"
89
+ onSelect={handleCopy}
90
+ >
91
+ <Copy className="mr-2 h-4 w-4" />
92
+ Copy <span className="text-muted-foreground">to clipboard</span>
93
+ </ContextMenuItem>
94
+ ```
@@ -0,0 +1,60 @@
1
+ # ContextMenuLabel
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuLabel - A non-interactive label for menu sections Used to group related menu items and provide context. Labels are not focusable and serve as visual section headers within the menu. Helps organize menu content and improve accessibility.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuLabel } from '@neynar/ui';
11
+
12
+ <ContextMenuLabel
13
+ asChild={true}
14
+ inset={true}
15
+ className="value"
16
+ >
17
+ {/* Your content here */}
18
+ </ContextMenuLabel>
19
+ ```
20
+
21
+ ## Component Props
22
+
23
+ ### asChild
24
+ - **Type**: `boolean`
25
+ - **Required**: No
26
+ - **Description**: Merges props with child element instead of rendering wrapper
27
+
28
+ ### inset
29
+ - **Type**: `boolean`
30
+ - **Required**: No
31
+ - **Description**: Whether to indent the label to align with inset items
32
+
33
+ ### className
34
+ - **Type**: `string`
35
+ - **Required**: No
36
+ - **Description**: Additional CSS classes for styling
37
+
38
+ ### children
39
+ - **Type**: `React.ReactNode`
40
+ - **Required**: Yes
41
+ - **Description**: The text content of the label
42
+
43
+ ## Examples
44
+
45
+ ### Example 1
46
+ ```tsx
47
+ <ContextMenuLabel>File Actions</ContextMenuLabel>
48
+ <ContextMenuSeparator />
49
+ <ContextMenuItem>Open</ContextMenuItem>
50
+ <ContextMenuItem>Save</ContextMenuItem>
51
+ ```
52
+ ### Example 2
53
+ ```tsx
54
+ // With inset alignment for consistency
55
+ <ContextMenuContent>
56
+ <ContextMenuLabel inset>Edit Options</ContextMenuLabel>
57
+ <ContextMenuItem inset>Copy</ContextMenuItem>
58
+ <ContextMenuItem inset>Paste</ContextMenuItem>
59
+ </ContextMenuContent>
60
+ ```
@@ -0,0 +1,49 @@
1
+ # ContextMenuPortal
2
+
3
+ **Type**: component
4
+
5
+ ContextMenuPortal - Portal container for menu content Renders menu content in a portal to ensure proper layering and positioning. Useful for controlling where menu content is rendered in the DOM tree, especially important for sub-menus and complex layouts.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { ContextMenuPortal } from '@neynar/ui';
11
+
12
+ <ContextMenuPortal
13
+ container={value}
14
+ >
15
+ {/* Your content here */}
16
+ </ContextMenuPortal>
17
+ ```
18
+
19
+ ## Component Props
20
+
21
+ ### container
22
+ - **Type**: `HTMLElement`
23
+ - **Required**: No
24
+ - **Description**: Custom container element to portal content into
25
+
26
+ ### children
27
+ - **Type**: `React.ReactNode`
28
+ - **Required**: Yes
29
+ - **Description**: The menu content to render in the portal
30
+
31
+ ## Examples
32
+
33
+ ### Example 1
34
+ ```tsx
35
+ <ContextMenuPortal>
36
+ <ContextMenuSubContent>
37
+ <ContextMenuItem>Portal Item</ContextMenuItem>
38
+ </ContextMenuSubContent>
39
+ </ContextMenuPortal>
40
+ ```
41
+ ### Example 2
42
+ ```tsx
43
+ // Portal into specific container
44
+ <ContextMenuPortal container={document.getElementById('menu-container')}>
45
+ <ContextMenuContent>
46
+ <ContextMenuItem>Custom Portal Item</ContextMenuItem>
47
+ </ContextMenuContent>
48
+ </ContextMenuPortal>
49
+ ```