@neynar/ui 0.1.2 → 0.2.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 (282) hide show
  1. package/dist/components/ui/stack.d.ts +2 -1
  2. package/dist/components/ui/stack.d.ts.map +1 -1
  3. package/dist/components/ui/stories/stack.stories.d.ts +1 -1
  4. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  5. package/dist/components/ui/typography.d.ts +41 -40
  6. package/dist/components/ui/typography.d.ts.map +1 -1
  7. package/dist/index.js +26807 -18714
  8. package/dist/index.js.map +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/docs/llm/components/typography.md +92 -88
  11. package/llm-docs/a.llm.md +145 -0
  12. package/llm-docs/accordion-content.llm.md +67 -0
  13. package/llm-docs/accordion-item.llm.md +61 -0
  14. package/llm-docs/accordion-trigger.llm.md +69 -0
  15. package/llm-docs/accordion.llm.md +88 -0
  16. package/llm-docs/alert-description.llm.md +78 -0
  17. package/llm-docs/alert-dialog-action.llm.md +51 -0
  18. package/llm-docs/alert-dialog-cancel.llm.md +48 -0
  19. package/llm-docs/alert-dialog-content.llm.md +88 -0
  20. package/llm-docs/alert-dialog-description.llm.md +53 -0
  21. package/llm-docs/alert-dialog-footer.llm.md +41 -0
  22. package/llm-docs/alert-dialog-header.llm.md +39 -0
  23. package/llm-docs/alert-dialog-overlay.llm.md +44 -0
  24. package/llm-docs/alert-dialog-portal.llm.md +41 -0
  25. package/llm-docs/alert-dialog-title.llm.md +46 -0
  26. package/llm-docs/alert-dialog-trigger.llm.md +40 -0
  27. package/llm-docs/alert-dialog.llm.md +80 -0
  28. package/llm-docs/alert-title.llm.md +48 -0
  29. package/llm-docs/alert.llm.md +92 -0
  30. package/llm-docs/aspect-ratio.llm.md +41 -0
  31. package/llm-docs/avatar-fallback.llm.md +41 -0
  32. package/llm-docs/avatar-image.llm.md +48 -0
  33. package/llm-docs/avatar.llm.md +35 -0
  34. package/llm-docs/badge.llm.md +108 -0
  35. package/llm-docs/blockquote.llm.md +122 -0
  36. package/llm-docs/breadcrumb-ellipsis.llm.md +73 -0
  37. package/llm-docs/breadcrumb-item.llm.md +53 -0
  38. package/llm-docs/breadcrumb-link.llm.md +84 -0
  39. package/llm-docs/breadcrumb-list.llm.md +54 -0
  40. package/llm-docs/breadcrumb-page.llm.md +52 -0
  41. package/llm-docs/breadcrumb-separator.llm.md +60 -0
  42. package/llm-docs/breadcrumb.llm.md +110 -0
  43. package/llm-docs/button.llm.md +281 -0
  44. package/llm-docs/calendar-day-button.llm.md +57 -0
  45. package/llm-docs/calendar.llm.md +340 -0
  46. package/llm-docs/card-action.llm.md +64 -0
  47. package/llm-docs/card-content.llm.md +48 -0
  48. package/llm-docs/card-description.llm.md +46 -0
  49. package/llm-docs/card-footer.llm.md +56 -0
  50. package/llm-docs/card-header.llm.md +53 -0
  51. package/llm-docs/card-title.llm.md +43 -0
  52. package/llm-docs/card.llm.md +100 -0
  53. package/llm-docs/carousel-content.llm.md +77 -0
  54. package/llm-docs/carousel-item.llm.md +96 -0
  55. package/llm-docs/carousel-next.llm.md +95 -0
  56. package/llm-docs/carousel-previous.llm.md +95 -0
  57. package/llm-docs/carousel.llm.md +211 -0
  58. package/llm-docs/chart-config.llm.md +71 -0
  59. package/llm-docs/chart-container.llm.md +148 -0
  60. package/llm-docs/chart-legend-content.llm.md +85 -0
  61. package/llm-docs/chart-legend.llm.md +144 -0
  62. package/llm-docs/chart-style.llm.md +28 -0
  63. package/llm-docs/chart-tooltip-content.llm.md +149 -0
  64. package/llm-docs/chart-tooltip.llm.md +184 -0
  65. package/llm-docs/checkbox.llm.md +100 -0
  66. package/llm-docs/cn.llm.md +46 -0
  67. package/llm-docs/code.llm.md +108 -0
  68. package/llm-docs/collapsible-content.llm.md +109 -0
  69. package/llm-docs/collapsible-trigger.llm.md +75 -0
  70. package/llm-docs/collapsible.llm.md +109 -0
  71. package/llm-docs/combobox-option.llm.md +53 -0
  72. package/llm-docs/combobox.llm.md +208 -0
  73. package/llm-docs/command-dialog.llm.md +112 -0
  74. package/llm-docs/command-empty.llm.md +63 -0
  75. package/llm-docs/command-group.llm.md +83 -0
  76. package/llm-docs/command-input.llm.md +82 -0
  77. package/llm-docs/command-item.llm.md +97 -0
  78. package/llm-docs/command-list.llm.md +53 -0
  79. package/llm-docs/command-loading.llm.md +48 -0
  80. package/llm-docs/command-separator.llm.md +44 -0
  81. package/llm-docs/command-shortcut.llm.md +63 -0
  82. package/llm-docs/command.llm.md +147 -0
  83. package/llm-docs/container.llm.md +236 -0
  84. package/llm-docs/context-menu-checkbox-item.llm.md +97 -0
  85. package/llm-docs/context-menu-content.llm.md +91 -0
  86. package/llm-docs/context-menu-group.llm.md +61 -0
  87. package/llm-docs/context-menu-item.llm.md +94 -0
  88. package/llm-docs/context-menu-label.llm.md +60 -0
  89. package/llm-docs/context-menu-portal.llm.md +49 -0
  90. package/llm-docs/context-menu-radio-group.llm.md +66 -0
  91. package/llm-docs/context-menu-radio-item.llm.md +76 -0
  92. package/llm-docs/context-menu-separator.llm.md +51 -0
  93. package/llm-docs/context-menu-shortcut.llm.md +57 -0
  94. package/llm-docs/context-menu-sub-content.llm.md +90 -0
  95. package/llm-docs/context-menu-sub-trigger.llm.md +73 -0
  96. package/llm-docs/context-menu-sub.llm.md +61 -0
  97. package/llm-docs/context-menu-trigger.llm.md +53 -0
  98. package/llm-docs/context-menu.llm.md +103 -0
  99. package/llm-docs/date-picker.llm.md +90 -0
  100. package/llm-docs/dialog-close.llm.md +61 -0
  101. package/llm-docs/dialog-content.llm.md +128 -0
  102. package/llm-docs/dialog-description.llm.md +44 -0
  103. package/llm-docs/dialog-footer.llm.md +38 -0
  104. package/llm-docs/dialog-header.llm.md +40 -0
  105. package/llm-docs/dialog-overlay.llm.md +57 -0
  106. package/llm-docs/dialog-portal.llm.md +47 -0
  107. package/llm-docs/dialog-title.llm.md +41 -0
  108. package/llm-docs/dialog-trigger.llm.md +51 -0
  109. package/llm-docs/dialog.llm.md +113 -0
  110. package/llm-docs/drawer-close.llm.md +53 -0
  111. package/llm-docs/drawer-content.llm.md +58 -0
  112. package/llm-docs/drawer-description.llm.md +54 -0
  113. package/llm-docs/drawer-footer.llm.md +67 -0
  114. package/llm-docs/drawer-header.llm.md +60 -0
  115. package/llm-docs/drawer-overlay.llm.md +40 -0
  116. package/llm-docs/drawer-portal.llm.md +42 -0
  117. package/llm-docs/drawer-title.llm.md +51 -0
  118. package/llm-docs/drawer-trigger.llm.md +44 -0
  119. package/llm-docs/drawer.llm.md +194 -0
  120. package/llm-docs/dropdown-menu-checkbox-item.llm.md +111 -0
  121. package/llm-docs/dropdown-menu-content.llm.md +109 -0
  122. package/llm-docs/dropdown-menu-group.llm.md +38 -0
  123. package/llm-docs/dropdown-menu-item.llm.md +94 -0
  124. package/llm-docs/dropdown-menu-label.llm.md +66 -0
  125. package/llm-docs/dropdown-menu-portal.llm.md +32 -0
  126. package/llm-docs/dropdown-menu-radio-group.llm.md +73 -0
  127. package/llm-docs/dropdown-menu-radio-item.llm.md +92 -0
  128. package/llm-docs/dropdown-menu-separator.llm.md +55 -0
  129. package/llm-docs/dropdown-menu-shortcut.llm.md +74 -0
  130. package/llm-docs/dropdown-menu-sub-content.llm.md +80 -0
  131. package/llm-docs/dropdown-menu-sub-trigger.llm.md +84 -0
  132. package/llm-docs/dropdown-menu-sub.llm.md +74 -0
  133. package/llm-docs/dropdown-menu-trigger.llm.md +48 -0
  134. package/llm-docs/dropdown-menu.llm.md +120 -0
  135. package/llm-docs/empty-state.llm.md +174 -0
  136. package/llm-docs/h1.llm.md +113 -0
  137. package/llm-docs/h2.llm.md +113 -0
  138. package/llm-docs/h3.llm.md +111 -0
  139. package/llm-docs/h4.llm.md +109 -0
  140. package/llm-docs/h5.llm.md +110 -0
  141. package/llm-docs/h6.llm.md +110 -0
  142. package/llm-docs/hover-card-content.llm.md +167 -0
  143. package/llm-docs/hover-card-trigger.llm.md +65 -0
  144. package/llm-docs/hover-card.llm.md +121 -0
  145. package/llm-docs/input.llm.md +319 -0
  146. package/llm-docs/label.llm.md +145 -0
  147. package/llm-docs/lead.llm.md +119 -0
  148. package/llm-docs/menubar-checkbox-item.llm.md +66 -0
  149. package/llm-docs/menubar-content.llm.md +128 -0
  150. package/llm-docs/menubar-group.llm.md +40 -0
  151. package/llm-docs/menubar-item.llm.md +62 -0
  152. package/llm-docs/menubar-label.llm.md +40 -0
  153. package/llm-docs/menubar-menu.llm.md +32 -0
  154. package/llm-docs/menubar-portal.llm.md +38 -0
  155. package/llm-docs/menubar-radio-group.llm.md +39 -0
  156. package/llm-docs/menubar-radio-item.llm.md +59 -0
  157. package/llm-docs/menubar-separator.llm.md +35 -0
  158. package/llm-docs/menubar-shortcut.llm.md +37 -0
  159. package/llm-docs/menubar-sub-content.llm.md +127 -0
  160. package/llm-docs/menubar-sub-trigger.llm.md +51 -0
  161. package/llm-docs/menubar-sub.llm.md +53 -0
  162. package/llm-docs/menubar-trigger.llm.md +37 -0
  163. package/llm-docs/menubar.llm.md +115 -0
  164. package/llm-docs/navigation-menu-content.llm.md +116 -0
  165. package/llm-docs/navigation-menu-indicator.llm.md +68 -0
  166. package/llm-docs/navigation-menu-item.llm.md +62 -0
  167. package/llm-docs/navigation-menu-link.llm.md +109 -0
  168. package/llm-docs/navigation-menu-list.llm.md +52 -0
  169. package/llm-docs/navigation-menu-trigger-style.llm.md +22 -0
  170. package/llm-docs/navigation-menu-trigger.llm.md +57 -0
  171. package/llm-docs/navigation-menu-viewport.llm.md +51 -0
  172. package/llm-docs/navigation-menu.llm.md +184 -0
  173. package/llm-docs/p.llm.md +115 -0
  174. package/llm-docs/pagination-content.llm.md +60 -0
  175. package/llm-docs/pagination-ellipsis.llm.md +107 -0
  176. package/llm-docs/pagination-item.llm.md +59 -0
  177. package/llm-docs/pagination-link.llm.md +150 -0
  178. package/llm-docs/pagination-next.llm.md +115 -0
  179. package/llm-docs/pagination-previous.llm.md +115 -0
  180. package/llm-docs/pagination.llm.md +190 -0
  181. package/llm-docs/popover-anchor.llm.md +53 -0
  182. package/llm-docs/popover-content.llm.md +109 -0
  183. package/llm-docs/popover-trigger.llm.md +54 -0
  184. package/llm-docs/popover.llm.md +116 -0
  185. package/llm-docs/progress.llm.md +76 -0
  186. package/llm-docs/radio-group-indicator.llm.md +28 -0
  187. package/llm-docs/radio-group-item.llm.md +40 -0
  188. package/llm-docs/radio-group.llm.md +76 -0
  189. package/llm-docs/resizable-handle.llm.md +156 -0
  190. package/llm-docs/resizable-panel-group.llm.md +149 -0
  191. package/llm-docs/resizable-panel.llm.md +157 -0
  192. package/llm-docs/scroll-area-corner.llm.md +41 -0
  193. package/llm-docs/scroll-area-thumb.llm.md +39 -0
  194. package/llm-docs/scroll-area-viewport.llm.md +60 -0
  195. package/llm-docs/scroll-area.llm.md +125 -0
  196. package/llm-docs/scroll-bar.llm.md +78 -0
  197. package/llm-docs/sdk-items-registry.json +2638 -0
  198. package/llm-docs/select-content.llm.md +139 -0
  199. package/llm-docs/select-group.llm.md +60 -0
  200. package/llm-docs/select-item.llm.md +75 -0
  201. package/llm-docs/select-label.llm.md +62 -0
  202. package/llm-docs/select-scroll-down-button.llm.md +45 -0
  203. package/llm-docs/select-scroll-up-button.llm.md +45 -0
  204. package/llm-docs/select-separator.llm.md +59 -0
  205. package/llm-docs/select-trigger.llm.md +66 -0
  206. package/llm-docs/select-value.llm.md +67 -0
  207. package/llm-docs/select.llm.md +159 -0
  208. package/llm-docs/separator.llm.md +129 -0
  209. package/llm-docs/sheet-close.llm.md +49 -0
  210. package/llm-docs/sheet-content.llm.md +115 -0
  211. package/llm-docs/sheet-description.llm.md +62 -0
  212. package/llm-docs/sheet-footer.llm.md +64 -0
  213. package/llm-docs/sheet-header.llm.md +52 -0
  214. package/llm-docs/sheet-title.llm.md +53 -0
  215. package/llm-docs/sheet-trigger.llm.md +46 -0
  216. package/llm-docs/sheet.llm.md +126 -0
  217. package/llm-docs/sidebar-content.llm.md +63 -0
  218. package/llm-docs/sidebar-footer.llm.md +50 -0
  219. package/llm-docs/sidebar-group-action.llm.md +60 -0
  220. package/llm-docs/sidebar-group-content.llm.md +64 -0
  221. package/llm-docs/sidebar-group-label.llm.md +53 -0
  222. package/llm-docs/sidebar-group.llm.md +56 -0
  223. package/llm-docs/sidebar-header.llm.md +67 -0
  224. package/llm-docs/sidebar-input.llm.md +50 -0
  225. package/llm-docs/sidebar-inset.llm.md +52 -0
  226. package/llm-docs/sidebar-menu-action.llm.md +84 -0
  227. package/llm-docs/sidebar-menu-badge.llm.md +60 -0
  228. package/llm-docs/sidebar-menu-button.llm.md +103 -0
  229. package/llm-docs/sidebar-menu-item.llm.md +75 -0
  230. package/llm-docs/sidebar-menu-skeleton.llm.md +76 -0
  231. package/llm-docs/sidebar-menu-sub-button.llm.md +85 -0
  232. package/llm-docs/sidebar-menu-sub-item.llm.md +54 -0
  233. package/llm-docs/sidebar-menu-sub.llm.md +74 -0
  234. package/llm-docs/sidebar-menu.llm.md +65 -0
  235. package/llm-docs/sidebar-provider.llm.md +79 -0
  236. package/llm-docs/sidebar-rail.llm.md +34 -0
  237. package/llm-docs/sidebar-separator.llm.md +57 -0
  238. package/llm-docs/sidebar-trigger.llm.md +49 -0
  239. package/llm-docs/sidebar.llm.md +129 -0
  240. package/llm-docs/skeleton.llm.md +134 -0
  241. package/llm-docs/slider.llm.md +173 -0
  242. package/llm-docs/small.llm.md +115 -0
  243. package/llm-docs/span.llm.md +132 -0
  244. package/llm-docs/stack.llm.md +28 -0
  245. package/llm-docs/strong.llm.md +115 -0
  246. package/llm-docs/switch.llm.md +76 -0
  247. package/llm-docs/table-body.llm.md +36 -0
  248. package/llm-docs/table-caption.llm.md +48 -0
  249. package/llm-docs/table-cell.llm.md +53 -0
  250. package/llm-docs/table-footer.llm.md +41 -0
  251. package/llm-docs/table-head.llm.md +69 -0
  252. package/llm-docs/table-header.llm.md +41 -0
  253. package/llm-docs/table-row.llm.md +42 -0
  254. package/llm-docs/table.llm.md +123 -0
  255. package/llm-docs/tabs-content.llm.md +47 -0
  256. package/llm-docs/tabs-list.llm.md +41 -0
  257. package/llm-docs/tabs-trigger.llm.md +47 -0
  258. package/llm-docs/tabs.llm.md +71 -0
  259. package/llm-docs/text-field.llm.md +327 -0
  260. package/llm-docs/textarea.llm.md +311 -0
  261. package/llm-docs/theme-preference.llm.md +25 -0
  262. package/llm-docs/theme-toggle.llm.md +57 -0
  263. package/llm-docs/theme.llm.md +14 -0
  264. package/llm-docs/toast.llm.md +32 -0
  265. package/llm-docs/toaster.llm.md +193 -0
  266. package/llm-docs/toggle-group-item.llm.md +59 -0
  267. package/llm-docs/toggle-group.llm.md +101 -0
  268. package/llm-docs/toggle.llm.md +40 -0
  269. package/llm-docs/tooltip-content.llm.md +185 -0
  270. package/llm-docs/tooltip-provider.llm.md +68 -0
  271. package/llm-docs/tooltip-trigger.llm.md +70 -0
  272. package/llm-docs/tooltip.llm.md +129 -0
  273. package/llm-docs/typography.llm.md +175 -0
  274. package/llm-docs/use-carousel.llm.md +55 -0
  275. package/llm-docs/use-command-state.llm.md +32 -0
  276. package/llm-docs/use-is-mobile.llm.md +73 -0
  277. package/llm-docs/use-sidebar.llm.md +61 -0
  278. package/package.json +3 -2
  279. package/src/components/ui/stack.tsx +5 -1
  280. package/src/components/ui/stories/typography.stories.tsx +248 -205
  281. package/src/components/ui/typography.tsx +90 -79
  282. package/src/styles/globals.css +33 -10
@@ -0,0 +1,174 @@
1
+ # EmptyState
2
+
3
+ **Type**: component
4
+
5
+ EmptyState - Displays empty or no-data states with consistent UX patterns A comprehensive component for handling empty states across applications. Provides a standardized way to communicate when content is unavailable, data is missing, or initial setup is required. Built with accessibility-first principles and follows established empty state design patterns to guide users toward resolution. **Common Use Cases:** - Search results with no matches - Empty lists, tables, or dashboards - Inbox or notification centers with no items - Data visualization with no data - Onboarding states for new users - Error recovery scenarios **Component Structure:** The component follows a top-down visual hierarchy: Icon → Title → Description → Action. All elements except the title are optional, allowing for flexible implementation across different contexts while maintaining visual consistency.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { EmptyState } from '@neynar/ui';
11
+
12
+ <EmptyState
13
+ title="value"
14
+ description="value"
15
+ icon={value}
16
+ action={() => {}}
17
+ className="value"
18
+ >
19
+ {/* Your content here */}
20
+ </EmptyState>
21
+ ```
22
+
23
+ ## Component Props
24
+
25
+ ### title
26
+ - **Type**: `string`
27
+ - **Required**: Yes
28
+ - **Description**: No description available
29
+
30
+ ### description
31
+ - **Type**: `string`
32
+ - **Required**: No
33
+ - **Description**: No description available
34
+
35
+ ### icon
36
+ - **Type**: `React.ReactNode`
37
+ - **Required**: No
38
+ - **Description**: No description available
39
+
40
+ ### action
41
+ - **Type**: `{
42
+ /**
43
+ * Text label for the action button
44
+ *
45
+ * Should be specific and action-oriented rather than generic.
46
+ * @example "Create your first post", "Import data", "Try again"
47
+ */
48
+ label: string;
49
+
50
+ /**
51
+ * Click handler function executed when the action button is pressed
52
+ *
53
+ * Called when the user activates the button via click or keyboard interaction.
54
+ * Should handle the primary action to resolve the empty state.
55
+ */
56
+ onClick: () => void;
57
+ }`
58
+ - **Required**: No
59
+ - **Description**: No description available
60
+
61
+ ### className
62
+ - **Type**: `string`
63
+ - **Required**: No
64
+ - **Description**: No description available
65
+
66
+ ### children
67
+ - **Type**: `React.ReactNode`
68
+ - **Required**: No
69
+ - **Description**: No description available
70
+
71
+ ## Examples
72
+
73
+ ### Example 1
74
+ ```tsx
75
+ // Minimal empty state with just title
76
+ <EmptyState title="No notifications" />
77
+ ```
78
+ ### Example 2
79
+ ```tsx
80
+ // Search results empty state
81
+ import { Search } from 'lucide-react';
82
+ <EmptyState
83
+ icon={<Search className="w-12 h-12" />}
84
+ title="No results found"
85
+ description="Try adjusting your search terms or filters"
86
+ action={{
87
+ label: "Clear filters",
88
+ onClick: () => resetFilters()
89
+ }}
90
+ />
91
+ ```
92
+ ### Example 3
93
+ ```tsx
94
+ // Inbox empty state with call-to-action
95
+ import { Inbox, Plus } from 'lucide-react';
96
+ <EmptyState
97
+ icon={<Inbox className="w-16 h-16" />}
98
+ title="Your inbox is empty"
99
+ description="New messages and notifications will appear here"
100
+ action={{
101
+ label: "Compose message",
102
+ onClick: () => openComposer()
103
+ }}
104
+ />
105
+ ```
106
+ ### Example 4
107
+ ```tsx
108
+ // Data dashboard empty state with custom styling
109
+ import { BarChart3, TrendingUp } from 'lucide-react';
110
+ <EmptyState
111
+ className="min-h-[400px] bg-gradient-to-br from-muted/20 to-muted/10 rounded-lg border border-dashed border-muted-foreground/20"
112
+ icon={<BarChart3 className="w-14 h-14 opacity-60" />}
113
+ title="No analytics data"
114
+ description="Connect your data source or import historical data to view insights"
115
+ action={{
116
+ label: "Connect data source",
117
+ onClick: () => showDataSourceModal()
118
+ }}
119
+ />
120
+ ```
121
+ ### Example 5
122
+ ```tsx
123
+ // File manager empty state
124
+ import { FolderOpen, Upload } from 'lucide-react';
125
+ <EmptyState
126
+ icon={<FolderOpen className="w-12 h-12" />}
127
+ title="This folder is empty"
128
+ description="Drag and drop files here or use the upload button"
129
+ action={{
130
+ label: "Upload files",
131
+ onClick: () => triggerFileUpload()
132
+ }}
133
+ />
134
+ ```
135
+ ### Example 6
136
+ ```tsx
137
+ // Error recovery empty state
138
+ import { AlertTriangle, RefreshCw } from 'lucide-react';
139
+ <EmptyState
140
+ icon={<AlertTriangle className="w-12 h-12 text-destructive" />}
141
+ title="Failed to load data"
142
+ description="There was a problem loading your content. Please try again."
143
+ action={{
144
+ label: "Retry",
145
+ onClick: () => refetchData()
146
+ }}
147
+ />
148
+ ```
149
+ ### Example 7
150
+ ```tsx
151
+ // Team members empty state with multiple actions
152
+ import { Users, UserPlus, Mail } from 'lucide-react';
153
+ function TeamEmptyState() {
154
+ return (
155
+ <div className="space-y-4">
156
+ <EmptyState
157
+ icon={<Users className="w-16 h-16" />}
158
+ title="No team members yet"
159
+ description="Invite colleagues to collaborate on projects"
160
+ action={{
161
+ label: "Invite members",
162
+ onClick: () => openInviteModal()
163
+ }}
164
+ />
165
+ <div className="flex justify-center gap-2">
166
+ <Button variant="outline" size="sm" onClick={() => importFromCsv()}>
167
+ <Mail className="w-4 h-4 mr-2" />
168
+ Import from CSV
169
+ </Button>
170
+ </div>
171
+ </div>
172
+ );
173
+ }
174
+ ```
@@ -0,0 +1,113 @@
1
+ # H1
2
+
3
+ **Type**: component
4
+
5
+ H1 - Primary page heading component The main heading for a page or major section. Uses the "heading" variant with h1 semantic element. Should be used once per page for proper document outline and SEO.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { H1 } from '@neynar/ui';
11
+
12
+ <H1
13
+ color={value}
14
+ align={value}
15
+ transform={value}
16
+ weight={value}
17
+ htmlFor="value"
18
+ asChild={true}
19
+ italic={true}
20
+ underline={true}
21
+ strikethrough={true}
22
+ truncate={true}
23
+ srOnly={true}
24
+ className="value"
25
+ >
26
+ {/* Your content here */}
27
+ </H1>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### color
33
+ - **Type**: `| "default"
34
+ | "muted"
35
+ | "accent"
36
+ | "destructive"
37
+ | "success"
38
+ | "warning"`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### align
43
+ - **Type**: `"left" | "center" | "right" | "justify"`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### transform
48
+ - **Type**: `"uppercase" | "lowercase" | "capitalize"`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### weight
53
+ - **Type**: `"normal" | "medium" | "semibold" | "bold"`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### htmlFor
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### asChild
63
+ - **Type**: `boolean`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### italic
68
+ - **Type**: `boolean`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### underline
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### strikethrough
78
+ - **Type**: `boolean`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### truncate
83
+ - **Type**: `boolean`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### srOnly
88
+ - **Type**: `boolean`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### className
93
+ - **Type**: `string`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ### children
98
+ - **Type**: `React.ReactNode`
99
+ - **Required**: No
100
+ - **Description**: No description available
101
+
102
+ ## Examples
103
+
104
+ ```tsx
105
+ // Page title
106
+ <H1>Welcome to Neynar Platform</H1>
107
+ // With color variant
108
+ <H1 color="muted">Draft: Article Title</H1>
109
+ // With custom styling
110
+ <H1 align="center" className="mb-8">
111
+ Centered Page Heading
112
+ </H1>
113
+ ```
@@ -0,0 +1,113 @@
1
+ # H2
2
+
3
+ **Type**: component
4
+
5
+ H2 - Secondary section heading component Section headings that divide page content into logical groups. Uses the "subheading" variant with h2 semantic element. Essential for creating proper document hierarchy.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { H2 } from '@neynar/ui';
11
+
12
+ <H2
13
+ color={value}
14
+ align={value}
15
+ transform={value}
16
+ weight={value}
17
+ htmlFor="value"
18
+ asChild={true}
19
+ italic={true}
20
+ underline={true}
21
+ strikethrough={true}
22
+ truncate={true}
23
+ srOnly={true}
24
+ className="value"
25
+ >
26
+ {/* Your content here */}
27
+ </H2>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### color
33
+ - **Type**: `| "default"
34
+ | "muted"
35
+ | "accent"
36
+ | "destructive"
37
+ | "success"
38
+ | "warning"`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### align
43
+ - **Type**: `"left" | "center" | "right" | "justify"`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### transform
48
+ - **Type**: `"uppercase" | "lowercase" | "capitalize"`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### weight
53
+ - **Type**: `"normal" | "medium" | "semibold" | "bold"`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### htmlFor
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### asChild
63
+ - **Type**: `boolean`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### italic
68
+ - **Type**: `boolean`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### underline
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### strikethrough
78
+ - **Type**: `boolean`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### truncate
83
+ - **Type**: `boolean`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### srOnly
88
+ - **Type**: `boolean`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### className
93
+ - **Type**: `string`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ### children
98
+ - **Type**: `React.ReactNode`
99
+ - **Required**: No
100
+ - **Description**: No description available
101
+
102
+ ## Examples
103
+
104
+ ```tsx
105
+ // Section heading
106
+ <H2>Getting Started</H2>
107
+ // With accent color
108
+ <H2 color="accent">Featured Content</H2>
109
+ // With additional styling
110
+ <H2 weight="bold" className="border-b pb-2">
111
+ Section with Border
112
+ </H2>
113
+ ```
@@ -0,0 +1,111 @@
1
+ # H3
2
+
3
+ **Type**: component
4
+
5
+ H3 - Tertiary subsection heading component Subsection headings for further content division. Uses the "subheading" variant with h3 semantic element for consistent visual hierarchy.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { H3 } from '@neynar/ui';
11
+
12
+ <H3
13
+ color={value}
14
+ align={value}
15
+ transform={value}
16
+ weight={value}
17
+ htmlFor="value"
18
+ asChild={true}
19
+ italic={true}
20
+ underline={true}
21
+ strikethrough={true}
22
+ truncate={true}
23
+ srOnly={true}
24
+ className="value"
25
+ >
26
+ {/* Your content here */}
27
+ </H3>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### color
33
+ - **Type**: `| "default"
34
+ | "muted"
35
+ | "accent"
36
+ | "destructive"
37
+ | "success"
38
+ | "warning"`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### align
43
+ - **Type**: `"left" | "center" | "right" | "justify"`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### transform
48
+ - **Type**: `"uppercase" | "lowercase" | "capitalize"`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### weight
53
+ - **Type**: `"normal" | "medium" | "semibold" | "bold"`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### htmlFor
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### asChild
63
+ - **Type**: `boolean`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### italic
68
+ - **Type**: `boolean`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### underline
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### strikethrough
78
+ - **Type**: `boolean`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### truncate
83
+ - **Type**: `boolean`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### srOnly
88
+ - **Type**: `boolean`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### className
93
+ - **Type**: `string`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ### children
98
+ - **Type**: `React.ReactNode`
99
+ - **Required**: No
100
+ - **Description**: No description available
101
+
102
+ ## Examples
103
+
104
+ ```tsx
105
+ // Subsection heading
106
+ <H3>Installation Guide</H3>
107
+ // In a card or content block
108
+ <H3 color="muted" className="mb-3">
109
+ Optional Configuration
110
+ </H3>
111
+ ```
@@ -0,0 +1,109 @@
1
+ # H4
2
+
3
+ **Type**: component
4
+
5
+ H4 - Minor heading component for detailed sections Minor headings for detailed content organization. Uses "bodyEmphasized" variant with h4 semantic element for subtle but distinct hierarchy.
6
+
7
+ ## JSX Usage
8
+
9
+ ```jsx
10
+ import { H4 } from '@neynar/ui';
11
+
12
+ <H4
13
+ color={value}
14
+ align={value}
15
+ transform={value}
16
+ weight={value}
17
+ htmlFor="value"
18
+ asChild={true}
19
+ italic={true}
20
+ underline={true}
21
+ strikethrough={true}
22
+ truncate={true}
23
+ srOnly={true}
24
+ className="value"
25
+ >
26
+ {/* Your content here */}
27
+ </H4>
28
+ ```
29
+
30
+ ## Component Props
31
+
32
+ ### color
33
+ - **Type**: `| "default"
34
+ | "muted"
35
+ | "accent"
36
+ | "destructive"
37
+ | "success"
38
+ | "warning"`
39
+ - **Required**: No
40
+ - **Description**: No description available
41
+
42
+ ### align
43
+ - **Type**: `"left" | "center" | "right" | "justify"`
44
+ - **Required**: No
45
+ - **Description**: No description available
46
+
47
+ ### transform
48
+ - **Type**: `"uppercase" | "lowercase" | "capitalize"`
49
+ - **Required**: No
50
+ - **Description**: No description available
51
+
52
+ ### weight
53
+ - **Type**: `"normal" | "medium" | "semibold" | "bold"`
54
+ - **Required**: No
55
+ - **Description**: No description available
56
+
57
+ ### htmlFor
58
+ - **Type**: `string`
59
+ - **Required**: No
60
+ - **Description**: No description available
61
+
62
+ ### asChild
63
+ - **Type**: `boolean`
64
+ - **Required**: No
65
+ - **Description**: No description available
66
+
67
+ ### italic
68
+ - **Type**: `boolean`
69
+ - **Required**: No
70
+ - **Description**: No description available
71
+
72
+ ### underline
73
+ - **Type**: `boolean`
74
+ - **Required**: No
75
+ - **Description**: No description available
76
+
77
+ ### strikethrough
78
+ - **Type**: `boolean`
79
+ - **Required**: No
80
+ - **Description**: No description available
81
+
82
+ ### truncate
83
+ - **Type**: `boolean`
84
+ - **Required**: No
85
+ - **Description**: No description available
86
+
87
+ ### srOnly
88
+ - **Type**: `boolean`
89
+ - **Required**: No
90
+ - **Description**: No description available
91
+
92
+ ### className
93
+ - **Type**: `string`
94
+ - **Required**: No
95
+ - **Description**: No description available
96
+
97
+ ### children
98
+ - **Type**: `React.ReactNode`
99
+ - **Required**: No
100
+ - **Description**: No description available
101
+
102
+ ## Examples
103
+
104
+ ```tsx
105
+ // Minor section heading
106
+ <H4>Configuration Options</H4>
107
+ // In detailed documentation
108
+ <H4 color="muted">Advanced Settings</H4>
109
+ ```