@godxjp/ui 31.31.8 → 32.0.0
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/README.md +102 -121
- package/agent/START-HERE.md +10 -10
- package/agent/components/Accordion.json +2 -2
- package/agent/components/AccountChip.json +1 -1
- package/agent/components/Actions.json +1 -1
- package/agent/components/Activity.json +2 -2
- package/agent/components/Affix.json +1 -1
- package/agent/components/Alert.json +22 -6
- package/agent/components/AlertDialog.json +8 -1
- package/agent/components/Anchor.json +4 -3
- package/agent/components/AppLauncher.json +2 -2
- package/agent/components/AppProvider.json +19 -11
- package/agent/components/AppSettingPicker.json +18 -2
- package/agent/components/AppShell.json +4 -5
- package/agent/components/AreaChart.json +0 -1
- package/agent/components/AspectRatio.json +2 -2
- package/agent/components/Attachments.json +3 -3
- package/agent/components/AuthAccountSummary.json +1 -1
- package/agent/components/AuthDivider.json +1 -1
- package/agent/components/AuthExpiryProvider.json +0 -1
- package/agent/components/AuthFooter.json +2 -2
- package/agent/components/AuthIdentity.json +3 -3
- package/agent/components/AuthStack.json +1 -1
- package/agent/components/Avatar.json +2 -12
- package/agent/components/Badge.json +1 -1
- package/agent/components/BarChart.json +0 -1
- package/agent/components/BranchScopePicker.json +1 -1
- package/agent/components/Breadcrumb.json +1 -1
- package/agent/components/Button.json +3 -3
- package/agent/components/Calendar.json +1 -1
- package/agent/components/Card.json +2 -2
- package/agent/components/CardBar.json +0 -1
- package/agent/components/CardContent.json +0 -1
- package/agent/components/Carousel.json +4 -3
- package/agent/components/Cascader.json +1 -1
- package/agent/components/CenteredShell.json +78 -17
- package/agent/components/ChatBubble.json +3 -3
- package/agent/components/ChatBubbleList.json +3 -3
- package/agent/components/ChatComposer.json +3 -3
- package/agent/components/ChatSuggestion.json +3 -3
- package/agent/components/Checkbox.json +1 -1
- package/agent/components/CheckboxGroup.json +0 -1
- package/agent/components/CodeBlock.json +1 -1
- package/agent/components/Collapsible.json +4 -4
- package/agent/components/ColorPicker.json +1 -1
- package/agent/components/Command.json +5 -5
- package/agent/components/CommandPalette.json +1 -1
- package/agent/components/CompactBarTrend.json +1 -1
- package/agent/components/Conversations.json +3 -3
- package/agent/components/CredentialReveal.json +1 -1
- package/agent/components/DataState.json +2 -2
- package/agent/components/DataTable.json +1 -1
- package/agent/components/DatePicker.json +1 -1
- package/agent/components/Descriptions.json +1 -1
- package/agent/components/Dialog.json +2 -2
- package/agent/components/DraggablePanel.json +5 -4
- package/agent/components/DropdownMenu.json +1 -1
- package/agent/components/EmojiPicker.json +3 -2
- package/agent/components/EmptyState.json +1 -1
- package/agent/components/ErrorSurface.json +3 -3
- package/agent/components/FeatureList.json +1 -1
- package/agent/components/Field.json +0 -1
- package/agent/components/Flex.json +34 -4
- package/agent/components/FloatButton.json +6 -5
- package/agent/components/Form.json +1 -1
- package/agent/components/FormErrors.json +0 -1
- package/agent/components/FormField.json +6 -6
- package/agent/components/FormFieldArray.json +0 -1
- package/agent/components/FormFieldControl.json +0 -1
- package/agent/components/FormRoot.json +1 -1
- package/agent/components/Heading.json +3 -0
- package/agent/components/Icon.json +1 -1
- package/agent/components/Image.json +7 -4
- package/agent/components/InfiniteQueryState.json +1 -1
- package/agent/components/Input.json +1 -1
- package/agent/components/InputOTP.json +2 -2
- package/agent/components/Label.json +3 -3
- package/agent/components/LegalDocumentShell.json +5 -4
- package/agent/components/Legend.json +1 -1
- package/agent/components/LineChart.json +0 -1
- package/agent/components/Link.json +0 -1
- package/agent/components/ListRow.json +1 -1
- package/agent/components/Logo.json +5 -4
- package/agent/components/Marquee.json +4 -3
- package/agent/components/Masonry.json +4 -3
- package/agent/components/MasterDetail.json +1 -1
- package/agent/components/MegaMenu.json +4 -3
- package/agent/components/MobileShell.json +4 -4
- package/agent/components/NavList.json +1 -1
- package/agent/components/NumberInput.json +1 -1
- package/agent/components/OrgChart.json +4 -3
- package/agent/components/OrgSwitcher.json +1 -1
- package/agent/components/OverlayPortalProvider.json +0 -1
- package/agent/components/PageContainer.json +3 -3
- package/agent/components/PageCover.json +3 -2
- package/agent/components/Pagination.json +1 -1
- package/agent/components/PasswordInput.json +1 -1
- package/agent/components/PasswordStrength.json +1 -1
- package/agent/components/PermissionMatrix.json +1 -1
- package/agent/components/PieChart.json +0 -1
- package/agent/components/Popover.json +31 -6
- package/agent/components/PrefetchLink.json +1 -1
- package/agent/components/Progress.json +1 -1
- package/agent/components/Prose.json +1 -1
- package/agent/components/QrCode.json +1 -1
- package/agent/components/Radio.json +0 -1
- package/agent/components/RadioGroup.json +2 -2
- package/agent/components/RangeTimeline.json +2 -1
- package/agent/components/Rating.json +1 -1
- package/agent/components/RecordPicker.json +1 -1
- package/agent/components/ResizablePanel.json +1 -1
- package/agent/components/ResponsiveGrid.json +2 -2
- package/agent/components/Reveal.json +3 -3
- package/agent/components/ScrollArea.json +2 -2
- package/agent/components/SearchInput.json +1 -1
- package/agent/components/Segmented.json +1 -1
- package/agent/components/Select.json +7 -5
- package/agent/components/Separator.json +1 -1
- package/agent/components/ServiceCatalogCta.json +0 -1
- package/agent/components/ServiceLauncherCard.json +1 -1
- package/agent/components/ServiceRolePanel.json +1 -1
- package/agent/components/Sheet.json +5 -5
- package/agent/components/Sidebar.json +1 -1
- package/agent/components/Skeleton.json +26 -12
- package/agent/components/Slider.json +2 -2
- package/agent/components/SortableList.json +3 -2
- package/agent/components/SplitPane.json +1 -1
- package/agent/components/StatCard.json +1 -1
- package/agent/components/Steps.json +1 -1
- package/agent/components/Swatch.json +1 -1
- package/agent/components/Switch.json +1 -1
- package/agent/components/Table.json +1 -1
- package/agent/components/Tabs.json +3 -3
- package/agent/components/Text.json +5 -1
- package/agent/components/TextDiff.json +5 -4
- package/agent/components/Textarea.json +1 -1
- package/agent/components/ThemeScope.json +1 -1
- package/agent/components/ThoughtChain.json +3 -3
- package/agent/components/TimePicker.json +1 -1
- package/agent/components/Timeline.json +1 -1
- package/agent/components/TimelineGrid.json +5 -4
- package/agent/components/Toaster.json +0 -1
- package/agent/components/Toggle.json +3 -3
- package/agent/components/ToggleGroup.json +1 -1
- package/agent/components/Toolbar.json +10 -3
- package/agent/components/Tooltip.json +9 -9
- package/agent/components/Topbar.json +1 -1
- package/agent/components/TopbarItem.json +1 -1
- package/agent/components/Transfer.json +2 -2
- package/agent/components/Tree.json +1 -1
- package/agent/components/TreeSelect.json +1 -1
- package/agent/components/TwoFactorSetup.json +1 -1
- package/agent/components/Upload.json +1 -1
- package/agent/components/UploadCropDialog.json +1 -1
- package/agent/components/Welcome.json +3 -3
- package/agent/components/formatDate.json +2 -2
- package/agent/components/inertiaUpload.json +0 -1
- package/agent/components/useZodForm.json +0 -1
- package/agent/components-index.json +80 -154
- package/agent/components.json +541 -1737
- package/agent/index.json +10 -10
- package/agent/llms.txt +9 -9
- package/agent/patterns/account-recovery-settings.json +1 -1
- package/agent/patterns/auth-recovery-panels.json +2 -2
- package/agent/patterns/error-pages.json +1 -1
- package/agent/patterns/pricing-plans.json +17 -0
- package/agent/patterns-index.json +17 -1
- package/agent/patterns.json +21 -4
- package/agent/rules.json +30 -65
- package/agent/tokens.json +27 -57
- package/agent/vocabulary.json +3 -3
- package/dist/app/app-provider.d.ts +5 -3
- package/dist/app/app-provider.js +47 -12
- package/dist/app/date-format-labels.d.ts +3 -1
- package/dist/app/date-format-labels.js +2 -4
- package/dist/app/date-formats.d.ts +21 -2
- package/dist/app/date-formats.js +51 -2
- package/dist/app/index.d.ts +3 -1
- package/dist/app/index.js +5 -0
- package/dist/app/locales.d.ts +58 -3
- package/dist/app/locales.js +134 -8
- package/dist/app/preset.d.ts +25 -0
- package/dist/app/preset.js +10 -0
- package/dist/app/request-headers.d.ts +3 -3
- package/dist/app/request-headers.js +19 -10
- package/dist/app/settings-scope.d.ts +54 -0
- package/dist/app/settings-scope.js +46 -0
- package/dist/app/tenant-theme.js +8 -3
- package/dist/app/time-format-labels.d.ts +4 -1
- package/dist/app/time-format-labels.js +7 -1
- package/dist/app/types.d.ts +10 -2
- package/dist/app/use-formatting.d.ts +1 -1
- package/dist/components/admin/index.d.ts +1 -1
- package/dist/components/admin/index.js +1 -1
- package/dist/components/data-display/accordion.d.ts +51 -1
- package/dist/components/data-display/accordion.js +247 -1
- package/dist/components/data-display/avatar.d.ts +16 -1
- package/dist/components/data-display/avatar.js +109 -1
- package/dist/components/data-display/credential-reveal.d.ts +9 -2
- package/dist/components/data-display/credential-reveal.js +156 -1
- package/dist/components/data-display/image.js +5 -3
- package/dist/components/data-display/index.d.ts +0 -21
- package/dist/components/data-display/index.js +1 -43
- package/dist/components/data-display/popover.d.ts +15 -3
- package/dist/components/data-display/popover.js +168 -2
- package/dist/components/data-entry/branch-scope-picker.d.ts +1 -1
- package/dist/components/data-entry/index.d.ts +5 -12
- package/dist/components/data-entry/index.js +11 -12
- package/dist/components/data-entry/input-otp.d.ts +48 -2
- package/dist/components/data-entry/input-otp.js +94 -1
- package/dist/components/data-entry/number-input.d.ts +1 -1
- package/dist/components/data-entry/password-input.d.ts +38 -2
- package/dist/components/data-entry/password-input.js +56 -1
- package/dist/components/data-entry/rating.d.ts +38 -2
- package/dist/components/data-entry/rating.js +127 -1
- package/dist/components/data-entry/segmented.d.ts +94 -2
- package/dist/components/data-entry/segmented.js +104 -1
- package/dist/components/{ui/tag-input.d.ts → data-entry/select-tags-inline.d.ts} +7 -4
- package/dist/components/{ui/tag-input.js → data-entry/select-tags-inline.js} +4 -4
- package/dist/components/data-entry/select.js +4 -0
- package/dist/components/data-entry/toggle-group.d.ts +108 -2
- package/dist/components/data-entry/toggle-group.js +189 -1
- package/dist/components/data-entry/toggle.d.ts +86 -2
- package/dist/components/data-entry/toggle.js +153 -2
- package/dist/components/feedback/alert.d.ts +5 -3
- package/dist/components/feedback/alert.js +14 -2
- package/dist/components/feedback/index.d.ts +2 -6
- package/dist/components/feedback/index.js +1 -13
- package/dist/components/feedback/skeleton.d.ts +4 -17
- package/dist/components/feedback/skeleton.js +3 -40
- package/dist/components/general/index.d.ts +2 -4
- package/dist/components/general/index.js +1 -6
- package/dist/components/general/typography.d.ts +4 -58
- package/dist/components/general/typography.js +7 -141
- package/dist/components/layout/aspect-ratio.d.ts +24 -1
- package/dist/components/layout/aspect-ratio.js +18 -1
- package/dist/components/layout/auth-divider.js +1 -1
- package/dist/components/layout/auth-identity.js +6 -2
- package/dist/components/layout/centered-shell.d.ts +13 -8
- package/dist/components/layout/centered-shell.js +43 -1
- package/dist/components/layout/flex.d.ts +1 -1
- package/dist/components/layout/flex.js +73 -1
- package/dist/components/layout/index.d.ts +1 -13
- package/dist/components/layout/index.js +0 -12
- package/dist/components/layout/separator.d.ts +25 -2
- package/dist/components/layout/separator.js +71 -1
- package/dist/components/navigation/{app-setting-toggle.d.ts → app-setting-cycle.d.ts} +3 -4
- package/dist/components/navigation/{app-setting-toggle.js → app-setting-cycle.js} +3 -3
- package/dist/components/navigation/app-setting-picker.d.ts +6 -2
- package/dist/components/navigation/app-setting-picker.js +20 -2
- package/dist/components/navigation/index.d.ts +3 -11
- package/dist/components/navigation/index.js +1 -9
- package/dist/components/navigation/tabs.js +1 -1
- package/dist/components/ui/carousel.d.ts +1 -1
- package/dist/components/ui/carousel.js +1 -1
- package/dist/components/ui/index.d.ts +11 -5
- package/dist/components/ui/index.js +5 -5
- package/dist/contracts/measurement.json +2 -2
- package/dist/email/brand-mark.d.ts +3 -2
- package/dist/email/brand-mark.js +1 -1
- package/dist/email/tokens.generated.d.ts +6 -6
- package/dist/email/tokens.generated.js +6 -6
- package/dist/i18n/locale-tags.d.ts +25 -0
- package/dist/i18n/locale-tags.js +59 -0
- package/dist/i18n/translate.d.ts +20 -3
- package/dist/i18n/translate.js +25 -14
- package/dist/i18n/use-translation.d.ts +3 -3
- package/dist/i18n/use-translation.js +4 -2
- package/dist/{components/navigation → lab}/anchor.d.ts +2 -2
- package/dist/{components/navigation → lab}/anchor.js +5 -5
- package/dist/{components/data-display → lab}/carousel.js +2 -2
- package/dist/{components/layout → lab}/draggable-panel.d.ts +8 -8
- package/dist/{components/layout → lab}/draggable-panel.js +2 -2
- package/dist/{components/data-entry → lab}/emoji-picker.d.ts +2 -2
- package/dist/{components/data-entry → lab}/emoji-picker.js +6 -6
- package/dist/{components/general → lab}/float-button.d.ts +8 -8
- package/dist/{components/general → lab}/float-button.js +7 -7
- package/dist/lab/index.d.ts +39 -0
- package/dist/lab/index.js +48 -0
- package/dist/{components/layout → lab}/legal-document-shell.d.ts +2 -2
- package/dist/{components/layout → lab}/legal-document-shell.js +4 -4
- package/dist/{components/data-display → lab}/marquee.d.ts +5 -5
- package/dist/{components/data-display → lab}/marquee.js +5 -5
- package/dist/{components/layout → lab}/masonry.d.ts +2 -2
- package/dist/{components/layout → lab}/masonry.js +3 -3
- package/dist/{components/navigation → lab}/mega-menu.d.ts +4 -4
- package/dist/{components/navigation → lab}/mega-menu.js +2 -2
- package/dist/{components/data-display → lab}/org-chart.d.ts +2 -2
- package/dist/{components/data-display → lab}/org-chart.js +4 -4
- package/dist/{components/layout → lab}/page-cover.d.ts +2 -2
- package/dist/{components/layout → lab}/page-cover.js +2 -2
- package/dist/{components/data-display → lab}/range-timeline.d.ts +1 -1
- package/dist/{components/data-display → lab}/range-timeline.js +6 -6
- package/dist/{components/data-entry → lab}/sortable-list.d.ts +2 -2
- package/dist/{components/data-entry → lab}/sortable-list.js +3 -3
- package/dist/{components/data-display → lab}/text-diff.d.ts +3 -3
- package/dist/{components/data-display → lab}/text-diff.js +4 -4
- package/dist/{components/data-display → lab}/timeline-grid.d.ts +2 -2
- package/dist/{components/data-display → lab}/timeline-grid.js +1 -1
- package/dist/lib/control-styles.js +1 -1
- package/dist/lib/datetime/format.js +20 -6
- package/dist/lib/datetime/sync.d.ts +6 -2
- package/dist/lib/datetime/sync.js +14 -18
- package/dist/lib/platform.d.ts +1 -1
- package/dist/props/components/app.prop.d.ts +28 -13
- package/dist/props/components/data-display.prop.d.ts +19 -29
- package/dist/props/components/feedback.prop.d.ts +15 -44
- package/dist/props/components/general.prop.d.ts +2 -64
- package/dist/props/components/index.d.ts +9 -1
- package/dist/props/components/layout.prop.d.ts +41 -57
- package/dist/props/registry.d.ts +48 -101
- package/dist/props/registry.js +45 -129
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +3 -12
- package/dist/styles/alert-layout.css +0 -29
- package/dist/styles/data-display-layout.css +14 -22
- package/dist/styles/fonts/OFL.txt +93 -0
- package/dist/styles/form-layout.css +4 -0
- package/dist/styles/index.css +0 -2
- package/dist/styles/layers.json +44 -179
- package/dist/styles/text-layout.css +0 -15
- package/dist/styles.css +2 -0
- package/dist/themes/godx.css +43 -0
- package/dist/themes/godx.d.ts +13 -0
- package/dist/themes/godx.js +12 -0
- package/dist/tokens/components/feedback.css +0 -6
- package/dist/tokens/derived.css +23 -22
- package/dist/tokens/foundation.css +4 -6
- package/docs/COMPOSITION-VS-COMPONENT.md +58 -33
- package/docs/CONSUMER-RULES.md +1 -1
- package/docs/CUSTOMER-THEMING.md +17 -53
- package/docs/migrations/v32.md +98 -0
- package/package.json +58 -19
- package/scripts/_agent-setup.mjs +54 -3
- package/scripts/brand-accent.generated.mjs +15 -2
- package/scripts/cli.mjs +36 -11
- package/scripts/codemod.mjs +522 -0
- package/scripts/consumer-rule.md +21 -43
- package/scripts/postinstall.mjs +10 -47
- package/scripts/prune-css.mjs +1 -1
- package/scripts/ui-audit.mjs +5 -2
- package/dist/components/data-display/chat-bubble.d.ts +0 -30
- package/dist/components/data-display/chat-bubble.js +0 -229
- package/dist/components/data-display/hover-card.d.ts +0 -1
- package/dist/components/data-display/hover-card.js +0 -7
- package/dist/components/data-display/thought-chain.d.ts +0 -42
- package/dist/components/data-display/thought-chain.js +0 -177
- package/dist/components/data-display/thumbnail.d.ts +0 -37
- package/dist/components/data-display/thumbnail.js +0 -20
- package/dist/components/data-display/welcome.d.ts +0 -26
- package/dist/components/data-display/welcome.js +0 -37
- package/dist/components/data-entry/attachments.d.ts +0 -19
- package/dist/components/data-entry/attachments.js +0 -366
- package/dist/components/data-entry/chat-composer.d.ts +0 -51
- package/dist/components/data-entry/chat-composer.js +0 -200
- package/dist/components/data-entry/chat-suggestion.d.ts +0 -28
- package/dist/components/data-entry/chat-suggestion.js +0 -309
- package/dist/components/data-entry/tag-input.d.ts +0 -2
- package/dist/components/data-entry/tag-input.js +0 -5
- package/dist/components/feedback/banner.d.ts +0 -21
- package/dist/components/feedback/banner.js +0 -19
- package/dist/components/feedback/callout.d.ts +0 -23
- package/dist/components/feedback/callout.js +0 -42
- package/dist/components/layout/auth-shell.d.ts +0 -10
- package/dist/components/layout/auth-shell.js +0 -42
- package/dist/components/layout/space-compact.d.ts +0 -65
- package/dist/components/layout/space-compact.js +0 -52
- package/dist/components/navigation/conversations.d.ts +0 -39
- package/dist/components/navigation/conversations.js +0 -371
- package/dist/components/ui/accordion.d.ts +0 -51
- package/dist/components/ui/accordion.js +0 -254
- package/dist/components/ui/aspect-ratio.d.ts +0 -24
- package/dist/components/ui/aspect-ratio.js +0 -21
- package/dist/components/ui/avatar.d.ts +0 -16
- package/dist/components/ui/avatar.js +0 -115
- package/dist/components/ui/credential-reveal.d.ts +0 -9
- package/dist/components/ui/credential-reveal.js +0 -160
- package/dist/components/ui/hover-card.d.ts +0 -47
- package/dist/components/ui/hover-card.js +0 -205
- package/dist/components/ui/input-otp.d.ts +0 -48
- package/dist/components/ui/input-otp.js +0 -101
- package/dist/components/ui/password-input.d.ts +0 -38
- package/dist/components/ui/password-input.js +0 -60
- package/dist/components/ui/rating.d.ts +0 -38
- package/dist/components/ui/rating.js +0 -131
- package/dist/components/ui/segmented.d.ts +0 -94
- package/dist/components/ui/segmented.js +0 -108
- package/dist/components/ui/separator.d.ts +0 -25
- package/dist/components/ui/separator.js +0 -74
- package/dist/components/ui/toggle-group.d.ts +0 -108
- package/dist/components/ui/toggle-group.js +0 -194
- package/dist/components/ui/toggle.d.ts +0 -86
- package/dist/components/ui/toggle.js +0 -156
- package/docs/CANONICAL-CONTRACTS.md +0 -206
- package/docs/COMPONENTS.md +0 -163
- package/docs/DATETIME.md +0 -78
- package/docs/DEVELOPMENT.md +0 -269
- package/docs/FRAME-A11Y-CI.md +0 -287
- package/docs/FRAME-COVERAGE-LEDGER.md +0 -123
- package/docs/FRAME-COVERAGE-REPORT.md +0 -228
- package/docs/FRAME-COVERAGE-STANDARD.md +0 -65
- package/docs/FRAME-COVERAGE.md +0 -29
- package/docs/MEASUREMENT-CONTRACT.md +0 -109
- package/docs/PROPS-REGISTRY.md +0 -61
- package/docs/PROPS-VOCABULARY.md +0 -100
- package/docs/REGISTRY.md +0 -70
- package/docs/TESTING.md +0 -107
- package/docs/THEME-API-COVERAGE.md +0 -538
- package/docs/WHAT-BELONGS-HERE.md +0 -179
- package/docs/asset-modules.d.ts +0 -53
- package/docs/assets/cover-terrain.svg +0 -6
- package/docs/assets/portrait-amber.svg +0 -5
- package/docs/assets/portrait-clay.svg +0 -5
- package/docs/assets/portrait-indigo.svg +0 -5
- package/docs/assets/portrait-iris.svg +0 -5
- package/docs/assets/portrait-moss.svg +0 -5
- package/docs/assets/portrait-plum.svg +0 -5
- package/docs/assets/portrait-slate.svg +0 -5
- package/docs/assets/service-mark-rose.svg +0 -6
- package/docs/assets/service-mark-teal.svg +0 -5
- package/docs/assets/shot-landscape.svg +0 -12
- package/docs/assets/shot-portrait.svg +0 -10
- package/docs/assets/tcgm/card-1.svg +0 -1
- package/docs/assets/tcgm/card-2.svg +0 -1
- package/docs/assets/tcgm/card-3.svg +0 -1
- package/docs/assets/tcgm/card-4.svg +0 -1
- package/docs/assets/tcgm/card-5.svg +0 -1
- package/docs/assets/tcgm/card-6.svg +0 -1
- package/docs/assets/tcgm/hero-prism.svg +0 -1
- package/docs/assets/tcgm/scene-1.svg +0 -1
- package/docs/assets/tcgm/scene-2.svg +0 -1
- package/docs/assets/tcgm/scene-3.svg +0 -1
- package/docs/assets/tcgm/scene-4.svg +0 -1
- package/docs/assets/tcgm/scene-5.svg +0 -1
- package/docs/assets/tcgm/tcgm-lockup-color.svg +0 -1
- package/docs/assets/tcgm/tcgm-symbol-color.svg +0 -1
- package/docs/charts/cjk-category-axis.tsx +0 -81
- package/docs/charts/compact-bar-trend.tsx +0 -327
- package/docs/charts/size-tiers.tsx +0 -192
- package/docs/data-display/accordion.tsx +0 -99
- package/docs/data-display/avatar.tsx +0 -502
- package/docs/data-display/badge.tsx +0 -335
- package/docs/data-display/card/examples/detail-panel.tsx +0 -106
- package/docs/data-display/card/examples/tab-list.tsx +0 -97
- package/docs/data-display/card/index.md +0 -3
- package/docs/data-display/card/index.tsx +0 -390
- package/docs/data-display/carousel.tsx +0 -160
- package/docs/data-display/charts.tsx +0 -278
- package/docs/data-display/chat-bubble.tsx +0 -397
- package/docs/data-display/code-block.tsx +0 -188
- package/docs/data-display/collapsible.tsx +0 -162
- package/docs/data-display/credential-reveal.tsx +0 -148
- package/docs/data-display/data-table/examples/antd-parity.tsx +0 -257
- package/docs/data-display/data-table/examples/approval-queue.tsx +0 -212
- package/docs/data-display/data-table/examples/grid-features.tsx +0 -158
- package/docs/data-display/data-table/examples/list-page.tsx +0 -175
- package/docs/data-display/data-table/examples/selectable-inbox.tsx +0 -113
- package/docs/data-display/data-table/examples/server-paged.tsx +0 -179
- package/docs/data-display/data-table/examples/striped-list.tsx +0 -173
- package/docs/data-display/data-table/index.md +0 -9
- package/docs/data-display/data-table/index.tsx +0 -407
- package/docs/data-display/descriptions.tsx +0 -263
- package/docs/data-display/empty-state.tsx +0 -164
- package/docs/data-display/feature-list.tsx +0 -159
- package/docs/data-display/hover-card.tsx +0 -181
- package/docs/data-display/image.tsx +0 -170
- package/docs/data-display/legend.tsx +0 -158
- package/docs/data-display/list-row.tsx +0 -441
- package/docs/data-display/markdown.tsx +0 -86
- package/docs/data-display/marquee.tsx +0 -254
- package/docs/data-display/org-chart.tsx +0 -165
- package/docs/data-display/permission-matrix.tsx +0 -188
- package/docs/data-display/popover-touch.tsx +0 -27
- package/docs/data-display/popover.tsx +0 -331
- package/docs/data-display/progress.tsx +0 -162
- package/docs/data-display/prose.tsx +0 -169
- package/docs/data-display/qr-code.tsx +0 -68
- package/docs/data-display/scroll-area.tsx +0 -420
- package/docs/data-display/service-launcher-card.tsx +0 -445
- package/docs/data-display/stat-card.tsx +0 -354
- package/docs/data-display/swatch.tsx +0 -107
- package/docs/data-display/table.tsx +0 -362
- package/docs/data-display/text-diff.tsx +0 -89
- package/docs/data-display/thought-chain.tsx +0 -176
- package/docs/data-display/thumbnail.tsx +0 -128
- package/docs/data-display/timeline-grid.tsx +0 -119
- package/docs/data-display/timeline.tsx +0 -671
- package/docs/data-display/touch-actions.tsx +0 -36
- package/docs/data-display/tree.tsx +0 -724
- package/docs/data-display/welcome.tsx +0 -115
- package/docs/data-entry/attachments.tsx +0 -160
- package/docs/data-entry/block-editor.tsx +0 -105
- package/docs/data-entry/branch-scope-picker.tsx +0 -128
- package/docs/data-entry/calendar.tsx +0 -226
- package/docs/data-entry/cascader.tsx +0 -380
- package/docs/data-entry/chat-composer.tsx +0 -619
- package/docs/data-entry/chat-suggestion.tsx +0 -301
- package/docs/data-entry/checkbox.tsx +0 -256
- package/docs/data-entry/color-picker.tsx +0 -189
- package/docs/data-entry/command-palette.tsx +0 -179
- package/docs/data-entry/command.tsx +0 -341
- package/docs/data-entry/country-picker-recipe.tsx +0 -175
- package/docs/data-entry/date-picker.tsx +0 -452
- package/docs/data-entry/emoji-picker.tsx +0 -35
- package/docs/data-entry/form/examples/employee-settings.tsx +0 -267
- package/docs/data-entry/form/examples/invoice-form.tsx +0 -387
- package/docs/data-entry/form-dynamic-fields.tsx +0 -199
- package/docs/data-entry/form-field/examples/a11y-contract.tsx +0 -242
- package/docs/data-entry/form-field/examples/create-form.tsx +0 -107
- package/docs/data-entry/form-field/index.md +0 -8
- package/docs/data-entry/form-field/index.tsx +0 -337
- package/docs/data-entry/form-inertia.tsx +0 -80
- package/docs/data-entry/form-root.tsx +0 -112
- package/docs/data-entry/form.tsx +0 -1498
- package/docs/data-entry/input-otp.tsx +0 -258
- package/docs/data-entry/input.tsx +0 -796
- package/docs/data-entry/label.tsx +0 -102
- package/docs/data-entry/markdown-editor.tsx +0 -69
- package/docs/data-entry/number-input.tsx +0 -279
- package/docs/data-entry/password-input.tsx +0 -102
- package/docs/data-entry/password-strength.tsx +0 -99
- package/docs/data-entry/radio-group.tsx +0 -316
- package/docs/data-entry/rating.tsx +0 -91
- package/docs/data-entry/record-picker.tsx +0 -209
- package/docs/data-entry/search-input.tsx +0 -121
- package/docs/data-entry/segmented-in-filter-row.tsx +0 -60
- package/docs/data-entry/segmented.tsx +0 -300
- package/docs/data-entry/select-async-contracts.tsx +0 -108
- package/docs/data-entry/select-matrix.tsx +0 -209
- package/docs/data-entry/select.tsx +0 -547
- package/docs/data-entry/slider.tsx +0 -212
- package/docs/data-entry/sortable-list.tsx +0 -76
- package/docs/data-entry/switch.tsx +0 -314
- package/docs/data-entry/tag-input.tsx +0 -145
- package/docs/data-entry/textarea.tsx +0 -249
- package/docs/data-entry/time-picker.tsx +0 -187
- package/docs/data-entry/time-range-picker.tsx +0 -55
- package/docs/data-entry/toggle-count.tsx +0 -348
- package/docs/data-entry/toggle-group.tsx +0 -438
- package/docs/data-entry/toggle.tsx +0 -217
- package/docs/data-entry/transfer.tsx +0 -115
- package/docs/data-entry/tree-select.tsx +0 -204
- package/docs/data-entry/upload-crop-dialog.tsx +0 -109
- package/docs/data-entry/upload.tsx +0 -310
- package/docs/feedback/alert-dialog.tsx +0 -270
- package/docs/feedback/alert.tsx +0 -248
- package/docs/feedback/auth-expiry.tsx +0 -104
- package/docs/feedback/banner.tsx +0 -183
- package/docs/feedback/callout.tsx +0 -220
- package/docs/feedback/danger-confirm.tsx +0 -91
- package/docs/feedback/dialog-touch.tsx +0 -24
- package/docs/feedback/dialog.tsx +0 -373
- package/docs/feedback/sheet.tsx +0 -510
- package/docs/feedback/skeleton.tsx +0 -168
- package/docs/feedback/toast.tsx +0 -135
- package/docs/feedback/tooltip.tsx +0 -171
- package/docs/feedback/two-factor-setup.tsx +0 -68
- package/docs/foundation/_email-specimen.ts +0 -274
- package/docs/foundation/_theme-editor-scope.ts +0 -222
- package/docs/foundation/colors.tsx +0 -207
- package/docs/foundation/density.tsx +0 -242
- package/docs/foundation/email-tokens.tsx +0 -323
- package/docs/foundation/radius-shadow.tsx +0 -154
- package/docs/foundation/spacing.tsx +0 -216
- package/docs/foundation/theme-editor.tsx +0 -654
- package/docs/foundation/typography.tsx +0 -147
- package/docs/general/actions.tsx +0 -175
- package/docs/general/activity.tsx +0 -289
- package/docs/general/button/examples/destructive-confirm.tsx +0 -90
- package/docs/general/button/examples/form-actions.tsx +0 -87
- package/docs/general/button/examples/toolbar.tsx +0 -160
- package/docs/general/button/index.md +0 -16
- package/docs/general/button/index.tsx +0 -236
- package/docs/general/float-button.tsx +0 -133
- package/docs/general/icon.tsx +0 -217
- package/docs/general/logo.tsx +0 -194
- package/docs/general/reveal.tsx +0 -309
- package/docs/general/typography.tsx +0 -542
- package/docs/i18n/messages/en.json +0 -1715
- package/docs/i18n/messages/ja.json +0 -1708
- package/docs/i18n/messages/vi.json +0 -1708
- package/docs/layout/account-chip.tsx +0 -72
- package/docs/layout/admin-collection.tsx +0 -122
- package/docs/layout/affix.tsx +0 -209
- package/docs/layout/app-launcher.tsx +0 -211
- package/docs/layout/app-shell-arrangements.tsx +0 -225
- package/docs/layout/app-shell-narrow-bar.tsx +0 -205
- package/docs/layout/app-shell-states.tsx +0 -171
- package/docs/layout/app-shell.tsx +0 -395
- package/docs/layout/aspect-ratio.tsx +0 -135
- package/docs/layout/auth-account-summary.tsx +0 -103
- package/docs/layout/auth-divider.tsx +0 -28
- package/docs/layout/auth-footer.tsx +0 -37
- package/docs/layout/auth-identity.tsx +0 -70
- package/docs/layout/auth-recovery/examples/mfa-challenge.md +0 -41
- package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +0 -254
- package/docs/layout/auth-recovery/examples/mobile-390.md +0 -25
- package/docs/layout/auth-recovery/examples/mobile-390.tsx +0 -82
- package/docs/layout/auth-recovery/examples/password-recovery.md +0 -24
- package/docs/layout/auth-recovery/examples/password-recovery.tsx +0 -197
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +0 -27
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +0 -156
- package/docs/layout/auth-recovery/index.md +0 -140
- package/docs/layout/auth-recovery/index.tsx +0 -96
- package/docs/layout/auth-shell-context.tsx +0 -103
- package/docs/layout/auth-shell-device.tsx +0 -112
- package/docs/layout/auth-shell-registration.tsx +0 -338
- package/docs/layout/auth-shell-variants.tsx +0 -143
- package/docs/layout/auth-shell.tsx +0 -59
- package/docs/layout/auth-stack.tsx +0 -40
- package/docs/layout/centered-shell.tsx +0 -102
- package/docs/layout/draggable-panel.tsx +0 -127
- package/docs/layout/error-surface/examples/application-403.tsx +0 -84
- package/docs/layout/error-surface/examples/application-404.tsx +0 -77
- package/docs/layout/error-surface/examples/system-500.tsx +0 -47
- package/docs/layout/error-surface/examples/system-503.tsx +0 -48
- package/docs/layout/error-surface/index.md +0 -153
- package/docs/layout/error-surface/index.tsx +0 -239
- package/docs/layout/flex.tsx +0 -444
- package/docs/layout/legal-document-shell/_data.ts +0 -110
- package/docs/layout/legal-document-shell/examples/desktop-1440.md +0 -12
- package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +0 -83
- package/docs/layout/legal-document-shell/examples/mobile-390.md +0 -22
- package/docs/layout/legal-document-shell/examples/mobile-390.tsx +0 -70
- package/docs/layout/legal-document-shell/examples/tablet-1024.md +0 -3
- package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +0 -84
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +0 -18
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +0 -61
- package/docs/layout/legal-document-shell/index.md +0 -51
- package/docs/layout/legal-document-shell/index.tsx +0 -101
- package/docs/layout/masonry.tsx +0 -291
- package/docs/layout/master-detail.tsx +0 -390
- package/docs/layout/mobile-shell.tsx +0 -106
- package/docs/layout/nav-list.tsx +0 -584
- package/docs/layout/org-switcher.tsx +0 -131
- package/docs/layout/page-container.tsx +0 -1020
- package/docs/layout/page-cover.tsx +0 -56
- package/docs/layout/resizable-panel.tsx +0 -419
- package/docs/layout/responsive-grid.tsx +0 -403
- package/docs/layout/separator.tsx +0 -327
- package/docs/layout/service-role-panel.tsx +0 -144
- package/docs/layout/sidebar.tsx +0 -689
- package/docs/layout/space-compact.tsx +0 -202
- package/docs/layout/split-pane.tsx +0 -532
- package/docs/layout/topbar-item.tsx +0 -233
- package/docs/layout/topbar.tsx +0 -360
- package/docs/navigation/anchor.tsx +0 -295
- package/docs/navigation/app-setting-picker.tsx +0 -178
- package/docs/navigation/app-setting-toggle.tsx +0 -111
- package/docs/navigation/breadcrumb.tsx +0 -207
- package/docs/navigation/card-tabs.tsx +0 -344
- package/docs/navigation/conversations.tsx +0 -176
- package/docs/navigation/dropdown-menu.tsx +0 -345
- package/docs/navigation/filter-bar.tsx +0 -247
- package/docs/navigation/mega-menu-panel.tsx +0 -86
- package/docs/navigation/mega-menu.tsx +0 -254
- package/docs/navigation/pagination.tsx +0 -293
- package/docs/navigation/steps.tsx +0 -315
- package/docs/navigation/tabs-rtl.tsx +0 -28
- package/docs/navigation/tabs.tsx +0 -755
- package/docs/navigation/toolbar.tsx +0 -347
- package/docs/providers/app-provider.tsx +0 -191
- package/docs/providers/format-date.tsx +0 -230
- package/docs/providers/theme-scope.tsx +0 -186
- package/docs/query/button-refetch.tsx +0 -161
- package/docs/query/data-state.tsx +0 -262
- package/docs/query/infinite-query-state.tsx +0 -97
- package/docs/query/mutation-feedback.tsx +0 -128
- package/docs/query/touch-actions.tsx +0 -68
- package/docs/react-router/prefetch-link.tsx +0 -262
- package/docs/roadmap/ai-chat-components.md +0 -206
- package/docs/roadmap/antd-parity.md +0 -155
- package/docs/roadmap/badge-tag-chip-count.md +0 -172
- package/docs/roadmap/list-masonry.md +0 -159
- package/docs/roadmap/parity-audit-data-display-feedback.md +0 -567
- package/docs/roadmap/parity-audit-data-entry.md +0 -368
- package/docs/roadmap/parity-audit-layout-navigation-general.md +0 -459
- package/docs/roadmap/parity-backlog.md +0 -77
- package/docs/roadmap/tree-components.md +0 -151
- package/docs/roadmap/website-components.md +0 -813
- package/docs/showcase/acme-portal.tsx +0 -461
- package/docs/showcase/acme-website.tsx +0 -499
- package/docs/showcase/caimono-price-comparison.tsx +0 -919
- package/docs/showcase/case1-warehouse-dashboard.tsx +0 -358
- package/docs/showcase/case2-employee-me.tsx +0 -438
- package/docs/showcase/case3-approval-workflow.tsx +0 -531
- package/docs/showcase/case4-login.tsx +0 -312
- package/docs/showcase/case5-shift-calendar.tsx +0 -702
- package/docs/showcase/case6-agency-handy.tsx +0 -1120
- package/docs/showcase/futurelastic-web.tsx +0 -441
- package/docs/showcase/marketing-page.tsx +0 -895
- package/docs/showcase/org-switcher.tsx +0 -320
- package/docs/showcase/permission-matrix.tsx +0 -354
- package/docs/showcase/public-landing.tsx +0 -210
- package/docs/showcase/settings-account-sections.tsx +0 -559
- package/docs/showcase/settings-security-mfa.tsx +0 -145
- package/docs/showcase/table-approval-queue.tsx +0 -199
- package/docs/showcase/table-bulk-actions.tsx +0 -468
- package/docs/showcase/table-compact-kintone.tsx +0 -438
- package/docs/showcase/table-conditional-format.tsx +0 -367
- package/docs/showcase/table-crud-list.tsx +0 -544
- package/docs/showcase/table-density.tsx +0 -349
- package/docs/showcase/table-expandable-rows.tsx +0 -496
- package/docs/showcase/table-filter-chips.tsx +0 -468
- package/docs/showcase/table-footer-totals.tsx +0 -328
- package/docs/showcase/table-grouped-subtotals.tsx +0 -398
- package/docs/showcase/table-master-detail.tsx +0 -482
- package/docs/showcase/table-pagination.tsx +0 -409
- package/docs/showcase/table-states.tsx +0 -371
- package/docs/showcase/table-sticky-columns.tsx +0 -377
- package/docs/showcase/table-tree-rows.tsx +0 -451
- package/docs/showcase/table-view-tabs.tsx +0 -488
- package/docs/showcase/tcgm-website.tsx +0 -1047
- package/docs/showcase/tenant-brand-color.tsx +0 -338
- package/docs/showcase/theme-customization.tsx +0 -1292
- package/docs/showcase/theme-lab.tsx +0 -2125
- package/docs/themes/flat.css +0 -466
- package/docs/themes/glassmorphism.css +0 -960
- package/docs/themes/index.ts +0 -219
- package/docs/themes/neubrutalism.css +0 -481
- /package/dist/components/navigation/{filter-bar.d.ts → toolbar.d.ts} +0 -0
- /package/dist/components/navigation/{filter-bar.js → toolbar.js} +0 -0
- /package/dist/{components/data-display → lab}/carousel.d.ts +0 -0
- /package/dist/{components/data-entry → lab}/emoji-data.d.ts +0 -0
- /package/dist/{components/data-entry → lab}/emoji-data.js +0 -0
- /package/dist/{components/data-display → lab}/marquee-reveal.d.ts +0 -0
- /package/dist/{components/data-display → lab}/marquee-reveal.js +0 -0
|
@@ -1,499 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Showcase · ACME marketing website — a TOKEN-ONLY rebuild of the Claude Design `ui_kits/website`.
|
|
3
|
-
*
|
|
4
|
-
* Proves the hard brief: a CONSUMER agent, given a Claude Design export, reproduces a full marketing
|
|
5
|
-
* landing page from **token configuration + a brand stylesheet + REAL @godxjp/ui primitives** — with
|
|
6
|
-
* NO new framework components. Per docs/COMPOSITION-VS-COMPONENT.md, marketing sections (Navbar,
|
|
7
|
-
* Hero, CTA, Footer) FAIL the Framework-Component Test, so they are COMPOSITION: layout `<section>`s
|
|
8
|
-
* arranging Card / Button / Text / Avatar / ResponsiveGrid / Flex.
|
|
9
|
-
*
|
|
10
|
-
* The brand-specific styling lives in the `THEME` <style> block (a consumer's own stylesheet) — the
|
|
11
|
-
* design's tokens + a few marketing type/section classes + per-region role scoping for the navy
|
|
12
|
-
* sections. The TSX stays clean: real primitives + semantic class names, no arbitrary utilities.
|
|
13
|
-
*/
|
|
14
|
-
import * as React from "react";
|
|
15
|
-
import {
|
|
16
|
-
ArrowRight,
|
|
17
|
-
ChevronDown,
|
|
18
|
-
CreditCard,
|
|
19
|
-
Globe,
|
|
20
|
-
Link2,
|
|
21
|
-
Mail,
|
|
22
|
-
PackageCheck,
|
|
23
|
-
Phone,
|
|
24
|
-
Plus,
|
|
25
|
-
Receipt,
|
|
26
|
-
Scale,
|
|
27
|
-
Search,
|
|
28
|
-
ShieldCheck,
|
|
29
|
-
ShoppingCart,
|
|
30
|
-
Ship,
|
|
31
|
-
UserPlus,
|
|
32
|
-
Warehouse,
|
|
33
|
-
} from "lucide-react";
|
|
34
|
-
|
|
35
|
-
import { Button, Heading, Icon, Text } from "@godxjp/ui/general";
|
|
36
|
-
import { Avatar, AvatarFallback, Card, CardContent, CardCover } from "@godxjp/ui/data-display";
|
|
37
|
-
import { Flex, ResponsiveGrid } from "@godxjp/ui/layout";
|
|
38
|
-
|
|
39
|
-
// ── Brand stylesheet: the design's tokens + marketing type/section classes + navy role-scoping. ───
|
|
40
|
-
// This is what a consumer ships as their own theme.css — raw brand values live HERE (CSS), not as
|
|
41
|
-
// arbitrary utilities in the markup. The page below reads it via semantic class names only.
|
|
42
|
-
const THEME = `
|
|
43
|
-
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;600;700;800;900&family=Inter:wght@400;500;600;700&display=swap');
|
|
44
|
-
[data-tenant="acme-web"] {
|
|
45
|
-
--primary: 41 73% 53%; --primary-foreground: 217 61% 12%; --ring: 41 73% 53%;
|
|
46
|
-
--accent: 42 81% 96%; --accent-foreground: 41 72% 44%;
|
|
47
|
-
--background: 210 33% 97%; --foreground: 217 61% 12%;
|
|
48
|
-
--card: 0 0% 100%; --card-foreground: 217 61% 12%;
|
|
49
|
-
--secondary: 217 61% 12%; --secondary-foreground: 0 0% 100%;
|
|
50
|
-
--muted: 214 27% 95%; --muted-foreground: 216 14% 37%;
|
|
51
|
-
/* --input is the CONTROL boundary, held to 3:1 (SC 1.4.11): 3.33 on the page, 3.57 on a card,
|
|
52
|
-
3.18 on --muted. It was 216 16% 80% = 1.46:1. --border is decorative chrome; it stays. */
|
|
53
|
-
--border: 214 27% 90%; --input: 216 16% 55%;
|
|
54
|
-
--success: 152 100% 25%; --warning: 41 73% 53%; --destructive: 11 82% 56%; --info: 203 100% 37%;
|
|
55
|
-
--letter-spacing-tight: -0.02em; /* the display tracking .tx-display/.tx-h2 hand-wrote, once */
|
|
56
|
-
--radius: 0.875rem; --radius-md: 10px; --radius-lg: 14px;
|
|
57
|
-
--card-radius: var(--radius); --control-radius: var(--radius);
|
|
58
|
-
--shadow-color: 38 79 145;
|
|
59
|
-
--card-shadow: 0 1px 3px rgb(38 79 145 / 0.08), 0 1px 2px rgb(38 79 145 / 0.06);
|
|
60
|
-
--shadow-glow: 0 8px 20px hsl(41 73% 53% / 0.32);
|
|
61
|
-
--focus-ring-color: 41 73% 53%;
|
|
62
|
-
--font-family-display: "Source Sans 3", system-ui, sans-serif;
|
|
63
|
-
--font-family-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
64
|
-
--font-family-sans: var(--font-family-body);
|
|
65
|
-
--text-brand: 41 84% 26%; /* dark gold, eyebrows clear AA on light sections */
|
|
66
|
-
/* The glass bar, opted into once (gh#831). These two used to be a literal 0.85 alpha and a
|
|
67
|
-
literal 10px blur on .tx-navbar. futurelastic-web.tsx hand-wrote the identical pair. */
|
|
68
|
-
--topbar-background-alpha: 85%;
|
|
69
|
-
--topbar-backdrop-blur-size: 10px;
|
|
70
|
-
}
|
|
71
|
-
/* Marketing layout + type (a consumer's section stylesheet) */
|
|
72
|
-
[data-tenant="acme-web"] .tx-shell { margin-inline: auto; width: 100%; max-inline-size: var(--page-measure-wide);
|
|
73
|
-
padding-inline: var(--space-8);
|
|
74
|
-
/* ResponsiveGrid uses @container queries, so establish the container here (PageContainer does this
|
|
75
|
-
* in an app; a marketing composition provides it on its own shell). */
|
|
76
|
-
container-type: inline-size; }
|
|
77
|
-
[data-tenant="acme-web"] .tx-section { padding-block: var(--space-section-band); }
|
|
78
|
-
/* The sticky header IS this page's bar region, so it reads the --topbar-* glass knobs. It is not a
|
|
79
|
-
<Topbar> for one reason: the glass must span the full bleed while the bar's CONTENT stays on the
|
|
80
|
-
.tx-shell measure, and Topbar is a single flex row with no inner shell. */
|
|
81
|
-
[data-tenant="acme-web"] .tx-navbar { position: sticky; inset-block-start: 0; z-index: 30;
|
|
82
|
-
background-color: hsl(var(--background) / var(--topbar-background-alpha));
|
|
83
|
-
backdrop-filter: blur(var(--topbar-backdrop-blur-size));
|
|
84
|
-
border-block-end: var(--stroke-hairline) solid hsl(var(--border)); }
|
|
85
|
-
[data-tenant="acme-web"] .tx-navbar-inner { height: 72px; display: flex; align-items: center; gap: 2.25rem; }
|
|
86
|
-
[data-tenant="acme-web"] .tx-brand { font-family: var(--font-family-display); font-weight: 800; font-size: 1.375rem; letter-spacing: -0.01em; color: hsl(var(--foreground)); }
|
|
87
|
-
[data-tenant="acme-web"] .tx-eyebrow { font-family: var(--font-family-display); font-weight: 700; font-size: 0.8125rem;
|
|
88
|
-
letter-spacing: 0.12em; text-transform: uppercase; color: hsl(var(--text-brand)); }
|
|
89
|
-
/* .tx-display / .tx-h2 / .tx-lead are GONE (gh#826). They existed only because the display type
|
|
90
|
-
ramp had tokens and no prop, so all three were a raw font-size plus the leading that has to come
|
|
91
|
-
with it. They are now Heading size="5xl", Heading size="4xl" and Text size="xl". The
|
|
92
|
-
brand face is not lost with them: base.css already points every <h1>-<h6> at
|
|
93
|
-
--font-family-display, which the token block above sets. The one knob those classes carried that
|
|
94
|
-
is genuinely brand and not scale is the display tracking, and it IS a token — set once, below. */
|
|
95
|
-
/* --text-brand, not --primary (gh#643): --primary is a FILL role, and as ink it measured
|
|
96
|
-
2.01:1 here. The AA-safe text tier already exists and .tx-eyebrow above already reads it. */
|
|
97
|
-
[data-tenant="acme-web"] .tx-gold { color: hsl(var(--text-brand)); }
|
|
98
|
-
[data-tenant="acme-web"] .tx-stat { font-family: var(--font-family-display); font-weight: 800; font-size: 1.75rem; color: hsl(var(--primary)); }
|
|
99
|
-
[data-tenant="acme-web"] .tx-hero-grid { display: grid; gap: var(--space-12); align-items: center; padding-block: var(--space-section-hero); }
|
|
100
|
-
@media (min-width: 1024px) { [data-tenant="acme-web"] .tx-hero-grid { grid-template-columns: 1.1fr 0.9fr; } }
|
|
101
|
-
/* .tx-glow* are GONE too: .ui-brand-glow shipped with exactly this gradient and these four
|
|
102
|
-
knobs, and nothing in the repo referenced it while four sections hand-wrote it (gh#826). The
|
|
103
|
-
halo's position/size/alpha are now per-instance token overrides at the call site. */
|
|
104
|
-
[data-tenant="acme-web"] .tx-field { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem;
|
|
105
|
-
background: hsl(0 0% 100% / 0.08); border-radius: var(--radius-md); }
|
|
106
|
-
[data-tenant="acme-web"] .tx-quote-total { display: flex; align-items: center; justify-content: space-between;
|
|
107
|
-
padding: 0.875rem 1rem; background: hsl(var(--primary)); border-radius: var(--radius-md); }
|
|
108
|
-
[data-tenant="acme-web"] .tx-route-flag { height: 80px; display: flex; align-items: center; justify-content: center; background: hsl(217 49% 24%); }
|
|
109
|
-
[data-tenant="acme-web"] .tx-route-code { font-family: var(--font-family-display); font-weight: 800; font-size: 1.75rem; letter-spacing: 0.05em; color: hsl(var(--primary)); }
|
|
110
|
-
[data-tenant="acme-web"] .tx-footer-grid { display: grid; gap: 2.25rem; }
|
|
111
|
-
@media (min-width: 768px) { [data-tenant="acme-web"] .tx-footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
|
|
112
|
-
[data-tenant="acme-web"] .tx-footer-bottom { display: flex; align-items: center; justify-content: space-between;
|
|
113
|
-
margin-block-start: 2.25rem; padding-block-start: var(--space-5); border-block-start: var(--stroke-hairline) solid hsl(0 0% 100% / 0.1); }
|
|
114
|
-
/* Navy region: role scoping so descendants render on-dark (white text, glass cards, outline btns). */
|
|
115
|
-
[data-tenant="acme-web"] .tx-navy {
|
|
116
|
-
background: hsl(217 61% 12%); --foreground: 0 0% 100%;
|
|
117
|
-
--card: 217 45% 18%; --card-foreground: 0 0% 100%;
|
|
118
|
-
--card-background: hsl(0 0% 100% / 0.06); --card-border: 0 0% 100% / 0.12;
|
|
119
|
-
--muted-foreground: 214 36% 80%; --border: 214 30% 30%; --input: 214 24% 60%; --background: 217 61% 12%;
|
|
120
|
-
--text-brand: 41 80% 62%; /* light gold, eyebrows clear AA on the navy regions */
|
|
121
|
-
}
|
|
122
|
-
[data-tenant="acme-web"] .tx-navy-deep { background: hsl(217 61% 9%); }
|
|
123
|
-
`;
|
|
124
|
-
|
|
125
|
-
const SHELL = "tx-shell";
|
|
126
|
-
|
|
127
|
-
function Navbar() {
|
|
128
|
-
const links = ["Mua hộ", "Vận chuyển", "Bảng giá", "Tra cứu", "Về chúng tôi"];
|
|
129
|
-
return (
|
|
130
|
-
<header className="tx-navbar">
|
|
131
|
-
<div className={`${SHELL} tx-navbar-inner`}>
|
|
132
|
-
<span className="tx-brand" data-logotype="">
|
|
133
|
-
TIXI<span className="tx-gold">MAX</span>
|
|
134
|
-
</span>
|
|
135
|
-
<Flex direction="row" gap="xs" align="center">
|
|
136
|
-
{links.map((l, i) => (
|
|
137
|
-
<Button key={l} variant="ghost" size="sm" aria-current={i === 0 ? "page" : undefined}>
|
|
138
|
-
{l}
|
|
139
|
-
</Button>
|
|
140
|
-
))}
|
|
141
|
-
</Flex>
|
|
142
|
-
<Flex direction="row" gap="sm" align="center" className="ms-auto">
|
|
143
|
-
<Button variant="ghost" size="sm">
|
|
144
|
-
Đăng nhập
|
|
145
|
-
</Button>
|
|
146
|
-
<Button size="sm">
|
|
147
|
-
<Plus aria-hidden="true" />
|
|
148
|
-
Tạo đơn mua hộ
|
|
149
|
-
</Button>
|
|
150
|
-
</Flex>
|
|
151
|
-
</div>
|
|
152
|
-
</header>
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function Hero() {
|
|
157
|
-
const stats: Array<[string, string]> = [
|
|
158
|
-
["120K+", "Đơn đã giao"],
|
|
159
|
-
["6", "Quốc gia"],
|
|
160
|
-
["12–18", "Ngày vận chuyển"],
|
|
161
|
-
];
|
|
162
|
-
const fields: Array<[typeof Globe, string, string]> = [
|
|
163
|
-
[Globe, "Quốc gia", "Nhật Bản"],
|
|
164
|
-
[Scale, "Cân nặng (kg)", "3.5 kg"],
|
|
165
|
-
];
|
|
166
|
-
return (
|
|
167
|
-
<section className="tx-navy relative overflow-hidden">
|
|
168
|
-
<div
|
|
169
|
-
className="ui-brand-glow absolute inset-0"
|
|
170
|
-
style={
|
|
171
|
-
{
|
|
172
|
-
"--brand-glow-size": "40% 50%",
|
|
173
|
-
"--brand-glow-position": "88% -10%",
|
|
174
|
-
"--brand-glow-alpha": "0.22",
|
|
175
|
-
} as React.CSSProperties
|
|
176
|
-
}
|
|
177
|
-
/>
|
|
178
|
-
<div className={`${SHELL} tx-hero-grid relative`}>
|
|
179
|
-
<Flex direction="col" gap="xl">
|
|
180
|
-
<div className="tx-eyebrow">Mua hộ & vận chuyển quốc tế</div>
|
|
181
|
-
<Heading level={1} size="5xl" weight="bold">
|
|
182
|
-
Mua sắm toàn cầu,
|
|
183
|
-
<br />
|
|
184
|
-
<span className="tx-gold">ACME</span> lo phần còn lại.
|
|
185
|
-
</Heading>
|
|
186
|
-
<Text as="p" size="xl" tone="muted">
|
|
187
|
-
Đặt mua, thanh toán và vận chuyển hàng từ Nhật, Hàn, Indonesia và Mỹ về tận nhà. Minh
|
|
188
|
-
bạch chi phí, theo dõi từng bước.
|
|
189
|
-
</Text>
|
|
190
|
-
<Flex direction="row" gap="md">
|
|
191
|
-
<Button size="lg">
|
|
192
|
-
Nhận báo giá miễn phí
|
|
193
|
-
<ArrowRight aria-hidden="true" />
|
|
194
|
-
</Button>
|
|
195
|
-
<Button variant="outline" size="lg">
|
|
196
|
-
<Search aria-hidden="true" />
|
|
197
|
-
Tra cứu đơn
|
|
198
|
-
</Button>
|
|
199
|
-
</Flex>
|
|
200
|
-
<Flex direction="row" gap="lg">
|
|
201
|
-
{stats.map(([n, l]) => (
|
|
202
|
-
<div key={l}>
|
|
203
|
-
<div className="tx-stat">{n}</div>
|
|
204
|
-
<Text as="div" size="xs" tone="muted">
|
|
205
|
-
{l}
|
|
206
|
-
</Text>
|
|
207
|
-
</div>
|
|
208
|
-
))}
|
|
209
|
-
</Flex>
|
|
210
|
-
</Flex>
|
|
211
|
-
|
|
212
|
-
<Card>
|
|
213
|
-
<CardContent>
|
|
214
|
-
<Flex direction="col" gap="md">
|
|
215
|
-
<div className="tx-eyebrow">Ước tính phí vận chuyển</div>
|
|
216
|
-
<Flex direction="col" gap="sm">
|
|
217
|
-
{fields.map(([Glyph, label, value]) => (
|
|
218
|
-
<div key={label} className="tx-field">
|
|
219
|
-
<Icon as={Glyph} size="lg" className="tx-gold" />
|
|
220
|
-
<div className="min-w-0 flex-1">
|
|
221
|
-
<Text as="div" size="2xs" tone="muted">
|
|
222
|
-
{label}
|
|
223
|
-
</Text>
|
|
224
|
-
<Text as="div" weight="bold">
|
|
225
|
-
{value}
|
|
226
|
-
</Text>
|
|
227
|
-
</div>
|
|
228
|
-
<Icon as={ChevronDown} size="lg" />
|
|
229
|
-
</div>
|
|
230
|
-
))}
|
|
231
|
-
<div className="tx-quote-total">
|
|
232
|
-
<Text as="span" weight="bold" className="text-primary-foreground">
|
|
233
|
-
Tạm tính
|
|
234
|
-
</Text>
|
|
235
|
-
<Text as="span" weight="bold" size="2xl" className="text-primary-foreground">
|
|
236
|
-
525.000đ
|
|
237
|
-
</Text>
|
|
238
|
-
</div>
|
|
239
|
-
</Flex>
|
|
240
|
-
</Flex>
|
|
241
|
-
</CardContent>
|
|
242
|
-
</Card>
|
|
243
|
-
</div>
|
|
244
|
-
</section>
|
|
245
|
-
);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
function SectionHead({
|
|
249
|
-
eyebrow,
|
|
250
|
-
title,
|
|
251
|
-
sub,
|
|
252
|
-
center,
|
|
253
|
-
}: {
|
|
254
|
-
eyebrow: string;
|
|
255
|
-
title: string;
|
|
256
|
-
sub?: string;
|
|
257
|
-
center?: boolean;
|
|
258
|
-
}) {
|
|
259
|
-
return (
|
|
260
|
-
<div className={center ? "mx-auto text-center" : undefined}>
|
|
261
|
-
<div className="tx-eyebrow">{eyebrow}</div>
|
|
262
|
-
<Heading level={2} size="4xl" weight="bold">
|
|
263
|
-
{title}
|
|
264
|
-
</Heading>
|
|
265
|
-
{sub ? (
|
|
266
|
-
<Text as="p" size="xl" tone="muted" className="mx-auto">
|
|
267
|
-
{sub}
|
|
268
|
-
</Text>
|
|
269
|
-
) : null}
|
|
270
|
-
</div>
|
|
271
|
-
);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
function Medallion({ icon: Glyph }: { icon: typeof Globe }) {
|
|
275
|
-
return (
|
|
276
|
-
<Avatar className="rounded-md">
|
|
277
|
-
<AvatarFallback className="bg-primary/10 text-primary rounded-md">
|
|
278
|
-
<Icon as={Glyph} size="lg" />
|
|
279
|
-
</AvatarFallback>
|
|
280
|
-
</Avatar>
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
function Services() {
|
|
285
|
-
const items: Array<[typeof Globe, string, string]> = [
|
|
286
|
-
[
|
|
287
|
-
ShoppingCart,
|
|
288
|
-
"Mua hộ",
|
|
289
|
-
"Gửi link sản phẩm, ACME đặt mua và thanh toán giúp bạn với tỷ giá minh bạch.",
|
|
290
|
-
],
|
|
291
|
-
[Ship, "Vận chuyển", "Đường biển và đường bay từ Nhật, Hàn, Indonesia, Mỹ về Việt Nam."],
|
|
292
|
-
[Warehouse, "Gom hàng", "Gom nhiều đơn vào một kiện để tiết kiệm tối đa chi phí vận chuyển."],
|
|
293
|
-
[
|
|
294
|
-
ShieldCheck,
|
|
295
|
-
"Bảo hiểm hàng hóa",
|
|
296
|
-
"Bảo vệ giá trị đơn hàng trong suốt quá trình vận chuyển quốc tế.",
|
|
297
|
-
],
|
|
298
|
-
];
|
|
299
|
-
return (
|
|
300
|
-
<section className="bg-card tx-section">
|
|
301
|
-
<Flex direction="col" gap="xl" className={SHELL}>
|
|
302
|
-
<SectionHead
|
|
303
|
-
center
|
|
304
|
-
eyebrow="Dịch vụ"
|
|
305
|
-
title="Một điểm chạm, trọn quy trình"
|
|
306
|
-
sub="Từ lúc bạn thấy món hàng ở nước ngoài đến khi nó nằm trong tay bạn."
|
|
307
|
-
/>
|
|
308
|
-
<ResponsiveGrid columns={{ sm: 1, md: 2, lg: 4 }}>
|
|
309
|
-
{items.map(([icon, t, d]) => (
|
|
310
|
-
<Card key={t}>
|
|
311
|
-
<CardContent>
|
|
312
|
-
<Flex direction="col" gap="md">
|
|
313
|
-
<Medallion icon={icon} />
|
|
314
|
-
<Text as="div" weight="bold" size="lg">
|
|
315
|
-
{t}
|
|
316
|
-
</Text>
|
|
317
|
-
<Text as="p" size="sm" tone="muted">
|
|
318
|
-
{d}
|
|
319
|
-
</Text>
|
|
320
|
-
</Flex>
|
|
321
|
-
</CardContent>
|
|
322
|
-
</Card>
|
|
323
|
-
))}
|
|
324
|
-
</ResponsiveGrid>
|
|
325
|
-
</Flex>
|
|
326
|
-
</section>
|
|
327
|
-
);
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function Steps() {
|
|
331
|
-
const steps: Array<[typeof Globe, string, string]> = [
|
|
332
|
-
[Link2, "Gửi link sản phẩm", "Dán đường link món hàng bạn muốn mua từ bất kỳ trang nào."],
|
|
333
|
-
[Receipt, "Nhận báo giá", "ACME báo giá tiền hàng và phí vận chuyển trong vài phút."],
|
|
334
|
-
[CreditCard, "Thanh toán", "Đặt cọc hoặc thanh toán toàn bộ, chúng tôi đặt mua ngay."],
|
|
335
|
-
[PackageCheck, "Nhận hàng tận nơi", "Theo dõi đơn theo thời gian thực đến khi giao tận nhà."],
|
|
336
|
-
];
|
|
337
|
-
return (
|
|
338
|
-
<section className="bg-background tx-section">
|
|
339
|
-
<Flex direction="col" gap="xl" className={SHELL}>
|
|
340
|
-
<SectionHead eyebrow="Quy trình" title="Mua hàng quốc tế trong 4 bước" />
|
|
341
|
-
<ResponsiveGrid columns={{ sm: 1, md: 2, lg: 4 }}>
|
|
342
|
-
{steps.map(([Glyph, t, d], i) => (
|
|
343
|
-
<Flex direction="col" gap="md" key={t}>
|
|
344
|
-
<Flex direction="row" gap="sm" align="center">
|
|
345
|
-
<Avatar>
|
|
346
|
-
<AvatarFallback className="bg-secondary text-primary font-bold">
|
|
347
|
-
{i + 1}
|
|
348
|
-
</AvatarFallback>
|
|
349
|
-
</Avatar>
|
|
350
|
-
<Icon as={Glyph} size="xl" className="text-brand" />
|
|
351
|
-
</Flex>
|
|
352
|
-
<Text as="div" weight="bold" size="lg">
|
|
353
|
-
{t}
|
|
354
|
-
</Text>
|
|
355
|
-
<Text as="p" size="sm" tone="muted">
|
|
356
|
-
{d}
|
|
357
|
-
</Text>
|
|
358
|
-
</Flex>
|
|
359
|
-
))}
|
|
360
|
-
</ResponsiveGrid>
|
|
361
|
-
</Flex>
|
|
362
|
-
</section>
|
|
363
|
-
);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
function Routes() {
|
|
367
|
-
const routes: Array<[string, string, string, string]> = [
|
|
368
|
-
["Nhật Bản", "JP", "Đường bay · 5–7 ngày", "210.000đ/kg"],
|
|
369
|
-
["Hàn Quốc", "KR", "Đường bay · 4–6 ngày", "180.000đ/kg"],
|
|
370
|
-
["Indonesia", "ID", "Đường biển · 12–18 ngày", "38.000đ/kg"],
|
|
371
|
-
["Hoa Kỳ", "US", "Đường bay · 7–10 ngày", "260.000đ/kg"],
|
|
372
|
-
];
|
|
373
|
-
return (
|
|
374
|
-
<section className="bg-card tx-section">
|
|
375
|
-
<Flex direction="col" gap="xl" className={SHELL}>
|
|
376
|
-
<SectionHead eyebrow="Tuyến vận chuyển" title="Giá cước rõ ràng theo từng tuyến" />
|
|
377
|
-
<ResponsiveGrid columns={{ sm: 1, md: 2, lg: 4 }}>
|
|
378
|
-
{routes.map(([c, code, mode, price]) => (
|
|
379
|
-
<Card key={c} className="overflow-hidden">
|
|
380
|
-
<CardCover className="tx-route-flag">
|
|
381
|
-
<span className="tx-route-code">{code}</span>
|
|
382
|
-
</CardCover>
|
|
383
|
-
<CardContent>
|
|
384
|
-
<Flex direction="col" gap="md">
|
|
385
|
-
<Text as="div" weight="bold" size="lg">
|
|
386
|
-
{c}
|
|
387
|
-
</Text>
|
|
388
|
-
<Text as="div" size="xs" tone="muted">
|
|
389
|
-
{mode}
|
|
390
|
-
</Text>
|
|
391
|
-
<Text as="div" weight="bold" size="2xl">
|
|
392
|
-
{price}
|
|
393
|
-
</Text>
|
|
394
|
-
</Flex>
|
|
395
|
-
</CardContent>
|
|
396
|
-
</Card>
|
|
397
|
-
))}
|
|
398
|
-
</ResponsiveGrid>
|
|
399
|
-
</Flex>
|
|
400
|
-
</section>
|
|
401
|
-
);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
function CtaBanner() {
|
|
405
|
-
return (
|
|
406
|
-
<section className="tx-navy tx-section relative overflow-hidden">
|
|
407
|
-
<div
|
|
408
|
-
className="ui-brand-glow absolute inset-0"
|
|
409
|
-
style={
|
|
410
|
-
{
|
|
411
|
-
"--brand-glow-size": "40% 50%",
|
|
412
|
-
"--brand-glow-position": "12% 120%",
|
|
413
|
-
} as React.CSSProperties
|
|
414
|
-
}
|
|
415
|
-
/>
|
|
416
|
-
<div className={`${SHELL} relative text-center`}>
|
|
417
|
-
<Heading level={2} size="4xl" weight="bold">
|
|
418
|
-
Sẵn sàng cho đơn hàng đầu tiên?
|
|
419
|
-
</Heading>
|
|
420
|
-
<Text as="p" size="xl" tone="muted" className="mx-auto">
|
|
421
|
-
Tạo tài khoản miễn phí và nhận báo giá trong 5 phút.
|
|
422
|
-
</Text>
|
|
423
|
-
<Flex direction="row" gap="md" justify="center">
|
|
424
|
-
<Button size="lg">
|
|
425
|
-
<UserPlus aria-hidden="true" />
|
|
426
|
-
Đăng ký ngay
|
|
427
|
-
</Button>
|
|
428
|
-
<Button variant="outline" size="lg">
|
|
429
|
-
Liên hệ tư vấn
|
|
430
|
-
</Button>
|
|
431
|
-
</Flex>
|
|
432
|
-
</div>
|
|
433
|
-
</section>
|
|
434
|
-
);
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
function Footer() {
|
|
438
|
-
const cols: Array<[string, string[]]> = [
|
|
439
|
-
["Dịch vụ", ["Mua hộ", "Vận chuyển", "Gom hàng", "Bảng giá"]],
|
|
440
|
-
["Công ty", ["Về ACME", "Tuyển dụng", "Tin tức", "Liên hệ"]],
|
|
441
|
-
["Hỗ trợ", ["Tra cứu đơn", "Câu hỏi thường gặp", "Chính sách", "Điều khoản"]],
|
|
442
|
-
];
|
|
443
|
-
return (
|
|
444
|
-
<footer className="tx-navy tx-navy-deep">
|
|
445
|
-
<div className={`${SHELL} tx-footer-grid`} style={{ paddingBlock: "3.5rem var(--space-8)" }}>
|
|
446
|
-
<Flex direction="col" gap="md">
|
|
447
|
-
<span className="tx-brand">
|
|
448
|
-
TIXI<span className="tx-gold">MAX</span>
|
|
449
|
-
</span>
|
|
450
|
-
<Text as="p" size="sm" tone="muted">
|
|
451
|
-
Dịch vụ mua hộ & vận chuyển quốc tế uy tín, minh bạch về tận nhà bạn.
|
|
452
|
-
</Text>
|
|
453
|
-
</Flex>
|
|
454
|
-
{cols.map(([h, items]) => (
|
|
455
|
-
<Flex direction="col" gap="md" key={h}>
|
|
456
|
-
<div className="tx-eyebrow">{h}</div>
|
|
457
|
-
<Flex direction="col" gap="xs">
|
|
458
|
-
{items.map((i) => (
|
|
459
|
-
<Button
|
|
460
|
-
key={i}
|
|
461
|
-
variant="link"
|
|
462
|
-
size="sm"
|
|
463
|
-
className="text-muted-foreground justify-start"
|
|
464
|
-
>
|
|
465
|
-
{i}
|
|
466
|
-
</Button>
|
|
467
|
-
))}
|
|
468
|
-
</Flex>
|
|
469
|
-
</Flex>
|
|
470
|
-
))}
|
|
471
|
-
</div>
|
|
472
|
-
<div className={`${SHELL} tx-footer-bottom`}>
|
|
473
|
-
<Text as="span" size="xs" tone="muted">
|
|
474
|
-
2026 ACME Logistics. All rights reserved.
|
|
475
|
-
</Text>
|
|
476
|
-
<Flex direction="row" gap="md">
|
|
477
|
-
{[Mail, Phone, Globe].map((Glyph, i) => (
|
|
478
|
-
<Icon key={i} as={Glyph} size="lg" tone="muted" />
|
|
479
|
-
))}
|
|
480
|
-
</Flex>
|
|
481
|
-
</div>
|
|
482
|
-
</footer>
|
|
483
|
-
);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
export default function AcmeWebsiteShowcase() {
|
|
487
|
-
return (
|
|
488
|
-
<div data-tenant="acme-web" className="bg-background min-h-screen">
|
|
489
|
-
<style>{THEME}</style>
|
|
490
|
-
<Navbar />
|
|
491
|
-
<Hero />
|
|
492
|
-
<Services />
|
|
493
|
-
<Steps />
|
|
494
|
-
<Routes />
|
|
495
|
-
<CtaBanner />
|
|
496
|
-
<Footer />
|
|
497
|
-
</div>
|
|
498
|
-
);
|
|
499
|
-
}
|