@neynar/ui 0.1.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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +195 -0
  3. package/dist/components/ui/accordion.d.ts +229 -0
  4. package/dist/components/ui/accordion.d.ts.map +1 -0
  5. package/dist/components/ui/alert-dialog.d.ts +247 -0
  6. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  7. package/dist/components/ui/alert.d.ts +187 -0
  8. package/dist/components/ui/alert.d.ts.map +1 -0
  9. package/dist/components/ui/aspect-ratio.d.ts +94 -0
  10. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  11. package/dist/components/ui/avatar.d.ts +244 -0
  12. package/dist/components/ui/avatar.d.ts.map +1 -0
  13. package/dist/components/ui/badge.d.ts +163 -0
  14. package/dist/components/ui/badge.d.ts.map +1 -0
  15. package/dist/components/ui/breadcrumb.d.ts +281 -0
  16. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  17. package/dist/components/ui/button.d.ts +129 -0
  18. package/dist/components/ui/button.d.ts.map +1 -0
  19. package/dist/components/ui/calendar.d.ts +169 -0
  20. package/dist/components/ui/calendar.d.ts.map +1 -0
  21. package/dist/components/ui/card.d.ts +365 -0
  22. package/dist/components/ui/card.d.ts.map +1 -0
  23. package/dist/components/ui/carousel.d.ts +369 -0
  24. package/dist/components/ui/carousel.d.ts.map +1 -0
  25. package/dist/components/ui/chart.d.ts +442 -0
  26. package/dist/components/ui/chart.d.ts.map +1 -0
  27. package/dist/components/ui/checkbox.d.ts +88 -0
  28. package/dist/components/ui/checkbox.d.ts.map +1 -0
  29. package/dist/components/ui/collapsible.d.ts +182 -0
  30. package/dist/components/ui/collapsible.d.ts.map +1 -0
  31. package/dist/components/ui/combobox.d.ts +270 -0
  32. package/dist/components/ui/combobox.d.ts.map +1 -0
  33. package/dist/components/ui/command.d.ts +355 -0
  34. package/dist/components/ui/command.d.ts.map +1 -0
  35. package/dist/components/ui/container.d.ts +102 -0
  36. package/dist/components/ui/container.d.ts.map +1 -0
  37. package/dist/components/ui/context-menu.d.ts +339 -0
  38. package/dist/components/ui/context-menu.d.ts.map +1 -0
  39. package/dist/components/ui/date-picker.d.ts +145 -0
  40. package/dist/components/ui/date-picker.d.ts.map +1 -0
  41. package/dist/components/ui/dialog.d.ts +322 -0
  42. package/dist/components/ui/dialog.d.ts.map +1 -0
  43. package/dist/components/ui/drawer.d.ts +154 -0
  44. package/dist/components/ui/drawer.d.ts.map +1 -0
  45. package/dist/components/ui/dropdown-menu.d.ts +349 -0
  46. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  47. package/dist/components/ui/empty-state.d.ts +133 -0
  48. package/dist/components/ui/empty-state.d.ts.map +1 -0
  49. package/dist/components/ui/hover-card.d.ts +109 -0
  50. package/dist/components/ui/hover-card.d.ts.map +1 -0
  51. package/dist/components/ui/input.d.ts +89 -0
  52. package/dist/components/ui/input.d.ts.map +1 -0
  53. package/dist/components/ui/label.d.ts +93 -0
  54. package/dist/components/ui/label.d.ts.map +1 -0
  55. package/dist/components/ui/menubar.d.ts +306 -0
  56. package/dist/components/ui/menubar.d.ts.map +1 -0
  57. package/dist/components/ui/navigation-menu.d.ts +318 -0
  58. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  59. package/dist/components/ui/pagination.d.ts +343 -0
  60. package/dist/components/ui/pagination.d.ts.map +1 -0
  61. package/dist/components/ui/popover.d.ts +178 -0
  62. package/dist/components/ui/popover.d.ts.map +1 -0
  63. package/dist/components/ui/progress.d.ts +64 -0
  64. package/dist/components/ui/progress.d.ts.map +1 -0
  65. package/dist/components/ui/radio-group.d.ts +144 -0
  66. package/dist/components/ui/radio-group.d.ts.map +1 -0
  67. package/dist/components/ui/resizable.d.ts +164 -0
  68. package/dist/components/ui/resizable.d.ts.map +1 -0
  69. package/dist/components/ui/scroll-area.d.ts +82 -0
  70. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  71. package/dist/components/ui/select.d.ts +316 -0
  72. package/dist/components/ui/select.d.ts.map +1 -0
  73. package/dist/components/ui/separator.d.ts +80 -0
  74. package/dist/components/ui/separator.d.ts.map +1 -0
  75. package/dist/components/ui/sheet.d.ts +346 -0
  76. package/dist/components/ui/sheet.d.ts.map +1 -0
  77. package/dist/components/ui/sidebar.d.ts +1561 -0
  78. package/dist/components/ui/sidebar.d.ts.map +1 -0
  79. package/dist/components/ui/skeleton.d.ts +66 -0
  80. package/dist/components/ui/skeleton.d.ts.map +1 -0
  81. package/dist/components/ui/slider.d.ts +95 -0
  82. package/dist/components/ui/slider.d.ts.map +1 -0
  83. package/dist/components/ui/sonner.d.ts +101 -0
  84. package/dist/components/ui/sonner.d.ts.map +1 -0
  85. package/dist/components/ui/stack.d.ts +192 -0
  86. package/dist/components/ui/stack.d.ts.map +1 -0
  87. package/dist/components/ui/stories/accordion.stories.d.ts +71 -0
  88. package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -0
  89. package/dist/components/ui/stories/alert-dialog.stories.d.ts +39 -0
  90. package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -0
  91. package/dist/components/ui/stories/alert.stories.d.ts +48 -0
  92. package/dist/components/ui/stories/alert.stories.d.ts.map +1 -0
  93. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +53 -0
  94. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -0
  95. package/dist/components/ui/stories/avatar.stories.d.ts +49 -0
  96. package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -0
  97. package/dist/components/ui/stories/badge.stories.d.ts +64 -0
  98. package/dist/components/ui/stories/badge.stories.d.ts.map +1 -0
  99. package/dist/components/ui/stories/breadcrumb.stories.d.ts +27 -0
  100. package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -0
  101. package/dist/components/ui/stories/button.stories.d.ts +92 -0
  102. package/dist/components/ui/stories/button.stories.d.ts.map +1 -0
  103. package/dist/components/ui/stories/calendar.stories.d.ts +94 -0
  104. package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -0
  105. package/dist/components/ui/stories/card.stories.d.ts +29 -0
  106. package/dist/components/ui/stories/card.stories.d.ts.map +1 -0
  107. package/dist/components/ui/stories/carousel.stories.d.ts +42 -0
  108. package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -0
  109. package/dist/components/ui/stories/chart.stories.d.ts +51 -0
  110. package/dist/components/ui/stories/chart.stories.d.ts.map +1 -0
  111. package/dist/components/ui/stories/checkbox.stories.d.ts +72 -0
  112. package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -0
  113. package/dist/components/ui/stories/cn.stories.d.ts +19 -0
  114. package/dist/components/ui/stories/cn.stories.d.ts.map +1 -0
  115. package/dist/components/ui/stories/collapsible.stories.d.ts +51 -0
  116. package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -0
  117. package/dist/components/ui/stories/colors.stories.d.ts +31 -0
  118. package/dist/components/ui/stories/colors.stories.d.ts.map +1 -0
  119. package/dist/components/ui/stories/combobox.stories.d.ts +89 -0
  120. package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -0
  121. package/dist/components/ui/stories/command.stories.d.ts +69 -0
  122. package/dist/components/ui/stories/command.stories.d.ts.map +1 -0
  123. package/dist/components/ui/stories/container.stories.d.ts +42 -0
  124. package/dist/components/ui/stories/container.stories.d.ts.map +1 -0
  125. package/dist/components/ui/stories/context-menu.stories.d.ts +32 -0
  126. package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -0
  127. package/dist/components/ui/stories/date-picker.stories.d.ts +67 -0
  128. package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -0
  129. package/dist/components/ui/stories/dialog.stories.d.ts +48 -0
  130. package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -0
  131. package/dist/components/ui/stories/drawer.stories.d.ts +33 -0
  132. package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -0
  133. package/dist/components/ui/stories/dropdown-menu.stories.d.ts +31 -0
  134. package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -0
  135. package/dist/components/ui/stories/empty-state.stories.d.ts +74 -0
  136. package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -0
  137. package/dist/components/ui/stories/hover-card.stories.d.ts +35 -0
  138. package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -0
  139. package/dist/components/ui/stories/input.stories.d.ts +69 -0
  140. package/dist/components/ui/stories/input.stories.d.ts.map +1 -0
  141. package/dist/components/ui/stories/label.stories.d.ts +47 -0
  142. package/dist/components/ui/stories/label.stories.d.ts.map +1 -0
  143. package/dist/components/ui/stories/menubar.stories.d.ts +39 -0
  144. package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -0
  145. package/dist/components/ui/stories/navigation-menu.stories.d.ts +44 -0
  146. package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -0
  147. package/dist/components/ui/stories/pagination.stories.d.ts +33 -0
  148. package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -0
  149. package/dist/components/ui/stories/popover.stories.d.ts +36 -0
  150. package/dist/components/ui/stories/popover.stories.d.ts.map +1 -0
  151. package/dist/components/ui/stories/progress.stories.d.ts +38 -0
  152. package/dist/components/ui/stories/progress.stories.d.ts.map +1 -0
  153. package/dist/components/ui/stories/radio-group.stories.d.ts +76 -0
  154. package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -0
  155. package/dist/components/ui/stories/resizable.stories.d.ts +49 -0
  156. package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -0
  157. package/dist/components/ui/stories/scroll-area.stories.d.ts +35 -0
  158. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -0
  159. package/dist/components/ui/stories/select.stories.d.ts +51 -0
  160. package/dist/components/ui/stories/select.stories.d.ts.map +1 -0
  161. package/dist/components/ui/stories/separator.stories.d.ts +58 -0
  162. package/dist/components/ui/stories/separator.stories.d.ts.map +1 -0
  163. package/dist/components/ui/stories/sheet.stories.d.ts +43 -0
  164. package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -0
  165. package/dist/components/ui/stories/sidebar.stories.d.ts +60 -0
  166. package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -0
  167. package/dist/components/ui/stories/skeleton.stories.d.ts +42 -0
  168. package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -0
  169. package/dist/components/ui/stories/slider.stories.d.ts +99 -0
  170. package/dist/components/ui/stories/slider.stories.d.ts.map +1 -0
  171. package/dist/components/ui/stories/sonner.stories.d.ts +9 -0
  172. package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -0
  173. package/dist/components/ui/stories/stack.stories.d.ts +39 -0
  174. package/dist/components/ui/stories/stack.stories.d.ts.map +1 -0
  175. package/dist/components/ui/stories/switch.stories.d.ts +71 -0
  176. package/dist/components/ui/stories/switch.stories.d.ts.map +1 -0
  177. package/dist/components/ui/stories/table.stories.d.ts +40 -0
  178. package/dist/components/ui/stories/table.stories.d.ts.map +1 -0
  179. package/dist/components/ui/stories/tabs.stories.d.ts +62 -0
  180. package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -0
  181. package/dist/components/ui/stories/text-field.stories.d.ts +78 -0
  182. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -0
  183. package/dist/components/ui/stories/textarea.stories.d.ts +57 -0
  184. package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -0
  185. package/dist/components/ui/stories/theme-toggle.stories.d.ts +71 -0
  186. package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -0
  187. package/dist/components/ui/stories/theme.stories.d.ts +51 -0
  188. package/dist/components/ui/stories/theme.stories.d.ts.map +1 -0
  189. package/dist/components/ui/stories/toggle-group.stories.d.ts +71 -0
  190. package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -0
  191. package/dist/components/ui/stories/toggle.stories.d.ts +78 -0
  192. package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -0
  193. package/dist/components/ui/stories/tooltip.stories.d.ts +37 -0
  194. package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -0
  195. package/dist/components/ui/stories/typography.stories.d.ts +137 -0
  196. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -0
  197. package/dist/components/ui/stories/use-mobile.stories.d.ts +20 -0
  198. package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -0
  199. package/dist/components/ui/stories/use-theme.stories.d.ts +23 -0
  200. package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -0
  201. package/dist/components/ui/switch.d.ts +84 -0
  202. package/dist/components/ui/switch.d.ts.map +1 -0
  203. package/dist/components/ui/table.d.ts +321 -0
  204. package/dist/components/ui/table.d.ts.map +1 -0
  205. package/dist/components/ui/tabs.d.ts +260 -0
  206. package/dist/components/ui/tabs.d.ts.map +1 -0
  207. package/dist/components/ui/text-field.d.ts +157 -0
  208. package/dist/components/ui/text-field.d.ts.map +1 -0
  209. package/dist/components/ui/textarea.d.ts +84 -0
  210. package/dist/components/ui/textarea.d.ts.map +1 -0
  211. package/dist/components/ui/theme-toggle.d.ts +105 -0
  212. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  213. package/dist/components/ui/theme.d.ts +110 -0
  214. package/dist/components/ui/theme.d.ts.map +1 -0
  215. package/dist/components/ui/toggle-group.d.ts +133 -0
  216. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  217. package/dist/components/ui/toggle.d.ts +84 -0
  218. package/dist/components/ui/toggle.d.ts.map +1 -0
  219. package/dist/components/ui/tooltip.d.ts +202 -0
  220. package/dist/components/ui/tooltip.d.ts.map +1 -0
  221. package/dist/components/ui/typography.d.ts +287 -0
  222. package/dist/components/ui/typography.d.ts.map +1 -0
  223. package/dist/hooks/use-mobile.d.ts +74 -0
  224. package/dist/hooks/use-mobile.d.ts.map +1 -0
  225. package/dist/hooks/use-theme.d.ts +142 -0
  226. package/dist/hooks/use-theme.d.ts.map +1 -0
  227. package/dist/index.d.ts +57 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +27498 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/lib/utils.d.ts +43 -0
  232. package/dist/lib/utils.d.ts.map +1 -0
  233. package/dist/tsconfig.tsbuildinfo +1 -0
  234. package/docs/llm/colors.md +273 -0
  235. package/docs/llm/components/buttons.md +68 -0
  236. package/docs/llm/components/cards.md +53 -0
  237. package/docs/llm/components/display.md +134 -0
  238. package/docs/llm/components/feedback.md +96 -0
  239. package/docs/llm/components/forms.md +90 -0
  240. package/docs/llm/components/layout.md +59 -0
  241. package/docs/llm/components/menus.md +70 -0
  242. package/docs/llm/components/navigation.md +80 -0
  243. package/docs/llm/components/overlays.md +83 -0
  244. package/docs/llm/components/tables.md +73 -0
  245. package/docs/llm/components/typography.md +199 -0
  246. package/docs/llm/components/utilities.md +114 -0
  247. package/docs/llm/guide.md +165 -0
  248. package/llms.txt +122 -0
  249. package/package.json +104 -0
  250. package/src/components/ui/accordion.tsx +285 -0
  251. package/src/components/ui/alert-dialog.tsx +387 -0
  252. package/src/components/ui/alert.tsx +243 -0
  253. package/src/components/ui/aspect-ratio.tsx +99 -0
  254. package/src/components/ui/avatar.tsx +288 -0
  255. package/src/components/ui/badge.tsx +205 -0
  256. package/src/components/ui/breadcrumb.tsx +378 -0
  257. package/src/components/ui/button.tsx +195 -0
  258. package/src/components/ui/calendar.tsx +371 -0
  259. package/src/components/ui/card.tsx +447 -0
  260. package/src/components/ui/carousel.tsx +624 -0
  261. package/src/components/ui/chart.tsx +802 -0
  262. package/src/components/ui/checkbox.tsx +113 -0
  263. package/src/components/ui/collapsible.tsx +207 -0
  264. package/src/components/ui/combobox.tsx +373 -0
  265. package/src/components/ui/command.tsx +518 -0
  266. package/src/components/ui/container.tsx +114 -0
  267. package/src/components/ui/context-menu.tsx +563 -0
  268. package/src/components/ui/date-picker.tsx +213 -0
  269. package/src/components/ui/dialog.tsx +447 -0
  270. package/src/components/ui/drawer.tsx +273 -0
  271. package/src/components/ui/dropdown-menu.tsx +578 -0
  272. package/src/components/ui/empty-state.tsx +145 -0
  273. package/src/components/ui/hover-card.tsx +144 -0
  274. package/src/components/ui/input.tsx +106 -0
  275. package/src/components/ui/label.tsx +110 -0
  276. package/src/components/ui/menubar.tsx +553 -0
  277. package/src/components/ui/navigation-menu.tsx +471 -0
  278. package/src/components/ui/pagination.tsx +456 -0
  279. package/src/components/ui/popover.tsx +216 -0
  280. package/src/components/ui/progress.tsx +88 -0
  281. package/src/components/ui/radio-group.tsx +183 -0
  282. package/src/components/ui/resizable.tsx +209 -0
  283. package/src/components/ui/scroll-area.tsx +132 -0
  284. package/src/components/ui/select.tsx +485 -0
  285. package/src/components/ui/separator.tsx +101 -0
  286. package/src/components/ui/sheet.tsx +495 -0
  287. package/src/components/ui/sidebar.tsx +2211 -0
  288. package/src/components/ui/skeleton.tsx +76 -0
  289. package/src/components/ui/slider.tsx +147 -0
  290. package/src/components/ui/sonner.tsx +120 -0
  291. package/src/components/ui/stack.tsx +180 -0
  292. package/src/components/ui/stories/accordion.stories.tsx +429 -0
  293. package/src/components/ui/stories/alert-dialog.stories.tsx +519 -0
  294. package/src/components/ui/stories/alert.stories.tsx +228 -0
  295. package/src/components/ui/stories/aspect-ratio.stories.tsx +200 -0
  296. package/src/components/ui/stories/avatar.stories.tsx +317 -0
  297. package/src/components/ui/stories/badge.stories.tsx +260 -0
  298. package/src/components/ui/stories/breadcrumb.stories.tsx +482 -0
  299. package/src/components/ui/stories/button.stories.tsx +266 -0
  300. package/src/components/ui/stories/calendar.stories.tsx +375 -0
  301. package/src/components/ui/stories/card.stories.tsx +308 -0
  302. package/src/components/ui/stories/carousel.stories.tsx +328 -0
  303. package/src/components/ui/stories/chart.stories.tsx +430 -0
  304. package/src/components/ui/stories/checkbox.stories.tsx +297 -0
  305. package/src/components/ui/stories/cn.stories.tsx +433 -0
  306. package/src/components/ui/stories/collapsible.stories.tsx +256 -0
  307. package/src/components/ui/stories/colors.stories.tsx +502 -0
  308. package/src/components/ui/stories/combobox.stories.tsx +301 -0
  309. package/src/components/ui/stories/command.stories.tsx +632 -0
  310. package/src/components/ui/stories/container.stories.tsx +250 -0
  311. package/src/components/ui/stories/context-menu.stories.tsx +446 -0
  312. package/src/components/ui/stories/date-picker.stories.tsx +378 -0
  313. package/src/components/ui/stories/dialog.stories.tsx +535 -0
  314. package/src/components/ui/stories/drawer.stories.tsx +364 -0
  315. package/src/components/ui/stories/dropdown-menu.stories.tsx +374 -0
  316. package/src/components/ui/stories/empty-state.stories.tsx +244 -0
  317. package/src/components/ui/stories/hover-card.stories.tsx +355 -0
  318. package/src/components/ui/stories/input.stories.tsx +289 -0
  319. package/src/components/ui/stories/label.stories.tsx +294 -0
  320. package/src/components/ui/stories/menubar.stories.tsx +764 -0
  321. package/src/components/ui/stories/navigation-menu.stories.tsx +539 -0
  322. package/src/components/ui/stories/pagination.stories.tsx +604 -0
  323. package/src/components/ui/stories/popover.stories.tsx +392 -0
  324. package/src/components/ui/stories/progress.stories.tsx +218 -0
  325. package/src/components/ui/stories/radio-group.stories.tsx +400 -0
  326. package/src/components/ui/stories/resizable.stories.tsx +417 -0
  327. package/src/components/ui/stories/scroll-area.stories.tsx +180 -0
  328. package/src/components/ui/stories/select.stories.tsx +389 -0
  329. package/src/components/ui/stories/separator.stories.tsx +192 -0
  330. package/src/components/ui/stories/sheet.stories.tsx +468 -0
  331. package/src/components/ui/stories/sidebar.stories.tsx +731 -0
  332. package/src/components/ui/stories/skeleton.stories.tsx +216 -0
  333. package/src/components/ui/stories/slider.stories.tsx +321 -0
  334. package/src/components/ui/stories/sonner.stories.tsx +373 -0
  335. package/src/components/ui/stories/stack.stories.tsx +222 -0
  336. package/src/components/ui/stories/switch.stories.tsx +202 -0
  337. package/src/components/ui/stories/table.stories.tsx +541 -0
  338. package/src/components/ui/stories/tabs.stories.tsx +544 -0
  339. package/src/components/ui/stories/text-field.stories.tsx +280 -0
  340. package/src/components/ui/stories/textarea.stories.tsx +245 -0
  341. package/src/components/ui/stories/theme-toggle.stories.tsx +275 -0
  342. package/src/components/ui/stories/theme.stories.tsx +412 -0
  343. package/src/components/ui/stories/toggle-group.stories.tsx +337 -0
  344. package/src/components/ui/stories/toggle.stories.tsx +325 -0
  345. package/src/components/ui/stories/tooltip.stories.tsx +444 -0
  346. package/src/components/ui/stories/typography.stories.tsx +1586 -0
  347. package/src/components/ui/stories/use-mobile.stories.tsx +420 -0
  348. package/src/components/ui/stories/use-theme.stories.tsx +531 -0
  349. package/src/components/ui/switch.tsx +106 -0
  350. package/src/components/ui/table.tsx +424 -0
  351. package/src/components/ui/tabs.tsx +316 -0
  352. package/src/components/ui/text-field.tsx +206 -0
  353. package/src/components/ui/textarea.tsx +98 -0
  354. package/src/components/ui/theme-toggle.tsx +185 -0
  355. package/src/components/ui/theme.tsx +148 -0
  356. package/src/components/ui/toggle-group.tsx +196 -0
  357. package/src/components/ui/toggle.tsx +115 -0
  358. package/src/components/ui/tooltip.tsx +253 -0
  359. package/src/components/ui/typography.tsx +468 -0
  360. package/src/hooks/use-mobile.ts +91 -0
  361. package/src/hooks/use-theme.ts +319 -0
  362. package/src/index.ts +77 -0
  363. package/src/lib/utils.ts +57 -0
  364. package/src/styles/globals.css +160 -0
@@ -0,0 +1,114 @@
1
+ # Utilities
2
+
3
+ Essential utility components, hooks, and functions for building responsive and accessible interfaces.
4
+
5
+ ## Components
6
+
7
+ ### ThemeToggle
8
+ Theme switching component with light/dark mode support.
9
+
10
+ ```tsx
11
+ import { ThemeToggle } from "@neynar/ui"
12
+
13
+ export function Header() {
14
+ return (
15
+ <div className="flex items-center justify-between p-4">
16
+ <h1>My App</h1>
17
+ <ThemeToggle />
18
+ </div>
19
+ )
20
+ }
21
+ ```
22
+
23
+ ### ScrollArea
24
+ Custom scrollable container with styled scrollbars.
25
+
26
+ ```tsx
27
+ import { ScrollArea } from "@neynar/ui"
28
+
29
+ export function MessageList({ messages }) {
30
+ return (
31
+ <ScrollArea className="h-96 w-full border rounded-md p-4">
32
+ {messages.map((message) => (
33
+ <div key={message.id} className="mb-2">{message.text}</div>
34
+ ))}
35
+ </ScrollArea>
36
+ )
37
+ }
38
+ ```
39
+
40
+ ### Resizable
41
+ Resizable panels with drag handles.
42
+
43
+ ```tsx
44
+ import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from "@neynar/ui"
45
+
46
+ export function Layout() {
47
+ return (
48
+ <ResizablePanelGroup direction="horizontal">
49
+ <ResizablePanel defaultSize={25}>Sidebar</ResizablePanel>
50
+ <ResizableHandle />
51
+ <ResizablePanel defaultSize={75}>Main Content</ResizablePanel>
52
+ </ResizablePanelGroup>
53
+ )
54
+ }
55
+ ```
56
+
57
+ ## Hooks
58
+
59
+ ### useTheme
60
+ Theme management hook for dark/light mode.
61
+
62
+ ```tsx
63
+ import { useTheme } from "@neynar/ui"
64
+
65
+ export function CustomThemeToggle() {
66
+ const { theme, setTheme } = useTheme()
67
+
68
+ return (
69
+ <button onClick={() => setTheme(theme === "dark" ? "light" : "dark")}>
70
+ Current: {theme}
71
+ </button>
72
+ )
73
+ }
74
+ ```
75
+
76
+ ### useMobile
77
+ Responsive design hook for mobile detection.
78
+
79
+ ```tsx
80
+ import { useMobile } from "@neynar/ui"
81
+
82
+ export function ResponsiveComponent() {
83
+ const isMobile = useMobile()
84
+
85
+ return (
86
+ <div className={isMobile ? "grid-cols-1" : "grid-cols-3"}>
87
+ Content adapts to screen size
88
+ </div>
89
+ )
90
+ }
91
+ ```
92
+
93
+ ## Utils
94
+
95
+ ### cn
96
+ Class name utility for conditional styling.
97
+
98
+ ```tsx
99
+ import { cn } from "@neynar/ui"
100
+
101
+ export function Button({ variant, className, ...props }) {
102
+ return (
103
+ <button
104
+ className={cn(
105
+ "px-4 py-2 rounded",
106
+ variant === "primary" && "bg-blue-500 text-white",
107
+ variant === "secondary" && "bg-gray-200",
108
+ className
109
+ )}
110
+ {...props}
111
+ />
112
+ )
113
+ }
114
+ ```
@@ -0,0 +1,165 @@
1
+ # @neynar/ui Composition Guide
2
+
3
+ Essential patterns for building interfaces with @neynar/ui components. Focus on practical composition techniques and TypeScript best practices.
4
+
5
+ ## Import Patterns
6
+
7
+ ```typescript
8
+ // ✅ Correct - named imports with alias
9
+ import { Button, Card, CardContent, CardHeader, CardTitle } from "@neynar/ui"
10
+ import { useIsMobile, cn } from "@neynar/ui"
11
+
12
+ // ❌ Avoid - relative imports or default exports
13
+ import { Button } from "./ui/button"
14
+ import Button from "@neynar/ui"
15
+ ```
16
+
17
+ ## Component Composition
18
+
19
+ ### Card-Based Layouts
20
+ Cards are the primary container component. Always use sub-components for structure:
21
+
22
+ ```typescript
23
+ import { Card, CardHeader, CardTitle, CardContent, CardFooter, Button } from "@neynar/ui"
24
+
25
+ function UserProfile() {
26
+ return (
27
+ <Card>
28
+ <CardHeader>
29
+ <CardTitle>User Settings</CardTitle>
30
+ </CardHeader>
31
+ <CardContent>
32
+ <p>Manage your account preferences</p>
33
+ </CardContent>
34
+ <CardFooter>
35
+ <Button>Save Changes</Button>
36
+ </CardFooter>
37
+ </Card>
38
+ )
39
+ }
40
+ ```
41
+
42
+ ### Form Patterns
43
+ Combine form components with consistent spacing:
44
+
45
+ ```typescript
46
+ import { Label, Input, Button, Card, CardContent } from "@neynar/ui"
47
+
48
+ function LoginForm() {
49
+ return (
50
+ <Card className="w-96">
51
+ <CardContent className="space-y-4 pt-6">
52
+ <div className="space-y-2">
53
+ <Label htmlFor="email">Email</Label>
54
+ <Input id="email" type="email" placeholder="Enter email" />
55
+ </div>
56
+ <div className="space-y-2">
57
+ <Label htmlFor="password">Password</Label>
58
+ <Input id="password" type="password" />
59
+ </div>
60
+ <Button className="w-full">Sign In</Button>
61
+ </CardContent>
62
+ </Card>
63
+ )
64
+ }
65
+ ```
66
+
67
+ ## Responsive Patterns
68
+
69
+ Use `useIsMobile` for adaptive layouts:
70
+
71
+ ```typescript
72
+ import { useIsMobile, Dialog, Sheet, Button } from "@neynar/ui"
73
+
74
+ function ResponsiveModal({ children }) {
75
+ const isMobile = useIsMobile()
76
+
77
+ const Wrapper = isMobile ? Sheet : Dialog
78
+
79
+ return (
80
+ <Wrapper>
81
+ <Button>Open Modal</Button>
82
+ {children}
83
+ </Wrapper>
84
+ )
85
+ }
86
+ ```
87
+
88
+ ## Data Display
89
+
90
+ Combine table components for structured data:
91
+
92
+ ```typescript
93
+ import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from "@neynar/ui"
94
+
95
+ function UserTable({ users }) {
96
+ return (
97
+ <Table>
98
+ <TableHeader>
99
+ <TableRow>
100
+ <TableHead>Name</TableHead>
101
+ <TableHead>Email</TableHead>
102
+ </TableRow>
103
+ </TableHeader>
104
+ <TableBody>
105
+ {users.map(user => (
106
+ <TableRow key={user.id}>
107
+ <TableCell>{user.name}</TableCell>
108
+ <TableCell>{user.email}</TableCell>
109
+ </TableRow>
110
+ ))}
111
+ </TableBody>
112
+ </Table>
113
+ )
114
+ }
115
+ ```
116
+
117
+ ## TypeScript Patterns
118
+
119
+ Always use function declarations and type definitions:
120
+
121
+ ```typescript
122
+ import { Button, type ButtonProps } from "@neynar/ui"
123
+
124
+ // ✅ Function declaration with types
125
+ function CustomButton({ variant = "default", ...props }: ButtonProps) {
126
+ return <Button variant={variant} {...props} />
127
+ }
128
+
129
+ // ❌ Avoid const/arrow functions for components
130
+ const CustomButton = ({ variant = "default", ...props }: ButtonProps) => {
131
+ return <Button variant={variant} {...props} />
132
+ }
133
+ ```
134
+
135
+ ## Utility Usage
136
+
137
+ Use `cn()` for conditional styling:
138
+
139
+ ```typescript
140
+ import { Button, cn } from "@neynar/ui"
141
+
142
+ function StatusButton({ isActive, children }) {
143
+ return (
144
+ <Button
145
+ className={cn(
146
+ "transition-colors",
147
+ isActive && "bg-green-500 hover:bg-green-600"
148
+ )}
149
+ >
150
+ {children}
151
+ </Button>
152
+ )
153
+ }
154
+ ```
155
+
156
+ ## Common Patterns Summary
157
+
158
+ 1. **Always use named imports** from `@neynar/ui`
159
+ 2. **Function declarations** for all components
160
+ 3. **Type definitions** instead of interfaces
161
+ 4. **Composition over configuration** - combine simple components
162
+ 5. **Use `useIsMobile`** for responsive behavior
163
+ 6. **Leverage `cn()`** for conditional classes
164
+ 7. **Structure with Cards** for most layouts
165
+ 8. **Consistent spacing** with Tailwind classes like `space-y-4`
package/llms.txt ADDED
@@ -0,0 +1,122 @@
1
+ # @neynar/ui Component Library
2
+
3
+ A production-ready React component library with 52 components, 2 hooks, and 1 utility. All components use modern TypeScript patterns with function declarations and named exports.
4
+
5
+ ## Quick Reference
6
+
7
+ ```typescript
8
+ import { Button, Card, useIsMobile, cn } from "@neynar/ui"
9
+ import "@neynar/ui/styles"
10
+ ```
11
+
12
+ ## Components (52)
13
+
14
+ ### Layout Components → [docs/llm/components/layout.md](docs/llm/components/layout.md)
15
+ - **Container** - Responsive container with max-width constraints
16
+ - **Stack** - Flexible vertical and horizontal layout primitive
17
+ - **Separator** - Visual content dividers
18
+ - **AspectRatio** - Responsive aspect ratio containers
19
+ - **ResizablePanelGroup**, **ResizablePanel**, **ResizableHandle** - Interactive resizable layouts
20
+ - **ScrollArea**, **ScrollBar** - Custom scrollable areas
21
+ - **Accordion**, **AccordionItem**, **AccordionTrigger**, **AccordionContent** - Collapsible sections
22
+ - **Collapsible**, **CollapsibleTrigger**, **CollapsibleContent** - Simple show/hide content
23
+
24
+ ### Navigation Components → [docs/llm/components/navigation.md](docs/llm/components/navigation.md)
25
+ - **NavigationMenu** + 8 sub-components - Complex navigation menus
26
+ - **Breadcrumb** + 6 sub-components - Hierarchical navigation
27
+ - **Pagination** + 6 sub-components - Data pagination
28
+ - **Menubar** + 14 sub-components - Desktop-style menu bars
29
+ - **Sidebar** + 20 sub-components - Application sidebars
30
+ - **Tabs**, **TabsList**, **TabsTrigger**, **TabsContent** - Tabbed interfaces
31
+
32
+ ### Form Components → [docs/llm/components/forms.md](docs/llm/components/forms.md)
33
+ - **Input** - Text input fields with validation states
34
+ - **Textarea** - Multi-line text input with auto-resize
35
+ - **TextField** - Complete form field with label and validation
36
+ - **Label** - Accessible form labels
37
+ - **Checkbox** - Boolean input with indeterminate state
38
+ - **RadioGroup**, **RadioGroupItem** - Single-choice selection
39
+ - **Switch** - Toggle switch for boolean settings
40
+ - **Slider** - Range input for numeric values
41
+ - **DatePicker** - Calendar-based date selection
42
+ - **Combobox** - Searchable dropdown with custom options
43
+ - **Select** + 9 sub-components - Dropdown selection
44
+
45
+ ### Button Components → [docs/llm/components/buttons.md](docs/llm/components/buttons.md)
46
+ - **Button** - Primary action component with variants and sizes
47
+ - **Toggle**, **ToggleGroup**, **ToggleGroupItem** - Multi-state buttons
48
+
49
+ ### Card Components → [docs/llm/components/cards.md](docs/llm/components/cards.md)
50
+ - **Card** + 5 sub-components - Content containers
51
+
52
+ ### Display Components → [docs/llm/components/display.md](docs/llm/components/display.md)
53
+ - **Badge** - Status and category indicators
54
+ - **Avatar** + 2 sub-components - User profile pictures
55
+ - **Progress** - Loading and completion indicators
56
+ - **Skeleton** - Loading state placeholders
57
+ - **Chart** + 5 sub-components - Data visualization
58
+ - **EmptyState** - No data placeholder with actions
59
+
60
+ ### Table Components → [docs/llm/components/tables.md](docs/llm/components/tables.md)
61
+ - **Table** + 7 sub-components - Data tables
62
+
63
+ ### Overlay Components → [docs/llm/components/overlays.md](docs/llm/components/overlays.md)
64
+ - **Dialog** + 7 sub-components - Modal dialogs
65
+ - **AlertDialog** + 8 sub-components - Confirmation dialogs
66
+ - **Sheet** + 6 sub-components - Side panel overlays
67
+ - **Drawer** + 6 sub-components - Mobile-first bottom sheets
68
+ - **Popover** + 3 sub-components - Contextual overlays
69
+ - **HoverCard** + 2 sub-components - Hover-triggered content
70
+ - **Tooltip** + 3 sub-components - Informational overlays
71
+
72
+ ### Menu Components → [docs/llm/components/menus.md](docs/llm/components/menus.md)
73
+ - **DropdownMenu** + 15 sub-components - Context menus
74
+ - **ContextMenu** + 15 sub-components - Right-click menus
75
+ - **Command** + 8 sub-components - Command palette interfaces
76
+ - **Calendar** + 1 sub-component - Full calendar interface
77
+ - **Carousel** + 4 sub-components - Content slideshows
78
+
79
+ ### Feedback Components → [docs/llm/components/feedback.md](docs/llm/components/feedback.md)
80
+ - **Alert** + 2 sub-components - Status messages and notifications
81
+ - **Toaster**, **toast** - Toast notification system (Sonner-based)
82
+ - **ThemeToggle** - Dark/light mode switcher
83
+
84
+ ### Typography Components → [docs/llm/components/typography.md](docs/llm/components/typography.md)
85
+ - Text styling and typography components
86
+
87
+ ## Utilities & Hooks → [docs/llm/components/utilities.md](docs/llm/components/utilities.md)
88
+ - **cn()** - Class name merging with Tailwind conflict resolution
89
+ - **useIsMobile()** - Responsive breakpoint detection (768px)
90
+ - **useTheme()** - Theme state management with system preference detection
91
+
92
+ ## TypeScript Standards
93
+
94
+ All components follow these patterns:
95
+ - Function declarations (not const/arrow functions)
96
+ - Named exports only
97
+ - Type definitions (not interfaces)
98
+ - Comprehensive prop types
99
+ - Full IntelliSense support
100
+
101
+ ```typescript
102
+ // ✅ Correct patterns
103
+ import { Button, type ButtonProps } from "@neynar/ui"
104
+
105
+ function MyButton(props: ButtonProps) {
106
+ return <Button {...props} />
107
+ }
108
+ ```
109
+
110
+ ## Additional Documentation
111
+
112
+ - **[docs/llm/guide.md](docs/llm/guide.md)** - Core composition patterns and usage examples
113
+ - **[docs/llm/colors.md](docs/llm/colors.md)** - Tailwind CSS color system and design tokens
114
+
115
+ ## Source Code Access
116
+ - **src/** - Complete TypeScript source with TSDoc comments, type definitions, and implementation details
117
+
118
+ ## Key Features
119
+ - Built on Radix UI primitives + Tailwind CSS v4
120
+ - WCAG-compliant accessibility
121
+ - Tree-shakeable and performant
122
+ - Zero runtime overhead
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "@neynar/ui",
3
+ "version": "0.1.1",
4
+ "license": "MIT",
5
+ "author": "Neynar Inc.",
6
+ "description": "React UI component library built on shadcn/ui and Tailwind CSS",
7
+ "keywords": [
8
+ "react",
9
+ "ui",
10
+ "components",
11
+ "tailwind",
12
+ "shadcn",
13
+ "neynar"
14
+ ],
15
+ "public": true,
16
+ "type": "module",
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
21
+ },
22
+ "./styles": "./src/styles/globals.css"
23
+ },
24
+ "files": [
25
+ "dist/**",
26
+ "src/**",
27
+ "LICENSE",
28
+ "README.md",
29
+ "llms.txt",
30
+ "docs/llm/**"
31
+ ],
32
+ "scripts": {
33
+ "build": "vite build && tsc --emitDeclarationOnly",
34
+ "dev": "vite build --watch",
35
+ "lint": "eslint src/",
36
+ "type-check": "tsc --noEmit",
37
+ "clean": "rm -rf dist",
38
+ "storybook": "storybook dev --no-open -p 6006",
39
+ "build-storybook": "storybook build"
40
+ },
41
+ "dependencies": {
42
+ "@radix-ui/react-accordion": "1.2.11",
43
+ "@radix-ui/react-aspect-ratio": "1.1.7",
44
+ "@radix-ui/react-avatar": "1.1.10",
45
+ "@radix-ui/react-checkbox": "1.3.2",
46
+ "@radix-ui/react-collapsible": "1.1.11",
47
+ "@radix-ui/react-context-menu": "2.2.15",
48
+ "@radix-ui/react-dialog": "1.1.14",
49
+ "@radix-ui/react-dropdown-menu": "2.1.15",
50
+ "@radix-ui/react-hover-card": "1.1.14",
51
+ "@radix-ui/react-label": "2.1.7",
52
+ "@radix-ui/react-menubar": "1.1.15",
53
+ "@radix-ui/react-navigation-menu": "1.2.13",
54
+ "@radix-ui/react-popover": "1.1.14",
55
+ "@radix-ui/react-progress": "1.1.7",
56
+ "@radix-ui/react-radio-group": "1.3.7",
57
+ "@radix-ui/react-select": "2.2.5",
58
+ "@radix-ui/react-separator": "1.1.7",
59
+ "@radix-ui/react-slider": "1.3.5",
60
+ "@radix-ui/react-slot": "1.2.3",
61
+ "@radix-ui/react-switch": "1.2.5",
62
+ "@radix-ui/react-tabs": "1.1.12",
63
+ "@radix-ui/react-toggle": "1.1.9",
64
+ "@radix-ui/react-toggle-group": "1.1.10",
65
+ "@radix-ui/react-tooltip": "1.2.7",
66
+ "class-variance-authority": "0.7.1",
67
+ "clsx": "2.1.1",
68
+ "cmdk": "1.1.1",
69
+ "date-fns": "4.1.0",
70
+ "embla-carousel-react": "8.6.0",
71
+ "lucide-react": "0.539.0",
72
+ "react-day-picker": "9.8.1",
73
+ "react-resizable-panels": "3.0.4",
74
+ "recharts": "2.15.4",
75
+ "sonner": "2.0.7",
76
+ "tailwind-merge": "3.3.1",
77
+ "tw-animate-css": "1.3.6",
78
+ "vaul": "1.1.2"
79
+ },
80
+ "devDependencies": {
81
+ "@neynar/eslint-plugin": "0.0.3",
82
+ "@neynar/tsconfig": "0.0.2",
83
+ "@storybook/addon-docs": "9.1.2",
84
+ "@storybook/addon-themes": "9.1.2",
85
+ "@storybook/react-vite": "9.1.2",
86
+ "@tailwindcss/vite": "4.1.11",
87
+ "@types/react": "19.1.10",
88
+ "@types/react-dom": "19.1.7",
89
+ "eslint": "9.33.0",
90
+ "eslint-plugin-storybook": "9.1.2",
91
+ "postcss": "8.5.6",
92
+ "prettier": "3.6.2",
93
+ "react": "19.1.1",
94
+ "react-dom": "19.1.1",
95
+ "storybook": "9.1.2",
96
+ "tailwindcss": "4.1.11",
97
+ "typescript": "5.9.2",
98
+ "vite": "7.1.2"
99
+ },
100
+ "peerDependencies": {
101
+ "react": "^19.1.1",
102
+ "react-dom": "^19.1.1"
103
+ }
104
+ }