@gv-tech/design-system 1.1.0 → 2.0.0

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 (347) hide show
  1. package/.agent/skills/dogfood-components/SKILL.md +34 -0
  2. package/.agent/skills/maintain-component/SKILL.md +42 -0
  3. package/.github/workflows/release-please.yml +2 -2
  4. package/.prettierignore +2 -0
  5. package/.release-please-manifest.json +3 -0
  6. package/CHANGELOG.md +90 -0
  7. package/dist/App.d.ts.map +1 -1
  8. package/dist/components/docs/Footer.d.ts.map +1 -1
  9. package/dist/components/docs/PropsTable.d.ts +13 -0
  10. package/dist/components/docs/PropsTable.d.ts.map +1 -0
  11. package/dist/components/docs/Sidebar.d.ts.map +1 -1
  12. package/dist/components/docs/index.d.ts +1 -0
  13. package/dist/components/docs/index.d.ts.map +1 -1
  14. package/dist/components/ui/accordion.test.d.ts +2 -0
  15. package/dist/components/ui/accordion.test.d.ts.map +1 -0
  16. package/dist/components/ui/alert-dialog.test.d.ts +2 -0
  17. package/dist/components/ui/alert-dialog.test.d.ts.map +1 -0
  18. package/dist/components/ui/alert.test.d.ts +2 -0
  19. package/dist/components/ui/alert.test.d.ts.map +1 -0
  20. package/dist/components/ui/aspect-ratio.test.d.ts +2 -0
  21. package/dist/components/ui/aspect-ratio.test.d.ts.map +1 -0
  22. package/dist/components/ui/avatar.test.d.ts +2 -0
  23. package/dist/components/ui/avatar.test.d.ts.map +1 -0
  24. package/dist/components/ui/badge.test.d.ts +2 -0
  25. package/dist/components/ui/badge.test.d.ts.map +1 -0
  26. package/dist/components/ui/breadcrumb.test.d.ts +2 -0
  27. package/dist/components/ui/breadcrumb.test.d.ts.map +1 -0
  28. package/dist/components/ui/button.test.d.ts +2 -0
  29. package/dist/components/ui/button.test.d.ts.map +1 -0
  30. package/dist/components/ui/calendar.d.ts.map +1 -1
  31. package/dist/components/ui/calendar.test.d.ts +2 -0
  32. package/dist/components/ui/calendar.test.d.ts.map +1 -0
  33. package/dist/components/ui/card.test.d.ts +2 -0
  34. package/dist/components/ui/card.test.d.ts.map +1 -0
  35. package/dist/components/ui/carousel.test.d.ts +2 -0
  36. package/dist/components/ui/carousel.test.d.ts.map +1 -0
  37. package/dist/components/ui/chart.test.d.ts +2 -0
  38. package/dist/components/ui/chart.test.d.ts.map +1 -0
  39. package/dist/components/ui/checkbox.test.d.ts +2 -0
  40. package/dist/components/ui/checkbox.test.d.ts.map +1 -0
  41. package/dist/components/ui/collapsible.test.d.ts +2 -0
  42. package/dist/components/ui/collapsible.test.d.ts.map +1 -0
  43. package/dist/components/ui/command.test.d.ts +2 -0
  44. package/dist/components/ui/command.test.d.ts.map +1 -0
  45. package/dist/components/ui/context-menu.test.d.ts +2 -0
  46. package/dist/components/ui/context-menu.test.d.ts.map +1 -0
  47. package/dist/components/ui/dialog.test.d.ts +2 -0
  48. package/dist/components/ui/dialog.test.d.ts.map +1 -0
  49. package/dist/components/ui/drawer.test.d.ts +2 -0
  50. package/dist/components/ui/drawer.test.d.ts.map +1 -0
  51. package/dist/components/ui/dropdown-menu.test.d.ts +2 -0
  52. package/dist/components/ui/dropdown-menu.test.d.ts.map +1 -0
  53. package/dist/components/ui/form.test.d.ts +2 -0
  54. package/dist/components/ui/form.test.d.ts.map +1 -0
  55. package/dist/components/ui/hover-card.test.d.ts +2 -0
  56. package/dist/components/ui/hover-card.test.d.ts.map +1 -0
  57. package/dist/components/ui/input.test.d.ts +2 -0
  58. package/dist/components/ui/input.test.d.ts.map +1 -0
  59. package/dist/components/ui/label.test.d.ts +2 -0
  60. package/dist/components/ui/label.test.d.ts.map +1 -0
  61. package/dist/components/ui/menubar.test.d.ts +2 -0
  62. package/dist/components/ui/menubar.test.d.ts.map +1 -0
  63. package/dist/components/ui/navigation-menu.test.d.ts +2 -0
  64. package/dist/components/ui/navigation-menu.test.d.ts.map +1 -0
  65. package/dist/components/ui/pagination.test.d.ts +2 -0
  66. package/dist/components/ui/pagination.test.d.ts.map +1 -0
  67. package/dist/components/ui/popover.test.d.ts +2 -0
  68. package/dist/components/ui/popover.test.d.ts.map +1 -0
  69. package/dist/components/ui/progress.d.ts.map +1 -1
  70. package/dist/components/ui/progress.test.d.ts +2 -0
  71. package/dist/components/ui/progress.test.d.ts.map +1 -0
  72. package/dist/components/ui/radio-group.test.d.ts +2 -0
  73. package/dist/components/ui/radio-group.test.d.ts.map +1 -0
  74. package/dist/components/ui/resizable.test.d.ts +2 -0
  75. package/dist/components/ui/resizable.test.d.ts.map +1 -0
  76. package/dist/components/ui/scroll-area.test.d.ts +2 -0
  77. package/dist/components/ui/scroll-area.test.d.ts.map +1 -0
  78. package/dist/components/ui/search.d.ts +16 -0
  79. package/dist/components/ui/search.d.ts.map +1 -0
  80. package/dist/components/ui/search.test.d.ts +2 -0
  81. package/dist/components/ui/search.test.d.ts.map +1 -0
  82. package/dist/components/ui/select.test.d.ts +2 -0
  83. package/dist/components/ui/select.test.d.ts.map +1 -0
  84. package/dist/components/ui/separator.test.d.ts +2 -0
  85. package/dist/components/ui/separator.test.d.ts.map +1 -0
  86. package/dist/components/ui/sheet.test.d.ts +2 -0
  87. package/dist/components/ui/sheet.test.d.ts.map +1 -0
  88. package/dist/components/ui/skeleton.test.d.ts +2 -0
  89. package/dist/components/ui/skeleton.test.d.ts.map +1 -0
  90. package/dist/components/ui/slider.test.d.ts +2 -0
  91. package/dist/components/ui/slider.test.d.ts.map +1 -0
  92. package/dist/components/ui/sonner.test.d.ts +2 -0
  93. package/dist/components/ui/sonner.test.d.ts.map +1 -0
  94. package/dist/components/ui/switch.test.d.ts +2 -0
  95. package/dist/components/ui/switch.test.d.ts.map +1 -0
  96. package/dist/components/ui/table.test.d.ts +2 -0
  97. package/dist/components/ui/table.test.d.ts.map +1 -0
  98. package/dist/components/ui/tabs.test.d.ts +2 -0
  99. package/dist/components/ui/tabs.test.d.ts.map +1 -0
  100. package/dist/components/ui/textarea.test.d.ts +2 -0
  101. package/dist/components/ui/textarea.test.d.ts.map +1 -0
  102. package/dist/components/ui/theme-toggle.d.ts +17 -0
  103. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  104. package/dist/components/ui/toast.test.d.ts +2 -0
  105. package/dist/components/ui/toast.test.d.ts.map +1 -0
  106. package/dist/components/ui/toggle-group.test.d.ts +2 -0
  107. package/dist/components/ui/toggle-group.test.d.ts.map +1 -0
  108. package/dist/components/ui/toggle.test.d.ts +2 -0
  109. package/dist/components/ui/toggle.test.d.ts.map +1 -0
  110. package/dist/components/ui/tooltip.test.d.ts +2 -0
  111. package/dist/components/ui/tooltip.test.d.ts.map +1 -0
  112. package/dist/index.cjs.js +3 -3
  113. package/dist/index.cjs.js.map +1 -1
  114. package/dist/index.d.ts +2 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.es.js +978 -860
  117. package/dist/index.es.js.map +1 -1
  118. package/dist/lib/tokens.d.ts +54 -0
  119. package/dist/lib/tokens.d.ts.map +1 -0
  120. package/dist/pages/ColorTokensDocs.d.ts +2 -0
  121. package/dist/pages/ColorTokensDocs.d.ts.map +1 -0
  122. package/dist/pages/GettingStarted.d.ts.map +1 -1
  123. package/dist/pages/components/AccordionDocs.d.ts.map +1 -1
  124. package/dist/pages/components/AlertDialogDocs.d.ts.map +1 -1
  125. package/dist/pages/components/AlertDocs.d.ts.map +1 -1
  126. package/dist/pages/components/AspectRatioDocs.d.ts.map +1 -1
  127. package/dist/pages/components/AvatarDocs.d.ts.map +1 -1
  128. package/dist/pages/components/BadgeDocs.d.ts.map +1 -1
  129. package/dist/pages/components/BreadcrumbDocs.d.ts.map +1 -1
  130. package/dist/pages/components/ButtonDocs.d.ts.map +1 -1
  131. package/dist/pages/components/CalendarDocs.d.ts.map +1 -1
  132. package/dist/pages/components/CardDocs.d.ts.map +1 -1
  133. package/dist/pages/components/CarouselDocs.d.ts.map +1 -1
  134. package/dist/pages/components/ChartDocs.d.ts.map +1 -1
  135. package/dist/pages/components/CheckboxDocs.d.ts.map +1 -1
  136. package/dist/pages/components/CollapsibleDocs.d.ts.map +1 -1
  137. package/dist/pages/components/CommandDocs.d.ts.map +1 -1
  138. package/dist/pages/components/ContextMenuDocs.d.ts.map +1 -1
  139. package/dist/pages/components/DialogDocs.d.ts.map +1 -1
  140. package/dist/pages/components/DrawerDocs.d.ts.map +1 -1
  141. package/dist/pages/components/DropdownMenuDocs.d.ts.map +1 -1
  142. package/dist/pages/components/FormDocs.d.ts.map +1 -1
  143. package/dist/pages/components/HoverCardDocs.d.ts.map +1 -1
  144. package/dist/pages/components/InputDocs.d.ts.map +1 -1
  145. package/dist/pages/components/LabelDocs.d.ts.map +1 -1
  146. package/dist/pages/components/MenubarDocs.d.ts.map +1 -1
  147. package/dist/pages/components/NavigationMenuDocs.d.ts.map +1 -1
  148. package/dist/pages/components/PaginationDocs.d.ts.map +1 -1
  149. package/dist/pages/components/PopoverDocs.d.ts.map +1 -1
  150. package/dist/pages/components/ProgressDocs.d.ts.map +1 -1
  151. package/dist/pages/components/RadioGroupDocs.d.ts.map +1 -1
  152. package/dist/pages/components/ResizableDocs.d.ts.map +1 -1
  153. package/dist/pages/components/ScrollAreaDocs.d.ts.map +1 -1
  154. package/dist/pages/components/SearchDocs.d.ts +2 -0
  155. package/dist/pages/components/SearchDocs.d.ts.map +1 -0
  156. package/dist/pages/components/SelectDocs.d.ts.map +1 -1
  157. package/dist/pages/components/SeparatorDocs.d.ts.map +1 -1
  158. package/dist/pages/components/SheetDocs.d.ts.map +1 -1
  159. package/dist/pages/components/SkeletonDocs.d.ts.map +1 -1
  160. package/dist/pages/components/SliderDocs.d.ts.map +1 -1
  161. package/dist/pages/components/SonnerDocs.d.ts.map +1 -1
  162. package/dist/pages/components/SwitchDocs.d.ts.map +1 -1
  163. package/dist/pages/components/TableDocs.d.ts.map +1 -1
  164. package/dist/pages/components/TabsDocs.d.ts.map +1 -1
  165. package/dist/pages/components/TextareaDocs.d.ts.map +1 -1
  166. package/dist/pages/components/ThemeToggleDocs.d.ts +2 -0
  167. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -0
  168. package/dist/pages/components/ToastDocs.d.ts.map +1 -1
  169. package/dist/pages/components/ToggleDocs.d.ts.map +1 -1
  170. package/dist/pages/components/ToggleGroupDocs.d.ts.map +1 -1
  171. package/dist/pages/components/TooltipDocs.d.ts.map +1 -1
  172. package/dist/pages/index.d.ts +3 -0
  173. package/dist/pages/index.d.ts.map +1 -1
  174. package/dist/registry/accordion.test.json +13 -0
  175. package/dist/registry/alert-dialog.test.json +13 -0
  176. package/dist/registry/alert.test.json +13 -0
  177. package/dist/registry/aspect-ratio.test.json +13 -0
  178. package/dist/registry/avatar.test.json +13 -0
  179. package/dist/registry/badge.test.json +13 -0
  180. package/dist/registry/breadcrumb.test.json +13 -0
  181. package/dist/registry/button.test.json +13 -0
  182. package/dist/registry/calendar.json +1 -1
  183. package/dist/registry/calendar.test.json +13 -0
  184. package/dist/registry/card.test.json +13 -0
  185. package/dist/registry/carousel.test.json +13 -0
  186. package/dist/registry/chart.test.json +13 -0
  187. package/dist/registry/checkbox.test.json +13 -0
  188. package/dist/registry/collapsible.test.json +13 -0
  189. package/dist/registry/command.test.json +13 -0
  190. package/dist/registry/context-menu.test.json +13 -0
  191. package/dist/registry/dialog.test.json +13 -0
  192. package/dist/registry/drawer.test.json +13 -0
  193. package/dist/registry/dropdown-menu.test.json +13 -0
  194. package/dist/registry/form.test.json +13 -0
  195. package/dist/registry/hover-card.test.json +13 -0
  196. package/dist/registry/index.json +336 -0
  197. package/dist/registry/input.test.json +13 -0
  198. package/dist/registry/label.test.json +13 -0
  199. package/dist/registry/menubar.test.json +13 -0
  200. package/dist/registry/navigation-menu.test.json +13 -0
  201. package/dist/registry/pagination.test.json +13 -0
  202. package/dist/registry/popover.test.json +13 -0
  203. package/dist/registry/progress.json +1 -1
  204. package/dist/registry/progress.test.json +13 -0
  205. package/dist/registry/radio-group.test.json +13 -0
  206. package/dist/registry/resizable.test.json +13 -0
  207. package/dist/registry/scroll-area.test.json +13 -0
  208. package/dist/registry/search.json +13 -0
  209. package/dist/registry/search.test.json +13 -0
  210. package/dist/registry/select.test.json +13 -0
  211. package/dist/registry/separator.test.json +13 -0
  212. package/dist/registry/sheet.test.json +13 -0
  213. package/dist/registry/skeleton.test.json +13 -0
  214. package/dist/registry/slider.test.json +13 -0
  215. package/dist/registry/sonner.test.json +13 -0
  216. package/dist/registry/switch.test.json +13 -0
  217. package/dist/registry/table.test.json +13 -0
  218. package/dist/registry/tabs.test.json +13 -0
  219. package/dist/registry/textarea.test.json +13 -0
  220. package/dist/registry/theme-toggle.json +13 -0
  221. package/dist/registry/toast.test.json +13 -0
  222. package/dist/registry/toggle-group.test.json +13 -0
  223. package/dist/registry/toggle.test.json +13 -0
  224. package/dist/registry/tooltip.test.json +13 -0
  225. package/dist/setupTests.d.ts +2 -0
  226. package/dist/setupTests.d.ts.map +1 -0
  227. package/dist/{vendor-ZhQmrf1h.mjs → vendor-BLvpSabH.mjs} +7238 -7136
  228. package/dist/vendor-BLvpSabH.mjs.map +1 -0
  229. package/dist/vendor-n4WFhtJT.js +73 -0
  230. package/dist/vendor-n4WFhtJT.js.map +1 -0
  231. package/eslint.config.mjs +8 -81
  232. package/package.json +44 -46
  233. package/release-please-config.json +36 -0
  234. package/src/App.tsx +70 -7
  235. package/src/components/docs/Footer.tsx +51 -30
  236. package/src/components/docs/PropsTable.tsx +43 -0
  237. package/src/components/docs/Sidebar.tsx +57 -71
  238. package/src/components/docs/index.ts +1 -0
  239. package/src/components/ui/accordion.test.tsx +86 -0
  240. package/src/components/ui/alert-dialog.test.tsx +89 -0
  241. package/src/components/ui/alert.test.tsx +33 -0
  242. package/src/components/ui/aspect-ratio.test.tsx +34 -0
  243. package/src/components/ui/avatar.test.tsx +33 -0
  244. package/src/components/ui/badge.test.tsx +24 -0
  245. package/src/components/ui/breadcrumb.test.tsx +55 -0
  246. package/src/components/ui/button.test.tsx +62 -0
  247. package/src/components/ui/calendar.test.tsx +23 -0
  248. package/src/components/ui/calendar.tsx +14 -10
  249. package/src/components/ui/card.test.tsx +35 -0
  250. package/src/components/ui/carousel.test.tsx +37 -0
  251. package/src/components/ui/chart.test.tsx +62 -0
  252. package/src/components/ui/checkbox.test.tsx +30 -0
  253. package/src/components/ui/collapsible.test.tsx +51 -0
  254. package/src/components/ui/command.test.tsx +79 -0
  255. package/src/components/ui/context-menu.test.tsx +37 -0
  256. package/src/components/ui/dialog.test.tsx +66 -0
  257. package/src/components/ui/drawer.test.tsx +68 -0
  258. package/src/components/ui/dropdown-menu.test.tsx +93 -0
  259. package/src/components/ui/form.test.tsx +85 -0
  260. package/src/components/ui/hover-card.test.tsx +48 -0
  261. package/src/components/ui/input.test.tsx +33 -0
  262. package/src/components/ui/label.test.tsx +27 -0
  263. package/src/components/ui/menubar.test.tsx +92 -0
  264. package/src/components/ui/navigation-menu.test.tsx +53 -0
  265. package/src/components/ui/pagination.test.tsx +57 -0
  266. package/src/components/ui/popover.test.tsx +31 -0
  267. package/src/components/ui/progress.test.tsx +18 -0
  268. package/src/components/ui/progress.tsx +1 -0
  269. package/src/components/ui/radio-group.test.tsx +39 -0
  270. package/src/components/ui/resizable.test.tsx +23 -0
  271. package/src/components/ui/scroll-area.test.tsx +15 -0
  272. package/src/components/ui/search.test.tsx +75 -0
  273. package/src/components/ui/search.tsx +93 -0
  274. package/src/components/ui/select.test.tsx +42 -0
  275. package/src/components/ui/separator.test.tsx +16 -0
  276. package/src/components/ui/sheet.test.tsx +48 -0
  277. package/src/components/ui/skeleton.test.tsx +13 -0
  278. package/src/components/ui/slider.test.tsx +18 -0
  279. package/src/components/ui/sonner.test.tsx +13 -0
  280. package/src/components/ui/switch.test.tsx +22 -0
  281. package/src/components/ui/table.test.tsx +29 -0
  282. package/src/components/ui/tabs.test.tsx +43 -0
  283. package/src/components/ui/textarea.test.tsx +21 -0
  284. package/src/components/ui/theme-toggle.tsx +108 -0
  285. package/src/components/ui/toast.test.tsx +42 -0
  286. package/src/components/ui/toggle-group.test.tsx +40 -0
  287. package/src/components/ui/toggle.test.tsx +21 -0
  288. package/src/components/ui/tooltip.test.tsx +25 -0
  289. package/src/globals.css +39 -34
  290. package/src/index.ts +2 -0
  291. package/src/lib/tokens.ts +54 -0
  292. package/src/pages/ColorTokensDocs.tsx +181 -0
  293. package/src/pages/GettingStarted.tsx +55 -35
  294. package/src/pages/components/AccordionDocs.tsx +109 -0
  295. package/src/pages/components/AlertDialogDocs.tsx +88 -0
  296. package/src/pages/components/AlertDocs.tsx +20 -0
  297. package/src/pages/components/AspectRatioDocs.tsx +21 -0
  298. package/src/pages/components/AvatarDocs.tsx +48 -0
  299. package/src/pages/components/BadgeDocs.tsx +20 -0
  300. package/src/pages/components/BreadcrumbDocs.tsx +33 -0
  301. package/src/pages/components/ButtonDocs.tsx +43 -0
  302. package/src/pages/components/CalendarDocs.tsx +43 -0
  303. package/src/pages/components/CardDocs.tsx +20 -0
  304. package/src/pages/components/CarouselDocs.tsx +31 -0
  305. package/src/pages/components/ChartDocs.tsx +131 -101
  306. package/src/pages/components/CheckboxDocs.tsx +58 -0
  307. package/src/pages/components/CollapsibleDocs.tsx +51 -0
  308. package/src/pages/components/CommandDocs.tsx +109 -0
  309. package/src/pages/components/ContextMenuDocs.tsx +65 -0
  310. package/src/pages/components/DialogDocs.tsx +98 -11
  311. package/src/pages/components/DrawerDocs.tsx +210 -15
  312. package/src/pages/components/DropdownMenuDocs.tsx +273 -11
  313. package/src/pages/components/FormDocs.tsx +149 -70
  314. package/src/pages/components/HoverCardDocs.tsx +82 -5
  315. package/src/pages/components/InputDocs.tsx +51 -20
  316. package/src/pages/components/LabelDocs.tsx +40 -9
  317. package/src/pages/components/MenubarDocs.tsx +191 -18
  318. package/src/pages/components/NavigationMenuDocs.tsx +147 -49
  319. package/src/pages/components/PaginationDocs.tsx +27 -2
  320. package/src/pages/components/PopoverDocs.tsx +124 -2
  321. package/src/pages/components/ProgressDocs.tsx +54 -24
  322. package/src/pages/components/RadioGroupDocs.tsx +95 -1
  323. package/src/pages/components/ResizableDocs.tsx +102 -75
  324. package/src/pages/components/ScrollAreaDocs.tsx +64 -51
  325. package/src/pages/components/SearchDocs.tsx +194 -0
  326. package/src/pages/components/SelectDocs.tsx +119 -48
  327. package/src/pages/components/SeparatorDocs.tsx +37 -2
  328. package/src/pages/components/SheetDocs.tsx +112 -38
  329. package/src/pages/components/SkeletonDocs.tsx +16 -20
  330. package/src/pages/components/SliderDocs.tsx +96 -10
  331. package/src/pages/components/SonnerDocs.tsx +89 -61
  332. package/src/pages/components/SwitchDocs.tsx +65 -10
  333. package/src/pages/components/TableDocs.tsx +89 -14
  334. package/src/pages/components/TabsDocs.tsx +149 -37
  335. package/src/pages/components/TextareaDocs.tsx +38 -32
  336. package/src/pages/components/ThemeToggleDocs.tsx +122 -0
  337. package/src/pages/components/ToastDocs.tsx +104 -65
  338. package/src/pages/components/ToggleDocs.tsx +55 -38
  339. package/src/pages/components/ToggleGroupDocs.tsx +96 -58
  340. package/src/pages/components/TooltipDocs.tsx +112 -3
  341. package/src/pages/index.ts +3 -0
  342. package/src/setupTests.ts +47 -0
  343. package/temp.md +292 -0
  344. package/vitest.config.ts +4 -0
  345. package/dist/vendor-CMSUBoIg.js +0 -73
  346. package/dist/vendor-CMSUBoIg.js.map +0 -1
  347. package/dist/vendor-ZhQmrf1h.mjs.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
3
4
  import { AlertCircle, Terminal } from 'lucide-react';
4
5
 
@@ -40,6 +41,25 @@ export function AlertDocs() {
40
41
  <AlertDescription>Your session has expired. Please log in again.</AlertDescription>
41
42
  </Alert>
42
43
  </ComponentShowcase>
44
+
45
+ <div className="space-y-4">
46
+ <h3 className="text-xl font-semibold">Props</h3>
47
+ <PropsTable
48
+ props={[
49
+ {
50
+ name: 'variant',
51
+ type: '"default" | "destructive"',
52
+ defaultValue: '"default"',
53
+ description: 'The visual style of the alert.',
54
+ },
55
+ {
56
+ name: 'className',
57
+ type: 'string',
58
+ description: 'Additional CSS classes to apply.',
59
+ },
60
+ ]}
61
+ />
62
+ </div>
43
63
  </ComponentSection>
44
64
  );
45
65
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { AspectRatio } from '@/components/ui/aspect-ratio';
3
4
 
4
5
  export function AspectRatioDocs() {
@@ -59,6 +60,26 @@ export function AspectRatioDocs() {
59
60
  </AspectRatio>
60
61
  </div>
61
62
  </ComponentShowcase>
63
+
64
+ <div className="space-y-4">
65
+ <h3 className="text-xl font-semibold">Props</h3>
66
+ <PropsTable
67
+ props={[
68
+ {
69
+ name: 'ratio',
70
+ type: 'number',
71
+ defaultValue: '1',
72
+ description: 'The desired aspect ratio.',
73
+ },
74
+ {
75
+ name: 'asChild',
76
+ type: 'boolean',
77
+ defaultValue: 'false',
78
+ description: 'Change the default rendered element for the one passed as a child.',
79
+ },
80
+ ]}
81
+ />
82
+ </div>
62
83
  </ComponentSection>
63
84
  );
64
85
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
3
4
 
4
5
  export function AvatarDocs() {
@@ -29,6 +30,53 @@ export function AvatarDocs() {
29
30
  <AvatarFallback>JD</AvatarFallback>
30
31
  </Avatar>
31
32
  </ComponentShowcase>
33
+
34
+ <div className="space-y-4">
35
+ <h3 className="text-xl font-semibold">Props</h3>
36
+
37
+ <h4 className="text-lg font-medium mt-6">Avatar (Root)</h4>
38
+ <PropsTable
39
+ props={[
40
+ {
41
+ name: 'className',
42
+ type: 'string',
43
+ description: 'Additional CSS classes.',
44
+ },
45
+ ]}
46
+ />
47
+
48
+ <h4 className="text-lg font-medium mt-6">AvatarImage</h4>
49
+ <PropsTable
50
+ props={[
51
+ {
52
+ name: 'src',
53
+ type: 'string',
54
+ description: 'The URL of the image.',
55
+ },
56
+ {
57
+ name: 'alt',
58
+ type: 'string',
59
+ description: 'The alternative text for the image.',
60
+ },
61
+ {
62
+ name: 'onLoadingStatusChange',
63
+ type: '(status: "idle" | "loading" | "loaded" | "error") => void',
64
+ description: 'Event handler called when the loading status of the image changes.',
65
+ },
66
+ ]}
67
+ />
68
+
69
+ <h4 className="text-lg font-medium mt-6">AvatarFallback</h4>
70
+ <PropsTable
71
+ props={[
72
+ {
73
+ name: 'delayMs',
74
+ type: 'number',
75
+ description: 'Useful for delaying rendering so it only appears for those with slower connections.',
76
+ },
77
+ ]}
78
+ />
79
+ </div>
32
80
  </ComponentSection>
33
81
  );
34
82
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Badge } from '@/components/ui/badge';
3
4
 
4
5
  export function BadgeDocs() {
@@ -31,6 +32,25 @@ export function BadgeDocs() {
31
32
  <Badge variant="destructive">Error</Badge>
32
33
  <Badge variant="outline">v1.0.0</Badge>
33
34
  </ComponentShowcase>
35
+
36
+ <div className="space-y-4">
37
+ <h3 className="text-xl font-semibold">Props</h3>
38
+ <PropsTable
39
+ props={[
40
+ {
41
+ name: 'variant',
42
+ type: '"default" | "secondary" | "destructive" | "outline"',
43
+ defaultValue: '"default"',
44
+ description: 'The visual style of the badge.',
45
+ },
46
+ {
47
+ name: 'className',
48
+ type: 'string',
49
+ description: 'Additional CSS classes to apply.',
50
+ },
51
+ ]}
52
+ />
53
+ </div>
34
54
  </ComponentSection>
35
55
  );
36
56
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import {
3
4
  Breadcrumb,
4
5
  BreadcrumbItem,
@@ -49,6 +50,38 @@ export function BreadcrumbDocs() {
49
50
  </BreadcrumbList>
50
51
  </Breadcrumb>
51
52
  </ComponentShowcase>
53
+
54
+ <div className="space-y-4">
55
+ <h3 className="text-xl font-semibold">Props</h3>
56
+
57
+ <h4 className="text-lg font-medium mt-6">Breadcrumb (Root)</h4>
58
+ <PropsTable
59
+ props={[
60
+ {
61
+ name: 'separator',
62
+ type: 'ReactNode',
63
+ description: 'Custom separator element.',
64
+ },
65
+ ]}
66
+ />
67
+
68
+ <h4 className="text-lg font-medium mt-6">BreadcrumbLink</h4>
69
+ <PropsTable
70
+ props={[
71
+ {
72
+ name: 'asChild',
73
+ type: 'boolean',
74
+ defaultValue: 'false',
75
+ description: 'Change the default rendered element for the one passed as a child.',
76
+ },
77
+ {
78
+ name: 'href',
79
+ type: 'string',
80
+ description: 'The URL of the link.',
81
+ },
82
+ ]}
83
+ />
84
+ </div>
52
85
  </ComponentSection>
53
86
  );
54
87
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Button } from '@/components/ui/button';
3
4
  import { ChevronRight, Loader2, Mail } from 'lucide-react';
4
5
 
@@ -72,6 +73,48 @@ export function ButtonDocs() {
72
73
  >
73
74
  <Button disabled>Disabled</Button>
74
75
  </ComponentShowcase>
76
+
77
+ <div className="space-y-4">
78
+ <h3 className="text-xl font-semibold">Props</h3>
79
+ <PropsTable
80
+ props={[
81
+ {
82
+ name: 'variant',
83
+ type: '"default" | "destructive" | "outline" | "secondary" | "ghost" | "link"',
84
+ defaultValue: '"default"',
85
+ description: 'The visual style of the button.',
86
+ },
87
+ {
88
+ name: 'size',
89
+ type: '"default" | "sm" | "lg" | "icon"',
90
+ defaultValue: '"default"',
91
+ description: 'The size of the button.',
92
+ },
93
+ {
94
+ name: 'asChild',
95
+ type: 'boolean',
96
+ defaultValue: 'false',
97
+ description: 'Whether to render as a child component (delegation).',
98
+ },
99
+ {
100
+ name: 'className',
101
+ type: 'string',
102
+ description: 'Additional CSS classes to apply.',
103
+ },
104
+ {
105
+ name: 'disabled',
106
+ type: 'boolean',
107
+ defaultValue: 'false',
108
+ description: 'Whether the button is disabled.',
109
+ },
110
+ {
111
+ name: 'onClick',
112
+ type: 'MouseEventHandler',
113
+ description: 'Click event handler.',
114
+ },
115
+ ]}
116
+ />
117
+ </div>
75
118
  </ComponentSection>
76
119
  );
77
120
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Calendar } from '@/components/ui/calendar';
3
4
  import * as React from 'react';
4
5
 
@@ -24,6 +25,48 @@ export function CalendarDocs() {
24
25
  >
25
26
  <Calendar mode="single" selected={date} onSelect={setDate} className="rounded-md border" />
26
27
  </ComponentShowcase>
28
+
29
+ <div className="space-y-4">
30
+ <h3 className="text-xl font-semibold">Props</h3>
31
+ <p className="text-sm text-muted-foreground">
32
+ The Calendar component is built on top of{' '}
33
+ <a href="https://react-day-picker.js.org/" className="underline" target="_blank" rel="noreferrer">
34
+ React Day Picker
35
+ </a>
36
+ .
37
+ </p>
38
+ <PropsTable
39
+ props={[
40
+ {
41
+ name: 'mode',
42
+ type: '"single" | "multiple" | "range" | "default"',
43
+ defaultValue: '"default"',
44
+ description: 'The selection mode of the calendar.',
45
+ },
46
+ {
47
+ name: 'selected',
48
+ type: 'Date | Date[] | DateRange | undefined',
49
+ description: 'The selected date(s).',
50
+ },
51
+ {
52
+ name: 'onSelect',
53
+ type: '(date: any) => void',
54
+ description: 'Event handler called when a date is selected.',
55
+ },
56
+ {
57
+ name: 'showOutsideDays',
58
+ type: 'boolean',
59
+ defaultValue: 'true',
60
+ description: 'Whether to show days from the previous and next months.',
61
+ },
62
+ {
63
+ name: 'className',
64
+ type: 'string',
65
+ description: 'Additional CSS classes to apply.',
66
+ },
67
+ ]}
68
+ />
69
+ </div>
27
70
  </ComponentSection>
28
71
  );
29
72
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Button } from '@/components/ui/button';
3
4
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card';
4
5
  import { Input } from '@/components/ui/input';
@@ -76,6 +77,25 @@ export function CardDocs() {
76
77
  </CardFooter>
77
78
  </Card>
78
79
  </ComponentShowcase>
80
+
81
+ <div className="space-y-4">
82
+ <h3 className="text-xl font-semibold">Props</h3>
83
+ <h4 className="text-lg font-medium mt-6">Card (Root)</h4>
84
+ <PropsTable
85
+ props={[
86
+ {
87
+ name: 'className',
88
+ type: 'string',
89
+ description: 'Additional CSS classes.',
90
+ },
91
+ ]}
92
+ />
93
+
94
+ <p className="text-sm text-muted-foreground mt-4">
95
+ CardHeader, CardTitle, CardDescription, CardContent, and CardFooter also accept <code>className</code> and
96
+ other standard HTML attributes.
97
+ </p>
98
+ </div>
79
99
  </ComponentSection>
80
100
  );
81
101
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Card, CardContent } from '@/components/ui/card';
3
4
  import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from '@/components/ui/carousel';
4
5
 
@@ -127,6 +128,36 @@ export function CarouselDocs() {
127
128
  <CarouselNext />
128
129
  </Carousel>
129
130
  </ComponentShowcase>
131
+
132
+ <div className="space-y-4">
133
+ <h3 className="text-xl font-semibold">Props</h3>
134
+ <h4 className="text-lg font-medium mt-6">Carousel (Root)</h4>
135
+ <PropsTable
136
+ props={[
137
+ {
138
+ name: 'opts',
139
+ type: 'CarouselOptions',
140
+ description: 'Options passed to the Embla Carousel instance.',
141
+ },
142
+ {
143
+ name: 'plugins',
144
+ type: 'CarouselPlugin',
145
+ description: 'Plugins passed to the Embla Carousel instance.',
146
+ },
147
+ {
148
+ name: 'orientation',
149
+ type: '"horizontal" | "vertical"',
150
+ defaultValue: '"horizontal"',
151
+ description: 'The orientation of the carousel.',
152
+ },
153
+ {
154
+ name: 'setApi',
155
+ type: '(api: CarouselApi) => void',
156
+ description: 'Callback to get the Embla Carousel API instance.',
157
+ },
158
+ ]}
159
+ />
160
+ </div>
130
161
  </ComponentSection>
131
162
  );
132
163
  }
@@ -1,115 +1,145 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
3
- import { TrendingUp } from 'lucide-react';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
3
+ import { ChartContainer, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';
4
+ import { Bar, BarChart, CartesianGrid, XAxis } from 'recharts';
5
+
6
+ const chartData = [
7
+ { month: 'January', desktop: 186, mobile: 80 },
8
+ { month: 'February', desktop: 305, mobile: 200 },
9
+ { month: 'March', desktop: 237, mobile: 120 },
10
+ { month: 'April', desktop: 73, mobile: 190 },
11
+ { month: 'May', desktop: 209, mobile: 130 },
12
+ { month: 'June', desktop: 214, mobile: 140 },
13
+ ];
14
+
15
+ const chartConfig = {
16
+ desktop: {
17
+ label: 'Desktop',
18
+ color: '#2563eb',
19
+ },
20
+ mobile: {
21
+ label: 'Mobile',
22
+ color: '#60a5fa',
23
+ },
24
+ };
4
25
 
5
26
  export function ChartDocs() {
6
27
  return (
7
- <ComponentSection title="Chart" description="Beautiful charts built using Recharts and styled with CSS variables.">
28
+ <ComponentSection
29
+ title="Chart"
30
+ description="Beautiful charts. Built using Recharts. Copy and paste into your apps."
31
+ >
8
32
  <ComponentShowcase
9
- title="Overview"
10
- description="Charts are built using Recharts. The chart components use CSS variables for theming."
11
- code={`// Install recharts
12
- npm install recharts
13
-
14
- // Import and use
15
- import { Bar, BarChart, XAxis, YAxis, ResponsiveContainer } from "recharts";
16
-
17
- const data = [
18
- { name: "Jan", total: 1200 },
19
- { name: "Feb", total: 2100 },
20
- { name: "Mar", total: 800 },
21
- { name: "Apr", total: 1600 },
22
- { name: "May", total: 900 },
23
- { name: "Jun", total: 1700 },
24
- ];
25
-
26
- <ResponsiveContainer width="100%" height={350}>
27
- <BarChart data={data}>
28
- <XAxis dataKey="name" />
29
- <YAxis />
30
- <Bar dataKey="total" fill="hsl(var(--primary))" radius={[4, 4, 0, 0]} />
33
+ title="Bar Chart"
34
+ description="A simple bar chart."
35
+ code={`<ChartContainer config={chartConfig} className="min-h-[200px] w-full">
36
+ <BarChart accessibilityLayer data={chartData}>
37
+ <CartesianGrid vertical={false} />
38
+ <XAxis
39
+ dataKey="month"
40
+ tickLine={false}
41
+ tickMargin={10}
42
+ axisLine={false}
43
+ tickFormatter={(value) => value.slice(0, 3)}
44
+ />
45
+ <ChartTooltip content={<ChartTooltipContent />} />
46
+ <Bar dataKey="desktop" fill="var(--color-desktop)" radius={4} />
47
+ <Bar dataKey="mobile" fill="var(--color-mobile)" radius={4} />
31
48
  </BarChart>
32
- </ResponsiveContainer>`}
49
+ </ChartContainer>`}
33
50
  >
34
- <Card className="w-full max-w-md">
35
- <CardHeader>
36
- <CardTitle>Chart Example</CardTitle>
37
- <CardDescription>A preview of chart styling</CardDescription>
38
- </CardHeader>
39
- <CardContent>
40
- <div className="space-y-4">
41
- <div className="flex items-center gap-2 text-sm text-muted-foreground">
42
- <TrendingUp className="h-4 w-4" />
43
- <span>Charts use CSS variables for consistent theming</span>
44
- </div>
45
- <div className="grid grid-cols-6 gap-2 h-32 items-end">
46
- {[40, 70, 30, 60, 35, 65].map((height, i) => (
47
- <div
48
- key={i}
49
- className="bg-primary rounded-t-sm transition-all hover:bg-primary/80"
50
- style={{ height: `${height}%` }}
51
- />
52
- ))}
53
- </div>
54
- <div className="grid grid-cols-6 gap-2 text-xs text-center text-muted-foreground">
55
- {['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'].map((month) => (
56
- <span key={month}>{month}</span>
57
- ))}
58
- </div>
59
- </div>
60
- </CardContent>
61
- </Card>
51
+ <ChartContainer config={chartConfig} className="min-h-[200px] w-full">
52
+ <BarChart accessibilityLayer data={chartData}>
53
+ <CartesianGrid vertical={false} />
54
+ <XAxis
55
+ dataKey="month"
56
+ tickLine={false}
57
+ tickMargin={10}
58
+ axisLine={false}
59
+ tickFormatter={(value) => value.slice(0, 3)}
60
+ />
61
+ <ChartTooltip content={<ChartTooltipContent />} />
62
+ <Bar dataKey="desktop" fill="var(--color-desktop)" radius={4} />
63
+ <Bar dataKey="mobile" fill="var(--color-mobile)" radius={4} />
64
+ </BarChart>
65
+ </ChartContainer>
62
66
  </ComponentShowcase>
63
67
 
64
- <ComponentShowcase
65
- title="CSS Variables"
66
- description="Use CSS variables to theme your charts."
67
- code={`/* In your CSS */
68
- :root {
69
- --chart-1: 12 76% 61%;
70
- --chart-2: 173 58% 39%;
71
- --chart-3: 197 37% 24%;
72
- --chart-4: 43 74% 66%;
73
- --chart-5: 27 87% 67%;
74
- }
68
+ <div className="space-y-4">
69
+ <h3 className="text-xl font-semibold">Props</h3>
70
+ <p className="text-sm text-muted-foreground">
71
+ The Chart component is a wrapper around{' '}
72
+ <a href="https://recharts.org/" className="underline" target="_blank" rel="noreferrer">
73
+ Recharts
74
+ </a>
75
+ .
76
+ </p>
75
77
 
76
- .dark {
77
- --chart-1: 220 70% 50%;
78
- --chart-2: 160 60% 45%;
79
- --chart-3: 30 80% 55%;
80
- --chart-4: 280 65% 60%;
81
- --chart-5: 340 75% 55%;
82
- }
78
+ <h4 className="text-lg font-medium mt-6">ChartContainer</h4>
79
+ <PropsTable
80
+ props={[
81
+ {
82
+ name: 'config',
83
+ type: 'ChartConfig',
84
+ required: true,
85
+ description: 'The configuration for the chart themes and labels.',
86
+ },
87
+ {
88
+ name: 'className',
89
+ type: 'string',
90
+ description: 'Additional class names to apply.',
91
+ },
92
+ {
93
+ name: 'children',
94
+ type: 'ReactNode',
95
+ description: 'The Recharts component to render.',
96
+ },
97
+ ]}
98
+ />
83
99
 
84
- /* Use in your chart */
85
- <Bar fill="hsl(var(--chart-1))" />
86
- <Line stroke="hsl(var(--chart-2))" />`}
87
- >
88
- <div className="flex gap-4 items-center">
89
- <div className="flex flex-col gap-2">
90
- <div className="flex items-center gap-2">
91
- <div className="w-4 h-4 rounded bg-[hsl(12,76%,61%)]" />
92
- <span className="text-sm">--chart-1</span>
93
- </div>
94
- <div className="flex items-center gap-2">
95
- <div className="w-4 h-4 rounded bg-[hsl(173,58%,39%)]" />
96
- <span className="text-sm">--chart-2</span>
97
- </div>
98
- <div className="flex items-center gap-2">
99
- <div className="w-4 h-4 rounded bg-[hsl(197,37%,24%)]" />
100
- <span className="text-sm">--chart-3</span>
101
- </div>
102
- <div className="flex items-center gap-2">
103
- <div className="w-4 h-4 rounded bg-[hsl(43,74%,66%)]" />
104
- <span className="text-sm">--chart-4</span>
105
- </div>
106
- <div className="flex items-center gap-2">
107
- <div className="w-4 h-4 rounded bg-[hsl(27,87%,67%)]" />
108
- <span className="text-sm">--chart-5</span>
109
- </div>
110
- </div>
111
- </div>
112
- </ComponentShowcase>
100
+ <h4 className="text-lg font-medium mt-6">ChartTooltip</h4>
101
+ <PropsTable
102
+ props={[
103
+ {
104
+ name: 'content',
105
+ type: 'ReactNode',
106
+ description: 'The content to render in the tooltip.',
107
+ },
108
+ ]}
109
+ />
110
+
111
+ <h4 className="text-lg font-medium mt-6">ChartTooltipContent</h4>
112
+ <PropsTable
113
+ props={[
114
+ {
115
+ name: 'hideLabel',
116
+ type: 'boolean',
117
+ description: 'Whether to hide the label in the tooltip.',
118
+ },
119
+ {
120
+ name: 'hideIndicator',
121
+ type: 'boolean',
122
+ description: 'Whether to hide the indicator in the tooltip.',
123
+ },
124
+ {
125
+ name: 'indicator',
126
+ type: '"line" | "dot" | "dashed"',
127
+ defaultValue: '"dot"',
128
+ description: 'The style of the indicator.',
129
+ },
130
+ {
131
+ name: 'nameKey',
132
+ type: 'string',
133
+ description: 'The key to use for the name in the tooltip.',
134
+ },
135
+ {
136
+ name: 'labelKey',
137
+ type: 'string',
138
+ description: 'The key to use for the label in the tooltip.',
139
+ },
140
+ ]}
141
+ />
142
+ </div>
113
143
  </ComponentSection>
114
144
  );
115
145
  }