@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.
- package/CHANGELOG.md +15 -0
- package/package.json +5 -2
- package/.agent/skills/dogfood-components/SKILL.md +0 -34
- package/.agent/skills/maintain-component/SKILL.md +0 -77
- package/.agent/workflows/native-playground.md +0 -93
- package/.github/CODEOWNERS +0 -2
- package/.github/CONTRIBUTING.md +0 -42
- package/.github/FUNDING.yml +0 -4
- package/.github/PULL_REQUEST_TEMPLATE/build.md +0 -5
- package/.github/PULL_REQUEST_TEMPLATE/standard.md +0 -3
- package/.github/RELEASING.md +0 -37
- package/.github/copilot-instructions.md +0 -61
- package/.github/workflows/ci.yml +0 -91
- package/.github/workflows/codeql-analysis.yml +0 -34
- package/.github/workflows/release-please.yml +0 -79
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -3
- package/.release-please-manifest.json +0 -9
- package/.tool-versions +0 -1
- package/.vscode/launch.json +0 -22
- package/.vscode/mcp.json +0 -8
- package/.vscode/settings.json +0 -30
- package/.yarnrc.yml +0 -7
- package/SECURITY.md +0 -9
- package/apps/.gitkeep +0 -0
- package/apps/native-playground/CHANGELOG.md +0 -8
- package/apps/native-playground/app.json +0 -37
- package/apps/native-playground/assets/fonts/.gitkeep +0 -0
- package/apps/native-playground/assets/images/adaptive-icon.png +0 -0
- package/apps/native-playground/assets/images/favicon.png +0 -0
- package/apps/native-playground/assets/images/icon.png +0 -0
- package/apps/native-playground/assets/images/splash-icon.png +0 -0
- package/apps/native-playground/babel.config.js +0 -6
- package/apps/native-playground/eas.json +0 -25
- package/apps/native-playground/index.js +0 -8
- package/apps/native-playground/metro.config.js +0 -26
- package/apps/native-playground/nativewind-env.d.ts +0 -1
- package/apps/native-playground/package.json +0 -23
- package/apps/native-playground/project.json +0 -15
- package/apps/native-playground/src/app/App.tsx +0 -842
- package/apps/native-playground/src/global.css +0 -49
- package/apps/native-playground/tailwind.config.js +0 -49
- package/apps/native-playground/tsconfig.app.json +0 -24
- package/apps/native-playground/tsconfig.json +0 -23
- package/apps/native-playground/tsconfig.spec.json +0 -24
- package/apps/playground-web/CHANGELOG.md +0 -8
- package/apps/playground-web/index.html +0 -13
- package/apps/playground-web/package.json +0 -31
- package/apps/playground-web/public/favicon.png +0 -0
- package/apps/playground-web/public/index.demo.html +0 -40
- package/apps/playground-web/public/logo192.png +0 -0
- package/apps/playground-web/public/logo512.png +0 -0
- package/apps/playground-web/public/manifest.json +0 -25
- package/apps/playground-web/public/robots.txt +0 -2
- package/apps/playground-web/src/App.tsx +0 -179
- package/apps/playground-web/src/components/docs/CodeBlock.tsx +0 -34
- package/apps/playground-web/src/components/docs/CombinedDocsLayout.tsx +0 -103
- package/apps/playground-web/src/components/docs/ComponentShowcase.tsx +0 -96
- package/apps/playground-web/src/components/docs/ErrorBoundary.tsx +0 -55
- package/apps/playground-web/src/components/docs/Footer.tsx +0 -146
- package/apps/playground-web/src/components/docs/PropsTable.tsx +0 -43
- package/apps/playground-web/src/components/docs/Search.tsx +0 -75
- package/apps/playground-web/src/components/docs/Sidebar.tsx +0 -77
- package/apps/playground-web/src/components/docs/ThemeToggle.tsx +0 -19
- package/apps/playground-web/src/components/docs/index.ts +0 -9
- package/apps/playground-web/src/config/docs.ts +0 -293
- package/apps/playground-web/src/globals.css +0 -148
- package/apps/playground-web/src/hooks/useDocMetadata.ts +0 -34
- package/apps/playground-web/src/hooks/usePackageManager.tsx +0 -42
- package/apps/playground-web/src/lib/react-native-shim.js +0 -34
- package/apps/playground-web/src/main.tsx +0 -11
- package/apps/playground-web/src/pages/index.ts +0 -4
- package/apps/playground-web/src/pages/native/AccordionDocs.tsx +0 -85
- package/apps/playground-web/src/pages/native/AlertDialogDocs.tsx +0 -128
- package/apps/playground-web/src/pages/native/AlertDocs.tsx +0 -89
- package/apps/playground-web/src/pages/native/AspectRatioDocs.tsx +0 -52
- package/apps/playground-web/src/pages/native/AvatarDocs.tsx +0 -92
- package/apps/playground-web/src/pages/native/BadgeDocs.tsx +0 -63
- package/apps/playground-web/src/pages/native/BreadcrumbDocs.tsx +0 -71
- package/apps/playground-web/src/pages/native/ButtonDocs.tsx +0 -103
- package/apps/playground-web/src/pages/native/CalendarDocs.tsx +0 -74
- package/apps/playground-web/src/pages/native/CardDocs.tsx +0 -75
- package/apps/playground-web/src/pages/native/CarouselDocs.tsx +0 -113
- package/apps/playground-web/src/pages/native/ChartDocs.tsx +0 -115
- package/apps/playground-web/src/pages/native/CheckboxDocs.tsx +0 -38
- package/apps/playground-web/src/pages/native/CollapsibleDocs.tsx +0 -89
- package/apps/playground-web/src/pages/native/CommandDocs.tsx +0 -170
- package/apps/playground-web/src/pages/native/ContextMenuDocs.tsx +0 -121
- package/apps/playground-web/src/pages/native/DialogDocs.tsx +0 -132
- package/apps/playground-web/src/pages/native/DrawerDocs.tsx +0 -158
- package/apps/playground-web/src/pages/native/DropdownMenuDocs.tsx +0 -168
- package/apps/playground-web/src/pages/native/HoverCardDocs.tsx +0 -119
- package/apps/playground-web/src/pages/native/InputDocs.tsx +0 -86
- package/apps/playground-web/src/pages/native/LabelDocs.tsx +0 -55
- package/apps/playground-web/src/pages/native/MenubarDocs.tsx +0 -197
- package/apps/playground-web/src/pages/native/NavigationMenuDocs.tsx +0 -190
- package/apps/playground-web/src/pages/native/PaginationDocs.tsx +0 -70
- package/apps/playground-web/src/pages/native/PopoverDocs.tsx +0 -156
- package/apps/playground-web/src/pages/native/ProgressDocs.tsx +0 -61
- package/apps/playground-web/src/pages/native/RadioGroupDocs.tsx +0 -125
- package/apps/playground-web/src/pages/native/ResizableDocs.tsx +0 -118
- package/apps/playground-web/src/pages/native/ScrollAreaDocs.tsx +0 -92
- package/apps/playground-web/src/pages/native/SearchDocs.tsx +0 -150
- package/apps/playground-web/src/pages/native/SelectDocs.tsx +0 -141
- package/apps/playground-web/src/pages/native/SeparatorDocs.tsx +0 -72
- package/apps/playground-web/src/pages/native/SheetDocs.tsx +0 -140
- package/apps/playground-web/src/pages/native/SkeletonDocs.tsx +0 -44
- package/apps/playground-web/src/pages/native/SliderDocs.tsx +0 -118
- package/apps/playground-web/src/pages/native/SonnerDocs.tsx +0 -111
- package/apps/playground-web/src/pages/native/SwitchDocs.tsx +0 -87
- package/apps/playground-web/src/pages/native/TableDocs.tsx +0 -67
- package/apps/playground-web/src/pages/native/TabsDocs.tsx +0 -175
- package/apps/playground-web/src/pages/native/TextareaDocs.tsx +0 -61
- package/apps/playground-web/src/pages/native/ThemeToggleDocs.tsx +0 -288
- package/apps/playground-web/src/pages/native/ToastDocs.tsx +0 -124
- package/apps/playground-web/src/pages/native/ToggleDocs.tsx +0 -81
- package/apps/playground-web/src/pages/native/ToggleGroupDocs.tsx +0 -128
- package/apps/playground-web/src/pages/native/TooltipDocs.tsx +0 -140
- package/apps/playground-web/src/pages/native/index.ts +0 -47
- package/apps/playground-web/src/pages/shared/ColorTokensDocs.tsx +0 -234
- package/apps/playground-web/src/pages/shared/GettingStarted.tsx +0 -413
- package/apps/playground-web/src/pages/web/AccordionDocs.tsx +0 -194
- package/apps/playground-web/src/pages/web/AlertDialogDocs.tsx +0 -157
- package/apps/playground-web/src/pages/web/AlertDocs.tsx +0 -110
- package/apps/playground-web/src/pages/web/AspectRatioDocs.tsx +0 -94
- package/apps/playground-web/src/pages/web/AvatarDocs.tsx +0 -81
- package/apps/playground-web/src/pages/web/BadgeDocs.tsx +0 -66
- package/apps/playground-web/src/pages/web/BreadcrumbDocs.tsx +0 -93
- package/apps/playground-web/src/pages/web/ButtonDocs.tsx +0 -129
- package/apps/playground-web/src/pages/web/CalendarDocs.tsx +0 -78
- package/apps/playground-web/src/pages/web/CardDocs.tsx +0 -115
- package/apps/playground-web/src/pages/web/CarouselDocs.tsx +0 -176
- package/apps/playground-web/src/pages/web/ChartDocs.tsx +0 -151
- package/apps/playground-web/src/pages/web/CheckboxDocs.tsx +0 -95
- package/apps/playground-web/src/pages/web/CollapsibleDocs.tsx +0 -111
- package/apps/playground-web/src/pages/web/CommandDocs.tsx +0 -219
- package/apps/playground-web/src/pages/web/ContextMenuDocs.tsx +0 -164
- package/apps/playground-web/src/pages/web/DialogDocs.tsx +0 -175
- package/apps/playground-web/src/pages/web/DrawerDocs.tsx +0 -283
- package/apps/playground-web/src/pages/web/DropdownMenuDocs.tsx +0 -319
- package/apps/playground-web/src/pages/web/FormDocs.tsx +0 -175
- package/apps/playground-web/src/pages/web/HoverCardDocs.tsx +0 -151
- package/apps/playground-web/src/pages/web/InputDocs.tsx +0 -118
- package/apps/playground-web/src/pages/web/LabelDocs.tsx +0 -59
- package/apps/playground-web/src/pages/web/MenubarDocs.tsx +0 -296
- package/apps/playground-web/src/pages/web/NavigationMenuDocs.tsx +0 -263
- package/apps/playground-web/src/pages/web/PaginationDocs.tsx +0 -102
- package/apps/playground-web/src/pages/web/PopoverDocs.tsx +0 -189
- package/apps/playground-web/src/pages/web/ProgressDocs.tsx +0 -70
- package/apps/playground-web/src/pages/web/RadioGroupDocs.tsx +0 -137
- package/apps/playground-web/src/pages/web/ResizableDocs.tsx +0 -143
- package/apps/playground-web/src/pages/web/ScrollAreaDocs.tsx +0 -107
- package/apps/playground-web/src/pages/web/SearchDocs.tsx +0 -203
- package/apps/playground-web/src/pages/web/SelectDocs.tsx +0 -164
- package/apps/playground-web/src/pages/web/SeparatorDocs.tsx +0 -88
- package/apps/playground-web/src/pages/web/SheetDocs.tsx +0 -186
- package/apps/playground-web/src/pages/web/SkeletonDocs.tsx +0 -53
- package/apps/playground-web/src/pages/web/SliderDocs.tsx +0 -119
- package/apps/playground-web/src/pages/web/SonnerDocs.tsx +0 -126
- package/apps/playground-web/src/pages/web/SwitchDocs.tsx +0 -91
- package/apps/playground-web/src/pages/web/TableDocs.tsx +0 -148
- package/apps/playground-web/src/pages/web/TabsDocs.tsx +0 -241
- package/apps/playground-web/src/pages/web/TextareaDocs.tsx +0 -65
- package/apps/playground-web/src/pages/web/ThemeToggleDocs.tsx +0 -303
- package/apps/playground-web/src/pages/web/ToastDocs.tsx +0 -149
- package/apps/playground-web/src/pages/web/ToggleDocs.tsx +0 -85
- package/apps/playground-web/src/pages/web/ToggleGroupDocs.tsx +0 -140
- package/apps/playground-web/src/pages/web/TooltipDocs.tsx +0 -150
- package/apps/playground-web/src/pages/web/index.ts +0 -47
- package/apps/playground-web/src/routes/doc-routes.tsx +0 -363
- package/apps/playground-web/tailwind.config.js +0 -47
- package/apps/playground-web/tsconfig.app.json +0 -16
- package/apps/playground-web/tsconfig.json +0 -4
- package/apps/playground-web/tsconfig.node.json +0 -13
- package/apps/playground-web/vite.config.ts +0 -41
- package/components.json +0 -20
- package/docs/architecture-pivot.md +0 -165
- package/docs/native-setup-decision.md +0 -57
- package/docs/phase-1-tracker.md +0 -144
- package/docs/release-tooling-evaluation.md +0 -67
- package/docs/universal-implementation.md +0 -195
- package/docs/update-plan.md +0 -268
- package/eslint.config.mjs +0 -13
- package/nx.json +0 -50
- package/packages/.gitkeep +0 -0
- package/packages/design-tokens/CHANGELOG.md +0 -8
- package/packages/design-tokens/package.json +0 -20
- package/packages/design-tokens/src/index.ts +0 -35
- package/packages/design-tokens/src/palette.ts +0 -36
- package/packages/design-tokens/src/radii.ts +0 -26
- package/packages/design-tokens/src/shadows.ts +0 -16
- package/packages/design-tokens/src/spacing.ts +0 -33
- package/packages/design-tokens/src/theme.ts +0 -54
- package/packages/design-tokens/src/typography.ts +0 -36
- package/packages/design-tokens/tsconfig.json +0 -17
- package/packages/ui-core/CHANGELOG.md +0 -8
- package/packages/ui-core/package.json +0 -40
- package/packages/ui-core/src/contracts/accordion.ts +0 -23
- package/packages/ui-core/src/contracts/alert-dialog.ts +0 -48
- package/packages/ui-core/src/contracts/alert.ts +0 -17
- package/packages/ui-core/src/contracts/aspect-ratio.ts +0 -7
- package/packages/ui-core/src/contracts/avatar.ts +0 -17
- package/packages/ui-core/src/contracts/badge.ts +0 -7
- package/packages/ui-core/src/contracts/breadcrumb.ts +0 -37
- package/packages/ui-core/src/contracts/button.ts +0 -17
- package/packages/ui-core/src/contracts/calendar.ts +0 -4
- package/packages/ui-core/src/contracts/card.ts +0 -11
- package/packages/ui-core/src/contracts/carousel.ts +0 -29
- package/packages/ui-core/src/contracts/chart.ts +0 -31
- package/packages/ui-core/src/contracts/checkbox.ts +0 -11
- package/packages/ui-core/src/contracts/collapsible.ts +0 -21
- package/packages/ui-core/src/contracts/command.ts +0 -43
- package/packages/ui-core/src/contracts/context-menu.ts +0 -78
- package/packages/ui-core/src/contracts/dialog.ts +0 -29
- package/packages/ui-core/src/contracts/drawer.ts +0 -39
- package/packages/ui-core/src/contracts/dropdown-menu.ts +0 -87
- package/packages/ui-core/src/contracts/form.ts +0 -29
- package/packages/ui-core/src/contracts/hover-card.ts +0 -21
- package/packages/ui-core/src/contracts/input.ts +0 -11
- package/packages/ui-core/src/contracts/label.ts +0 -7
- package/packages/ui-core/src/contracts/menubar.ts +0 -86
- package/packages/ui-core/src/contracts/navigation-menu.ts +0 -55
- package/packages/ui-core/src/contracts/pagination.ts +0 -38
- package/packages/ui-core/src/contracts/popover.ts +0 -28
- package/packages/ui-core/src/contracts/progress.ts +0 -4
- package/packages/ui-core/src/contracts/radio.ts +0 -16
- package/packages/ui-core/src/contracts/resizable.ts +0 -36
- package/packages/ui-core/src/contracts/scroll-area.ts +0 -15
- package/packages/ui-core/src/contracts/search.ts +0 -13
- package/packages/ui-core/src/contracts/select.ts +0 -64
- package/packages/ui-core/src/contracts/separator.ts +0 -5
- package/packages/ui-core/src/contracts/sheet.ts +0 -58
- package/packages/ui-core/src/contracts/skeleton.ts +0 -6
- package/packages/ui-core/src/contracts/slider.ts +0 -15
- package/packages/ui-core/src/contracts/sonner.ts +0 -15
- package/packages/ui-core/src/contracts/switch.ts +0 -11
- package/packages/ui-core/src/contracts/table.ts +0 -41
- package/packages/ui-core/src/contracts/tabs.ts +0 -31
- package/packages/ui-core/src/contracts/text.ts +0 -12
- package/packages/ui-core/src/contracts/textarea.ts +0 -7
- package/packages/ui-core/src/contracts/theme-provider.ts +0 -14
- package/packages/ui-core/src/contracts/theme-toggle.ts +0 -15
- package/packages/ui-core/src/contracts/toast.ts +0 -15
- package/packages/ui-core/src/contracts/toaster.ts +0 -3
- package/packages/ui-core/src/contracts/toggle-group.ts +0 -23
- package/packages/ui-core/src/contracts/toggle.ts +0 -49
- package/packages/ui-core/src/contracts/tooltip.ts +0 -28
- package/packages/ui-core/src/index.ts +0 -327
- package/packages/ui-core/tsconfig.json +0 -18
- package/packages/ui-native/CHANGELOG.md +0 -8
- package/packages/ui-native/package.json +0 -76
- package/packages/ui-native/src/accordion.tsx +0 -93
- package/packages/ui-native/src/alert-dialog.tsx +0 -123
- package/packages/ui-native/src/alert.tsx +0 -50
- package/packages/ui-native/src/aspect-ratio.tsx +0 -9
- package/packages/ui-native/src/avatar.tsx +0 -38
- package/packages/ui-native/src/badge.tsx +0 -51
- package/packages/ui-native/src/breadcrumb.tsx +0 -9
- package/packages/ui-native/src/button.test.tsx +0 -27
- package/packages/ui-native/src/button.tsx +0 -75
- package/packages/ui-native/src/calendar.tsx +0 -9
- package/packages/ui-native/src/card.test.tsx +0 -33
- package/packages/ui-native/src/card.tsx +0 -56
- package/packages/ui-native/src/carousel.tsx +0 -9
- package/packages/ui-native/src/chart.tsx +0 -9
- package/packages/ui-native/src/checkbox.test.tsx +0 -58
- package/packages/ui-native/src/checkbox.tsx +0 -31
- package/packages/ui-native/src/collapsible.test.tsx +0 -50
- package/packages/ui-native/src/collapsible.tsx +0 -15
- package/packages/ui-native/src/command.tsx +0 -9
- package/packages/ui-native/src/context-menu.tsx +0 -9
- package/packages/ui-native/src/dialog.test.tsx +0 -91
- package/packages/ui-native/src/dialog.tsx +0 -121
- package/packages/ui-native/src/drawer.tsx +0 -9
- package/packages/ui-native/src/dropdown-menu.tsx +0 -9
- package/packages/ui-native/src/form.tsx +0 -9
- package/packages/ui-native/src/hover-card.tsx +0 -9
- package/packages/ui-native/src/index.ts +0 -209
- package/packages/ui-native/src/input.test.tsx +0 -27
- package/packages/ui-native/src/input.tsx +0 -27
- package/packages/ui-native/src/label.tsx +0 -29
- package/packages/ui-native/src/lib/render-native.tsx +0 -17
- package/packages/ui-native/src/lib/utils.ts +0 -6
- package/packages/ui-native/src/menubar.tsx +0 -9
- package/packages/ui-native/src/nativewind-env.d.ts +0 -1
- package/packages/ui-native/src/navigation-menu.tsx +0 -9
- package/packages/ui-native/src/pagination.tsx +0 -9
- package/packages/ui-native/src/popover.tsx +0 -9
- package/packages/ui-native/src/progress.tsx +0 -9
- package/packages/ui-native/src/radio-group.test.tsx +0 -77
- package/packages/ui-native/src/radio-group.tsx +0 -42
- package/packages/ui-native/src/resizable.tsx +0 -25
- package/packages/ui-native/src/scroll-area.tsx +0 -9
- package/packages/ui-native/src/search.tsx +0 -17
- package/packages/ui-native/src/select.tsx +0 -229
- package/packages/ui-native/src/separator.tsx +0 -20
- package/packages/ui-native/src/sheet.test.tsx +0 -93
- package/packages/ui-native/src/sheet.tsx +0 -127
- package/packages/ui-native/src/skeleton.test.tsx +0 -29
- package/packages/ui-native/src/skeleton.tsx +0 -31
- package/packages/ui-native/src/slider.tsx +0 -9
- package/packages/ui-native/src/sonner.tsx +0 -9
- package/packages/ui-native/src/switch.tsx +0 -34
- package/packages/ui-native/src/table.tsx +0 -73
- package/packages/ui-native/src/tabs.tsx +0 -74
- package/packages/ui-native/src/text.test.tsx +0 -24
- package/packages/ui-native/src/text.tsx +0 -43
- package/packages/ui-native/src/textarea.test.tsx +0 -27
- package/packages/ui-native/src/textarea.tsx +0 -29
- package/packages/ui-native/src/theme-provider.tsx +0 -6
- package/packages/ui-native/src/theme-toggle.tsx +0 -11
- package/packages/ui-native/src/toast.test.tsx +0 -61
- package/packages/ui-native/src/toast.tsx +0 -88
- package/packages/ui-native/src/toaster.tsx +0 -9
- package/packages/ui-native/src/toggle-group.tsx +0 -78
- package/packages/ui-native/src/toggle.tsx +0 -35
- package/packages/ui-native/src/tooltip.tsx +0 -44
- package/packages/ui-native/tsconfig.json +0 -23
- package/packages/ui-native/vite.config.ts +0 -17
- package/packages/ui-web/CHANGELOG.md +0 -8
- package/packages/ui-web/package.json +0 -84
- package/packages/ui-web/src/accordion.test.tsx +0 -86
- package/packages/ui-web/src/accordion.tsx +0 -58
- package/packages/ui-web/src/alert-dialog.test.tsx +0 -91
- package/packages/ui-web/src/alert-dialog.tsx +0 -121
- package/packages/ui-web/src/alert.test.tsx +0 -47
- package/packages/ui-web/src/alert.tsx +0 -49
- package/packages/ui-web/src/aspect-ratio.test.tsx +0 -34
- package/packages/ui-web/src/aspect-ratio.tsx +0 -7
- package/packages/ui-web/src/avatar.test.tsx +0 -33
- package/packages/ui-web/src/avatar.tsx +0 -40
- package/packages/ui-web/src/badge.test.tsx +0 -24
- package/packages/ui-web/src/badge.tsx +0 -34
- package/packages/ui-web/src/breadcrumb.tsx +0 -105
- package/packages/ui-web/src/button.test.tsx +0 -62
- package/packages/ui-web/src/button.tsx +0 -47
- package/packages/ui-web/src/calendar.test.tsx +0 -23
- package/packages/ui-web/src/calendar.tsx +0 -163
- package/packages/ui-web/src/card.test.tsx +0 -35
- package/packages/ui-web/src/card.tsx +0 -46
- package/packages/ui-web/src/carousel.test.tsx +0 -37
- package/packages/ui-web/src/carousel.tsx +0 -234
- package/packages/ui-web/src/chart.test.tsx +0 -62
- package/packages/ui-web/src/chart.tsx +0 -296
- package/packages/ui-web/src/checkbox.test.tsx +0 -30
- package/packages/ui-web/src/checkbox.tsx +0 -31
- package/packages/ui-web/src/collapsible.test.tsx +0 -51
- package/packages/ui-web/src/collapsible.tsx +0 -15
- package/packages/ui-web/src/command.test.tsx +0 -79
- package/packages/ui-web/src/command.tsx +0 -154
- package/packages/ui-web/src/context-menu.test.tsx +0 -37
- package/packages/ui-web/src/context-menu.tsx +0 -208
- package/packages/ui-web/src/dialog.test.tsx +0 -66
- package/packages/ui-web/src/dialog.tsx +0 -95
- package/packages/ui-web/src/drawer.test.tsx +0 -68
- package/packages/ui-web/src/drawer.tsx +0 -110
- package/packages/ui-web/src/dropdown-menu.test.tsx +0 -93
- package/packages/ui-web/src/dropdown-menu.tsx +0 -212
- package/packages/ui-web/src/form.test.tsx +0 -84
- package/packages/ui-web/src/form.tsx +0 -160
- package/packages/ui-web/src/hooks/use-theme.ts +0 -15
- package/packages/ui-web/src/hooks/use-toast.ts +0 -189
- package/packages/ui-web/src/hover-card.test.tsx +0 -48
- package/packages/ui-web/src/hover-card.tsx +0 -35
- package/packages/ui-web/src/index.ts +0 -474
- package/packages/ui-web/src/input.test.tsx +0 -33
- package/packages/ui-web/src/input.tsx +0 -23
- package/packages/ui-web/src/label.test.tsx +0 -27
- package/packages/ui-web/src/label.tsx +0 -21
- package/packages/ui-web/src/lib/utils.ts +0 -6
- package/packages/ui-web/src/menubar.test.tsx +0 -92
- package/packages/ui-web/src/menubar.tsx +0 -244
- package/packages/ui-web/src/navigation-menu.test.tsx +0 -53
- package/packages/ui-web/src/navigation-menu.tsx +0 -143
- package/packages/ui-web/src/pagination.test.tsx +0 -57
- package/packages/ui-web/src/pagination.tsx +0 -107
- package/packages/ui-web/src/popover.test.tsx +0 -31
- package/packages/ui-web/src/popover.tsx +0 -45
- package/packages/ui-web/src/progress.test.tsx +0 -18
- package/packages/ui-web/src/progress.tsx +0 -28
- package/packages/ui-web/src/radio-group.test.tsx +0 -39
- package/packages/ui-web/src/radio-group.tsx +0 -41
- package/packages/ui-web/src/resizable.test.tsx +0 -23
- package/packages/ui-web/src/resizable.tsx +0 -59
- package/packages/ui-web/src/scroll-area.test.tsx +0 -15
- package/packages/ui-web/src/scroll-area.tsx +0 -42
- package/packages/ui-web/src/search.test.tsx +0 -81
- package/packages/ui-web/src/search.tsx +0 -87
- package/packages/ui-web/src/select.test.tsx +0 -42
- package/packages/ui-web/src/select.tsx +0 -169
- package/packages/ui-web/src/separator.test.tsx +0 -16
- package/packages/ui-web/src/separator.tsx +0 -24
- package/packages/ui-web/src/setupTests.ts +0 -114
- package/packages/ui-web/src/sheet.test.tsx +0 -48
- package/packages/ui-web/src/sheet.tsx +0 -136
- package/packages/ui-web/src/skeleton.test.tsx +0 -13
- package/packages/ui-web/src/skeleton.tsx +0 -10
- package/packages/ui-web/src/slider.test.tsx +0 -18
- package/packages/ui-web/src/slider.tsx +0 -27
- package/packages/ui-web/src/sonner.test.tsx +0 -13
- package/packages/ui-web/src/sonner.tsx +0 -32
- package/packages/ui-web/src/switch.test.tsx +0 -22
- package/packages/ui-web/src/switch.tsx +0 -31
- package/packages/ui-web/src/table.test.tsx +0 -29
- package/packages/ui-web/src/table.tsx +0 -104
- package/packages/ui-web/src/tabs.test.tsx +0 -43
- package/packages/ui-web/src/tabs.tsx +0 -62
- package/packages/ui-web/src/text.test.tsx +0 -34
- package/packages/ui-web/src/text.tsx +0 -55
- package/packages/ui-web/src/textarea.test.tsx +0 -21
- package/packages/ui-web/src/textarea.tsx +0 -25
- package/packages/ui-web/src/theme-provider.tsx +0 -15
- package/packages/ui-web/src/theme-toggle.test.tsx +0 -49
- package/packages/ui-web/src/theme-toggle.tsx +0 -92
- package/packages/ui-web/src/toast.test.tsx +0 -42
- package/packages/ui-web/src/toast.tsx +0 -111
- package/packages/ui-web/src/toaster.tsx +0 -27
- package/packages/ui-web/src/toggle-group.test.tsx +0 -40
- package/packages/ui-web/src/toggle-group.tsx +0 -55
- package/packages/ui-web/src/toggle.test.tsx +0 -21
- package/packages/ui-web/src/toggle.tsx +0 -24
- package/packages/ui-web/src/tooltip.tsx +0 -51
- package/packages/ui-web/tsconfig.json +0 -24
- package/packages/ui-web/vite.config.ts +0 -21
- package/postcss.config.mjs +0 -5
- package/release-please-config.json +0 -60
- package/scripts/build-registry.ts +0 -80
- package/scripts/sync-tokens.ts +0 -86
- package/scripts/validate.ts +0 -74
- package/src/globals.css +0 -146
- package/src/index.ts +0 -4
- package/src/setupTests.ts +0 -47
- package/src/types/nativewind.d.ts +0 -19
- package/tailwind.config.js +0 -48
- package/tsconfig.build.json +0 -22
- package/tsconfig.json +0 -30
- package/tsconfig.node.json +0 -11
- package/vite.config.ts +0 -106
- package/vitest.config.ts +0 -23
- 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)
|
package/docs/phase-1-tracker.md
DELETED
|
@@ -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)
|