@gv-tech/design-system 1.0.0 → 1.2.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 (335) hide show
  1. package/.agent/skills/dogfood-components/SKILL.md +34 -0
  2. package/.agent/skills/maintain-component/SKILL.md +42 -0
  3. package/.prettierignore +2 -0
  4. package/CHANGELOG.md +24 -0
  5. package/dist/App.d.ts.map +1 -1
  6. package/dist/components/docs/Footer.d.ts.map +1 -1
  7. package/dist/components/docs/PropsTable.d.ts +13 -0
  8. package/dist/components/docs/PropsTable.d.ts.map +1 -0
  9. package/dist/components/docs/Sidebar.d.ts.map +1 -1
  10. package/dist/components/docs/index.d.ts +1 -0
  11. package/dist/components/docs/index.d.ts.map +1 -1
  12. package/dist/components/ui/accordion.test.d.ts +2 -0
  13. package/dist/components/ui/accordion.test.d.ts.map +1 -0
  14. package/dist/components/ui/alert-dialog.test.d.ts +2 -0
  15. package/dist/components/ui/alert-dialog.test.d.ts.map +1 -0
  16. package/dist/components/ui/alert.test.d.ts +2 -0
  17. package/dist/components/ui/alert.test.d.ts.map +1 -0
  18. package/dist/components/ui/aspect-ratio.test.d.ts +2 -0
  19. package/dist/components/ui/aspect-ratio.test.d.ts.map +1 -0
  20. package/dist/components/ui/avatar.test.d.ts +2 -0
  21. package/dist/components/ui/avatar.test.d.ts.map +1 -0
  22. package/dist/components/ui/badge.test.d.ts +2 -0
  23. package/dist/components/ui/badge.test.d.ts.map +1 -0
  24. package/dist/components/ui/breadcrumb.test.d.ts +2 -0
  25. package/dist/components/ui/breadcrumb.test.d.ts.map +1 -0
  26. package/dist/components/ui/button.test.d.ts +2 -0
  27. package/dist/components/ui/button.test.d.ts.map +1 -0
  28. package/dist/components/ui/calendar.d.ts.map +1 -1
  29. package/dist/components/ui/calendar.test.d.ts +2 -0
  30. package/dist/components/ui/calendar.test.d.ts.map +1 -0
  31. package/dist/components/ui/card.test.d.ts +2 -0
  32. package/dist/components/ui/card.test.d.ts.map +1 -0
  33. package/dist/components/ui/carousel.test.d.ts +2 -0
  34. package/dist/components/ui/carousel.test.d.ts.map +1 -0
  35. package/dist/components/ui/chart.test.d.ts +2 -0
  36. package/dist/components/ui/chart.test.d.ts.map +1 -0
  37. package/dist/components/ui/checkbox.test.d.ts +2 -0
  38. package/dist/components/ui/checkbox.test.d.ts.map +1 -0
  39. package/dist/components/ui/collapsible.test.d.ts +2 -0
  40. package/dist/components/ui/collapsible.test.d.ts.map +1 -0
  41. package/dist/components/ui/command.test.d.ts +2 -0
  42. package/dist/components/ui/command.test.d.ts.map +1 -0
  43. package/dist/components/ui/context-menu.test.d.ts +2 -0
  44. package/dist/components/ui/context-menu.test.d.ts.map +1 -0
  45. package/dist/components/ui/dialog.test.d.ts +2 -0
  46. package/dist/components/ui/dialog.test.d.ts.map +1 -0
  47. package/dist/components/ui/drawer.test.d.ts +2 -0
  48. package/dist/components/ui/drawer.test.d.ts.map +1 -0
  49. package/dist/components/ui/dropdown-menu.test.d.ts +2 -0
  50. package/dist/components/ui/dropdown-menu.test.d.ts.map +1 -0
  51. package/dist/components/ui/form.test.d.ts +2 -0
  52. package/dist/components/ui/form.test.d.ts.map +1 -0
  53. package/dist/components/ui/hover-card.test.d.ts +2 -0
  54. package/dist/components/ui/hover-card.test.d.ts.map +1 -0
  55. package/dist/components/ui/input.test.d.ts +2 -0
  56. package/dist/components/ui/input.test.d.ts.map +1 -0
  57. package/dist/components/ui/label.test.d.ts +2 -0
  58. package/dist/components/ui/label.test.d.ts.map +1 -0
  59. package/dist/components/ui/menubar.test.d.ts +2 -0
  60. package/dist/components/ui/menubar.test.d.ts.map +1 -0
  61. package/dist/components/ui/navigation-menu.test.d.ts +2 -0
  62. package/dist/components/ui/navigation-menu.test.d.ts.map +1 -0
  63. package/dist/components/ui/pagination.test.d.ts +2 -0
  64. package/dist/components/ui/pagination.test.d.ts.map +1 -0
  65. package/dist/components/ui/popover.test.d.ts +2 -0
  66. package/dist/components/ui/popover.test.d.ts.map +1 -0
  67. package/dist/components/ui/progress.d.ts.map +1 -1
  68. package/dist/components/ui/progress.test.d.ts +2 -0
  69. package/dist/components/ui/progress.test.d.ts.map +1 -0
  70. package/dist/components/ui/radio-group.test.d.ts +2 -0
  71. package/dist/components/ui/radio-group.test.d.ts.map +1 -0
  72. package/dist/components/ui/resizable.test.d.ts +2 -0
  73. package/dist/components/ui/resizable.test.d.ts.map +1 -0
  74. package/dist/components/ui/scroll-area.test.d.ts +2 -0
  75. package/dist/components/ui/scroll-area.test.d.ts.map +1 -0
  76. package/dist/components/ui/select.test.d.ts +2 -0
  77. package/dist/components/ui/select.test.d.ts.map +1 -0
  78. package/dist/components/ui/separator.test.d.ts +2 -0
  79. package/dist/components/ui/separator.test.d.ts.map +1 -0
  80. package/dist/components/ui/sheet.test.d.ts +2 -0
  81. package/dist/components/ui/sheet.test.d.ts.map +1 -0
  82. package/dist/components/ui/skeleton.test.d.ts +2 -0
  83. package/dist/components/ui/skeleton.test.d.ts.map +1 -0
  84. package/dist/components/ui/slider.test.d.ts +2 -0
  85. package/dist/components/ui/slider.test.d.ts.map +1 -0
  86. package/dist/components/ui/sonner.test.d.ts +2 -0
  87. package/dist/components/ui/sonner.test.d.ts.map +1 -0
  88. package/dist/components/ui/switch.test.d.ts +2 -0
  89. package/dist/components/ui/switch.test.d.ts.map +1 -0
  90. package/dist/components/ui/table.test.d.ts +2 -0
  91. package/dist/components/ui/table.test.d.ts.map +1 -0
  92. package/dist/components/ui/tabs.test.d.ts +2 -0
  93. package/dist/components/ui/tabs.test.d.ts.map +1 -0
  94. package/dist/components/ui/textarea.test.d.ts +2 -0
  95. package/dist/components/ui/textarea.test.d.ts.map +1 -0
  96. package/dist/components/ui/theme-toggle.d.ts +17 -0
  97. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  98. package/dist/components/ui/toast.test.d.ts +2 -0
  99. package/dist/components/ui/toast.test.d.ts.map +1 -0
  100. package/dist/components/ui/toggle-group.test.d.ts +2 -0
  101. package/dist/components/ui/toggle-group.test.d.ts.map +1 -0
  102. package/dist/components/ui/toggle.test.d.ts +2 -0
  103. package/dist/components/ui/toggle.test.d.ts.map +1 -0
  104. package/dist/components/ui/tooltip.test.d.ts +2 -0
  105. package/dist/components/ui/tooltip.test.d.ts.map +1 -0
  106. package/dist/index.cjs.js +3 -3
  107. package/dist/index.cjs.js.map +1 -1
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.es.js +978 -860
  111. package/dist/index.es.js.map +1 -1
  112. package/dist/lib/tokens.d.ts +54 -0
  113. package/dist/lib/tokens.d.ts.map +1 -0
  114. package/dist/pages/ColorTokensDocs.d.ts +2 -0
  115. package/dist/pages/ColorTokensDocs.d.ts.map +1 -0
  116. package/dist/pages/GettingStarted.d.ts.map +1 -1
  117. package/dist/pages/components/AccordionDocs.d.ts.map +1 -1
  118. package/dist/pages/components/AlertDialogDocs.d.ts.map +1 -1
  119. package/dist/pages/components/AlertDocs.d.ts.map +1 -1
  120. package/dist/pages/components/AspectRatioDocs.d.ts.map +1 -1
  121. package/dist/pages/components/AvatarDocs.d.ts.map +1 -1
  122. package/dist/pages/components/BadgeDocs.d.ts.map +1 -1
  123. package/dist/pages/components/BreadcrumbDocs.d.ts.map +1 -1
  124. package/dist/pages/components/ButtonDocs.d.ts.map +1 -1
  125. package/dist/pages/components/CalendarDocs.d.ts.map +1 -1
  126. package/dist/pages/components/CardDocs.d.ts.map +1 -1
  127. package/dist/pages/components/CarouselDocs.d.ts.map +1 -1
  128. package/dist/pages/components/ChartDocs.d.ts.map +1 -1
  129. package/dist/pages/components/CheckboxDocs.d.ts.map +1 -1
  130. package/dist/pages/components/CollapsibleDocs.d.ts.map +1 -1
  131. package/dist/pages/components/CommandDocs.d.ts.map +1 -1
  132. package/dist/pages/components/ContextMenuDocs.d.ts.map +1 -1
  133. package/dist/pages/components/DialogDocs.d.ts.map +1 -1
  134. package/dist/pages/components/DrawerDocs.d.ts.map +1 -1
  135. package/dist/pages/components/DropdownMenuDocs.d.ts.map +1 -1
  136. package/dist/pages/components/FormDocs.d.ts.map +1 -1
  137. package/dist/pages/components/HoverCardDocs.d.ts.map +1 -1
  138. package/dist/pages/components/InputDocs.d.ts.map +1 -1
  139. package/dist/pages/components/LabelDocs.d.ts.map +1 -1
  140. package/dist/pages/components/MenubarDocs.d.ts.map +1 -1
  141. package/dist/pages/components/NavigationMenuDocs.d.ts.map +1 -1
  142. package/dist/pages/components/PaginationDocs.d.ts.map +1 -1
  143. package/dist/pages/components/PopoverDocs.d.ts.map +1 -1
  144. package/dist/pages/components/ProgressDocs.d.ts.map +1 -1
  145. package/dist/pages/components/RadioGroupDocs.d.ts.map +1 -1
  146. package/dist/pages/components/ResizableDocs.d.ts.map +1 -1
  147. package/dist/pages/components/ScrollAreaDocs.d.ts.map +1 -1
  148. package/dist/pages/components/SelectDocs.d.ts.map +1 -1
  149. package/dist/pages/components/SeparatorDocs.d.ts.map +1 -1
  150. package/dist/pages/components/SheetDocs.d.ts.map +1 -1
  151. package/dist/pages/components/SkeletonDocs.d.ts.map +1 -1
  152. package/dist/pages/components/SliderDocs.d.ts.map +1 -1
  153. package/dist/pages/components/SonnerDocs.d.ts.map +1 -1
  154. package/dist/pages/components/SwitchDocs.d.ts.map +1 -1
  155. package/dist/pages/components/TableDocs.d.ts.map +1 -1
  156. package/dist/pages/components/TabsDocs.d.ts.map +1 -1
  157. package/dist/pages/components/TextareaDocs.d.ts.map +1 -1
  158. package/dist/pages/components/ThemeToggleDocs.d.ts +2 -0
  159. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -0
  160. package/dist/pages/components/ToastDocs.d.ts.map +1 -1
  161. package/dist/pages/components/ToggleDocs.d.ts.map +1 -1
  162. package/dist/pages/components/ToggleGroupDocs.d.ts.map +1 -1
  163. package/dist/pages/components/TooltipDocs.d.ts.map +1 -1
  164. package/dist/pages/index.d.ts +2 -0
  165. package/dist/pages/index.d.ts.map +1 -1
  166. package/dist/registry/accordion.test.json +13 -0
  167. package/dist/registry/alert-dialog.test.json +13 -0
  168. package/dist/registry/alert.test.json +13 -0
  169. package/dist/registry/aspect-ratio.test.json +13 -0
  170. package/dist/registry/avatar.test.json +13 -0
  171. package/dist/registry/badge.test.json +13 -0
  172. package/dist/registry/breadcrumb.test.json +13 -0
  173. package/dist/registry/button.test.json +13 -0
  174. package/dist/registry/calendar.json +1 -1
  175. package/dist/registry/calendar.test.json +13 -0
  176. package/dist/registry/card.test.json +13 -0
  177. package/dist/registry/carousel.test.json +13 -0
  178. package/dist/registry/chart.test.json +13 -0
  179. package/dist/registry/checkbox.test.json +13 -0
  180. package/dist/registry/collapsible.test.json +13 -0
  181. package/dist/registry/command.test.json +13 -0
  182. package/dist/registry/context-menu.test.json +13 -0
  183. package/dist/registry/dialog.test.json +13 -0
  184. package/dist/registry/drawer.test.json +13 -0
  185. package/dist/registry/dropdown-menu.test.json +13 -0
  186. package/dist/registry/form.test.json +13 -0
  187. package/dist/registry/hover-card.test.json +13 -0
  188. package/dist/registry/index.json +322 -0
  189. package/dist/registry/input.test.json +13 -0
  190. package/dist/registry/label.test.json +13 -0
  191. package/dist/registry/menubar.test.json +13 -0
  192. package/dist/registry/navigation-menu.test.json +13 -0
  193. package/dist/registry/pagination.test.json +13 -0
  194. package/dist/registry/popover.test.json +13 -0
  195. package/dist/registry/progress.json +1 -1
  196. package/dist/registry/progress.test.json +13 -0
  197. package/dist/registry/radio-group.test.json +13 -0
  198. package/dist/registry/resizable.test.json +13 -0
  199. package/dist/registry/scroll-area.test.json +13 -0
  200. package/dist/registry/select.test.json +13 -0
  201. package/dist/registry/separator.test.json +13 -0
  202. package/dist/registry/sheet.test.json +13 -0
  203. package/dist/registry/skeleton.test.json +13 -0
  204. package/dist/registry/slider.test.json +13 -0
  205. package/dist/registry/sonner.test.json +13 -0
  206. package/dist/registry/switch.test.json +13 -0
  207. package/dist/registry/table.test.json +13 -0
  208. package/dist/registry/tabs.test.json +13 -0
  209. package/dist/registry/textarea.test.json +13 -0
  210. package/dist/registry/theme-toggle.json +13 -0
  211. package/dist/registry/toast.test.json +13 -0
  212. package/dist/registry/toggle-group.test.json +13 -0
  213. package/dist/registry/toggle.test.json +13 -0
  214. package/dist/registry/tooltip.test.json +13 -0
  215. package/dist/setupTests.d.ts +2 -0
  216. package/dist/setupTests.d.ts.map +1 -0
  217. package/dist/{vendor-ZhQmrf1h.mjs → vendor-CAF5bxO5.mjs} +2451 -2415
  218. package/dist/vendor-CAF5bxO5.mjs.map +1 -0
  219. package/dist/{vendor-CMSUBoIg.js → vendor-Hw1BQGd3.js} +17 -17
  220. package/dist/vendor-Hw1BQGd3.js.map +1 -0
  221. package/eslint.config.mjs +8 -81
  222. package/package.json +38 -41
  223. package/postcss.config.mjs +5 -0
  224. package/src/App.tsx +37 -7
  225. package/src/components/docs/Footer.tsx +51 -30
  226. package/src/components/docs/PropsTable.tsx +43 -0
  227. package/src/components/docs/Sidebar.tsx +44 -72
  228. package/src/components/docs/index.ts +1 -0
  229. package/src/components/ui/accordion.test.tsx +86 -0
  230. package/src/components/ui/alert-dialog.test.tsx +89 -0
  231. package/src/components/ui/alert.test.tsx +33 -0
  232. package/src/components/ui/aspect-ratio.test.tsx +34 -0
  233. package/src/components/ui/avatar.test.tsx +33 -0
  234. package/src/components/ui/badge.test.tsx +24 -0
  235. package/src/components/ui/breadcrumb.test.tsx +55 -0
  236. package/src/components/ui/button.test.tsx +62 -0
  237. package/src/components/ui/calendar.test.tsx +23 -0
  238. package/src/components/ui/calendar.tsx +14 -10
  239. package/src/components/ui/card.test.tsx +35 -0
  240. package/src/components/ui/carousel.test.tsx +37 -0
  241. package/src/components/ui/chart.test.tsx +62 -0
  242. package/src/components/ui/checkbox.test.tsx +30 -0
  243. package/src/components/ui/collapsible.test.tsx +51 -0
  244. package/src/components/ui/command.test.tsx +79 -0
  245. package/src/components/ui/context-menu.test.tsx +37 -0
  246. package/src/components/ui/dialog.test.tsx +66 -0
  247. package/src/components/ui/drawer.test.tsx +68 -0
  248. package/src/components/ui/dropdown-menu.test.tsx +93 -0
  249. package/src/components/ui/form.test.tsx +85 -0
  250. package/src/components/ui/hover-card.test.tsx +48 -0
  251. package/src/components/ui/input.test.tsx +33 -0
  252. package/src/components/ui/label.test.tsx +27 -0
  253. package/src/components/ui/menubar.test.tsx +92 -0
  254. package/src/components/ui/navigation-menu.test.tsx +53 -0
  255. package/src/components/ui/pagination.test.tsx +57 -0
  256. package/src/components/ui/popover.test.tsx +31 -0
  257. package/src/components/ui/progress.test.tsx +18 -0
  258. package/src/components/ui/progress.tsx +1 -0
  259. package/src/components/ui/radio-group.test.tsx +39 -0
  260. package/src/components/ui/resizable.test.tsx +23 -0
  261. package/src/components/ui/scroll-area.test.tsx +15 -0
  262. package/src/components/ui/select.test.tsx +42 -0
  263. package/src/components/ui/separator.test.tsx +16 -0
  264. package/src/components/ui/sheet.test.tsx +48 -0
  265. package/src/components/ui/skeleton.test.tsx +13 -0
  266. package/src/components/ui/slider.test.tsx +18 -0
  267. package/src/components/ui/sonner.test.tsx +13 -0
  268. package/src/components/ui/switch.test.tsx +22 -0
  269. package/src/components/ui/table.test.tsx +29 -0
  270. package/src/components/ui/tabs.test.tsx +43 -0
  271. package/src/components/ui/textarea.test.tsx +21 -0
  272. package/src/components/ui/theme-toggle.tsx +108 -0
  273. package/src/components/ui/toast.test.tsx +42 -0
  274. package/src/components/ui/toggle-group.test.tsx +40 -0
  275. package/src/components/ui/toggle.test.tsx +21 -0
  276. package/src/components/ui/tooltip.test.tsx +25 -0
  277. package/src/globals.css +94 -37
  278. package/src/index.ts +2 -0
  279. package/src/lib/tokens.ts +54 -0
  280. package/src/pages/ColorTokensDocs.tsx +181 -0
  281. package/src/pages/GettingStarted.tsx +55 -35
  282. package/src/pages/components/AccordionDocs.tsx +109 -0
  283. package/src/pages/components/AlertDialogDocs.tsx +88 -0
  284. package/src/pages/components/AlertDocs.tsx +20 -0
  285. package/src/pages/components/AspectRatioDocs.tsx +21 -0
  286. package/src/pages/components/AvatarDocs.tsx +48 -0
  287. package/src/pages/components/BadgeDocs.tsx +20 -0
  288. package/src/pages/components/BreadcrumbDocs.tsx +33 -0
  289. package/src/pages/components/ButtonDocs.tsx +43 -0
  290. package/src/pages/components/CalendarDocs.tsx +43 -0
  291. package/src/pages/components/CardDocs.tsx +20 -0
  292. package/src/pages/components/CarouselDocs.tsx +31 -0
  293. package/src/pages/components/ChartDocs.tsx +131 -101
  294. package/src/pages/components/CheckboxDocs.tsx +58 -0
  295. package/src/pages/components/CollapsibleDocs.tsx +51 -0
  296. package/src/pages/components/CommandDocs.tsx +109 -0
  297. package/src/pages/components/ContextMenuDocs.tsx +65 -0
  298. package/src/pages/components/DialogDocs.tsx +98 -11
  299. package/src/pages/components/DrawerDocs.tsx +210 -15
  300. package/src/pages/components/DropdownMenuDocs.tsx +273 -11
  301. package/src/pages/components/FormDocs.tsx +149 -70
  302. package/src/pages/components/HoverCardDocs.tsx +82 -5
  303. package/src/pages/components/InputDocs.tsx +51 -20
  304. package/src/pages/components/LabelDocs.tsx +40 -9
  305. package/src/pages/components/MenubarDocs.tsx +191 -18
  306. package/src/pages/components/NavigationMenuDocs.tsx +147 -49
  307. package/src/pages/components/PaginationDocs.tsx +27 -2
  308. package/src/pages/components/PopoverDocs.tsx +124 -2
  309. package/src/pages/components/ProgressDocs.tsx +54 -24
  310. package/src/pages/components/RadioGroupDocs.tsx +95 -1
  311. package/src/pages/components/ResizableDocs.tsx +102 -75
  312. package/src/pages/components/ScrollAreaDocs.tsx +64 -51
  313. package/src/pages/components/SelectDocs.tsx +119 -48
  314. package/src/pages/components/SeparatorDocs.tsx +37 -2
  315. package/src/pages/components/SheetDocs.tsx +112 -38
  316. package/src/pages/components/SkeletonDocs.tsx +16 -20
  317. package/src/pages/components/SliderDocs.tsx +96 -10
  318. package/src/pages/components/SonnerDocs.tsx +89 -61
  319. package/src/pages/components/SwitchDocs.tsx +65 -10
  320. package/src/pages/components/TableDocs.tsx +89 -14
  321. package/src/pages/components/TabsDocs.tsx +149 -37
  322. package/src/pages/components/TextareaDocs.tsx +38 -32
  323. package/src/pages/components/ThemeToggleDocs.tsx +50 -0
  324. package/src/pages/components/ToastDocs.tsx +104 -65
  325. package/src/pages/components/ToggleDocs.tsx +55 -38
  326. package/src/pages/components/ToggleGroupDocs.tsx +96 -58
  327. package/src/pages/components/TooltipDocs.tsx +112 -3
  328. package/src/pages/index.ts +2 -0
  329. package/src/setupTests.ts +47 -0
  330. package/temp.md +292 -0
  331. package/vitest.config.ts +4 -0
  332. package/dist/vendor-CMSUBoIg.js.map +0 -1
  333. package/dist/vendor-ZhQmrf1h.mjs.map +0 -1
  334. package/postcss.config.js +0 -6
  335. package/tailwind.config.js +0 -79
@@ -1,4 +1,6 @@
1
1
  import { CodeBlock } from '@/components/docs/CodeBlock';
2
+ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
3
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
2
4
 
3
5
  export function GettingStartedPage() {
4
6
  return (
@@ -11,29 +13,43 @@ export function GettingStartedPage() {
11
13
  </div>
12
14
 
13
15
  <div className="grid gap-4 md:grid-cols-3">
14
- <div className="rounded-lg border p-4 space-y-2">
15
- <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center">
16
- <span className="text-2xl">🎨</span>
17
- </div>
18
- <h3 className="font-semibold">Consistent Design</h3>
19
- <p className="text-sm text-muted-foreground">Built on a unified design language with customizable themes.</p>
20
- </div>
21
- <div className="rounded-lg border p-4 space-y-2">
22
- <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center">
23
- <span className="text-2xl">⚡</span>
24
- </div>
25
- <h3 className="font-semibold">Fully Typed</h3>
26
- <p className="text-sm text-muted-foreground">
27
- Complete TypeScript support with comprehensive type definitions.
28
- </p>
29
- </div>
30
- <div className="rounded-lg border p-4 space-y-2">
31
- <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center">
32
- <span className="text-2xl">♿</span>
33
- </div>
34
- <h3 className="font-semibold">Accessible</h3>
35
- <p className="text-sm text-muted-foreground">WAI-ARIA compliant components with keyboard navigation.</p>
36
- </div>
16
+ <Card>
17
+ <CardHeader className="p-4 pb-2">
18
+ <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center mb-2">
19
+ <span className="text-2xl">🎨</span>
20
+ </div>
21
+ <CardTitle className="text-lg">Consistent Design</CardTitle>
22
+ </CardHeader>
23
+ <CardContent className="p-4 pt-0">
24
+ <p className="text-sm text-muted-foreground">
25
+ Built on a unified design language with customizable themes.
26
+ </p>
27
+ </CardContent>
28
+ </Card>
29
+ <Card>
30
+ <CardHeader className="p-4 pb-2">
31
+ <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center mb-2">
32
+ <span className="text-2xl">⚡</span>
33
+ </div>
34
+ <CardTitle className="text-lg">Fully Typed</CardTitle>
35
+ </CardHeader>
36
+ <CardContent className="p-4 pt-0">
37
+ <p className="text-sm text-muted-foreground">
38
+ Complete TypeScript support with comprehensive type definitions.
39
+ </p>
40
+ </CardContent>
41
+ </Card>
42
+ <Card>
43
+ <CardHeader className="p-4 pb-2">
44
+ <div className="h-10 w-10 rounded-md bg-primary/10 flex items-center justify-center mb-2">
45
+ <span className="text-2xl">♿</span>
46
+ </div>
47
+ <CardTitle className="text-lg">Accessible</CardTitle>
48
+ </CardHeader>
49
+ <CardContent className="p-4 pt-0">
50
+ <p className="text-sm text-muted-foreground">WAI-ARIA compliant components with keyboard navigation.</p>
51
+ </CardContent>
52
+ </Card>
37
53
  </div>
38
54
 
39
55
  <section className="space-y-4">
@@ -93,18 +109,22 @@ export function InstallationPage() {
93
109
  <section className="space-y-4">
94
110
  <h2 className="text-2xl font-semibold tracking-tight">Install the package</h2>
95
111
  <p className="text-muted-foreground">Install the design system package using your preferred package manager:</p>
96
- <div className="space-y-2">
97
- <p className="text-sm font-medium">npm</p>
98
- <CodeBlock code="npm install @gv-tech/design-system" language="bash" />
99
- </div>
100
- <div className="space-y-2">
101
- <p className="text-sm font-medium">yarn</p>
102
- <CodeBlock code="yarn add @gv-tech/design-system" language="bash" />
103
- </div>
104
- <div className="space-y-2">
105
- <p className="text-sm font-medium">pnpm</p>
106
- <CodeBlock code="pnpm add @gv-tech/design-system" language="bash" />
107
- </div>
112
+ <Tabs defaultValue="npm" className="w-full">
113
+ <TabsList>
114
+ <TabsTrigger value="npm">npm</TabsTrigger>
115
+ <TabsTrigger value="yarn">yarn</TabsTrigger>
116
+ <TabsTrigger value="pnpm">pnpm</TabsTrigger>
117
+ </TabsList>
118
+ <TabsContent value="npm" className="mt-4">
119
+ <CodeBlock code="npm install @gv-tech/design-system" language="bash" />
120
+ </TabsContent>
121
+ <TabsContent value="yarn" className="mt-4">
122
+ <CodeBlock code="yarn add @gv-tech/design-system" language="bash" />
123
+ </TabsContent>
124
+ <TabsContent value="pnpm" className="mt-4">
125
+ <CodeBlock code="pnpm add @gv-tech/design-system" language="bash" />
126
+ </TabsContent>
127
+ </Tabs>
108
128
  </section>
109
129
 
110
130
  <section className="space-y-4">
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
3
4
 
4
5
  export function AccordionDocs() {
@@ -50,6 +51,114 @@ export function AccordionDocs() {
50
51
  </AccordionItem>
51
52
  </Accordion>
52
53
  </ComponentShowcase>
54
+
55
+ <div className="space-y-4">
56
+ <h3 className="text-xl font-semibold">Props</h3>
57
+
58
+ <h4 className="text-lg font-medium mt-6">Accordion (Root)</h4>
59
+ <PropsTable
60
+ props={[
61
+ {
62
+ name: 'type',
63
+ type: '"single" | "multiple"',
64
+ description: 'Determines whether one or multiple items can be opened at the same time.',
65
+ required: true,
66
+ },
67
+ {
68
+ name: 'collapsible',
69
+ type: 'boolean',
70
+ defaultValue: 'false check',
71
+ description: 'When type is "single", allows closing content when clicking trigger for an open item.',
72
+ },
73
+ {
74
+ name: 'value',
75
+ type: 'string | string[]',
76
+ description: 'The controlled value of the item(s) to expand.',
77
+ },
78
+ {
79
+ name: 'defaultValue',
80
+ type: 'string | string[]',
81
+ description: 'The default value of the item(s) to expand.',
82
+ },
83
+ {
84
+ name: 'onValueChange',
85
+ type: '(value: string | string[]) => void',
86
+ description: 'Event handler called when the expanded state of an item changes.',
87
+ },
88
+ {
89
+ name: 'disabled',
90
+ type: 'boolean',
91
+ defaultValue: 'false',
92
+ description: 'When true, prevents the user from interacting with the accordion.',
93
+ },
94
+ {
95
+ name: 'dir',
96
+ type: '"ltr" | "rtl"',
97
+ defaultValue: '"ltr"',
98
+ description: 'The reading direction of the accordion.',
99
+ },
100
+ {
101
+ name: 'orientation',
102
+ type: '"vertical" | "horizontal"',
103
+ defaultValue: '"vertical"',
104
+ description: 'The orientation of the accordion.',
105
+ },
106
+ ]}
107
+ />
108
+
109
+ <h4 className="text-lg font-medium mt-6">AccordionItem</h4>
110
+ <PropsTable
111
+ props={[
112
+ {
113
+ name: 'value',
114
+ type: 'string',
115
+ description: 'A unique value for the item.',
116
+ required: true,
117
+ },
118
+ {
119
+ name: 'disabled',
120
+ type: 'boolean',
121
+ defaultValue: 'false',
122
+ description: 'When true, prevents the user from interacting with the item.',
123
+ },
124
+ ]}
125
+ />
126
+
127
+ <h4 className="text-lg font-medium mt-6">AccordionTrigger</h4>
128
+ <PropsTable
129
+ props={[
130
+ {
131
+ name: 'children',
132
+ type: 'ReactNode',
133
+ description: 'The content of the trigger.',
134
+ },
135
+ {
136
+ name: 'asChild',
137
+ type: 'boolean',
138
+ defaultValue: 'false',
139
+ description:
140
+ 'Change the default rendered element for the one passed as a child, merging their props and behavior.',
141
+ },
142
+ ]}
143
+ />
144
+
145
+ <h4 className="text-lg font-medium mt-6">AccordionContent</h4>
146
+ <PropsTable
147
+ props={[
148
+ {
149
+ name: 'children',
150
+ type: 'ReactNode',
151
+ description: 'The content of the item.',
152
+ },
153
+ {
154
+ name: 'forceMount',
155
+ type: 'boolean',
156
+ description:
157
+ 'Used to force mounting when more control is needed. Useful when controlling animation with React libraries.',
158
+ },
159
+ ]}
160
+ />
161
+ </div>
53
162
  </ComponentSection>
54
163
  );
55
164
  }
@@ -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
  AlertDialog,
4
5
  AlertDialogAction,
@@ -58,6 +59,93 @@ export function AlertDialogDocs() {
58
59
  </AlertDialogContent>
59
60
  </AlertDialog>
60
61
  </ComponentShowcase>
62
+
63
+ <div className="space-y-4">
64
+ <h3 className="text-xl font-semibold">Props</h3>
65
+
66
+ <h4 className="text-lg font-medium mt-6">AlertDialog (Root)</h4>
67
+ <PropsTable
68
+ props={[
69
+ {
70
+ name: 'open',
71
+ type: 'boolean',
72
+ description: 'The controlled open state of the dialog.',
73
+ },
74
+ {
75
+ name: 'defaultOpen',
76
+ type: 'boolean',
77
+ description: 'The default open state when initially rendered.',
78
+ },
79
+ {
80
+ name: 'onOpenChange',
81
+ type: '(open: boolean) => void',
82
+ description: 'Event handler called when the open state changes.',
83
+ },
84
+ ]}
85
+ />
86
+
87
+ <h4 className="text-lg font-medium mt-6">AlertDialogTrigger</h4>
88
+ <PropsTable
89
+ props={[
90
+ {
91
+ name: 'asChild',
92
+ type: 'boolean',
93
+ defaultValue: 'false',
94
+ description: 'Change the default rendered element for the one passed as a child.',
95
+ },
96
+ ]}
97
+ />
98
+
99
+ <h4 className="text-lg font-medium mt-6">AlertDialogContent</h4>
100
+ <PropsTable
101
+ props={[
102
+ {
103
+ name: 'forceMount',
104
+ type: 'boolean',
105
+ description: 'Used to force mounting when more control is needed.',
106
+ },
107
+ {
108
+ name: 'onEscapeKeyDown',
109
+ type: '(event: KeyboardEvent) => void',
110
+ description: 'Event handler called when the escape key is pressed.',
111
+ },
112
+ ]}
113
+ />
114
+
115
+ <h4 className="text-lg font-medium mt-6">AlertDialogAction</h4>
116
+ <PropsTable
117
+ props={[
118
+ {
119
+ name: 'asChild',
120
+ type: 'boolean',
121
+ defaultValue: 'false',
122
+ description: 'Change the default rendered element for the one passed as a child.',
123
+ },
124
+ {
125
+ name: 'className',
126
+ type: 'string',
127
+ description: 'Additional CSS classes.',
128
+ },
129
+ ]}
130
+ />
131
+
132
+ <h4 className="text-lg font-medium mt-6">AlertDialogCancel</h4>
133
+ <PropsTable
134
+ props={[
135
+ {
136
+ name: 'asChild',
137
+ type: 'boolean',
138
+ defaultValue: 'false',
139
+ description: 'Change the default rendered element for the one passed as a child.',
140
+ },
141
+ {
142
+ name: 'className',
143
+ type: 'string',
144
+ description: 'Additional CSS classes.',
145
+ },
146
+ ]}
147
+ />
148
+ </div>
61
149
  </ComponentSection>
62
150
  );
63
151
  }
@@ -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
  }