@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,400 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import { RadioGroup, RadioGroupItem } from "../radio-group";
4
+ import { Label } from "../label";
5
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../card";
6
+
7
+ const meta = {
8
+ title: "Form & Input/RadioGroup",
9
+ component: RadioGroup,
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ description: {
14
+ component:
15
+ "A radio group component for single selection from multiple options. Built on Radix UI primitives with accessible keyboard navigation and screen reader support.",
16
+ },
17
+ },
18
+ },
19
+ tags: ["autodocs"],
20
+ argTypes: {
21
+ defaultValue: {
22
+ control: { type: "text" },
23
+ description: "The default selected value when uncontrolled",
24
+ },
25
+ value: {
26
+ control: { type: "text" },
27
+ description: "The controlled value of the selected radio option",
28
+ },
29
+ onValueChange: {
30
+ action: "valueChanged",
31
+ description: "Callback fired when the selection changes",
32
+ },
33
+ disabled: {
34
+ control: { type: "boolean" },
35
+ description: "Whether the entire radio group is disabled",
36
+ },
37
+ required: {
38
+ control: { type: "boolean" },
39
+ description: "Whether the radio group is required for form validation",
40
+ },
41
+ orientation: {
42
+ control: { type: "radio" },
43
+ options: ["horizontal", "vertical"],
44
+ description: "The orientation of the radio group layout",
45
+ },
46
+ className: {
47
+ control: { type: "text" },
48
+ description: "Additional CSS classes to apply",
49
+ },
50
+ },
51
+ } satisfies Meta<typeof RadioGroup>;
52
+
53
+ export default meta;
54
+ type Story = StoryObj<typeof meta>;
55
+
56
+ /**
57
+ * Interactive playground with all available props and options.
58
+ * Use the controls panel to test different configurations.
59
+ */
60
+ export const Interactive: Story = {
61
+ args: {
62
+ defaultValue: "option-two",
63
+ disabled: false,
64
+ required: false,
65
+ },
66
+ render: (args) => (
67
+ <RadioGroup {...args}>
68
+ <div className="flex items-center space-x-2">
69
+ <RadioGroupItem value="option-one" id="option-one" />
70
+ <Label htmlFor="option-one">Option One</Label>
71
+ </div>
72
+ <div className="flex items-center space-x-2">
73
+ <RadioGroupItem value="option-two" id="option-two" />
74
+ <Label htmlFor="option-two">Option Two</Label>
75
+ </div>
76
+ <div className="flex items-center space-x-2">
77
+ <RadioGroupItem value="option-three" id="option-three" />
78
+ <Label htmlFor="option-three">Option Three</Label>
79
+ </div>
80
+ <div className="flex items-center space-x-2">
81
+ <RadioGroupItem value="option-four" id="option-four" disabled />
82
+ <Label htmlFor="option-four" className="opacity-50">
83
+ Disabled Option
84
+ </Label>
85
+ </div>
86
+ </RadioGroup>
87
+ ),
88
+ };
89
+
90
+ /**
91
+ * Comprehensive showcase of all radio group variants and states.
92
+ * Demonstrates different layouts, styling options, and use cases.
93
+ */
94
+ export const Variants: Story = {
95
+ render: () => (
96
+ <div className="grid gap-8 w-full max-w-4xl">
97
+ {/* Basic Vertical Layout */}
98
+ <div>
99
+ <h3 className="mb-3 text-lg font-semibold">Vertical Layout (Default)</h3>
100
+ <RadioGroup defaultValue="comfortable">
101
+ <div className="flex items-center space-x-2">
102
+ <RadioGroupItem value="default" id="v1" />
103
+ <Label htmlFor="v1">Default</Label>
104
+ </div>
105
+ <div className="flex items-center space-x-2">
106
+ <RadioGroupItem value="comfortable" id="v2" />
107
+ <Label htmlFor="v2">Comfortable</Label>
108
+ </div>
109
+ <div className="flex items-center space-x-2">
110
+ <RadioGroupItem value="compact" id="v3" />
111
+ <Label htmlFor="v3">Compact</Label>
112
+ </div>
113
+ </RadioGroup>
114
+ </div>
115
+
116
+ {/* Horizontal Layout */}
117
+ <div>
118
+ <h3 className="mb-3 text-lg font-semibold">Horizontal Layout</h3>
119
+ <RadioGroup defaultValue="medium" className="flex gap-4">
120
+ <div className="flex items-center space-x-2">
121
+ <RadioGroupItem value="small" id="h1" />
122
+ <Label htmlFor="h1">Small</Label>
123
+ </div>
124
+ <div className="flex items-center space-x-2">
125
+ <RadioGroupItem value="medium" id="h2" />
126
+ <Label htmlFor="h2">Medium</Label>
127
+ </div>
128
+ <div className="flex items-center space-x-2">
129
+ <RadioGroupItem value="large" id="h3" />
130
+ <Label htmlFor="h3">Large</Label>
131
+ </div>
132
+ </RadioGroup>
133
+ </div>
134
+
135
+ {/* With Descriptions */}
136
+ <div>
137
+ <h3 className="mb-3 text-lg font-semibold">With Descriptions</h3>
138
+ <RadioGroup defaultValue="card">
139
+ <div className="flex items-start space-x-2">
140
+ <RadioGroupItem value="card" id="desc1" className="mt-1" />
141
+ <div className="grid gap-1">
142
+ <Label htmlFor="desc1">Credit Card</Label>
143
+ <p className="text-sm text-muted-foreground">
144
+ Pay with your credit or debit card
145
+ </p>
146
+ </div>
147
+ </div>
148
+ <div className="flex items-start space-x-2">
149
+ <RadioGroupItem value="paypal" id="desc2" className="mt-1" />
150
+ <div className="grid gap-1">
151
+ <Label htmlFor="desc2">PayPal</Label>
152
+ <p className="text-sm text-muted-foreground">
153
+ Pay with your PayPal account
154
+ </p>
155
+ </div>
156
+ </div>
157
+ <div className="flex items-start space-x-2">
158
+ <RadioGroupItem value="bank" id="desc3" className="mt-1" />
159
+ <div className="grid gap-1">
160
+ <Label htmlFor="desc3">Bank Transfer</Label>
161
+ <p className="text-sm text-muted-foreground">
162
+ Direct transfer from your bank account
163
+ </p>
164
+ </div>
165
+ </div>
166
+ </RadioGroup>
167
+ </div>
168
+
169
+ {/* Disabled States */}
170
+ <div>
171
+ <h3 className="mb-3 text-lg font-semibold">Disabled States</h3>
172
+ <div className="grid gap-4">
173
+ <div>
174
+ <h4 className="mb-2 text-sm font-medium text-muted-foreground">
175
+ Entire Group Disabled
176
+ </h4>
177
+ <RadioGroup defaultValue="option-two" disabled>
178
+ <div className="flex items-center space-x-2">
179
+ <RadioGroupItem value="option-one" id="d1" />
180
+ <Label htmlFor="d1">Option One</Label>
181
+ </div>
182
+ <div className="flex items-center space-x-2">
183
+ <RadioGroupItem value="option-two" id="d2" />
184
+ <Label htmlFor="d2">Option Two (Selected)</Label>
185
+ </div>
186
+ </RadioGroup>
187
+ </div>
188
+ <div>
189
+ <h4 className="mb-2 text-sm font-medium text-muted-foreground">
190
+ Individual Item Disabled
191
+ </h4>
192
+ <RadioGroup defaultValue="active">
193
+ <div className="flex items-center space-x-2">
194
+ <RadioGroupItem value="active" id="d3" />
195
+ <Label htmlFor="d3">Active</Label>
196
+ </div>
197
+ <div className="flex items-center space-x-2">
198
+ <RadioGroupItem value="paused" id="d4" disabled />
199
+ <Label htmlFor="d4" className="opacity-50">
200
+ Paused (Unavailable)
201
+ </Label>
202
+ </div>
203
+ <div className="flex items-center space-x-2">
204
+ <RadioGroupItem value="inactive" id="d5" />
205
+ <Label htmlFor="d5">Inactive</Label>
206
+ </div>
207
+ </RadioGroup>
208
+ </div>
209
+ </div>
210
+ </div>
211
+
212
+ {/* Custom Styling */}
213
+ <div>
214
+ <h3 className="mb-3 text-lg font-semibold">Custom Colors</h3>
215
+ <RadioGroup defaultValue="purple">
216
+ <div className="flex items-center space-x-2">
217
+ <RadioGroupItem
218
+ value="purple"
219
+ id="c1"
220
+ className="border-purple-500 text-purple-500"
221
+ />
222
+ <Label htmlFor="c1">Purple Theme</Label>
223
+ </div>
224
+ <div className="flex items-center space-x-2">
225
+ <RadioGroupItem
226
+ value="green"
227
+ id="c2"
228
+ className="border-green-500 text-green-500"
229
+ />
230
+ <Label htmlFor="c2">Green Theme</Label>
231
+ </div>
232
+ <div className="flex items-center space-x-2">
233
+ <RadioGroupItem
234
+ value="orange"
235
+ id="c3"
236
+ className="border-orange-500 text-orange-500"
237
+ />
238
+ <Label htmlFor="c3">Orange Theme</Label>
239
+ </div>
240
+ </RadioGroup>
241
+ </div>
242
+ </div>
243
+ ),
244
+ };
245
+
246
+ /**
247
+ * Real-world usage example showing radio groups in a practical context.
248
+ * Demonstrates how the component integrates within forms and user interfaces.
249
+ */
250
+ export const InContext: Story = {
251
+ render: function PreferencesForm() {
252
+ const [preferences, setPreferences] = React.useState({
253
+ theme: "light",
254
+ notifications: "email",
255
+ plan: "pro",
256
+ });
257
+
258
+ const handleSubmit = (e: React.FormEvent) => {
259
+ e.preventDefault();
260
+ alert(`Preferences saved: ${JSON.stringify(preferences, null, 2)}`);
261
+ };
262
+
263
+ return (
264
+ <Card className="w-[500px]">
265
+ <CardHeader>
266
+ <CardTitle>User Preferences</CardTitle>
267
+ <CardDescription>
268
+ Configure your account settings and preferences
269
+ </CardDescription>
270
+ </CardHeader>
271
+ <CardContent>
272
+ <form onSubmit={handleSubmit} className="space-y-6">
273
+ {/* Theme Selection */}
274
+ <div className="space-y-3">
275
+ <Label className="text-sm font-medium">Theme</Label>
276
+ <RadioGroup
277
+ value={preferences.theme}
278
+ onValueChange={(value) =>
279
+ setPreferences((prev) => ({ ...prev, theme: value }))
280
+ }
281
+ >
282
+ <div className="flex items-center space-x-2">
283
+ <RadioGroupItem value="light" id="theme-light" />
284
+ <Label htmlFor="theme-light">Light Mode</Label>
285
+ </div>
286
+ <div className="flex items-center space-x-2">
287
+ <RadioGroupItem value="dark" id="theme-dark" />
288
+ <Label htmlFor="theme-dark">Dark Mode</Label>
289
+ </div>
290
+ <div className="flex items-center space-x-2">
291
+ <RadioGroupItem value="system" id="theme-system" />
292
+ <Label htmlFor="theme-system">System Default</Label>
293
+ </div>
294
+ </RadioGroup>
295
+ </div>
296
+
297
+ {/* Notification Preferences */}
298
+ <div className="space-y-3">
299
+ <Label className="text-sm font-medium">Notifications</Label>
300
+ <RadioGroup
301
+ value={preferences.notifications}
302
+ onValueChange={(value) =>
303
+ setPreferences((prev) => ({ ...prev, notifications: value }))
304
+ }
305
+ >
306
+ <div className="flex items-start space-x-2">
307
+ <RadioGroupItem value="email" id="notif-email" className="mt-1" />
308
+ <div className="grid gap-1">
309
+ <Label htmlFor="notif-email">Email Notifications</Label>
310
+ <p className="text-sm text-muted-foreground">
311
+ Receive updates via email
312
+ </p>
313
+ </div>
314
+ </div>
315
+ <div className="flex items-start space-x-2">
316
+ <RadioGroupItem value="push" id="notif-push" className="mt-1" />
317
+ <div className="grid gap-1">
318
+ <Label htmlFor="notif-push">Push Notifications</Label>
319
+ <p className="text-sm text-muted-foreground">
320
+ Receive browser push notifications
321
+ </p>
322
+ </div>
323
+ </div>
324
+ <div className="flex items-start space-x-2">
325
+ <RadioGroupItem value="none" id="notif-none" className="mt-1" />
326
+ <div className="grid gap-1">
327
+ <Label htmlFor="notif-none">No Notifications</Label>
328
+ <p className="text-sm text-muted-foreground">
329
+ Disable all notifications
330
+ </p>
331
+ </div>
332
+ </div>
333
+ </RadioGroup>
334
+ </div>
335
+
336
+ {/* Plan Selection */}
337
+ <div className="space-y-3">
338
+ <Label className="text-sm font-medium">Subscription Plan</Label>
339
+ <RadioGroup
340
+ value={preferences.plan}
341
+ onValueChange={(value) =>
342
+ setPreferences((prev) => ({ ...prev, plan: value }))
343
+ }
344
+ >
345
+ <div className="flex items-start space-x-2">
346
+ <RadioGroupItem value="free" id="plan-free" className="mt-1" />
347
+ <div className="grid gap-1">
348
+ <Label htmlFor="plan-free" className="flex items-center gap-2">
349
+ Free Plan
350
+ <span className="text-xs text-muted-foreground">$0/month</span>
351
+ </Label>
352
+ <p className="text-sm text-muted-foreground">
353
+ Basic features for personal use
354
+ </p>
355
+ </div>
356
+ </div>
357
+ <div className="flex items-start space-x-2">
358
+ <RadioGroupItem value="pro" id="plan-pro" className="mt-1" />
359
+ <div className="grid gap-1">
360
+ <Label htmlFor="plan-pro" className="flex items-center gap-2">
361
+ Pro Plan
362
+ <span className="text-xs text-muted-foreground">$19/month</span>
363
+ </Label>
364
+ <p className="text-sm text-muted-foreground">
365
+ Advanced features for professionals
366
+ </p>
367
+ </div>
368
+ </div>
369
+ <div className="flex items-start space-x-2">
370
+ <RadioGroupItem value="enterprise" id="plan-enterprise" className="mt-1" />
371
+ <div className="grid gap-1">
372
+ <Label htmlFor="plan-enterprise" className="flex items-center gap-2">
373
+ Enterprise Plan
374
+ <span className="text-xs text-muted-foreground">Custom pricing</span>
375
+ </Label>
376
+ <p className="text-sm text-muted-foreground">
377
+ Custom solutions for large organizations
378
+ </p>
379
+ </div>
380
+ </div>
381
+ </RadioGroup>
382
+ </div>
383
+
384
+ <div className="flex justify-between items-center pt-4 border-t">
385
+ <p className="text-sm text-muted-foreground">
386
+ Changes are saved automatically
387
+ </p>
388
+ <button
389
+ type="submit"
390
+ className="px-4 py-2 bg-primary text-primary-foreground rounded-md text-sm font-medium hover:bg-primary/90 transition-colors"
391
+ >
392
+ Save Preferences
393
+ </button>
394
+ </div>
395
+ </form>
396
+ </CardContent>
397
+ </Card>
398
+ );
399
+ },
400
+ };