@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,182 @@
1
+ import * as React from "react";
2
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
3
+ /**
4
+ * An interactive component which expands/collapses a panel
5
+ *
6
+ * A flexible container component built on Radix UI primitives that allows users to
7
+ * toggle the visibility of content sections. Unlike Accordion, Collapsible provides
8
+ * more flexibility without enforcing specific visual structures. Perfect for FAQ sections,
9
+ * expandable details, settings panels, and any content that should be initially hidden.
10
+ *
11
+ * @component
12
+ * @example
13
+ * ```tsx
14
+ * // Basic controlled collapsible
15
+ * const [isOpen, setIsOpen] = React.useState(false)
16
+ *
17
+ * <Collapsible open={isOpen} onOpenChange={setIsOpen}>
18
+ * <CollapsibleTrigger asChild>
19
+ * <Button variant="outline">
20
+ * Can I use this in my project?
21
+ * <ChevronDown className="h-4 w-4" />
22
+ * </Button>
23
+ * </CollapsibleTrigger>
24
+ * <CollapsibleContent>
25
+ * <div className="p-4 border rounded-md bg-muted/50">
26
+ * Yes. Free to use for personal and commercial projects.
27
+ * No attribution required.
28
+ * </div>
29
+ * </CollapsibleContent>
30
+ * </Collapsible>
31
+ * ```
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * // Uncontrolled collapsible with custom styling
36
+ * <Collapsible className="w-full space-y-2">
37
+ * <div className="flex items-center justify-between">
38
+ * <h4 className="text-sm font-semibold">@radix-ui/primitives</h4>
39
+ * <CollapsibleTrigger asChild>
40
+ * <Button variant="ghost" size="sm">
41
+ * <ChevronDown className="h-4 w-4" />
42
+ * <span className="sr-only">Toggle</span>
43
+ * </Button>
44
+ * </CollapsibleTrigger>
45
+ * </div>
46
+ * <CollapsibleContent className="space-y-2">
47
+ * <div className="rounded-md border px-4 py-2 text-sm shadow-sm">
48
+ * @radix-ui/react-collapsible
49
+ * </div>
50
+ * </CollapsibleContent>
51
+ * </Collapsible>
52
+ * ```
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * // FAQ-style implementation
57
+ * <Collapsible>
58
+ * <CollapsibleTrigger className="flex w-full items-center justify-between py-4 text-sm font-medium transition-all hover:underline">
59
+ * How do I get started?
60
+ * <ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200" />
61
+ * </CollapsibleTrigger>
62
+ * <CollapsibleContent className="overflow-hidden text-sm transition-all">
63
+ * <div className="pb-4 pt-0">
64
+ * Getting started is easy! Simply follow our quick setup guide...
65
+ * </div>
66
+ * </CollapsibleContent>
67
+ * </Collapsible>
68
+ * ```
69
+ *
70
+ * @accessibility
71
+ * - Full keyboard navigation support (Space/Enter to toggle)
72
+ * - ARIA expanded state automatically managed
73
+ * - Content properly hidden from screen readers when collapsed
74
+ * - Focus management and screen reader announcements
75
+ * - Built on WAI-ARIA design patterns for disclosure widgets
76
+ *
77
+ * @see {@link https://ui.shadcn.com/docs/components/collapsible} for design patterns
78
+ * @see {@link CollapsibleTrigger} - Interactive element to toggle visibility
79
+ * @see {@link CollapsibleContent} - Content container that can be hidden/shown
80
+ * @since 1.0.0
81
+ */
82
+ declare function Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>): import("react/jsx-runtime").JSX.Element;
83
+ /**
84
+ * Interactive trigger element that toggles collapsible content visibility
85
+ *
86
+ * The clickable element that controls the expanded/collapsed state of the associated
87
+ * CollapsibleContent. Supports the asChild prop for composition with custom elements
88
+ * like buttons or other interactive components.
89
+ *
90
+ * @component
91
+ * @example
92
+ * ```tsx
93
+ * // Simple text trigger
94
+ * <CollapsibleTrigger>
95
+ * Can I use this in my project?
96
+ * </CollapsibleTrigger>
97
+ * ```
98
+ *
99
+ * @example
100
+ * ```tsx
101
+ * // Composed with Button component
102
+ * <CollapsibleTrigger asChild>
103
+ * <Button variant="outline" className="w-full justify-between">
104
+ * Advanced Settings
105
+ * <ChevronDown className="h-4 w-4" />
106
+ * </Button>
107
+ * </CollapsibleTrigger>
108
+ * ```
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // Custom styled trigger
113
+ * <CollapsibleTrigger className="flex w-full items-center justify-between py-4 text-left text-sm font-medium transition-all hover:underline">
114
+ * How does it work?
115
+ * <ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200" />
116
+ * </CollapsibleTrigger>
117
+ * ```
118
+ *
119
+ * @accessibility
120
+ * - Keyboard activation with Space or Enter keys
121
+ * - aria-expanded attribute reflects current expanded state
122
+ * - aria-controls connects trigger to its content panel
123
+ * - Role of button for screen reader compatibility
124
+ * - Focus visible indicator for keyboard navigation
125
+ *
126
+ * @since 1.0.0
127
+ */
128
+ declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): import("react/jsx-runtime").JSX.Element;
129
+ /**
130
+ * Content container that can be expanded or collapsed
131
+ *
132
+ * The panel containing content that is shown or hidden based on the collapsible state.
133
+ * Automatically handles smooth animations, height transitions, and accessibility attributes
134
+ * when toggling between expanded and collapsed states.
135
+ *
136
+ * @component
137
+ * @example
138
+ * ```tsx
139
+ * // Basic content panel
140
+ * <CollapsibleContent>
141
+ * <div className="rounded-md border px-4 py-2 text-sm">
142
+ * Yes. Free to use for personal and commercial projects.
143
+ * No attribution required.
144
+ * </div>
145
+ * </CollapsibleContent>
146
+ * ```
147
+ *
148
+ * @example
149
+ * ```tsx
150
+ * // Content with custom styling and multiple elements
151
+ * <CollapsibleContent className="space-y-2">
152
+ * <div className="rounded-md border px-4 py-3 font-mono text-sm">
153
+ * @radix-ui/react-collapsible
154
+ * </div>
155
+ * <div className="rounded-md border px-4 py-3 font-mono text-sm">
156
+ * @radix-ui/react-dialog
157
+ * </div>
158
+ * </CollapsibleContent>
159
+ * ```
160
+ *
161
+ * @example
162
+ * ```tsx
163
+ * // Content with overflow handling
164
+ * <CollapsibleContent className="overflow-hidden text-sm transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
165
+ * <div className="pb-4 pt-0">
166
+ * Content with custom animations and overflow handling.
167
+ * </div>
168
+ * </CollapsibleContent>
169
+ * ```
170
+ *
171
+ * @accessibility
172
+ * - Automatically hidden from accessibility tree when collapsed
173
+ * - Smooth height animations with data-state attributes
174
+ * - Properly associated with trigger via aria-controls
175
+ * - Supports custom animation classes and transitions
176
+ * - Content is announced by screen readers when expanded
177
+ *
178
+ * @since 1.0.0
179
+ */
180
+ declare function CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>): import("react/jsx-runtime").JSX.Element;
181
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent };
182
+ //# sourceMappingURL=collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,2CAExD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,2CAOtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,2CAOtE;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Option structure for combobox items
3
+ *
4
+ * Defines the shape of each option that can be displayed and selected
5
+ * in the combobox dropdown list.
6
+ *
7
+ * @since 1.0.0
8
+ */
9
+ export type ComboboxOption = {
10
+ /**
11
+ * Unique identifier for this option
12
+ *
13
+ * Used for selection tracking and should be unique within the options array.
14
+ */
15
+ value: string;
16
+ /**
17
+ * Display text shown to users in the dropdown
18
+ *
19
+ * Should be descriptive and help users understand what this option represents.
20
+ */
21
+ label: string;
22
+ /**
23
+ * Whether this option is disabled and cannot be selected
24
+ *
25
+ * Disabled options remain visible but are not selectable and appear dimmed.
26
+ *
27
+ * @default false
28
+ */
29
+ disabled?: boolean;
30
+ };
31
+ /**
32
+ * Properties for the Combobox component
33
+ *
34
+ * Comprehensive configuration options for customizing combobox behavior,
35
+ * appearance, and interaction patterns.
36
+ *
37
+ * @since 1.0.0
38
+ */
39
+ export type ComboboxProps = {
40
+ /**
41
+ * Array of options to display in the combobox dropdown
42
+ *
43
+ * Each option should have a unique value and descriptive label.
44
+ * Options can be disabled to prevent selection while remaining visible.
45
+ */
46
+ options: ComboboxOption[];
47
+ /**
48
+ * Currently selected value from the options array
49
+ *
50
+ * Should match the value property of one of the provided options.
51
+ * Use with onValueChange for controlled component behavior.
52
+ */
53
+ value?: string;
54
+ /**
55
+ * Callback fired when the selected value changes
56
+ *
57
+ * Receives the new selected value as a string. If the same option
58
+ * is clicked again, an empty string is passed to allow deselection.
59
+ *
60
+ * @param value - The newly selected option value or empty string for deselection
61
+ */
62
+ onValueChange?: (value: string) => void;
63
+ /**
64
+ * Placeholder text displayed when no option is selected
65
+ *
66
+ * Should be descriptive and help users understand what they're selecting.
67
+ *
68
+ * @default "Select option..."
69
+ */
70
+ placeholder?: string;
71
+ /**
72
+ * Text displayed when search query returns no matching options
73
+ *
74
+ * Customize this message to match your application's tone and context.
75
+ *
76
+ * @default "No option found."
77
+ */
78
+ emptyText?: string;
79
+ /**
80
+ * Placeholder text for the search input field
81
+ *
82
+ * Should guide users on how to search effectively within your option set.
83
+ *
84
+ * @default "Search options..."
85
+ */
86
+ searchPlaceholder?: string;
87
+ /**
88
+ * Additional CSS classes for the root container element
89
+ *
90
+ * Use for custom spacing, positioning, or layout adjustments.
91
+ */
92
+ className?: string;
93
+ /**
94
+ * Whether the entire combobox is disabled
95
+ *
96
+ * When disabled, the trigger button cannot be clicked and the
97
+ * dropdown cannot be opened. Use individual option.disabled for
98
+ * granular control.
99
+ *
100
+ * @default false
101
+ */
102
+ disabled?: boolean;
103
+ /**
104
+ * Additional CSS classes for the trigger button
105
+ *
106
+ * Commonly used to control width (e.g., "w-[300px]"), styling variants,
107
+ * or responsive behavior. For best UX, consider matching popoverClassName width.
108
+ *
109
+ * @example "w-full sm:w-[280px] border-primary/50"
110
+ */
111
+ buttonClassName?: string;
112
+ /**
113
+ * Additional CSS classes for the popover dropdown content
114
+ *
115
+ * Should typically match buttonClassName width for consistent alignment.
116
+ * Use to control positioning, width, and styling of the dropdown.
117
+ *
118
+ * @example "w-full sm:w-[280px] border-primary/50"
119
+ */
120
+ popoverClassName?: string;
121
+ };
122
+ /**
123
+ * Searchable dropdown selection component with typeahead functionality
124
+ *
125
+ * A versatile combobox that combines a button trigger with a searchable dropdown list.
126
+ * Ideal for selecting from moderate to large lists of options where search functionality
127
+ * improves user experience. Built on top of shadcn/ui Command and Popover primitives.
128
+ *
129
+ * Use this component when:
130
+ * - You have 10+ options that would benefit from filtering
131
+ * - Users need to quickly find specific options
132
+ * - You want to provide a better UX than a basic select dropdown
133
+ * - You need real-time search/filtering capabilities
134
+ *
135
+ * For fewer options or simpler selection, consider using the Select component instead.
136
+ *
137
+ * @component
138
+ * @example
139
+ * Basic controlled combobox with framework selection
140
+ * ```tsx
141
+ * const [framework, setFramework] = useState("")
142
+ *
143
+ * const frameworks = [
144
+ * { value: "next", label: "Next.js" },
145
+ * { value: "remix", label: "Remix" },
146
+ * { value: "svelte", label: "SvelteKit" },
147
+ * { value: "nuxt", label: "Nuxt.js" },
148
+ * ]
149
+ *
150
+ * <Combobox
151
+ * options={frameworks}
152
+ * value={framework}
153
+ * onValueChange={setFramework}
154
+ * placeholder="Select framework..."
155
+ * searchPlaceholder="Search frameworks..."
156
+ * buttonClassName="w-[300px]"
157
+ * />
158
+ * ```
159
+ *
160
+ * @example
161
+ * Combobox with disabled options and custom styling
162
+ * ```tsx
163
+ * const statusOptions = [
164
+ * { value: "active", label: "Active" },
165
+ * { value: "pending", label: "Pending" },
166
+ * { value: "archived", label: "Archived (Read Only)", disabled: true },
167
+ * { value: "deleted", label: "Deleted (Unavailable)", disabled: true },
168
+ * ]
169
+ *
170
+ * <Combobox
171
+ * options={statusOptions}
172
+ * value={status}
173
+ * onValueChange={setStatus}
174
+ * placeholder="Select status..."
175
+ * emptyText="No status found."
176
+ * buttonClassName="w-[250px] border-primary/50"
177
+ * popoverClassName="w-[250px]"
178
+ * />
179
+ * ```
180
+ *
181
+ * @example
182
+ * Form integration with validation and error states
183
+ * ```tsx
184
+ * import { Label } from "@/components/ui/label"
185
+ *
186
+ * <form onSubmit={handleSubmit}>
187
+ * <div className="space-y-2">
188
+ * <Label htmlFor="country">Country</Label>
189
+ * <Combobox
190
+ * options={countries}
191
+ * value={formData.country}
192
+ * onValueChange={(value) =>
193
+ * setFormData(prev => ({ ...prev, country: value }))
194
+ * }
195
+ * placeholder="Choose a country..."
196
+ * searchPlaceholder="Type to search countries..."
197
+ * emptyText="Country not found."
198
+ * buttonClassName="w-full"
199
+ * disabled={isSubmitting}
200
+ * />
201
+ * {errors.country && (
202
+ * <p className="text-sm text-destructive">{errors.country}</p>
203
+ * )}
204
+ * </div>
205
+ * </form>
206
+ * ```
207
+ *
208
+ * @example
209
+ * Responsive width with mobile optimization
210
+ * ```tsx
211
+ * <Combobox
212
+ * options={userOptions}
213
+ * value={selectedUser}
214
+ * onValueChange={setSelectedUser}
215
+ * placeholder="Select team member..."
216
+ * searchPlaceholder="Search users..."
217
+ * buttonClassName="w-full sm:w-[280px]"
218
+ * popoverClassName="w-full sm:w-[280px]"
219
+ * />
220
+ * ```
221
+ *
222
+ * @accessibility
223
+ *
224
+ * **ARIA Implementation:**
225
+ * - Uses `role="combobox"` on trigger button with proper `aria-expanded` state
226
+ * - Implements `aria-controls` to reference the popup when visible
227
+ * - Uses `aria-activedescendant` for focus management within the dropdown
228
+ * - Provides `aria-haspopup="listbox"` to indicate popup type
229
+ *
230
+ * **Keyboard Navigation (W3C ARIA 1.2 compliant):**
231
+ * - **Tab**: Moves focus to/from combobox in page tab order
232
+ * - **Down Arrow**: Opens dropdown and moves to first option, or navigates to next option
233
+ * - **Up Arrow**: Moves to previous option (when dropdown is open)
234
+ * - **Enter**: Selects the focused option and closes dropdown
235
+ * - **Escape**: Closes dropdown and returns focus to trigger
236
+ * - **Home/End**: Moves to first/last option in list
237
+ * - **Type-ahead**: Real-time filtering as user types in search input
238
+ *
239
+ * **Screen Reader Support:**
240
+ * - Announces current selection state and option count
241
+ * - Provides clear labels for empty states and loading states
242
+ * - Announces selection changes and dropdown open/close states
243
+ * - Disabled options are properly announced and skipped during navigation
244
+ *
245
+ * **Focus Management:**
246
+ * - DOM focus remains on combobox trigger for screen reader compatibility
247
+ * - Visual focus moves through options using `aria-activedescendant`
248
+ * - Search input automatically receives focus when dropdown opens
249
+ * - Focus returns to trigger when dropdown closes via Escape or selection
250
+ *
251
+ * **Visual Accessibility:**
252
+ * - Maintains sufficient color contrast for all states
253
+ * - Provides hover and focus indicators for all interactive elements
254
+ * - Disabled options are visually distinct and non-interactive
255
+ * - Clear visual feedback for selected state with check icon
256
+ *
257
+ * @performance
258
+ * - Efficient option lookup with single find() operation
259
+ * - Minimal re-renders through proper state management
260
+ * - Supports large option lists with built-in virtualization via cmdk
261
+ *
262
+ * @see {@link https://ui.shadcn.com/docs/components/combobox} shadcn/ui Combobox documentation
263
+ * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/combobox/} W3C ARIA Combobox Pattern
264
+ * @see {@link Select} For simpler dropdowns without search functionality
265
+ * @see {@link Command} The underlying command menu component
266
+ * @see {@link Popover} The popover container component
267
+ * @since 1.0.0
268
+ */
269
+ export declare function Combobox({ options, value, onValueChange, placeholder, emptyText, searchPlaceholder, className, disabled, buttonClassName, popoverClassName, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
270
+ //# sourceMappingURL=combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/combobox.tsx"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkJG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,aAAa,EACb,WAAgC,EAChC,SAA8B,EAC9B,iBAAuC,EACvC,SAAS,EACT,QAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,EAAE,aAAa,2CA2Df"}