@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,495 @@
1
+ import * as React from "react";
2
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
3
+ import { XIcon } from "lucide-react";
4
+
5
+ import { cn } from "@/lib/utils";
6
+
7
+ /**
8
+ * Sheet - A slide-out panel that displays supplementary content
9
+ *
10
+ * A versatile sheet component that slides in from any edge of the screen to display
11
+ * supplementary content without fully blocking the main interface. Built on Radix UI
12
+ * Dialog primitives with smooth animations and comprehensive accessibility support.
13
+ *
14
+ * Sheets are ideal for:
15
+ * - Mobile navigation menus
16
+ * - Settings panels and configuration forms
17
+ * - Contextual information displays
18
+ * - Secondary actions that don't require full attention
19
+ * - Filters and search interfaces
20
+ *
21
+ * @component
22
+ * @example
23
+ * ```tsx
24
+ * // Basic sheet from right side (default)
25
+ * <Sheet>
26
+ * <SheetTrigger asChild>
27
+ * <Button>Open Settings</Button>
28
+ * </SheetTrigger>
29
+ * <SheetContent>
30
+ * <SheetHeader>
31
+ * <SheetTitle>Settings</SheetTitle>
32
+ * <SheetDescription>
33
+ * Configure your application preferences.
34
+ * </SheetDescription>
35
+ * </SheetHeader>
36
+ * <div className="py-4">
37
+ * <p>Settings content here</p>
38
+ * </div>
39
+ * <SheetFooter>
40
+ * <Button type="submit">Save Changes</Button>
41
+ * </SheetFooter>
42
+ * </SheetContent>
43
+ * </Sheet>
44
+ * ```
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * // Sheet from different sides with controlled state
49
+ * function NavigationSheet() {
50
+ * const [open, setOpen] = useState(false)
51
+ *
52
+ * return (
53
+ * <Sheet open={open} onOpenChange={setOpen}>
54
+ * <SheetTrigger asChild>
55
+ * <Button variant="outline">Menu</Button>
56
+ * </SheetTrigger>
57
+ * <SheetContent side="left">
58
+ * <SheetHeader>
59
+ * <SheetTitle>Navigation</SheetTitle>
60
+ * </SheetHeader>
61
+ * <nav className="py-4">
62
+ * <Button variant="ghost" className="w-full justify-start">
63
+ * Dashboard
64
+ * </Button>
65
+ * </nav>
66
+ * </SheetContent>
67
+ * </Sheet>
68
+ * )
69
+ * }
70
+ * ```
71
+ *
72
+ * @example
73
+ * ```tsx
74
+ * // Sheet with form handling
75
+ * <Sheet>
76
+ * <SheetTrigger asChild>
77
+ * <Button>Edit Profile</Button>
78
+ * </SheetTrigger>
79
+ * <SheetContent>
80
+ * <form onSubmit={handleSubmit}>
81
+ * <SheetHeader>
82
+ * <SheetTitle>Edit Profile</SheetTitle>
83
+ * <SheetDescription>
84
+ * Update your profile information.
85
+ * </SheetDescription>
86
+ * </SheetHeader>
87
+ * <div className="grid gap-4 py-4">
88
+ * <Input placeholder="Name" />
89
+ * <Input placeholder="Email" type="email" />
90
+ * </div>
91
+ * <SheetFooter>
92
+ * <SheetClose asChild>
93
+ * <Button type="button" variant="outline">Cancel</Button>
94
+ * </SheetClose>
95
+ * <Button type="submit">Save</Button>
96
+ * </SheetFooter>
97
+ * </form>
98
+ * </SheetContent>
99
+ * </Sheet>
100
+ * ```
101
+ *
102
+ * @accessibility
103
+ * - Focus is trapped within the sheet when open
104
+ * - Escape key closes the sheet
105
+ * - Background scroll is locked when sheet is open
106
+ * - Proper ARIA labeling for screen readers
107
+ * - Close button always visible and accessible
108
+ * - Supports keyboard navigation
109
+ *
110
+ * @see {@link https://ui.shadcn.com/docs/components/sheet} shadcn/ui Sheet documentation
111
+ * @see {@link https://www.radix-ui.com/primitives/docs/components/dialog} Radix UI Dialog primitive
112
+ * @since 1.0.0
113
+ */
114
+ function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
115
+ return <SheetPrimitive.Root data-slot="sheet" {...props} />;
116
+ }
117
+
118
+ /**
119
+ * SheetTrigger - Button or element that opens the sheet
120
+ *
121
+ * The trigger element that users interact with to open the sheet.
122
+ * Use the `asChild` prop to render as a different element while
123
+ * maintaining the trigger functionality.
124
+ *
125
+ * @component
126
+ * @example
127
+ * ```tsx
128
+ * // As a styled button
129
+ * <SheetTrigger asChild>
130
+ * <Button variant="outline">Open Settings</Button>
131
+ * </SheetTrigger>
132
+ *
133
+ * // As a simple button
134
+ * <SheetTrigger>Click to open</SheetTrigger>
135
+ *
136
+ * // As an icon button
137
+ * <SheetTrigger asChild>
138
+ * <Button size="icon" variant="ghost">
139
+ * <MenuIcon className="h-4 w-4" />
140
+ * </Button>
141
+ * </SheetTrigger>
142
+ * ```
143
+ *
144
+ * @param asChild - When true, merges props with the child element instead of rendering a button
145
+ */
146
+ function SheetTrigger({
147
+ ...props
148
+ }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
149
+ return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />;
150
+ }
151
+
152
+ /**
153
+ * SheetClose - Button that closes the sheet
154
+ *
155
+ * A button that closes the sheet when clicked. Can be placed anywhere
156
+ * within the sheet content. Use the `asChild` prop to render as a
157
+ * different element while maintaining the close functionality.
158
+ *
159
+ * @component
160
+ * @example
161
+ * ```tsx
162
+ * // In footer with styled button
163
+ * <SheetFooter>
164
+ * <SheetClose asChild>
165
+ * <Button variant="outline">Cancel</Button>
166
+ * </SheetClose>
167
+ * <Button type="submit">Save</Button>
168
+ * </SheetFooter>
169
+ *
170
+ * // As simple text button
171
+ * <SheetClose>Close</SheetClose>
172
+ *
173
+ * // Custom close button in content
174
+ * <SheetClose asChild>
175
+ * <Button variant="ghost" size="sm" className="ml-auto">
176
+ * <XIcon className="h-4 w-4" />
177
+ * </Button>
178
+ * </SheetClose>
179
+ * ```
180
+ *
181
+ * @param asChild - When true, merges props with the child element instead of rendering a button
182
+ */
183
+ function SheetClose({
184
+ ...props
185
+ }: React.ComponentProps<typeof SheetPrimitive.Close>) {
186
+ return <SheetPrimitive.Close data-slot="sheet-close" {...props} />;
187
+ }
188
+
189
+ /**
190
+ * SheetPortal - Portal container for sheet content
191
+ *
192
+ * Renders the sheet content in a portal at the end of the document body.
193
+ * This ensures the sheet appears above other content with proper z-index.
194
+ * Usually not used directly - SheetContent handles this automatically.
195
+ *
196
+ * @component
197
+ * @param container - Optional container element to portal into
198
+ */
199
+ function SheetPortal({
200
+ ...props
201
+ }: React.ComponentProps<typeof SheetPrimitive.Portal>) {
202
+ return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />;
203
+ }
204
+
205
+ /**
206
+ * SheetOverlay - Background overlay behind the sheet
207
+ *
208
+ * A semi-transparent overlay that covers the entire viewport behind the sheet.
209
+ * Clicking the overlay closes the sheet. Includes smooth fade animations.
210
+ * Usually not used directly - SheetContent handles this automatically.
211
+ *
212
+ * @component
213
+ * @param className - Additional CSS classes for styling customization
214
+ *
215
+ * @example
216
+ * ```tsx
217
+ * // Custom overlay with different opacity
218
+ * <SheetOverlay className="bg-black/30" />
219
+ * ```
220
+ */
221
+ function SheetOverlay({
222
+ className,
223
+ ...props
224
+ }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
225
+ return (
226
+ <SheetPrimitive.Overlay
227
+ data-slot="sheet-overlay"
228
+ className={cn(
229
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
230
+ className,
231
+ )}
232
+ {...props}
233
+ />
234
+ );
235
+ }
236
+
237
+ /**
238
+ * SheetContent - Main container for sheet content
239
+ *
240
+ * The primary content area of the sheet that slides in from the specified side.
241
+ * Includes automatic overlay, portal rendering, and close button. Contains smooth
242
+ * slide animations and responsive sizing.
243
+ *
244
+ * @component
245
+ * @param side - Which side of the screen the sheet slides in from
246
+ * @param className - Additional CSS classes for styling customization
247
+ * @param children - Content to display inside the sheet
248
+ *
249
+ * @example
250
+ * ```tsx
251
+ * // Default right-side sheet
252
+ * <SheetContent>
253
+ * <SheetHeader>
254
+ * <SheetTitle>Settings</SheetTitle>
255
+ * </SheetHeader>
256
+ * <div className="py-4">
257
+ * Settings content here
258
+ * </div>
259
+ * </SheetContent>
260
+ *
261
+ * // Left-side navigation sheet
262
+ * <SheetContent side="left">
263
+ * <nav>
264
+ * <Button variant="ghost">Dashboard</Button>
265
+ * <Button variant="ghost">Profile</Button>
266
+ * </nav>
267
+ * </SheetContent>
268
+ *
269
+ * // Top sheet with custom height
270
+ * <SheetContent side="top" className="h-[300px]">
271
+ * <SheetHeader>
272
+ * <SheetTitle>Notifications</SheetTitle>
273
+ * </SheetHeader>
274
+ * </SheetContent>
275
+ *
276
+ * // Bottom sheet for mobile actions
277
+ * <SheetContent side="bottom" className="h-[400px]">
278
+ * <div className="grid grid-cols-2 gap-4">
279
+ * <Button>Action 1</Button>
280
+ * <Button>Action 2</Button>
281
+ * </div>
282
+ * </SheetContent>
283
+ * ```
284
+ *
285
+ * @accessibility
286
+ * - Includes built-in close button with proper ARIA labels
287
+ * - Focus trapped within content when open
288
+ * - Supports all keyboard interactions
289
+ */
290
+ function SheetContent({
291
+ className,
292
+ children,
293
+ side = "right",
294
+ ...props
295
+ }: React.ComponentProps<typeof SheetPrimitive.Content> & {
296
+ side?: "top" | "right" | "bottom" | "left";
297
+ }) {
298
+ return (
299
+ <SheetPortal>
300
+ <SheetOverlay />
301
+ <SheetPrimitive.Content
302
+ data-slot="sheet-content"
303
+ className={cn(
304
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
305
+ side === "right" &&
306
+ "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
307
+ side === "left" &&
308
+ "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
309
+ side === "top" &&
310
+ "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
311
+ side === "bottom" &&
312
+ "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
313
+ className,
314
+ )}
315
+ {...props}
316
+ >
317
+ {children}
318
+ <SheetPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none">
319
+ <XIcon className="size-4" />
320
+ <span className="sr-only">Close</span>
321
+ </SheetPrimitive.Close>
322
+ </SheetPrimitive.Content>
323
+ </SheetPortal>
324
+ );
325
+ }
326
+
327
+ /**
328
+ * SheetHeader - Header section for sheet content
329
+ *
330
+ * A container for the sheet's title and description, positioned at the top
331
+ * of the sheet content. Provides consistent spacing and layout for sheet headers.
332
+ *
333
+ * @component
334
+ * @param className - Additional CSS classes for styling customization
335
+ *
336
+ * @example
337
+ * ```tsx
338
+ * <SheetHeader>
339
+ * <SheetTitle>Edit Profile</SheetTitle>
340
+ * <SheetDescription>
341
+ * Make changes to your profile information.
342
+ * </SheetDescription>
343
+ * </SheetHeader>
344
+ *
345
+ * // With custom styling
346
+ * <SheetHeader className="border-b pb-4">
347
+ * <SheetTitle>Settings</SheetTitle>
348
+ * </SheetHeader>
349
+ * ```
350
+ */
351
+ function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
352
+ return (
353
+ <div
354
+ data-slot="sheet-header"
355
+ className={cn("flex flex-col gap-1.5 p-4", className)}
356
+ {...props}
357
+ />
358
+ );
359
+ }
360
+
361
+ /**
362
+ * SheetFooter - Footer section for sheet actions
363
+ *
364
+ * A container for action buttons positioned at the bottom of the sheet content.
365
+ * Uses `mt-auto` to stick to the bottom and provides consistent spacing for buttons.
366
+ *
367
+ * @component
368
+ * @param className - Additional CSS classes for styling customization
369
+ *
370
+ * @example
371
+ * ```tsx
372
+ * <SheetFooter>
373
+ * <SheetClose asChild>
374
+ * <Button variant="outline">Cancel</Button>
375
+ * </SheetClose>
376
+ * <Button type="submit">Save Changes</Button>
377
+ * </SheetFooter>
378
+ *
379
+ * // Single action footer
380
+ * <SheetFooter>
381
+ * <SheetClose asChild>
382
+ * <Button className="w-full">Done</Button>
383
+ * </SheetClose>
384
+ * </SheetFooter>
385
+ *
386
+ * // Custom layout
387
+ * <SheetFooter className="flex-row justify-between">
388
+ * <Button variant="ghost">Reset</Button>
389
+ * <div className="flex gap-2">
390
+ * <SheetClose asChild>
391
+ * <Button variant="outline">Cancel</Button>
392
+ * </SheetClose>
393
+ * <Button>Save</Button>
394
+ * </div>
395
+ * </SheetFooter>
396
+ * ```
397
+ */
398
+ function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
399
+ return (
400
+ <div
401
+ data-slot="sheet-footer"
402
+ className={cn("mt-auto flex flex-col gap-2 p-4", className)}
403
+ {...props}
404
+ />
405
+ );
406
+ }
407
+
408
+ /**
409
+ * SheetTitle - Title element for the sheet
410
+ *
411
+ * The main heading for the sheet content. Provides proper semantic heading
412
+ * and accessibility labeling for screen readers. Should be used within SheetHeader.
413
+ *
414
+ * @component
415
+ * @param className - Additional CSS classes for styling customization
416
+ *
417
+ * @example
418
+ * ```tsx
419
+ * <SheetHeader>
420
+ * <SheetTitle>Edit Profile</SheetTitle>
421
+ * <SheetDescription>Update your profile information.</SheetDescription>
422
+ * </SheetHeader>
423
+ *
424
+ * // With custom styling
425
+ * <SheetTitle className="text-lg text-blue-600">Settings</SheetTitle>
426
+ * ```
427
+ *
428
+ * @accessibility
429
+ * - Automatically provides ARIA labeling for the sheet
430
+ * - Renders as proper heading element
431
+ */
432
+ function SheetTitle({
433
+ className,
434
+ ...props
435
+ }: React.ComponentProps<typeof SheetPrimitive.Title>) {
436
+ return (
437
+ <SheetPrimitive.Title
438
+ data-slot="sheet-title"
439
+ className={cn("text-foreground font-semibold", className)}
440
+ {...props}
441
+ />
442
+ );
443
+ }
444
+
445
+ /**
446
+ * SheetDescription - Description text for the sheet
447
+ *
448
+ * Provides additional context about the sheet's purpose or instructions.
449
+ * Appears below the title with muted styling. Should be used within SheetHeader.
450
+ *
451
+ * @component
452
+ * @param className - Additional CSS classes for styling customization
453
+ *
454
+ * @example
455
+ * ```tsx
456
+ * <SheetHeader>
457
+ * <SheetTitle>Edit Profile</SheetTitle>
458
+ * <SheetDescription>
459
+ * Make changes to your profile here. Click save when you're done.
460
+ * </SheetDescription>
461
+ * </SheetHeader>
462
+ *
463
+ * // Optional description
464
+ * <SheetDescription className="text-orange-600">
465
+ * This action cannot be undone.
466
+ * </SheetDescription>
467
+ * ```
468
+ *
469
+ * @accessibility
470
+ * - Provides additional context for screen readers
471
+ * - Linked to the sheet via ARIA attributes
472
+ */
473
+ function SheetDescription({
474
+ className,
475
+ ...props
476
+ }: React.ComponentProps<typeof SheetPrimitive.Description>) {
477
+ return (
478
+ <SheetPrimitive.Description
479
+ data-slot="sheet-description"
480
+ className={cn("text-muted-foreground text-sm", className)}
481
+ {...props}
482
+ />
483
+ );
484
+ }
485
+
486
+ export {
487
+ Sheet,
488
+ SheetTrigger,
489
+ SheetClose,
490
+ SheetContent,
491
+ SheetHeader,
492
+ SheetFooter,
493
+ SheetTitle,
494
+ SheetDescription,
495
+ };