@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,392 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import {
4
+ Settings,
5
+ HelpCircle,
6
+ Info,
7
+ MoreVertical,
8
+ Plus,
9
+ Calendar,
10
+ } from "lucide-react";
11
+ import { Popover, PopoverContent, PopoverTrigger } from "../popover";
12
+ import { Button } from "../button";
13
+ import { Input } from "../input";
14
+ import { Label } from "../label";
15
+ import {
16
+ Select,
17
+ SelectContent,
18
+ SelectItem,
19
+ SelectTrigger,
20
+ SelectValue,
21
+ } from "../select";
22
+
23
+ const meta = {
24
+ title: "Overlays/Popover",
25
+ component: Popover,
26
+ parameters: {
27
+ layout: "centered",
28
+ docs: {
29
+ description: {
30
+ component:
31
+ "Displays rich content in a portal, triggered by a button. Perfect for forms, help text, or interactive content that doesn't require navigation.",
32
+ },
33
+ },
34
+ },
35
+ tags: ["autodocs"],
36
+ argTypes: {
37
+ open: {
38
+ control: "boolean",
39
+ description: "Controls the open state of the popover",
40
+ },
41
+ defaultOpen: {
42
+ control: "boolean",
43
+ description: "The initial open state for uncontrolled usage",
44
+ },
45
+ modal: {
46
+ control: "boolean",
47
+ description: "Whether the popover should be modal",
48
+ defaultValue: false,
49
+ },
50
+ },
51
+ } satisfies Meta<typeof Popover>;
52
+
53
+ export default meta;
54
+ type Story = StoryObj<typeof meta>;
55
+
56
+ export const Interactive: Story = {
57
+ args: {
58
+ defaultOpen: false,
59
+ modal: false,
60
+ },
61
+ render: (args) => (
62
+ <Popover {...args}>
63
+ <PopoverTrigger asChild>
64
+ <Button variant="outline">Open Popover</Button>
65
+ </PopoverTrigger>
66
+ <PopoverContent className="w-80">
67
+ <div className="grid gap-4">
68
+ <div className="space-y-2">
69
+ <h4 className="font-medium leading-none">Settings</h4>
70
+ <p className="text-sm text-muted-foreground">
71
+ Configure your preferences and options.
72
+ </p>
73
+ </div>
74
+ <div className="grid gap-2">
75
+ <div className="grid gap-2">
76
+ <Label htmlFor="theme">Theme</Label>
77
+ <Select defaultValue="light">
78
+ <SelectTrigger id="theme">
79
+ <SelectValue />
80
+ </SelectTrigger>
81
+ <SelectContent>
82
+ <SelectItem value="light">Light</SelectItem>
83
+ <SelectItem value="dark">Dark</SelectItem>
84
+ <SelectItem value="system">System</SelectItem>
85
+ </SelectContent>
86
+ </Select>
87
+ </div>
88
+ <div className="grid gap-2">
89
+ <Label htmlFor="language">Language</Label>
90
+ <Select defaultValue="en">
91
+ <SelectTrigger id="language">
92
+ <SelectValue />
93
+ </SelectTrigger>
94
+ <SelectContent>
95
+ <SelectItem value="en">English</SelectItem>
96
+ <SelectItem value="es">Spanish</SelectItem>
97
+ <SelectItem value="fr">French</SelectItem>
98
+ <SelectItem value="de">German</SelectItem>
99
+ </SelectContent>
100
+ </Select>
101
+ </div>
102
+ </div>
103
+ <Button size="sm">Save Changes</Button>
104
+ </div>
105
+ </PopoverContent>
106
+ </Popover>
107
+ ),
108
+ };
109
+
110
+ export const Variants: Story = {
111
+ render: () => (
112
+ <div className="grid grid-cols-2 gap-8 place-items-center min-h-[400px]">
113
+ {/* Positioning variants */}
114
+ <div className="space-y-4">
115
+ <h3 className="text-sm font-medium text-center">Positioning</h3>
116
+ <div className="grid grid-cols-2 gap-4">
117
+ <Popover>
118
+ <PopoverTrigger asChild>
119
+ <Button variant="outline" size="sm">
120
+ Top
121
+ </Button>
122
+ </PopoverTrigger>
123
+ <PopoverContent side="top">
124
+ <p className="text-sm">Opens on top</p>
125
+ </PopoverContent>
126
+ </Popover>
127
+
128
+ <Popover>
129
+ <PopoverTrigger asChild>
130
+ <Button variant="outline" size="sm">
131
+ Right
132
+ </Button>
133
+ </PopoverTrigger>
134
+ <PopoverContent side="right">
135
+ <p className="text-sm">Opens on right</p>
136
+ </PopoverContent>
137
+ </Popover>
138
+
139
+ <Popover>
140
+ <PopoverTrigger asChild>
141
+ <Button variant="outline" size="sm">
142
+ Bottom
143
+ </Button>
144
+ </PopoverTrigger>
145
+ <PopoverContent side="bottom">
146
+ <p className="text-sm">Opens on bottom</p>
147
+ </PopoverContent>
148
+ </Popover>
149
+
150
+ <Popover>
151
+ <PopoverTrigger asChild>
152
+ <Button variant="outline" size="sm">
153
+ Left
154
+ </Button>
155
+ </PopoverTrigger>
156
+ <PopoverContent side="left">
157
+ <p className="text-sm">Opens on left</p>
158
+ </PopoverContent>
159
+ </Popover>
160
+ </div>
161
+ </div>
162
+
163
+ {/* Alignment variants */}
164
+ <div className="space-y-4">
165
+ <h3 className="text-sm font-medium text-center">Alignment</h3>
166
+ <div className="grid gap-4">
167
+ <Popover>
168
+ <PopoverTrigger asChild>
169
+ <Button variant="outline" size="sm">
170
+ Align Start
171
+ </Button>
172
+ </PopoverTrigger>
173
+ <PopoverContent align="start">
174
+ <p className="text-sm">Aligned to start</p>
175
+ </PopoverContent>
176
+ </Popover>
177
+
178
+ <Popover>
179
+ <PopoverTrigger asChild>
180
+ <Button variant="outline" size="sm">
181
+ Align Center
182
+ </Button>
183
+ </PopoverTrigger>
184
+ <PopoverContent align="center">
185
+ <p className="text-sm">Aligned to center</p>
186
+ </PopoverContent>
187
+ </Popover>
188
+
189
+ <Popover>
190
+ <PopoverTrigger asChild>
191
+ <Button variant="outline" size="sm">
192
+ Align End
193
+ </Button>
194
+ </PopoverTrigger>
195
+ <PopoverContent align="end">
196
+ <p className="text-sm">Aligned to end</p>
197
+ </PopoverContent>
198
+ </Popover>
199
+ </div>
200
+ </div>
201
+
202
+ {/* Trigger variants */}
203
+ <div className="space-y-4 col-span-2">
204
+ <h3 className="text-sm font-medium text-center">Trigger Types</h3>
205
+ <div className="flex gap-4 justify-center">
206
+ <Popover>
207
+ <PopoverTrigger asChild>
208
+ <Button variant="default">Default Button</Button>
209
+ </PopoverTrigger>
210
+ <PopoverContent>
211
+ <p className="text-sm">Triggered by default button</p>
212
+ </PopoverContent>
213
+ </Popover>
214
+
215
+ <Popover>
216
+ <PopoverTrigger asChild>
217
+ <Button variant="ghost" size="icon">
218
+ <Info className="h-4 w-4" />
219
+ </Button>
220
+ </PopoverTrigger>
221
+ <PopoverContent>
222
+ <p className="text-sm">Triggered by icon button</p>
223
+ </PopoverContent>
224
+ </Popover>
225
+
226
+ <Popover>
227
+ <PopoverTrigger className="text-sm text-muted-foreground hover:text-foreground underline cursor-pointer">
228
+ Text trigger
229
+ </PopoverTrigger>
230
+ <PopoverContent>
231
+ <p className="text-sm">Triggered by text element</p>
232
+ </PopoverContent>
233
+ </Popover>
234
+
235
+ <Popover>
236
+ <PopoverTrigger asChild>
237
+ <div className="cursor-pointer rounded-lg border border-dashed border-border p-2 hover:border-foreground text-sm">
238
+ Custom element
239
+ </div>
240
+ </PopoverTrigger>
241
+ <PopoverContent>
242
+ <p className="text-sm">Triggered by custom element</p>
243
+ </PopoverContent>
244
+ </Popover>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ ),
249
+ };
250
+
251
+ export const InContext: Story = {
252
+ render: () => (
253
+ <div className="space-y-6 p-6 max-w-2xl mx-auto">
254
+ {/* Form with help popover */}
255
+ <div className="space-y-4">
256
+ <h3 className="text-lg font-semibold">API Configuration</h3>
257
+ <div className="grid gap-4">
258
+ <div className="grid gap-2">
259
+ <div className="flex items-center gap-2">
260
+ <Label htmlFor="api-key">API Key</Label>
261
+ <Popover>
262
+ <PopoverTrigger asChild>
263
+ <Button variant="ghost" size="icon" className="h-5 w-5">
264
+ <HelpCircle className="h-3 w-3" />
265
+ <span className="sr-only">Help</span>
266
+ </Button>
267
+ </PopoverTrigger>
268
+ <PopoverContent side="top" className="w-80">
269
+ <div className="space-y-2">
270
+ <h4 className="font-medium">What is an API Key?</h4>
271
+ <p className="text-sm text-muted-foreground">
272
+ An API key is a unique identifier used to authenticate
273
+ requests to our API. Keep it secret and don&apos;t share
274
+ it publicly.
275
+ </p>
276
+ <p className="text-sm text-muted-foreground">
277
+ You can generate a new API key from your account settings.
278
+ </p>
279
+ </div>
280
+ </PopoverContent>
281
+ </Popover>
282
+ </div>
283
+ <Input
284
+ id="api-key"
285
+ type="password"
286
+ placeholder="sk-1234567890abcdef..."
287
+ />
288
+ </div>
289
+
290
+ <div className="grid gap-2">
291
+ <Label htmlFor="endpoint">Endpoint URL</Label>
292
+ <Input id="endpoint" placeholder="https://api.example.com/v1" />
293
+ </div>
294
+ </div>
295
+ </div>
296
+
297
+ {/* Data table with action menu */}
298
+ <div className="space-y-4">
299
+ <h3 className="text-lg font-semibold">Recent Deployments</h3>
300
+ <div className="border rounded-lg">
301
+ <div className="flex items-center justify-between p-4 border-b">
302
+ <div>
303
+ <div className="font-medium">Production Deploy</div>
304
+ <div className="text-sm text-muted-foreground">
305
+ main branch • 2 minutes ago
306
+ </div>
307
+ </div>
308
+ <div className="flex items-center gap-2">
309
+ <div className="px-2 py-1 bg-green-100 text-green-800 text-xs rounded-full">
310
+ Success
311
+ </div>
312
+ <Popover>
313
+ <PopoverTrigger asChild>
314
+ <Button variant="ghost" size="icon">
315
+ <MoreVertical className="h-4 w-4" />
316
+ <span className="sr-only">More options</span>
317
+ </Button>
318
+ </PopoverTrigger>
319
+ <PopoverContent className="w-56 p-1">
320
+ <div className="grid gap-1">
321
+ <Button variant="ghost" size="sm" className="justify-start">
322
+ <Calendar className="mr-2 h-4 w-4" />
323
+ View logs
324
+ </Button>
325
+ <Button variant="ghost" size="sm" className="justify-start">
326
+ <Plus className="mr-2 h-4 w-4" />
327
+ Rollback
328
+ </Button>
329
+ <Button variant="ghost" size="sm" className="justify-start">
330
+ <Settings className="mr-2 h-4 w-4" />
331
+ Configure
332
+ </Button>
333
+ <div className="my-1 h-px bg-border" />
334
+ <Button
335
+ variant="ghost"
336
+ size="sm"
337
+ className="justify-start text-destructive hover:text-destructive"
338
+ >
339
+ Delete
340
+ </Button>
341
+ </div>
342
+ </PopoverContent>
343
+ </Popover>
344
+ </div>
345
+ </div>
346
+
347
+ <div className="flex items-center justify-between p-4">
348
+ <div>
349
+ <div className="font-medium">Staging Deploy</div>
350
+ <div className="text-sm text-muted-foreground">
351
+ feature/new-ui • 1 hour ago
352
+ </div>
353
+ </div>
354
+ <div className="flex items-center gap-2">
355
+ <div className="px-2 py-1 bg-blue-100 text-blue-800 text-xs rounded-full">
356
+ Running
357
+ </div>
358
+ <Popover>
359
+ <PopoverTrigger asChild>
360
+ <Button variant="ghost" size="icon">
361
+ <MoreVertical className="h-4 w-4" />
362
+ <span className="sr-only">More options</span>
363
+ </Button>
364
+ </PopoverTrigger>
365
+ <PopoverContent className="w-56 p-1">
366
+ <div className="grid gap-1">
367
+ <Button variant="ghost" size="sm" className="justify-start">
368
+ <Calendar className="mr-2 h-4 w-4" />
369
+ View logs
370
+ </Button>
371
+ <Button variant="ghost" size="sm" className="justify-start">
372
+ <Settings className="mr-2 h-4 w-4" />
373
+ Configure
374
+ </Button>
375
+ <div className="my-1 h-px bg-border" />
376
+ <Button
377
+ variant="ghost"
378
+ size="sm"
379
+ className="justify-start text-destructive hover:text-destructive"
380
+ >
381
+ Stop deployment
382
+ </Button>
383
+ </div>
384
+ </PopoverContent>
385
+ </Popover>
386
+ </div>
387
+ </div>
388
+ </div>
389
+ </div>
390
+ </div>
391
+ ),
392
+ };
@@ -0,0 +1,218 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import { Progress } from "../progress";
4
+ import { Button } from "../button";
5
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../card";
6
+
7
+ const meta = {
8
+ title: "Data Display/Progress",
9
+ component: Progress,
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ description: {
14
+ component:
15
+ "A progress bar component built on Radix UI Progress. Displays the completion progress of a task or process with smooth transitions and accessibility features.",
16
+ },
17
+ },
18
+ },
19
+ tags: ["autodocs"],
20
+ argTypes: {
21
+ value: {
22
+ control: { type: "range", min: 0, max: 100, step: 1 },
23
+ description: "The progress value from 0 to 100. Undefined shows no progress.",
24
+ },
25
+ className: {
26
+ control: { type: "text" },
27
+ description: "Additional CSS classes for styling customization",
28
+ },
29
+ },
30
+ } satisfies Meta<typeof Progress>;
31
+
32
+ export default meta;
33
+ type Story = StoryObj<typeof meta>;
34
+
35
+ export const Interactive: Story = {
36
+ args: {
37
+ value: 60,
38
+ },
39
+ render: (args) => (
40
+ <div className="w-[400px] space-y-4">
41
+ <Progress {...args} />
42
+ <div className="text-center text-sm text-muted-foreground">
43
+ Adjust the progress value using the controls above
44
+ </div>
45
+ </div>
46
+ ),
47
+ };
48
+
49
+ export const Variants: Story = {
50
+ render: () => (
51
+ <div className="w-[400px] space-y-6">
52
+ <div className="space-y-4">
53
+ <div className="space-y-2">
54
+ <p className="text-sm font-medium">States</p>
55
+ <div className="space-y-3">
56
+ <div className="space-y-1">
57
+ <span className="text-xs text-muted-foreground">Empty (0%)</span>
58
+ <Progress value={0} />
59
+ </div>
60
+ <div className="space-y-1">
61
+ <span className="text-xs text-muted-foreground">In Progress (45%)</span>
62
+ <Progress value={45} />
63
+ </div>
64
+ <div className="space-y-1">
65
+ <span className="text-xs text-muted-foreground">Complete (100%)</span>
66
+ <Progress value={100} />
67
+ </div>
68
+ </div>
69
+ </div>
70
+
71
+ <div className="space-y-2">
72
+ <p className="text-sm font-medium">Sizes</p>
73
+ <div className="space-y-3">
74
+ <div className="space-y-1">
75
+ <span className="text-xs text-muted-foreground">Extra Small (h-1)</span>
76
+ <Progress value={60} className="h-1" />
77
+ </div>
78
+ <div className="space-y-1">
79
+ <span className="text-xs text-muted-foreground">Default (h-2)</span>
80
+ <Progress value={60} />
81
+ </div>
82
+ <div className="space-y-1">
83
+ <span className="text-xs text-muted-foreground">Large (h-4)</span>
84
+ <Progress value={60} className="h-4" />
85
+ </div>
86
+ </div>
87
+ </div>
88
+
89
+ <div className="space-y-2">
90
+ <p className="text-sm font-medium">Custom Colors</p>
91
+ <div className="space-y-3">
92
+ <div className="space-y-1">
93
+ <span className="text-xs text-muted-foreground">Success</span>
94
+ <Progress value={100} className="[&>div]:bg-green-500" />
95
+ </div>
96
+ <div className="space-y-1">
97
+ <span className="text-xs text-muted-foreground">Warning</span>
98
+ <Progress value={75} className="[&>div]:bg-yellow-500" />
99
+ </div>
100
+ <div className="space-y-1">
101
+ <span className="text-xs text-muted-foreground">Danger</span>
102
+ <Progress value={30} className="[&>div]:bg-red-500" />
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ ),
109
+ };
110
+
111
+ export const InContext: Story = {
112
+ render: function ProgressInContext() {
113
+ const [uploadProgress, setUploadProgress] = React.useState(0);
114
+ const [isUploading, setIsUploading] = React.useState(false);
115
+ const [currentStep, setCurrentStep] = React.useState(2);
116
+
117
+ const simulateUpload = () => {
118
+ setIsUploading(true);
119
+ setUploadProgress(0);
120
+
121
+ const interval = setInterval(() => {
122
+ setUploadProgress((prev) => {
123
+ if (prev >= 100) {
124
+ clearInterval(interval);
125
+ setIsUploading(false);
126
+ return 100;
127
+ }
128
+ const increment = Math.random() * 8 + 2;
129
+ return Math.min(100, prev + increment);
130
+ });
131
+ }, 150);
132
+ };
133
+
134
+ const totalSteps = 4;
135
+ const stepProgress = (currentStep / totalSteps) * 100;
136
+
137
+ return (
138
+ <div className="w-[500px] space-y-6">
139
+ {/* File Upload Progress */}
140
+ <Card>
141
+ <CardHeader>
142
+ <CardTitle>File Upload</CardTitle>
143
+ <CardDescription>
144
+ document.pdf • 2.4 MB
145
+ </CardDescription>
146
+ </CardHeader>
147
+ <CardContent className="space-y-4">
148
+ <div className="space-y-2">
149
+ <div className="flex justify-between text-sm">
150
+ <span>
151
+ {isUploading
152
+ ? "Uploading..."
153
+ : uploadProgress === 100
154
+ ? "Upload complete"
155
+ : "Ready to upload"}
156
+ </span>
157
+ <span className="text-muted-foreground">
158
+ {Math.round(uploadProgress)}%
159
+ </span>
160
+ </div>
161
+ <Progress value={uploadProgress} />
162
+ </div>
163
+ {!isUploading && uploadProgress !== 100 && (
164
+ <Button onClick={simulateUpload} className="w-full">
165
+ Upload File
166
+ </Button>
167
+ )}
168
+ {uploadProgress === 100 && (
169
+ <Button
170
+ variant="outline"
171
+ onClick={() => setUploadProgress(0)}
172
+ className="w-full"
173
+ >
174
+ Upload Another
175
+ </Button>
176
+ )}
177
+ </CardContent>
178
+ </Card>
179
+
180
+ {/* Multi-Step Process */}
181
+ <Card>
182
+ <CardHeader>
183
+ <CardTitle>Setup Process</CardTitle>
184
+ <CardDescription>
185
+ Complete your account setup
186
+ </CardDescription>
187
+ </CardHeader>
188
+ <CardContent className="space-y-4">
189
+ <div className="space-y-2">
190
+ <div className="flex justify-between text-sm">
191
+ <span className="font-medium">Step {currentStep} of {totalSteps}</span>
192
+ <span className="text-muted-foreground">Profile Information</span>
193
+ </div>
194
+ <Progress value={stepProgress} />
195
+ </div>
196
+ <div className="flex justify-between">
197
+ <Button
198
+ variant="outline"
199
+ size="sm"
200
+ onClick={() => setCurrentStep(Math.max(1, currentStep - 1))}
201
+ disabled={currentStep === 1}
202
+ >
203
+ Previous
204
+ </Button>
205
+ <Button
206
+ size="sm"
207
+ onClick={() => setCurrentStep(Math.min(totalSteps, currentStep + 1))}
208
+ disabled={currentStep === totalSteps}
209
+ >
210
+ {currentStep === totalSteps ? "Complete" : "Next"}
211
+ </Button>
212
+ </div>
213
+ </CardContent>
214
+ </Card>
215
+ </div>
216
+ );
217
+ },
218
+ };