@neynar/ui 0.2.1 → 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 (547) hide show
  1. package/{llm-docs → .llm}/a.llm.md +2 -16
  2. package/{llm-docs → .llm}/badge.llm.md +16 -21
  3. package/{llm-docs → .llm}/blockquote.llm.md +1 -6
  4. package/.llm/button-group-separator.llm.md +53 -0
  5. package/.llm/button-group-text.llm.md +56 -0
  6. package/.llm/button-group.llm.md +81 -0
  7. package/{llm-docs → .llm}/button.llm.md +1 -1
  8. package/{llm-docs → .llm}/code.llm.md +1 -6
  9. package/.llm/empty-content.llm.md +103 -0
  10. package/.llm/empty-description.llm.md +70 -0
  11. package/.llm/empty-header.llm.md +64 -0
  12. package/.llm/empty-media.llm.md +81 -0
  13. package/.llm/empty-title.llm.md +54 -0
  14. package/.llm/empty.llm.md +158 -0
  15. package/.llm/field-content.llm.md +28 -0
  16. package/.llm/field-description.llm.md +28 -0
  17. package/.llm/field-error.llm.md +41 -0
  18. package/.llm/field-group.llm.md +84 -0
  19. package/.llm/field-label.llm.md +28 -0
  20. package/.llm/field-legend.llm.md +77 -0
  21. package/.llm/field-separator.llm.md +35 -0
  22. package/.llm/field-set.llm.md +80 -0
  23. package/.llm/field-title.llm.md +28 -0
  24. package/.llm/field.llm.md +35 -0
  25. package/{llm-docs → .llm}/h1.llm.md +2 -7
  26. package/{llm-docs → .llm}/h2.llm.md +2 -7
  27. package/{llm-docs → .llm}/h3.llm.md +2 -7
  28. package/{llm-docs → .llm}/h4.llm.md +2 -7
  29. package/{llm-docs → .llm}/h5.llm.md +2 -7
  30. package/{llm-docs → .llm}/h6.llm.md +1 -6
  31. package/.llm/input-group-addon.llm.md +91 -0
  32. package/.llm/input-group-button.llm.md +120 -0
  33. package/.llm/input-group-input.llm.md +145 -0
  34. package/.llm/input-group-text.llm.md +75 -0
  35. package/.llm/input-group-textarea.llm.md +157 -0
  36. package/.llm/input-group.llm.md +108 -0
  37. package/.llm/item-actions.llm.md +77 -0
  38. package/.llm/item-content.llm.md +73 -0
  39. package/.llm/item-description.llm.md +61 -0
  40. package/.llm/item-footer.llm.md +68 -0
  41. package/.llm/item-group.llm.md +73 -0
  42. package/.llm/item-header.llm.md +66 -0
  43. package/.llm/item-media.llm.md +75 -0
  44. package/.llm/item-separator.llm.md +80 -0
  45. package/.llm/item-title.llm.md +59 -0
  46. package/.llm/item.llm.md +115 -0
  47. package/.llm/kbd-group.llm.md +71 -0
  48. package/.llm/kbd.llm.md +71 -0
  49. package/{llm-docs → .llm}/lead.llm.md +1 -6
  50. package/{llm-docs → .llm}/p.llm.md +1 -6
  51. package/{llm-docs → .llm}/sdk-items-registry.json +390 -6
  52. package/{llm-docs → .llm}/small.llm.md +1 -6
  53. package/{llm-docs → .llm}/span.llm.md +2 -16
  54. package/.llm/spinner.llm.md +182 -0
  55. package/{llm-docs → .llm}/strong.llm.md +1 -6
  56. package/{llm-docs → .llm}/typography.llm.md +2 -16
  57. package/dist/components/ui/button-group.d.ts +448 -0
  58. package/dist/components/ui/button-group.d.ts.map +1 -0
  59. package/dist/components/ui/button.d.ts +1 -1
  60. package/dist/components/ui/button.d.ts.map +1 -1
  61. package/dist/components/ui/empty-state.d.ts +1 -0
  62. package/dist/components/ui/empty-state.d.ts.map +1 -1
  63. package/dist/components/ui/empty.d.ts +630 -0
  64. package/dist/components/ui/empty.d.ts.map +1 -0
  65. package/dist/components/ui/field.d.ts +238 -0
  66. package/dist/components/ui/field.d.ts.map +1 -0
  67. package/dist/components/ui/input-group.d.ts +636 -0
  68. package/dist/components/ui/input-group.d.ts.map +1 -0
  69. package/dist/components/ui/item.d.ts +766 -0
  70. package/dist/components/ui/item.d.ts.map +1 -0
  71. package/dist/components/ui/kbd.d.ts +149 -0
  72. package/dist/components/ui/kbd.d.ts.map +1 -0
  73. package/dist/components/ui/scroll-area.d.ts +5 -5
  74. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  75. package/dist/components/ui/spinner.d.ts +194 -0
  76. package/dist/components/ui/spinner.d.ts.map +1 -0
  77. package/dist/components/ui/stack.d.ts.map +1 -1
  78. package/dist/components/ui/stories/accordion.stories.d.ts +0 -1
  79. package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -1
  80. package/dist/components/ui/stories/alert-dialog.stories.d.ts +0 -1
  81. package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -1
  82. package/dist/components/ui/stories/alert.stories.d.ts +0 -1
  83. package/dist/components/ui/stories/alert.stories.d.ts.map +1 -1
  84. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +0 -1
  85. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
  86. package/dist/components/ui/stories/avatar.stories.d.ts +0 -1
  87. package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -1
  88. package/dist/components/ui/stories/badge.stories.d.ts +0 -1
  89. package/dist/components/ui/stories/badge.stories.d.ts.map +1 -1
  90. package/dist/components/ui/stories/breadcrumb.stories.d.ts +0 -1
  91. package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -1
  92. package/dist/components/ui/stories/button-group.stories.d.ts +48 -0
  93. package/dist/components/ui/stories/button-group.stories.d.ts.map +1 -0
  94. package/dist/components/ui/stories/button.stories.d.ts +0 -1
  95. package/dist/components/ui/stories/button.stories.d.ts.map +1 -1
  96. package/dist/components/ui/stories/calendar.stories.d.ts +0 -1
  97. package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -1
  98. package/dist/components/ui/stories/card.stories.d.ts +0 -1
  99. package/dist/components/ui/stories/card.stories.d.ts.map +1 -1
  100. package/dist/components/ui/stories/carousel.stories.d.ts +0 -1
  101. package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -1
  102. package/dist/components/ui/stories/chart.stories.d.ts +0 -1
  103. package/dist/components/ui/stories/chart.stories.d.ts.map +1 -1
  104. package/dist/components/ui/stories/checkbox.stories.d.ts +0 -1
  105. package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -1
  106. package/dist/components/ui/stories/cn.stories.d.ts.map +1 -1
  107. package/dist/components/ui/stories/collapsible.stories.d.ts +0 -1
  108. package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -1
  109. package/dist/components/ui/stories/colors.stories.d.ts +0 -1
  110. package/dist/components/ui/stories/colors.stories.d.ts.map +1 -1
  111. package/dist/components/ui/stories/combobox.stories.d.ts +0 -1
  112. package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -1
  113. package/dist/components/ui/stories/command.stories.d.ts +0 -1
  114. package/dist/components/ui/stories/command.stories.d.ts.map +1 -1
  115. package/dist/components/ui/stories/container.stories.d.ts +0 -1
  116. package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
  117. package/dist/components/ui/stories/context-menu.stories.d.ts +0 -1
  118. package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -1
  119. package/dist/components/ui/stories/date-picker.stories.d.ts +0 -1
  120. package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -1
  121. package/dist/components/ui/stories/dialog.stories.d.ts +0 -1
  122. package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -1
  123. package/dist/components/ui/stories/drawer.stories.d.ts +0 -1
  124. package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -1
  125. package/dist/components/ui/stories/dropdown-menu.stories.d.ts +0 -1
  126. package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -1
  127. package/dist/components/ui/stories/empty-state.stories.d.ts +0 -1
  128. package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -1
  129. package/dist/components/ui/stories/empty.stories.d.ts +38 -0
  130. package/dist/components/ui/stories/empty.stories.d.ts.map +1 -0
  131. package/dist/components/ui/stories/field.stories.d.ts +48 -0
  132. package/dist/components/ui/stories/field.stories.d.ts.map +1 -0
  133. package/dist/components/ui/stories/hover-card.stories.d.ts +0 -1
  134. package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -1
  135. package/dist/components/ui/stories/input-group.stories.d.ts +37 -0
  136. package/dist/components/ui/stories/input-group.stories.d.ts.map +1 -0
  137. package/dist/components/ui/stories/input.stories.d.ts +0 -1
  138. package/dist/components/ui/stories/input.stories.d.ts.map +1 -1
  139. package/dist/components/ui/stories/item.stories.d.ts +61 -0
  140. package/dist/components/ui/stories/item.stories.d.ts.map +1 -0
  141. package/dist/components/ui/stories/kbd.stories.d.ts +37 -0
  142. package/dist/components/ui/stories/kbd.stories.d.ts.map +1 -0
  143. package/dist/components/ui/stories/label.stories.d.ts +0 -1
  144. package/dist/components/ui/stories/label.stories.d.ts.map +1 -1
  145. package/dist/components/ui/stories/menubar.stories.d.ts +0 -1
  146. package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -1
  147. package/dist/components/ui/stories/navigation-menu.stories.d.ts +0 -1
  148. package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -1
  149. package/dist/components/ui/stories/pagination.stories.d.ts +0 -1
  150. package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -1
  151. package/dist/components/ui/stories/popover.stories.d.ts +0 -1
  152. package/dist/components/ui/stories/popover.stories.d.ts.map +1 -1
  153. package/dist/components/ui/stories/progress.stories.d.ts +0 -1
  154. package/dist/components/ui/stories/progress.stories.d.ts.map +1 -1
  155. package/dist/components/ui/stories/radio-group.stories.d.ts +0 -1
  156. package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -1
  157. package/dist/components/ui/stories/resizable.stories.d.ts +0 -1
  158. package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -1
  159. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
  160. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
  161. package/dist/components/ui/stories/select.stories.d.ts +0 -1
  162. package/dist/components/ui/stories/select.stories.d.ts.map +1 -1
  163. package/dist/components/ui/stories/separator.stories.d.ts +0 -1
  164. package/dist/components/ui/stories/separator.stories.d.ts.map +1 -1
  165. package/dist/components/ui/stories/sheet.stories.d.ts +0 -1
  166. package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -1
  167. package/dist/components/ui/stories/sidebar.stories.d.ts +0 -1
  168. package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -1
  169. package/dist/components/ui/stories/skeleton.stories.d.ts +0 -1
  170. package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -1
  171. package/dist/components/ui/stories/slider.stories.d.ts +0 -1
  172. package/dist/components/ui/stories/slider.stories.d.ts.map +1 -1
  173. package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -1
  174. package/dist/components/ui/stories/spinner.stories.d.ts +37 -0
  175. package/dist/components/ui/stories/spinner.stories.d.ts.map +1 -0
  176. package/dist/components/ui/stories/stack.stories.d.ts +0 -1
  177. package/dist/components/ui/stories/stack.stories.d.ts.map +1 -1
  178. package/dist/components/ui/stories/switch.stories.d.ts +0 -1
  179. package/dist/components/ui/stories/switch.stories.d.ts.map +1 -1
  180. package/dist/components/ui/stories/table.stories.d.ts +0 -1
  181. package/dist/components/ui/stories/table.stories.d.ts.map +1 -1
  182. package/dist/components/ui/stories/tabs.stories.d.ts +0 -1
  183. package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -1
  184. package/dist/components/ui/stories/text-field.stories.d.ts +0 -1
  185. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
  186. package/dist/components/ui/stories/textarea.stories.d.ts +0 -1
  187. package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -1
  188. package/dist/components/ui/stories/theme-toggle.stories.d.ts +0 -1
  189. package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -1
  190. package/dist/components/ui/stories/theme.stories.d.ts +0 -1
  191. package/dist/components/ui/stories/theme.stories.d.ts.map +1 -1
  192. package/dist/components/ui/stories/toggle-group.stories.d.ts +0 -1
  193. package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -1
  194. package/dist/components/ui/stories/toggle.stories.d.ts +0 -1
  195. package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -1
  196. package/dist/components/ui/stories/tooltip.stories.d.ts +0 -1
  197. package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -1
  198. package/dist/components/ui/stories/typography.stories.d.ts +0 -1
  199. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  200. package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -1
  201. package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -1
  202. package/dist/components/ui/theme-toggle.d.ts +0 -3
  203. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  204. package/dist/components/ui/theme.d.ts.map +1 -1
  205. package/dist/components/ui/typography.d.ts +12 -11
  206. package/dist/components/ui/typography.d.ts.map +1 -1
  207. package/dist/index.d.ts +7 -0
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +4973 -2353
  210. package/dist/index.js.map +1 -1
  211. package/dist/tsconfig.tsbuildinfo +1 -1
  212. package/docs/llm/components/display.md +125 -0
  213. package/docs/llm/components/feedback.md +0 -14
  214. package/docs/llm/components/forms.md +94 -0
  215. package/docs/llm/components/layout.md +169 -0
  216. package/llms.txt +18 -12
  217. package/package.json +7 -6
  218. package/src/components/ui/button-group.tsx +525 -0
  219. package/src/components/ui/button.tsx +9 -12
  220. package/src/components/ui/empty-state.tsx +1 -0
  221. package/src/components/ui/empty.tsx +793 -0
  222. package/src/components/ui/field.tsx +494 -0
  223. package/src/components/ui/input-group.tsx +801 -0
  224. package/src/components/ui/item.tsx +955 -0
  225. package/src/components/ui/kbd.tsx +175 -0
  226. package/src/components/ui/skeleton.tsx +1 -1
  227. package/src/components/ui/spinner.tsx +211 -0
  228. package/src/components/ui/stack.tsx +3 -1
  229. package/src/components/ui/stories/accordion.stories.tsx +0 -1
  230. package/src/components/ui/stories/alert-dialog.stories.tsx +0 -1
  231. package/src/components/ui/stories/alert.stories.tsx +0 -1
  232. package/src/components/ui/stories/aspect-ratio.stories.tsx +0 -1
  233. package/src/components/ui/stories/avatar.stories.tsx +0 -1
  234. package/src/components/ui/stories/badge.stories.tsx +0 -1
  235. package/src/components/ui/stories/breadcrumb.stories.tsx +0 -1
  236. package/src/components/ui/stories/button-group.stories.tsx +300 -0
  237. package/src/components/ui/stories/button.stories.tsx +0 -1
  238. package/src/components/ui/stories/calendar.stories.tsx +0 -1
  239. package/src/components/ui/stories/card.stories.tsx +0 -1
  240. package/src/components/ui/stories/carousel.stories.tsx +0 -1
  241. package/src/components/ui/stories/chart.stories.tsx +0 -1
  242. package/src/components/ui/stories/checkbox.stories.tsx +0 -1
  243. package/src/components/ui/stories/cn.stories.tsx +0 -1
  244. package/src/components/ui/stories/collapsible.stories.tsx +0 -1
  245. package/src/components/ui/stories/colors.stories.tsx +0 -1
  246. package/src/components/ui/stories/combobox.stories.tsx +0 -1
  247. package/src/components/ui/stories/command.stories.tsx +0 -1
  248. package/src/components/ui/stories/container.stories.tsx +0 -1
  249. package/src/components/ui/stories/context-menu.stories.tsx +0 -1
  250. package/src/components/ui/stories/date-picker.stories.tsx +0 -1
  251. package/src/components/ui/stories/dialog.stories.tsx +0 -1
  252. package/src/components/ui/stories/drawer.stories.tsx +0 -1
  253. package/src/components/ui/stories/dropdown-menu.stories.tsx +0 -1
  254. package/src/components/ui/stories/empty-state.stories.tsx +0 -1
  255. package/src/components/ui/stories/empty.stories.tsx +293 -0
  256. package/src/components/ui/stories/field.stories.tsx +470 -0
  257. package/src/components/ui/stories/hover-card.stories.tsx +0 -1
  258. package/src/components/ui/stories/input-group.stories.tsx +444 -0
  259. package/src/components/ui/stories/input.stories.tsx +0 -1
  260. package/src/components/ui/stories/item.stories.tsx +601 -0
  261. package/src/components/ui/stories/kbd.stories.tsx +462 -0
  262. package/src/components/ui/stories/label.stories.tsx +0 -1
  263. package/src/components/ui/stories/menubar.stories.tsx +0 -1
  264. package/src/components/ui/stories/navigation-menu.stories.tsx +0 -1
  265. package/src/components/ui/stories/pagination.stories.tsx +0 -1
  266. package/src/components/ui/stories/popover.stories.tsx +0 -1
  267. package/src/components/ui/stories/progress.stories.tsx +0 -1
  268. package/src/components/ui/stories/radio-group.stories.tsx +0 -1
  269. package/src/components/ui/stories/resizable.stories.tsx +0 -1
  270. package/src/components/ui/stories/scroll-area.stories.tsx +0 -1
  271. package/src/components/ui/stories/select.stories.tsx +0 -1
  272. package/src/components/ui/stories/separator.stories.tsx +0 -1
  273. package/src/components/ui/stories/sheet.stories.tsx +0 -1
  274. package/src/components/ui/stories/sidebar.stories.tsx +0 -1
  275. package/src/components/ui/stories/skeleton.stories.tsx +0 -1
  276. package/src/components/ui/stories/slider.stories.tsx +0 -1
  277. package/src/components/ui/stories/sonner.stories.tsx +0 -1
  278. package/src/components/ui/stories/spinner.stories.tsx +356 -0
  279. package/src/components/ui/stories/stack.stories.tsx +0 -1
  280. package/src/components/ui/stories/switch.stories.tsx +0 -1
  281. package/src/components/ui/stories/table.stories.tsx +0 -1
  282. package/src/components/ui/stories/tabs.stories.tsx +0 -1
  283. package/src/components/ui/stories/text-field.stories.tsx +0 -1
  284. package/src/components/ui/stories/textarea.stories.tsx +0 -1
  285. package/src/components/ui/stories/theme-toggle.stories.tsx +0 -1
  286. package/src/components/ui/stories/theme.stories.tsx +0 -1
  287. package/src/components/ui/stories/toggle-group.stories.tsx +0 -1
  288. package/src/components/ui/stories/toggle.stories.tsx +0 -1
  289. package/src/components/ui/stories/tooltip.stories.tsx +0 -1
  290. package/src/components/ui/stories/typography.stories.tsx +5 -2
  291. package/src/components/ui/stories/use-mobile.stories.tsx +0 -1
  292. package/src/components/ui/stories/use-theme.stories.tsx +0 -1
  293. package/src/components/ui/tabs.tsx +1 -1
  294. package/src/components/ui/theme-toggle.tsx +1 -3
  295. package/src/components/ui/theme.tsx +6 -1
  296. package/src/components/ui/typography.tsx +29 -129
  297. package/src/index.ts +7 -0
  298. package/src/styles/globals.css +82 -94
  299. /package/{llm-docs → .llm}/accordion-content.llm.md +0 -0
  300. /package/{llm-docs → .llm}/accordion-item.llm.md +0 -0
  301. /package/{llm-docs → .llm}/accordion-trigger.llm.md +0 -0
  302. /package/{llm-docs → .llm}/accordion.llm.md +0 -0
  303. /package/{llm-docs → .llm}/alert-description.llm.md +0 -0
  304. /package/{llm-docs → .llm}/alert-dialog-action.llm.md +0 -0
  305. /package/{llm-docs → .llm}/alert-dialog-cancel.llm.md +0 -0
  306. /package/{llm-docs → .llm}/alert-dialog-content.llm.md +0 -0
  307. /package/{llm-docs → .llm}/alert-dialog-description.llm.md +0 -0
  308. /package/{llm-docs → .llm}/alert-dialog-footer.llm.md +0 -0
  309. /package/{llm-docs → .llm}/alert-dialog-header.llm.md +0 -0
  310. /package/{llm-docs → .llm}/alert-dialog-overlay.llm.md +0 -0
  311. /package/{llm-docs → .llm}/alert-dialog-portal.llm.md +0 -0
  312. /package/{llm-docs → .llm}/alert-dialog-title.llm.md +0 -0
  313. /package/{llm-docs → .llm}/alert-dialog-trigger.llm.md +0 -0
  314. /package/{llm-docs → .llm}/alert-dialog.llm.md +0 -0
  315. /package/{llm-docs → .llm}/alert-title.llm.md +0 -0
  316. /package/{llm-docs → .llm}/alert.llm.md +0 -0
  317. /package/{llm-docs → .llm}/aspect-ratio.llm.md +0 -0
  318. /package/{llm-docs → .llm}/avatar-fallback.llm.md +0 -0
  319. /package/{llm-docs → .llm}/avatar-image.llm.md +0 -0
  320. /package/{llm-docs → .llm}/avatar.llm.md +0 -0
  321. /package/{llm-docs → .llm}/breadcrumb-ellipsis.llm.md +0 -0
  322. /package/{llm-docs → .llm}/breadcrumb-item.llm.md +0 -0
  323. /package/{llm-docs → .llm}/breadcrumb-link.llm.md +0 -0
  324. /package/{llm-docs → .llm}/breadcrumb-list.llm.md +0 -0
  325. /package/{llm-docs → .llm}/breadcrumb-page.llm.md +0 -0
  326. /package/{llm-docs → .llm}/breadcrumb-separator.llm.md +0 -0
  327. /package/{llm-docs → .llm}/breadcrumb.llm.md +0 -0
  328. /package/{llm-docs → .llm}/calendar-day-button.llm.md +0 -0
  329. /package/{llm-docs → .llm}/calendar.llm.md +0 -0
  330. /package/{llm-docs → .llm}/card-action.llm.md +0 -0
  331. /package/{llm-docs → .llm}/card-content.llm.md +0 -0
  332. /package/{llm-docs → .llm}/card-description.llm.md +0 -0
  333. /package/{llm-docs → .llm}/card-footer.llm.md +0 -0
  334. /package/{llm-docs → .llm}/card-header.llm.md +0 -0
  335. /package/{llm-docs → .llm}/card-title.llm.md +0 -0
  336. /package/{llm-docs → .llm}/card.llm.md +0 -0
  337. /package/{llm-docs → .llm}/carousel-content.llm.md +0 -0
  338. /package/{llm-docs → .llm}/carousel-item.llm.md +0 -0
  339. /package/{llm-docs → .llm}/carousel-next.llm.md +0 -0
  340. /package/{llm-docs → .llm}/carousel-previous.llm.md +0 -0
  341. /package/{llm-docs → .llm}/carousel.llm.md +0 -0
  342. /package/{llm-docs → .llm}/chart-config.llm.md +0 -0
  343. /package/{llm-docs → .llm}/chart-container.llm.md +0 -0
  344. /package/{llm-docs → .llm}/chart-legend-content.llm.md +0 -0
  345. /package/{llm-docs → .llm}/chart-legend.llm.md +0 -0
  346. /package/{llm-docs → .llm}/chart-style.llm.md +0 -0
  347. /package/{llm-docs → .llm}/chart-tooltip-content.llm.md +0 -0
  348. /package/{llm-docs → .llm}/chart-tooltip.llm.md +0 -0
  349. /package/{llm-docs → .llm}/checkbox.llm.md +0 -0
  350. /package/{llm-docs → .llm}/cn.llm.md +0 -0
  351. /package/{llm-docs → .llm}/collapsible-content.llm.md +0 -0
  352. /package/{llm-docs → .llm}/collapsible-trigger.llm.md +0 -0
  353. /package/{llm-docs → .llm}/collapsible.llm.md +0 -0
  354. /package/{llm-docs → .llm}/combobox-option.llm.md +0 -0
  355. /package/{llm-docs → .llm}/combobox.llm.md +0 -0
  356. /package/{llm-docs → .llm}/command-dialog.llm.md +0 -0
  357. /package/{llm-docs → .llm}/command-empty.llm.md +0 -0
  358. /package/{llm-docs → .llm}/command-group.llm.md +0 -0
  359. /package/{llm-docs → .llm}/command-input.llm.md +0 -0
  360. /package/{llm-docs → .llm}/command-item.llm.md +0 -0
  361. /package/{llm-docs → .llm}/command-list.llm.md +0 -0
  362. /package/{llm-docs → .llm}/command-loading.llm.md +0 -0
  363. /package/{llm-docs → .llm}/command-separator.llm.md +0 -0
  364. /package/{llm-docs → .llm}/command-shortcut.llm.md +0 -0
  365. /package/{llm-docs → .llm}/command.llm.md +0 -0
  366. /package/{llm-docs → .llm}/container.llm.md +0 -0
  367. /package/{llm-docs → .llm}/context-menu-checkbox-item.llm.md +0 -0
  368. /package/{llm-docs → .llm}/context-menu-content.llm.md +0 -0
  369. /package/{llm-docs → .llm}/context-menu-group.llm.md +0 -0
  370. /package/{llm-docs → .llm}/context-menu-item.llm.md +0 -0
  371. /package/{llm-docs → .llm}/context-menu-label.llm.md +0 -0
  372. /package/{llm-docs → .llm}/context-menu-portal.llm.md +0 -0
  373. /package/{llm-docs → .llm}/context-menu-radio-group.llm.md +0 -0
  374. /package/{llm-docs → .llm}/context-menu-radio-item.llm.md +0 -0
  375. /package/{llm-docs → .llm}/context-menu-separator.llm.md +0 -0
  376. /package/{llm-docs → .llm}/context-menu-shortcut.llm.md +0 -0
  377. /package/{llm-docs → .llm}/context-menu-sub-content.llm.md +0 -0
  378. /package/{llm-docs → .llm}/context-menu-sub-trigger.llm.md +0 -0
  379. /package/{llm-docs → .llm}/context-menu-sub.llm.md +0 -0
  380. /package/{llm-docs → .llm}/context-menu-trigger.llm.md +0 -0
  381. /package/{llm-docs → .llm}/context-menu.llm.md +0 -0
  382. /package/{llm-docs → .llm}/date-picker.llm.md +0 -0
  383. /package/{llm-docs → .llm}/dialog-close.llm.md +0 -0
  384. /package/{llm-docs → .llm}/dialog-content.llm.md +0 -0
  385. /package/{llm-docs → .llm}/dialog-description.llm.md +0 -0
  386. /package/{llm-docs → .llm}/dialog-footer.llm.md +0 -0
  387. /package/{llm-docs → .llm}/dialog-header.llm.md +0 -0
  388. /package/{llm-docs → .llm}/dialog-overlay.llm.md +0 -0
  389. /package/{llm-docs → .llm}/dialog-portal.llm.md +0 -0
  390. /package/{llm-docs → .llm}/dialog-title.llm.md +0 -0
  391. /package/{llm-docs → .llm}/dialog-trigger.llm.md +0 -0
  392. /package/{llm-docs → .llm}/dialog.llm.md +0 -0
  393. /package/{llm-docs → .llm}/drawer-close.llm.md +0 -0
  394. /package/{llm-docs → .llm}/drawer-content.llm.md +0 -0
  395. /package/{llm-docs → .llm}/drawer-description.llm.md +0 -0
  396. /package/{llm-docs → .llm}/drawer-footer.llm.md +0 -0
  397. /package/{llm-docs → .llm}/drawer-header.llm.md +0 -0
  398. /package/{llm-docs → .llm}/drawer-overlay.llm.md +0 -0
  399. /package/{llm-docs → .llm}/drawer-portal.llm.md +0 -0
  400. /package/{llm-docs → .llm}/drawer-title.llm.md +0 -0
  401. /package/{llm-docs → .llm}/drawer-trigger.llm.md +0 -0
  402. /package/{llm-docs → .llm}/drawer.llm.md +0 -0
  403. /package/{llm-docs → .llm}/dropdown-menu-checkbox-item.llm.md +0 -0
  404. /package/{llm-docs → .llm}/dropdown-menu-content.llm.md +0 -0
  405. /package/{llm-docs → .llm}/dropdown-menu-group.llm.md +0 -0
  406. /package/{llm-docs → .llm}/dropdown-menu-item.llm.md +0 -0
  407. /package/{llm-docs → .llm}/dropdown-menu-label.llm.md +0 -0
  408. /package/{llm-docs → .llm}/dropdown-menu-portal.llm.md +0 -0
  409. /package/{llm-docs → .llm}/dropdown-menu-radio-group.llm.md +0 -0
  410. /package/{llm-docs → .llm}/dropdown-menu-radio-item.llm.md +0 -0
  411. /package/{llm-docs → .llm}/dropdown-menu-separator.llm.md +0 -0
  412. /package/{llm-docs → .llm}/dropdown-menu-shortcut.llm.md +0 -0
  413. /package/{llm-docs → .llm}/dropdown-menu-sub-content.llm.md +0 -0
  414. /package/{llm-docs → .llm}/dropdown-menu-sub-trigger.llm.md +0 -0
  415. /package/{llm-docs → .llm}/dropdown-menu-sub.llm.md +0 -0
  416. /package/{llm-docs → .llm}/dropdown-menu-trigger.llm.md +0 -0
  417. /package/{llm-docs → .llm}/dropdown-menu.llm.md +0 -0
  418. /package/{llm-docs → .llm}/empty-state.llm.md +0 -0
  419. /package/{llm-docs → .llm}/hover-card-content.llm.md +0 -0
  420. /package/{llm-docs → .llm}/hover-card-trigger.llm.md +0 -0
  421. /package/{llm-docs → .llm}/hover-card.llm.md +0 -0
  422. /package/{llm-docs → .llm}/input.llm.md +0 -0
  423. /package/{llm-docs → .llm}/label.llm.md +0 -0
  424. /package/{llm-docs → .llm}/menubar-checkbox-item.llm.md +0 -0
  425. /package/{llm-docs → .llm}/menubar-content.llm.md +0 -0
  426. /package/{llm-docs → .llm}/menubar-group.llm.md +0 -0
  427. /package/{llm-docs → .llm}/menubar-item.llm.md +0 -0
  428. /package/{llm-docs → .llm}/menubar-label.llm.md +0 -0
  429. /package/{llm-docs → .llm}/menubar-menu.llm.md +0 -0
  430. /package/{llm-docs → .llm}/menubar-portal.llm.md +0 -0
  431. /package/{llm-docs → .llm}/menubar-radio-group.llm.md +0 -0
  432. /package/{llm-docs → .llm}/menubar-radio-item.llm.md +0 -0
  433. /package/{llm-docs → .llm}/menubar-separator.llm.md +0 -0
  434. /package/{llm-docs → .llm}/menubar-shortcut.llm.md +0 -0
  435. /package/{llm-docs → .llm}/menubar-sub-content.llm.md +0 -0
  436. /package/{llm-docs → .llm}/menubar-sub-trigger.llm.md +0 -0
  437. /package/{llm-docs → .llm}/menubar-sub.llm.md +0 -0
  438. /package/{llm-docs → .llm}/menubar-trigger.llm.md +0 -0
  439. /package/{llm-docs → .llm}/menubar.llm.md +0 -0
  440. /package/{llm-docs → .llm}/navigation-menu-content.llm.md +0 -0
  441. /package/{llm-docs → .llm}/navigation-menu-indicator.llm.md +0 -0
  442. /package/{llm-docs → .llm}/navigation-menu-item.llm.md +0 -0
  443. /package/{llm-docs → .llm}/navigation-menu-link.llm.md +0 -0
  444. /package/{llm-docs → .llm}/navigation-menu-list.llm.md +0 -0
  445. /package/{llm-docs → .llm}/navigation-menu-trigger-style.llm.md +0 -0
  446. /package/{llm-docs → .llm}/navigation-menu-trigger.llm.md +0 -0
  447. /package/{llm-docs → .llm}/navigation-menu-viewport.llm.md +0 -0
  448. /package/{llm-docs → .llm}/navigation-menu.llm.md +0 -0
  449. /package/{llm-docs → .llm}/pagination-content.llm.md +0 -0
  450. /package/{llm-docs → .llm}/pagination-ellipsis.llm.md +0 -0
  451. /package/{llm-docs → .llm}/pagination-item.llm.md +0 -0
  452. /package/{llm-docs → .llm}/pagination-link.llm.md +0 -0
  453. /package/{llm-docs → .llm}/pagination-next.llm.md +0 -0
  454. /package/{llm-docs → .llm}/pagination-previous.llm.md +0 -0
  455. /package/{llm-docs → .llm}/pagination.llm.md +0 -0
  456. /package/{llm-docs → .llm}/popover-anchor.llm.md +0 -0
  457. /package/{llm-docs → .llm}/popover-content.llm.md +0 -0
  458. /package/{llm-docs → .llm}/popover-trigger.llm.md +0 -0
  459. /package/{llm-docs → .llm}/popover.llm.md +0 -0
  460. /package/{llm-docs → .llm}/progress.llm.md +0 -0
  461. /package/{llm-docs → .llm}/radio-group-indicator.llm.md +0 -0
  462. /package/{llm-docs → .llm}/radio-group-item.llm.md +0 -0
  463. /package/{llm-docs → .llm}/radio-group.llm.md +0 -0
  464. /package/{llm-docs → .llm}/resizable-handle.llm.md +0 -0
  465. /package/{llm-docs → .llm}/resizable-panel-group.llm.md +0 -0
  466. /package/{llm-docs → .llm}/resizable-panel.llm.md +0 -0
  467. /package/{llm-docs → .llm}/scroll-area-corner.llm.md +0 -0
  468. /package/{llm-docs → .llm}/scroll-area-thumb.llm.md +0 -0
  469. /package/{llm-docs → .llm}/scroll-area-viewport.llm.md +0 -0
  470. /package/{llm-docs → .llm}/scroll-area.llm.md +0 -0
  471. /package/{llm-docs → .llm}/scroll-bar.llm.md +0 -0
  472. /package/{llm-docs → .llm}/select-content.llm.md +0 -0
  473. /package/{llm-docs → .llm}/select-group.llm.md +0 -0
  474. /package/{llm-docs → .llm}/select-item.llm.md +0 -0
  475. /package/{llm-docs → .llm}/select-label.llm.md +0 -0
  476. /package/{llm-docs → .llm}/select-scroll-down-button.llm.md +0 -0
  477. /package/{llm-docs → .llm}/select-scroll-up-button.llm.md +0 -0
  478. /package/{llm-docs → .llm}/select-separator.llm.md +0 -0
  479. /package/{llm-docs → .llm}/select-trigger.llm.md +0 -0
  480. /package/{llm-docs → .llm}/select-value.llm.md +0 -0
  481. /package/{llm-docs → .llm}/select.llm.md +0 -0
  482. /package/{llm-docs → .llm}/separator.llm.md +0 -0
  483. /package/{llm-docs → .llm}/sheet-close.llm.md +0 -0
  484. /package/{llm-docs → .llm}/sheet-content.llm.md +0 -0
  485. /package/{llm-docs → .llm}/sheet-description.llm.md +0 -0
  486. /package/{llm-docs → .llm}/sheet-footer.llm.md +0 -0
  487. /package/{llm-docs → .llm}/sheet-header.llm.md +0 -0
  488. /package/{llm-docs → .llm}/sheet-title.llm.md +0 -0
  489. /package/{llm-docs → .llm}/sheet-trigger.llm.md +0 -0
  490. /package/{llm-docs → .llm}/sheet.llm.md +0 -0
  491. /package/{llm-docs → .llm}/sidebar-content.llm.md +0 -0
  492. /package/{llm-docs → .llm}/sidebar-footer.llm.md +0 -0
  493. /package/{llm-docs → .llm}/sidebar-group-action.llm.md +0 -0
  494. /package/{llm-docs → .llm}/sidebar-group-content.llm.md +0 -0
  495. /package/{llm-docs → .llm}/sidebar-group-label.llm.md +0 -0
  496. /package/{llm-docs → .llm}/sidebar-group.llm.md +0 -0
  497. /package/{llm-docs → .llm}/sidebar-header.llm.md +0 -0
  498. /package/{llm-docs → .llm}/sidebar-input.llm.md +0 -0
  499. /package/{llm-docs → .llm}/sidebar-inset.llm.md +0 -0
  500. /package/{llm-docs → .llm}/sidebar-menu-action.llm.md +0 -0
  501. /package/{llm-docs → .llm}/sidebar-menu-badge.llm.md +0 -0
  502. /package/{llm-docs → .llm}/sidebar-menu-button.llm.md +0 -0
  503. /package/{llm-docs → .llm}/sidebar-menu-item.llm.md +0 -0
  504. /package/{llm-docs → .llm}/sidebar-menu-skeleton.llm.md +0 -0
  505. /package/{llm-docs → .llm}/sidebar-menu-sub-button.llm.md +0 -0
  506. /package/{llm-docs → .llm}/sidebar-menu-sub-item.llm.md +0 -0
  507. /package/{llm-docs → .llm}/sidebar-menu-sub.llm.md +0 -0
  508. /package/{llm-docs → .llm}/sidebar-menu.llm.md +0 -0
  509. /package/{llm-docs → .llm}/sidebar-provider.llm.md +0 -0
  510. /package/{llm-docs → .llm}/sidebar-rail.llm.md +0 -0
  511. /package/{llm-docs → .llm}/sidebar-separator.llm.md +0 -0
  512. /package/{llm-docs → .llm}/sidebar-trigger.llm.md +0 -0
  513. /package/{llm-docs → .llm}/sidebar.llm.md +0 -0
  514. /package/{llm-docs → .llm}/skeleton.llm.md +0 -0
  515. /package/{llm-docs → .llm}/slider.llm.md +0 -0
  516. /package/{llm-docs → .llm}/stack.llm.md +0 -0
  517. /package/{llm-docs → .llm}/switch.llm.md +0 -0
  518. /package/{llm-docs → .llm}/table-body.llm.md +0 -0
  519. /package/{llm-docs → .llm}/table-caption.llm.md +0 -0
  520. /package/{llm-docs → .llm}/table-cell.llm.md +0 -0
  521. /package/{llm-docs → .llm}/table-footer.llm.md +0 -0
  522. /package/{llm-docs → .llm}/table-head.llm.md +0 -0
  523. /package/{llm-docs → .llm}/table-header.llm.md +0 -0
  524. /package/{llm-docs → .llm}/table-row.llm.md +0 -0
  525. /package/{llm-docs → .llm}/table.llm.md +0 -0
  526. /package/{llm-docs → .llm}/tabs-content.llm.md +0 -0
  527. /package/{llm-docs → .llm}/tabs-list.llm.md +0 -0
  528. /package/{llm-docs → .llm}/tabs-trigger.llm.md +0 -0
  529. /package/{llm-docs → .llm}/tabs.llm.md +0 -0
  530. /package/{llm-docs → .llm}/text-field.llm.md +0 -0
  531. /package/{llm-docs → .llm}/textarea.llm.md +0 -0
  532. /package/{llm-docs → .llm}/theme-preference.llm.md +0 -0
  533. /package/{llm-docs → .llm}/theme-toggle.llm.md +0 -0
  534. /package/{llm-docs → .llm}/theme.llm.md +0 -0
  535. /package/{llm-docs → .llm}/toast.llm.md +0 -0
  536. /package/{llm-docs → .llm}/toaster.llm.md +0 -0
  537. /package/{llm-docs → .llm}/toggle-group-item.llm.md +0 -0
  538. /package/{llm-docs → .llm}/toggle-group.llm.md +0 -0
  539. /package/{llm-docs → .llm}/toggle.llm.md +0 -0
  540. /package/{llm-docs → .llm}/tooltip-content.llm.md +0 -0
  541. /package/{llm-docs → .llm}/tooltip-provider.llm.md +0 -0
  542. /package/{llm-docs → .llm}/tooltip-trigger.llm.md +0 -0
  543. /package/{llm-docs → .llm}/tooltip.llm.md +0 -0
  544. /package/{llm-docs → .llm}/use-carousel.llm.md +0 -0
  545. /package/{llm-docs → .llm}/use-command-state.llm.md +0 -0
  546. /package/{llm-docs → .llm}/use-is-mobile.llm.md +0 -0
  547. /package/{llm-docs → .llm}/use-sidebar.llm.md +0 -0
@@ -131,4 +131,129 @@ import { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext
131
131
  <CarouselPrevious />
132
132
  <CarouselNext />
133
133
  </Carousel>
134
+ ```
135
+
136
+ ## Kbd and KbdGroup
137
+
138
+ Display keyboard shortcuts and key combinations with semantic HTML.
139
+
140
+ ```tsx
141
+ import { Kbd, KbdGroup } from "@neynar/ui"
142
+
143
+ // Single key
144
+ <Kbd>Enter</Kbd>
145
+ <Kbd>Esc</Kbd>
146
+ <Kbd>⌘</Kbd>
147
+
148
+ // Key combinations
149
+ <KbdGroup>
150
+ <Kbd>⌘</Kbd>
151
+ <Kbd>K</Kbd>
152
+ </KbdGroup>
153
+
154
+ <KbdGroup>
155
+ <Kbd>⌘</Kbd>
156
+ <Kbd>⇧</Kbd>
157
+ <Kbd>P</Kbd>
158
+ </KbdGroup>
159
+
160
+ // In documentation
161
+ <p>
162
+ Press <KbdGroup><Kbd>⌘</Kbd><Kbd>K</Kbd></KbdGroup> to open the
163
+ command palette.
164
+ </p>
165
+
166
+ // In search interfaces
167
+ <div className="relative">
168
+ <Input placeholder="Search..." />
169
+ <div className="absolute right-3 top-1/2 -translate-y-1/2">
170
+ <KbdGroup>
171
+ <Kbd>⌘</Kbd>
172
+ <Kbd>K</Kbd>
173
+ </KbdGroup>
174
+ </div>
175
+ </div>
176
+
177
+ // In tooltips
178
+ <Tooltip>
179
+ <TooltipTrigger asChild>
180
+ <Button variant="ghost" size="icon">
181
+ <Settings className="h-4 w-4" />
182
+ </Button>
183
+ </TooltipTrigger>
184
+ <TooltipContent>
185
+ Open Settings <KbdGroup><Kbd>⌘</Kbd><Kbd>,</Kbd></KbdGroup>
186
+ </TooltipContent>
187
+ </Tooltip>
188
+ ```
189
+
190
+ ## Empty
191
+
192
+ Empty state placeholder for no data scenarios with optional icon, title, description, and actions.
193
+
194
+ ```tsx
195
+ import { Empty } from "@neynar/ui"
196
+ import { Search, Inbox } from "lucide-react"
197
+
198
+ // Basic empty state
199
+ <Empty
200
+ icon={<Search className="h-8 w-8" />}
201
+ title="No results found"
202
+ description="Try adjusting your search criteria"
203
+ />
204
+
205
+ // With action
206
+ <Empty
207
+ icon={<Inbox className="h-8 w-8" />}
208
+ title="No messages"
209
+ description="You don't have any messages yet"
210
+ action={<Button>Compose Message</Button>}
211
+ />
212
+
213
+ // Multiple actions
214
+ <Empty
215
+ title="No data available"
216
+ description="Get started by uploading your first file"
217
+ actions={
218
+ <div className="flex gap-2">
219
+ <Button>Upload File</Button>
220
+ <Button variant="outline">Learn More</Button>
221
+ </div>
222
+ }
223
+ />
224
+ ```
225
+
226
+ ## Spinner
227
+
228
+ Loading indicator for async operations with GPU-accelerated animation.
229
+
230
+ ```tsx
231
+ import { Spinner } from "@neynar/ui"
232
+
233
+ // Basic spinner
234
+ <Spinner />
235
+
236
+ // Different sizes
237
+ <Spinner className="size-3" /> // Small
238
+ <Spinner className="size-4" /> // Default
239
+ <Spinner className="size-6" /> // Large
240
+ <Spinner className="size-8" /> // Extra large
241
+
242
+ // With color
243
+ <Spinner className="text-primary" />
244
+ <Spinner className="text-destructive" />
245
+
246
+ // In button
247
+ <Button disabled>
248
+ <Spinner className="mr-2 size-4" />
249
+ Loading...
250
+ </Button>
251
+
252
+ // Centered loading state
253
+ <div className="flex items-center justify-center p-8">
254
+ <Spinner className="size-6" />
255
+ </div>
256
+
257
+ // With custom aria-label
258
+ <Spinner aria-label="Loading user profile" />
134
259
  ```
@@ -64,20 +64,6 @@ import { Skeleton } from "@neynar/ui"
64
64
  </div>
65
65
  ```
66
66
 
67
- ## EmptyState
68
-
69
- Handle empty data scenarios with helpful messaging.
70
-
71
- ```tsx
72
- import { EmptyState } from "@neynar/ui"
73
-
74
- <EmptyState
75
- title="No casts found"
76
- description="Try adjusting your search criteria"
77
- action={<Button>Refresh</Button>}
78
- />
79
- ```
80
-
81
67
  ## Sonner (Toast)
82
68
 
83
69
  Non-blocking notifications for actions and events.
@@ -20,6 +20,100 @@ import { Input, Label, Textarea, TextField } from "@neynar/ui"
20
20
  <TextField label="Username" placeholder="Enter username" required />
21
21
  ```
22
22
 
23
+ ## Field
24
+
25
+ Flexible form field composition with label, description, error, and hint support.
26
+
27
+ ```tsx
28
+ import { Field, Input } from "@neynar/ui"
29
+
30
+ // Basic field with label
31
+ <Field label="Email Address">
32
+ <Input type="email" placeholder="you@example.com" />
33
+ </Field>
34
+
35
+ // Field with description
36
+ <Field
37
+ label="Password"
38
+ description="Must be at least 8 characters"
39
+ >
40
+ <Input type="password" />
41
+ </Field>
42
+
43
+ // Field with error
44
+ <Field
45
+ label="Username"
46
+ error="Username is already taken"
47
+ >
48
+ <Input defaultValue="john" />
49
+ </Field>
50
+
51
+ // Field with hint
52
+ <Field
53
+ label="API Key"
54
+ hint="Keep this secret"
55
+ >
56
+ <Input type="password" />
57
+ </Field>
58
+
59
+ // Complete field with all features
60
+ <Field
61
+ label="Full Name"
62
+ description="Enter your legal name"
63
+ error={errors.name}
64
+ hint="This will appear on your profile"
65
+ required
66
+ >
67
+ <Input placeholder="John Doe" />
68
+ </Field>
69
+ ```
70
+
71
+ ## InputGroup
72
+
73
+ Input with left/right addons for icons, text, or buttons.
74
+
75
+ ```tsx
76
+ import { InputGroup, Input } from "@neynar/ui"
77
+ import { Search, DollarSign, Send } from "lucide-react"
78
+
79
+ // Icon addon
80
+ <InputGroup>
81
+ <InputGroup.LeftAddon>
82
+ <Search className="h-4 w-4" />
83
+ </InputGroup.LeftAddon>
84
+ <Input placeholder="Search..." />
85
+ </InputGroup>
86
+
87
+ // Text addon
88
+ <InputGroup>
89
+ <InputGroup.LeftAddon>
90
+ https://
91
+ </InputGroup.LeftAddon>
92
+ <Input placeholder="example.com" />
93
+ </InputGroup>
94
+
95
+ // Currency input
96
+ <InputGroup>
97
+ <InputGroup.LeftAddon>
98
+ <DollarSign className="h-4 w-4" />
99
+ </InputGroup.LeftAddon>
100
+ <Input type="number" placeholder="0.00" />
101
+ <InputGroup.RightAddon>
102
+ USD
103
+ </InputGroup.RightAddon>
104
+ </InputGroup>
105
+
106
+ // With button
107
+ <InputGroup>
108
+ <Input placeholder="Enter email..." />
109
+ <InputGroup.RightAddon>
110
+ <Button size="sm">
111
+ <Send className="h-4 w-4" />
112
+ </Button>
113
+ </InputGroup.RightAddon>
114
+ </InputGroup>
115
+ ```
116
+
23
117
  ## Selection Components
24
118
 
25
119
  ```tsx
@@ -56,4 +56,173 @@ import { AspectRatio } from "@neynar/ui";
56
56
  <AspectRatio ratio={1} className="bg-muted">
57
57
  <div className="flex items-center justify-center">1:1 Square</div>
58
58
  </AspectRatio>
59
+ ```
60
+
61
+ ## ButtonGroup
62
+
63
+ Visual grouping for related buttons with flexible composition.
64
+
65
+ ```tsx
66
+ import { ButtonGroup } from "@neynar/ui"
67
+
68
+ // Basic button group
69
+ <ButtonGroup>
70
+ <Button variant="outline">Left</Button>
71
+ <Button variant="outline">Middle</Button>
72
+ <Button variant="outline">Right</Button>
73
+ </ButtonGroup>
74
+
75
+ // Different orientations
76
+ <ButtonGroup orientation="vertical">
77
+ <Button>Top</Button>
78
+ <Button>Middle</Button>
79
+ <Button>Bottom</Button>
80
+ </ButtonGroup>
81
+
82
+ // Mixed button types
83
+ <ButtonGroup>
84
+ <Button variant="default">Primary</Button>
85
+ <Button variant="secondary">Secondary</Button>
86
+ <Button variant="outline" size="icon">
87
+ <MoreVertical className="h-4 w-4" />
88
+ </Button>
89
+ </ButtonGroup>
90
+
91
+ // Toolbar pattern
92
+ <ButtonGroup>
93
+ <Button variant="ghost" size="icon"><Bold className="h-4 w-4" /></Button>
94
+ <Button variant="ghost" size="icon"><Italic className="h-4 w-4" /></Button>
95
+ <Button variant="ghost" size="icon"><Underline className="h-4 w-4" /></Button>
96
+ </ButtonGroup>
97
+ ```
98
+
99
+ ## Item
100
+
101
+ Flexible list item composition with media, content, and actions following the compound component pattern.
102
+
103
+ ```tsx
104
+ import {
105
+ Item,
106
+ ItemGroup,
107
+ ItemMedia,
108
+ ItemContent,
109
+ ItemTitle,
110
+ ItemDescription,
111
+ ItemHeader,
112
+ ItemFooter,
113
+ ItemActions,
114
+ ItemSeparator
115
+ } from "@neynar/ui"
116
+
117
+ // Basic list item
118
+ <ItemGroup>
119
+ <Item>
120
+ <ItemMedia variant="icon">
121
+ <FileText className="h-4 w-4" />
122
+ </ItemMedia>
123
+ <ItemContent>
124
+ <ItemTitle>Document.pdf</ItemTitle>
125
+ <ItemDescription>Last modified today</ItemDescription>
126
+ </ItemContent>
127
+ </Item>
128
+ </ItemGroup>
129
+
130
+ // File list with actions
131
+ <ItemGroup>
132
+ <Item asChild>
133
+ <a href="/documents/report.pdf">
134
+ <ItemMedia variant="icon">
135
+ <FileText className="h-4 w-4" />
136
+ </ItemMedia>
137
+ <ItemContent>
138
+ <ItemHeader>
139
+ <ItemTitle>Q4 Report.pdf</ItemTitle>
140
+ <Badge variant="secondary">PDF</Badge>
141
+ </ItemHeader>
142
+ <ItemDescription>Last modified today at 2:45 PM</ItemDescription>
143
+ <ItemFooter>
144
+ <span className="text-xs text-muted-foreground">2.4 MB</span>
145
+ </ItemFooter>
146
+ </ItemContent>
147
+ <ItemActions>
148
+ <Button variant="ghost" size="icon">
149
+ <MoreVertical className="h-4 w-4" />
150
+ </Button>
151
+ </ItemActions>
152
+ </a>
153
+ </Item>
154
+ </ItemGroup>
155
+
156
+ // User list with avatars
157
+ <ItemGroup>
158
+ <Item>
159
+ <ItemMedia variant="image">
160
+ <img src="/avatars/alice.jpg" alt="Alice" />
161
+ </ItemMedia>
162
+ <ItemContent>
163
+ <ItemTitle>Alice Johnson</ItemTitle>
164
+ <ItemDescription>Product Manager</ItemDescription>
165
+ </ItemContent>
166
+ <ItemActions>
167
+ <Button variant="outline" size="sm">Message</Button>
168
+ </ItemActions>
169
+ </Item>
170
+ <ItemSeparator />
171
+ <Item>
172
+ <ItemMedia variant="image">
173
+ <img src="/avatars/bob.jpg" alt="Bob" />
174
+ </ItemMedia>
175
+ <ItemContent>
176
+ <ItemTitle>Bob Smith</ItemTitle>
177
+ <ItemDescription>Engineer</ItemDescription>
178
+ </ItemContent>
179
+ <ItemActions>
180
+ <Button variant="outline" size="sm">Message</Button>
181
+ </ItemActions>
182
+ </Item>
183
+ </ItemGroup>
184
+
185
+ // Notification list with variants
186
+ <ItemGroup>
187
+ <Item variant="muted">
188
+ <ItemMedia variant="icon">
189
+ <User className="h-4 w-4" />
190
+ </ItemMedia>
191
+ <ItemContent>
192
+ <ItemHeader>
193
+ <ItemTitle>New follower</ItemTitle>
194
+ <Badge>New</Badge>
195
+ </ItemHeader>
196
+ <ItemDescription>John started following you</ItemDescription>
197
+ <ItemFooter>
198
+ <span className="text-xs text-muted-foreground">5 min ago</span>
199
+ </ItemFooter>
200
+ </ItemContent>
201
+ </Item>
202
+ </ItemGroup>
203
+
204
+ // Compact settings menu
205
+ <ItemGroup>
206
+ <Item asChild size="sm">
207
+ <a href="/settings/profile">
208
+ <ItemContent>
209
+ <ItemTitle>Profile</ItemTitle>
210
+ </ItemContent>
211
+ <ItemActions>
212
+ <ChevronRight className="h-4 w-4 text-muted-foreground" />
213
+ </ItemActions>
214
+ </a>
215
+ </Item>
216
+ <ItemSeparator />
217
+ <Item asChild size="sm">
218
+ <a href="/settings/notifications">
219
+ <ItemContent>
220
+ <ItemTitle>Notifications</ItemTitle>
221
+ </ItemContent>
222
+ <ItemActions>
223
+ <ChevronRight className="h-4 w-4 text-muted-foreground" />
224
+ </ItemActions>
225
+ </a>
226
+ </Item>
227
+ </ItemGroup>
59
228
  ```
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # @neynar/ui Component Library
2
2
 
3
- A production-ready React component library with 265+ components, hooks, and utilities. Built on Radix UI primitives with Tailwind CSS v4, ensuring WCAG-compliant accessibility and zero runtime overhead.
3
+ A production-ready React component library with 272+ components, hooks, and utilities. Built on Radix UI primitives with Tailwind CSS v4, ensuring WCAG-compliant accessibility and zero runtime overhead.
4
4
 
5
5
  ## Quick Reference
6
6
 
@@ -11,21 +11,21 @@ import "@neynar/ui/styles"
11
11
 
12
12
  ## 🔍 How to Search Components
13
13
 
14
- **IMPORTANT:** DO NOT load the entire `llm-docs/sdk-items-registry.json` file - it contains 265+ items and will exceed context limits.
14
+ **IMPORTANT:** DO NOT load the entire `.llm/sdk-items-registry.json` file - it contains 265+ items and will exceed context limits.
15
15
 
16
16
  Instead, search efficiently using these methods:
17
17
 
18
18
  ### Method 1: Search by Component Name (Recommended)
19
19
  ```bash
20
20
  # Search for specific component documentation
21
- cat llm-docs/{component-name}.llm.md
22
- # Example: cat llm-docs/button.llm.md
21
+ cat .llm/{component-name}.llm.md
22
+ # Example: cat .llm/button.llm.md
23
23
  ```
24
24
 
25
- ### Method 2: Search Registry by Keywords
25
+ ### Method 2: Search Registry by Keywords
26
26
  ```bash
27
27
  # Use jq to search registry by keywords without loading entire file
28
- jq 'to_entries[] | select(.value.keywords[]? | contains("button")) | {key: .key, description: .value.description}' llm-docs/sdk-items-registry.json
28
+ jq 'to_entries[] | select(.value.keywords[]? | contains("button")) | {key: .key, description: .value.description}' .llm/sdk-items-registry.json
29
29
  ```
30
30
 
31
31
  ### Method 3: List Components by Category
@@ -81,7 +81,7 @@ import { H1, H2, P, Span, Code, Stack, Badge } from "@neynar/ui"
81
81
 
82
82
  ## Registry Structure
83
83
 
84
- The `llm-docs/sdk-items-registry.json` contains metadata for all components:
84
+ The `.llm/sdk-items-registry.json` contains metadata for all components:
85
85
 
86
86
  ```json
87
87
  {
@@ -99,9 +99,9 @@ The `llm-docs/sdk-items-registry.json` contains metadata for all components:
99
99
  For component discovery, use this approach:
100
100
 
101
101
  1. **Know what you need?** → Use Method 1 (direct file access)
102
- 2. **Searching by functionality?** → Use Method 2 (keyword search)
102
+ 2. **Searching by functionality?** → Use Method 2 (keyword search)
103
103
  3. **Browsing categories?** → Use Method 3 (category patterns)
104
- 4. **Need complete list?** → Use `jq 'keys' llm-docs/sdk-items-registry.json`
104
+ 4. **Need complete list?** → Use `jq 'keys' .llm/sdk-items-registry.json`
105
105
 
106
106
  **Performance Tip:** Each .llm.md file contains complete documentation including props, examples, and TypeScript definitions. Only load what you need.
107
107
 
@@ -109,7 +109,9 @@ For component discovery, use this approach:
109
109
 
110
110
  ### Layout Components → [docs/llm/components/layout.md](docs/llm/components/layout.md)
111
111
  - **Container** - Responsive container with max-width constraints
112
- - **Stack** - Flexible vertical and horizontal layout primitive
112
+ - **Stack** - Flexible vertical and horizontal layout primitive
113
+ - **ButtonGroup** - Groups related buttons with consistent spacing
114
+ - **Item** + 9 sub-components - Flexible list item with media, content, and actions
113
115
  - **Separator** - Visual content dividers
114
116
  - **AspectRatio** - Responsive aspect ratio containers
115
117
  - **ResizablePanelGroup**, **ResizablePanel**, **ResizableHandle** - Interactive resizable layouts
@@ -129,6 +131,8 @@ For component discovery, use this approach:
129
131
  - **Input** - Text input fields with validation states
130
132
  - **Textarea** - Multi-line text input with auto-resize
131
133
  - **TextField** - Complete form field with label and validation
134
+ - **Field** - Flexible form field composition with label, description, error, and hint
135
+ - **InputGroup** - Input with left/right addons for icons, text, or buttons
132
136
  - **Label** - Accessible form labels
133
137
  - **Checkbox** - Boolean input with indeterminate state
134
138
  - **RadioGroup**, **RadioGroupItem** - Single-choice selection
@@ -151,7 +155,9 @@ For component discovery, use this approach:
151
155
  - **Progress** - Loading and completion indicators
152
156
  - **Skeleton** - Loading state placeholders
153
157
  - **Chart** + 5 sub-components - Data visualization
154
- - **EmptyState** - No data placeholder with actions
158
+ - **Kbd**, **KbdGroup** - Keyboard shortcuts and key combinations display
159
+ - **Empty** - Empty state placeholder for no data scenarios
160
+ - **Spinner** - Loading indicator for async operations
155
161
 
156
162
  ### Table Components → [docs/llm/components/tables.md](docs/llm/components/tables.md)
157
163
  - **Table** + 7 sub-components - Data tables
@@ -201,7 +207,7 @@ The typography system provides semantic HTML components with consistent styling:
201
207
  #### Available Components
202
208
  - **H1, H2, H3, H4, H5, H6** - Semantic headings with proper hierarchy
203
209
  - **P** - Paragraph text with body variant styling
204
- - **Span** - Inline text with default styling
210
+ - **Span** - Inline text with default styling
205
211
  - **A** - Links with proper hover/focus states
206
212
  - **Code** - Inline code with monospace styling
207
213
  - **Small** - Small text for captions/metadata
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neynar/ui",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "license": "MIT",
5
5
  "author": "Neynar Inc.",
6
6
  "description": "React UI component library built on shadcn/ui and Tailwind CSS",
@@ -28,7 +28,7 @@
28
28
  "README.md",
29
29
  "llms.txt",
30
30
  "docs/llm/**",
31
- "llm-docs/**"
31
+ ".llm/**"
32
32
  ],
33
33
  "scripts": {
34
34
  "build": "vite build && tsc --emitDeclarationOnly",
@@ -50,22 +50,22 @@
50
50
  "@radix-ui/react-dialog": "1.1.14",
51
51
  "@radix-ui/react-dropdown-menu": "2.1.15",
52
52
  "@radix-ui/react-hover-card": "1.1.14",
53
- "@radix-ui/react-label": "2.1.7",
53
+ "@radix-ui/react-label": "^2.1.7",
54
54
  "@radix-ui/react-menubar": "1.1.15",
55
55
  "@radix-ui/react-navigation-menu": "1.2.13",
56
56
  "@radix-ui/react-popover": "1.1.14",
57
57
  "@radix-ui/react-progress": "1.1.7",
58
58
  "@radix-ui/react-radio-group": "1.3.7",
59
59
  "@radix-ui/react-select": "2.2.5",
60
- "@radix-ui/react-separator": "1.1.7",
60
+ "@radix-ui/react-separator": "^1.1.7",
61
61
  "@radix-ui/react-slider": "1.3.5",
62
- "@radix-ui/react-slot": "1.2.3",
62
+ "@radix-ui/react-slot": "^1.2.3",
63
63
  "@radix-ui/react-switch": "1.2.5",
64
64
  "@radix-ui/react-tabs": "1.1.12",
65
65
  "@radix-ui/react-toggle": "1.1.9",
66
66
  "@radix-ui/react-toggle-group": "1.1.10",
67
67
  "@radix-ui/react-tooltip": "1.2.7",
68
- "class-variance-authority": "0.7.1",
68
+ "class-variance-authority": "^0.7.1",
69
69
  "clsx": "2.1.1",
70
70
  "cmdk": "1.1.1",
71
71
  "date-fns": "4.1.0",
@@ -94,6 +94,7 @@
94
94
  "prettier": "3.6.2",
95
95
  "react": "19.1.1",
96
96
  "react-dom": "19.1.1",
97
+ "shadcn": "^3.4.0",
97
98
  "storybook": "9.1.2",
98
99
  "tailwindcss": "4.1.11",
99
100
  "ts-morph": "^26.0.0",