@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,429 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { User, CreditCard, Bell, Shield, Lock } from "lucide-react";
3
+ import {
4
+ Accordion,
5
+ AccordionItem,
6
+ AccordionTrigger,
7
+ AccordionContent,
8
+ } from "../accordion";
9
+
10
+ const meta = {
11
+ title: "Layout and Structure/Accordion",
12
+ component: Accordion,
13
+ parameters: {
14
+ layout: "centered",
15
+ docs: {
16
+ description: {
17
+ component:
18
+ "A vertically stacked set of interactive headings that each reveal a section of content. Built on Radix UI primitives with smooth animations and full accessibility support. Supports both single and multiple expansion modes for flexible content organization.",
19
+ },
20
+ },
21
+ },
22
+ tags: ["autodocs"],
23
+ argTypes: {
24
+ type: {
25
+ control: { type: "radio" },
26
+ options: ["single", "multiple"],
27
+ description:
28
+ "Controls whether one or multiple items can be open simultaneously",
29
+ },
30
+ collapsible: {
31
+ control: { type: "boolean" },
32
+ description: "When type='single', allows closing the open item",
33
+ if: { arg: "type", eq: "single" },
34
+ },
35
+ defaultValue: {
36
+ control: { type: "text" },
37
+ description: "Initial value for open items",
38
+ },
39
+ disabled: {
40
+ control: { type: "boolean" },
41
+ description: "Disables all accordion interactions",
42
+ },
43
+ orientation: {
44
+ control: { type: "radio" },
45
+ options: ["horizontal", "vertical"],
46
+ description: "Layout orientation",
47
+ },
48
+ },
49
+ } satisfies Meta<typeof Accordion>;
50
+
51
+ export default meta;
52
+ type Story = StoryObj<typeof meta>;
53
+
54
+ /**
55
+ * Interactive playground for testing all accordion props and variants.
56
+ * Use the controls panel to experiment with different configurations.
57
+ */
58
+ export const Interactive: Story = {
59
+ args: {
60
+ type: "single",
61
+ collapsible: true,
62
+ className: "w-96",
63
+ },
64
+ render: (args) => (
65
+ <Accordion {...args}>
66
+ <AccordionItem value="item-1">
67
+ <AccordionTrigger>What is your return policy?</AccordionTrigger>
68
+ <AccordionContent>
69
+ We offer a 30-day return policy for all items. Items must be in their
70
+ original condition with tags attached. Returns are free for defective
71
+ items, and a small fee applies for other returns.
72
+ </AccordionContent>
73
+ </AccordionItem>
74
+ <AccordionItem value="item-2">
75
+ <AccordionTrigger>How long does shipping take?</AccordionTrigger>
76
+ <AccordionContent>
77
+ Standard shipping typically takes 3-5 business days. Express shipping
78
+ is available for 1-2 business days. Free shipping is available on
79
+ orders over $50.
80
+ </AccordionContent>
81
+ </AccordionItem>
82
+ <AccordionItem value="item-3">
83
+ <AccordionTrigger>Do you ship internationally?</AccordionTrigger>
84
+ <AccordionContent>
85
+ Yes, we ship to over 100 countries worldwide. International shipping
86
+ times vary by location, typically 7-14 business days. Customs duties
87
+ may apply depending on your country.
88
+ </AccordionContent>
89
+ </AccordionItem>
90
+ </Accordion>
91
+ ),
92
+ };
93
+
94
+ /**
95
+ * Comprehensive showcase of all accordion variants and configurations.
96
+ * Demonstrates different types, content styles, and use cases.
97
+ */
98
+ export const Variants: Story = {
99
+ args: {
100
+ type: "single",
101
+ collapsible: true,
102
+ className: "w-96",
103
+ },
104
+ parameters: {
105
+ docs: {
106
+ description: {
107
+ story:
108
+ "Shows different accordion configurations: single vs multiple, with icons, default open states, and various content types.",
109
+ },
110
+ },
111
+ },
112
+ render: () => (
113
+ <div className="space-y-8 w-full max-w-2xl">
114
+ {/* Single Accordion */}
115
+ <div>
116
+ <h3 className="text-lg font-semibold mb-4">
117
+ Single Accordion (Collapsible)
118
+ </h3>
119
+ <Accordion type="single" collapsible className="w-full">
120
+ <AccordionItem value="basic-1">
121
+ <AccordionTrigger>Basic Single Item</AccordionTrigger>
122
+ <AccordionContent>
123
+ Only one item can be open at a time. Click another to close this
124
+ one.
125
+ </AccordionContent>
126
+ </AccordionItem>
127
+ <AccordionItem value="basic-2">
128
+ <AccordionTrigger>Another Single Item</AccordionTrigger>
129
+ <AccordionContent>
130
+ This will close the previous item when opened.
131
+ </AccordionContent>
132
+ </AccordionItem>
133
+ </Accordion>
134
+ </div>
135
+
136
+ {/* Multiple Accordion */}
137
+ <div>
138
+ <h3 className="text-lg font-semibold mb-4">Multiple Accordion</h3>
139
+ <Accordion type="multiple" className="w-full">
140
+ <AccordionItem value="multi-1">
141
+ <AccordionTrigger>Multiple Item 1</AccordionTrigger>
142
+ <AccordionContent>
143
+ Multiple items can be open simultaneously.
144
+ </AccordionContent>
145
+ </AccordionItem>
146
+ <AccordionItem value="multi-2">
147
+ <AccordionTrigger>Multiple Item 2</AccordionTrigger>
148
+ <AccordionContent>
149
+ This can be open at the same time as other items.
150
+ </AccordionContent>
151
+ </AccordionItem>
152
+ </Accordion>
153
+ </div>
154
+
155
+ {/* With Icons */}
156
+ <div>
157
+ <h3 className="text-lg font-semibold mb-4">With Icons</h3>
158
+ <Accordion type="single" collapsible className="w-full">
159
+ <AccordionItem value="icon-1">
160
+ <AccordionTrigger className="flex items-center gap-3">
161
+ <User className="size-4" />
162
+ Profile Settings
163
+ </AccordionTrigger>
164
+ <AccordionContent>
165
+ Update your personal information and preferences.
166
+ </AccordionContent>
167
+ </AccordionItem>
168
+ <AccordionItem value="icon-2">
169
+ <AccordionTrigger className="flex items-center gap-3">
170
+ <Lock className="size-4" />
171
+ Security
172
+ </AccordionTrigger>
173
+ <AccordionContent>
174
+ Manage your security settings and two-factor authentication.
175
+ </AccordionContent>
176
+ </AccordionItem>
177
+ </Accordion>
178
+ </div>
179
+
180
+ {/* Default Open */}
181
+ <div>
182
+ <h3 className="text-lg font-semibold mb-4">Default Open State</h3>
183
+ <Accordion
184
+ type="single"
185
+ collapsible
186
+ defaultValue="default-open"
187
+ className="w-full"
188
+ >
189
+ <AccordionItem value="default-closed">
190
+ <AccordionTrigger>Closed by Default</AccordionTrigger>
191
+ <AccordionContent>This item starts closed.</AccordionContent>
192
+ </AccordionItem>
193
+ <AccordionItem value="default-open">
194
+ <AccordionTrigger>Open by Default</AccordionTrigger>
195
+ <AccordionContent>
196
+ This item is open when the accordion first loads due to the
197
+ defaultValue prop.
198
+ </AccordionContent>
199
+ </AccordionItem>
200
+ </Accordion>
201
+ </div>
202
+ </div>
203
+ ),
204
+ };
205
+
206
+ /**
207
+ * Real-world example showing accordion in a practical application context.
208
+ * Demonstrates how accordions work in complex UI scenarios like settings panels or FAQ sections.
209
+ */
210
+ export const InContext: Story = {
211
+ args: {
212
+ type: "single",
213
+ collapsible: true,
214
+ className: "w-96",
215
+ },
216
+ parameters: {
217
+ docs: {
218
+ description: {
219
+ story:
220
+ "Shows accordion used in a realistic application context - a comprehensive account settings page with organized sections.",
221
+ },
222
+ },
223
+ },
224
+ render: () => (
225
+ <div className="w-full max-w-4xl mx-auto p-6 bg-background">
226
+ {/* Header */}
227
+ <div className="mb-8">
228
+ <h1 className="text-3xl font-bold mb-2">Account Settings</h1>
229
+ <p className="text-muted-foreground">
230
+ Manage your account preferences, security settings, and notification
231
+ options.
232
+ </p>
233
+ </div>
234
+
235
+ {/* Settings Accordion */}
236
+ <Accordion type="single" collapsible className="w-full space-y-2">
237
+ {/* Profile Section */}
238
+ <AccordionItem value="profile" className="border rounded-lg px-4">
239
+ <AccordionTrigger className="hover:no-underline py-6">
240
+ <div className="flex items-center gap-4">
241
+ <div className="p-2 bg-blue-100 dark:bg-blue-900 rounded-lg">
242
+ <User className="size-5 text-blue-600 dark:text-blue-400" />
243
+ </div>
244
+ <div className="text-left">
245
+ <h3 className="font-semibold">Profile Information</h3>
246
+ <p className="text-sm text-muted-foreground">
247
+ Update your personal details and preferences
248
+ </p>
249
+ </div>
250
+ </div>
251
+ </AccordionTrigger>
252
+ <AccordionContent className="pb-6">
253
+ <div className="space-y-4 pl-16">
254
+ <div className="grid grid-cols-2 gap-4">
255
+ <div>
256
+ <label className="text-sm font-medium">Full Name</label>
257
+ <div className="mt-1 p-2 border rounded text-sm">
258
+ John Doe
259
+ </div>
260
+ </div>
261
+ <div>
262
+ <label className="text-sm font-medium">Email</label>
263
+ <div className="mt-1 p-2 border rounded text-sm">
264
+ john.doe@example.com
265
+ </div>
266
+ </div>
267
+ </div>
268
+ <div>
269
+ <label className="text-sm font-medium">Bio</label>
270
+ <div className="mt-1 p-2 border rounded text-sm min-h-[80px]">
271
+ Software developer with a passion for creating great user
272
+ experiences.
273
+ </div>
274
+ </div>
275
+ </div>
276
+ </AccordionContent>
277
+ </AccordionItem>
278
+
279
+ {/* Security Section */}
280
+ <AccordionItem value="security" className="border rounded-lg px-4">
281
+ <AccordionTrigger className="hover:no-underline py-6">
282
+ <div className="flex items-center gap-4">
283
+ <div className="p-2 bg-green-100 dark:bg-green-900 rounded-lg">
284
+ <Shield className="size-5 text-green-600 dark:text-green-400" />
285
+ </div>
286
+ <div className="text-left">
287
+ <h3 className="font-semibold">Security & Privacy</h3>
288
+ <p className="text-sm text-muted-foreground">
289
+ Manage passwords, 2FA, and privacy settings
290
+ </p>
291
+ </div>
292
+ </div>
293
+ </AccordionTrigger>
294
+ <AccordionContent className="pb-6">
295
+ <div className="space-y-4 pl-16">
296
+ <div className="flex items-center justify-between p-3 bg-muted rounded-lg">
297
+ <div>
298
+ <div className="font-medium">Two-Factor Authentication</div>
299
+ <div className="text-sm text-muted-foreground">
300
+ Add an extra layer of security
301
+ </div>
302
+ </div>
303
+ <div className="px-3 py-1 bg-green-100 text-green-800 rounded-full text-xs font-medium">
304
+ Enabled
305
+ </div>
306
+ </div>
307
+ <div className="flex items-center justify-between p-3 bg-muted rounded-lg">
308
+ <div>
309
+ <div className="font-medium">Password</div>
310
+ <div className="text-sm text-muted-foreground">
311
+ Last changed 30 days ago
312
+ </div>
313
+ </div>
314
+ <button className="px-3 py-1 bg-primary text-primary-foreground rounded text-sm">
315
+ Change
316
+ </button>
317
+ </div>
318
+ </div>
319
+ </AccordionContent>
320
+ </AccordionItem>
321
+
322
+ {/* Billing Section */}
323
+ <AccordionItem value="billing" className="border rounded-lg px-4">
324
+ <AccordionTrigger className="hover:no-underline py-6">
325
+ <div className="flex items-center gap-4">
326
+ <div className="p-2 bg-purple-100 dark:bg-purple-900 rounded-lg">
327
+ <CreditCard className="size-5 text-purple-600 dark:text-purple-400" />
328
+ </div>
329
+ <div className="text-left">
330
+ <h3 className="font-semibold">Billing & Subscription</h3>
331
+ <p className="text-sm text-muted-foreground">
332
+ Manage payment methods and billing history
333
+ </p>
334
+ </div>
335
+ </div>
336
+ </AccordionTrigger>
337
+ <AccordionContent className="pb-6">
338
+ <div className="space-y-4 pl-16">
339
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
340
+ <div className="p-4 border rounded-lg">
341
+ <div className="flex items-center justify-between mb-2">
342
+ <span className="font-medium">Current Plan</span>
343
+ <span className="text-sm bg-blue-100 text-blue-800 px-2 py-1 rounded">
344
+ Pro
345
+ </span>
346
+ </div>
347
+ <p className="text-sm text-muted-foreground">
348
+ $19/month • Billed monthly
349
+ </p>
350
+ </div>
351
+ <div className="p-4 border rounded-lg">
352
+ <div className="font-medium mb-2">Payment Method</div>
353
+ <p className="text-sm text-muted-foreground">
354
+ •••• •••• •••• 4242
355
+ </p>
356
+ <p className="text-xs text-muted-foreground">
357
+ Expires 12/2027
358
+ </p>
359
+ </div>
360
+ </div>
361
+ </div>
362
+ </AccordionContent>
363
+ </AccordionItem>
364
+
365
+ {/* Notifications Section */}
366
+ <AccordionItem value="notifications" className="border rounded-lg px-4">
367
+ <AccordionTrigger className="hover:no-underline py-6">
368
+ <div className="flex items-center gap-4">
369
+ <div className="p-2 bg-orange-100 dark:bg-orange-900 rounded-lg">
370
+ <Bell className="size-5 text-orange-600 dark:text-orange-400" />
371
+ </div>
372
+ <div className="text-left">
373
+ <h3 className="font-semibold">Notification Preferences</h3>
374
+ <p className="text-sm text-muted-foreground">
375
+ Control how and when you receive notifications
376
+ </p>
377
+ </div>
378
+ </div>
379
+ </AccordionTrigger>
380
+ <AccordionContent className="pb-6">
381
+ <div className="space-y-3 pl-16">
382
+ {[
383
+ {
384
+ name: "Email Notifications",
385
+ desc: "Receive updates via email",
386
+ enabled: true,
387
+ },
388
+ {
389
+ name: "Push Notifications",
390
+ desc: "Browser and mobile notifications",
391
+ enabled: false,
392
+ },
393
+ {
394
+ name: "SMS Notifications",
395
+ desc: "Text message alerts for important updates",
396
+ enabled: true,
397
+ },
398
+ {
399
+ name: "Marketing Communications",
400
+ desc: "Product updates and special offers",
401
+ enabled: false,
402
+ },
403
+ ].map((item, index) => (
404
+ <div
405
+ key={index}
406
+ className="flex items-center justify-between p-3 bg-muted rounded-lg"
407
+ >
408
+ <div>
409
+ <div className="font-medium">{item.name}</div>
410
+ <div className="text-sm text-muted-foreground">
411
+ {item.desc}
412
+ </div>
413
+ </div>
414
+ <div
415
+ className={`w-10 h-6 rounded-full p-1 ${item.enabled ? "bg-blue-600" : "bg-gray-300"}`}
416
+ >
417
+ <div
418
+ className={`w-4 h-4 rounded-full bg-white transition-transform ${item.enabled ? "translate-x-4" : "translate-x-0"}`}
419
+ />
420
+ </div>
421
+ </div>
422
+ ))}
423
+ </div>
424
+ </AccordionContent>
425
+ </AccordionItem>
426
+ </Accordion>
427
+ </div>
428
+ ),
429
+ };