@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,842 +0,0 @@
|
|
|
1
|
-
import '../global.css';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
Accordion,
|
|
5
|
-
AccordionContent,
|
|
6
|
-
AccordionItem,
|
|
7
|
-
AccordionTrigger,
|
|
8
|
-
Alert,
|
|
9
|
-
AlertDescription,
|
|
10
|
-
AlertDialog,
|
|
11
|
-
AlertDialogAction,
|
|
12
|
-
AlertDialogCancel,
|
|
13
|
-
AlertDialogContent,
|
|
14
|
-
AlertDialogDescription,
|
|
15
|
-
AlertDialogFooter,
|
|
16
|
-
AlertDialogHeader,
|
|
17
|
-
AlertDialogTitle,
|
|
18
|
-
AlertDialogTrigger,
|
|
19
|
-
AlertTitle,
|
|
20
|
-
Avatar,
|
|
21
|
-
AvatarFallback,
|
|
22
|
-
AvatarImage,
|
|
23
|
-
Badge,
|
|
24
|
-
Button,
|
|
25
|
-
Card,
|
|
26
|
-
CardContent,
|
|
27
|
-
CardDescription,
|
|
28
|
-
CardFooter,
|
|
29
|
-
CardHeader,
|
|
30
|
-
CardTitle,
|
|
31
|
-
Checkbox,
|
|
32
|
-
Collapsible,
|
|
33
|
-
CollapsibleContent,
|
|
34
|
-
CollapsibleTrigger,
|
|
35
|
-
Dialog,
|
|
36
|
-
DialogContent,
|
|
37
|
-
DialogDescription,
|
|
38
|
-
DialogFooter,
|
|
39
|
-
DialogHeader,
|
|
40
|
-
DialogTitle,
|
|
41
|
-
DialogTrigger,
|
|
42
|
-
Input,
|
|
43
|
-
Label,
|
|
44
|
-
RadioGroup,
|
|
45
|
-
RadioGroupItem,
|
|
46
|
-
Select,
|
|
47
|
-
SelectContent,
|
|
48
|
-
SelectItem,
|
|
49
|
-
SelectTrigger,
|
|
50
|
-
SelectValue,
|
|
51
|
-
Separator,
|
|
52
|
-
Sheet,
|
|
53
|
-
SheetContent,
|
|
54
|
-
SheetDescription,
|
|
55
|
-
SheetFooter,
|
|
56
|
-
SheetHeader,
|
|
57
|
-
SheetTitle,
|
|
58
|
-
SheetTrigger,
|
|
59
|
-
Skeleton,
|
|
60
|
-
Switch,
|
|
61
|
-
Table,
|
|
62
|
-
TableBody,
|
|
63
|
-
TableCaption,
|
|
64
|
-
TableCell,
|
|
65
|
-
TableHead,
|
|
66
|
-
TableHeader,
|
|
67
|
-
TableRow,
|
|
68
|
-
Tabs,
|
|
69
|
-
TabsContent,
|
|
70
|
-
TabsList,
|
|
71
|
-
TabsTrigger,
|
|
72
|
-
Text,
|
|
73
|
-
Textarea,
|
|
74
|
-
ThemeProvider,
|
|
75
|
-
ThemeToggle,
|
|
76
|
-
Toggle,
|
|
77
|
-
ToggleGroup,
|
|
78
|
-
ToggleGroupItem,
|
|
79
|
-
Tooltip,
|
|
80
|
-
TooltipContent,
|
|
81
|
-
TooltipProvider,
|
|
82
|
-
TooltipTrigger,
|
|
83
|
-
} from '@gv-tech/ui-native';
|
|
84
|
-
import { Bell, Bold, Italic, Underline } from 'lucide-react-native';
|
|
85
|
-
import * as React from 'react';
|
|
86
|
-
import { Alert as RNAlert, ScrollView, View } from 'react-native';
|
|
87
|
-
|
|
88
|
-
// ─── Section Header ──────────────────────────────────────────────────────────
|
|
89
|
-
function SectionHeader({ title, subtitle }: { title: string; subtitle?: string }) {
|
|
90
|
-
return (
|
|
91
|
-
<View className="mb-4">
|
|
92
|
-
<Text variant="h2" className="font-bold text-foreground">
|
|
93
|
-
{title}
|
|
94
|
-
</Text>
|
|
95
|
-
{subtitle && (
|
|
96
|
-
<Text variant="caption" className="text-muted-foreground mt-1">
|
|
97
|
-
{subtitle}
|
|
98
|
-
</Text>
|
|
99
|
-
)}
|
|
100
|
-
<Separator className="mt-3" />
|
|
101
|
-
</View>
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// ─── Forms Screen ─────────────────────────────────────────────────────────────
|
|
106
|
-
function FormsScreen() {
|
|
107
|
-
const [name, setName] = React.useState('');
|
|
108
|
-
const [bio, setBio] = React.useState('');
|
|
109
|
-
const [checked, setChecked] = React.useState(false);
|
|
110
|
-
const [switchOn, setSwitchOn] = React.useState(false);
|
|
111
|
-
const [radioValue, setRadioValue] = React.useState('option-one');
|
|
112
|
-
const [selectValue, setSelectValue] = React.useState('');
|
|
113
|
-
const [toggleActive, setToggleActive] = React.useState(false);
|
|
114
|
-
const [toggleGroup, setToggleGroup] = React.useState<string[]>([]);
|
|
115
|
-
|
|
116
|
-
return (
|
|
117
|
-
<ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
|
|
118
|
-
<SectionHeader title="Forms" subtitle="Input, Checkbox, Switch, RadioGroup, Select, Textarea, Toggle" />
|
|
119
|
-
|
|
120
|
-
{/* Input */}
|
|
121
|
-
<Card className="mb-4">
|
|
122
|
-
<CardHeader>
|
|
123
|
-
<CardTitle>Input</CardTitle>
|
|
124
|
-
<CardDescription>Text input with label</CardDescription>
|
|
125
|
-
</CardHeader>
|
|
126
|
-
<CardContent className="gap-3">
|
|
127
|
-
<View className="gap-2">
|
|
128
|
-
<Label nativeID="name-input">Full Name</Label>
|
|
129
|
-
<Input placeholder="Enter your name" value={name} onChangeText={setName} aria-labelledby="name-input" />
|
|
130
|
-
</View>
|
|
131
|
-
{name.length > 0 && (
|
|
132
|
-
<Text variant="caption" className="text-muted-foreground">
|
|
133
|
-
Hello, {name}!
|
|
134
|
-
</Text>
|
|
135
|
-
)}
|
|
136
|
-
</CardContent>
|
|
137
|
-
</Card>
|
|
138
|
-
|
|
139
|
-
{/* Textarea */}
|
|
140
|
-
<Card className="mb-4">
|
|
141
|
-
<CardHeader>
|
|
142
|
-
<CardTitle>Textarea</CardTitle>
|
|
143
|
-
<CardDescription>Multi-line text input</CardDescription>
|
|
144
|
-
</CardHeader>
|
|
145
|
-
<CardContent>
|
|
146
|
-
<Textarea
|
|
147
|
-
placeholder="Tell us about yourself..."
|
|
148
|
-
value={bio}
|
|
149
|
-
onChangeText={setBio}
|
|
150
|
-
numberOfLines={4}
|
|
151
|
-
className="min-h-[100px]"
|
|
152
|
-
/>
|
|
153
|
-
<Text variant="caption" className="text-muted-foreground mt-2">
|
|
154
|
-
{bio.length} characters
|
|
155
|
-
</Text>
|
|
156
|
-
</CardContent>
|
|
157
|
-
</Card>
|
|
158
|
-
|
|
159
|
-
{/* Checkbox & Switch */}
|
|
160
|
-
<Card className="mb-4">
|
|
161
|
-
<CardHeader>
|
|
162
|
-
<CardTitle>Checkbox & Switch</CardTitle>
|
|
163
|
-
</CardHeader>
|
|
164
|
-
<CardContent className="gap-4">
|
|
165
|
-
<View className="flex-row items-center gap-3">
|
|
166
|
-
<Checkbox checked={checked} onCheckedChange={setChecked} id="terms" />
|
|
167
|
-
<Label onPress={() => setChecked(!checked)}>Accept terms and conditions</Label>
|
|
168
|
-
</View>
|
|
169
|
-
<View className="flex-row items-center justify-between">
|
|
170
|
-
<Label>Email notifications</Label>
|
|
171
|
-
<Switch checked={switchOn} onCheckedChange={setSwitchOn} />
|
|
172
|
-
</View>
|
|
173
|
-
</CardContent>
|
|
174
|
-
</Card>
|
|
175
|
-
|
|
176
|
-
{/* RadioGroup */}
|
|
177
|
-
<Card className="mb-4">
|
|
178
|
-
<CardHeader>
|
|
179
|
-
<CardTitle>Radio Group</CardTitle>
|
|
180
|
-
</CardHeader>
|
|
181
|
-
<CardContent>
|
|
182
|
-
<RadioGroup value={radioValue} onValueChange={setRadioValue} className="gap-3">
|
|
183
|
-
{[
|
|
184
|
-
{ value: 'option-one', label: 'Option One' },
|
|
185
|
-
{ value: 'option-two', label: 'Option Two' },
|
|
186
|
-
{ value: 'option-three', label: 'Option Three' },
|
|
187
|
-
].map((opt) => (
|
|
188
|
-
<View key={opt.value} className="flex-row items-center gap-3">
|
|
189
|
-
<RadioGroupItem value={opt.value} id={opt.value} />
|
|
190
|
-
<Label onPress={() => setRadioValue(opt.value)}>{opt.label}</Label>
|
|
191
|
-
</View>
|
|
192
|
-
))}
|
|
193
|
-
</RadioGroup>
|
|
194
|
-
<Text variant="caption" className="text-muted-foreground mt-3">
|
|
195
|
-
Selected: {radioValue}
|
|
196
|
-
</Text>
|
|
197
|
-
</CardContent>
|
|
198
|
-
</Card>
|
|
199
|
-
|
|
200
|
-
{/* Select */}
|
|
201
|
-
<Card className="mb-4">
|
|
202
|
-
<CardHeader>
|
|
203
|
-
<CardTitle>Select</CardTitle>
|
|
204
|
-
</CardHeader>
|
|
205
|
-
<CardContent>
|
|
206
|
-
<Select
|
|
207
|
-
value={selectValue ? { value: selectValue, label: selectValue } : undefined}
|
|
208
|
-
onValueChange={(opt) => setSelectValue(opt?.value ?? '')}
|
|
209
|
-
>
|
|
210
|
-
<SelectTrigger>
|
|
211
|
-
<SelectValue placeholder="Choose a framework…" />
|
|
212
|
-
</SelectTrigger>
|
|
213
|
-
<SelectContent>
|
|
214
|
-
<SelectItem value="react-native" label="React Native" />
|
|
215
|
-
<SelectItem value="expo" label="Expo" />
|
|
216
|
-
<SelectItem value="flutter" label="Flutter" />
|
|
217
|
-
<SelectItem value="swiftui" label="SwiftUI" />
|
|
218
|
-
</SelectContent>
|
|
219
|
-
</Select>
|
|
220
|
-
</CardContent>
|
|
221
|
-
</Card>
|
|
222
|
-
|
|
223
|
-
{/* Toggle */}
|
|
224
|
-
<Card className="mb-4">
|
|
225
|
-
<CardHeader>
|
|
226
|
-
<CardTitle>Toggle & Toggle Group</CardTitle>
|
|
227
|
-
</CardHeader>
|
|
228
|
-
<CardContent className="gap-4">
|
|
229
|
-
<View className="flex-row items-center gap-3">
|
|
230
|
-
<Toggle pressed={toggleActive} onPressedChange={setToggleActive}>
|
|
231
|
-
<Bell size={16} className="text-foreground" />
|
|
232
|
-
</Toggle>
|
|
233
|
-
<Text variant="body" className="text-muted-foreground">
|
|
234
|
-
{toggleActive ? 'Notifications on' : 'Notifications off'}
|
|
235
|
-
</Text>
|
|
236
|
-
</View>
|
|
237
|
-
<View>
|
|
238
|
-
<Text variant="caption" className="text-muted-foreground mb-2">
|
|
239
|
-
Text formatting
|
|
240
|
-
</Text>
|
|
241
|
-
<ToggleGroup
|
|
242
|
-
type="multiple"
|
|
243
|
-
value={toggleGroup}
|
|
244
|
-
onValueChange={setToggleGroup}
|
|
245
|
-
className="justify-start gap-1"
|
|
246
|
-
>
|
|
247
|
-
<ToggleGroupItem value="bold">
|
|
248
|
-
<Bold size={16} className="text-foreground" />
|
|
249
|
-
</ToggleGroupItem>
|
|
250
|
-
<ToggleGroupItem value="italic">
|
|
251
|
-
<Italic size={16} className="text-foreground" />
|
|
252
|
-
</ToggleGroupItem>
|
|
253
|
-
<ToggleGroupItem value="underline">
|
|
254
|
-
<Underline size={16} className="text-foreground" />
|
|
255
|
-
</ToggleGroupItem>
|
|
256
|
-
</ToggleGroup>
|
|
257
|
-
</View>
|
|
258
|
-
</CardContent>
|
|
259
|
-
</Card>
|
|
260
|
-
|
|
261
|
-
{/* Button variants */}
|
|
262
|
-
<Card className="mb-4">
|
|
263
|
-
<CardHeader>
|
|
264
|
-
<CardTitle>Button</CardTitle>
|
|
265
|
-
<CardDescription>All variants and sizes</CardDescription>
|
|
266
|
-
</CardHeader>
|
|
267
|
-
<CardContent className="gap-3">
|
|
268
|
-
<View className="flex-row flex-wrap gap-2">
|
|
269
|
-
{(['default', 'secondary', 'destructive', 'outline', 'ghost'] as const).map((variant) => (
|
|
270
|
-
<Button key={variant} variant={variant} onPress={() => RNAlert.alert('Button', `Pressed: ${variant}`)}>
|
|
271
|
-
<Text>{variant.charAt(0).toUpperCase() + variant.slice(1)}</Text>
|
|
272
|
-
</Button>
|
|
273
|
-
))}
|
|
274
|
-
</View>
|
|
275
|
-
<View className="flex-row gap-2">
|
|
276
|
-
<Button size="sm" className="flex-1">
|
|
277
|
-
<Text>Small</Text>
|
|
278
|
-
</Button>
|
|
279
|
-
<Button size="default" className="flex-1">
|
|
280
|
-
<Text>Default</Text>
|
|
281
|
-
</Button>
|
|
282
|
-
<Button size="lg" className="flex-1">
|
|
283
|
-
<Text>Large</Text>
|
|
284
|
-
</Button>
|
|
285
|
-
</View>
|
|
286
|
-
</CardContent>
|
|
287
|
-
</Card>
|
|
288
|
-
</ScrollView>
|
|
289
|
-
);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
// ─── Display Screen ────────────────────────────────────────────────────────────
|
|
293
|
-
function DisplayScreen() {
|
|
294
|
-
return (
|
|
295
|
-
<ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
|
|
296
|
-
<SectionHeader title="Data Display" subtitle="Text, Badge, Avatar, Card, Accordion, Table, Skeleton" />
|
|
297
|
-
|
|
298
|
-
{/* Typography */}
|
|
299
|
-
<Card className="mb-4">
|
|
300
|
-
<CardHeader>
|
|
301
|
-
<CardTitle>Typography</CardTitle>
|
|
302
|
-
</CardHeader>
|
|
303
|
-
<CardContent className="gap-2">
|
|
304
|
-
{(['h1', 'h2', 'h3', 'h4', 'body', 'caption'] as const).map((variant) => (
|
|
305
|
-
<Text key={variant} variant={variant} className="text-foreground">
|
|
306
|
-
{variant.toUpperCase()} — The quick brown fox
|
|
307
|
-
</Text>
|
|
308
|
-
))}
|
|
309
|
-
</CardContent>
|
|
310
|
-
</Card>
|
|
311
|
-
|
|
312
|
-
{/* Badges */}
|
|
313
|
-
<Card className="mb-4">
|
|
314
|
-
<CardHeader>
|
|
315
|
-
<CardTitle>Badge</CardTitle>
|
|
316
|
-
</CardHeader>
|
|
317
|
-
<CardContent>
|
|
318
|
-
<View className="flex-row flex-wrap gap-2">
|
|
319
|
-
{(['default', 'secondary', 'destructive', 'outline'] as const).map((variant) => (
|
|
320
|
-
<Badge key={variant} variant={variant}>
|
|
321
|
-
<Text>{variant}</Text>
|
|
322
|
-
</Badge>
|
|
323
|
-
))}
|
|
324
|
-
</View>
|
|
325
|
-
</CardContent>
|
|
326
|
-
</Card>
|
|
327
|
-
|
|
328
|
-
{/* Avatar */}
|
|
329
|
-
<Card className="mb-4">
|
|
330
|
-
<CardHeader>
|
|
331
|
-
<CardTitle>Avatar</CardTitle>
|
|
332
|
-
</CardHeader>
|
|
333
|
-
<CardContent>
|
|
334
|
-
<View className="flex-row gap-3 items-center">
|
|
335
|
-
<Avatar alt="GV Tech">
|
|
336
|
-
<AvatarImage source={{ uri: 'https://github.com/eng618.png' }} />
|
|
337
|
-
<AvatarFallback>
|
|
338
|
-
<Text>GV</Text>
|
|
339
|
-
</AvatarFallback>
|
|
340
|
-
</Avatar>
|
|
341
|
-
<Avatar alt="Fallback">
|
|
342
|
-
<AvatarImage source={{ uri: 'https://invalid-url-to-show-fallback' }} />
|
|
343
|
-
<AvatarFallback>
|
|
344
|
-
<Text>FB</Text>
|
|
345
|
-
</AvatarFallback>
|
|
346
|
-
</Avatar>
|
|
347
|
-
<View className="gap-1">
|
|
348
|
-
<Text variant="body" className="font-semibold text-foreground">
|
|
349
|
-
Eric Garcia
|
|
350
|
-
</Text>
|
|
351
|
-
<Text variant="caption" className="text-muted-foreground">
|
|
352
|
-
@eng618
|
|
353
|
-
</Text>
|
|
354
|
-
</View>
|
|
355
|
-
</View>
|
|
356
|
-
</CardContent>
|
|
357
|
-
</Card>
|
|
358
|
-
|
|
359
|
-
{/* Accordion */}
|
|
360
|
-
<Card className="mb-4">
|
|
361
|
-
<CardHeader>
|
|
362
|
-
<CardTitle>Accordion</CardTitle>
|
|
363
|
-
</CardHeader>
|
|
364
|
-
<CardContent>
|
|
365
|
-
<Accordion type="single" collapsible defaultValue="item-1">
|
|
366
|
-
<AccordionItem value="item-1">
|
|
367
|
-
<AccordionTrigger>
|
|
368
|
-
<Text className="text-foreground font-medium">Is it accessible?</Text>
|
|
369
|
-
</AccordionTrigger>
|
|
370
|
-
<AccordionContent>
|
|
371
|
-
<Text className="text-muted-foreground">
|
|
372
|
-
Yes. It follows the WAI-ARIA design pattern and uses rn-primitives for native accessibility.
|
|
373
|
-
</Text>
|
|
374
|
-
</AccordionContent>
|
|
375
|
-
</AccordionItem>
|
|
376
|
-
<AccordionItem value="item-2">
|
|
377
|
-
<AccordionTrigger>
|
|
378
|
-
<Text className="text-foreground font-medium">Is it animated?</Text>
|
|
379
|
-
</AccordionTrigger>
|
|
380
|
-
<AccordionContent>
|
|
381
|
-
<Text className="text-muted-foreground">
|
|
382
|
-
Yes. Uses react-native-reanimated for smooth height and chevron animations.
|
|
383
|
-
</Text>
|
|
384
|
-
</AccordionContent>
|
|
385
|
-
</AccordionItem>
|
|
386
|
-
<AccordionItem value="item-3">
|
|
387
|
-
<AccordionTrigger>
|
|
388
|
-
<Text className="text-foreground font-medium">Can I customize it?</Text>
|
|
389
|
-
</AccordionTrigger>
|
|
390
|
-
<AccordionContent>
|
|
391
|
-
<Text className="text-muted-foreground">
|
|
392
|
-
Absolutely. Use className and NativeWind to apply any styles.
|
|
393
|
-
</Text>
|
|
394
|
-
</AccordionContent>
|
|
395
|
-
</AccordionItem>
|
|
396
|
-
</Accordion>
|
|
397
|
-
</CardContent>
|
|
398
|
-
</Card>
|
|
399
|
-
|
|
400
|
-
{/* Table */}
|
|
401
|
-
<Card className="mb-4">
|
|
402
|
-
<CardHeader>
|
|
403
|
-
<CardTitle>Table</CardTitle>
|
|
404
|
-
</CardHeader>
|
|
405
|
-
<CardContent className="p-0 overflow-hidden">
|
|
406
|
-
<Table>
|
|
407
|
-
<TableCaption>GV Tech Component Status</TableCaption>
|
|
408
|
-
<TableHeader>
|
|
409
|
-
<TableRow>
|
|
410
|
-
<TableHead>Component</TableHead>
|
|
411
|
-
<TableHead>Web</TableHead>
|
|
412
|
-
<TableHead>Native</TableHead>
|
|
413
|
-
</TableRow>
|
|
414
|
-
</TableHeader>
|
|
415
|
-
<TableBody>
|
|
416
|
-
{[
|
|
417
|
-
{ name: 'Button', web: '✅', native: '✅' },
|
|
418
|
-
{ name: 'Card', web: '✅', native: '✅' },
|
|
419
|
-
{ name: 'Input', web: '✅', native: '✅' },
|
|
420
|
-
{ name: 'Dialog', web: '✅', native: '✅' },
|
|
421
|
-
{ name: 'Carousel', web: '✅', native: '🚫' },
|
|
422
|
-
].map((row) => (
|
|
423
|
-
<TableRow key={row.name}>
|
|
424
|
-
<TableCell>
|
|
425
|
-
<Text className="text-foreground">{row.name}</Text>
|
|
426
|
-
</TableCell>
|
|
427
|
-
<TableCell>
|
|
428
|
-
<Text>{row.web}</Text>
|
|
429
|
-
</TableCell>
|
|
430
|
-
<TableCell>
|
|
431
|
-
<Text>{row.native}</Text>
|
|
432
|
-
</TableCell>
|
|
433
|
-
</TableRow>
|
|
434
|
-
))}
|
|
435
|
-
</TableBody>
|
|
436
|
-
</Table>
|
|
437
|
-
</CardContent>
|
|
438
|
-
</Card>
|
|
439
|
-
|
|
440
|
-
{/* Skeleton */}
|
|
441
|
-
<Card className="mb-4">
|
|
442
|
-
<CardHeader>
|
|
443
|
-
<CardTitle>Skeleton</CardTitle>
|
|
444
|
-
<CardDescription>Animated loading placeholders</CardDescription>
|
|
445
|
-
</CardHeader>
|
|
446
|
-
<CardContent className="gap-3">
|
|
447
|
-
<View className="flex-row items-center gap-4">
|
|
448
|
-
<Skeleton className="h-12 w-12 rounded-full" />
|
|
449
|
-
<View className="gap-2 flex-1">
|
|
450
|
-
<Skeleton className="h-4 w-[80%]" />
|
|
451
|
-
<Skeleton className="h-4 w-[60%]" />
|
|
452
|
-
</View>
|
|
453
|
-
</View>
|
|
454
|
-
<Skeleton className="h-24 w-full rounded-lg" />
|
|
455
|
-
</CardContent>
|
|
456
|
-
</Card>
|
|
457
|
-
|
|
458
|
-
{/* Tabs */}
|
|
459
|
-
<Card className="mb-4">
|
|
460
|
-
<CardHeader>
|
|
461
|
-
<CardTitle>Tabs</CardTitle>
|
|
462
|
-
</CardHeader>
|
|
463
|
-
<CardContent>
|
|
464
|
-
<Tabs defaultValue="account">
|
|
465
|
-
<TabsList className="flex-row w-full">
|
|
466
|
-
<TabsTrigger value="account" className="flex-1">
|
|
467
|
-
<Text>Account</Text>
|
|
468
|
-
</TabsTrigger>
|
|
469
|
-
<TabsTrigger value="password" className="flex-1">
|
|
470
|
-
<Text>Password</Text>
|
|
471
|
-
</TabsTrigger>
|
|
472
|
-
</TabsList>
|
|
473
|
-
<TabsContent value="account" className="mt-4">
|
|
474
|
-
<Text className="text-muted-foreground">
|
|
475
|
-
Update your account settings here. Changes take effect immediately.
|
|
476
|
-
</Text>
|
|
477
|
-
</TabsContent>
|
|
478
|
-
<TabsContent value="password" className="mt-4">
|
|
479
|
-
<Text className="text-muted-foreground">
|
|
480
|
-
Change your password here. You'll be logged out after saving.
|
|
481
|
-
</Text>
|
|
482
|
-
</TabsContent>
|
|
483
|
-
</Tabs>
|
|
484
|
-
</CardContent>
|
|
485
|
-
</Card>
|
|
486
|
-
</ScrollView>
|
|
487
|
-
);
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
// ─── Feedback Screen ───────────────────────────────────────────────────────────
|
|
491
|
-
function FeedbackScreen() {
|
|
492
|
-
return (
|
|
493
|
-
<ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
|
|
494
|
-
<SectionHeader title="Feedback" subtitle="Alert, AlertDialog, Dialog, Sheet, Tooltip, Toast, Collapsible" />
|
|
495
|
-
|
|
496
|
-
{/* Alert variants */}
|
|
497
|
-
<Card className="mb-4">
|
|
498
|
-
<CardHeader>
|
|
499
|
-
<CardTitle>Alert</CardTitle>
|
|
500
|
-
</CardHeader>
|
|
501
|
-
<CardContent className="gap-3">
|
|
502
|
-
<Alert>
|
|
503
|
-
<AlertTitle>Default Alert</AlertTitle>
|
|
504
|
-
<AlertDescription>This is a default informational alert message.</AlertDescription>
|
|
505
|
-
</Alert>
|
|
506
|
-
<Alert variant="destructive">
|
|
507
|
-
<AlertTitle>Destructive Alert</AlertTitle>
|
|
508
|
-
<AlertDescription>Something went wrong. Please try again.</AlertDescription>
|
|
509
|
-
</Alert>
|
|
510
|
-
<Alert variant="warning">
|
|
511
|
-
<AlertTitle>Warning</AlertTitle>
|
|
512
|
-
<AlertDescription>Your session expires in 5 minutes.</AlertDescription>
|
|
513
|
-
</Alert>
|
|
514
|
-
<Alert variant="info">
|
|
515
|
-
<AlertTitle>Info</AlertTitle>
|
|
516
|
-
<AlertDescription>A new version is available. Update now.</AlertDescription>
|
|
517
|
-
</Alert>
|
|
518
|
-
</CardContent>
|
|
519
|
-
</Card>
|
|
520
|
-
|
|
521
|
-
{/* AlertDialog */}
|
|
522
|
-
<Card className="mb-4">
|
|
523
|
-
<CardHeader>
|
|
524
|
-
<CardTitle>Alert Dialog</CardTitle>
|
|
525
|
-
<CardDescription>A modal that requires a response</CardDescription>
|
|
526
|
-
</CardHeader>
|
|
527
|
-
<CardContent>
|
|
528
|
-
<AlertDialog>
|
|
529
|
-
<AlertDialogTrigger asChild>
|
|
530
|
-
<Button variant="destructive">
|
|
531
|
-
<Text>Delete Account</Text>
|
|
532
|
-
</Button>
|
|
533
|
-
</AlertDialogTrigger>
|
|
534
|
-
<AlertDialogContent>
|
|
535
|
-
<AlertDialogHeader>
|
|
536
|
-
<AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
|
|
537
|
-
<AlertDialogDescription>
|
|
538
|
-
This action cannot be undone. This will permanently delete your account and remove all your data.
|
|
539
|
-
</AlertDialogDescription>
|
|
540
|
-
</AlertDialogHeader>
|
|
541
|
-
<AlertDialogFooter>
|
|
542
|
-
<AlertDialogCancel>
|
|
543
|
-
<Text>Cancel</Text>
|
|
544
|
-
</AlertDialogCancel>
|
|
545
|
-
<AlertDialogAction>
|
|
546
|
-
<Text>Continue</Text>
|
|
547
|
-
</AlertDialogAction>
|
|
548
|
-
</AlertDialogFooter>
|
|
549
|
-
</AlertDialogContent>
|
|
550
|
-
</AlertDialog>
|
|
551
|
-
</CardContent>
|
|
552
|
-
</Card>
|
|
553
|
-
|
|
554
|
-
{/* Dialog */}
|
|
555
|
-
<Card className="mb-4">
|
|
556
|
-
<CardHeader>
|
|
557
|
-
<CardTitle>Dialog</CardTitle>
|
|
558
|
-
<CardDescription>Standard modal dialog</CardDescription>
|
|
559
|
-
</CardHeader>
|
|
560
|
-
<CardContent>
|
|
561
|
-
<Dialog>
|
|
562
|
-
<DialogTrigger asChild>
|
|
563
|
-
<Button variant="outline">
|
|
564
|
-
<Text>Open Dialog</Text>
|
|
565
|
-
</Button>
|
|
566
|
-
</DialogTrigger>
|
|
567
|
-
<DialogContent>
|
|
568
|
-
<DialogHeader>
|
|
569
|
-
<DialogTitle>Edit Profile</DialogTitle>
|
|
570
|
-
<DialogDescription>Make changes to your profile here. Click save when done.</DialogDescription>
|
|
571
|
-
</DialogHeader>
|
|
572
|
-
<View className="gap-3 py-2">
|
|
573
|
-
<View className="gap-2">
|
|
574
|
-
<Label nativeID="dialog-name">Name</Label>
|
|
575
|
-
<Input placeholder="Your name" aria-labelledby="dialog-name" />
|
|
576
|
-
</View>
|
|
577
|
-
</View>
|
|
578
|
-
<DialogFooter>
|
|
579
|
-
<Button>
|
|
580
|
-
<Text>Save changes</Text>
|
|
581
|
-
</Button>
|
|
582
|
-
</DialogFooter>
|
|
583
|
-
</DialogContent>
|
|
584
|
-
</Dialog>
|
|
585
|
-
</CardContent>
|
|
586
|
-
</Card>
|
|
587
|
-
|
|
588
|
-
{/* Sheet */}
|
|
589
|
-
<Card className="mb-4">
|
|
590
|
-
<CardHeader>
|
|
591
|
-
<CardTitle>Sheet</CardTitle>
|
|
592
|
-
<CardDescription>Slides in from the side</CardDescription>
|
|
593
|
-
</CardHeader>
|
|
594
|
-
<CardContent className="flex-row gap-2 flex-wrap">
|
|
595
|
-
{(['bottom', 'right', 'left'] as const).map((side) => (
|
|
596
|
-
<Sheet key={side}>
|
|
597
|
-
<SheetTrigger asChild>
|
|
598
|
-
<Button variant="outline" size="sm">
|
|
599
|
-
<Text className="capitalize">{side}</Text>
|
|
600
|
-
</Button>
|
|
601
|
-
</SheetTrigger>
|
|
602
|
-
<SheetContent side={side}>
|
|
603
|
-
<SheetHeader>
|
|
604
|
-
<SheetTitle>Sheet ({side})</SheetTitle>
|
|
605
|
-
<SheetDescription>This sheet slides in from the {side}.</SheetDescription>
|
|
606
|
-
</SheetHeader>
|
|
607
|
-
<View className="flex-1 py-4">
|
|
608
|
-
<Text className="text-muted-foreground">Add your content here.</Text>
|
|
609
|
-
</View>
|
|
610
|
-
<SheetFooter>
|
|
611
|
-
<Button>
|
|
612
|
-
<Text>Save</Text>
|
|
613
|
-
</Button>
|
|
614
|
-
</SheetFooter>
|
|
615
|
-
</SheetContent>
|
|
616
|
-
</Sheet>
|
|
617
|
-
))}
|
|
618
|
-
</CardContent>
|
|
619
|
-
</Card>
|
|
620
|
-
|
|
621
|
-
{/* Tooltip */}
|
|
622
|
-
<Card className="mb-4">
|
|
623
|
-
<CardHeader>
|
|
624
|
-
<CardTitle>Tooltip</CardTitle>
|
|
625
|
-
<CardDescription>Long-press to reveal</CardDescription>
|
|
626
|
-
</CardHeader>
|
|
627
|
-
<CardContent className="flex-row gap-3 flex-wrap">
|
|
628
|
-
<TooltipProvider>
|
|
629
|
-
<Tooltip>
|
|
630
|
-
<TooltipTrigger asChild>
|
|
631
|
-
<Button variant="outline" size="sm">
|
|
632
|
-
<Text>Hover me</Text>
|
|
633
|
-
</Button>
|
|
634
|
-
</TooltipTrigger>
|
|
635
|
-
<TooltipContent>
|
|
636
|
-
<Text>Long-press on native to see this tooltip</Text>
|
|
637
|
-
</TooltipContent>
|
|
638
|
-
</Tooltip>
|
|
639
|
-
</TooltipProvider>
|
|
640
|
-
</CardContent>
|
|
641
|
-
</Card>
|
|
642
|
-
|
|
643
|
-
{/* Collapsible */}
|
|
644
|
-
<Card className="mb-4">
|
|
645
|
-
<CardHeader>
|
|
646
|
-
<CardTitle>Collapsible</CardTitle>
|
|
647
|
-
</CardHeader>
|
|
648
|
-
<CardContent>
|
|
649
|
-
<Collapsible>
|
|
650
|
-
<CollapsibleTrigger asChild>
|
|
651
|
-
<Button variant="outline" className="w-full">
|
|
652
|
-
<Text>Toggle content</Text>
|
|
653
|
-
</Button>
|
|
654
|
-
</CollapsibleTrigger>
|
|
655
|
-
<CollapsibleContent>
|
|
656
|
-
<View className="mt-3 gap-2">
|
|
657
|
-
<Text className="text-muted-foreground text-sm">
|
|
658
|
-
This content is revealed when the collapsible is open. It can contain any child components.
|
|
659
|
-
</Text>
|
|
660
|
-
</View>
|
|
661
|
-
</CollapsibleContent>
|
|
662
|
-
</Collapsible>
|
|
663
|
-
</CardContent>
|
|
664
|
-
</Card>
|
|
665
|
-
</ScrollView>
|
|
666
|
-
);
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
// ─── Layout Screen ─────────────────────────────────────────────────────────────
|
|
670
|
-
function LayoutScreen() {
|
|
671
|
-
return (
|
|
672
|
-
<ScrollView className="flex-1 bg-background" contentContainerStyle={{ padding: 16, paddingBottom: 40 }}>
|
|
673
|
-
<SectionHeader title="Layout & Theme" subtitle="Card, Separator, ThemeToggle" />
|
|
674
|
-
|
|
675
|
-
{/* Theme Toggle */}
|
|
676
|
-
<Card className="mb-4">
|
|
677
|
-
<CardHeader>
|
|
678
|
-
<CardTitle>Theme Toggle</CardTitle>
|
|
679
|
-
<CardDescription>Switch between light, dark, and system</CardDescription>
|
|
680
|
-
</CardHeader>
|
|
681
|
-
<CardContent className="flex-row items-center justify-between">
|
|
682
|
-
<Text className="text-foreground">Current theme</Text>
|
|
683
|
-
<ThemeToggle />
|
|
684
|
-
</CardContent>
|
|
685
|
-
</Card>
|
|
686
|
-
|
|
687
|
-
{/* Card Variants */}
|
|
688
|
-
<Card className="mb-4">
|
|
689
|
-
<CardHeader>
|
|
690
|
-
<CardTitle>Card</CardTitle>
|
|
691
|
-
<CardDescription>Full card with header, content, and footer</CardDescription>
|
|
692
|
-
</CardHeader>
|
|
693
|
-
<CardContent>
|
|
694
|
-
<Text className="text-muted-foreground text-sm">
|
|
695
|
-
Cards are the primary surface for grouping related content. They support header, content, description, and
|
|
696
|
-
footer sub-components.
|
|
697
|
-
</Text>
|
|
698
|
-
</CardContent>
|
|
699
|
-
<CardFooter className="flex-row gap-3">
|
|
700
|
-
<Button variant="outline" className="flex-1">
|
|
701
|
-
<Text>Cancel</Text>
|
|
702
|
-
</Button>
|
|
703
|
-
<Button className="flex-1">
|
|
704
|
-
<Text>Confirm</Text>
|
|
705
|
-
</Button>
|
|
706
|
-
</CardFooter>
|
|
707
|
-
</Card>
|
|
708
|
-
|
|
709
|
-
{/* Separator */}
|
|
710
|
-
<Card className="mb-4">
|
|
711
|
-
<CardHeader>
|
|
712
|
-
<CardTitle>Separator</CardTitle>
|
|
713
|
-
</CardHeader>
|
|
714
|
-
<CardContent className="gap-3">
|
|
715
|
-
<Text className="text-foreground">Above separator</Text>
|
|
716
|
-
<Separator />
|
|
717
|
-
<Text className="text-foreground">Below separator</Text>
|
|
718
|
-
<View className="flex-row items-center gap-3">
|
|
719
|
-
<Text className="text-muted-foreground">Left</Text>
|
|
720
|
-
<Separator orientation="vertical" className="h-4" />
|
|
721
|
-
<Text className="text-muted-foreground">Center</Text>
|
|
722
|
-
<Separator orientation="vertical" className="h-4" />
|
|
723
|
-
<Text className="text-muted-foreground">Right</Text>
|
|
724
|
-
</View>
|
|
725
|
-
</CardContent>
|
|
726
|
-
</Card>
|
|
727
|
-
|
|
728
|
-
{/* Component Count */}
|
|
729
|
-
<Card className="mb-4 bg-primary/5">
|
|
730
|
-
<CardContent className="pt-6">
|
|
731
|
-
<View className="items-center gap-3">
|
|
732
|
-
<Text variant="h1" className="text-primary font-bold text-center">
|
|
733
|
-
27+
|
|
734
|
-
</Text>
|
|
735
|
-
<Text variant="body" className="text-center text-foreground font-medium">
|
|
736
|
-
Real Native Components
|
|
737
|
-
</Text>
|
|
738
|
-
<Text variant="caption" className="text-center text-muted-foreground">
|
|
739
|
-
All built with NativeWind + RN Primitives + Reanimated, sharing contracts with the web library.
|
|
740
|
-
</Text>
|
|
741
|
-
<View className="flex-row gap-2 flex-wrap justify-center mt-2">
|
|
742
|
-
{[
|
|
743
|
-
'Button',
|
|
744
|
-
'Card',
|
|
745
|
-
'Input',
|
|
746
|
-
'Checkbox',
|
|
747
|
-
'Switch',
|
|
748
|
-
'RadioGroup',
|
|
749
|
-
'Select',
|
|
750
|
-
'Tabs',
|
|
751
|
-
'Accordion',
|
|
752
|
-
'Alert',
|
|
753
|
-
'Dialog',
|
|
754
|
-
'Sheet',
|
|
755
|
-
'Toast',
|
|
756
|
-
'Tooltip',
|
|
757
|
-
'Badge',
|
|
758
|
-
'Avatar',
|
|
759
|
-
'Skeleton',
|
|
760
|
-
'Table',
|
|
761
|
-
'Text',
|
|
762
|
-
'Textarea',
|
|
763
|
-
'Toggle',
|
|
764
|
-
'ToggleGroup',
|
|
765
|
-
'Separator',
|
|
766
|
-
'Collapsible',
|
|
767
|
-
'Label',
|
|
768
|
-
'AlertDialog',
|
|
769
|
-
'ThemeToggle',
|
|
770
|
-
].map((name) => (
|
|
771
|
-
<Badge key={name} variant="secondary">
|
|
772
|
-
<Text className="text-xs">{name}</Text>
|
|
773
|
-
</Badge>
|
|
774
|
-
))}
|
|
775
|
-
</View>
|
|
776
|
-
</View>
|
|
777
|
-
</CardContent>
|
|
778
|
-
</Card>
|
|
779
|
-
</ScrollView>
|
|
780
|
-
);
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
// ─── Root App ─────────────────────────────────────────────────────────────────
|
|
784
|
-
export const App = () => {
|
|
785
|
-
return (
|
|
786
|
-
<ThemeProvider>
|
|
787
|
-
<TooltipProvider>
|
|
788
|
-
<View className="flex-1 bg-background">
|
|
789
|
-
{/* Header */}
|
|
790
|
-
<View className="pt-12 pb-3 px-4 border-b border-border bg-background">
|
|
791
|
-
<View className="flex-row items-center justify-between">
|
|
792
|
-
<View className="flex-row items-center gap-2">
|
|
793
|
-
<Text variant="h3" className="font-bold text-foreground">
|
|
794
|
-
GV Native
|
|
795
|
-
</Text>
|
|
796
|
-
<Badge variant="outline">
|
|
797
|
-
<Text className="text-xs">Alpha</Text>
|
|
798
|
-
</Badge>
|
|
799
|
-
</View>
|
|
800
|
-
<ThemeToggle />
|
|
801
|
-
</View>
|
|
802
|
-
<Text variant="caption" className="text-muted-foreground mt-1">
|
|
803
|
-
Component showcase for @gv-tech/ui-native
|
|
804
|
-
</Text>
|
|
805
|
-
</View>
|
|
806
|
-
|
|
807
|
-
{/* Main Tabs */}
|
|
808
|
-
<Tabs defaultValue="forms" className="flex-1">
|
|
809
|
-
<View className="border-b border-border bg-background px-4">
|
|
810
|
-
<TabsList className="flex-row bg-transparent p-0 h-12">
|
|
811
|
-
{(['forms', 'display', 'feedback', 'layout'] as const).map((tab) => (
|
|
812
|
-
<TabsTrigger
|
|
813
|
-
key={tab}
|
|
814
|
-
value={tab}
|
|
815
|
-
className="flex-1 capitalize rounded-none border-b-2 border-transparent data-[state=active]:border-primary bg-transparent"
|
|
816
|
-
>
|
|
817
|
-
<Text className="capitalize text-sm">{tab}</Text>
|
|
818
|
-
</TabsTrigger>
|
|
819
|
-
))}
|
|
820
|
-
</TabsList>
|
|
821
|
-
</View>
|
|
822
|
-
|
|
823
|
-
<TabsContent value="forms" className="flex-1 mt-0">
|
|
824
|
-
<FormsScreen />
|
|
825
|
-
</TabsContent>
|
|
826
|
-
<TabsContent value="display" className="flex-1 mt-0">
|
|
827
|
-
<DisplayScreen />
|
|
828
|
-
</TabsContent>
|
|
829
|
-
<TabsContent value="feedback" className="flex-1 mt-0">
|
|
830
|
-
<FeedbackScreen />
|
|
831
|
-
</TabsContent>
|
|
832
|
-
<TabsContent value="layout" className="flex-1 mt-0">
|
|
833
|
-
<LayoutScreen />
|
|
834
|
-
</TabsContent>
|
|
835
|
-
</Tabs>
|
|
836
|
-
</View>
|
|
837
|
-
</TooltipProvider>
|
|
838
|
-
</ThemeProvider>
|
|
839
|
-
);
|
|
840
|
-
};
|
|
841
|
-
|
|
842
|
-
export default App;
|