@gv-tech/design-system 2.5.0 → 2.5.2

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 (440) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +5 -2
  3. package/.agent/skills/dogfood-components/SKILL.md +0 -34
  4. package/.agent/skills/maintain-component/SKILL.md +0 -77
  5. package/.agent/workflows/native-playground.md +0 -93
  6. package/.github/CODEOWNERS +0 -2
  7. package/.github/CONTRIBUTING.md +0 -42
  8. package/.github/FUNDING.yml +0 -4
  9. package/.github/PULL_REQUEST_TEMPLATE/build.md +0 -5
  10. package/.github/PULL_REQUEST_TEMPLATE/standard.md +0 -3
  11. package/.github/RELEASING.md +0 -37
  12. package/.github/copilot-instructions.md +0 -61
  13. package/.github/workflows/ci.yml +0 -91
  14. package/.github/workflows/codeql-analysis.yml +0 -34
  15. package/.github/workflows/release-please.yml +0 -79
  16. package/.husky/pre-commit +0 -1
  17. package/.prettierignore +0 -3
  18. package/.release-please-manifest.json +0 -9
  19. package/.tool-versions +0 -1
  20. package/.vscode/launch.json +0 -22
  21. package/.vscode/mcp.json +0 -8
  22. package/.vscode/settings.json +0 -30
  23. package/.yarnrc.yml +0 -7
  24. package/SECURITY.md +0 -9
  25. package/apps/.gitkeep +0 -0
  26. package/apps/native-playground/CHANGELOG.md +0 -8
  27. package/apps/native-playground/app.json +0 -37
  28. package/apps/native-playground/assets/fonts/.gitkeep +0 -0
  29. package/apps/native-playground/assets/images/adaptive-icon.png +0 -0
  30. package/apps/native-playground/assets/images/favicon.png +0 -0
  31. package/apps/native-playground/assets/images/icon.png +0 -0
  32. package/apps/native-playground/assets/images/splash-icon.png +0 -0
  33. package/apps/native-playground/babel.config.js +0 -6
  34. package/apps/native-playground/eas.json +0 -25
  35. package/apps/native-playground/index.js +0 -8
  36. package/apps/native-playground/metro.config.js +0 -26
  37. package/apps/native-playground/nativewind-env.d.ts +0 -1
  38. package/apps/native-playground/package.json +0 -23
  39. package/apps/native-playground/project.json +0 -15
  40. package/apps/native-playground/src/app/App.tsx +0 -842
  41. package/apps/native-playground/src/global.css +0 -49
  42. package/apps/native-playground/tailwind.config.js +0 -49
  43. package/apps/native-playground/tsconfig.app.json +0 -24
  44. package/apps/native-playground/tsconfig.json +0 -23
  45. package/apps/native-playground/tsconfig.spec.json +0 -24
  46. package/apps/playground-web/CHANGELOG.md +0 -8
  47. package/apps/playground-web/index.html +0 -13
  48. package/apps/playground-web/package.json +0 -31
  49. package/apps/playground-web/public/favicon.png +0 -0
  50. package/apps/playground-web/public/index.demo.html +0 -40
  51. package/apps/playground-web/public/logo192.png +0 -0
  52. package/apps/playground-web/public/logo512.png +0 -0
  53. package/apps/playground-web/public/manifest.json +0 -25
  54. package/apps/playground-web/public/robots.txt +0 -2
  55. package/apps/playground-web/src/App.tsx +0 -179
  56. package/apps/playground-web/src/components/docs/CodeBlock.tsx +0 -34
  57. package/apps/playground-web/src/components/docs/CombinedDocsLayout.tsx +0 -103
  58. package/apps/playground-web/src/components/docs/ComponentShowcase.tsx +0 -96
  59. package/apps/playground-web/src/components/docs/ErrorBoundary.tsx +0 -55
  60. package/apps/playground-web/src/components/docs/Footer.tsx +0 -146
  61. package/apps/playground-web/src/components/docs/PropsTable.tsx +0 -43
  62. package/apps/playground-web/src/components/docs/Search.tsx +0 -75
  63. package/apps/playground-web/src/components/docs/Sidebar.tsx +0 -77
  64. package/apps/playground-web/src/components/docs/ThemeToggle.tsx +0 -19
  65. package/apps/playground-web/src/components/docs/index.ts +0 -9
  66. package/apps/playground-web/src/config/docs.ts +0 -293
  67. package/apps/playground-web/src/globals.css +0 -148
  68. package/apps/playground-web/src/hooks/useDocMetadata.ts +0 -34
  69. package/apps/playground-web/src/hooks/usePackageManager.tsx +0 -42
  70. package/apps/playground-web/src/lib/react-native-shim.js +0 -34
  71. package/apps/playground-web/src/main.tsx +0 -11
  72. package/apps/playground-web/src/pages/index.ts +0 -4
  73. package/apps/playground-web/src/pages/native/AccordionDocs.tsx +0 -85
  74. package/apps/playground-web/src/pages/native/AlertDialogDocs.tsx +0 -128
  75. package/apps/playground-web/src/pages/native/AlertDocs.tsx +0 -89
  76. package/apps/playground-web/src/pages/native/AspectRatioDocs.tsx +0 -52
  77. package/apps/playground-web/src/pages/native/AvatarDocs.tsx +0 -92
  78. package/apps/playground-web/src/pages/native/BadgeDocs.tsx +0 -63
  79. package/apps/playground-web/src/pages/native/BreadcrumbDocs.tsx +0 -71
  80. package/apps/playground-web/src/pages/native/ButtonDocs.tsx +0 -103
  81. package/apps/playground-web/src/pages/native/CalendarDocs.tsx +0 -74
  82. package/apps/playground-web/src/pages/native/CardDocs.tsx +0 -75
  83. package/apps/playground-web/src/pages/native/CarouselDocs.tsx +0 -113
  84. package/apps/playground-web/src/pages/native/ChartDocs.tsx +0 -115
  85. package/apps/playground-web/src/pages/native/CheckboxDocs.tsx +0 -38
  86. package/apps/playground-web/src/pages/native/CollapsibleDocs.tsx +0 -89
  87. package/apps/playground-web/src/pages/native/CommandDocs.tsx +0 -170
  88. package/apps/playground-web/src/pages/native/ContextMenuDocs.tsx +0 -121
  89. package/apps/playground-web/src/pages/native/DialogDocs.tsx +0 -132
  90. package/apps/playground-web/src/pages/native/DrawerDocs.tsx +0 -158
  91. package/apps/playground-web/src/pages/native/DropdownMenuDocs.tsx +0 -168
  92. package/apps/playground-web/src/pages/native/HoverCardDocs.tsx +0 -119
  93. package/apps/playground-web/src/pages/native/InputDocs.tsx +0 -86
  94. package/apps/playground-web/src/pages/native/LabelDocs.tsx +0 -55
  95. package/apps/playground-web/src/pages/native/MenubarDocs.tsx +0 -197
  96. package/apps/playground-web/src/pages/native/NavigationMenuDocs.tsx +0 -190
  97. package/apps/playground-web/src/pages/native/PaginationDocs.tsx +0 -70
  98. package/apps/playground-web/src/pages/native/PopoverDocs.tsx +0 -156
  99. package/apps/playground-web/src/pages/native/ProgressDocs.tsx +0 -61
  100. package/apps/playground-web/src/pages/native/RadioGroupDocs.tsx +0 -125
  101. package/apps/playground-web/src/pages/native/ResizableDocs.tsx +0 -118
  102. package/apps/playground-web/src/pages/native/ScrollAreaDocs.tsx +0 -92
  103. package/apps/playground-web/src/pages/native/SearchDocs.tsx +0 -150
  104. package/apps/playground-web/src/pages/native/SelectDocs.tsx +0 -141
  105. package/apps/playground-web/src/pages/native/SeparatorDocs.tsx +0 -72
  106. package/apps/playground-web/src/pages/native/SheetDocs.tsx +0 -140
  107. package/apps/playground-web/src/pages/native/SkeletonDocs.tsx +0 -44
  108. package/apps/playground-web/src/pages/native/SliderDocs.tsx +0 -118
  109. package/apps/playground-web/src/pages/native/SonnerDocs.tsx +0 -111
  110. package/apps/playground-web/src/pages/native/SwitchDocs.tsx +0 -87
  111. package/apps/playground-web/src/pages/native/TableDocs.tsx +0 -67
  112. package/apps/playground-web/src/pages/native/TabsDocs.tsx +0 -175
  113. package/apps/playground-web/src/pages/native/TextareaDocs.tsx +0 -61
  114. package/apps/playground-web/src/pages/native/ThemeToggleDocs.tsx +0 -288
  115. package/apps/playground-web/src/pages/native/ToastDocs.tsx +0 -124
  116. package/apps/playground-web/src/pages/native/ToggleDocs.tsx +0 -81
  117. package/apps/playground-web/src/pages/native/ToggleGroupDocs.tsx +0 -128
  118. package/apps/playground-web/src/pages/native/TooltipDocs.tsx +0 -140
  119. package/apps/playground-web/src/pages/native/index.ts +0 -47
  120. package/apps/playground-web/src/pages/shared/ColorTokensDocs.tsx +0 -234
  121. package/apps/playground-web/src/pages/shared/GettingStarted.tsx +0 -413
  122. package/apps/playground-web/src/pages/web/AccordionDocs.tsx +0 -194
  123. package/apps/playground-web/src/pages/web/AlertDialogDocs.tsx +0 -157
  124. package/apps/playground-web/src/pages/web/AlertDocs.tsx +0 -110
  125. package/apps/playground-web/src/pages/web/AspectRatioDocs.tsx +0 -94
  126. package/apps/playground-web/src/pages/web/AvatarDocs.tsx +0 -81
  127. package/apps/playground-web/src/pages/web/BadgeDocs.tsx +0 -66
  128. package/apps/playground-web/src/pages/web/BreadcrumbDocs.tsx +0 -93
  129. package/apps/playground-web/src/pages/web/ButtonDocs.tsx +0 -129
  130. package/apps/playground-web/src/pages/web/CalendarDocs.tsx +0 -78
  131. package/apps/playground-web/src/pages/web/CardDocs.tsx +0 -115
  132. package/apps/playground-web/src/pages/web/CarouselDocs.tsx +0 -176
  133. package/apps/playground-web/src/pages/web/ChartDocs.tsx +0 -151
  134. package/apps/playground-web/src/pages/web/CheckboxDocs.tsx +0 -95
  135. package/apps/playground-web/src/pages/web/CollapsibleDocs.tsx +0 -111
  136. package/apps/playground-web/src/pages/web/CommandDocs.tsx +0 -219
  137. package/apps/playground-web/src/pages/web/ContextMenuDocs.tsx +0 -164
  138. package/apps/playground-web/src/pages/web/DialogDocs.tsx +0 -175
  139. package/apps/playground-web/src/pages/web/DrawerDocs.tsx +0 -283
  140. package/apps/playground-web/src/pages/web/DropdownMenuDocs.tsx +0 -319
  141. package/apps/playground-web/src/pages/web/FormDocs.tsx +0 -175
  142. package/apps/playground-web/src/pages/web/HoverCardDocs.tsx +0 -151
  143. package/apps/playground-web/src/pages/web/InputDocs.tsx +0 -118
  144. package/apps/playground-web/src/pages/web/LabelDocs.tsx +0 -59
  145. package/apps/playground-web/src/pages/web/MenubarDocs.tsx +0 -296
  146. package/apps/playground-web/src/pages/web/NavigationMenuDocs.tsx +0 -263
  147. package/apps/playground-web/src/pages/web/PaginationDocs.tsx +0 -102
  148. package/apps/playground-web/src/pages/web/PopoverDocs.tsx +0 -189
  149. package/apps/playground-web/src/pages/web/ProgressDocs.tsx +0 -70
  150. package/apps/playground-web/src/pages/web/RadioGroupDocs.tsx +0 -137
  151. package/apps/playground-web/src/pages/web/ResizableDocs.tsx +0 -143
  152. package/apps/playground-web/src/pages/web/ScrollAreaDocs.tsx +0 -107
  153. package/apps/playground-web/src/pages/web/SearchDocs.tsx +0 -203
  154. package/apps/playground-web/src/pages/web/SelectDocs.tsx +0 -164
  155. package/apps/playground-web/src/pages/web/SeparatorDocs.tsx +0 -88
  156. package/apps/playground-web/src/pages/web/SheetDocs.tsx +0 -186
  157. package/apps/playground-web/src/pages/web/SkeletonDocs.tsx +0 -53
  158. package/apps/playground-web/src/pages/web/SliderDocs.tsx +0 -119
  159. package/apps/playground-web/src/pages/web/SonnerDocs.tsx +0 -126
  160. package/apps/playground-web/src/pages/web/SwitchDocs.tsx +0 -91
  161. package/apps/playground-web/src/pages/web/TableDocs.tsx +0 -148
  162. package/apps/playground-web/src/pages/web/TabsDocs.tsx +0 -241
  163. package/apps/playground-web/src/pages/web/TextareaDocs.tsx +0 -65
  164. package/apps/playground-web/src/pages/web/ThemeToggleDocs.tsx +0 -303
  165. package/apps/playground-web/src/pages/web/ToastDocs.tsx +0 -149
  166. package/apps/playground-web/src/pages/web/ToggleDocs.tsx +0 -85
  167. package/apps/playground-web/src/pages/web/ToggleGroupDocs.tsx +0 -140
  168. package/apps/playground-web/src/pages/web/TooltipDocs.tsx +0 -150
  169. package/apps/playground-web/src/pages/web/index.ts +0 -47
  170. package/apps/playground-web/src/routes/doc-routes.tsx +0 -363
  171. package/apps/playground-web/tailwind.config.js +0 -47
  172. package/apps/playground-web/tsconfig.app.json +0 -16
  173. package/apps/playground-web/tsconfig.json +0 -4
  174. package/apps/playground-web/tsconfig.node.json +0 -13
  175. package/apps/playground-web/vite.config.ts +0 -41
  176. package/components.json +0 -20
  177. package/docs/architecture-pivot.md +0 -165
  178. package/docs/native-setup-decision.md +0 -57
  179. package/docs/phase-1-tracker.md +0 -144
  180. package/docs/release-tooling-evaluation.md +0 -67
  181. package/docs/universal-implementation.md +0 -195
  182. package/docs/update-plan.md +0 -268
  183. package/eslint.config.mjs +0 -13
  184. package/nx.json +0 -50
  185. package/packages/.gitkeep +0 -0
  186. package/packages/design-tokens/CHANGELOG.md +0 -8
  187. package/packages/design-tokens/package.json +0 -20
  188. package/packages/design-tokens/src/index.ts +0 -35
  189. package/packages/design-tokens/src/palette.ts +0 -36
  190. package/packages/design-tokens/src/radii.ts +0 -26
  191. package/packages/design-tokens/src/shadows.ts +0 -16
  192. package/packages/design-tokens/src/spacing.ts +0 -33
  193. package/packages/design-tokens/src/theme.ts +0 -54
  194. package/packages/design-tokens/src/typography.ts +0 -36
  195. package/packages/design-tokens/tsconfig.json +0 -17
  196. package/packages/ui-core/CHANGELOG.md +0 -8
  197. package/packages/ui-core/package.json +0 -40
  198. package/packages/ui-core/src/contracts/accordion.ts +0 -23
  199. package/packages/ui-core/src/contracts/alert-dialog.ts +0 -48
  200. package/packages/ui-core/src/contracts/alert.ts +0 -17
  201. package/packages/ui-core/src/contracts/aspect-ratio.ts +0 -7
  202. package/packages/ui-core/src/contracts/avatar.ts +0 -17
  203. package/packages/ui-core/src/contracts/badge.ts +0 -7
  204. package/packages/ui-core/src/contracts/breadcrumb.ts +0 -37
  205. package/packages/ui-core/src/contracts/button.ts +0 -17
  206. package/packages/ui-core/src/contracts/calendar.ts +0 -4
  207. package/packages/ui-core/src/contracts/card.ts +0 -11
  208. package/packages/ui-core/src/contracts/carousel.ts +0 -29
  209. package/packages/ui-core/src/contracts/chart.ts +0 -31
  210. package/packages/ui-core/src/contracts/checkbox.ts +0 -11
  211. package/packages/ui-core/src/contracts/collapsible.ts +0 -21
  212. package/packages/ui-core/src/contracts/command.ts +0 -43
  213. package/packages/ui-core/src/contracts/context-menu.ts +0 -78
  214. package/packages/ui-core/src/contracts/dialog.ts +0 -29
  215. package/packages/ui-core/src/contracts/drawer.ts +0 -39
  216. package/packages/ui-core/src/contracts/dropdown-menu.ts +0 -87
  217. package/packages/ui-core/src/contracts/form.ts +0 -29
  218. package/packages/ui-core/src/contracts/hover-card.ts +0 -21
  219. package/packages/ui-core/src/contracts/input.ts +0 -11
  220. package/packages/ui-core/src/contracts/label.ts +0 -7
  221. package/packages/ui-core/src/contracts/menubar.ts +0 -86
  222. package/packages/ui-core/src/contracts/navigation-menu.ts +0 -55
  223. package/packages/ui-core/src/contracts/pagination.ts +0 -38
  224. package/packages/ui-core/src/contracts/popover.ts +0 -28
  225. package/packages/ui-core/src/contracts/progress.ts +0 -4
  226. package/packages/ui-core/src/contracts/radio.ts +0 -16
  227. package/packages/ui-core/src/contracts/resizable.ts +0 -36
  228. package/packages/ui-core/src/contracts/scroll-area.ts +0 -15
  229. package/packages/ui-core/src/contracts/search.ts +0 -13
  230. package/packages/ui-core/src/contracts/select.ts +0 -64
  231. package/packages/ui-core/src/contracts/separator.ts +0 -5
  232. package/packages/ui-core/src/contracts/sheet.ts +0 -58
  233. package/packages/ui-core/src/contracts/skeleton.ts +0 -6
  234. package/packages/ui-core/src/contracts/slider.ts +0 -15
  235. package/packages/ui-core/src/contracts/sonner.ts +0 -15
  236. package/packages/ui-core/src/contracts/switch.ts +0 -11
  237. package/packages/ui-core/src/contracts/table.ts +0 -41
  238. package/packages/ui-core/src/contracts/tabs.ts +0 -31
  239. package/packages/ui-core/src/contracts/text.ts +0 -12
  240. package/packages/ui-core/src/contracts/textarea.ts +0 -7
  241. package/packages/ui-core/src/contracts/theme-provider.ts +0 -14
  242. package/packages/ui-core/src/contracts/theme-toggle.ts +0 -15
  243. package/packages/ui-core/src/contracts/toast.ts +0 -15
  244. package/packages/ui-core/src/contracts/toaster.ts +0 -3
  245. package/packages/ui-core/src/contracts/toggle-group.ts +0 -23
  246. package/packages/ui-core/src/contracts/toggle.ts +0 -49
  247. package/packages/ui-core/src/contracts/tooltip.ts +0 -28
  248. package/packages/ui-core/src/index.ts +0 -327
  249. package/packages/ui-core/tsconfig.json +0 -18
  250. package/packages/ui-native/CHANGELOG.md +0 -8
  251. package/packages/ui-native/package.json +0 -76
  252. package/packages/ui-native/src/accordion.tsx +0 -93
  253. package/packages/ui-native/src/alert-dialog.tsx +0 -123
  254. package/packages/ui-native/src/alert.tsx +0 -50
  255. package/packages/ui-native/src/aspect-ratio.tsx +0 -9
  256. package/packages/ui-native/src/avatar.tsx +0 -38
  257. package/packages/ui-native/src/badge.tsx +0 -51
  258. package/packages/ui-native/src/breadcrumb.tsx +0 -9
  259. package/packages/ui-native/src/button.test.tsx +0 -27
  260. package/packages/ui-native/src/button.tsx +0 -75
  261. package/packages/ui-native/src/calendar.tsx +0 -9
  262. package/packages/ui-native/src/card.test.tsx +0 -33
  263. package/packages/ui-native/src/card.tsx +0 -56
  264. package/packages/ui-native/src/carousel.tsx +0 -9
  265. package/packages/ui-native/src/chart.tsx +0 -9
  266. package/packages/ui-native/src/checkbox.test.tsx +0 -58
  267. package/packages/ui-native/src/checkbox.tsx +0 -31
  268. package/packages/ui-native/src/collapsible.test.tsx +0 -50
  269. package/packages/ui-native/src/collapsible.tsx +0 -15
  270. package/packages/ui-native/src/command.tsx +0 -9
  271. package/packages/ui-native/src/context-menu.tsx +0 -9
  272. package/packages/ui-native/src/dialog.test.tsx +0 -91
  273. package/packages/ui-native/src/dialog.tsx +0 -121
  274. package/packages/ui-native/src/drawer.tsx +0 -9
  275. package/packages/ui-native/src/dropdown-menu.tsx +0 -9
  276. package/packages/ui-native/src/form.tsx +0 -9
  277. package/packages/ui-native/src/hover-card.tsx +0 -9
  278. package/packages/ui-native/src/index.ts +0 -209
  279. package/packages/ui-native/src/input.test.tsx +0 -27
  280. package/packages/ui-native/src/input.tsx +0 -27
  281. package/packages/ui-native/src/label.tsx +0 -29
  282. package/packages/ui-native/src/lib/render-native.tsx +0 -17
  283. package/packages/ui-native/src/lib/utils.ts +0 -6
  284. package/packages/ui-native/src/menubar.tsx +0 -9
  285. package/packages/ui-native/src/nativewind-env.d.ts +0 -1
  286. package/packages/ui-native/src/navigation-menu.tsx +0 -9
  287. package/packages/ui-native/src/pagination.tsx +0 -9
  288. package/packages/ui-native/src/popover.tsx +0 -9
  289. package/packages/ui-native/src/progress.tsx +0 -9
  290. package/packages/ui-native/src/radio-group.test.tsx +0 -77
  291. package/packages/ui-native/src/radio-group.tsx +0 -42
  292. package/packages/ui-native/src/resizable.tsx +0 -25
  293. package/packages/ui-native/src/scroll-area.tsx +0 -9
  294. package/packages/ui-native/src/search.tsx +0 -17
  295. package/packages/ui-native/src/select.tsx +0 -229
  296. package/packages/ui-native/src/separator.tsx +0 -20
  297. package/packages/ui-native/src/sheet.test.tsx +0 -93
  298. package/packages/ui-native/src/sheet.tsx +0 -127
  299. package/packages/ui-native/src/skeleton.test.tsx +0 -29
  300. package/packages/ui-native/src/skeleton.tsx +0 -31
  301. package/packages/ui-native/src/slider.tsx +0 -9
  302. package/packages/ui-native/src/sonner.tsx +0 -9
  303. package/packages/ui-native/src/switch.tsx +0 -34
  304. package/packages/ui-native/src/table.tsx +0 -73
  305. package/packages/ui-native/src/tabs.tsx +0 -74
  306. package/packages/ui-native/src/text.test.tsx +0 -24
  307. package/packages/ui-native/src/text.tsx +0 -43
  308. package/packages/ui-native/src/textarea.test.tsx +0 -27
  309. package/packages/ui-native/src/textarea.tsx +0 -29
  310. package/packages/ui-native/src/theme-provider.tsx +0 -6
  311. package/packages/ui-native/src/theme-toggle.tsx +0 -11
  312. package/packages/ui-native/src/toast.test.tsx +0 -61
  313. package/packages/ui-native/src/toast.tsx +0 -88
  314. package/packages/ui-native/src/toaster.tsx +0 -9
  315. package/packages/ui-native/src/toggle-group.tsx +0 -78
  316. package/packages/ui-native/src/toggle.tsx +0 -35
  317. package/packages/ui-native/src/tooltip.tsx +0 -44
  318. package/packages/ui-native/tsconfig.json +0 -23
  319. package/packages/ui-native/vite.config.ts +0 -17
  320. package/packages/ui-web/CHANGELOG.md +0 -8
  321. package/packages/ui-web/package.json +0 -84
  322. package/packages/ui-web/src/accordion.test.tsx +0 -86
  323. package/packages/ui-web/src/accordion.tsx +0 -58
  324. package/packages/ui-web/src/alert-dialog.test.tsx +0 -91
  325. package/packages/ui-web/src/alert-dialog.tsx +0 -121
  326. package/packages/ui-web/src/alert.test.tsx +0 -47
  327. package/packages/ui-web/src/alert.tsx +0 -49
  328. package/packages/ui-web/src/aspect-ratio.test.tsx +0 -34
  329. package/packages/ui-web/src/aspect-ratio.tsx +0 -7
  330. package/packages/ui-web/src/avatar.test.tsx +0 -33
  331. package/packages/ui-web/src/avatar.tsx +0 -40
  332. package/packages/ui-web/src/badge.test.tsx +0 -24
  333. package/packages/ui-web/src/badge.tsx +0 -34
  334. package/packages/ui-web/src/breadcrumb.tsx +0 -105
  335. package/packages/ui-web/src/button.test.tsx +0 -62
  336. package/packages/ui-web/src/button.tsx +0 -47
  337. package/packages/ui-web/src/calendar.test.tsx +0 -23
  338. package/packages/ui-web/src/calendar.tsx +0 -163
  339. package/packages/ui-web/src/card.test.tsx +0 -35
  340. package/packages/ui-web/src/card.tsx +0 -46
  341. package/packages/ui-web/src/carousel.test.tsx +0 -37
  342. package/packages/ui-web/src/carousel.tsx +0 -234
  343. package/packages/ui-web/src/chart.test.tsx +0 -62
  344. package/packages/ui-web/src/chart.tsx +0 -296
  345. package/packages/ui-web/src/checkbox.test.tsx +0 -30
  346. package/packages/ui-web/src/checkbox.tsx +0 -31
  347. package/packages/ui-web/src/collapsible.test.tsx +0 -51
  348. package/packages/ui-web/src/collapsible.tsx +0 -15
  349. package/packages/ui-web/src/command.test.tsx +0 -79
  350. package/packages/ui-web/src/command.tsx +0 -154
  351. package/packages/ui-web/src/context-menu.test.tsx +0 -37
  352. package/packages/ui-web/src/context-menu.tsx +0 -208
  353. package/packages/ui-web/src/dialog.test.tsx +0 -66
  354. package/packages/ui-web/src/dialog.tsx +0 -95
  355. package/packages/ui-web/src/drawer.test.tsx +0 -68
  356. package/packages/ui-web/src/drawer.tsx +0 -110
  357. package/packages/ui-web/src/dropdown-menu.test.tsx +0 -93
  358. package/packages/ui-web/src/dropdown-menu.tsx +0 -212
  359. package/packages/ui-web/src/form.test.tsx +0 -84
  360. package/packages/ui-web/src/form.tsx +0 -160
  361. package/packages/ui-web/src/hooks/use-theme.ts +0 -15
  362. package/packages/ui-web/src/hooks/use-toast.ts +0 -189
  363. package/packages/ui-web/src/hover-card.test.tsx +0 -48
  364. package/packages/ui-web/src/hover-card.tsx +0 -35
  365. package/packages/ui-web/src/index.ts +0 -474
  366. package/packages/ui-web/src/input.test.tsx +0 -33
  367. package/packages/ui-web/src/input.tsx +0 -23
  368. package/packages/ui-web/src/label.test.tsx +0 -27
  369. package/packages/ui-web/src/label.tsx +0 -21
  370. package/packages/ui-web/src/lib/utils.ts +0 -6
  371. package/packages/ui-web/src/menubar.test.tsx +0 -92
  372. package/packages/ui-web/src/menubar.tsx +0 -244
  373. package/packages/ui-web/src/navigation-menu.test.tsx +0 -53
  374. package/packages/ui-web/src/navigation-menu.tsx +0 -143
  375. package/packages/ui-web/src/pagination.test.tsx +0 -57
  376. package/packages/ui-web/src/pagination.tsx +0 -107
  377. package/packages/ui-web/src/popover.test.tsx +0 -31
  378. package/packages/ui-web/src/popover.tsx +0 -45
  379. package/packages/ui-web/src/progress.test.tsx +0 -18
  380. package/packages/ui-web/src/progress.tsx +0 -28
  381. package/packages/ui-web/src/radio-group.test.tsx +0 -39
  382. package/packages/ui-web/src/radio-group.tsx +0 -41
  383. package/packages/ui-web/src/resizable.test.tsx +0 -23
  384. package/packages/ui-web/src/resizable.tsx +0 -59
  385. package/packages/ui-web/src/scroll-area.test.tsx +0 -15
  386. package/packages/ui-web/src/scroll-area.tsx +0 -42
  387. package/packages/ui-web/src/search.test.tsx +0 -81
  388. package/packages/ui-web/src/search.tsx +0 -87
  389. package/packages/ui-web/src/select.test.tsx +0 -42
  390. package/packages/ui-web/src/select.tsx +0 -169
  391. package/packages/ui-web/src/separator.test.tsx +0 -16
  392. package/packages/ui-web/src/separator.tsx +0 -24
  393. package/packages/ui-web/src/setupTests.ts +0 -114
  394. package/packages/ui-web/src/sheet.test.tsx +0 -48
  395. package/packages/ui-web/src/sheet.tsx +0 -136
  396. package/packages/ui-web/src/skeleton.test.tsx +0 -13
  397. package/packages/ui-web/src/skeleton.tsx +0 -10
  398. package/packages/ui-web/src/slider.test.tsx +0 -18
  399. package/packages/ui-web/src/slider.tsx +0 -27
  400. package/packages/ui-web/src/sonner.test.tsx +0 -13
  401. package/packages/ui-web/src/sonner.tsx +0 -32
  402. package/packages/ui-web/src/switch.test.tsx +0 -22
  403. package/packages/ui-web/src/switch.tsx +0 -31
  404. package/packages/ui-web/src/table.test.tsx +0 -29
  405. package/packages/ui-web/src/table.tsx +0 -104
  406. package/packages/ui-web/src/tabs.test.tsx +0 -43
  407. package/packages/ui-web/src/tabs.tsx +0 -62
  408. package/packages/ui-web/src/text.test.tsx +0 -34
  409. package/packages/ui-web/src/text.tsx +0 -55
  410. package/packages/ui-web/src/textarea.test.tsx +0 -21
  411. package/packages/ui-web/src/textarea.tsx +0 -25
  412. package/packages/ui-web/src/theme-provider.tsx +0 -15
  413. package/packages/ui-web/src/theme-toggle.test.tsx +0 -49
  414. package/packages/ui-web/src/theme-toggle.tsx +0 -92
  415. package/packages/ui-web/src/toast.test.tsx +0 -42
  416. package/packages/ui-web/src/toast.tsx +0 -111
  417. package/packages/ui-web/src/toaster.tsx +0 -27
  418. package/packages/ui-web/src/toggle-group.test.tsx +0 -40
  419. package/packages/ui-web/src/toggle-group.tsx +0 -55
  420. package/packages/ui-web/src/toggle.test.tsx +0 -21
  421. package/packages/ui-web/src/toggle.tsx +0 -24
  422. package/packages/ui-web/src/tooltip.tsx +0 -51
  423. package/packages/ui-web/tsconfig.json +0 -24
  424. package/packages/ui-web/vite.config.ts +0 -21
  425. package/postcss.config.mjs +0 -5
  426. package/release-please-config.json +0 -60
  427. package/scripts/build-registry.ts +0 -80
  428. package/scripts/sync-tokens.ts +0 -86
  429. package/scripts/validate.ts +0 -74
  430. package/src/globals.css +0 -146
  431. package/src/index.ts +0 -4
  432. package/src/setupTests.ts +0 -47
  433. package/src/types/nativewind.d.ts +0 -19
  434. package/tailwind.config.js +0 -48
  435. package/tsconfig.build.json +0 -22
  436. package/tsconfig.json +0 -30
  437. package/tsconfig.node.json +0 -11
  438. package/vite.config.ts +0 -106
  439. package/vitest.config.ts +0 -23
  440. package/wrangler.toml +0 -22
@@ -1,92 +0,0 @@
1
- import { render, screen } from '@testing-library/react';
2
- import userEvent from '@testing-library/user-event';
3
- import { describe, expect, it } from 'vitest';
4
- import {
5
- Menubar,
6
- MenubarCheckboxItem,
7
- MenubarContent,
8
- MenubarItem,
9
- MenubarMenu,
10
- MenubarRadioGroup,
11
- MenubarRadioItem,
12
- MenubarTrigger,
13
- } from '.';
14
-
15
- describe('Menubar', () => {
16
- it('renders trigger correctly', () => {
17
- render(
18
- <Menubar>
19
- <MenubarMenu>
20
- <MenubarTrigger>File</MenubarTrigger>
21
- <MenubarContent>
22
- <MenubarItem>New Tab</MenubarItem>
23
- </MenubarContent>
24
- </MenubarMenu>
25
- </Menubar>,
26
- );
27
-
28
- expect(screen.getByText('File')).toBeInTheDocument();
29
- });
30
-
31
- it('opens menu on click', async () => {
32
- const user = userEvent.setup();
33
- render(
34
- <Menubar>
35
- <MenubarMenu>
36
- <MenubarTrigger>File</MenubarTrigger>
37
- <MenubarContent>
38
- <MenubarItem>New Tab</MenubarItem>
39
- <MenubarItem>New Window</MenubarItem>
40
- </MenubarContent>
41
- </MenubarMenu>
42
- </Menubar>,
43
- );
44
-
45
- await user.click(screen.getByText('File'));
46
-
47
- expect(screen.getByText('New Tab')).toBeVisible();
48
- expect(screen.getByText('New Window')).toBeVisible();
49
- });
50
-
51
- it('handles checkbox items', async () => {
52
- const user = userEvent.setup();
53
- render(
54
- <Menubar>
55
- <MenubarMenu>
56
- <MenubarTrigger>View</MenubarTrigger>
57
- <MenubarContent>
58
- <MenubarCheckboxItem checked>Show Sidebar</MenubarCheckboxItem>
59
- <MenubarCheckboxItem checked={false}>Show Status Bar</MenubarCheckboxItem>
60
- </MenubarContent>
61
- </MenubarMenu>
62
- </Menubar>,
63
- );
64
-
65
- await user.click(screen.getByText('View'));
66
-
67
- expect(screen.getByRole('menuitemcheckbox', { name: 'Show Sidebar' })).toBeChecked();
68
- expect(screen.getByRole('menuitemcheckbox', { name: 'Show Status Bar' })).not.toBeChecked();
69
- });
70
-
71
- it('handles radio items', async () => {
72
- const user = userEvent.setup();
73
- render(
74
- <Menubar>
75
- <MenubarMenu>
76
- <MenubarTrigger>Profiles</MenubarTrigger>
77
- <MenubarContent>
78
- <MenubarRadioGroup value="andy">
79
- <MenubarRadioItem value="andy">Andy</MenubarRadioItem>
80
- <MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
81
- </MenubarRadioGroup>
82
- </MenubarContent>
83
- </MenubarMenu>
84
- </Menubar>,
85
- );
86
-
87
- await user.click(screen.getByText('Profiles'));
88
-
89
- expect(screen.getByRole('menuitemradio', { name: 'Andy' })).toBeChecked();
90
- expect(screen.getByRole('menuitemradio', { name: 'Benoit' })).not.toBeChecked();
91
- });
92
- });
@@ -1,244 +0,0 @@
1
- 'use client';
2
-
3
- import * as MenubarPrimitive from '@radix-ui/react-menubar';
4
- import { Check, ChevronRight, Circle } from 'lucide-react';
5
- import * as React from 'react';
6
-
7
- import {
8
- MenubarBaseProps,
9
- MenubarCheckboxItemBaseProps,
10
- MenubarContentBaseProps,
11
- MenubarItemBaseProps,
12
- MenubarLabelBaseProps,
13
- MenubarMenuBaseProps,
14
- MenubarRadioItemBaseProps,
15
- MenubarSeparatorBaseProps,
16
- MenubarShortcutBaseProps,
17
- MenubarSubBaseProps,
18
- MenubarSubContentBaseProps,
19
- MenubarSubTriggerBaseProps,
20
- MenubarTriggerBaseProps,
21
- } from '@gv-tech/ui-core';
22
- import { cn } from './lib/utils';
23
-
24
- function MenubarMenu({ ...props }: MenubarPrimitive.MenubarMenuProps & MenubarMenuBaseProps) {
25
- return <MenubarPrimitive.Menu {...props} />;
26
- }
27
-
28
- function MenubarGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Group>) {
29
- return <MenubarPrimitive.Group {...props} />;
30
- }
31
-
32
- function MenubarPortal({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Portal>) {
33
- return <MenubarPrimitive.Portal {...props} />;
34
- }
35
-
36
- function MenubarRadioGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {
37
- return <MenubarPrimitive.RadioGroup {...props} />;
38
- }
39
-
40
- function MenubarSub({ ...props }: MenubarPrimitive.MenubarSubProps & MenubarSubBaseProps) {
41
- return <MenubarPrimitive.Sub data-slot="menubar-sub" {...props} />;
42
- }
43
-
44
- const Menubar = React.forwardRef<
45
- React.ElementRef<typeof MenubarPrimitive.Root>,
46
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root> & MenubarBaseProps
47
- >(({ className, ...props }, ref) => (
48
- <MenubarPrimitive.Root
49
- ref={ref}
50
- className={cn('flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm', className)}
51
- {...props}
52
- />
53
- ));
54
- Menubar.displayName = MenubarPrimitive.Root.displayName;
55
-
56
- const MenubarTrigger = React.forwardRef<
57
- React.ElementRef<typeof MenubarPrimitive.Trigger>,
58
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger> & MenubarTriggerBaseProps
59
- >(({ className, ...props }, ref) => (
60
- <MenubarPrimitive.Trigger
61
- ref={ref}
62
- className={cn(
63
- 'flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
64
- className,
65
- )}
66
- {...props}
67
- />
68
- ));
69
- MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
70
-
71
- const MenubarSubTrigger = React.forwardRef<
72
- React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
73
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & MenubarSubTriggerBaseProps
74
- >(({ className, inset, children, ...props }, ref) => (
75
- <MenubarPrimitive.SubTrigger
76
- ref={ref}
77
- className={cn(
78
- 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
79
- inset && 'pl-8',
80
- className,
81
- )}
82
- {...props}
83
- >
84
- {children}
85
- <ChevronRight className="ml-auto h-4 w-4" />
86
- </MenubarPrimitive.SubTrigger>
87
- ));
88
- MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
89
-
90
- const MenubarSubContent = React.forwardRef<
91
- React.ElementRef<typeof MenubarPrimitive.SubContent>,
92
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent> & MenubarSubContentBaseProps
93
- >(({ className, ...props }, ref) => (
94
- <MenubarPrimitive.SubContent
95
- ref={ref}
96
- className={cn(
97
- 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]',
98
- className,
99
- )}
100
- {...props}
101
- />
102
- ));
103
- MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
104
-
105
- const MenubarContent = React.forwardRef<
106
- React.ElementRef<typeof MenubarPrimitive.Content>,
107
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content> & MenubarContentBaseProps
108
- >(({ className, align = 'start', alignOffset = -4, sideOffset = 8, ...props }, ref) => (
109
- <MenubarPrimitive.Portal>
110
- <MenubarPrimitive.Content
111
- ref={ref}
112
- align={align}
113
- alignOffset={alignOffset}
114
- sideOffset={sideOffset}
115
- className={cn(
116
- 'z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]',
117
- className,
118
- )}
119
- {...props}
120
- />
121
- </MenubarPrimitive.Portal>
122
- ));
123
- MenubarContent.displayName = MenubarPrimitive.Content.displayName;
124
-
125
- const MenubarItem = React.forwardRef<
126
- React.ElementRef<typeof MenubarPrimitive.Item>,
127
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & MenubarItemBaseProps
128
- >(({ className, inset, ...props }, ref) => (
129
- <MenubarPrimitive.Item
130
- ref={ref}
131
- className={cn(
132
- 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
133
- inset && 'pl-8',
134
- className,
135
- )}
136
- {...props}
137
- />
138
- ));
139
- MenubarItem.displayName = MenubarPrimitive.Item.displayName;
140
-
141
- const MenubarCheckboxItem = React.forwardRef<
142
- React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
143
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem> & MenubarCheckboxItemBaseProps
144
- >(({ className, children, checked, ...props }, ref) => (
145
- <MenubarPrimitive.CheckboxItem
146
- ref={ref}
147
- className={cn(
148
- 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
149
- className,
150
- )}
151
- checked={checked}
152
- {...props}
153
- >
154
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
155
- <MenubarPrimitive.ItemIndicator>
156
- <Check className="h-4 w-4" />
157
- </MenubarPrimitive.ItemIndicator>
158
- </span>
159
- {children}
160
- </MenubarPrimitive.CheckboxItem>
161
- ));
162
- MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
163
-
164
- const MenubarRadioItem = React.forwardRef<
165
- React.ElementRef<typeof MenubarPrimitive.RadioItem>,
166
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem> & MenubarRadioItemBaseProps
167
- >(({ className, children, ...props }, ref) => (
168
- <MenubarPrimitive.RadioItem
169
- ref={ref}
170
- className={cn(
171
- 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
172
- className,
173
- )}
174
- {...props}
175
- >
176
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
177
- <MenubarPrimitive.ItemIndicator>
178
- <Circle className="h-4 w-4 fill-current" />
179
- </MenubarPrimitive.ItemIndicator>
180
- </span>
181
- {children}
182
- </MenubarPrimitive.RadioItem>
183
- ));
184
- MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
185
-
186
- const MenubarLabel = React.forwardRef<
187
- React.ElementRef<typeof MenubarPrimitive.Label>,
188
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & MenubarLabelBaseProps
189
- >(({ className, inset, ...props }, ref) => (
190
- <MenubarPrimitive.Label
191
- ref={ref}
192
- className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)}
193
- {...props}
194
- />
195
- ));
196
- MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
197
-
198
- const MenubarSeparator = React.forwardRef<
199
- React.ElementRef<typeof MenubarPrimitive.Separator>,
200
- React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator> & MenubarSeparatorBaseProps
201
- >(({ className, ...props }, ref) => (
202
- <MenubarPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />
203
- ));
204
- MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
205
-
206
- const MenubarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement> & MenubarShortcutBaseProps) => {
207
- return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;
208
- };
209
- MenubarShortcut.displayname = 'MenubarShortcut';
210
-
211
- export {
212
- Menubar,
213
- MenubarCheckboxItem,
214
- MenubarContent,
215
- MenubarGroup,
216
- MenubarItem,
217
- MenubarLabel,
218
- MenubarMenu,
219
- MenubarPortal,
220
- MenubarRadioGroup,
221
- MenubarRadioItem,
222
- MenubarSeparator,
223
- MenubarShortcut,
224
- MenubarSub,
225
- MenubarSubContent,
226
- MenubarSubTrigger,
227
- MenubarTrigger,
228
- };
229
-
230
- export type {
231
- MenubarCheckboxItemBaseProps as MenubarCheckboxItemProps,
232
- MenubarContentBaseProps as MenubarContentProps,
233
- MenubarItemBaseProps as MenubarItemProps,
234
- MenubarLabelBaseProps as MenubarLabelProps,
235
- MenubarMenuBaseProps as MenubarMenuProps,
236
- MenubarBaseProps as MenubarProps,
237
- MenubarRadioItemBaseProps as MenubarRadioItemProps,
238
- MenubarSeparatorBaseProps as MenubarSeparatorProps,
239
- MenubarShortcutBaseProps as MenubarShortcutProps,
240
- MenubarSubContentBaseProps as MenubarSubContentProps,
241
- MenubarSubBaseProps as MenubarSubProps,
242
- MenubarSubTriggerBaseProps as MenubarSubTriggerProps,
243
- MenubarTriggerBaseProps as MenubarTriggerProps,
244
- };
@@ -1,53 +0,0 @@
1
- import { render, screen } from '@testing-library/react';
2
- import userEvent from '@testing-library/user-event';
3
- import { describe, expect, it } from 'vitest';
4
- import {
5
- NavigationMenu,
6
- NavigationMenuContent,
7
- NavigationMenuItem,
8
- NavigationMenuLink,
9
- NavigationMenuList,
10
- NavigationMenuTrigger,
11
- } from '.';
12
-
13
- describe('NavigationMenu', () => {
14
- it('renders trigger correctly', () => {
15
- render(
16
- <NavigationMenu>
17
- <NavigationMenuList>
18
- <NavigationMenuItem>
19
- <NavigationMenuTrigger>Item One</NavigationMenuTrigger>
20
- <NavigationMenuContent>
21
- <NavigationMenuLink>Link One</NavigationMenuLink>
22
- </NavigationMenuContent>
23
- </NavigationMenuItem>
24
- </NavigationMenuList>
25
- </NavigationMenu>,
26
- );
27
-
28
- expect(screen.getByText('Item One')).toBeInTheDocument();
29
- });
30
-
31
- it('shows content on click (or hover depending on implementation)', async () => {
32
- // Radix Navigation Menu usually works on hover for desktop, click for touch/mobile.
33
- // In JSDOM, we can simulate clicks.
34
- const user = userEvent.setup();
35
- render(
36
- <NavigationMenu>
37
- <NavigationMenuList>
38
- <NavigationMenuItem>
39
- <NavigationMenuTrigger>Item One</NavigationMenuTrigger>
40
- <NavigationMenuContent>
41
- <NavigationMenuLink>Link One</NavigationMenuLink>
42
- </NavigationMenuContent>
43
- </NavigationMenuItem>
44
- </NavigationMenuList>
45
- </NavigationMenu>,
46
- );
47
-
48
- const trigger = screen.getByText('Item One');
49
- await user.click(trigger);
50
-
51
- expect(screen.getByText('Link One')).toBeVisible();
52
- });
53
- });
@@ -1,143 +0,0 @@
1
- 'use client';
2
-
3
- import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
4
- import { cva } from 'class-variance-authority';
5
- import { ChevronDown } from 'lucide-react';
6
- import * as React from 'react';
7
-
8
- import {
9
- NavigationMenuBaseProps,
10
- NavigationMenuContentBaseProps,
11
- NavigationMenuIndicatorBaseProps,
12
- NavigationMenuItemBaseProps,
13
- NavigationMenuLinkBaseProps,
14
- NavigationMenuListBaseProps,
15
- NavigationMenuTriggerBaseProps,
16
- NavigationMenuViewportBaseProps,
17
- } from '@gv-tech/ui-core';
18
- import { cn } from './lib/utils';
19
-
20
- const NavigationMenu = React.forwardRef<
21
- React.ElementRef<typeof NavigationMenuPrimitive.Root>,
22
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> & NavigationMenuBaseProps
23
- >(({ className, children, ...props }, ref) => (
24
- <NavigationMenuPrimitive.Root
25
- ref={ref}
26
- className={cn('relative z-10 flex max-w-max flex-1 items-center justify-center', className)}
27
- {...props}
28
- >
29
- {children}
30
- <NavigationMenuViewport />
31
- </NavigationMenuPrimitive.Root>
32
- ));
33
- NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
34
-
35
- const NavigationMenuList = React.forwardRef<
36
- React.ElementRef<typeof NavigationMenuPrimitive.List>,
37
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List> & NavigationMenuListBaseProps
38
- >(({ className, ...props }, ref) => (
39
- <NavigationMenuPrimitive.List
40
- ref={ref}
41
- className={cn('group flex flex-1 list-none items-center justify-center space-x-1', className)}
42
- {...props}
43
- />
44
- ));
45
- NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
46
-
47
- const NavigationMenuItem = NavigationMenuPrimitive.Item;
48
-
49
- const navigationMenuTriggerStyle = cva(
50
- 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent',
51
- );
52
-
53
- const NavigationMenuTrigger = React.forwardRef<
54
- React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,
55
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger> & NavigationMenuTriggerBaseProps
56
- >(({ className, children, ...props }, ref) => (
57
- <NavigationMenuPrimitive.Trigger
58
- ref={ref}
59
- className={cn(navigationMenuTriggerStyle(), 'group', className)}
60
- {...props}
61
- >
62
- {children}{' '}
63
- <ChevronDown
64
- className="relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180"
65
- aria-hidden="true"
66
- />
67
- </NavigationMenuPrimitive.Trigger>
68
- ));
69
- NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
70
-
71
- const NavigationMenuContent = React.forwardRef<
72
- React.ElementRef<typeof NavigationMenuPrimitive.Content>,
73
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content> & NavigationMenuContentBaseProps
74
- >(({ className, ...props }, ref) => (
75
- <NavigationMenuPrimitive.Content
76
- ref={ref}
77
- className={cn(
78
- 'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ',
79
- className,
80
- )}
81
- {...props}
82
- />
83
- ));
84
- NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
85
-
86
- const NavigationMenuLink = NavigationMenuPrimitive.Link;
87
-
88
- const NavigationMenuViewport = React.forwardRef<
89
- React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,
90
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport> & NavigationMenuViewportBaseProps
91
- >(({ className, ...props }, ref) => (
92
- <div className={cn('absolute left-0 top-full flex justify-center')}>
93
- <NavigationMenuPrimitive.Viewport
94
- className={cn(
95
- 'origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]',
96
- className,
97
- )}
98
- ref={ref}
99
- {...props}
100
- />
101
- </div>
102
- ));
103
- NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
104
-
105
- const NavigationMenuIndicator = React.forwardRef<
106
- React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,
107
- React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator> & NavigationMenuIndicatorBaseProps
108
- >(({ className, ...props }, ref) => (
109
- <NavigationMenuPrimitive.Indicator
110
- ref={ref}
111
- className={cn(
112
- 'top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in',
113
- className,
114
- )}
115
- {...props}
116
- >
117
- <div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
118
- </NavigationMenuPrimitive.Indicator>
119
- ));
120
- NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
121
-
122
- export {
123
- NavigationMenu,
124
- NavigationMenuContent,
125
- NavigationMenuIndicator,
126
- NavigationMenuItem,
127
- NavigationMenuLink,
128
- NavigationMenuList,
129
- NavigationMenuTrigger,
130
- navigationMenuTriggerStyle,
131
- NavigationMenuViewport,
132
- };
133
-
134
- export type {
135
- NavigationMenuContentBaseProps as NavigationMenuContentProps,
136
- NavigationMenuIndicatorBaseProps as NavigationMenuIndicatorProps,
137
- NavigationMenuItemBaseProps as NavigationMenuItemProps,
138
- NavigationMenuLinkBaseProps as NavigationMenuLinkProps,
139
- NavigationMenuListBaseProps as NavigationMenuListProps,
140
- NavigationMenuBaseProps as NavigationMenuProps,
141
- NavigationMenuTriggerBaseProps as NavigationMenuTriggerProps,
142
- NavigationMenuViewportBaseProps as NavigationMenuViewportProps,
143
- };
@@ -1,57 +0,0 @@
1
- import { render, screen } from '@testing-library/react';
2
- import { describe, expect, it } from 'vitest';
3
- import {
4
- Pagination,
5
- PaginationContent,
6
- PaginationEllipsis,
7
- PaginationItem,
8
- PaginationLink,
9
- PaginationNext,
10
- PaginationPrevious,
11
- } from '.';
12
-
13
- describe('Pagination', () => {
14
- it('renders correctly', () => {
15
- render(
16
- <Pagination>
17
- <PaginationContent>
18
- <PaginationItem>
19
- <PaginationPrevious href="#" />
20
- </PaginationItem>
21
- <PaginationItem>
22
- <PaginationLink href="#">1</PaginationLink>
23
- </PaginationItem>
24
- <PaginationItem>
25
- <PaginationEllipsis />
26
- </PaginationItem>
27
- <PaginationItem>
28
- <PaginationNext href="#" />
29
- </PaginationItem>
30
- </PaginationContent>
31
- </Pagination>,
32
- );
33
-
34
- expect(screen.getByRole('navigation', { name: 'pagination' })).toBeInTheDocument();
35
- expect(screen.getByText('Previous')).toBeInTheDocument();
36
- expect(screen.getByText('1')).toBeInTheDocument();
37
- expect(screen.getByText('Next')).toBeInTheDocument();
38
- expect(screen.getByText('More pages')).toBeInTheDocument();
39
- });
40
-
41
- it('marks active page correctly', () => {
42
- render(
43
- <Pagination>
44
- <PaginationContent>
45
- <PaginationItem>
46
- <PaginationLink href="#" isActive>
47
- 1
48
- </PaginationLink>
49
- </PaginationItem>
50
- </PaginationContent>
51
- </Pagination>,
52
- );
53
-
54
- const link = screen.getByText('1').closest('a');
55
- expect(link).toHaveAttribute('aria-current', 'page');
56
- });
57
- });