@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,468 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import { Settings, User, Bell, Menu, HelpCircle, Check } from "lucide-react";
4
+ import {
5
+ Sheet,
6
+ SheetClose,
7
+ SheetContent,
8
+ SheetDescription,
9
+ SheetFooter,
10
+ SheetHeader,
11
+ SheetTitle,
12
+ SheetTrigger,
13
+ } from "../sheet";
14
+ import { Button } from "../button";
15
+ import { Input } from "../input";
16
+ import { Label } from "../label";
17
+ import { Textarea } from "../textarea";
18
+ import { Switch } from "../switch";
19
+ import { Separator } from "../separator";
20
+
21
+ const meta = {
22
+ title: "Overlays/Sheet",
23
+ component: Sheet,
24
+ parameters: {
25
+ layout: "centered",
26
+ docs: {
27
+ description: {
28
+ component:
29
+ "A slide-out panel that displays supplementary content from any edge of the screen. Built on Radix UI Dialog with smooth animations and comprehensive accessibility support. Perfect for navigation menus, settings panels, and contextual forms.",
30
+ },
31
+ },
32
+ },
33
+ tags: ["autodocs"],
34
+ argTypes: {
35
+ open: {
36
+ control: "boolean",
37
+ description: "Controls the open state of the sheet",
38
+ },
39
+ onOpenChange: {
40
+ action: "onOpenChange",
41
+ description: "Callback fired when the open state changes",
42
+ },
43
+ },
44
+ } satisfies Meta<typeof Sheet>;
45
+
46
+ export default meta;
47
+ type Story = StoryObj<typeof meta>;
48
+
49
+ /**
50
+ * Interactive playground for testing all sheet props and configurations.
51
+ * Use the controls panel to experiment with different sides, content, and states.
52
+ */
53
+ export const Interactive: Story = {
54
+ args: {
55
+ open: false,
56
+ },
57
+ render: function InteractiveSheet(args) {
58
+ const [open, setOpen] = React.useState(args.open);
59
+ const [side, setSide] = React.useState<"top" | "right" | "bottom" | "left">(
60
+ "right",
61
+ );
62
+ const [hasHeader, setHasHeader] = React.useState(true);
63
+ const [hasFooter, setHasFooter] = React.useState(true);
64
+ const [hasForm, setHasForm] = React.useState(false);
65
+
66
+ React.useEffect(() => {
67
+ setOpen(args.open);
68
+ }, [args.open]);
69
+
70
+ const handleOpenChange = (newOpen: boolean) => {
71
+ setOpen(newOpen);
72
+ args.onOpenChange?.(newOpen);
73
+ };
74
+
75
+ return (
76
+ <div className="space-y-4">
77
+ {/* Controls */}
78
+ <div className="grid grid-cols-2 gap-4 p-4 border rounded-lg">
79
+ <div>
80
+ <Label>Side</Label>
81
+ <select
82
+ value={side}
83
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+ onChange={(e) => setSide(e.target.value as any)}
85
+ className="w-full p-2 border rounded"
86
+ >
87
+ <option value="right">Right</option>
88
+ <option value="left">Left</option>
89
+ <option value="top">Top</option>
90
+ <option value="bottom">Bottom</option>
91
+ </select>
92
+ </div>
93
+ <div className="space-y-2">
94
+ <label className="flex items-center gap-2">
95
+ <input
96
+ type="checkbox"
97
+ checked={hasHeader}
98
+ onChange={(e) => setHasHeader(e.target.checked)}
99
+ />
100
+ Include Header
101
+ </label>
102
+ <label className="flex items-center gap-2">
103
+ <input
104
+ type="checkbox"
105
+ checked={hasFooter}
106
+ onChange={(e) => setHasFooter(e.target.checked)}
107
+ />
108
+ Include Footer
109
+ </label>
110
+ <label className="flex items-center gap-2">
111
+ <input
112
+ type="checkbox"
113
+ checked={hasForm}
114
+ onChange={(e) => setHasForm(e.target.checked)}
115
+ />
116
+ Form Content
117
+ </label>
118
+ </div>
119
+ </div>
120
+
121
+ {/* Sheet Demo */}
122
+ <Sheet open={open} onOpenChange={handleOpenChange}>
123
+ <SheetTrigger asChild>
124
+ <Button>Open Sheet ({side})</Button>
125
+ </SheetTrigger>
126
+ <SheetContent
127
+ side={side}
128
+ className={
129
+ side === "top" || side === "bottom" ? "h-[400px]" : undefined
130
+ }
131
+ >
132
+ {hasHeader && (
133
+ <SheetHeader>
134
+ <SheetTitle>Interactive Sheet</SheetTitle>
135
+ <SheetDescription>
136
+ This sheet opens from the {side} side. Use the controls above
137
+ to customize its behavior.
138
+ </SheetDescription>
139
+ </SheetHeader>
140
+ )}
141
+
142
+ <div className="py-4 flex-1">
143
+ {hasForm ? (
144
+ <div className="space-y-4">
145
+ <div>
146
+ <Label htmlFor="name">Name</Label>
147
+ <Input id="name" placeholder="Enter your name" />
148
+ </div>
149
+ <div>
150
+ <Label htmlFor="email">Email</Label>
151
+ <Input
152
+ id="email"
153
+ type="email"
154
+ placeholder="Enter your email"
155
+ />
156
+ </div>
157
+ <div>
158
+ <Label htmlFor="message">Message</Label>
159
+ <Textarea id="message" placeholder="Your message..." />
160
+ </div>
161
+ </div>
162
+ ) : (
163
+ <div className="space-y-4">
164
+ <p className="text-sm text-muted-foreground">
165
+ This is the main content area of the sheet. You can put any
166
+ content here.
167
+ </p>
168
+ <div className="grid grid-cols-1 gap-2">
169
+ <Button variant="ghost" className="justify-start">
170
+ <User className="mr-2 h-4 w-4" />
171
+ Sample Action 1
172
+ </Button>
173
+ <Button variant="ghost" className="justify-start">
174
+ <Settings className="mr-2 h-4 w-4" />
175
+ Sample Action 2
176
+ </Button>
177
+ <Button variant="ghost" className="justify-start">
178
+ <Bell className="mr-2 h-4 w-4" />
179
+ Sample Action 3
180
+ </Button>
181
+ </div>
182
+ </div>
183
+ )}
184
+ </div>
185
+
186
+ {hasFooter && (
187
+ <SheetFooter>
188
+ <SheetClose asChild>
189
+ <Button variant="outline">Cancel</Button>
190
+ </SheetClose>
191
+ <Button>{hasForm ? "Submit" : "Done"}</Button>
192
+ </SheetFooter>
193
+ )}
194
+ </SheetContent>
195
+ </Sheet>
196
+
197
+ <p className="text-xs text-muted-foreground">
198
+ Current state: {open ? "Open" : "Closed"}
199
+ </p>
200
+ </div>
201
+ );
202
+ },
203
+ };
204
+
205
+ /**
206
+ * Demonstrates all available sheet variants and configurations.
207
+ * Shows sheets from all four sides with different content types.
208
+ */
209
+ export const Variants: Story = {
210
+ render: () => (
211
+ <div className="grid grid-cols-2 gap-4">
212
+ {/* Right Side - Settings */}
213
+ <Sheet>
214
+ <SheetTrigger asChild>
215
+ <Button variant="outline">Settings (Right)</Button>
216
+ </SheetTrigger>
217
+ <SheetContent side="right">
218
+ <SheetHeader>
219
+ <SheetTitle>Settings</SheetTitle>
220
+ <SheetDescription>Configure your preferences</SheetDescription>
221
+ </SheetHeader>
222
+ <div className="space-y-4 py-4">
223
+ <div className="flex items-center justify-between">
224
+ <Label>Notifications</Label>
225
+ <Switch defaultChecked />
226
+ </div>
227
+ <div className="flex items-center justify-between">
228
+ <Label>Dark Mode</Label>
229
+ <Switch />
230
+ </div>
231
+ </div>
232
+ <SheetFooter>
233
+ <SheetClose asChild>
234
+ <Button>Done</Button>
235
+ </SheetClose>
236
+ </SheetFooter>
237
+ </SheetContent>
238
+ </Sheet>
239
+
240
+ {/* Left Side - Navigation */}
241
+ <Sheet>
242
+ <SheetTrigger asChild>
243
+ <Button variant="outline">
244
+ <Menu className="mr-2 h-4 w-4" />
245
+ Menu (Left)
246
+ </Button>
247
+ </SheetTrigger>
248
+ <SheetContent side="left" className="w-[300px]">
249
+ <SheetHeader>
250
+ <SheetTitle>Navigation</SheetTitle>
251
+ <SheetDescription>Browse app sections</SheetDescription>
252
+ </SheetHeader>
253
+ <nav className="space-y-2 py-4">
254
+ <Button variant="ghost" className="w-full justify-start">
255
+ <User className="mr-2 h-4 w-4" />
256
+ Profile
257
+ </Button>
258
+ <Button variant="ghost" className="w-full justify-start">
259
+ <Settings className="mr-2 h-4 w-4" />
260
+ Settings
261
+ </Button>
262
+ <Button variant="ghost" className="w-full justify-start">
263
+ <HelpCircle className="mr-2 h-4 w-4" />
264
+ Help
265
+ </Button>
266
+ </nav>
267
+ </SheetContent>
268
+ </Sheet>
269
+
270
+ {/* Top Side - Notifications */}
271
+ <Sheet>
272
+ <SheetTrigger asChild>
273
+ <Button variant="outline">Notifications (Top)</Button>
274
+ </SheetTrigger>
275
+ <SheetContent side="top" className="h-[250px]">
276
+ <SheetHeader>
277
+ <SheetTitle>Recent Notifications</SheetTitle>
278
+ <SheetDescription>Your latest updates</SheetDescription>
279
+ </SheetHeader>
280
+ <div className="py-4">
281
+ <div className="space-y-2">
282
+ <div className="flex items-center gap-2 p-2 bg-blue-50 dark:bg-blue-950 rounded">
283
+ <Check className="h-4 w-4 text-blue-600" />
284
+ <span className="text-sm">Task completed successfully</span>
285
+ </div>
286
+ <div className="flex items-center gap-2 p-2 bg-green-50 dark:bg-green-950 rounded">
287
+ <Bell className="h-4 w-4 text-green-600" />
288
+ <span className="text-sm">New message received</span>
289
+ </div>
290
+ </div>
291
+ </div>
292
+ </SheetContent>
293
+ </Sheet>
294
+
295
+ {/* Bottom Side - Quick Actions */}
296
+ <Sheet>
297
+ <SheetTrigger asChild>
298
+ <Button variant="outline">Quick Actions (Bottom)</Button>
299
+ </SheetTrigger>
300
+ <SheetContent side="bottom" className="h-[300px]">
301
+ <SheetHeader>
302
+ <SheetTitle>Quick Actions</SheetTitle>
303
+ <SheetDescription>Common tasks at your fingertips</SheetDescription>
304
+ </SheetHeader>
305
+ <div className="grid grid-cols-2 gap-3 py-4">
306
+ <Button>Create New</Button>
307
+ <Button variant="outline">Import</Button>
308
+ <Button variant="secondary">Export</Button>
309
+ <Button variant="ghost">Archive</Button>
310
+ </div>
311
+ </SheetContent>
312
+ </Sheet>
313
+ </div>
314
+ ),
315
+ parameters: {
316
+ docs: {
317
+ description: {
318
+ story:
319
+ "All available sheet sides and common use cases: settings panel (right), navigation menu (left), notifications banner (top), and quick actions panel (bottom).",
320
+ },
321
+ },
322
+ },
323
+ };
324
+
325
+ /**
326
+ * Real-world example showing a sheet in a typical application context.
327
+ * Features a mobile-responsive navigation sheet with user profile section.
328
+ */
329
+ export const InContext: Story = {
330
+ render: () => (
331
+ <div className="min-h-[400px] border rounded-lg bg-background">
332
+ {/* Mock App Header */}
333
+ <header className="flex items-center justify-between p-4 border-b">
334
+ <h1 className="text-lg font-semibold">Dashboard App</h1>
335
+ <div className="flex items-center gap-2">
336
+ <Button variant="ghost" size="sm">
337
+ Profile
338
+ </Button>
339
+
340
+ {/* Navigation Sheet */}
341
+ <Sheet>
342
+ <SheetTrigger asChild>
343
+ <Button variant="outline" size="sm">
344
+ <Menu className="h-4 w-4" />
345
+ <span className="sr-only">Open menu</span>
346
+ </Button>
347
+ </SheetTrigger>
348
+ <SheetContent side="left" className="w-[280px] sm:w-[350px]">
349
+ <SheetHeader>
350
+ <SheetTitle>Navigation</SheetTitle>
351
+ <SheetDescription>
352
+ Access all sections of the application
353
+ </SheetDescription>
354
+ </SheetHeader>
355
+
356
+ <div className="py-4">
357
+ {/* User Section */}
358
+ <div className="flex items-center gap-3 p-3 rounded-lg bg-muted/50">
359
+ <div className="h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center">
360
+ <User className="h-5 w-5" />
361
+ </div>
362
+ <div>
363
+ <p className="text-sm font-medium">John Doe</p>
364
+ <p className="text-xs text-muted-foreground">
365
+ john@example.com
366
+ </p>
367
+ </div>
368
+ </div>
369
+
370
+ <Separator className="my-4" />
371
+
372
+ {/* Navigation Links */}
373
+ <nav className="space-y-1">
374
+ <div className="px-2 py-1.5">
375
+ <h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
376
+ Main
377
+ </h4>
378
+ </div>
379
+ <Button variant="ghost" className="w-full justify-start h-9">
380
+ 📊 Dashboard
381
+ </Button>
382
+ <Button variant="ghost" className="w-full justify-start h-9">
383
+ 📝 Projects
384
+ </Button>
385
+ <Button variant="ghost" className="w-full justify-start h-9">
386
+ ✅ Tasks
387
+ </Button>
388
+ <Button variant="ghost" className="w-full justify-start h-9">
389
+ 📈 Analytics
390
+ </Button>
391
+
392
+ <Separator className="my-3" />
393
+
394
+ <div className="px-2 py-1.5">
395
+ <h4 className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
396
+ Account
397
+ </h4>
398
+ </div>
399
+ <Button variant="ghost" className="w-full justify-start h-9">
400
+ <Settings className="mr-2 h-4 w-4" />
401
+ Settings
402
+ </Button>
403
+ <Button variant="ghost" className="w-full justify-start h-9">
404
+ <Bell className="mr-2 h-4 w-4" />
405
+ Notifications
406
+ </Button>
407
+ <Button variant="ghost" className="w-full justify-start h-9">
408
+ <HelpCircle className="mr-2 h-4 w-4" />
409
+ Help & Support
410
+ </Button>
411
+ </nav>
412
+ </div>
413
+
414
+ <SheetFooter className="border-t pt-4">
415
+ <div className="flex w-full justify-between">
416
+ <Button variant="ghost" size="sm">
417
+ 🌙 Dark Mode
418
+ </Button>
419
+ <SheetClose asChild>
420
+ <Button variant="outline" size="sm">
421
+ Close
422
+ </Button>
423
+ </SheetClose>
424
+ </div>
425
+ </SheetFooter>
426
+ </SheetContent>
427
+ </Sheet>
428
+ </div>
429
+ </header>
430
+
431
+ {/* Mock App Content */}
432
+ <main className="p-6">
433
+ <div className="space-y-4">
434
+ <h2 className="text-xl font-semibold">Welcome to your Dashboard</h2>
435
+ <p className="text-muted-foreground">
436
+ This is a realistic example of how the Sheet component works in a
437
+ real application. Click the menu button in the header to see the
438
+ navigation sheet in action.
439
+ </p>
440
+
441
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-4 mt-6">
442
+ <div className="p-4 border rounded-lg">
443
+ <h3 className="font-medium">Active Projects</h3>
444
+ <p className="text-2xl font-bold text-primary">12</p>
445
+ </div>
446
+ <div className="p-4 border rounded-lg">
447
+ <h3 className="font-medium">Completed Tasks</h3>
448
+ <p className="text-2xl font-bold text-green-600">48</p>
449
+ </div>
450
+ <div className="p-4 border rounded-lg">
451
+ <h3 className="font-medium">Team Members</h3>
452
+ <p className="text-2xl font-bold text-blue-600">8</p>
453
+ </div>
454
+ </div>
455
+ </div>
456
+ </main>
457
+ </div>
458
+ ),
459
+ parameters: {
460
+ layout: "fullscreen",
461
+ docs: {
462
+ description: {
463
+ story:
464
+ "A complete application example showing how the Sheet component integrates into a real dashboard interface. Features responsive design, user profile section, and organized navigation structure.",
465
+ },
466
+ },
467
+ },
468
+ };