@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,15 +1,47 @@
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 {
4
5
  DropdownMenu,
6
+ DropdownMenuCheckboxItem,
5
7
  DropdownMenuContent,
8
+ DropdownMenuGroup,
6
9
  DropdownMenuItem,
7
10
  DropdownMenuLabel,
11
+ DropdownMenuPortal,
12
+ DropdownMenuRadioGroup,
13
+ DropdownMenuRadioItem,
8
14
  DropdownMenuSeparator,
15
+ DropdownMenuShortcut,
16
+ DropdownMenuSub,
17
+ DropdownMenuSubContent,
18
+ DropdownMenuSubTrigger,
9
19
  DropdownMenuTrigger,
10
20
  } from '@/components/ui/dropdown-menu';
21
+ import {
22
+ Cloud,
23
+ CreditCard,
24
+ Keyboard,
25
+ LifeBuoy,
26
+ LogOut,
27
+ Mail,
28
+ MessageSquare,
29
+ Plus,
30
+ PlusCircle,
31
+ Settings,
32
+ User,
33
+ UserPlus,
34
+ Users,
35
+ } from 'lucide-react';
36
+ import * as React from 'react';
37
+ import { SiGithub } from 'react-icons/si';
11
38
 
12
39
  export function DropdownMenuDocs() {
40
+ const [showStatusBar, setShowStatusBar] = React.useState(true);
41
+ const [showActivityBar, setShowActivityBar] = React.useState(false);
42
+ const [showPanel, setShowPanel] = React.useState(false);
43
+ const [position, setPosition] = React.useState('bottom');
44
+
13
45
  return (
14
46
  <ComponentSection
15
47
  title="Dropdown Menu"
@@ -17,18 +49,28 @@ export function DropdownMenuDocs() {
17
49
  >
18
50
  <ComponentShowcase
19
51
  title="Default"
20
- description="A basic dropdown menu."
52
+ description="A simple dropdown menu."
21
53
  code={`<DropdownMenu>
22
54
  <DropdownMenuTrigger asChild>
23
55
  <Button variant="outline">Open</Button>
24
56
  </DropdownMenuTrigger>
25
- <DropdownMenuContent>
57
+ <DropdownMenuContent className="w-56">
26
58
  <DropdownMenuLabel>My Account</DropdownMenuLabel>
27
59
  <DropdownMenuSeparator />
28
- <DropdownMenuItem>Profile</DropdownMenuItem>
29
- <DropdownMenuItem>Billing</DropdownMenuItem>
30
- <DropdownMenuItem>Team</DropdownMenuItem>
31
- <DropdownMenuItem>Subscription</DropdownMenuItem>
60
+ <DropdownMenuGroup>
61
+ <DropdownMenuItem>
62
+ <User className="mr-2 h-4 w-4" />
63
+ <span>Profile</span>
64
+ <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>
65
+ </DropdownMenuItem>
66
+ ...
67
+ </DropdownMenuGroup>
68
+ ...
69
+ <DropdownMenuItem>
70
+ <SiGithub className="mr-2 h-4 w-4" />
71
+ <span>GitHub</span>
72
+ </DropdownMenuItem>
73
+ ...
32
74
  </DropdownMenuContent>
33
75
  </DropdownMenu>`}
34
76
  >
@@ -36,16 +78,236 @@ export function DropdownMenuDocs() {
36
78
  <DropdownMenuTrigger asChild>
37
79
  <Button variant="outline">Open</Button>
38
80
  </DropdownMenuTrigger>
39
- <DropdownMenuContent>
81
+ <DropdownMenuContent className="w-56">
40
82
  <DropdownMenuLabel>My Account</DropdownMenuLabel>
41
83
  <DropdownMenuSeparator />
42
- <DropdownMenuItem>Profile</DropdownMenuItem>
43
- <DropdownMenuItem>Billing</DropdownMenuItem>
44
- <DropdownMenuItem>Team</DropdownMenuItem>
45
- <DropdownMenuItem>Subscription</DropdownMenuItem>
84
+ <DropdownMenuGroup>
85
+ <DropdownMenuItem>
86
+ <User className="mr-2 h-4 w-4" />
87
+ <span>Profile</span>
88
+ <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>
89
+ </DropdownMenuItem>
90
+ <DropdownMenuItem>
91
+ <CreditCard className="mr-2 h-4 w-4" />
92
+ <span>Billing</span>
93
+ <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>
94
+ </DropdownMenuItem>
95
+ <DropdownMenuItem>
96
+ <Settings className="mr-2 h-4 w-4" />
97
+ <span>Settings</span>
98
+ <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
99
+ </DropdownMenuItem>
100
+ <DropdownMenuItem>
101
+ <Keyboard className="mr-2 h-4 w-4" />
102
+ <span>Keyboard shortcuts</span>
103
+ <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>
104
+ </DropdownMenuItem>
105
+ </DropdownMenuGroup>
106
+ <DropdownMenuSeparator />
107
+ <DropdownMenuGroup>
108
+ <DropdownMenuItem>
109
+ <Users className="mr-2 h-4 w-4" />
110
+ <span>Team</span>
111
+ </DropdownMenuItem>
112
+ <DropdownMenuSub>
113
+ <DropdownMenuSubTrigger>
114
+ <UserPlus className="mr-2 h-4 w-4" />
115
+ <span>Invite users</span>
116
+ </DropdownMenuSubTrigger>
117
+ <DropdownMenuPortal>
118
+ <DropdownMenuSubContent>
119
+ <DropdownMenuItem>
120
+ <Mail className="mr-2 h-4 w-4" />
121
+ <span>Email</span>
122
+ </DropdownMenuItem>
123
+ <DropdownMenuItem>
124
+ <MessageSquare className="mr-2 h-4 w-4" />
125
+ <span>Message</span>
126
+ </DropdownMenuItem>
127
+ <DropdownMenuSeparator />
128
+ <DropdownMenuItem>
129
+ <PlusCircle className="mr-2 h-4 w-4" />
130
+ <span>More...</span>
131
+ </DropdownMenuItem>
132
+ </DropdownMenuSubContent>
133
+ </DropdownMenuPortal>
134
+ </DropdownMenuSub>
135
+ <DropdownMenuItem>
136
+ <Plus className="mr-2 h-4 w-4" />
137
+ <span>New Team</span>
138
+ <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>
139
+ </DropdownMenuItem>
140
+ </DropdownMenuGroup>
141
+ <DropdownMenuSeparator />
142
+ <DropdownMenuItem>
143
+ <SiGithub className="mr-2 h-4 w-4" />
144
+ <span>GitHub</span>
145
+ </DropdownMenuItem>
146
+ <DropdownMenuItem>
147
+ <LifeBuoy className="mr-2 h-4 w-4" />
148
+ <span>Support</span>
149
+ </DropdownMenuItem>
150
+ <DropdownMenuItem disabled>
151
+ <Cloud className="mr-2 h-4 w-4" />
152
+ <span>API</span>
153
+ </DropdownMenuItem>
154
+ <DropdownMenuSeparator />
155
+ <DropdownMenuItem>
156
+ <LogOut className="mr-2 h-4 w-4" />
157
+ <span>Log out</span>
158
+ <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>
159
+ </DropdownMenuItem>
160
+ </DropdownMenuContent>
161
+ </DropdownMenu>
162
+ </ComponentShowcase>
163
+
164
+ <ComponentShowcase
165
+ title="Checkboxes and Radios"
166
+ description="A dropdown menu with checkboxes and radio items."
167
+ code={`<DropdownMenu>
168
+ <DropdownMenuTrigger asChild>
169
+ <Button variant="outline">Open</Button>
170
+ </DropdownMenuTrigger>
171
+ <DropdownMenuContent className="w-56">
172
+ <DropdownMenuLabel>Appearance</DropdownMenuLabel>
173
+ <DropdownMenuSeparator />
174
+ <DropdownMenuCheckboxItem
175
+ checked={showStatusBar}
176
+ onCheckedChange={setShowStatusBar}
177
+ >
178
+ Status Bar
179
+ </DropdownMenuCheckboxItem>
180
+ <DropdownMenuCheckboxItem
181
+ checked={showActivityBar}
182
+ onCheckedChange={setShowActivityBar}
183
+ disabled
184
+ >
185
+ Activity Bar
186
+ </DropdownMenuCheckboxItem>
187
+ <DropdownMenuCheckboxItem
188
+ checked={showPanel}
189
+ onCheckedChange={setShowPanel}
190
+ >
191
+ Panel
192
+ </DropdownMenuCheckboxItem>
193
+ <DropdownMenuSeparator />
194
+ <DropdownMenuLabel>Panel Position</DropdownMenuLabel>
195
+ <DropdownMenuSeparator />
196
+ <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>
197
+ <DropdownMenuRadioItem value="top">Top</DropdownMenuRadioItem>
198
+ <DropdownMenuRadioItem value="bottom">Bottom</DropdownMenuRadioItem>
199
+ <DropdownMenuRadioItem value="right">Right</DropdownMenuRadioItem>
200
+ </DropdownMenuRadioGroup>
201
+ </DropdownMenuContent>
202
+ </DropdownMenu>`}
203
+ >
204
+ <DropdownMenu>
205
+ <DropdownMenuTrigger asChild>
206
+ <Button variant="outline">Open</Button>
207
+ </DropdownMenuTrigger>
208
+ <DropdownMenuContent className="w-56">
209
+ <DropdownMenuLabel>Appearance</DropdownMenuLabel>
210
+ <DropdownMenuSeparator />
211
+ <DropdownMenuCheckboxItem checked={showStatusBar} onCheckedChange={setShowStatusBar}>
212
+ Status Bar
213
+ </DropdownMenuCheckboxItem>
214
+ <DropdownMenuCheckboxItem checked={showActivityBar} onCheckedChange={setShowActivityBar} disabled>
215
+ Activity Bar
216
+ </DropdownMenuCheckboxItem>
217
+ <DropdownMenuCheckboxItem checked={showPanel} onCheckedChange={setShowPanel}>
218
+ Panel
219
+ </DropdownMenuCheckboxItem>
220
+ <DropdownMenuSeparator />
221
+ <DropdownMenuLabel>Panel Position</DropdownMenuLabel>
222
+ <DropdownMenuSeparator />
223
+ <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>
224
+ <DropdownMenuRadioItem value="top">Top</DropdownMenuRadioItem>
225
+ <DropdownMenuRadioItem value="bottom">Bottom</DropdownMenuRadioItem>
226
+ <DropdownMenuRadioItem value="right">Right</DropdownMenuRadioItem>
227
+ </DropdownMenuRadioGroup>
46
228
  </DropdownMenuContent>
47
229
  </DropdownMenu>
48
230
  </ComponentShowcase>
231
+
232
+ <div className="space-y-4">
233
+ <h3 className="text-xl font-semibold">Props</h3>
234
+ <p className="text-sm text-muted-foreground">
235
+ The DropdownMenu component is built on top of{' '}
236
+ <a
237
+ href="https://www.radix-ui.com/primitives/docs/components/dropdown-menu"
238
+ className="underline"
239
+ target="_blank"
240
+ rel="noreferrer"
241
+ >
242
+ Radix UI Dropdown Menu
243
+ </a>
244
+ .
245
+ </p>
246
+
247
+ <h4 className="text-lg font-medium mt-6">DropdownMenu (Root)</h4>
248
+ <PropsTable
249
+ props={[
250
+ {
251
+ name: 'open',
252
+ type: 'boolean',
253
+ description: 'The controlled open state of the dropdown menu.',
254
+ },
255
+ {
256
+ name: 'defaultOpen',
257
+ type: 'boolean',
258
+ description: 'The default open state when uncontrolled.',
259
+ },
260
+ {
261
+ name: 'onOpenChange',
262
+ type: '(open: boolean) => void',
263
+ description: 'Event handler called when the open state changes.',
264
+ },
265
+ {
266
+ name: 'modal',
267
+ type: 'boolean',
268
+ defaultValue: 'true',
269
+ description: 'The modality of the dropdown menu.',
270
+ },
271
+ {
272
+ name: 'dir',
273
+ type: '"ltr" | "rtl"',
274
+ description: 'The reading direction of the dropdown menu.',
275
+ },
276
+ ]}
277
+ />
278
+
279
+ <h4 className="text-lg font-medium mt-6">DropdownMenuCheckboxItem</h4>
280
+ <PropsTable
281
+ props={[
282
+ {
283
+ name: 'checked',
284
+ type: 'boolean | "indeterminate"',
285
+ description: 'The controlled checked state of the item.',
286
+ },
287
+ {
288
+ name: 'onCheckedChange',
289
+ type: '(checked: boolean) => void',
290
+ description: 'Event handler called when the checked state changes.',
291
+ },
292
+ ]}
293
+ />
294
+
295
+ <h4 className="text-lg font-medium mt-6">DropdownMenuRadioGroup</h4>
296
+ <PropsTable
297
+ props={[
298
+ {
299
+ name: 'value',
300
+ type: 'string',
301
+ description: 'The value of the selected item in the group.',
302
+ },
303
+ {
304
+ name: 'onValueChange',
305
+ type: '(value: string) => void',
306
+ description: 'Event handler called when the value changes.',
307
+ },
308
+ ]}
309
+ />
310
+ </div>
49
311
  </ComponentSection>
50
312
  );
51
313
  }
@@ -1,84 +1,163 @@
1
1
  import { ComponentSection, ComponentShowcase } from '@/components/docs/ComponentShowcase';
2
+ import { PropsTable } from '@/components/docs/PropsTable';
2
3
  import { Button } from '@/components/ui/button';
4
+ import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form';
3
5
  import { Input } from '@/components/ui/input';
4
- import { Label } from '@/components/ui/label';
6
+ import { zodResolver } from '@hookform/resolvers/zod';
7
+ import { useForm } from 'react-hook-form';
8
+ import { z } from 'zod';
9
+
10
+ const formSchema = z.object({
11
+ username: z.string().min(2, {
12
+ message: 'Username must be at least 2 characters.',
13
+ }),
14
+ });
5
15
 
6
16
  export function FormDocs() {
17
+ const form = useForm<z.infer<typeof formSchema>>({
18
+ resolver: zodResolver(formSchema),
19
+ defaultValues: {
20
+ username: '',
21
+ },
22
+ });
23
+
24
+ function onSubmit(values: z.infer<typeof formSchema>) {
25
+ console.log(values);
26
+ }
27
+
7
28
  return (
8
- <ComponentSection title="Form" description="Building forms with React Hook Form and Zod validation.">
29
+ <ComponentSection title="Form" description="Building forms with React Hook Form and Zod.">
9
30
  <ComponentShowcase
10
- title="Basic Form"
11
- description="A simple form layout with labels and inputs."
12
- code={`<form className="space-y-4 w-full max-w-sm">
13
- <div className="space-y-2">
14
- <Label htmlFor="email">Email</Label>
15
- <Input type="email" id="email" placeholder="Enter your email" />
16
- </div>
17
- <div className="space-y-2">
18
- <Label htmlFor="password">Password</Label>
19
- <Input type="password" id="password" placeholder="Enter your password" />
20
- </div>
21
- <Button type="submit" className="w-full">Submit</Button>
22
- </form>`}
23
- >
24
- <form className="space-y-4 w-full max-w-sm">
25
- <div className="space-y-2">
26
- <Label htmlFor="email">Email</Label>
27
- <Input type="email" id="email" placeholder="Enter your email" />
28
- </div>
29
- <div className="space-y-2">
30
- <Label htmlFor="password">Password</Label>
31
- <Input type="password" id="password" placeholder="Enter your password" />
32
- </div>
33
- <Button type="submit" className="w-full">
34
- Submit
35
- </Button>
36
- </form>
37
- </ComponentShowcase>
31
+ title="Default"
32
+ description="A simple form with validation."
33
+ code={`"use client"
38
34
 
39
- <ComponentShowcase
40
- title="Inline Form"
41
- description="A horizontal form layout for compact displays."
42
- code={`<form className="flex gap-2 items-end w-full max-w-md">
43
- <div className="flex-1 space-y-2">
44
- <Label htmlFor="inline-email">Email</Label>
45
- <Input type="email" id="inline-email" placeholder="Enter your email" />
46
- </div>
47
- <Button type="submit">Subscribe</Button>
48
- </form>`}
49
- >
50
- <form className="flex gap-2 items-end w-full max-w-md">
51
- <div className="flex-1 space-y-2">
52
- <Label htmlFor="inline-email">Email</Label>
53
- <Input type="email" id="inline-email" placeholder="Enter your email" />
54
- </div>
55
- <Button type="submit">Subscribe</Button>
56
- </form>
57
- </ComponentShowcase>
35
+ import { zodResolver } from "@hookform/resolvers/zod"
36
+ import { useForm } from "react-hook-form"
37
+ import { z } from "zod"
58
38
 
59
- <ComponentShowcase
60
- title="Form with Description"
61
- description="Form fields with helper text below."
62
- code={`<form className="space-y-4 w-full max-w-sm">
63
- <div className="space-y-2">
64
- <Label htmlFor="username">Username</Label>
65
- <Input id="username" placeholder="johndoe" />
66
- <p className="text-sm text-muted-foreground">
67
- This is your public display name.
68
- </p>
69
- </div>
70
- <Button type="submit">Save changes</Button>
71
- </form>`}
39
+ import { Button } from "@/components/ui/button"
40
+ import {
41
+ Form,
42
+ FormControl,
43
+ FormDescription,
44
+ FormField,
45
+ FormItem,
46
+ FormLabel,
47
+ FormMessage,
48
+ } from "@/components/ui/form"
49
+ import { Input } from "@/components/ui/input"
50
+
51
+ const formSchema = z.object({
52
+ username: z.string().min(2, {
53
+ message: "Username must be at least 2 characters.",
54
+ }),
55
+ })
56
+
57
+ export function ProfileForm() {
58
+ const form = useForm<z.infer<typeof formSchema>>({
59
+ resolver: zodResolver(formSchema),
60
+ defaultValues: {
61
+ username: "",
62
+ },
63
+ })
64
+
65
+ function onSubmit(values: z.infer<typeof formSchema>) {
66
+ console.log(values)
67
+ }
68
+
69
+ return (
70
+ <Form {...form}>
71
+ <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
72
+ <FormField
73
+ control={form.control}
74
+ name="username"
75
+ render={({ field }) => (
76
+ <FormItem>
77
+ <FormLabel>Username</FormLabel>
78
+ <FormControl>
79
+ <Input placeholder="shadcn" {...field} />
80
+ </FormControl>
81
+ <FormDescription>
82
+ This is your public display name.
83
+ </FormDescription>
84
+ <FormMessage />
85
+ </FormItem>
86
+ )}
87
+ />
88
+ <Button type="submit">Submit</Button>
89
+ </form>
90
+ </Form>
91
+ )
92
+ }`}
72
93
  >
73
- <form className="space-y-4 w-full max-w-sm">
74
- <div className="space-y-2">
75
- <Label htmlFor="username">Username</Label>
76
- <Input id="username" placeholder="johndoe" />
77
- <p className="text-sm text-muted-foreground">This is your public display name.</p>
78
- </div>
79
- <Button type="submit">Save changes</Button>
80
- </form>
94
+ <Form {...form}>
95
+ <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
96
+ <FormField
97
+ control={form.control}
98
+ name="username"
99
+ render={({ field }) => (
100
+ <FormItem>
101
+ <FormLabel>Username</FormLabel>
102
+ <FormControl>
103
+ <Input placeholder="shadcn" {...field} />
104
+ </FormControl>
105
+ <FormDescription>This is your public display name.</FormDescription>
106
+ <FormMessage />
107
+ </FormItem>
108
+ )}
109
+ />
110
+ <Button type="submit">Submit</Button>
111
+ </form>
112
+ </Form>
81
113
  </ComponentShowcase>
114
+
115
+ <div className="space-y-4">
116
+ <h3 className="text-xl font-semibold">Props</h3>
117
+ <p className="text-sm text-muted-foreground">
118
+ The Form component is built on top of{' '}
119
+ <a href="https://react-hook-form.com/" className="underline" target="_blank" rel="noreferrer">
120
+ React Hook Form
121
+ </a>
122
+ .
123
+ </p>
124
+
125
+ <h4 className="text-lg font-medium mt-6">FormField</h4>
126
+ <PropsTable
127
+ props={[
128
+ {
129
+ name: 'control',
130
+ type: 'Control<TFieldValues>',
131
+ description: 'The control object from useForm.',
132
+ },
133
+ {
134
+ name: 'name',
135
+ type: 'FieldPath<TFieldValues>',
136
+ description: 'The name of the field.',
137
+ },
138
+ {
139
+ name: 'render',
140
+ type: '({ field }) => React.ReactElement',
141
+ description: 'Render prop for the field.',
142
+ },
143
+ ]}
144
+ />
145
+
146
+ <h4 className="text-lg font-medium mt-6">FormItem</h4>
147
+ <p className="text-sm text-muted-foreground">Context provider for form fields.</p>
148
+
149
+ <h4 className="text-lg font-medium mt-6">FormLabel</h4>
150
+ <p className="text-sm text-muted-foreground">Wrapper around Label with error state handling.</p>
151
+
152
+ <h4 className="text-lg font-medium mt-6">FormControl</h4>
153
+ <p className="text-sm text-muted-foreground">Wrapper around the input element to handle accessibility.</p>
154
+
155
+ <h4 className="text-lg font-medium mt-6">FormDescription</h4>
156
+ <p className="text-sm text-muted-foreground">Helper text for the field.</p>
157
+
158
+ <h4 className="text-lg font-medium mt-6">FormMessage</h4>
159
+ <p className="text-sm text-muted-foreground">Displays error messages.</p>
160
+ </div>
82
161
  </ComponentSection>
83
162
  );
84
163
  }
@@ -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
  import { Button } from '@/components/ui/button';
4
5
  import { HoverCard, HoverCardContent, HoverCardTrigger } from '@/components/ui/hover-card';
@@ -9,7 +10,7 @@ export function HoverCardDocs() {
9
10
  <ComponentSection title="Hover Card" description="For sighted users to preview content available behind a link.">
10
11
  <ComponentShowcase
11
12
  title="Default"
12
- description="A hover card showing user profile information."
13
+ description="A hover card showing user details."
13
14
  code={`<HoverCard>
14
15
  <HoverCardTrigger asChild>
15
16
  <Button variant="link">@nextjs</Button>
@@ -22,10 +23,14 @@ export function HoverCardDocs() {
22
23
  </Avatar>
23
24
  <div className="space-y-1">
24
25
  <h4 className="text-sm font-semibold">@nextjs</h4>
25
- <p className="text-sm">The React Framework – created and maintained by @vercel.</p>
26
+ <p className="text-sm">
27
+ The React Framework – created and maintained by @vercel.
28
+ </p>
26
29
  <div className="flex items-center pt-2">
27
- <CalendarDays className="mr-2 h-4 w-4 opacity-70" />
28
- <span className="text-xs text-muted-foreground">Joined December 2021</span>
30
+ <CalendarDays className="mr-2 h-4 w-4 opacity-70" />{" "}
31
+ <span className="text-xs text-muted-foreground">
32
+ Joined December 2021
33
+ </span>
29
34
  </div>
30
35
  </div>
31
36
  </div>
@@ -46,7 +51,7 @@ export function HoverCardDocs() {
46
51
  <h4 className="text-sm font-semibold">@nextjs</h4>
47
52
  <p className="text-sm">The React Framework – created and maintained by @vercel.</p>
48
53
  <div className="flex items-center pt-2">
49
- <CalendarDays className="mr-2 h-4 w-4 opacity-70" />
54
+ <CalendarDays className="mr-2 h-4 w-4 opacity-70" />{' '}
50
55
  <span className="text-xs text-muted-foreground">Joined December 2021</span>
51
56
  </div>
52
57
  </div>
@@ -54,6 +59,78 @@ export function HoverCardDocs() {
54
59
  </HoverCardContent>
55
60
  </HoverCard>
56
61
  </ComponentShowcase>
62
+
63
+ <div className="space-y-4">
64
+ <h3 className="text-xl font-semibold">Props</h3>
65
+ <p className="text-sm text-muted-foreground">
66
+ The Hover Card component is built on top of{' '}
67
+ <a
68
+ href="https://www.radix-ui.com/primitives/docs/components/hover-card"
69
+ className="underline"
70
+ target="_blank"
71
+ rel="noreferrer"
72
+ >
73
+ Radix UI Hover Card
74
+ </a>
75
+ .
76
+ </p>
77
+
78
+ <h4 className="text-lg font-medium mt-6">HoverCard (Root)</h4>
79
+ <PropsTable
80
+ props={[
81
+ {
82
+ name: 'open',
83
+ type: 'boolean',
84
+ description: 'The controlled open state of the hover card.',
85
+ },
86
+ {
87
+ name: 'defaultOpen',
88
+ type: 'boolean',
89
+ description: 'The default open state when uncontrolled.',
90
+ },
91
+ {
92
+ name: 'onOpenChange',
93
+ type: '(open: boolean) => void',
94
+ description: 'Event handler called when the open state changes.',
95
+ },
96
+ {
97
+ name: 'openDelay',
98
+ type: 'number',
99
+ defaultValue: '700',
100
+ description: 'The duration from when the mouse enters the trigger until the hover card opens.',
101
+ },
102
+ {
103
+ name: 'closeDelay',
104
+ type: 'number',
105
+ defaultValue: '300',
106
+ description: 'The duration from when the mouse leaves the trigger until the hover card closes.',
107
+ },
108
+ ]}
109
+ />
110
+
111
+ <h4 className="text-lg font-medium mt-6">HoverCardContent</h4>
112
+ <PropsTable
113
+ props={[
114
+ {
115
+ name: 'forceMount',
116
+ type: 'boolean',
117
+ description: 'Used to force mounting when more control is needed.',
118
+ },
119
+ {
120
+ name: 'sideOffset',
121
+ type: 'number',
122
+ defaultValue: '4',
123
+ description: 'The distance in pixels from the trigger.',
124
+ },
125
+ {
126
+ name: 'align',
127
+ type: '"start" | "center" | "end"',
128
+ defaultValue: '"center"',
129
+ description: 'The preferred alignment against the trigger.',
130
+ },
131
+ ]}
132
+ />
133
+ </div>
57
134
  </ComponentSection>
58
135
  );
59
136
  }