@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,544 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../tabs";
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../card";
5
+ import { Badge } from "../badge";
6
+ import { Button } from "../button";
7
+ import { Avatar, AvatarFallback } from "../avatar";
8
+ import { Input } from "../input";
9
+ import { Label } from "../label";
10
+ import { Switch } from "../switch";
11
+
12
+ const meta = {
13
+ title: "Navigation & Menus/Tabs",
14
+ component: Tabs,
15
+ parameters: {
16
+ layout: "centered",
17
+ docs: {
18
+ description: {
19
+ component:
20
+ "A tabbed interface component for organizing content into multiple sections. Built on Radix UI with full accessibility support and flexible styling options.",
21
+ },
22
+ },
23
+ },
24
+ tags: ["autodocs"],
25
+ argTypes: {
26
+ defaultValue: {
27
+ control: { type: "text" },
28
+ description: "The default active tab (uncontrolled)",
29
+ },
30
+ value: {
31
+ control: { type: "text" },
32
+ description: "The controlled active tab value",
33
+ },
34
+ orientation: {
35
+ control: { type: "radio" },
36
+ options: ["horizontal", "vertical"],
37
+ description: "The orientation of the tabs",
38
+ },
39
+ onValueChange: {
40
+ action: "tab changed",
41
+ description: "Callback fired when the active tab changes",
42
+ },
43
+ },
44
+ } satisfies Meta<typeof Tabs>;
45
+
46
+ export default meta;
47
+ type Story = StoryObj<typeof meta>;
48
+
49
+ /**
50
+ * Interactive playground with all controls available for testing different
51
+ * configurations and props. Use the controls panel to experiment with
52
+ * various combinations of props and see how they affect the component.
53
+ */
54
+ export const Interactive: Story = {
55
+ args: {
56
+ defaultValue: "overview",
57
+ orientation: "horizontal",
58
+ },
59
+ render: ({ defaultValue, orientation, ...args }) => (
60
+ <Tabs
61
+ defaultValue={defaultValue}
62
+ orientation={orientation}
63
+ className="w-[500px]"
64
+ {...args}
65
+ >
66
+ <TabsList className={orientation === "vertical" ? "flex-col h-auto w-[150px]" : "grid w-full grid-cols-4"}>
67
+ <TabsTrigger value="overview" className={orientation === "vertical" ? "w-full justify-start" : ""}>
68
+ Overview
69
+ </TabsTrigger>
70
+ <TabsTrigger value="analytics" className={orientation === "vertical" ? "w-full justify-start" : ""}>
71
+ Analytics
72
+ </TabsTrigger>
73
+ <TabsTrigger value="reports" className={orientation === "vertical" ? "w-full justify-start" : ""}>
74
+ Reports
75
+ </TabsTrigger>
76
+ <TabsTrigger value="settings" className={orientation === "vertical" ? "w-full justify-start" : ""}>
77
+ Settings
78
+ </TabsTrigger>
79
+ </TabsList>
80
+
81
+ <div className={orientation === "vertical" ? "flex gap-4" : ""}>
82
+ <div className="flex-1">
83
+ <TabsContent value="overview">
84
+ <Card>
85
+ <CardHeader>
86
+ <CardTitle>Overview</CardTitle>
87
+ <CardDescription>
88
+ Dashboard overview with key metrics and insights
89
+ </CardDescription>
90
+ </CardHeader>
91
+ <CardContent>
92
+ <div className="grid grid-cols-3 gap-4">
93
+ <div className="text-center">
94
+ <div className="text-2xl font-bold">2.4k</div>
95
+ <p className="text-sm text-muted-foreground">Total Users</p>
96
+ </div>
97
+ <div className="text-center">
98
+ <div className="text-2xl font-bold">45.2%</div>
99
+ <p className="text-sm text-muted-foreground">Growth Rate</p>
100
+ </div>
101
+ <div className="text-center">
102
+ <div className="text-2xl font-bold">$12.5k</div>
103
+ <p className="text-sm text-muted-foreground">Revenue</p>
104
+ </div>
105
+ </div>
106
+ </CardContent>
107
+ </Card>
108
+ </TabsContent>
109
+
110
+ <TabsContent value="analytics">
111
+ <Card>
112
+ <CardHeader>
113
+ <CardTitle>Analytics</CardTitle>
114
+ <CardDescription>
115
+ Detailed analytics and performance metrics
116
+ </CardDescription>
117
+ </CardHeader>
118
+ <CardContent>
119
+ <p className="text-sm text-muted-foreground">
120
+ Analytics charts and detailed metrics would be displayed here.
121
+ </p>
122
+ <div className="mt-4 space-y-2">
123
+ <div className="flex justify-between">
124
+ <span className="text-sm">Page Views</span>
125
+ <span className="text-sm font-medium">12,345</span>
126
+ </div>
127
+ <div className="flex justify-between">
128
+ <span className="text-sm">Unique Visitors</span>
129
+ <span className="text-sm font-medium">8,901</span>
130
+ </div>
131
+ <div className="flex justify-between">
132
+ <span className="text-sm">Bounce Rate</span>
133
+ <span className="text-sm font-medium">34.2%</span>
134
+ </div>
135
+ </div>
136
+ </CardContent>
137
+ </Card>
138
+ </TabsContent>
139
+
140
+ <TabsContent value="reports">
141
+ <Card>
142
+ <CardHeader>
143
+ <CardTitle>Reports</CardTitle>
144
+ <CardDescription>
145
+ Generate and download detailed reports
146
+ </CardDescription>
147
+ </CardHeader>
148
+ <CardContent>
149
+ <p className="text-sm text-muted-foreground mb-4">
150
+ Available reports and export options.
151
+ </p>
152
+ <div className="space-y-2">
153
+ <Button variant="outline" className="w-full justify-start">
154
+ Download Monthly Report
155
+ </Button>
156
+ <Button variant="outline" className="w-full justify-start">
157
+ Export User Data
158
+ </Button>
159
+ <Button variant="outline" className="w-full justify-start">
160
+ Analytics Summary
161
+ </Button>
162
+ </div>
163
+ </CardContent>
164
+ </Card>
165
+ </TabsContent>
166
+
167
+ <TabsContent value="settings">
168
+ <Card>
169
+ <CardHeader>
170
+ <CardTitle>Settings</CardTitle>
171
+ <CardDescription>
172
+ Manage your account and preferences
173
+ </CardDescription>
174
+ </CardHeader>
175
+ <CardContent className="space-y-4">
176
+ <div className="space-y-2">
177
+ <Label htmlFor="name">Display Name</Label>
178
+ <Input id="name" defaultValue="John Doe" />
179
+ </div>
180
+ <div className="flex items-center justify-between">
181
+ <Label htmlFor="notifications">Email Notifications</Label>
182
+ <Switch id="notifications" defaultChecked />
183
+ </div>
184
+ <div className="flex items-center justify-between">
185
+ <Label htmlFor="privacy">Public Profile</Label>
186
+ <Switch id="privacy" />
187
+ </div>
188
+ </CardContent>
189
+ </Card>
190
+ </TabsContent>
191
+ </div>
192
+ </div>
193
+ </Tabs>
194
+ ),
195
+ };
196
+
197
+ /**
198
+ * Showcase of all available variants and styling combinations.
199
+ * Demonstrates horizontal vs vertical orientations, different tab layouts,
200
+ * and various visual configurations to help understand what's possible.
201
+ */
202
+ export const Variants: Story = {
203
+ render: () => (
204
+ <div className="space-y-8 w-full max-w-4xl">
205
+ {/* Standard Horizontal Tabs */}
206
+ <div>
207
+ <h3 className="text-lg font-semibold mb-4">Standard Horizontal Tabs</h3>
208
+ <Tabs defaultValue="tab1" className="w-[400px]">
209
+ <TabsList>
210
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
211
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
212
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
213
+ </TabsList>
214
+ <TabsContent value="tab1">
215
+ <Card>
216
+ <CardContent className="pt-6">
217
+ <p>Content for Tab 1</p>
218
+ </CardContent>
219
+ </Card>
220
+ </TabsContent>
221
+ <TabsContent value="tab2">
222
+ <Card>
223
+ <CardContent className="pt-6">
224
+ <p>Content for Tab 2</p>
225
+ </CardContent>
226
+ </Card>
227
+ </TabsContent>
228
+ <TabsContent value="tab3">
229
+ <Card>
230
+ <CardContent className="pt-6">
231
+ <p>Content for Tab 3</p>
232
+ </CardContent>
233
+ </Card>
234
+ </TabsContent>
235
+ </Tabs>
236
+ </div>
237
+
238
+ {/* Grid Layout Tabs */}
239
+ <div>
240
+ <h3 className="text-lg font-semibold mb-4">Grid Layout (Equal Width)</h3>
241
+ <Tabs defaultValue="home" className="w-[500px]">
242
+ <TabsList className="grid w-full grid-cols-4">
243
+ <TabsTrigger value="home">Home</TabsTrigger>
244
+ <TabsTrigger value="explore">Explore</TabsTrigger>
245
+ <TabsTrigger value="notifications">Alerts</TabsTrigger>
246
+ <TabsTrigger value="profile">Profile</TabsTrigger>
247
+ </TabsList>
248
+ <TabsContent value="home">
249
+ <Card>
250
+ <CardContent className="pt-6">
251
+ <p>Home feed content</p>
252
+ </CardContent>
253
+ </Card>
254
+ </TabsContent>
255
+ <TabsContent value="explore">
256
+ <Card>
257
+ <CardContent className="pt-6">
258
+ <p>Explore new content</p>
259
+ </CardContent>
260
+ </Card>
261
+ </TabsContent>
262
+ <TabsContent value="notifications">
263
+ <Card>
264
+ <CardContent className="pt-6">
265
+ <p>Notification alerts</p>
266
+ </CardContent>
267
+ </Card>
268
+ </TabsContent>
269
+ <TabsContent value="profile">
270
+ <Card>
271
+ <CardContent className="pt-6">
272
+ <p>Profile settings</p>
273
+ </CardContent>
274
+ </Card>
275
+ </TabsContent>
276
+ </Tabs>
277
+ </div>
278
+
279
+ {/* Vertical Orientation */}
280
+ <div>
281
+ <h3 className="text-lg font-semibold mb-4">Vertical Orientation</h3>
282
+ <div className="flex gap-4 w-[600px]">
283
+ <Tabs defaultValue="general" orientation="vertical">
284
+ <TabsList className="flex-col h-auto w-[200px]">
285
+ <TabsTrigger value="general" className="w-full justify-start">
286
+ General
287
+ </TabsTrigger>
288
+ <TabsTrigger value="security" className="w-full justify-start">
289
+ Security
290
+ </TabsTrigger>
291
+ <TabsTrigger value="notifications" className="w-full justify-start">
292
+ Notifications
293
+ </TabsTrigger>
294
+ <TabsTrigger value="billing" className="w-full justify-start">
295
+ Billing
296
+ </TabsTrigger>
297
+ </TabsList>
298
+ </Tabs>
299
+ <div className="flex-1">
300
+ <Card>
301
+ <CardHeader>
302
+ <CardTitle>Settings Panel</CardTitle>
303
+ <CardDescription>
304
+ Configure your preferences
305
+ </CardDescription>
306
+ </CardHeader>
307
+ <CardContent>
308
+ <p className="text-sm text-muted-foreground">
309
+ Settings content would appear here based on the selected tab.
310
+ </p>
311
+ </CardContent>
312
+ </Card>
313
+ </div>
314
+ </div>
315
+ </div>
316
+
317
+ {/* Tabs with Icons */}
318
+ <div>
319
+ <h3 className="text-lg font-semibold mb-4">Tabs with Icons</h3>
320
+ <Tabs defaultValue="dashboard" className="w-[400px]">
321
+ <TabsList className="grid w-full grid-cols-3">
322
+ <TabsTrigger value="dashboard">
323
+ <svg className="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
324
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
325
+ </svg>
326
+ Dashboard
327
+ </TabsTrigger>
328
+ <TabsTrigger value="users">
329
+ <svg className="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
330
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z" />
331
+ </svg>
332
+ Users
333
+ </TabsTrigger>
334
+ <TabsTrigger value="settings">
335
+ <svg className="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
336
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" />
337
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
338
+ </svg>
339
+ Settings
340
+ </TabsTrigger>
341
+ </TabsList>
342
+ <TabsContent value="dashboard">
343
+ <Card>
344
+ <CardContent className="pt-6">
345
+ <p>Dashboard overview with metrics</p>
346
+ </CardContent>
347
+ </Card>
348
+ </TabsContent>
349
+ <TabsContent value="users">
350
+ <Card>
351
+ <CardContent className="pt-6">
352
+ <p>User management interface</p>
353
+ </CardContent>
354
+ </Card>
355
+ </TabsContent>
356
+ <TabsContent value="settings">
357
+ <Card>
358
+ <CardContent className="pt-6">
359
+ <p>Application settings</p>
360
+ </CardContent>
361
+ </Card>
362
+ </TabsContent>
363
+ </Tabs>
364
+ </div>
365
+ </div>
366
+ ),
367
+ };
368
+
369
+ /**
370
+ * Real-world usage example showing tabs in a typical application context.
371
+ * This example demonstrates how tabs would be used in a user profile interface
372
+ * with multiple sections of content, helping designers and business teams
373
+ * understand practical applications.
374
+ */
375
+ export const InContext: Story = {
376
+ render: () => (
377
+ <div className="w-full max-w-4xl mx-auto p-6">
378
+ <div className="mb-6">
379
+ <h2 className="text-2xl font-bold mb-2">User Profile</h2>
380
+ <p className="text-muted-foreground">
381
+ Manage your profile information, view activity, and configure settings
382
+ </p>
383
+ </div>
384
+
385
+ <Tabs defaultValue="profile" className="w-full">
386
+ <TabsList className="grid w-full grid-cols-4">
387
+ <TabsTrigger value="profile">Profile</TabsTrigger>
388
+ <TabsTrigger value="activity">Activity</TabsTrigger>
389
+ <TabsTrigger value="preferences">Preferences</TabsTrigger>
390
+ <TabsTrigger value="security">Security</TabsTrigger>
391
+ </TabsList>
392
+
393
+ <TabsContent value="profile" className="space-y-6">
394
+ <Card>
395
+ <CardHeader>
396
+ <CardTitle>Profile Information</CardTitle>
397
+ <CardDescription>
398
+ Update your profile details and public information
399
+ </CardDescription>
400
+ </CardHeader>
401
+ <CardContent className="space-y-4">
402
+ <div className="flex items-center gap-4">
403
+ <Avatar className="h-20 w-20">
404
+ <AvatarFallback>JD</AvatarFallback>
405
+ </Avatar>
406
+ <div className="space-y-1">
407
+ <h3 className="text-lg font-semibold">John Doe</h3>
408
+ <p className="text-sm text-muted-foreground">john.doe@example.com</p>
409
+ <Badge variant="secondary">Pro User</Badge>
410
+ </div>
411
+ </div>
412
+ <div className="grid grid-cols-2 gap-4">
413
+ <div className="space-y-2">
414
+ <Label htmlFor="firstName">First Name</Label>
415
+ <Input id="firstName" defaultValue="John" />
416
+ </div>
417
+ <div className="space-y-2">
418
+ <Label htmlFor="lastName">Last Name</Label>
419
+ <Input id="lastName" defaultValue="Doe" />
420
+ </div>
421
+ </div>
422
+ <div className="space-y-2">
423
+ <Label htmlFor="bio">Bio</Label>
424
+ <textarea
425
+ id="bio"
426
+ className="w-full min-h-[80px] rounded-md border p-3 text-sm"
427
+ defaultValue="Product designer and developer passionate about creating intuitive user experiences."
428
+ />
429
+ </div>
430
+ <Button>Save Changes</Button>
431
+ </CardContent>
432
+ </Card>
433
+ </TabsContent>
434
+
435
+ <TabsContent value="activity" className="space-y-6">
436
+ <Card>
437
+ <CardHeader>
438
+ <CardTitle>Recent Activity</CardTitle>
439
+ <CardDescription>
440
+ Your recent actions and engagement
441
+ </CardDescription>
442
+ </CardHeader>
443
+ <CardContent>
444
+ <div className="space-y-4">
445
+ {[
446
+ { action: "Updated profile picture", time: "2 hours ago" },
447
+ { action: "Completed onboarding", time: "1 day ago" },
448
+ { action: "Joined the platform", time: "3 days ago" },
449
+ ].map((item, index) => (
450
+ <div key={index} className="flex justify-between items-center pb-4 border-b last:border-b-0">
451
+ <span className="text-sm">{item.action}</span>
452
+ <span className="text-xs text-muted-foreground">{item.time}</span>
453
+ </div>
454
+ ))}
455
+ </div>
456
+ </CardContent>
457
+ </Card>
458
+ </TabsContent>
459
+
460
+ <TabsContent value="preferences" className="space-y-6">
461
+ <Card>
462
+ <CardHeader>
463
+ <CardTitle>Preferences</CardTitle>
464
+ <CardDescription>
465
+ Customize your experience and notification settings
466
+ </CardDescription>
467
+ </CardHeader>
468
+ <CardContent className="space-y-6">
469
+ <div>
470
+ <h4 className="text-sm font-medium mb-4">Notifications</h4>
471
+ <div className="space-y-3">
472
+ <div className="flex items-center justify-between">
473
+ <Label htmlFor="email-notif">Email notifications</Label>
474
+ <Switch id="email-notif" defaultChecked />
475
+ </div>
476
+ <div className="flex items-center justify-between">
477
+ <Label htmlFor="push-notif">Push notifications</Label>
478
+ <Switch id="push-notif" />
479
+ </div>
480
+ <div className="flex items-center justify-between">
481
+ <Label htmlFor="marketing">Marketing emails</Label>
482
+ <Switch id="marketing" />
483
+ </div>
484
+ </div>
485
+ </div>
486
+ <div>
487
+ <h4 className="text-sm font-medium mb-4">Privacy</h4>
488
+ <div className="space-y-3">
489
+ <div className="flex items-center justify-between">
490
+ <Label htmlFor="public-profile">Public profile</Label>
491
+ <Switch id="public-profile" defaultChecked />
492
+ </div>
493
+ <div className="flex items-center justify-between">
494
+ <Label htmlFor="analytics">Analytics tracking</Label>
495
+ <Switch id="analytics" defaultChecked />
496
+ </div>
497
+ </div>
498
+ </div>
499
+ </CardContent>
500
+ </Card>
501
+ </TabsContent>
502
+
503
+ <TabsContent value="security" className="space-y-6">
504
+ <Card>
505
+ <CardHeader>
506
+ <CardTitle>Security Settings</CardTitle>
507
+ <CardDescription>
508
+ Manage your account security and access
509
+ </CardDescription>
510
+ </CardHeader>
511
+ <CardContent className="space-y-6">
512
+ <div>
513
+ <h4 className="text-sm font-medium mb-4">Password</h4>
514
+ <div className="space-y-3">
515
+ <div className="space-y-2">
516
+ <Label htmlFor="current-password">Current Password</Label>
517
+ <Input id="current-password" type="password" />
518
+ </div>
519
+ <div className="space-y-2">
520
+ <Label htmlFor="new-password">New Password</Label>
521
+ <Input id="new-password" type="password" />
522
+ </div>
523
+ <Button variant="outline">Change Password</Button>
524
+ </div>
525
+ </div>
526
+ <div>
527
+ <h4 className="text-sm font-medium mb-4">Two-Factor Authentication</h4>
528
+ <div className="flex items-center justify-between">
529
+ <div>
530
+ <p className="text-sm">Add an extra layer of security</p>
531
+ <p className="text-xs text-muted-foreground">
532
+ Protect your account with 2FA
533
+ </p>
534
+ </div>
535
+ <Button variant="outline">Enable 2FA</Button>
536
+ </div>
537
+ </div>
538
+ </CardContent>
539
+ </Card>
540
+ </TabsContent>
541
+ </Tabs>
542
+ </div>
543
+ ),
544
+ };