@neynar/ui 0.2.0 → 0.3.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 (503) hide show
  1. package/dist/components/ui/badge.d.ts +7 -1
  2. package/dist/components/ui/badge.d.ts.map +1 -1
  3. package/dist/components/ui/button-group.d.ts +448 -0
  4. package/dist/components/ui/button-group.d.ts.map +1 -0
  5. package/dist/components/ui/button.d.ts +1 -1
  6. package/dist/components/ui/button.d.ts.map +1 -1
  7. package/dist/components/ui/empty-state.d.ts +1 -0
  8. package/dist/components/ui/empty-state.d.ts.map +1 -1
  9. package/dist/components/ui/empty.d.ts +630 -0
  10. package/dist/components/ui/empty.d.ts.map +1 -0
  11. package/dist/components/ui/field.d.ts +238 -0
  12. package/dist/components/ui/field.d.ts.map +1 -0
  13. package/dist/components/ui/input-group.d.ts +636 -0
  14. package/dist/components/ui/input-group.d.ts.map +1 -0
  15. package/dist/components/ui/item.d.ts +766 -0
  16. package/dist/components/ui/item.d.ts.map +1 -0
  17. package/dist/components/ui/kbd.d.ts +149 -0
  18. package/dist/components/ui/kbd.d.ts.map +1 -0
  19. package/dist/components/ui/spinner.d.ts +194 -0
  20. package/dist/components/ui/spinner.d.ts.map +1 -0
  21. package/dist/components/ui/stories/accordion.stories.d.ts +0 -1
  22. package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -1
  23. package/dist/components/ui/stories/alert-dialog.stories.d.ts +0 -1
  24. package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -1
  25. package/dist/components/ui/stories/alert.stories.d.ts +0 -1
  26. package/dist/components/ui/stories/alert.stories.d.ts.map +1 -1
  27. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +0 -1
  28. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
  29. package/dist/components/ui/stories/avatar.stories.d.ts +0 -1
  30. package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -1
  31. package/dist/components/ui/stories/badge.stories.d.ts +0 -1
  32. package/dist/components/ui/stories/badge.stories.d.ts.map +1 -1
  33. package/dist/components/ui/stories/breadcrumb.stories.d.ts +0 -1
  34. package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -1
  35. package/dist/components/ui/stories/button-group.stories.d.ts +48 -0
  36. package/dist/components/ui/stories/button-group.stories.d.ts.map +1 -0
  37. package/dist/components/ui/stories/button.stories.d.ts +0 -1
  38. package/dist/components/ui/stories/button.stories.d.ts.map +1 -1
  39. package/dist/components/ui/stories/calendar.stories.d.ts +0 -1
  40. package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -1
  41. package/dist/components/ui/stories/card.stories.d.ts +0 -1
  42. package/dist/components/ui/stories/card.stories.d.ts.map +1 -1
  43. package/dist/components/ui/stories/carousel.stories.d.ts +0 -1
  44. package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -1
  45. package/dist/components/ui/stories/chart.stories.d.ts +0 -1
  46. package/dist/components/ui/stories/chart.stories.d.ts.map +1 -1
  47. package/dist/components/ui/stories/checkbox.stories.d.ts +0 -1
  48. package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -1
  49. package/dist/components/ui/stories/cn.stories.d.ts.map +1 -1
  50. package/dist/components/ui/stories/collapsible.stories.d.ts +0 -1
  51. package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -1
  52. package/dist/components/ui/stories/colors.stories.d.ts +0 -1
  53. package/dist/components/ui/stories/colors.stories.d.ts.map +1 -1
  54. package/dist/components/ui/stories/combobox.stories.d.ts +0 -1
  55. package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -1
  56. package/dist/components/ui/stories/command.stories.d.ts +0 -1
  57. package/dist/components/ui/stories/command.stories.d.ts.map +1 -1
  58. package/dist/components/ui/stories/container.stories.d.ts +0 -1
  59. package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
  60. package/dist/components/ui/stories/context-menu.stories.d.ts +0 -1
  61. package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -1
  62. package/dist/components/ui/stories/date-picker.stories.d.ts +0 -1
  63. package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -1
  64. package/dist/components/ui/stories/dialog.stories.d.ts +0 -1
  65. package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -1
  66. package/dist/components/ui/stories/drawer.stories.d.ts +0 -1
  67. package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -1
  68. package/dist/components/ui/stories/dropdown-menu.stories.d.ts +0 -1
  69. package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -1
  70. package/dist/components/ui/stories/empty-state.stories.d.ts +0 -1
  71. package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -1
  72. package/dist/components/ui/stories/empty.stories.d.ts +38 -0
  73. package/dist/components/ui/stories/empty.stories.d.ts.map +1 -0
  74. package/dist/components/ui/stories/field.stories.d.ts +48 -0
  75. package/dist/components/ui/stories/field.stories.d.ts.map +1 -0
  76. package/dist/components/ui/stories/hover-card.stories.d.ts +0 -1
  77. package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -1
  78. package/dist/components/ui/stories/input-group.stories.d.ts +37 -0
  79. package/dist/components/ui/stories/input-group.stories.d.ts.map +1 -0
  80. package/dist/components/ui/stories/input.stories.d.ts +0 -1
  81. package/dist/components/ui/stories/input.stories.d.ts.map +1 -1
  82. package/dist/components/ui/stories/item.stories.d.ts +61 -0
  83. package/dist/components/ui/stories/item.stories.d.ts.map +1 -0
  84. package/dist/components/ui/stories/kbd.stories.d.ts +37 -0
  85. package/dist/components/ui/stories/kbd.stories.d.ts.map +1 -0
  86. package/dist/components/ui/stories/label.stories.d.ts +0 -1
  87. package/dist/components/ui/stories/label.stories.d.ts.map +1 -1
  88. package/dist/components/ui/stories/menubar.stories.d.ts +0 -1
  89. package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -1
  90. package/dist/components/ui/stories/navigation-menu.stories.d.ts +0 -1
  91. package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -1
  92. package/dist/components/ui/stories/pagination.stories.d.ts +0 -1
  93. package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -1
  94. package/dist/components/ui/stories/popover.stories.d.ts +0 -1
  95. package/dist/components/ui/stories/popover.stories.d.ts.map +1 -1
  96. package/dist/components/ui/stories/progress.stories.d.ts +0 -1
  97. package/dist/components/ui/stories/progress.stories.d.ts.map +1 -1
  98. package/dist/components/ui/stories/radio-group.stories.d.ts +0 -1
  99. package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -1
  100. package/dist/components/ui/stories/resizable.stories.d.ts +0 -1
  101. package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -1
  102. package/dist/components/ui/stories/scroll-area.stories.d.ts +0 -1
  103. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
  104. package/dist/components/ui/stories/select.stories.d.ts +0 -1
  105. package/dist/components/ui/stories/select.stories.d.ts.map +1 -1
  106. package/dist/components/ui/stories/separator.stories.d.ts +0 -1
  107. package/dist/components/ui/stories/separator.stories.d.ts.map +1 -1
  108. package/dist/components/ui/stories/sheet.stories.d.ts +0 -1
  109. package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -1
  110. package/dist/components/ui/stories/sidebar.stories.d.ts +0 -1
  111. package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -1
  112. package/dist/components/ui/stories/skeleton.stories.d.ts +0 -1
  113. package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -1
  114. package/dist/components/ui/stories/slider.stories.d.ts +0 -1
  115. package/dist/components/ui/stories/slider.stories.d.ts.map +1 -1
  116. package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -1
  117. package/dist/components/ui/stories/spinner.stories.d.ts +37 -0
  118. package/dist/components/ui/stories/spinner.stories.d.ts.map +1 -0
  119. package/dist/components/ui/stories/stack.stories.d.ts +0 -1
  120. package/dist/components/ui/stories/stack.stories.d.ts.map +1 -1
  121. package/dist/components/ui/stories/switch.stories.d.ts +0 -1
  122. package/dist/components/ui/stories/switch.stories.d.ts.map +1 -1
  123. package/dist/components/ui/stories/table.stories.d.ts +0 -1
  124. package/dist/components/ui/stories/table.stories.d.ts.map +1 -1
  125. package/dist/components/ui/stories/tabs.stories.d.ts +0 -1
  126. package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -1
  127. package/dist/components/ui/stories/text-field.stories.d.ts +0 -1
  128. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
  129. package/dist/components/ui/stories/textarea.stories.d.ts +0 -1
  130. package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -1
  131. package/dist/components/ui/stories/theme-toggle.stories.d.ts +0 -1
  132. package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -1
  133. package/dist/components/ui/stories/theme.stories.d.ts +0 -1
  134. package/dist/components/ui/stories/theme.stories.d.ts.map +1 -1
  135. package/dist/components/ui/stories/toggle-group.stories.d.ts +0 -1
  136. package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -1
  137. package/dist/components/ui/stories/toggle.stories.d.ts +0 -1
  138. package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -1
  139. package/dist/components/ui/stories/tooltip.stories.d.ts +0 -1
  140. package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -1
  141. package/dist/components/ui/stories/typography.stories.d.ts +0 -1
  142. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  143. package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -1
  144. package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -1
  145. package/dist/components/ui/typography.d.ts +12 -11
  146. package/dist/components/ui/typography.d.ts.map +1 -1
  147. package/dist/index.d.ts +7 -0
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +21584 -12837
  150. package/dist/index.js.map +1 -1
  151. package/dist/tsconfig.tsbuildinfo +1 -1
  152. package/docs/llm/components/display.md +125 -0
  153. package/docs/llm/components/feedback.md +0 -14
  154. package/docs/llm/components/forms.md +94 -0
  155. package/docs/llm/components/layout.md +169 -0
  156. package/llms.txt +18 -12
  157. package/package.json +6 -5
  158. package/src/components/ui/badge.tsx +21 -3
  159. package/src/components/ui/button-group.tsx +525 -0
  160. package/src/components/ui/button.tsx +9 -12
  161. package/src/components/ui/empty-state.tsx +1 -0
  162. package/src/components/ui/empty.tsx +793 -0
  163. package/src/components/ui/field.tsx +494 -0
  164. package/src/components/ui/input-group.tsx +801 -0
  165. package/src/components/ui/item.tsx +955 -0
  166. package/src/components/ui/kbd.tsx +175 -0
  167. package/src/components/ui/skeleton.tsx +1 -1
  168. package/src/components/ui/spinner.tsx +211 -0
  169. package/src/components/ui/stories/accordion.stories.tsx +0 -1
  170. package/src/components/ui/stories/alert-dialog.stories.tsx +0 -1
  171. package/src/components/ui/stories/alert.stories.tsx +0 -1
  172. package/src/components/ui/stories/aspect-ratio.stories.tsx +0 -1
  173. package/src/components/ui/stories/avatar.stories.tsx +0 -1
  174. package/src/components/ui/stories/badge.stories.tsx +0 -1
  175. package/src/components/ui/stories/breadcrumb.stories.tsx +0 -1
  176. package/src/components/ui/stories/button-group.stories.tsx +300 -0
  177. package/src/components/ui/stories/button.stories.tsx +0 -1
  178. package/src/components/ui/stories/calendar.stories.tsx +0 -1
  179. package/src/components/ui/stories/card.stories.tsx +0 -1
  180. package/src/components/ui/stories/carousel.stories.tsx +0 -1
  181. package/src/components/ui/stories/chart.stories.tsx +0 -1
  182. package/src/components/ui/stories/checkbox.stories.tsx +0 -1
  183. package/src/components/ui/stories/cn.stories.tsx +0 -1
  184. package/src/components/ui/stories/collapsible.stories.tsx +0 -1
  185. package/src/components/ui/stories/colors.stories.tsx +0 -1
  186. package/src/components/ui/stories/combobox.stories.tsx +0 -1
  187. package/src/components/ui/stories/command.stories.tsx +0 -1
  188. package/src/components/ui/stories/container.stories.tsx +0 -1
  189. package/src/components/ui/stories/context-menu.stories.tsx +0 -1
  190. package/src/components/ui/stories/date-picker.stories.tsx +0 -1
  191. package/src/components/ui/stories/dialog.stories.tsx +0 -1
  192. package/src/components/ui/stories/drawer.stories.tsx +0 -1
  193. package/src/components/ui/stories/dropdown-menu.stories.tsx +0 -1
  194. package/src/components/ui/stories/empty-state.stories.tsx +0 -1
  195. package/src/components/ui/stories/empty.stories.tsx +293 -0
  196. package/src/components/ui/stories/field.stories.tsx +470 -0
  197. package/src/components/ui/stories/hover-card.stories.tsx +0 -1
  198. package/src/components/ui/stories/input-group.stories.tsx +444 -0
  199. package/src/components/ui/stories/input.stories.tsx +0 -1
  200. package/src/components/ui/stories/item.stories.tsx +601 -0
  201. package/src/components/ui/stories/kbd.stories.tsx +462 -0
  202. package/src/components/ui/stories/label.stories.tsx +0 -1
  203. package/src/components/ui/stories/menubar.stories.tsx +0 -1
  204. package/src/components/ui/stories/navigation-menu.stories.tsx +0 -1
  205. package/src/components/ui/stories/pagination.stories.tsx +0 -1
  206. package/src/components/ui/stories/popover.stories.tsx +0 -1
  207. package/src/components/ui/stories/progress.stories.tsx +0 -1
  208. package/src/components/ui/stories/radio-group.stories.tsx +0 -1
  209. package/src/components/ui/stories/resizable.stories.tsx +0 -1
  210. package/src/components/ui/stories/scroll-area.stories.tsx +0 -1
  211. package/src/components/ui/stories/select.stories.tsx +0 -1
  212. package/src/components/ui/stories/separator.stories.tsx +0 -1
  213. package/src/components/ui/stories/sheet.stories.tsx +0 -1
  214. package/src/components/ui/stories/sidebar.stories.tsx +0 -1
  215. package/src/components/ui/stories/skeleton.stories.tsx +0 -1
  216. package/src/components/ui/stories/slider.stories.tsx +0 -1
  217. package/src/components/ui/stories/sonner.stories.tsx +0 -1
  218. package/src/components/ui/stories/spinner.stories.tsx +356 -0
  219. package/src/components/ui/stories/stack.stories.tsx +0 -1
  220. package/src/components/ui/stories/switch.stories.tsx +0 -1
  221. package/src/components/ui/stories/table.stories.tsx +0 -1
  222. package/src/components/ui/stories/tabs.stories.tsx +0 -1
  223. package/src/components/ui/stories/text-field.stories.tsx +0 -1
  224. package/src/components/ui/stories/textarea.stories.tsx +0 -1
  225. package/src/components/ui/stories/theme-toggle.stories.tsx +0 -1
  226. package/src/components/ui/stories/theme.stories.tsx +0 -1
  227. package/src/components/ui/stories/toggle-group.stories.tsx +0 -1
  228. package/src/components/ui/stories/toggle.stories.tsx +0 -1
  229. package/src/components/ui/stories/tooltip.stories.tsx +0 -1
  230. package/src/components/ui/stories/typography.stories.tsx +5 -2
  231. package/src/components/ui/stories/use-mobile.stories.tsx +0 -1
  232. package/src/components/ui/stories/use-theme.stories.tsx +0 -1
  233. package/src/components/ui/tabs.tsx +1 -1
  234. package/src/components/ui/typography.tsx +29 -129
  235. package/src/index.ts +7 -0
  236. package/src/styles/globals.css +45 -25
  237. package/llm-docs/a.llm.md +0 -145
  238. package/llm-docs/accordion-content.llm.md +0 -67
  239. package/llm-docs/accordion-item.llm.md +0 -61
  240. package/llm-docs/accordion-trigger.llm.md +0 -69
  241. package/llm-docs/accordion.llm.md +0 -88
  242. package/llm-docs/alert-description.llm.md +0 -78
  243. package/llm-docs/alert-dialog-action.llm.md +0 -51
  244. package/llm-docs/alert-dialog-cancel.llm.md +0 -48
  245. package/llm-docs/alert-dialog-content.llm.md +0 -88
  246. package/llm-docs/alert-dialog-description.llm.md +0 -53
  247. package/llm-docs/alert-dialog-footer.llm.md +0 -41
  248. package/llm-docs/alert-dialog-header.llm.md +0 -39
  249. package/llm-docs/alert-dialog-overlay.llm.md +0 -44
  250. package/llm-docs/alert-dialog-portal.llm.md +0 -41
  251. package/llm-docs/alert-dialog-title.llm.md +0 -46
  252. package/llm-docs/alert-dialog-trigger.llm.md +0 -40
  253. package/llm-docs/alert-dialog.llm.md +0 -80
  254. package/llm-docs/alert-title.llm.md +0 -48
  255. package/llm-docs/alert.llm.md +0 -92
  256. package/llm-docs/aspect-ratio.llm.md +0 -41
  257. package/llm-docs/avatar-fallback.llm.md +0 -41
  258. package/llm-docs/avatar-image.llm.md +0 -48
  259. package/llm-docs/avatar.llm.md +0 -35
  260. package/llm-docs/badge.llm.md +0 -108
  261. package/llm-docs/blockquote.llm.md +0 -122
  262. package/llm-docs/breadcrumb-ellipsis.llm.md +0 -73
  263. package/llm-docs/breadcrumb-item.llm.md +0 -53
  264. package/llm-docs/breadcrumb-link.llm.md +0 -84
  265. package/llm-docs/breadcrumb-list.llm.md +0 -54
  266. package/llm-docs/breadcrumb-page.llm.md +0 -52
  267. package/llm-docs/breadcrumb-separator.llm.md +0 -60
  268. package/llm-docs/breadcrumb.llm.md +0 -110
  269. package/llm-docs/button.llm.md +0 -281
  270. package/llm-docs/calendar-day-button.llm.md +0 -57
  271. package/llm-docs/calendar.llm.md +0 -340
  272. package/llm-docs/card-action.llm.md +0 -64
  273. package/llm-docs/card-content.llm.md +0 -48
  274. package/llm-docs/card-description.llm.md +0 -46
  275. package/llm-docs/card-footer.llm.md +0 -56
  276. package/llm-docs/card-header.llm.md +0 -53
  277. package/llm-docs/card-title.llm.md +0 -43
  278. package/llm-docs/card.llm.md +0 -100
  279. package/llm-docs/carousel-content.llm.md +0 -77
  280. package/llm-docs/carousel-item.llm.md +0 -96
  281. package/llm-docs/carousel-next.llm.md +0 -95
  282. package/llm-docs/carousel-previous.llm.md +0 -95
  283. package/llm-docs/carousel.llm.md +0 -211
  284. package/llm-docs/chart-config.llm.md +0 -71
  285. package/llm-docs/chart-container.llm.md +0 -148
  286. package/llm-docs/chart-legend-content.llm.md +0 -85
  287. package/llm-docs/chart-legend.llm.md +0 -144
  288. package/llm-docs/chart-style.llm.md +0 -28
  289. package/llm-docs/chart-tooltip-content.llm.md +0 -149
  290. package/llm-docs/chart-tooltip.llm.md +0 -184
  291. package/llm-docs/checkbox.llm.md +0 -100
  292. package/llm-docs/cn.llm.md +0 -46
  293. package/llm-docs/code.llm.md +0 -108
  294. package/llm-docs/collapsible-content.llm.md +0 -109
  295. package/llm-docs/collapsible-trigger.llm.md +0 -75
  296. package/llm-docs/collapsible.llm.md +0 -109
  297. package/llm-docs/combobox-option.llm.md +0 -53
  298. package/llm-docs/combobox.llm.md +0 -208
  299. package/llm-docs/command-dialog.llm.md +0 -112
  300. package/llm-docs/command-empty.llm.md +0 -63
  301. package/llm-docs/command-group.llm.md +0 -83
  302. package/llm-docs/command-input.llm.md +0 -82
  303. package/llm-docs/command-item.llm.md +0 -97
  304. package/llm-docs/command-list.llm.md +0 -53
  305. package/llm-docs/command-loading.llm.md +0 -48
  306. package/llm-docs/command-separator.llm.md +0 -44
  307. package/llm-docs/command-shortcut.llm.md +0 -63
  308. package/llm-docs/command.llm.md +0 -147
  309. package/llm-docs/container.llm.md +0 -236
  310. package/llm-docs/context-menu-checkbox-item.llm.md +0 -97
  311. package/llm-docs/context-menu-content.llm.md +0 -91
  312. package/llm-docs/context-menu-group.llm.md +0 -61
  313. package/llm-docs/context-menu-item.llm.md +0 -94
  314. package/llm-docs/context-menu-label.llm.md +0 -60
  315. package/llm-docs/context-menu-portal.llm.md +0 -49
  316. package/llm-docs/context-menu-radio-group.llm.md +0 -66
  317. package/llm-docs/context-menu-radio-item.llm.md +0 -76
  318. package/llm-docs/context-menu-separator.llm.md +0 -51
  319. package/llm-docs/context-menu-shortcut.llm.md +0 -57
  320. package/llm-docs/context-menu-sub-content.llm.md +0 -90
  321. package/llm-docs/context-menu-sub-trigger.llm.md +0 -73
  322. package/llm-docs/context-menu-sub.llm.md +0 -61
  323. package/llm-docs/context-menu-trigger.llm.md +0 -53
  324. package/llm-docs/context-menu.llm.md +0 -103
  325. package/llm-docs/date-picker.llm.md +0 -90
  326. package/llm-docs/dialog-close.llm.md +0 -61
  327. package/llm-docs/dialog-content.llm.md +0 -128
  328. package/llm-docs/dialog-description.llm.md +0 -44
  329. package/llm-docs/dialog-footer.llm.md +0 -38
  330. package/llm-docs/dialog-header.llm.md +0 -40
  331. package/llm-docs/dialog-overlay.llm.md +0 -57
  332. package/llm-docs/dialog-portal.llm.md +0 -47
  333. package/llm-docs/dialog-title.llm.md +0 -41
  334. package/llm-docs/dialog-trigger.llm.md +0 -51
  335. package/llm-docs/dialog.llm.md +0 -113
  336. package/llm-docs/drawer-close.llm.md +0 -53
  337. package/llm-docs/drawer-content.llm.md +0 -58
  338. package/llm-docs/drawer-description.llm.md +0 -54
  339. package/llm-docs/drawer-footer.llm.md +0 -67
  340. package/llm-docs/drawer-header.llm.md +0 -60
  341. package/llm-docs/drawer-overlay.llm.md +0 -40
  342. package/llm-docs/drawer-portal.llm.md +0 -42
  343. package/llm-docs/drawer-title.llm.md +0 -51
  344. package/llm-docs/drawer-trigger.llm.md +0 -44
  345. package/llm-docs/drawer.llm.md +0 -194
  346. package/llm-docs/dropdown-menu-checkbox-item.llm.md +0 -111
  347. package/llm-docs/dropdown-menu-content.llm.md +0 -109
  348. package/llm-docs/dropdown-menu-group.llm.md +0 -38
  349. package/llm-docs/dropdown-menu-item.llm.md +0 -94
  350. package/llm-docs/dropdown-menu-label.llm.md +0 -66
  351. package/llm-docs/dropdown-menu-portal.llm.md +0 -32
  352. package/llm-docs/dropdown-menu-radio-group.llm.md +0 -73
  353. package/llm-docs/dropdown-menu-radio-item.llm.md +0 -92
  354. package/llm-docs/dropdown-menu-separator.llm.md +0 -55
  355. package/llm-docs/dropdown-menu-shortcut.llm.md +0 -74
  356. package/llm-docs/dropdown-menu-sub-content.llm.md +0 -80
  357. package/llm-docs/dropdown-menu-sub-trigger.llm.md +0 -84
  358. package/llm-docs/dropdown-menu-sub.llm.md +0 -74
  359. package/llm-docs/dropdown-menu-trigger.llm.md +0 -48
  360. package/llm-docs/dropdown-menu.llm.md +0 -120
  361. package/llm-docs/empty-state.llm.md +0 -174
  362. package/llm-docs/h1.llm.md +0 -113
  363. package/llm-docs/h2.llm.md +0 -113
  364. package/llm-docs/h3.llm.md +0 -111
  365. package/llm-docs/h4.llm.md +0 -109
  366. package/llm-docs/h5.llm.md +0 -110
  367. package/llm-docs/h6.llm.md +0 -110
  368. package/llm-docs/hover-card-content.llm.md +0 -167
  369. package/llm-docs/hover-card-trigger.llm.md +0 -65
  370. package/llm-docs/hover-card.llm.md +0 -121
  371. package/llm-docs/input.llm.md +0 -319
  372. package/llm-docs/label.llm.md +0 -145
  373. package/llm-docs/lead.llm.md +0 -119
  374. package/llm-docs/menubar-checkbox-item.llm.md +0 -66
  375. package/llm-docs/menubar-content.llm.md +0 -128
  376. package/llm-docs/menubar-group.llm.md +0 -40
  377. package/llm-docs/menubar-item.llm.md +0 -62
  378. package/llm-docs/menubar-label.llm.md +0 -40
  379. package/llm-docs/menubar-menu.llm.md +0 -32
  380. package/llm-docs/menubar-portal.llm.md +0 -38
  381. package/llm-docs/menubar-radio-group.llm.md +0 -39
  382. package/llm-docs/menubar-radio-item.llm.md +0 -59
  383. package/llm-docs/menubar-separator.llm.md +0 -35
  384. package/llm-docs/menubar-shortcut.llm.md +0 -37
  385. package/llm-docs/menubar-sub-content.llm.md +0 -127
  386. package/llm-docs/menubar-sub-trigger.llm.md +0 -51
  387. package/llm-docs/menubar-sub.llm.md +0 -53
  388. package/llm-docs/menubar-trigger.llm.md +0 -37
  389. package/llm-docs/menubar.llm.md +0 -115
  390. package/llm-docs/navigation-menu-content.llm.md +0 -116
  391. package/llm-docs/navigation-menu-indicator.llm.md +0 -68
  392. package/llm-docs/navigation-menu-item.llm.md +0 -62
  393. package/llm-docs/navigation-menu-link.llm.md +0 -109
  394. package/llm-docs/navigation-menu-list.llm.md +0 -52
  395. package/llm-docs/navigation-menu-trigger-style.llm.md +0 -22
  396. package/llm-docs/navigation-menu-trigger.llm.md +0 -57
  397. package/llm-docs/navigation-menu-viewport.llm.md +0 -51
  398. package/llm-docs/navigation-menu.llm.md +0 -184
  399. package/llm-docs/p.llm.md +0 -115
  400. package/llm-docs/pagination-content.llm.md +0 -60
  401. package/llm-docs/pagination-ellipsis.llm.md +0 -107
  402. package/llm-docs/pagination-item.llm.md +0 -59
  403. package/llm-docs/pagination-link.llm.md +0 -150
  404. package/llm-docs/pagination-next.llm.md +0 -115
  405. package/llm-docs/pagination-previous.llm.md +0 -115
  406. package/llm-docs/pagination.llm.md +0 -190
  407. package/llm-docs/popover-anchor.llm.md +0 -53
  408. package/llm-docs/popover-content.llm.md +0 -109
  409. package/llm-docs/popover-trigger.llm.md +0 -54
  410. package/llm-docs/popover.llm.md +0 -116
  411. package/llm-docs/progress.llm.md +0 -76
  412. package/llm-docs/radio-group-indicator.llm.md +0 -28
  413. package/llm-docs/radio-group-item.llm.md +0 -40
  414. package/llm-docs/radio-group.llm.md +0 -76
  415. package/llm-docs/resizable-handle.llm.md +0 -156
  416. package/llm-docs/resizable-panel-group.llm.md +0 -149
  417. package/llm-docs/resizable-panel.llm.md +0 -157
  418. package/llm-docs/scroll-area-corner.llm.md +0 -41
  419. package/llm-docs/scroll-area-thumb.llm.md +0 -39
  420. package/llm-docs/scroll-area-viewport.llm.md +0 -60
  421. package/llm-docs/scroll-area.llm.md +0 -125
  422. package/llm-docs/scroll-bar.llm.md +0 -78
  423. package/llm-docs/sdk-items-registry.json +0 -2638
  424. package/llm-docs/select-content.llm.md +0 -139
  425. package/llm-docs/select-group.llm.md +0 -60
  426. package/llm-docs/select-item.llm.md +0 -75
  427. package/llm-docs/select-label.llm.md +0 -62
  428. package/llm-docs/select-scroll-down-button.llm.md +0 -45
  429. package/llm-docs/select-scroll-up-button.llm.md +0 -45
  430. package/llm-docs/select-separator.llm.md +0 -59
  431. package/llm-docs/select-trigger.llm.md +0 -66
  432. package/llm-docs/select-value.llm.md +0 -67
  433. package/llm-docs/select.llm.md +0 -159
  434. package/llm-docs/separator.llm.md +0 -129
  435. package/llm-docs/sheet-close.llm.md +0 -49
  436. package/llm-docs/sheet-content.llm.md +0 -115
  437. package/llm-docs/sheet-description.llm.md +0 -62
  438. package/llm-docs/sheet-footer.llm.md +0 -64
  439. package/llm-docs/sheet-header.llm.md +0 -52
  440. package/llm-docs/sheet-title.llm.md +0 -53
  441. package/llm-docs/sheet-trigger.llm.md +0 -46
  442. package/llm-docs/sheet.llm.md +0 -126
  443. package/llm-docs/sidebar-content.llm.md +0 -63
  444. package/llm-docs/sidebar-footer.llm.md +0 -50
  445. package/llm-docs/sidebar-group-action.llm.md +0 -60
  446. package/llm-docs/sidebar-group-content.llm.md +0 -64
  447. package/llm-docs/sidebar-group-label.llm.md +0 -53
  448. package/llm-docs/sidebar-group.llm.md +0 -56
  449. package/llm-docs/sidebar-header.llm.md +0 -67
  450. package/llm-docs/sidebar-input.llm.md +0 -50
  451. package/llm-docs/sidebar-inset.llm.md +0 -52
  452. package/llm-docs/sidebar-menu-action.llm.md +0 -84
  453. package/llm-docs/sidebar-menu-badge.llm.md +0 -60
  454. package/llm-docs/sidebar-menu-button.llm.md +0 -103
  455. package/llm-docs/sidebar-menu-item.llm.md +0 -75
  456. package/llm-docs/sidebar-menu-skeleton.llm.md +0 -76
  457. package/llm-docs/sidebar-menu-sub-button.llm.md +0 -85
  458. package/llm-docs/sidebar-menu-sub-item.llm.md +0 -54
  459. package/llm-docs/sidebar-menu-sub.llm.md +0 -74
  460. package/llm-docs/sidebar-menu.llm.md +0 -65
  461. package/llm-docs/sidebar-provider.llm.md +0 -79
  462. package/llm-docs/sidebar-rail.llm.md +0 -34
  463. package/llm-docs/sidebar-separator.llm.md +0 -57
  464. package/llm-docs/sidebar-trigger.llm.md +0 -49
  465. package/llm-docs/sidebar.llm.md +0 -129
  466. package/llm-docs/skeleton.llm.md +0 -134
  467. package/llm-docs/slider.llm.md +0 -173
  468. package/llm-docs/small.llm.md +0 -115
  469. package/llm-docs/span.llm.md +0 -132
  470. package/llm-docs/stack.llm.md +0 -28
  471. package/llm-docs/strong.llm.md +0 -115
  472. package/llm-docs/switch.llm.md +0 -76
  473. package/llm-docs/table-body.llm.md +0 -36
  474. package/llm-docs/table-caption.llm.md +0 -48
  475. package/llm-docs/table-cell.llm.md +0 -53
  476. package/llm-docs/table-footer.llm.md +0 -41
  477. package/llm-docs/table-head.llm.md +0 -69
  478. package/llm-docs/table-header.llm.md +0 -41
  479. package/llm-docs/table-row.llm.md +0 -42
  480. package/llm-docs/table.llm.md +0 -123
  481. package/llm-docs/tabs-content.llm.md +0 -47
  482. package/llm-docs/tabs-list.llm.md +0 -41
  483. package/llm-docs/tabs-trigger.llm.md +0 -47
  484. package/llm-docs/tabs.llm.md +0 -71
  485. package/llm-docs/text-field.llm.md +0 -327
  486. package/llm-docs/textarea.llm.md +0 -311
  487. package/llm-docs/theme-preference.llm.md +0 -25
  488. package/llm-docs/theme-toggle.llm.md +0 -57
  489. package/llm-docs/theme.llm.md +0 -14
  490. package/llm-docs/toast.llm.md +0 -32
  491. package/llm-docs/toaster.llm.md +0 -193
  492. package/llm-docs/toggle-group-item.llm.md +0 -59
  493. package/llm-docs/toggle-group.llm.md +0 -101
  494. package/llm-docs/toggle.llm.md +0 -40
  495. package/llm-docs/tooltip-content.llm.md +0 -185
  496. package/llm-docs/tooltip-provider.llm.md +0 -68
  497. package/llm-docs/tooltip-trigger.llm.md +0 -70
  498. package/llm-docs/tooltip.llm.md +0 -129
  499. package/llm-docs/typography.llm.md +0 -175
  500. package/llm-docs/use-carousel.llm.md +0 -55
  501. package/llm-docs/use-command-state.llm.md +0 -32
  502. package/llm-docs/use-is-mobile.llm.md +0 -73
  503. package/llm-docs/use-sidebar.llm.md +0 -61
@@ -1,327 +0,0 @@
1
- # TextField
2
-
3
- **Type**: component
4
-
5
- TextField - Complete form field with label, input, and descriptive text A comprehensive form field component that combines Input and Label components with additional helper text and error handling capabilities. Automatically manages accessibility attributes, ID generation, and ARIA relationships to ensure forms are usable by all users including those using assistive technologies. Built on top of the Input and Label primitives, TextField provides a complete form field solution with consistent styling, proper semantic markup, and enhanced UX features. Supports all HTML input types while adding form validation states, descriptive text, and automatic accessibility compliance.
6
-
7
- ## JSX Usage
8
-
9
- ```jsx
10
- import { TextField } from '@neynar/ui';
11
-
12
- <TextField
13
- label="value"
14
- helperText="value"
15
- error="value"
16
- required={true}
17
- id="value"
18
- type={value}
19
- placeholder="value"
20
- value={value}
21
- defaultValue={value}
22
- disabled={true}
23
- readOnly={true}
24
- name="value"
25
- autoComplete="value"
26
- autoFocus={true}
27
- maxLength={0}
28
- minLength={0}
29
- pattern="value"
30
- min={value}
31
- max={value}
32
- step={value}
33
- onChange={handleChange}
34
- onFocus={handleFocus}
35
- onBlur={handleBlur}
36
- onKeyDown={handleKeyDown}
37
- onKeyUp={handleKeyUp}
38
- className="value"
39
- />
40
- ```
41
-
42
- ## Component Props
43
-
44
- ### label
45
- - **Type**: `string`
46
- - **Required**: No
47
- - **Description**: No description available
48
-
49
- ### helperText
50
- - **Type**: `string`
51
- - **Required**: No
52
- - **Description**: No description available
53
-
54
- ### error
55
- - **Type**: `string`
56
- - **Required**: No
57
- - **Description**: No description available
58
-
59
- ### required
60
- - **Type**: `boolean`
61
- - **Required**: No
62
- - **Description**: No description available
63
-
64
- ### id
65
- - **Type**: `string`
66
- - **Required**: No
67
- - **Description**: No description available
68
-
69
- ### type
70
- - **Type**: `React.HTMLInputTypeAttribute`
71
- - **Required**: No
72
- - **Description**: No description available
73
-
74
- ### placeholder
75
- - **Type**: `string`
76
- - **Required**: No
77
- - **Description**: No description available
78
-
79
- ### value
80
- - **Type**: `string | ReadonlyArray<string> | number`
81
- - **Required**: No
82
- - **Description**: No description available
83
-
84
- ### defaultValue
85
- - **Type**: `string | ReadonlyArray<string> | number`
86
- - **Required**: No
87
- - **Description**: No description available
88
-
89
- ### disabled
90
- - **Type**: `boolean`
91
- - **Required**: No
92
- - **Description**: No description available
93
-
94
- ### readOnly
95
- - **Type**: `boolean`
96
- - **Required**: No
97
- - **Description**: No description available
98
-
99
- ### name
100
- - **Type**: `string`
101
- - **Required**: No
102
- - **Description**: No description available
103
-
104
- ### autoComplete
105
- - **Type**: `string`
106
- - **Required**: No
107
- - **Description**: No description available
108
-
109
- ### autoFocus
110
- - **Type**: `boolean`
111
- - **Required**: No
112
- - **Description**: No description available
113
-
114
- ### maxLength
115
- - **Type**: `number`
116
- - **Required**: No
117
- - **Description**: No description available
118
-
119
- ### minLength
120
- - **Type**: `number`
121
- - **Required**: No
122
- - **Description**: No description available
123
-
124
- ### pattern
125
- - **Type**: `string`
126
- - **Required**: No
127
- - **Description**: No description available
128
-
129
- ### min
130
- - **Type**: `string | number`
131
- - **Required**: No
132
- - **Description**: No description available
133
-
134
- ### max
135
- - **Type**: `string | number`
136
- - **Required**: No
137
- - **Description**: No description available
138
-
139
- ### step
140
- - **Type**: `string | number`
141
- - **Required**: No
142
- - **Description**: No description available
143
-
144
- ### onChange
145
- - **Type**: `(event: React.ChangeEvent<HTMLInputElement>) => void`
146
- - **Required**: No
147
- - **Description**: No description available
148
-
149
- ### onFocus
150
- - **Type**: `(event: React.FocusEvent<HTMLInputElement>) => void`
151
- - **Required**: No
152
- - **Description**: No description available
153
-
154
- ### onBlur
155
- - **Type**: `(event: React.FocusEvent<HTMLInputElement>) => void`
156
- - **Required**: No
157
- - **Description**: No description available
158
-
159
- ### onKeyDown
160
- - **Type**: `(event: React.KeyboardEvent<HTMLInputElement>) => void`
161
- - **Required**: No
162
- - **Description**: No description available
163
-
164
- ### onKeyUp
165
- - **Type**: `(event: React.KeyboardEvent<HTMLInputElement>) => void`
166
- - **Required**: No
167
- - **Description**: No description available
168
-
169
- ### className
170
- - **Type**: `string`
171
- - **Required**: No
172
- - **Description**: No description available
173
-
174
- ## Examples
175
-
176
- ### Example 1
177
- ```tsx
178
- // Basic text input with label
179
- <TextField
180
- label="Email Address"
181
- type="email"
182
- placeholder="Enter your email"
183
- name="email"
184
- />
185
- ```
186
- ### Example 2
187
- ```tsx
188
- // Required field with helper text
189
- <TextField
190
- label="Username"
191
- placeholder="
192
- ### Example 3
193
- ```tsx
194
- // Password field with validation error
195
- <TextField
196
- label="Password"
197
- type="password"
198
- required
199
- error="Password must be at least 8 characters long"
200
- value={password}
201
- onChange={(e) => setPassword(e.target.value)}
202
- minLength={8}
203
- autoComplete="new-password"
204
- />
205
- ```
206
- ### Example 4
207
- ```tsx
208
- // Controlled component with real-time validation
209
- const [email, setEmail] = useState("");
210
- const [error, setError] = useState("");
211
- const validateEmail = (value: string) => {
212
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
213
- if (!emailRegex.test(value)) {
214
- setError("Please enter a valid email address");
215
- } else {
216
- setError("");
217
- }
218
- };
219
- <TextField
220
- label="Email"
221
- type="email"
222
- value={email}
223
- onChange={(e) => {
224
- setEmail(e.target.value);
225
- validateEmail(e.target.value);
226
- }}
227
- onBlur={(e) => validateEmail(e.target.value)}
228
- error={error}
229
- required
230
- autoComplete="email"
231
- />
232
- ```
233
- ### Example 5
234
- ```tsx
235
- // Number input with constraints
236
- <TextField
237
- label="Age"
238
- type="number"
239
- min={0}
240
- max={120}
241
- step={1}
242
- helperText="Enter your age in years"
243
- placeholder="25"
244
- />
245
- ```
246
- ### Example 6
247
- ```tsx
248
- // Search input with custom styling
249
- <TextField
250
- label="Search"
251
- type="search"
252
- placeholder="Search products..."
253
- className="max-w-md"
254
- onKeyDown={(e) => {
255
- if (e.key === 'Enter') {
256
- handleSearch(e.currentTarget.value);
257
- }
258
- }}
259
- />
260
- ```
261
- ### Example 7
262
- ```tsx
263
- // Form integration with React Hook Form
264
- const { register, formState: { errors } } = useForm();
265
- <form onSubmit={handleSubmit(onSubmit)}>
266
- <TextField
267
- label="Full Name"
268
- {...register("fullName", { required: "Full name is required" })}
269
- error={errors.fullName?.message}
270
- helperText="Enter your first and last name"
271
- />
272
- <TextField
273
- label="Phone Number"
274
- type="tel"
275
- {...register("phone", {
276
- pattern: {
277
- value: /^[\+]?[1-9][\d]{0,15}$/,
278
- message: "Please enter a valid phone number"
279
- }
280
- })}
281
- error={errors.phone?.message}
282
- autoComplete="tel"
283
- />
284
- </form>
285
- ```
286
- ### Example 8
287
- ```tsx
288
- // File input with custom validation
289
- <TextField
290
- label="Profile Picture"
291
- type="file"
292
- accept="image/*"
293
- helperText="Upload a PNG, JPG or GIF (max 5MB)"
294
- onChange={(e) => {
295
- const file = e.target.files?.[0];
296
- if (file && file.size > 5 * 1024 * 1024) {
297
- setError("File size must be less than 5MB");
298
- } else {
299
- setError("");
300
- handleFileUpload(file);
301
- }
302
- }}
303
- error={fileError}
304
- />
305
- ```
306
- ### Example 9
307
- ```tsx
308
- // Date input with range constraints
309
- <TextField
310
- label="Birth Date"
311
- type="date"
312
- min="1900-01-01"
313
- max={new Date().toISOString().split('T')[0]}
314
- helperText="You must be 18 or older to register"
315
- required
316
- />
317
- ```
318
- ### Example 10
319
- ```tsx
320
- // Disabled field with explanation
321
- <TextField
322
- label="Account ID"
323
- value="ACC-12345"
324
- disabled
325
- helperText="This value is automatically generated and cannot be changed"
326
- />
327
- ```
@@ -1,311 +0,0 @@
1
- # Textarea
2
-
3
- **Type**: component
4
-
5
- Textarea - Multi-line text input control for extended content entry A styled textarea component built on the native HTML textarea element for entering longer pieces of text that span multiple lines, such as comments, descriptions, messages, or any content that requires multiple lines of input. Features automatic content-based resizing using CSS field-sizing when supported by the browser. Built following shadcn/ui design patterns with consistent styling and behavior across form elements. Inherits all native HTML textarea functionality while providing enhanced visual design and better accessibility patterns.
6
-
7
- ## JSX Usage
8
-
9
- ```jsx
10
- import { Textarea } from '@neynar/ui';
11
-
12
- <Textarea
13
- className="value"
14
- placeholder="value"
15
- disabled={true}
16
- readOnly={true}
17
- rows={0}
18
- cols={0}
19
- maxLength={0}
20
- minLength={0}
21
- required={true}
22
- form="value"
23
- name="value"
24
- id="value"
25
- value="value"
26
- defaultValue="value"
27
- wrap={value}
28
- autoFocus={true}
29
- autoComplete="value"
30
- autoCapitalize={value}
31
- spellCheck={true}
32
- onChange={handleChange}
33
- onFocus={handleFocus}
34
- onBlur={handleBlur}
35
- onKeyDown={handleKeyDown}
36
- onKeyUp={handleKeyUp}
37
- onKeyPress={handleKeyPress}
38
- "aria-invalid"={value}
39
- "aria-describedby"="value"
40
- "aria-labelledby"="value"
41
- "aria-label"="value"
42
- tabIndex={0}
43
- style={value}
44
- />
45
- ```
46
-
47
- ## Component Props
48
-
49
- ### className
50
- - **Type**: `string`
51
- - **Required**: No
52
- - **Description**: No description available
53
-
54
- ### placeholder
55
- - **Type**: `string`
56
- - **Required**: No
57
- - **Description**: No description available
58
-
59
- ### disabled
60
- - **Type**: `boolean`
61
- - **Required**: No
62
- - **Description**: No description available
63
-
64
- ### readOnly
65
- - **Type**: `boolean`
66
- - **Required**: No
67
- - **Description**: No description available
68
-
69
- ### rows
70
- - **Type**: `number`
71
- - **Required**: No
72
- - **Description**: No description available
73
-
74
- ### cols
75
- - **Type**: `number`
76
- - **Required**: No
77
- - **Description**: No description available
78
-
79
- ### maxLength
80
- - **Type**: `number`
81
- - **Required**: No
82
- - **Description**: No description available
83
-
84
- ### minLength
85
- - **Type**: `number`
86
- - **Required**: No
87
- - **Description**: No description available
88
-
89
- ### required
90
- - **Type**: `boolean`
91
- - **Required**: No
92
- - **Description**: No description available
93
-
94
- ### form
95
- - **Type**: `string`
96
- - **Required**: No
97
- - **Description**: No description available
98
-
99
- ### name
100
- - **Type**: `string`
101
- - **Required**: No
102
- - **Description**: No description available
103
-
104
- ### id
105
- - **Type**: `string`
106
- - **Required**: No
107
- - **Description**: No description available
108
-
109
- ### value
110
- - **Type**: `string`
111
- - **Required**: No
112
- - **Description**: No description available
113
-
114
- ### defaultValue
115
- - **Type**: `string`
116
- - **Required**: No
117
- - **Description**: No description available
118
-
119
- ### wrap
120
- - **Type**: `"soft" | "hard" | "off"`
121
- - **Required**: No
122
- - **Description**: No description available
123
-
124
- ### autoFocus
125
- - **Type**: `boolean`
126
- - **Required**: No
127
- - **Description**: No description available
128
-
129
- ### autoComplete
130
- - **Type**: `string`
131
- - **Required**: No
132
- - **Description**: No description available
133
-
134
- ### autoCapitalize
135
- - **Type**: `"none" | "sentences" | "words" | "characters"`
136
- - **Required**: No
137
- - **Description**: No description available
138
-
139
- ### spellCheck
140
- - **Type**: `boolean`
141
- - **Required**: No
142
- - **Description**: No description available
143
-
144
- ### onChange
145
- - **Type**: `(event: React.ChangeEvent<HTMLTextAreaElement>) => void`
146
- - **Required**: No
147
- - **Description**: No description available
148
-
149
- ### onFocus
150
- - **Type**: `(event: React.FocusEvent<HTMLTextAreaElement>) => void`
151
- - **Required**: No
152
- - **Description**: No description available
153
-
154
- ### onBlur
155
- - **Type**: `(event: React.FocusEvent<HTMLTextAreaElement>) => void`
156
- - **Required**: No
157
- - **Description**: No description available
158
-
159
- ### onKeyDown
160
- - **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
161
- - **Required**: No
162
- - **Description**: No description available
163
-
164
- ### onKeyUp
165
- - **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
166
- - **Required**: No
167
- - **Description**: No description available
168
-
169
- ### onKeyPress
170
- - **Type**: `(event: React.KeyboardEvent<HTMLTextAreaElement>) => void`
171
- - **Required**: No
172
- - **Description**: No description available
173
-
174
- ### "aria-invalid"
175
- - **Type**: `boolean | "false" | "true" | "grammar" | "spelling"`
176
- - **Required**: No
177
- - **Description**: No description available
178
-
179
- ### "aria-describedby"
180
- - **Type**: `string`
181
- - **Required**: No
182
- - **Description**: No description available
183
-
184
- ### "aria-labelledby"
185
- - **Type**: `string`
186
- - **Required**: No
187
- - **Description**: No description available
188
-
189
- ### "aria-label"
190
- - **Type**: `string`
191
- - **Required**: No
192
- - **Description**: No description available
193
-
194
- ### tabIndex
195
- - **Type**: `number`
196
- - **Required**: No
197
- - **Description**: No description available
198
-
199
- ### style
200
- - **Type**: `React.CSSProperties & {
201
- resize?: "none" | "both" | "horizontal" | "vertical";
202
- }`
203
- - **Required**: No
204
- - **Description**: No description available
205
-
206
- ## Examples
207
-
208
- ### Example 1
209
- ```tsx
210
- // Basic usage
211
- <Textarea placeholder="Type your message here..." />
212
- ```
213
- ### Example 2
214
- ```tsx
215
- // With label and validation
216
- <div className="space-y-2">
217
- <Label htmlFor="description">Description</Label>
218
- <Textarea
219
- id="description"
220
- placeholder="Enter a description..."
221
- rows={4}
222
- required
223
- />
224
- </div>
225
- ```
226
- ### Example 3
227
- ```tsx
228
- // Controlled with character limit and validation
229
- const [bio, setBio] = useState("");
230
- const [error, setError] = useState("");
231
- const maxLength = 160;
232
- <div className="space-y-2">
233
- <Label htmlFor="bio">Bio</Label>
234
- <Textarea
235
- id="bio"
236
- value={bio}
237
- onChange={(e) => {
238
- setBio(e.target.value);
239
- if (e.target.value.length > maxLength) {
240
- setError("Bio is too long");
241
- } else {
242
- setError("");
243
- }
244
- }}
245
- placeholder="Tell us about yourself..."
246
- maxLength={maxLength}
247
- aria-invalid={!!error}
248
- aria-describedby={error ? "bio-error" : "bio-count"}
249
- />
250
- <div className="flex justify-between items-center">
251
- <p id="bio-count" className="text-sm text-muted-foreground">
252
- {bio.length}/{maxLength} characters
253
- </p>
254
- {error && (
255
- <p id="bio-error" className="text-sm text-destructive">
256
- {error}
257
- </p>
258
- )}
259
- </div>
260
- </div>
261
- ```
262
- ### Example 4
263
- ```tsx
264
- // Auto-resizing with minimum height
265
- <Textarea
266
- placeholder="This textarea grows with content"
267
- className="min-h-[100px] max-h-[300px]"
268
- style={{ resize: "vertical" }}
269
- />
270
- ```
271
- ### Example 5
272
- ```tsx
273
- // Form integration with validation
274
- <form onSubmit={handleSubmit}>
275
- <div className="space-y-2">
276
- <Label htmlFor="feedback">Feedback</Label>
277
- <Textarea
278
- id="feedback"
279
- name="feedback"
280
- placeholder="Share your thoughts..."
281
- required
282
- minLength={10}
283
- maxLength={500}
284
- rows={3}
285
- />
286
- </div>
287
- <Button type="submit">Submit Feedback</Button>
288
- </form>
289
- ```
290
- ### Example 6
291
- ```tsx
292
- // Different wrap behaviors for code/text
293
- <div className="space-y-4">
294
- <div>
295
- <Label>Code (no wrapping)</Label>
296
- <Textarea
297
- wrap="off"
298
- placeholder="Enter code here..."
299
- className="font-mono text-sm"
300
- style={{ resize: "both" }}
301
- />
302
- </div>
303
- <div>
304
- <Label>Text (soft wrapping)</Label>
305
- <Textarea
306
- wrap="soft"
307
- placeholder="Enter text content..."
308
- />
309
- </div>
310
- </div>
311
- ```
@@ -1,25 +0,0 @@
1
- # ThemePreference
2
-
3
- **Type**: type
4
-
5
- Theme preference options for the theme system Controls how the application determines the active theme: - `"system"` - Automatically follows the user's OS preference - `"light"` - Forces light theme regardless of system preference - `"dark"` - Forces dark theme regardless of system preference
6
-
7
- ## Type Definition
8
-
9
- ```typescript
10
- import { ThemePreference } from '@neynar/ui';
11
-
12
- type ThemePreference = "system" | "light" | "dark"
13
- ```
14
-
15
- ## Examples
16
-
17
- ```tsx
18
- const { preference, setPreference } = useTheme();
19
-
20
- // Switch to dark mode
21
- setPreference("dark");
22
-
23
- // Follow system preference
24
- setPreference("system");
25
- ```
@@ -1,57 +0,0 @@
1
- # ThemeToggle
2
-
3
- **Type**: component
4
-
5
- ThemeToggle - A zero-configuration theme switcher with system, light, and dark modes A completely self-contained theme toggle component that provides an intuitive dropdown interface for switching between system preference, light mode, and dark mode. Works immediately without any provider setup, context configuration, or additional dependencies. Built on top of shadcn/ui components (Button + DropdownMenu) with the Neynar useTheme hook for state management. Handles theme persistence via cookies, system preference detection, real-time system changes, and synchronization across multiple instances. **Zero Configuration Design:** Just import and use - no providers, no setup, no configuration required. The component handles all theme management internally and provides a complete solution out of the box. **Perfect for:** - Application headers and navigation bars - Settings panels and preference screens - Toolbars and floating action areas - Any location where users need quick theme access
6
-
7
- ## JSX Usage
8
-
9
- ```jsx
10
- import { ThemeToggle } from '@neynar/ui';
11
-
12
- <ThemeToggle
13
- variant={value}
14
- size={value}
15
- className="value"
16
- showLabel={true}
17
- align={value}
18
- asChild={true}
19
- />
20
- ```
21
-
22
- ## Component Props
23
-
24
- ### variant
25
- - **Type**: `| "default"
26
- | "destructive"
27
- | "outline"
28
- | "secondary"
29
- | "ghost"
30
- | "link"`
31
- - **Required**: No
32
- - **Description**: Visual style variant inherited from Button component (default: "outline")
33
-
34
- ### size
35
- - **Type**: `"default" | "sm" | "lg" | "icon"`
36
- - **Required**: No
37
- - **Description**: Size variant inherited from Button component (default: "icon")
38
-
39
- ### className
40
- - **Type**: `string`
41
- - **Required**: No
42
- - **Description**: Additional CSS classes for custom styling
43
-
44
- ### showLabel
45
- - **Type**: `boolean`
46
- - **Required**: No
47
- - **Description**: Whether to show theme name text (auto-enabled for non-icon sizes)
48
-
49
- ### align
50
- - **Type**: `"start" | "center" | "end"`
51
- - **Required**: No
52
- - **Description**: Dropdown menu alignment relative to trigger button (default: "end")
53
-
54
- ### asChild
55
- - **Type**: `boolean`
56
- - **Required**: No
57
- - **Description**: No description available