@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
package/components.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "new-york",
4
- "rsc": false,
5
- "tsx": true,
6
- "tailwind": {
7
- "config": "tailwind.config.js",
8
- "css": "src/globals.css",
9
- "baseColor": "slate",
10
- "cssVariables": true,
11
- "prefix": ""
12
- },
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/hooks"
19
- }
20
- }
@@ -1,165 +0,0 @@
1
- # ADR: Cross-Platform Design System via Unified Monorepo
2
-
3
- **Date:** 2026-02-17
4
- **Status:** Accepted
5
- **Author(s):** Garcia Ventures Engineering
6
-
7
- > See [update-plan.md](./update-plan.md) for the actionable Phase 0/1 migration plan with PR checklists.
8
-
9
- ---
10
-
11
- ## Context
12
-
13
- The GV Tech Design System (`@gv-tech/design-system`) currently ships as a **single Vite-based package** with platform-conditional file extensions (`.web.tsx` / `.native.tsx`). While this allowed rapid prototyping of React Native support—seven components now have functional native implementations—the single-package approach has revealed scaling issues:
14
-
15
- - **Token duplication risk**: both platforms reference the same `src/theme/tokens.ts` file but with no formal contract guaranteeing they stay in sync.
16
- - **No shared component contracts**: props, variants, and sizes are redefined independently in each platform file. Drift is inevitable.
17
- - **Build coupling**: the Vite library build is web-focused; native outputs rely on Metro's file extension resolution, not a shared build pipeline.
18
- - **Testing isolation**: there's no way to run native-specific tests in CI without a full RN environment; web tests cannot validate API parity.
19
-
20
- ## Decision
21
-
22
- **Adopt Option 1 — One cross-platform design system with platform-specific implementations** — structured as an **Nx + Yarn workspaces monorepo**.
23
-
24
- ### Architecture
25
-
26
- ```text
27
- gvtech-design/ (Nx workspace root)
28
- ├── packages/
29
- │ ├── design-tokens/ Shared tokens (colors, spacing, radii, typography, shadows)
30
- │ │ └── src/
31
- │ │ ├── palette.ts Primitive color palette
32
- │ │ ├── theme.ts Semantic token mappings (light/dark)
33
- │ │ ├── spacing.ts Spacing scale
34
- │ │ ├── typography.ts Font families, sizes, weights
35
- │ │ ├── shadows.ts Elevation / shadow definitions
36
- │ │ └── index.ts Barrel export
37
- │ │
38
- │ ├── ui-core/ Shared types, contracts, headless logic
39
- │ │ └── src/
40
- │ │ ├── contracts/ Component contracts (props, variants, sizes)
41
- │ │ │ ├── button.ts
42
- │ │ │ ├── text.ts
43
- │ │ │ ├── input.ts
44
- │ │ │ ├── card.ts
45
- │ │ │ ├── checkbox.ts
46
- │ │ │ ├── radio.ts
47
- │ │ │ ├── dialog.ts
48
- │ │ │ └── toast.ts
49
- │ │ ├── types/ Shared utility types
50
- │ │ └── index.ts
51
- │ │
52
- │ ├── ui-web/ Web implementation (shadcn + Radix + Tailwind)
53
- │ │ └── src/components/
54
- │ │ ├── button.tsx
55
- │ │ ├── input.tsx
56
- │ │ └── ...
57
- │ │
58
- │ └── ui-native/ React Native implementation (RN Reusables + NativeWind)
59
- │ └── src/components/
60
- │ ├── button.tsx
61
- │ ├── input.tsx
62
- │ └── ...
63
-
64
- ├── apps/
65
- │ └── ui-playground/ Extended playground (web + native parity views)
66
-
67
- ├── nx.json (task runner + caching)
68
- ├── package.json (Yarn workspaces root)
69
- ```
70
-
71
- ### Key Principles
72
-
73
- | Principle | Detail |
74
- | :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- |
75
- | **Single token source** | All tokens come from `design-tokens`. No per-platform forks without explicit approval. |
76
- | **Matched API surface** | Component names, props, variants, and sizes are defined in `ui-core` contracts and implemented identically on both platforms wherever possible. |
77
- | **Documented divergence** | Platform-specific UX differences (e.g., Dialog → BottomSheet on native) must preserve semantic intent and be documented with "diff notes." |
78
- | **Own the code** | Native components may start from React Native Reusables patterns but must live in our repo, wired to our tokens and contracts. |
79
- | **Incremental migration** | The existing single-package structure continues to work during the transition. Packages are extracted incrementally. |
80
-
81
- ## Consequences
82
-
83
- ### Positive
84
-
85
- - Tokens are a single source of truth — changes propagate to both platforms automatically.
86
- - Component contracts prevent API drift and enable parity testing.
87
- - Nx task graph + caching accelerate CI/CD for affected packages only.
88
- - Playground can show side-by-side parity views with diff notes.
89
-
90
- ### Negative / Risks
91
-
92
- - **Migration overhead**: extracting from a single package into a monorepo requires careful phasing.
93
- - **Build complexity**: two build targets (Vite for web, Metro/Expo for native) must be orchestrated.
94
- - **Team learning curve**: Nx workspace conventions and package boundaries.
95
-
96
- ### Mitigations
97
-
98
- - Phase 1 focuses on extracting `design-tokens` and `ui-core` first (lowest risk, highest value).
99
- - Existing components continue to work via the current package during migration.
100
- - Documentation (this ADR + phase tracker) ensures alignment.
101
-
102
- ## Current State Reference
103
-
104
- | Aspect | Status |
105
- | :-------------------------- | :----------------------------------------------------------------------------- |
106
- | Components with native impl | 7 of 49+ (Button, Input, Label, Badge, Accordion, Alert, Avatar) |
107
- | Remaining native components | Placeholder only ("not yet implemented") |
108
- | Token location | `src/theme/tokens.ts` (palette + semantic themes) |
109
- | Build system | Vite (multi-entry library build) |
110
- | Existing RN deps | `react-native`, `nativewind`, `react-native-reanimated`, `@rn-primitives/slot` |
111
-
112
- ---
113
-
114
- ## Open Decisions (Team Input Required)
115
-
116
- ### 1. Token Source Format
117
-
118
- | Option | Pros | Cons |
119
- | :------------------------------- | :---------------------------------------------- | :-------------------------------------------- |
120
- | **TS-first** (current approach) | Type safety, IDE completion, direct import | Requires build step for non-TS consumers |
121
- | **JSON-first** | Universal (Style Dictionary compatible) | Loses TS types, needs codegen for type safety |
122
- | **TS-first + JSON build output** | Best of both — TS as source, JSON/CSS generated | Slightly more build config |
123
-
124
- > **Recommendation:** TS-first with generated JSON/CSS outputs. This preserves the current workflow while enabling future integrations (Figma plugins, Style Dictionary).
125
-
126
- ### 2. React Native Styling Approach
127
-
128
- | Option | Pros | Cons |
129
- | :----------------------------- | :--------------------------------------------------------- | :------------------------------------------- |
130
- | **NativeWind** (current) | Tailwind class syntax consistency with web, already in use | Tied to Tailwind version, some edge cases |
131
- | **StyleSheet + token imports** | Pure RN, no extra deps | Class name parity lost, more boilerplate |
132
- | **Tamagui / Unistyles** | Cross-platform styling | Additional abstraction layer, learning curve |
133
-
134
- > **Recommendation:** Stay with NativeWind — it's already in use, provides className parity with web, and maps directly to shared tokens.
135
-
136
- ### 3. Expo vs Bare React Native
137
-
138
- This affects Nx executor configuration, dev loop, and native module linking. **Team should specify.**
139
-
140
- ### 4. Phase 1 Component List
141
-
142
- Proposed first set (7 components):
143
-
144
- | Component | Web Status | Native Status | Priority Rationale |
145
- | :------------------- | :---------- | :------------- | :------------------------------------------------------------ |
146
- | **Button** | ✅ Complete | ✅ Complete | Core interaction — already done |
147
- | **Text** | ✅ Complete | 🆕 New | Foundation for typography |
148
- | **Input** | ✅ Complete | ✅ Complete | Core form element — already done |
149
- | **Checkbox / Radio** | ✅ Complete | ❌ Placeholder | Core form elements |
150
- | **Card** | ✅ Complete | ✅ Complete\* | Layout primitive — native exists but needs contract alignment |
151
- | **Dialog / Sheet** | ✅ Complete | ❌ Placeholder | Critical overlay pattern (maps to BottomSheet on native) |
152
- | **Toast** | ✅ Complete | ❌ Placeholder | Feedback pattern |
153
-
154
- > [!NOTE]
155
- > Button, Input, and Card already have native implementations. They will be migrated to use `ui-core` contracts rather than rewritten.
156
-
157
- ---
158
-
159
- ## References
160
-
161
- - [Nx Workspace Docs](https://nx.dev/docs/reference/create-nx-workspace)
162
- - [Nx Dependency Graph](https://nx.dev/docs/features/explore-graph)
163
- - [React Native Reusables](https://rnr-docs.vercel.app/)
164
- - [Yarn Workspaces Monorepo Guide](https://www.premieroctet.com/blog/en/yarn-monorepo)
165
- - Prior art: `docs/universal-implementation.md`
@@ -1,57 +0,0 @@
1
- # ADR: Adopting Expo for Native Development & Playground
2
-
3
- **Date:** 2026-02-19
4
- **Status:** Accepted
5
- **Author(s):** Garcia Ventures Engineering
6
-
7
- ---
8
-
9
- ## Context
10
-
11
- As part of the [Architecture Pivot](./architecture-pivot.md), we must decide on the infrastructure for developing, testing, and demonstrating the React Native implementation of the GV Tech Design System (`@gv-tech/ui-native`).
12
-
13
- The choice between the **Expo SDK** and the **Bare React Native CLI** affects:
14
-
15
- 1. The developer experience (DX) for contributors.
16
- 2. The ease of testing components on physical devices.
17
- 3. The complexity of CI/CD pipelines (native build orchestration).
18
- 4. The onboarding process for library consumers.
19
-
20
- ## Decision
21
-
22
- We will adopt an **Expo-compatible strategy**, specifically utilizing the **Expo SDK** and **Continuous Native Generation (CNG)** for the playground and internal development.
23
-
24
- ### Implementation Details
25
-
26
- | Aspect | Decision |
27
- | :----------------- | :----------------------------------------------------------------------------------------------------------------------- |
28
- | **Playground App** | Built with Expo to enable instant QR-code testing via Expo Go or Development Builds. |
29
- | **Native Library** | Developed as a standard React Native library that remains 100% compatible with "Bare" projects. |
30
- | **Tooling** | Utilize `@nx/expo` for workspace orchestration and EAS (Expo Application Services) for automated native builds. |
31
- | **Testing** | **Vitest** (Unified). Native components are tested via `react-native-web` shims in Vitest, eliminating Babel/Jest bloat. |
32
-
33
- ## Rationale
34
-
35
- 1. **Lower Friction (DX):** Expo eliminates the need for developers to manually manage `/ios` and `/android` directories, Gradle files, or CocoaPods. Most contributors won't need Xcode or Android Studio to work on UI components.
36
- 2. **Instant Feedback:** The ability to share a QR code for a "Development Build" allows stakeholders to test new components on real devices without installing binaries.
37
- 3. **CI/CD Efficiency:** Nx supports Expo natively, allowing us to cache build outputs and run tests in a headless environment without the massive overhead of "Bare" native builds.
38
- 4. **Market Alignment:** In 2026, Expo is the industry standard for starting new React Native projects. Supporting it ensures we cater to the majority of our consumers while still maintaining "Bare" compatibility.
39
-
40
- ## Consequences
41
-
42
- ### Positive
43
-
44
- - **Faster Onboarding:** New developers can start contributing to `ui-native` in minutes.
45
- - **Unified CI:** Native linting and testing can be easily integrated into our existing CI workflows.
46
- - **Improved Stability:** Expo SDK provides a stable, versioned platform for dependencies like `react-native-reanimated` and `react-native-svg`.
47
-
48
- ### Negative / Risks
49
-
50
- - **Ejecting:** If we ever require a native dependency that has no Expo Config Plugin, we would need to maintain a custom plugin or utilize `prebuild` to customize native code. _Mitigation: We will prioritize components that use universal primitives and established plugins._
51
- - **Bundle Size:** Some Expo SDK modules include extra code. _Mitigation: Since we are a library, this only affects the playground app; consumers only pay for what they import._
52
-
53
- ## References
54
-
55
- - [Architecture Pivot ADR](./architecture-pivot.md)
56
- - [Expo Continuous Native Generation (CNG)](https://docs.expo.dev/workflow/continuous-native-generation/)
57
- - [Nx Expo Guide](https://nx.dev/recipes/expo)
@@ -1,144 +0,0 @@
1
- # Phase 1 Tracker — Cross-Platform Design System
2
-
3
- **Started:** 2026-02-17
4
- **Updated:** 2026-02-19
5
- **Status:** 🟢 Phase 1 Complete — Tests Passing, Docs & Playground Polish In Progress
6
-
7
- > See [update-plan.md](./update-plan.md) for the actionable Phase 0 PR checklist and Phase 1 migration steps.
8
-
9
- ---
10
-
11
- ## Phase 1 Deliverables
12
-
13
- ### Infrastructure
14
-
15
- | Task | Status | Owner | Notes |
16
- | :------------------------------ | :------ | :---- | :----------------------------------------------------------- |
17
- | Initialize Nx workspace | ✅ Done | | Nx 22.5.1 + Yarn workspaces enabled |
18
- | Create `packages/design-tokens` | ✅ Done | | palette, theme, spacing, typography, shadows, radii all live |
19
- | Create `packages/ui-core` | ✅ Done | | 51 contract source files covering all Phase 1 components |
20
- | Create `packages/ui-web` | ✅ Done | | 46 components with tests — all tests passing |
21
- | Create `packages/ui-native` | ✅ Done | | 27+ real implementations — all tests passing |
22
- | Create `apps/playground-web` | ✅ Done | | Full doc site live on Cloudflare Pages |
23
- | Create `apps/native-playground` | ✅ Done | | Expo app scaffolded with core component showcase |
24
- | Configure Nx caching | ✅ Done | | `nx.json` + CI cache restore steps |
25
- | CI/CD pipeline updates | ✅ Done | | Nx cache steps in test + build jobs |
26
-
27
- > **Release tooling:** release-please remains the orchestrator through Phase 0/1. Nx Release is a future option to evaluate after Phase 1. See [update-plan.md](./update-plan.md) and [release-tooling-evaluation.md](./release-tooling-evaluation.md).
28
-
29
- ### Component Parity
30
-
31
- > **Legend:** ✅ Real implementation | 🚫 Not yet implemented (stub) | ⬜ Not started
32
-
33
- | Component | Contract | Web (`ui-web`) | Native (`ui-native`) | Tests (web) | Tests (native) | Notes |
34
- | :------------------ | :------- | :------------- | :------------------- | :---------- | :------------- | :-------------------------------------------- |
35
- | **Accordion** | ✅ | ✅ | ✅ | ✅ | ⬜ | Reanimated animated trigger |
36
- | **Alert** | ✅ | ✅ | ✅ | ✅ | ⬜ | Variants: default, destructive, warning, info |
37
- | **Alert Dialog** | ✅ | ✅ | ✅ | ✅ | ⬜ | Uses Dialog primitives + Reanimated |
38
- | **Aspect Ratio** | ✅ | ✅ | 🚫 | ✅ | — | Web-only concept |
39
- | **Avatar** | ✅ | ✅ | ✅ | ✅ | ⬜ | `@rn-primitives/avatar` |
40
- | **Badge** | ✅ | ✅ | ✅ | ✅ | ⬜ | Variants aligned with web |
41
- | **Breadcrumb** | — | ✅ | 🚫 | ✅ | — | Navigation-heavy, web-first |
42
- | **Button** | ✅ | ✅ | ✅ | ✅ | ✅ | All variants + sizes; Pressable |
43
- | **Calendar** | — | ✅ | 🚫 | ✅ | — | Complex date picker; no RN primitive |
44
- | **Card** | ✅ | ✅ | ✅ | ✅ | ✅ | Full sub-components |
45
- | **Carousel** | — | ✅ | 🚫 | ✅ | — | Embla-based; no RN equivalent yet |
46
- | **Chart** | — | ✅ | 🚫 | ✅ | — | recharts web-only |
47
- | **Checkbox** | ✅ | ✅ | ✅ | ✅ | ✅ | Platform-specific size/stroke |
48
- | **Collapsible** | ✅ | ✅ | ✅ | ✅ | ✅ | `@rn-primitives/collapsible` |
49
- | **Command** | — | ✅ | 🚫 | ✅ | — | cmdk-based; no RN equivalent |
50
- | **Context Menu** | — | ✅ | 🚫 | ✅ | — | Pointer-only interaction |
51
- | **Dialog** | ✅ | ✅ | ✅ | ✅ | ✅ | `@rn-primitives/dialog` + Reanimated |
52
- | **Drawer** | — | ✅ | 🚫 | ✅ | — | Uses vaul; no RN equivalent yet |
53
- | **Dropdown Menu** | — | ✅ | 🚫 | ✅ | — | Pointer-triggered interaction |
54
- | **Form** | — | ✅ | 🚫 | ✅ | — | react-hook-form; web-first |
55
- | **Hover Card** | — | ✅ | 🚫 | ✅ | — | Hover interaction; not applicable native |
56
- | **Input** | ✅ | ✅ | ✅ | ✅ | ✅ | TextInput with contract alignment |
57
- | **Label** | ✅ | ✅ | ✅ | ✅ | ⬜ | nativeID + onPress pattern |
58
- | **Menubar** | — | ✅ | 🚫 | ✅ | — | Desktop navigation pattern |
59
- | **Navigation Menu** | — | ✅ | 🚫 | ✅ | — | Web navigation pattern |
60
- | **Pagination** | — | ✅ | 🚫 | ✅ | — | Cursor-based; alternative on native |
61
- | **Popover** | — | ✅ | 🚫 | ✅ | — | No RN primitive yet |
62
- | **Progress** | — | ✅ | 🚫 | ✅ | — | No RN primitive yet |
63
- | **Radio Group** | ✅ | ✅ | ✅ | ✅ | ✅ | `@rn-primitives/radio-group` |
64
- | **Resizable** | — | ✅ | 🚫 | ✅ | — | Drag-based; not native pattern |
65
- | **Scroll Area** | — | ✅ | 🚫 | ✅ | — | Native scroll is built-in |
66
- | **Search** | — | ✅ | ✅ | ✅ | ⬜ | Command palette pattern |
67
- | **Select** | ✅ | ✅ | ✅ | ✅ | ⬜ | Fully typed complex native impl |
68
- | **Separator** | ✅ | ✅ | ✅ | ✅ | ⬜ | `@rn-primitives/separator` |
69
- | **Sheet** | ✅ | ✅ | ✅ | ✅ | ✅ | SlideInRight animation |
70
- | **Skeleton** | ✅ | ✅ | ✅ | ✅ | ✅ | Reanimated pulsing opacity |
71
- | **Slider** | — | ✅ | 🚫 | ✅ | — | No Expo-compatible RN primitive yet |
72
- | **Sonner** | — | ✅ | 🚫 | ✅ | — | Web toast library; use Toast on native |
73
- | **Switch** | ✅ | ✅ | ✅ | ✅ | ⬜ | `@rn-primitives/switch` |
74
- | **Table** | ✅ | ✅ | ✅ | ✅ | ⬜ | View/Text-based layout |
75
- | **Tabs** | ✅ | ✅ | ✅ | ✅ | ⬜ | `@rn-primitives/tabs` + TextClassContext |
76
- | **Text** | ✅ | ✅ | ✅ | ✅ | ✅ | Typography scale with variants |
77
- | **Textarea** | ✅ | ✅ | ✅ | ✅ | ✅ | TextInput with multiline + autoGrow |
78
- | **Theme Toggle** | — | ✅ | ✅ | ✅ | ⬜ | Dark/light/system |
79
- | **Toast** | ✅ | ✅ | ✅ | ✅ | ✅ | `@rn-primitives/toast` + Reanimated |
80
- | **Toggle** | ✅ | ✅ | ✅ | ✅ | ⬜ | Pressable toggle state |
81
- | **Toggle Group** | ✅ | ✅ | ✅ | ✅ | ⬜ | Multi/single selection |
82
- | **Tooltip** | ✅ | ✅ | ✅ | ✅ | ⬜ | `@rn-primitives/tooltip` + Reanimated |
83
-
84
- ### Playground
85
-
86
- | Task | Status | Notes |
87
- | :-------------------------------------------------- | :----------- | :-------------------------------------------------------------- |
88
- | `playground-web` documentation site | ✅ Complete | Full doc site with Web + Native tabs, sidebar, search |
89
- | Green dot indicator for native-available components | ✅ Complete | Validated — only real implementations show the dot |
90
- | Native tab only shown for real implementations | ✅ Complete | `doc-routes.tsx` + `docs.ts` aligned with actual code |
91
- | `native-playground` Expo app scaffolded | ✅ Complete | Basic showcase: Button, Card, Input, Checkbox, RadioGroup, Text |
92
- | Expand `native-playground` with all real components | ⬜ Next Step | Add Accordion, Alert, Dialog, Sheet, Toast, etc. |
93
- | "Diff notes" section per component | ⬜ Next Step | Document intentional platform differences per component |
94
- | Side-by-side parity note in web doc pages | ⬜ Next Step | Link from web → native tab where native exists |
95
-
96
- ---
97
-
98
- ## Definition of Done
99
-
100
- - [x] Tokens imported from `design-tokens` by both `ui-web` and `ui-native` (no duplication)
101
- - [x] 27+ core components have real native implementations with contracts matching `ui-core`
102
- - [x] All `ui-web` tests passing (46 components)
103
- - [x] All `ui-native` tests passing (12 components with test files)
104
- - [x] Playground shows native tab only for components with real implementations
105
- - [ ] Native playground demonstrates all 27 real native components
106
- - [ ] Platform divergence registry complete (diff notes per component)
107
- - [ ] Sub-package publishing configured in release-please
108
-
109
- ---
110
-
111
- ## Key Decisions
112
-
113
- | Decision | Selected Approach | Status |
114
- | :--------------------- | :------------------------------------ | :---------- |
115
- | Token source format | TS-first + JSON outputs | ✅ Accepted |
116
- | RN styling approach | NativeWind (already in use) | ✅ Accepted |
117
- | Expo vs Bare RN | **Expo (SDK + CNG)** | ✅ Accepted |
118
- | Phase 1 component set | Exceeded: 27+ real (vs 7 planned) | ✅ Complete |
119
- | Release tooling | release-please (stays as-is) | ✅ Accepted |
120
- | Nx release migration | Deferred — evaluate post Phase 1 | 🟡 Pending |
121
- | Sub-package publishing | Root `@gv-tech/design-system` for now | 🟡 Pending |
122
-
123
- > See [native-setup-decision.md](./native-setup-decision.md) for the Expo decision rationale.
124
-
125
- ---
126
-
127
- ## Next Steps (Priority Order)
128
-
129
- 1. **Expand `native-playground`** — Add Accordion, Alert Dialog, Alert, Avatar, Badge, Dialog, Sheet, Skeleton, Switch, Table, Tabs, Toast, Toggle, Tooltip, etc.
130
- 2. **Complete platform divergence registry** — Document intentional differences per component in `universal-implementation.md`
131
- 3. **Native test coverage** — Add test files for the 15+ native components that don't have tests yet
132
- 4. **Sub-package publishing** — Add `@gv-tech/ui-web`, `@gv-tech/ui-native`, `@gv-tech/ui-core`, `@gv-tech/design-tokens` to release-please manifests
133
- 5. **`private: true` at root** — Once sub-packages are the primary publish targets (Decision C from update-plan.md)
134
- 6. **Nx Release evaluation** — Assess whether Nx Release adds value over release-please for the monorepo
135
-
136
- ---
137
-
138
- ## Weekly Status
139
-
140
- | Week | Focus | Completed | Blockers |
141
- | :--------- | :----------------------------------- | :------------------------------------------------------------------------- | :------- |
142
- | 2026-02-17 | Documentation, ADR, initial planning | Architecture docs created | — |
143
- | 2026-02-17 | Phase 0 — Nx + Workspaces setup | Yarn workspaces, Nx 22.5.1, nx.json, CI cache, all checks passing | — |
144
- | 2026-02-19 | Phase 1 complete — Tests green | All 46 web + 12 native tests passing; playground live; docs/routes aligned | — |
@@ -1,67 +0,0 @@
1
- # ADR: Release Orchestration — Release-Please vs. Nx Release
2
-
3
- **Date:** 2026-02-19
4
- **Status:** Evaluation (Deferred to Post-Phase 1)
5
- **Author(s):** Garcia Ventures Engineering
6
-
7
- ## Context
8
-
9
- As the GV Tech Design System transitions to a monorepo architecture with multiple packages (`@gv-tech/ui-web`, `@gv-tech/ui-native`, `@gv-tech/ui-core`, `@gv-tech/design-tokens`), we must choose an orchestration tool to handle versioning, changelog generation, and npm publishing.
10
-
11
- Currently, the project uses **release-please**, which was inherited from the single-package architecture.
12
-
13
- ## Options
14
-
15
- ### 1. Release-Please (Status Quo)
16
-
17
- A "Pull Request-first" tool by Google that parses Conventional Commits to maintain an automated release PR.
18
-
19
- - **Pros:**
20
- - **Low Friction:** Already integrated and working.
21
- - **Visible Workflow:** Releases are "staged" in a visible GitHub PR.
22
- - **Independent Versions:** Natively supports different versions for different packages.
23
- - **Cons:**
24
- - **Workspace Unaware:** Does not understand internal package dependencies. Bumping `ui-core` does not automatically update the version of `ui-core` listed in `ui-native/package.json`.
25
- - **GitHub Locked:** Deeply tied to GitHub Actions and PR events.
26
- - **Complex Manifests:** Multi-package configuration in `release-please-config.json` can become verbose.
27
-
28
- ### 2. Nx Release (Proposed)
29
-
30
- A "Task-first" tool built into the Nx ecosystem that uses the project graph to orchestrate releases.
31
-
32
- - **Pros:**
33
- - **Dependency Sync:** Automatically updates internal package versions when their dependencies change.
34
- - **Lock-step Support:** Simplifies keeping all design system packages on the same version (e.g., all 3.2.0), which is often preferred for design systems.
35
- - **Local Dry-Runs:** Command-line testing (`nx release --dry-run`) allows verification without pushing to Git.
36
- - **Task Graph Integration:** Leverages the Nx cache and task graph for builds during the release process.
37
- - **Cons:**
38
- - **Active vs. Passive:** Requires triggering a command (e.g., via `workflow_dispatch` or on merge) rather than automatically maintaining a PR.
39
- - **Learning Curve:** New configuration format (`nx.json` additions) compared to the familiar `release-please` config.
40
-
41
- ## Comparison Table
42
-
43
- | Feature | Release-Please | Nx Release |
44
- | :--------------------- | :---------------------- | :---------------------------------- |
45
- | **Control Point** | GitHub Pull Request | CLI Command |
46
- | **Monorepo Awareness** | Low (path-based) | High (graph-based) |
47
- | **Dependency Sync** | Manual / External | Automatic |
48
- | **Local Testing** | Requires push/PR | Local Dry-Run |
49
- | **Versioning Goal** | Independent per package | Flexible (Lock-step or Independent) |
50
-
51
- ## Decision
52
-
53
- **We will continue to use Release-Please through the completion of Phase 1.**
54
-
55
- The transition to a multi-package monorepo is already a significant architectural shift. Introducing a new release orchestrator simultaneously increases the risk of delivery delays. Once Phase 1 is stable and the sub-packages are successfully publishing, we will evaluate a migration to **Nx Release** to benefit from **Lock-step versioning** and **automatic dependency synchronization**.
56
-
57
- ## Consequences
58
-
59
- - **Short-term:** Developers must manually ensure that internal `workspace:*` dependencies are correctly handled (or use Yarn's workspace protocol which handles this during local development).
60
- - **Long-term:** If we choose to move to Lock-step versioning (standardizing all packages on one version), Nx Release will significantly reduce the maintenance overhead.
61
- - **Maintenance:** The `release-please-config.json` and `.release-please-manifest.json` files must be kept in sync as new packages are added.
62
-
63
- ## References
64
-
65
- - [Nx Release Documentation](https://nx.dev/features/manage-releases)
66
- - [Release-Please Monorepo Guide](https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md)
67
- - [update-plan.md](./update-plan.md)