@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,195 +0,0 @@
1
- # Universal Component Implementation Guide
2
-
3
- > [!IMPORTANT]
4
- > **Architectural Pivot (2026-02-17):** This project is transitioning from a single-package design system to an **Nx monorepo** with shared packages. See [architecture-pivot.md](./architecture-pivot.md) for the full ADR and [phase-1-tracker.md](./phase-1-tracker.md) for Phase 1 scope.
5
-
6
- This document outlines the current state of web/native component parity and serves as the reference for the platform divergence registry.
7
-
8
- ---
9
-
10
- ## Architecture Overview
11
-
12
- ```text
13
- packages/
14
- design-tokens/ ← palette, theme, spacing, typography, shadows, radii
15
- ui-core/ ← Shared component contracts (props, variants, sizes)
16
- ui-web/ ← Web implementation (shadcn + Radix + Tailwind)
17
- ui-native/ ← React Native implementation (RN Reusables + NativeWind)
18
- apps/
19
- playground-web/ ← Full documentation site — Web + Native tabs
20
- native-playground/ ← Expo app for on-device component testing
21
- ```
22
-
23
- Key rules:
24
-
25
- - **No token forks** without explicit approval — tokens come from `design-tokens`.
26
- - **Matched API surface** across platforms (component names, props, variants, sizes).
27
- - **Documented divergence** for platform-specific UX differences.
28
- - **Own the code** — native components live in our repo, wired to our tokens/contracts.
29
-
30
- ---
31
-
32
- ## Component Parity Matrix (Current State)
33
-
34
- > **Last updated:** 2026-02-19 | ✅ Real | 🚫 Stub (not yet implemented)
35
-
36
- ### Forms
37
-
38
- | Component | Web | Native | Notes |
39
- | :--------------- | :-: | :----: | :-------------------------------------------------------- |
40
- | **Button** | ✅ | ✅ | Pressable + all variants; `onPress` replaces `onClick` |
41
- | **Checkbox** | ✅ | ✅ | `@rn-primitives/checkbox`; size/stroke differ by platform |
42
- | **Form** | ✅ | 🚫 | react-hook-form; web-first pattern |
43
- | **Input** | ✅ | ✅ | RN `TextInput`; no `onChange`, uses `onChangeText` |
44
- | **Label** | ✅ | ✅ | Uses `nativeID` + `onPress` instead of `htmlFor` |
45
- | **Radio Group** | ✅ | ✅ | `@rn-primitives/radio-group` |
46
- | **Select** | ✅ | ✅ | Complex native impl; fully typed |
47
- | **Slider** | ✅ | 🚫 | No Expo-compatible RN primitive available |
48
- | **Switch** | ✅ | ✅ | `@rn-primitives/switch` |
49
- | **Textarea** | ✅ | ✅ | `TextInput multiline`; `textAlignVertical="top"` |
50
- | **Toggle** | ✅ | ✅ | Pressable with active state |
51
- | **Toggle Group** | ✅ | ✅ | Multi/single selection modes |
52
-
53
- ### Data Display
54
-
55
- | Component | Web | Native | Notes |
56
- | :-------------- | :-: | :----: | :----------------------------------------------------- |
57
- | **Accordion** | ✅ | ✅ | `@rn-primitives/accordion` + Reanimated chevron |
58
- | **Alert** | ✅ | ✅ | Variants: default, destructive, warning, info |
59
- | **Avatar** | ✅ | ✅ | `@rn-primitives/avatar` |
60
- | **Badge** | ✅ | ✅ | Text wrapped in View; NativeWind variant classes |
61
- | **Calendar** | ✅ | 🚫 | Complex date picker; no RN primitive |
62
- | **Card** | ✅ | ✅ | View/Text-based; full sub-components |
63
- | **Carousel** | ✅ | 🚫 | Embla-based; no comparable RN lib yet |
64
- | **Chart** | ✅ | 🚫 | recharts (web-only SVG); consider victory-native later |
65
- | **Collapsible** | ✅ | ✅ | `@rn-primitives/collapsible` |
66
- | **Skeleton** | ✅ | ✅ | Reanimated pulsing opacity (vs CSS animation) |
67
- | **Table** | ✅ | ✅ | View/Text-based rows; no HTML table |
68
- | **Text** | ✅ | ✅ | Typography scale; `variant` prop shared |
69
-
70
- ### Feedback
71
-
72
- | Component | Web | Native | Notes |
73
- | :--------------- | :-: | :----: | :------------------------------------------------- |
74
- | **Alert Dialog** | ✅ | ✅ | `@rn-primitives/alert-dialog` + Reanimated overlay |
75
- | **Dialog** | ✅ | ✅ | `@rn-primitives/dialog` + Reanimated fade |
76
- | **Hover Card** | ✅ | 🚫 | Hover interaction; not applicable on touch |
77
- | **Popover** | ✅ | 🚫 | No `@rn-primitives/popover` yet |
78
- | **Progress** | ✅ | 🚫 | No `@rn-primitives/progress` yet |
79
- | **Sheet** | ✅ | ✅ | SlideInRight/Left Reanimated; side prop supported |
80
- | **Skeleton** | ✅ | ✅ | See Data Display above |
81
- | **Sonner** | ✅ | 🚫 | Web toast library; use `Toast` on native |
82
- | **Toast** | ✅ | ✅ | `@rn-primitives/toast` + FadeInUp animation |
83
- | **Tooltip** | ✅ | ✅ | `@rn-primitives/tooltip` + FadeIn/FadeOut |
84
-
85
- ### Navigation
86
-
87
- | Component | Web | Native | Notes |
88
- | :------------------ | :-: | :----: | :--------------------------------------------- |
89
- | **Breadcrumb** | ✅ | 🚫 | Navigation-heavy; alternative: Text links |
90
- | **Command** | ✅ | 🚫 | cmdk-based; no RN equivalent |
91
- | **Context Menu** | ✅ | 🚫 | Right-click/long-press; consider ActionSheet |
92
- | **Drawer** | ✅ | 🚫 | vaul-based; Sheet covers the pattern on native |
93
- | **Dropdown Menu** | ✅ | 🚫 | Pointer-triggered; no RN primitive yet |
94
- | **Menubar** | ✅ | 🚫 | Desktop navigation pattern |
95
- | **Navigation Menu** | ✅ | 🚫 | Web navigation pattern |
96
- | **Pagination** | ✅ | 🚫 | Alternative: infinite scroll on native |
97
- | **Search** | ✅ | ✅ | Command palette pattern |
98
- | **Sheet** | ✅ | ✅ | See Feedback above |
99
- | **Tabs** | ✅ | ✅ | `@rn-primitives/tabs` + TextClassContext |
100
-
101
- ### Layout
102
-
103
- | Component | Web | Native | Notes |
104
- | :--------------- | :-: | :----: | :------------------------------------------------ |
105
- | **Aspect Ratio** | ✅ | 🚫 | CSS `aspect-ratio`; RN View handles this natively |
106
- | **Resizable** | ✅ | 🚫 | Drag-based; not a native interaction pattern |
107
- | **Scroll Area** | ✅ | 🚫 | Native scroll is built-in via `ScrollView` |
108
- | **Separator** | ✅ | ✅ | `@rn-primitives/separator` |
109
-
110
- ### Utilities
111
-
112
- | Component | Web | Native | Notes |
113
- | :--------------- | :-: | :----: | :------------------------------- |
114
- | **Theme Toggle** | ✅ | ✅ | Dark/light/system; ThemeProvider |
115
-
116
- ---
117
-
118
- ## Platform Divergence Registry
119
-
120
- Document intentional platform differences here. Each entry explains the _semantic intent_ that's preserved across platforms.
121
-
122
- | Component | Web Behavior | Native Behavior | Semantic Intent |
123
- | :--------------- | :-------------------------------- | :------------------------------------- | :-------------------------------------------------------------- |
124
- | **Button** | `onClick` handler | `onPress` handler (Pressable) | "User activates an action" — same semantics, different events |
125
- | **Input** | `onChange` → `event.target.value` | `onChangeText` → `string` | "User enters text" — simpler callback on native |
126
- | **Label** | `htmlFor` associates with input | `nativeID` + `onPress` toggle | "Label identifies a form control" — native uses ID association |
127
- | **Checkbox** | Browser-native checkbox input | `@rn-primitives/checkbox` Pressable | "Binary selection toggle" |
128
- | **Dialog** | `<Dialog>` Radix overlay | `@rn-primitives/dialog` modal | "Modal surface — blocking overlay for focused interaction" |
129
- | **Sheet** | Radix Dialog side panel | SlideInRight/Left Reanimated animation | "Supplemental content panel" — side-anchored drawer |
130
- | **Toast** | `sonner` toast library | `@rn-primitives/toast` + Reanimated | "Transient feedback — dismissible notification" |
131
- | **Skeleton** | CSS `animate-pulse` opacity | Reanimated `withRepeat`/`withTiming` | "Loading placeholder" — same visual, different animation engine |
132
- | **Tooltip** | Radix hover tooltip | `@rn-primitives/tooltip` + FadeIn | "Contextual help text" — triggered by long-press on native |
133
- | **Table** | HTML `<table>` / `<tr>` / `<td>` | `View` rows + `Text` cells | "Tabular data display" |
134
- | **Text** | `<span>` / `<p>` with `cn()` | RN `<Text>` with `variant` prop | "Typographic content" — variant system shared |
135
- | **Accordion** | Radix + CSS height animation | Reanimated chevron + content | "Expandable content section" |
136
- | **Drawer (web)** | vaul bottom sheet | Use `Sheet` on native | "Modal panel from screen edge" — Sheet semantically equivalent |
137
- | **Scroll Area** | Custom scrollbar overlay | Use RN `ScrollView` directly | "Scrollable content region" — native ScrollView is built-in |
138
- | **Sonner** | Web-only animated toast library | Use `Toast` on native | "Notification toasts" — Toast package covers native |
139
- | **Popover** | Radix floating portal | _Not yet implemented_ | "Floating contextual content" |
140
- | **Progress** | CSS progress bar | _Not yet implemented_ | "Task completion indicator" |
141
-
142
- ---
143
-
144
- ## Per-Component Migration Checklist
145
-
146
- ### For existing components (ensuring contract alignment)
147
-
148
- 1. **Contract** — Verify props/variants/sizes match `packages/ui-core/src/contracts/`
149
- 2. **Web** — Confirm web component imports from `@gv-tech/ui-core` contracts
150
- 3. **Native** — Confirm native component imports same contract + uses `@gv-tech/design-tokens`
151
- 4. **Tests** — Web tests passing; add native test if not present
152
- 5. **Playground** — Native tab wired in `doc-routes.tsx`; diff notes added to this registry
153
-
154
- ### For new native components
155
-
156
- 1. Check `@rn-primitives` for a matching primitive
157
- 2. If no primitive exists, assess: is this interaction pattern appropriate for native?
158
- 3. If yes, build from RN primitives (`View`, `Text`, `Pressable`, `TextInput`)
159
- 4. Wire Reanimated for any animations
160
- 5. Add to `ui-native/src/index.ts` and `docs.ts` platforms
161
-
162
- ---
163
-
164
- ## Outstanding Issues & Next Steps
165
-
166
- ### 1. Native Test Coverage
167
-
168
- 12 of 27+ native components have test files. Remaining components that need tests:
169
-
170
- - Accordion, Alert, Alert Dialog, Avatar, Badge, Label, Search, Select, Separator, Switch, Table, Tabs, Theme Toggle, Toggle, Toggle Group, Tooltip
171
-
172
- ### 2. Native Playground Expansion
173
-
174
- `apps/native-playground/src/app/App.tsx` currently demos: Button, Card, Input, Checkbox, RadioGroup, Text, Badge. Add:
175
-
176
- - Accordion, Alert, AlertDialog, Avatar, Badge, Collapsible, Dialog, Select, Separator, Sheet, Skeleton, Switch, Table, Tabs, Toast, Toggle, Tooltip
177
-
178
- ### 3. Token Expansion (Design Tokens)
179
-
180
- `packages/design-tokens` exports palette, theme, spacing, typography, shadows, and radii. Next:
181
-
182
- - Add a tokens reference page to the playground (showing all raw values)
183
- - Ensure `ui-native` consumes `design-tokens` directly (no duplication)
184
-
185
- ### 4. Sub-Package Publishing
186
-
187
- Currently only `@gv-tech/design-system` (root) is published. Phase 2 should add:
188
-
189
- - `@gv-tech/ui-web`
190
- - `@gv-tech/ui-native`
191
- - `@gv-tech/ui-core`
192
- - `@gv-tech/design-tokens`
193
-
194
- > [!TIP]
195
- > During the transition period, the existing root package continues to work. The monorepo migration is additive — existing imports won't break until explicitly migrated.
@@ -1,268 +0,0 @@
1
- # Monorepo Update Plan — Incremental Nx Adoption
2
-
3
- **Date:** 2026-02-17
4
- **Status:** Phase 1 Complete — Parity Extracted, Sites Isolated
5
- **Supersedes:** Portions of [architecture-pivot.md](./architecture-pivot.md) relating to tooling choices
6
-
7
- ---
8
-
9
- ## Summary
10
-
11
- We are adopting **Option 1** (one design system, two implementations) with an **incremental Nx adoption** strategy. This document is the actionable plan that bridges the existing architecture ADR and the Phase 1 tracker.
12
-
13
- > [!IMPORTANT]
14
- > **Key constraints (decided):**
15
- >
16
- > - **release-please stays** as the release orchestrator — no Nx Release migration now.
17
- > - **Cloudflare Pages stays** for deployment of the playground/docs site.
18
- > - **Nx is adopted incrementally** — task running and caching only; no release tooling changes.
19
-
20
- ---
21
-
22
- ## Phase 0 — Foundation (No Breaking Changes)
23
-
24
- Phase 0 sets up Yarn workspaces + Nx without changing any existing build, deploy, or release behavior.
25
-
26
- ### 0.1 Enable Yarn Workspaces
27
-
28
- Convert to a workspaces-aware root by adding `workspaces` to the root `package.json`:
29
-
30
- ```jsonc
31
- // package.json (root additions)
32
- {
33
- "private": true, // required for workspaces root
34
- "workspaces": ["packages/*", "apps/*"],
35
- }
36
- ```
37
-
38
- > [!NOTE]
39
- > The existing `@gv-tech/design-system` package currently publishes from root. During Phase 0 we keep publishing from root — the `workspaces` field simply enables cross-package resolution for new packages. The `private: true` field must be added carefully since the root package currently publishes to npm. See [Decision 1](#decision-1-root-privatetrue-timing) below.
40
-
41
- **`.yarnrc.yml`** — no changes needed (`nodeLinker: node-modules` already set).
42
-
43
- ### 0.2 Add Nx (Tasks & Caching Only)
44
-
45
- ```bash
46
- # Install Nx as a devDependency
47
- yarn add -D nx @nx/js
48
- ```
49
-
50
- Create `nx.json` at the repo root:
51
-
52
- ```jsonc
53
- {
54
- "$schema": "node_modules/nx/schemas/nx-schema.json",
55
- "defaultBase": "main",
56
- "namedInputs": {
57
- "default": ["{projectRoot}/**/*", "sharedGlobals"],
58
- "sharedGlobals": ["{workspaceRoot}/tsconfig.json"],
59
- "production": ["default", "!{projectRoot}/**/*.test.*"],
60
- },
61
- "targetDefaults": {
62
- "build": {
63
- "dependsOn": ["^build"],
64
- "inputs": ["production", "^production"],
65
- "cache": true,
66
- },
67
- "test": {
68
- "inputs": ["default", "^production"],
69
- "cache": true,
70
- },
71
- "lint": {
72
- "inputs": ["default"],
73
- "cache": true,
74
- },
75
- },
76
- }
77
- ```
78
-
79
- > [!TIP]
80
- > Nx infers tasks from each package's `package.json` scripts — no Nx executors or `project.json` files are needed initially. Running `npx nx build @gv-tech/design-system` will call the existing `yarn build` script.
81
-
82
- ### 0.3 Create Directory Scaffolding
83
-
84
- ```text
85
- gvtech-design/
86
- ├── apps/
87
- │ └── playground-web/ ← Will hold the docs/playground site (Phase 1)
88
- ├── packages/
89
- │ ├── design-tokens/ ← Phase 1
90
- │ ├── ui-core/ ← Phase 1
91
- │ ├── ui-web/ ← Phase 1+
92
- │ └── ui-native/ ← Phase 1+
93
- ├── src/ ← Existing code stays here during Phase 0
94
- ├── nx.json ← NEW
95
- ├── package.json ← Updated with workspaces
96
- └── ...existing files
97
- ```
98
-
99
- Directories can be created empty with a `.gitkeep` initially — no code moves in Phase 0.
100
-
101
- ### 0.4 Update CI (`.github/workflows/ci.yml`)
102
-
103
- Add Nx caching without changing existing behavior:
104
-
105
- ```yaml
106
- # After yarn install step, add:
107
- - name: Restore Nx Cache
108
- uses: actions/cache@v4
109
- with:
110
- path: .nx/cache
111
- key: ${{ runner.os }}-nx-${{ hashFiles('yarn.lock') }}-${{ github.sha }}
112
- restore-keys: |
113
- ${{ runner.os }}-nx-${{ hashFiles('yarn.lock') }}-
114
- ${{ runner.os }}-nx-
115
- ```
116
-
117
- Existing `yarn lint`, `yarn test:ci`, `yarn build`, and `yarn build:site` scripts continue to run as-is. No Nx commands in CI yet — that comes when packages have their own scripts.
118
-
119
- ### 0.5 Deployment — No Changes
120
-
121
- | Setting | Current Value | Phase 0 Change |
122
- | :------------------ | :------------------------------------- | :------------- |
123
- | Build command | `yarn build:site` | None |
124
- | Output directory | `dist-site` | None |
125
- | Wrangler config | `pages_build_output_dir = "dist-site"` | None |
126
- | Cloudflare root dir | Repository root | None |
127
-
128
- ### 0.6 Release — No Changes
129
-
130
- | Setting | Current Value | Phase 0 Change |
131
- | :------------------- | :----------------------------------- | :------------- |
132
- | Release orchestrator | `release-please-action@v4.4` | None |
133
- | Manifest | `.release-please-manifest.json` | None |
134
- | Config | `release-please-config.json` | None |
135
- | Publish command | `npm publish --provenance` from root | None |
136
-
137
- ### Phase 0 PR Checklist
138
-
139
- - [x] Add `"workspaces": ["packages/*", "apps/*"]` to root `package.json`
140
- - [x] Decided: skip `"private": true` for now (Option B — Yarn 4 allows workspaces without it)
141
- - [x] `yarn add -D nx @nx/js` (Nx 22.5.1)
142
- - [x] Create `nx.json` with target defaults and caching config
143
- - [x] Create empty `packages/` and `apps/` directories with `.gitkeep`
144
- - [x] Add `.nx/` to `.gitignore`
145
- - [x] Add Nx cache restore steps to `ci.yml` (test + build jobs)
146
- - [x] Remove `turbo.json` reference from `architecture-pivot.md` (we're using Nx, not Turbo)
147
- - [x] Verify: `yarn install` ✅
148
- - [x] Verify: `yarn build` ✅ (library → `dist/`)
149
- - [x] Verify: `yarn build:site` ✅ (site → `dist-site/`)
150
- - [x] Verify: `yarn test:ci` ✅ (120 tests, 49 files)
151
- - [x] Verify: `yarn lint` ✅
152
- - [x] Verify: Cloudflare Pages preview deploy ✅ ([verified](https://653e2c83.gvtech-design.pages.dev/web/getting-started))
153
-
154
- ---
155
-
156
- ## Phase 1 — Extract Packages
157
-
158
- Phase 1 extracts actual code into the workspace packages. The root package continues to re-export from sub-packages for backward compatibility.
159
-
160
- ### 1.1 `packages/design-tokens`
161
-
162
- - Move `src/theme/tokens.ts` (palette + theme) into `packages/design-tokens/src/`
163
- - Add spacing, typography, shadows, radii exports
164
- - Create `package.json` with `name: "@gv-tech/design-tokens"`
165
- - Root `src/theme/tokens.ts` becomes a re-export from `@gv-tech/design-tokens`
166
-
167
- ### 1.2 `packages/ui-core`
168
-
169
- - Create component contracts (props, variants, sizes) in `packages/ui-core/src/contracts/`
170
- - Phase 1 components: Button, Text, Input, Checkbox, Radio, Card, Dialog/Sheet, Toast
171
- - Create `package.json` with `name: "@gv-tech/ui-core"`
172
-
173
- ### 1.3 `packages/ui-web` and `packages/ui-native`
174
-
175
- - Move `.web.tsx` implementations to `packages/ui-web/`
176
- - Move `.native.tsx` implementations to `packages/ui-native/`
177
- - Both import contracts from `@gv-tech/ui-core` and tokens from `@gv-tech/design-tokens`
178
-
179
- ### 1.4 `apps/playground-web`
180
-
181
- - Move the existing Vite site config into `apps/playground-web/`
182
- - Update `wrangler.toml` and Cloudflare Pages config to build from `apps/playground-web/`
183
- - Keep using Vite — no framework change
184
-
185
- ### 1.5 Update release-please (if sub-packages are published)
186
-
187
- If sub-packages (`design-tokens`, `ui-core`) need npm publishing:
188
-
189
- - Add entries to `release-please-config.json` under `packages`
190
- - Add entries to `.release-please-manifest.json`
191
- - release-please supports monorepo manifests natively
192
-
193
- > [!WARNING]
194
- > Only configure release-please for sub-packages when they are ready to publish. The root `@gv-tech/design-system` package continues to be the primary published artifact through Phase 1.
195
-
196
- ---
197
-
198
- ## Decisions Needed
199
-
200
- ### Decision 1: Root `private:true` Timing
201
-
202
- The root `package.json` currently publishes as `@gv-tech/design-system`. Adding `"private": true` (required for Yarn workspaces root) would prevent npm publishing from root.
203
-
204
- | Option | Description | Recommendation |
205
- | :------------------------------------------------ | :--------------------------------------------------------------------------------------- | :------------------------------------------ |
206
- | **A) Add `private:true` now** | Makes root a pure workspace root. Publishing moves to sub-packages. | ❌ Too early — sub-packages don't exist yet |
207
- | **B) Skip `private:true`, use workspaces anyway** | Yarn 4 allows workspaces without `private:true` at root. Publishing continues from root. | ✅ **Recommended for Phase 0** |
208
- | **C) Add `private:true` in Phase 1** | Add when sub-packages are ready to publish independently. | ✅ Natural transition point |
209
-
210
- > **Recommendation:** Option B for Phase 0 → Option C when sub-packages are publishable.
211
-
212
- ### Decision 2: Convert to Yarn Workspaces Now or Later
213
-
214
- | Option | Pros | Cons |
215
- | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
216
- | **Now (Phase 0)** | New packages can immediately cross-reference each other; `yarn install` resolves them. Clean foundation before any code moves. | Slightly more work upfront in the "no-op" PR. |
217
- | **Later (follow-up PR)** | Phase 0 PR stays minimal. | Have to retrofit workspaces when creating the first package — more merge-conflict risk. |
218
-
219
- > **Recommendation:** Convert now. Adding `workspaces` to `package.json` is a one-line change and doesn't break anything when there are no packages yet.
220
-
221
- ---
222
-
223
- ## Nx Release — Future Evaluation
224
-
225
- > [!NOTE]
226
- > Nx Release is explicitly **out of scope** for Phase 0 and Phase 1. After Phase 1 is complete, evaluate whether Nx Release provides value over release-please for:
227
- >
228
- > - Coordinated multi-package versioning
229
- > - Monorepo-aware changelogs
230
- > - Publish orchestration across sub-packages
231
- >
232
- > **No action required now.**
233
-
234
- ---
235
-
236
- ## Risk Matrix
237
-
238
- | Risk | Likelihood | Impact | Mitigation |
239
- | :---------------------------------------- | :--------- | :----- | :---------------------------------------------------- |
240
- | Yarn workspaces breaks `yarn install` | Low | High | Test in CI on the Phase 0 PR before merging |
241
- | Cloudflare Pages can't find build output | Low | High | No build path changes in Phase 0; test preview deploy |
242
- | Nx overhead for small team | Medium | Low | Nx is opt-in; existing scripts still work without it |
243
- | release-please confused by new packages | Low | Medium | Don't add packages to manifest until ready to publish |
244
- | Import paths break during code extraction | Medium | Medium | Root re-exports from sub-packages for backward compat |
245
-
246
- ---
247
-
248
- ## Timeline (Suggested)
249
-
250
- | Phase | Scope | Estimated Duration |
251
- | :----------- | :--------------------------------------------------- | :--------------------- |
252
- | **Phase 0** | Workspaces + Nx setup, no code moves | 1 PR, ~1 day |
253
- | **Phase 1a** | Extract `design-tokens` + `ui-core` | 1–2 PRs, ~1 week |
254
- | **Phase 1b** | Extract `ui-web` + `ui-native` (Phase 1 components) | 2–3 PRs, ~2 weeks |
255
- | **Phase 1c** | Move playground to `apps/`, update Cloudflare config | 1 PR, ~1 day |
256
- | **Evaluate** | Nx Release vs release-please decision | After Phase 1 complete |
257
-
258
- ---
259
-
260
- ## References
261
-
262
- - [architecture-pivot.md](./architecture-pivot.md) — ADR for the cross-platform design system decision
263
- - [phase-1-tracker.md](./phase-1-tracker.md) — Component-level progress tracker
264
- - [universal-implementation.md](./universal-implementation.md) — Implementation guide and parity matrix
265
- - [Nx + Yarn Workspaces](https://nx.dev/recipes/adopting-nx/adding-to-monorepo) — Official Nx integration docs
266
- - [release-please monorepo](https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md) — Manifest-based multi-package releases
267
- - [Cloudflare Pages monorepo builds](https://developers.cloudflare.com/pages/configuration/monorepos/) — Subdirectory build support
268
- - [release-tooling-evaluation.md](./release-tooling-evaluation.md) — Evaluation of Release-Please vs. Nx Release
package/eslint.config.mjs DELETED
@@ -1,13 +0,0 @@
1
- import { recommended } from '@gv-tech/eslint-config';
2
-
3
- /**
4
- * ESLint configuration for TypeScript projects. Uses @gv-tech/eslint-config for sensible defaults. For more information
5
- * on configuration options, see: https://github.com/Garcia-Ventures/eslint-config
6
- */
7
- export default [
8
- ...recommended,
9
- // Add project-specific overrides here
10
- {
11
- ignores: ['**/eslint.config.mjs', '**/.yarn/**', '**/dist-site/**'],
12
- },
13
- ];
package/nx.json DELETED
@@ -1,50 +0,0 @@
1
- {
2
- "$schema": "node_modules/nx/schemas/nx-schema.json",
3
- "defaultBase": "main",
4
- "namedInputs": {
5
- "default": ["{projectRoot}/**/*", "sharedGlobals"],
6
- "sharedGlobals": ["{workspaceRoot}/tsconfig.json"],
7
- "production": [
8
- "default",
9
- "!{projectRoot}/**/*.test.*",
10
- "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
11
- "!{projectRoot}/tsconfig.spec.json",
12
- "!{projectRoot}/jest.config.[jt]s",
13
- "!{projectRoot}/src/test-setup.[jt]s",
14
- "!{projectRoot}/test-setup.[jt]s"
15
- ]
16
- },
17
- "targetDefaults": {
18
- "build": {
19
- "dependsOn": ["^build"],
20
- "inputs": ["production", "^production"],
21
- "cache": true
22
- },
23
- "test": {
24
- "inputs": ["default", "^production"],
25
- "cache": true
26
- },
27
- "lint": {
28
- "inputs": ["default"],
29
- "cache": true
30
- }
31
- },
32
- "plugins": [
33
- {
34
- "plugin": "@nx/expo/plugin",
35
- "options": {
36
- "startTargetName": "start",
37
- "buildTargetName": "build",
38
- "prebuildTargetName": "prebuild",
39
- "serveTargetName": "serve",
40
- "installTargetName": "install",
41
- "exportTargetName": "export",
42
- "submitTargetName": "submit",
43
- "runIosTargetName": "run-ios",
44
- "runAndroidTargetName": "run-android",
45
- "buildDepsTargetName": "build-deps",
46
- "watchDepsTargetName": "watch-deps"
47
- }
48
- }
49
- ]
50
- }
package/packages/.gitkeep DELETED
File without changes
@@ -1,8 +0,0 @@
1
- # Changelog
2
-
3
- ## [0.1.0](https://github.com/Garcia-Ventures/gvtech-design/compare/design-tokens-v0.0.1...design-tokens-v0.1.0) (2026-02-20)
4
-
5
-
6
- ### Features
7
-
8
- * **universal:** pivot to monorepo architecture and stabilize react native support ([#63](https://github.com/Garcia-Ventures/gvtech-design/issues/63)) ([3458938](https://github.com/Garcia-Ventures/gvtech-design/commit/3458938c17bdfc7a7f5eea0053b7bf1786a571fa))
@@ -1,20 +0,0 @@
1
- {
2
- "name": "@gv-tech/design-tokens",
3
- "version": "0.1.0",
4
- "description": "Shared design tokens for the GV Tech design system — palette, theme, spacing, typography, shadows",
5
- "license": "MIT",
6
- "exports": {
7
- ".": {
8
- "types": "./src/index.ts",
9
- "default": "./src/index.ts"
10
- }
11
- },
12
- "main": "src/index.ts",
13
- "types": "src/index.ts",
14
- "scripts": {
15
- "build": "echo 'No build step — consumed as TS source by sibling packages'",
16
- "lint": "echo 'Linted from workspace root'",
17
- "test": "echo 'No tests yet'",
18
- "typecheck": "yarn tsc --noEmit"
19
- }
20
- }
@@ -1,35 +0,0 @@
1
- // @gv-tech/design-tokens
2
- // Single source of truth for all design tokens in the GV Tech design system.
3
- // Consumed by both web (ui-web) and native (ui-native) implementations.
4
-
5
- // Color tokens
6
- export { palette } from './palette';
7
- export type { PaletteTokens } from './palette';
8
-
9
- export { theme } from './theme';
10
- export type { ThemeTokens } from './theme';
11
-
12
- // Layout tokens
13
- export { spacing } from './spacing';
14
- export type { SpacingTokens } from './spacing';
15
-
16
- export { radii, radiiNumeric } from './radii';
17
- export type { RadiiNumericTokens, RadiiTokens } from './radii';
18
-
19
- // Typography tokens
20
- export { typography } from './typography';
21
- export type { TypographyTokens } from './typography';
22
-
23
- // Elevation tokens
24
- export { shadows } from './shadows';
25
- export type { ShadowTokens } from './shadows';
26
-
27
- // Convenience re-export of all tokens as a single object.
28
- // Mirrors the legacy `tokens` export from `src/theme/tokens.ts`.
29
- import { palette } from './palette';
30
- import { theme } from './theme';
31
-
32
- export const tokens = {
33
- palette,
34
- theme,
35
- } as const;
@@ -1,36 +0,0 @@
1
- // Primitive color palette for the GV Tech design system.
2
- // These are the raw color values. They should NOT be used directly in components —
3
- // use semantic tokens from `theme.ts` instead.
4
-
5
- export const palette = {
6
- brand: {
7
- blue: 'hsl(225 73% 57%)', // Royal Blue (Intellect)
8
- green: 'hsl(151 66% 27%)', // #177245 (Stability)
9
- floralWhite: 'hsl(40 100% 97%)', // Light Neutral / Floral White
10
- },
11
- neutral: {
12
- white: 'hsl(0 0% 100%)',
13
- black: 'hsl(0 0% 0%)', // Pure Black
14
- gray50: 'hsl(0 0% 96%)', // White Smoke
15
- gray100: 'hsl(0 0% 92%)', // Gainsboro
16
- gray200: 'hsl(0 0% 89%)', // Light Gray
17
- gray300: 'hsl(0 0% 88%)', // French Gray
18
- gray400: 'hsl(0 0% 70%)', // Silver
19
- gray500: 'hsl(215 16% 47%)', // Steel Blue
20
- gray600: 'hsl(222 47% 11%)', // Oxford Blue
21
- gray700: 'hsl(0 0% 18%)', // Raisin Black
22
- gray800: 'hsl(0 0% 15%)', // Jet
23
- gray900: 'hsl(0 0% 14%)', // Eerie Black
24
- gray950: 'hsl(0 0% 11%)', // Night (alt)
25
- gray975: 'hsl(0 0% 9%)', // Night
26
- gray990: 'hsl(0 0% 6%)', // Black (almost)
27
- },
28
- semantic: {
29
- success: 'hsl(93 28% 54%)', // Asparagus / Pistachio
30
- successDark: 'hsl(96 44% 61%)',
31
- destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red
32
- destructiveDark: 'hsl(0 62.8% 30.6%)', // Blood Red
33
- },
34
- } as const;
35
-
36
- export type PaletteTokens = typeof palette;
@@ -1,26 +0,0 @@
1
- // Border radius tokens for the GV Tech design system.
2
-
3
- export const radii = {
4
- none: '0',
5
- sm: 'calc(var(--radius) - 4px)',
6
- md: 'calc(var(--radius) - 2px)',
7
- lg: 'var(--radius)',
8
- xl: 'calc(var(--radius) + 4px)',
9
- '2xl': 'calc(var(--radius) + 8px)',
10
- full: '9999px',
11
- } as const;
12
-
13
- // Numeric radius values (in px) for React Native, which doesn't support CSS calc().
14
- // Based on a default --radius of 0.5rem (8px).
15
- export const radiiNumeric = {
16
- none: 0,
17
- sm: 4, // 8 - 4
18
- md: 6, // 8 - 2
19
- lg: 8, // base
20
- xl: 12, // 8 + 4
21
- '2xl': 16, // 8 + 8
22
- full: 9999,
23
- } as const;
24
-
25
- export type RadiiTokens = typeof radii;
26
- export type RadiiNumericTokens = typeof radiiNumeric;