@gv-tech/design-system 1.1.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 (332) 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 +16 -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 +36 -38
  223. package/src/App.tsx +37 -7
  224. package/src/components/docs/Footer.tsx +51 -30
  225. package/src/components/docs/PropsTable.tsx +43 -0
  226. package/src/components/docs/Sidebar.tsx +42 -71
  227. package/src/components/docs/index.ts +1 -0
  228. package/src/components/ui/accordion.test.tsx +86 -0
  229. package/src/components/ui/alert-dialog.test.tsx +89 -0
  230. package/src/components/ui/alert.test.tsx +33 -0
  231. package/src/components/ui/aspect-ratio.test.tsx +34 -0
  232. package/src/components/ui/avatar.test.tsx +33 -0
  233. package/src/components/ui/badge.test.tsx +24 -0
  234. package/src/components/ui/breadcrumb.test.tsx +55 -0
  235. package/src/components/ui/button.test.tsx +62 -0
  236. package/src/components/ui/calendar.test.tsx +23 -0
  237. package/src/components/ui/calendar.tsx +14 -10
  238. package/src/components/ui/card.test.tsx +35 -0
  239. package/src/components/ui/carousel.test.tsx +37 -0
  240. package/src/components/ui/chart.test.tsx +62 -0
  241. package/src/components/ui/checkbox.test.tsx +30 -0
  242. package/src/components/ui/collapsible.test.tsx +51 -0
  243. package/src/components/ui/command.test.tsx +79 -0
  244. package/src/components/ui/context-menu.test.tsx +37 -0
  245. package/src/components/ui/dialog.test.tsx +66 -0
  246. package/src/components/ui/drawer.test.tsx +68 -0
  247. package/src/components/ui/dropdown-menu.test.tsx +93 -0
  248. package/src/components/ui/form.test.tsx +85 -0
  249. package/src/components/ui/hover-card.test.tsx +48 -0
  250. package/src/components/ui/input.test.tsx +33 -0
  251. package/src/components/ui/label.test.tsx +27 -0
  252. package/src/components/ui/menubar.test.tsx +92 -0
  253. package/src/components/ui/navigation-menu.test.tsx +53 -0
  254. package/src/components/ui/pagination.test.tsx +57 -0
  255. package/src/components/ui/popover.test.tsx +31 -0
  256. package/src/components/ui/progress.test.tsx +18 -0
  257. package/src/components/ui/progress.tsx +1 -0
  258. package/src/components/ui/radio-group.test.tsx +39 -0
  259. package/src/components/ui/resizable.test.tsx +23 -0
  260. package/src/components/ui/scroll-area.test.tsx +15 -0
  261. package/src/components/ui/select.test.tsx +42 -0
  262. package/src/components/ui/separator.test.tsx +16 -0
  263. package/src/components/ui/sheet.test.tsx +48 -0
  264. package/src/components/ui/skeleton.test.tsx +13 -0
  265. package/src/components/ui/slider.test.tsx +18 -0
  266. package/src/components/ui/sonner.test.tsx +13 -0
  267. package/src/components/ui/switch.test.tsx +22 -0
  268. package/src/components/ui/table.test.tsx +29 -0
  269. package/src/components/ui/tabs.test.tsx +43 -0
  270. package/src/components/ui/textarea.test.tsx +21 -0
  271. package/src/components/ui/theme-toggle.tsx +108 -0
  272. package/src/components/ui/toast.test.tsx +42 -0
  273. package/src/components/ui/toggle-group.test.tsx +40 -0
  274. package/src/components/ui/toggle.test.tsx +21 -0
  275. package/src/components/ui/tooltip.test.tsx +25 -0
  276. package/src/globals.css +39 -34
  277. package/src/index.ts +2 -0
  278. package/src/lib/tokens.ts +54 -0
  279. package/src/pages/ColorTokensDocs.tsx +181 -0
  280. package/src/pages/GettingStarted.tsx +55 -35
  281. package/src/pages/components/AccordionDocs.tsx +109 -0
  282. package/src/pages/components/AlertDialogDocs.tsx +88 -0
  283. package/src/pages/components/AlertDocs.tsx +20 -0
  284. package/src/pages/components/AspectRatioDocs.tsx +21 -0
  285. package/src/pages/components/AvatarDocs.tsx +48 -0
  286. package/src/pages/components/BadgeDocs.tsx +20 -0
  287. package/src/pages/components/BreadcrumbDocs.tsx +33 -0
  288. package/src/pages/components/ButtonDocs.tsx +43 -0
  289. package/src/pages/components/CalendarDocs.tsx +43 -0
  290. package/src/pages/components/CardDocs.tsx +20 -0
  291. package/src/pages/components/CarouselDocs.tsx +31 -0
  292. package/src/pages/components/ChartDocs.tsx +131 -101
  293. package/src/pages/components/CheckboxDocs.tsx +58 -0
  294. package/src/pages/components/CollapsibleDocs.tsx +51 -0
  295. package/src/pages/components/CommandDocs.tsx +109 -0
  296. package/src/pages/components/ContextMenuDocs.tsx +65 -0
  297. package/src/pages/components/DialogDocs.tsx +98 -11
  298. package/src/pages/components/DrawerDocs.tsx +210 -15
  299. package/src/pages/components/DropdownMenuDocs.tsx +273 -11
  300. package/src/pages/components/FormDocs.tsx +149 -70
  301. package/src/pages/components/HoverCardDocs.tsx +82 -5
  302. package/src/pages/components/InputDocs.tsx +51 -20
  303. package/src/pages/components/LabelDocs.tsx +40 -9
  304. package/src/pages/components/MenubarDocs.tsx +191 -18
  305. package/src/pages/components/NavigationMenuDocs.tsx +147 -49
  306. package/src/pages/components/PaginationDocs.tsx +27 -2
  307. package/src/pages/components/PopoverDocs.tsx +124 -2
  308. package/src/pages/components/ProgressDocs.tsx +54 -24
  309. package/src/pages/components/RadioGroupDocs.tsx +95 -1
  310. package/src/pages/components/ResizableDocs.tsx +102 -75
  311. package/src/pages/components/ScrollAreaDocs.tsx +64 -51
  312. package/src/pages/components/SelectDocs.tsx +119 -48
  313. package/src/pages/components/SeparatorDocs.tsx +37 -2
  314. package/src/pages/components/SheetDocs.tsx +112 -38
  315. package/src/pages/components/SkeletonDocs.tsx +16 -20
  316. package/src/pages/components/SliderDocs.tsx +96 -10
  317. package/src/pages/components/SonnerDocs.tsx +89 -61
  318. package/src/pages/components/SwitchDocs.tsx +65 -10
  319. package/src/pages/components/TableDocs.tsx +89 -14
  320. package/src/pages/components/TabsDocs.tsx +149 -37
  321. package/src/pages/components/TextareaDocs.tsx +38 -32
  322. package/src/pages/components/ThemeToggleDocs.tsx +50 -0
  323. package/src/pages/components/ToastDocs.tsx +104 -65
  324. package/src/pages/components/ToggleDocs.tsx +55 -38
  325. package/src/pages/components/ToggleGroupDocs.tsx +96 -58
  326. package/src/pages/components/TooltipDocs.tsx +112 -3
  327. package/src/pages/index.ts +2 -0
  328. package/src/setupTests.ts +47 -0
  329. package/temp.md +292 -0
  330. package/vitest.config.ts +4 -0
  331. package/dist/vendor-CMSUBoIg.js.map +0 -1
  332. 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 { Label } from '@/components/ui/label';
3
4
  import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
4
5
 
@@ -10,7 +11,7 @@ export function RadioGroupDocs() {
10
11
  >
11
12
  <ComponentShowcase
12
13
  title="Default"
13
- description="A basic radio group."
14
+ description="A default radio group."
14
15
  code={`<RadioGroup defaultValue="option-one">
15
16
  <div className="flex items-center space-x-2">
16
17
  <RadioGroupItem value="option-one" id="option-one" />
@@ -33,6 +34,99 @@ export function RadioGroupDocs() {
33
34
  </div>
34
35
  </RadioGroup>
35
36
  </ComponentShowcase>
37
+
38
+ <div className="space-y-4">
39
+ <h3 className="text-xl font-semibold">Props</h3>
40
+ <p className="text-sm text-muted-foreground">
41
+ The Radio Group component is built on top of{' '}
42
+ <a
43
+ href="https://www.radix-ui.com/primitives/docs/components/radio-group"
44
+ className="underline"
45
+ target="_blank"
46
+ rel="noreferrer"
47
+ >
48
+ Radix UI Radio Group
49
+ </a>
50
+ .
51
+ </p>
52
+
53
+ <h4 className="text-lg font-medium mt-6">RadioGroup (Root)</h4>
54
+ <PropsTable
55
+ props={[
56
+ {
57
+ name: 'defaultValue',
58
+ type: 'string',
59
+ description: 'The value of the radio item that should be checked when initially rendered.',
60
+ },
61
+ {
62
+ name: 'value',
63
+ type: 'string',
64
+ description: 'The controlled value of the radio item to check.',
65
+ },
66
+ {
67
+ name: 'onValueChange',
68
+ type: '(value: string) => void',
69
+ description: 'Event handler called when the value changes.',
70
+ },
71
+ {
72
+ name: 'disabled',
73
+ type: 'boolean',
74
+ description: 'When true, prevents the user from interacting with radio items.',
75
+ },
76
+ {
77
+ name: 'required',
78
+ type: 'boolean',
79
+ description:
80
+ 'When true, indicates that the user must check a radio item before the owning form can be submitted.',
81
+ },
82
+ {
83
+ name: 'name',
84
+ type: 'string',
85
+ description: 'The name of the group. Submitted with its owning form as part of a name/value pair.',
86
+ },
87
+ {
88
+ name: 'dir',
89
+ type: '"ltr" | "rtl"',
90
+ description: 'The reading direction of the radio group.',
91
+ },
92
+ {
93
+ name: 'orientation',
94
+ type: '"horizontal" | "vertical"',
95
+ defaultValue: '"vertical"',
96
+ description: 'The orientation of the component.',
97
+ },
98
+ {
99
+ name: 'loop',
100
+ type: 'boolean',
101
+ defaultValue: 'true',
102
+ description: 'When true, keyboard navigation will loop from last item to first, and vice versa.',
103
+ },
104
+ ]}
105
+ />
106
+
107
+ <h4 className="text-lg font-medium mt-6">RadioGroupItem</h4>
108
+ <PropsTable
109
+ props={[
110
+ {
111
+ name: 'value',
112
+ type: 'string',
113
+ required: true,
114
+ description: 'The value given as data when submitted with a name.',
115
+ },
116
+ {
117
+ name: 'disabled',
118
+ type: 'boolean',
119
+ description: 'When true, prevents the user from interacting with the radio item.',
120
+ },
121
+ {
122
+ name: 'required',
123
+ type: 'boolean',
124
+ description:
125
+ 'When true, indicates that the user must check the radio item before the owning form can be submitted.',
126
+ },
127
+ ]}
128
+ />
129
+ </div>
36
130
  </ComponentSection>
37
131
  );
38
132
  }
@@ -1,4 +1,5 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable';
3
4
 
4
5
  export function ResizableDocs() {
@@ -8,9 +9,12 @@ export function ResizableDocs() {
8
9
  description="Accessible resizable panel groups and layouts with keyboard support."
9
10
  >
10
11
  <ComponentShowcase
11
- title="Horizontal"
12
- description="A horizontally resizable panel group."
13
- code={`<ResizablePanelGroup direction="horizontal" className="min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]">
12
+ title="Default"
13
+ description="A resizable panel group with three panels."
14
+ code={`<ResizablePanelGroup
15
+ direction="horizontal"
16
+ className="max-w-md rounded-lg border"
17
+ >
14
18
  <ResizablePanel defaultSize={50}>
15
19
  <div className="flex h-[200px] items-center justify-center p-6">
16
20
  <span className="font-semibold">One</span>
@@ -18,16 +22,23 @@ export function ResizableDocs() {
18
22
  </ResizablePanel>
19
23
  <ResizableHandle />
20
24
  <ResizablePanel defaultSize={50}>
21
- <div className="flex h-[200px] items-center justify-center p-6">
22
- <span className="font-semibold">Two</span>
23
- </div>
25
+ <ResizablePanelGroup direction="vertical">
26
+ <ResizablePanel defaultSize={25}>
27
+ <div className="flex h-full items-center justify-center p-6">
28
+ <span className="font-semibold">Two</span>
29
+ </div>
30
+ </ResizablePanel>
31
+ <ResizableHandle />
32
+ <ResizablePanel defaultSize={75}>
33
+ <div className="flex h-full items-center justify-center p-6">
34
+ <span className="font-semibold">Three</span>
35
+ </div>
36
+ </ResizablePanel>
37
+ </ResizablePanelGroup>
24
38
  </ResizablePanel>
25
39
  </ResizablePanelGroup>`}
26
40
  >
27
- <ResizablePanelGroup
28
- direction="horizontal"
29
- className="min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]"
30
- >
41
+ <ResizablePanelGroup direction="horizontal" className="max-w-md rounded-lg border">
31
42
  <ResizablePanel defaultSize={50}>
32
43
  <div className="flex h-[200px] items-center justify-center p-6">
33
44
  <span className="font-semibold">One</span>
@@ -35,76 +46,92 @@ export function ResizableDocs() {
35
46
  </ResizablePanel>
36
47
  <ResizableHandle />
37
48
  <ResizablePanel defaultSize={50}>
38
- <div className="flex h-[200px] items-center justify-center p-6">
39
- <span className="font-semibold">Two</span>
40
- </div>
49
+ <ResizablePanelGroup direction="vertical">
50
+ <ResizablePanel defaultSize={25}>
51
+ <div className="flex h-full items-center justify-center p-6">
52
+ <span className="font-semibold">Two</span>
53
+ </div>
54
+ </ResizablePanel>
55
+ <ResizableHandle />
56
+ <ResizablePanel defaultSize={75}>
57
+ <div className="flex h-full items-center justify-center p-6">
58
+ <span className="font-semibold">Three</span>
59
+ </div>
60
+ </ResizablePanel>
61
+ </ResizablePanelGroup>
41
62
  </ResizablePanel>
42
63
  </ResizablePanelGroup>
43
64
  </ComponentShowcase>
44
65
 
45
- <ComponentShowcase
46
- title="Vertical"
47
- description="A vertically resizable panel group."
48
- code={`<ResizablePanelGroup direction="vertical" className="min-h-[300px] max-w-md rounded-lg border">
49
- <ResizablePanel defaultSize={25}>
50
- <div className="flex h-full items-center justify-center p-6">
51
- <span className="font-semibold">Header</span>
52
- </div>
53
- </ResizablePanel>
54
- <ResizableHandle />
55
- <ResizablePanel defaultSize={75}>
56
- <div className="flex h-full items-center justify-center p-6">
57
- <span className="font-semibold">Content</span>
58
- </div>
59
- </ResizablePanel>
60
- </ResizablePanelGroup>`}
61
- >
62
- <ResizablePanelGroup direction="vertical" className="min-h-[300px] max-w-md rounded-lg border">
63
- <ResizablePanel defaultSize={25}>
64
- <div className="flex h-full items-center justify-center p-6">
65
- <span className="font-semibold">Header</span>
66
- </div>
67
- </ResizablePanel>
68
- <ResizableHandle />
69
- <ResizablePanel defaultSize={75}>
70
- <div className="flex h-full items-center justify-center p-6">
71
- <span className="font-semibold">Content</span>
72
- </div>
73
- </ResizablePanel>
74
- </ResizablePanelGroup>
75
- </ComponentShowcase>
66
+ <div className="space-y-4">
67
+ <h3 className="text-xl font-semibold">Props</h3>
68
+ <p className="text-sm text-muted-foreground">
69
+ The Resizable component is built on top of{' '}
70
+ <a
71
+ href="https://github.com/bvaughn/react-resizable-panels"
72
+ className="underline"
73
+ target="_blank"
74
+ rel="noreferrer"
75
+ >
76
+ react-resizable-panels
77
+ </a>
78
+ .
79
+ </p>
76
80
 
77
- <ComponentShowcase
78
- title="With Handle"
79
- description="Resizable panels with a visible handle."
80
- code={`<ResizablePanelGroup direction="horizontal" className="min-h-[200px] max-w-md rounded-lg border">
81
- <ResizablePanel defaultSize={25}>
82
- <div className="flex h-full items-center justify-center p-6">
83
- <span className="font-semibold">Sidebar</span>
84
- </div>
85
- </ResizablePanel>
86
- <ResizableHandle withHandle />
87
- <ResizablePanel defaultSize={75}>
88
- <div className="flex h-full items-center justify-center p-6">
89
- <span className="font-semibold">Content</span>
90
- </div>
91
- </ResizablePanel>
92
- </ResizablePanelGroup>`}
93
- >
94
- <ResizablePanelGroup direction="horizontal" className="min-h-[200px] max-w-md rounded-lg border">
95
- <ResizablePanel defaultSize={25}>
96
- <div className="flex h-full items-center justify-center p-6">
97
- <span className="font-semibold">Sidebar</span>
98
- </div>
99
- </ResizablePanel>
100
- <ResizableHandle withHandle />
101
- <ResizablePanel defaultSize={75}>
102
- <div className="flex h-full items-center justify-center p-6">
103
- <span className="font-semibold">Content</span>
104
- </div>
105
- </ResizablePanel>
106
- </ResizablePanelGroup>
107
- </ComponentShowcase>
81
+ <h4 className="text-lg font-medium mt-6">ResizablePanelGroup</h4>
82
+ <PropsTable
83
+ props={[
84
+ {
85
+ name: 'direction',
86
+ type: '"horizontal" | "vertical"',
87
+ required: true,
88
+ description: 'The direction of the panels.',
89
+ },
90
+ {
91
+ name: 'onLayout',
92
+ type: '(sizes: number[]) => void',
93
+ description: 'Event handler called when the layout changes.',
94
+ },
95
+ ]}
96
+ />
97
+
98
+ <h4 className="text-lg font-medium mt-6">ResizablePanel</h4>
99
+ <PropsTable
100
+ props={[
101
+ {
102
+ name: 'defaultSize',
103
+ type: 'number',
104
+ description: 'The initial size of the panel in percent.',
105
+ },
106
+ {
107
+ name: 'minSize',
108
+ type: 'number',
109
+ description: 'The minimum size of the panel in percent.',
110
+ },
111
+ {
112
+ name: 'maxSize',
113
+ type: 'number',
114
+ description: 'The maximum size of the panel in percent.',
115
+ },
116
+ {
117
+ name: 'onResize',
118
+ type: '(size: number) => void',
119
+ description: 'Event handler called when the panel is resized.',
120
+ },
121
+ ]}
122
+ />
123
+
124
+ <h4 className="text-lg font-medium mt-6">ResizableHandle</h4>
125
+ <PropsTable
126
+ props={[
127
+ {
128
+ name: 'withHandle',
129
+ type: 'boolean',
130
+ description: 'Whether to render a grip handle.',
131
+ },
132
+ ]}
133
+ />
134
+ </div>
108
135
  </ComponentSection>
109
136
  );
110
137
  }
@@ -1,31 +1,27 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
- import { ScrollArea, ScrollBar } from '@/components/ui/scroll-area';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
3
+ import { ScrollArea } from '@/components/ui/scroll-area';
3
4
  import { Separator } from '@/components/ui/separator';
4
5
 
5
6
  const tags = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length - i}`);
6
7
 
7
- const works = [
8
- { artist: 'Ornella Binni', art: 'Reflection' },
9
- { artist: 'Tom Byrom', art: 'Mountain View' },
10
- { artist: 'Vladimir Malyavko', art: 'Harmony' },
11
- { artist: 'Magicle', art: 'Dreams' },
12
- ];
13
-
14
8
  export function ScrollAreaDocs() {
15
9
  return (
16
10
  <ComponentSection
17
- title="Scroll Area"
11
+ title="Scroll-area"
18
12
  description="Augments native scroll functionality for custom, cross-browser styling."
19
13
  >
20
14
  <ComponentShowcase
21
- title="Vertical"
22
- description="A vertically scrolling area."
15
+ title="Default"
16
+ description="A default scroll area."
23
17
  code={`<ScrollArea className="h-72 w-48 rounded-md border">
24
18
  <div className="p-4">
25
19
  <h4 className="mb-4 text-sm font-medium leading-none">Tags</h4>
26
20
  {tags.map((tag) => (
27
21
  <>
28
- <div key={tag} className="text-sm">{tag}</div>
22
+ <div key={tag} className="text-sm">
23
+ {tag}
24
+ </div>
29
25
  <Separator className="my-2" />
30
26
  </>
31
27
  ))}
@@ -45,45 +41,62 @@ export function ScrollAreaDocs() {
45
41
  </ScrollArea>
46
42
  </ComponentShowcase>
47
43
 
48
- <ComponentShowcase
49
- title="Horizontal"
50
- description="A horizontally scrolling area."
51
- code={`<ScrollArea className="w-96 whitespace-nowrap rounded-md border">
52
- <div className="flex w-max space-x-4 p-4">
53
- {works.map((work) => (
54
- <figure key={work.artist} className="shrink-0">
55
- <div className="overflow-hidden rounded-md">
56
- <div className="h-[150px] w-[150px] bg-muted flex items-center justify-center">
57
- {work.art}
58
- </div>
59
- </div>
60
- <figcaption className="pt-2 text-xs text-muted-foreground">
61
- Photo by <span className="font-semibold text-foreground">{work.artist}</span>
62
- </figcaption>
63
- </figure>
64
- ))}
65
- </div>
66
- <ScrollBar orientation="horizontal" />
67
- </ScrollArea>`}
68
- >
69
- <ScrollArea className="w-96 whitespace-nowrap rounded-md border">
70
- <div className="flex w-max space-x-4 p-4">
71
- {works.map((work) => (
72
- <figure key={work.artist} className="shrink-0">
73
- <div className="overflow-hidden rounded-md">
74
- <div className="h-[150px] w-[150px] bg-muted flex items-center justify-center text-sm">
75
- {work.art}
76
- </div>
77
- </div>
78
- <figcaption className="pt-2 text-xs text-muted-foreground">
79
- Photo by <span className="font-semibold text-foreground">{work.artist}</span>
80
- </figcaption>
81
- </figure>
82
- ))}
83
- </div>
84
- <ScrollBar orientation="horizontal" />
85
- </ScrollArea>
86
- </ComponentShowcase>
44
+ <div className="space-y-4">
45
+ <h3 className="text-xl font-semibold">Props</h3>
46
+ <p className="text-sm text-muted-foreground">
47
+ The Scroll Area component is built on top of{' '}
48
+ <a
49
+ href="https://www.radix-ui.com/primitives/docs/components/scroll-area"
50
+ className="underline"
51
+ target="_blank"
52
+ rel="noreferrer"
53
+ >
54
+ Radix UI Scroll Area
55
+ </a>
56
+ .
57
+ </p>
58
+
59
+ <h4 className="text-lg font-medium mt-6">ScrollArea (Root)</h4>
60
+ <PropsTable
61
+ props={[
62
+ {
63
+ name: 'type',
64
+ type: '"auto" | "always" | "scroll" | "hover"',
65
+ defaultValue: '"hover"',
66
+ description: 'Describes the nature of scrollbar visibility.',
67
+ },
68
+ {
69
+ name: 'scrollHideDelay',
70
+ type: 'number',
71
+ defaultValue: '600',
72
+ description:
73
+ 'If type is "scroll" or "hover", this property determines how long the scrollbar remains visible before hiding.',
74
+ },
75
+ {
76
+ name: 'dir',
77
+ type: '"ltr" | "rtl"',
78
+ description: 'The reading direction of the scroll area.',
79
+ },
80
+ ]}
81
+ />
82
+
83
+ <h4 className="text-lg font-medium mt-6">ScrollBar</h4>
84
+ <PropsTable
85
+ props={[
86
+ {
87
+ name: 'orientation',
88
+ type: '"horizontal" | "vertical"',
89
+ defaultValue: '"vertical"',
90
+ description: 'The orientation of the scrollbar.',
91
+ },
92
+ {
93
+ name: 'forceMount',
94
+ type: 'boolean',
95
+ description: 'Used to force mounting when more control is needed.',
96
+ },
97
+ ]}
98
+ />
99
+ </div>
87
100
  </ComponentSection>
88
101
  );
89
102
  }
@@ -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
  Select,
4
5
  SelectContent,
@@ -13,75 +14,145 @@ export function SelectDocs() {
13
14
  return (
14
15
  <ComponentSection
15
16
  title="Select"
16
- description="Displays a list of options for the user to pick from, triggered by a button."
17
+ description="Displays a list of options for the user to pick fromtriggered by a button."
17
18
  >
18
19
  <ComponentShowcase
19
20
  title="Default"
20
- description="A basic select component."
21
+ description="A default select component."
21
22
  code={`<Select>
22
23
  <SelectTrigger className="w-[180px]">
23
24
  <SelectValue placeholder="Select a fruit" />
24
25
  </SelectTrigger>
25
- <SelectContent>
26
- <SelectItem value="apple">Apple</SelectItem>
27
- <SelectItem value="banana">Banana</SelectItem>
28
- <SelectItem value="orange">Orange</SelectItem>
29
- </SelectContent>
30
- </Select>`}
31
- >
32
- <Select>
33
- <SelectTrigger className="w-[180px]">
34
- <SelectValue placeholder="Select a fruit" />
35
- </SelectTrigger>
36
- <SelectContent>
37
- <SelectItem value="apple">Apple</SelectItem>
38
- <SelectItem value="banana">Banana</SelectItem>
39
- <SelectItem value="orange">Orange</SelectItem>
40
- </SelectContent>
41
- </Select>
42
- </ComponentShowcase>
43
-
44
- <ComponentShowcase
45
- title="With Groups"
46
- description="Options can be organized into groups with labels."
47
- code={`<Select>
48
- <SelectTrigger className="w-[180px]">
49
- <SelectValue placeholder="Select a timezone" />
50
- </SelectTrigger>
51
26
  <SelectContent>
52
27
  <SelectGroup>
53
- <SelectLabel>North America</SelectLabel>
54
- <SelectItem value="est">Eastern Time (EST)</SelectItem>
55
- <SelectItem value="cst">Central Time (CST)</SelectItem>
56
- <SelectItem value="pst">Pacific Time (PST)</SelectItem>
57
- </SelectGroup>
58
- <SelectGroup>
59
- <SelectLabel>Europe</SelectLabel>
60
- <SelectItem value="gmt">GMT</SelectItem>
61
- <SelectItem value="cet">Central European Time (CET)</SelectItem>
28
+ <SelectLabel>Fruits</SelectLabel>
29
+ <SelectItem value="apple">Apple</SelectItem>
30
+ <SelectItem value="banana">Banana</SelectItem>
31
+ <SelectItem value="blueberry">Blueberry</SelectItem>
32
+ <SelectItem value="grapes">Grapes</SelectItem>
33
+ <SelectItem value="pineapple">Pineapple</SelectItem>
62
34
  </SelectGroup>
63
35
  </SelectContent>
64
36
  </Select>`}
65
37
  >
66
38
  <Select>
67
- <SelectTrigger className="w-[220px]">
68
- <SelectValue placeholder="Select a timezone" />
39
+ <SelectTrigger className="w-[180px]">
40
+ <SelectValue placeholder="Select a fruit" />
69
41
  </SelectTrigger>
70
42
  <SelectContent>
71
43
  <SelectGroup>
72
- <SelectLabel>North America</SelectLabel>
73
- <SelectItem value="est">Eastern Time (EST)</SelectItem>
74
- <SelectItem value="cst">Central Time (CST)</SelectItem>
75
- <SelectItem value="pst">Pacific Time (PST)</SelectItem>
76
- </SelectGroup>
77
- <SelectGroup>
78
- <SelectLabel>Europe</SelectLabel>
79
- <SelectItem value="gmt">GMT</SelectItem>
80
- <SelectItem value="cet">Central European Time (CET)</SelectItem>
44
+ <SelectLabel>Fruits</SelectLabel>
45
+ <SelectItem value="apple">Apple</SelectItem>
46
+ <SelectItem value="banana">Banana</SelectItem>
47
+ <SelectItem value="blueberry">Blueberry</SelectItem>
48
+ <SelectItem value="grapes">Grapes</SelectItem>
49
+ <SelectItem value="pineapple">Pineapple</SelectItem>
81
50
  </SelectGroup>
82
51
  </SelectContent>
83
52
  </Select>
84
53
  </ComponentShowcase>
54
+
55
+ <div className="space-y-4">
56
+ <h3 className="text-xl font-semibold">Props</h3>
57
+ <p className="text-sm text-muted-foreground">
58
+ The Select component is built on top of{' '}
59
+ <a
60
+ href="https://www.radix-ui.com/primitives/docs/components/select"
61
+ className="underline"
62
+ target="_blank"
63
+ rel="noreferrer"
64
+ >
65
+ Radix UI Select
66
+ </a>
67
+ .
68
+ </p>
69
+
70
+ <h4 className="text-lg font-medium mt-6">Select (Root)</h4>
71
+ <PropsTable
72
+ props={[
73
+ {
74
+ name: 'defaultValue',
75
+ type: 'string',
76
+ description: 'The value of the select when initially rendered.',
77
+ },
78
+ {
79
+ name: 'value',
80
+ type: 'string',
81
+ description: 'The controlled value of the select.',
82
+ },
83
+ {
84
+ name: 'onValueChange',
85
+ type: '(value: string) => void',
86
+ description: 'Event handler called when the value changes.',
87
+ },
88
+ {
89
+ name: 'open',
90
+ type: 'boolean',
91
+ description: 'The controlled open state of the select.',
92
+ },
93
+ {
94
+ name: 'onOpenChange',
95
+ type: '(open: boolean) => void',
96
+ description: 'Event handler called when the open state changes.',
97
+ },
98
+ {
99
+ name: 'dir',
100
+ type: '"ltr" | "rtl"',
101
+ description: 'The reading direction of the select.',
102
+ },
103
+ {
104
+ name: 'name',
105
+ type: 'string',
106
+ description: 'The name of the select. Submitted with its owning form as part of a name/value pair.',
107
+ },
108
+ {
109
+ name: 'disabled',
110
+ type: 'boolean',
111
+ description: 'When true, prevents the user from interacting with select.',
112
+ },
113
+ {
114
+ name: 'required',
115
+ type: 'boolean',
116
+ description:
117
+ 'When true, indicates that the user must select a value before the owning form can be submitted.',
118
+ },
119
+ ]}
120
+ />
121
+
122
+ <h4 className="text-lg font-medium mt-6">SelectTrigger</h4>
123
+ <PropsTable
124
+ props={[
125
+ {
126
+ name: 'asChild',
127
+ type: 'boolean',
128
+ description: 'Change the default rendered element for the one passed as a child.',
129
+ },
130
+ ]}
131
+ />
132
+
133
+ <h4 className="text-lg font-medium mt-6">SelectItem</h4>
134
+ <PropsTable
135
+ props={[
136
+ {
137
+ name: 'value',
138
+ type: 'string',
139
+ required: true,
140
+ description: 'The value given as data when submitted with a name.',
141
+ },
142
+ {
143
+ name: 'disabled',
144
+ type: 'boolean',
145
+ description: 'When true, prevents the user from interacting with the item.',
146
+ },
147
+ {
148
+ name: 'textValue',
149
+ type: 'string',
150
+ description:
151
+ 'Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the Item.',
152
+ },
153
+ ]}
154
+ />
155
+ </div>
85
156
  </ComponentSection>
86
157
  );
87
158
  }