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