@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,1715 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"textExamples": {
|
|
3
|
-
"preservedText": "Plain text",
|
|
4
|
-
"sampleText": "First line\n Indented line\n\nLast line",
|
|
5
|
-
"breakTitle": "break · wrapping an identifier",
|
|
6
|
-
"breakDescription": "An identifier with nowhere to break — an email address, a coupon code, a login ID — takes break=\"anywhere\", and the column stays inside the viewport even in a table cell. whitespace=\"pre-wrap\" is for newlines a person typed; it cannot wrap an identifier in a table cell.",
|
|
7
|
-
"breakColumnOwner": "Owner",
|
|
8
|
-
"breakColumnEmail": "Email address",
|
|
9
|
-
"breakSampleName": "Sato",
|
|
10
|
-
"ellipsisTitle": "ellipsis · the full text in a tooltip while it is cut",
|
|
11
|
-
"ellipsisDescription": "ellipsis={{ tooltip: true }} keeps one line and shows the whole text on hover and on keyboard focus of the control it sits in (the link, the tree item, the sort button). A title that fits shows no tooltip, and the Text never becomes a tab stop of its own.",
|
|
12
|
-
"ellipsisPlain": "Plain Text",
|
|
13
|
-
"ellipsisLink": "Text asChild · link",
|
|
14
|
-
"ellipsisTree": "Tree titleRender",
|
|
15
|
-
"ellipsisTable": "Test suites",
|
|
16
|
-
"ellipsisBreadcrumb": "Truncated breadcrumb",
|
|
17
|
-
"ellipsisCrumbHome": "Home",
|
|
18
|
-
"ellipsisLongTitle": "Q3 integration test · payment module · invoice re-issue scenarios and acceptance criteria review",
|
|
19
|
-
"ellipsisShortTitle": "Login smoke test",
|
|
20
|
-
"ellipsisLongHeader": "Latest run name (release candidate 2026-09)"
|
|
21
|
-
},
|
|
22
|
-
"themeShowcase": {
|
|
23
|
-
"page": {
|
|
24
|
-
"title": "Flexible theme customization",
|
|
25
|
-
"subtitle": "One seed moves the whole system. Pick a palette and every control, surface, mark and focus ring on the board below repaints in place."
|
|
26
|
-
},
|
|
27
|
-
"bar": {
|
|
28
|
-
"title": "Theme",
|
|
29
|
-
"description": "The chips set the --primary seed inside a scope. Nothing here edits a component, forks a stylesheet or overrides a role.",
|
|
30
|
-
"paletteLabel": "Palette",
|
|
31
|
-
"cornerLabel": "Corner radius",
|
|
32
|
-
"customLabel": "Custom seed",
|
|
33
|
-
"customHint": "Any hex. The hover, pressed, border, focus and link steps all derive from it.",
|
|
34
|
-
"identityNote": "The identity colour deliberately stays where it is: a tenant that changes its action colour does not retint its logo."
|
|
35
|
-
},
|
|
36
|
-
"palette": {
|
|
37
|
-
"godx": "GoDX",
|
|
38
|
-
"indigo": "Indigo",
|
|
39
|
-
"teal": "Teal",
|
|
40
|
-
"amber": "Amber",
|
|
41
|
-
"rose": "Rose",
|
|
42
|
-
"custom": "Custom"
|
|
43
|
-
},
|
|
44
|
-
"corner": {
|
|
45
|
-
"sharp": "Sharp",
|
|
46
|
-
"default": "Default",
|
|
47
|
-
"soft": "Soft"
|
|
48
|
-
},
|
|
49
|
-
"tabs": {
|
|
50
|
-
"components": "Components",
|
|
51
|
-
"dashboard": "Dashboard"
|
|
52
|
-
},
|
|
53
|
-
"form": {
|
|
54
|
-
"email": "Work email",
|
|
55
|
-
"emailHint": "Release notices only.",
|
|
56
|
-
"emailPlaceholder": "you@ops.example.jp",
|
|
57
|
-
"handle": "Handle",
|
|
58
|
-
"regions": "Regions",
|
|
59
|
-
"regionsPlaceholder": "Select regions",
|
|
60
|
-
"regionsEmpty": "No region selected yet.",
|
|
61
|
-
"labels": "Labels",
|
|
62
|
-
"labelsPlaceholder": "Add a label",
|
|
63
|
-
"plan": "Plan",
|
|
64
|
-
"releaseDate": "Release date",
|
|
65
|
-
"channels": "Notification channels",
|
|
66
|
-
"cadence": "Cadence",
|
|
67
|
-
"density": "Row density",
|
|
68
|
-
"autoDeploy": "Deploy on merge",
|
|
69
|
-
"autoDeployHint": "A green pipeline promotes to staging without asking.",
|
|
70
|
-
"freeze": "Release freeze",
|
|
71
|
-
"budget": "Error budget · {value}",
|
|
72
|
-
"syncing": "Syncing the release ledger"
|
|
73
|
-
},
|
|
74
|
-
"plan": {
|
|
75
|
-
"starter": "Starter",
|
|
76
|
-
"standard": "Standard",
|
|
77
|
-
"scale": "Scale"
|
|
78
|
-
},
|
|
79
|
-
"channel": {
|
|
80
|
-
"email": "Email",
|
|
81
|
-
"escalation": "Escalate to the on-call rotation when a release stays in review for longer than one working day, including weekends and public holidays in the owning region",
|
|
82
|
-
"escalationHint": "Sent to the rotation, never to an individual.",
|
|
83
|
-
"pager": "Pager"
|
|
84
|
-
},
|
|
85
|
-
"cadence": {
|
|
86
|
-
"daily": "Daily",
|
|
87
|
-
"weekly": "Weekly",
|
|
88
|
-
"manual": "Manual"
|
|
89
|
-
},
|
|
90
|
-
"density": {
|
|
91
|
-
"compact": "Compact",
|
|
92
|
-
"default": "Default",
|
|
93
|
-
"comfortable": "Comfortable"
|
|
94
|
-
},
|
|
95
|
-
"steps": {
|
|
96
|
-
"caption": "Release progress",
|
|
97
|
-
"finished": "Finished",
|
|
98
|
-
"finishedHint": "Artefacts signed and archived.",
|
|
99
|
-
"inProcess": "In process",
|
|
100
|
-
"waiting": "Waiting",
|
|
101
|
-
"waitingHint": "Blocked on the contrast audit for the new seed."
|
|
102
|
-
},
|
|
103
|
-
"progress": {
|
|
104
|
-
"rollout": "Rollout · {value}",
|
|
105
|
-
"quota": "Build minutes · {value}",
|
|
106
|
-
"done": "Done"
|
|
107
|
-
},
|
|
108
|
-
"legend": {
|
|
109
|
-
"failed": "Failed",
|
|
110
|
-
"review": "In review",
|
|
111
|
-
"shipped": "Shipped"
|
|
112
|
-
},
|
|
113
|
-
"status": {
|
|
114
|
-
"caption": "Status marks",
|
|
115
|
-
"success": "Success",
|
|
116
|
-
"error": "Error",
|
|
117
|
-
"default": "Default",
|
|
118
|
-
"processing": "Processing",
|
|
119
|
-
"warning": "Warning",
|
|
120
|
-
"seed": "Seed"
|
|
121
|
-
},
|
|
122
|
-
"action": {
|
|
123
|
-
"primary": "Deploy",
|
|
124
|
-
"secondary": "Compare",
|
|
125
|
-
"outline": "Roll back",
|
|
126
|
-
"dashed": "Add stage",
|
|
127
|
-
"ghost": "Logs",
|
|
128
|
-
"deploying": "Deploying",
|
|
129
|
-
"discard": "Discard this release candidate"
|
|
130
|
-
},
|
|
131
|
-
"confirm": {
|
|
132
|
-
"trigger": "Delete release",
|
|
133
|
-
"title": "Delete this release?",
|
|
134
|
-
"description": "The artefacts stay in the registry. The release record and its approvals do not.",
|
|
135
|
-
"cancel": "Keep",
|
|
136
|
-
"ok": "Delete"
|
|
137
|
-
},
|
|
138
|
-
"avatars": {
|
|
139
|
-
"caption": "12 reviewers"
|
|
140
|
-
},
|
|
141
|
-
"rating": {
|
|
142
|
-
"1": "Unusable",
|
|
143
|
-
"2": "Rough",
|
|
144
|
-
"3": "Acceptable",
|
|
145
|
-
"4": "Good",
|
|
146
|
-
"5": "Shippable"
|
|
147
|
-
},
|
|
148
|
-
"otp": {
|
|
149
|
-
"title": "Verify this device",
|
|
150
|
-
"description": "Enter the six-digit code from your authenticator app.",
|
|
151
|
-
"field": "Verification code",
|
|
152
|
-
"verify": "Verify"
|
|
153
|
-
},
|
|
154
|
-
"signup": {
|
|
155
|
-
"title": "Create an account",
|
|
156
|
-
"description": "One account covers every environment you have been granted.",
|
|
157
|
-
"email": "Work email",
|
|
158
|
-
"password": "Password",
|
|
159
|
-
"submit": "Create account",
|
|
160
|
-
"or": "or",
|
|
161
|
-
"sso": "Continue with single sign-on",
|
|
162
|
-
"passkey": "Continue with a passkey"
|
|
163
|
-
},
|
|
164
|
-
"notify": {
|
|
165
|
-
"title": "Notifications",
|
|
166
|
-
"longTitle": "Your invitation to the Platform Reliability and Release Governance working group is waiting for a response",
|
|
167
|
-
"longMeta": "2026-09-12 09:12 UTC · expires in 3 days",
|
|
168
|
-
"open": "Open",
|
|
169
|
-
"bareTitle": "Invoice issued"
|
|
170
|
-
},
|
|
171
|
-
"qr": {
|
|
172
|
-
"caption": "Authenticator enrolment",
|
|
173
|
-
"label": "Two-factor authentication setup code",
|
|
174
|
-
"manualKey": "Manual setup key"
|
|
175
|
-
},
|
|
176
|
-
"welcome": {
|
|
177
|
-
"title": "Start from one hex",
|
|
178
|
-
"description": "Give the generator a brand colour and it writes the seed file, measures every contrast pair and refuses the ones that miss.",
|
|
179
|
-
"dismiss": "Dismiss"
|
|
180
|
-
},
|
|
181
|
-
"chat": {
|
|
182
|
-
"assistant": "Assistant",
|
|
183
|
-
"sent": "09:41",
|
|
184
|
-
"answer": "The seed is scoped to the board, so the rest of the document keeps its own palette.",
|
|
185
|
-
"bare": "And the focus ring?"
|
|
186
|
-
},
|
|
187
|
-
"thought": {
|
|
188
|
-
"label": "How the seed was applied",
|
|
189
|
-
"read": "Read the scope",
|
|
190
|
-
"readHint": "[data-godx-theme] on the board root",
|
|
191
|
-
"contrast": "Measure the pair",
|
|
192
|
-
"contrastBody": "Label on fill and fill on canvas, both themes, against WCAG 2.2 SC 1.4.3 and SC 1.4.11.",
|
|
193
|
-
"write": "Write the email fallback"
|
|
194
|
-
},
|
|
195
|
-
"carousel": {
|
|
196
|
-
"caption": "Shipped palettes"
|
|
197
|
-
},
|
|
198
|
-
"alert": {
|
|
199
|
-
"title": "Check",
|
|
200
|
-
"description": "The custom seed is applied as authored. Nothing lifts a light seed onto the dark spine, so a brand that has to read on both canvases needs a second value measured against the dark one.",
|
|
201
|
-
"okTitle": "Contrast verified"
|
|
202
|
-
},
|
|
203
|
-
"timeline": {
|
|
204
|
-
"seedApplied": "Seed applied",
|
|
205
|
-
"scope": "Board scope",
|
|
206
|
-
"contrastQueued": "Contrast sweep queued"
|
|
207
|
-
},
|
|
208
|
-
"dashboard": {
|
|
209
|
-
"releases": "Releases",
|
|
210
|
-
"releasesHint": "Rolling 30 days",
|
|
211
|
-
"revenue": "Recognised revenue",
|
|
212
|
-
"failureRate": "Change failure rate",
|
|
213
|
-
"failureHint": "Lower is better",
|
|
214
|
-
"seatsLabel": "Regions in scope",
|
|
215
|
-
"seats": {
|
|
216
|
-
"one": "{count} region",
|
|
217
|
-
"other": "{count} regions"
|
|
218
|
-
},
|
|
219
|
-
"mix": "Release mix",
|
|
220
|
-
"activity": "Recent activity",
|
|
221
|
-
"environment": "Environment",
|
|
222
|
-
"owner": "Owner",
|
|
223
|
-
"ledger": "Ledger reference",
|
|
224
|
-
"table": "Releases",
|
|
225
|
-
"tableHint": "Owners, regions and amounts are formatted for the active locale.",
|
|
226
|
-
"updated": "Updated {date}",
|
|
227
|
-
"rotate": "Rotate key"
|
|
228
|
-
},
|
|
229
|
-
"table": {
|
|
230
|
-
"id": "Release",
|
|
231
|
-
"owner": "Owner",
|
|
232
|
-
"region": "Region",
|
|
233
|
-
"ref": "Reference",
|
|
234
|
-
"status": "Status",
|
|
235
|
-
"amount": "Amount",
|
|
236
|
-
"noRef": "Not set"
|
|
237
|
-
},
|
|
238
|
-
"releaseStatus": {
|
|
239
|
-
"shipped": "Shipped",
|
|
240
|
-
"review": "In review",
|
|
241
|
-
"draft": "Draft",
|
|
242
|
-
"failed": "Failed"
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
"themeEditor": {
|
|
246
|
-
"title": "Theme editor",
|
|
247
|
-
"subtitle": "One seed colour in, a whole brand out, measured rather than asserted.",
|
|
248
|
-
"unreadable": {
|
|
249
|
-
"title": "The token stylesheet could not be read",
|
|
250
|
-
"description": "This page derives a brand from the canvas colours and ramp steps the document is painting, read from the live stylesheet. Neither could be read here, so nothing below it would be a measurement."
|
|
251
|
-
},
|
|
252
|
-
"order": {
|
|
253
|
-
"title": "Seed, then role, then scope, then instance",
|
|
254
|
-
"description": "Stop at the first level that does the job. Every level below the seed is a value that has stopped deriving, and nothing tells you when the brand moves past it."
|
|
255
|
-
},
|
|
256
|
-
"seed": {
|
|
257
|
-
"title": "1. Seed",
|
|
258
|
-
"description": "The brand's action colour: what a primary button is filled with. In most cases this is the whole theme.",
|
|
259
|
-
"label": "Brand seed",
|
|
260
|
-
"helper": "A six digit hex. Everything below derives from it and is measured against WCAG 2.2 AA.",
|
|
261
|
-
"presetLabel": "Edge cases",
|
|
262
|
-
"presetHelper": "Each of these produces an answer a well behaved blue hides.",
|
|
263
|
-
"presetPlaceholder": "A seed of your own",
|
|
264
|
-
"preset": {
|
|
265
|
-
"godx": "This package's own seed",
|
|
266
|
-
"blue": "An ordinary brand blue",
|
|
267
|
-
"very-light": "Near white: the fill cannot clear the light canvas",
|
|
268
|
-
"very-dark": "Near black: the dark seed runs to white",
|
|
269
|
-
"sunflower": "Sunflower: repoints the state steps in both themes"
|
|
270
|
-
},
|
|
271
|
-
"announce": {
|
|
272
|
-
"one": "Seed {hex}. Light {light}, dark {dark}. {pass} of {count} measured pair clears AA.",
|
|
273
|
-
"other": "Seed {hex}. Light {light}, dark {dark}. {pass} of {count} measured pairs clear AA."
|
|
274
|
-
},
|
|
275
|
-
"announceNoDark": "Seed {hex}. No lightness at this hue and saturation carries a readable fill on the dark canvas, so there is no dark theme to measure."
|
|
276
|
-
},
|
|
277
|
-
"derived": {
|
|
278
|
-
"title": "2. What the seed produces",
|
|
279
|
-
"description": "Read only, because these are results. Three roles per theme are written into the export; the rest derive from the primary in scope at the element that paints them, so writing them would pin them to this seed.",
|
|
280
|
-
"tableLabel": "Roles derived from the seed",
|
|
281
|
-
"column": {
|
|
282
|
-
"token": "Token",
|
|
283
|
-
"light": "Light",
|
|
284
|
-
"dark": "Dark",
|
|
285
|
-
"emitted": "In the export"
|
|
286
|
-
},
|
|
287
|
-
"written": "Written",
|
|
288
|
-
"derivedOnly": "Derives"
|
|
289
|
-
},
|
|
290
|
-
"contrast": {
|
|
291
|
-
"title": "3. Contrast",
|
|
292
|
-
"description": "Every pair the seed produces, measured with the package's own WCAG helper. A label on its fill owes 4.5:1 (SC 1.4.3); a fill on the canvas behind it owes 3:1 (SC 1.4.11).",
|
|
293
|
-
"tableLabel": "Measured contrast pairs",
|
|
294
|
-
"column": {
|
|
295
|
-
"pair": "Pair",
|
|
296
|
-
"measured": "Measured",
|
|
297
|
-
"threshold": "Needs",
|
|
298
|
-
"result": "Result"
|
|
299
|
-
},
|
|
300
|
-
"pair": {
|
|
301
|
-
"label-on-fill-light": "Primary label on fill, light",
|
|
302
|
-
"label-on-fill-dark": "Primary label on fill, dark",
|
|
303
|
-
"fill-on-canvas-light": "Primary fill on canvas, light",
|
|
304
|
-
"fill-on-canvas-dark": "Primary fill on canvas, dark",
|
|
305
|
-
"link-on-canvas-light": "Link ink on canvas, light",
|
|
306
|
-
"link-on-canvas-dark": "Link ink on canvas, dark"
|
|
307
|
-
},
|
|
308
|
-
"ratio": "{value}:1",
|
|
309
|
-
"pass": "Clears AA",
|
|
310
|
-
"fail": "Below AA"
|
|
311
|
-
},
|
|
312
|
-
"overrides": {
|
|
313
|
-
"title": "4. Per token overrides",
|
|
314
|
-
"description": "Below the seed on purpose. Reach for one only when the seed is right and a single token must differ.",
|
|
315
|
-
"costTitle": "What an override costs",
|
|
316
|
-
"costDescription": "A token set by hand stops following the seed. The next brand change moves everything derived and leaves this value behind, and no audit reports it.",
|
|
317
|
-
"labelTitle": "Label colour on the fill",
|
|
318
|
-
"labelHelper": "By default the label is chosen by the seed's own luminance, the same 0.179 threshold a runtime re-theme uses. Forcing it is the one override the generator has a flag for.",
|
|
319
|
-
"labelAuto": "Automatic",
|
|
320
|
-
"labelLight": "Light label",
|
|
321
|
-
"labelDark": "Dark label",
|
|
322
|
-
"darkTitle": "Dark seed lightness",
|
|
323
|
-
"darkHelper": "Contrast parity with the light theme puts it at {parity}. Hue and saturation are held either way; only lightness moves. An authored value is allowed to fail, and the table above is how it says so.",
|
|
324
|
-
"darkNoParity": "No lightness at this hue and saturation clears both floors, so there is no parity value to depart from.",
|
|
325
|
-
"darkReset": "Back to parity",
|
|
326
|
-
"darkAuthored": "Authored",
|
|
327
|
-
"darkParity": "At parity"
|
|
328
|
-
},
|
|
329
|
-
"export": {
|
|
330
|
-
"title": "5. Export",
|
|
331
|
-
"description": "Paste the first block into your own theme file and the second over the baked email palette, which no stylesheet can reach.",
|
|
332
|
-
"nameLabel": "Theme name",
|
|
333
|
-
"nameHelper": "Writes {name}.service.css and {name}.email.ts.",
|
|
334
|
-
"matches": "Identical to gen:brand",
|
|
335
|
-
"diverges": "No command emits this",
|
|
336
|
-
"divergesWhy": "The dark seed's lightness was authored here. The generator searches for parity and has no flag for it, so no command reproduces this file.",
|
|
337
|
-
"cssLabel": "Theme CSS for {name}",
|
|
338
|
-
"emailLabel": "Email palette for {name}",
|
|
339
|
-
"noDarkTitle": "This seed has no readable dark fill",
|
|
340
|
-
"noDarkDescription": "No lightness at this hue and saturation clears both 4.5:1 on its own label and 3:1 on the dark canvas. Desaturate the seed, or force the label above and look again."
|
|
341
|
-
},
|
|
342
|
-
"preview": {
|
|
343
|
-
"lightTitle": "Light",
|
|
344
|
-
"darkTitle": "Dark",
|
|
345
|
-
"seedIs": "Scoped to {hex}",
|
|
346
|
-
"tableLabel": "Invoice lines",
|
|
347
|
-
"column": {
|
|
348
|
-
"id": "Line",
|
|
349
|
-
"item": "Item",
|
|
350
|
-
"owner": "Owner",
|
|
351
|
-
"state": "State"
|
|
352
|
-
},
|
|
353
|
-
"state": {
|
|
354
|
-
"active": "Active",
|
|
355
|
-
"pending": "Pending"
|
|
356
|
-
},
|
|
357
|
-
"line": {
|
|
358
|
-
"licence": "Licence",
|
|
359
|
-
"support": "Support",
|
|
360
|
-
"setup": "Setup"
|
|
361
|
-
},
|
|
362
|
-
"action": {
|
|
363
|
-
"save": "Save",
|
|
364
|
-
"duplicate": "Duplicate",
|
|
365
|
-
"export": "Export",
|
|
366
|
-
"add": "Add line",
|
|
367
|
-
"dismiss": "Dismiss",
|
|
368
|
-
"delete": "Delete",
|
|
369
|
-
"details": "Details"
|
|
370
|
-
},
|
|
371
|
-
"badge": {
|
|
372
|
-
"brand": "Brand",
|
|
373
|
-
"success": "Paid",
|
|
374
|
-
"warning": "Due soon",
|
|
375
|
-
"destructive": "Overdue",
|
|
376
|
-
"info": "Draft",
|
|
377
|
-
"neutral": "Archived"
|
|
378
|
-
},
|
|
379
|
-
"alert": {
|
|
380
|
-
"title": "Billing address is incomplete",
|
|
381
|
-
"description": "Invoices cannot be issued until it is filled in.",
|
|
382
|
-
"link": "Back to the seed"
|
|
383
|
-
},
|
|
384
|
-
"field": {
|
|
385
|
-
"org": "Organisation",
|
|
386
|
-
"orgHelper": "Appears on every issued document.",
|
|
387
|
-
"plan": "Plan",
|
|
388
|
-
"tax": "Include tax",
|
|
389
|
-
"mail": "Send automatically"
|
|
390
|
-
},
|
|
391
|
-
"plan": {
|
|
392
|
-
"starter": "Starter",
|
|
393
|
-
"pro": "Pro",
|
|
394
|
-
"scale": "Scale"
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
},
|
|
398
|
-
"marketingShowcase": {
|
|
399
|
-
"brand": {
|
|
400
|
-
"name": "Example Works",
|
|
401
|
-
"suffix": "Approvals"
|
|
402
|
-
},
|
|
403
|
-
"nav": {
|
|
404
|
-
"label": "Primary",
|
|
405
|
-
"product": "Product",
|
|
406
|
-
"solutions": "Solutions",
|
|
407
|
-
"pricing": "Pricing",
|
|
408
|
-
"docs": "Docs",
|
|
409
|
-
"signIn": "Sign in",
|
|
410
|
-
"getStarted": "Start free",
|
|
411
|
-
"open": "Open navigation",
|
|
412
|
-
"title": "Navigation",
|
|
413
|
-
"description": "Every destination in the bar, including the two that fold away at phone width.",
|
|
414
|
-
"close": "Close navigation"
|
|
415
|
-
},
|
|
416
|
-
"hero": {
|
|
417
|
-
"eyebrow": "Approval workflow",
|
|
418
|
-
"title": "Every approval, in one auditable trail.",
|
|
419
|
-
"lead": "Route an invoice, a purchase order or a contract to the approver who owns it, keep the evidence beside the decision, and export the year in one file.",
|
|
420
|
-
"primary": "Start free",
|
|
421
|
-
"secondary": "Book a walkthrough",
|
|
422
|
-
"trust": "No card. 14 days. Cancel inside the product.",
|
|
423
|
-
"panelTitle": "Tonight's queue",
|
|
424
|
-
"panelNote": "Live figures from one tenant, refreshed on approval.",
|
|
425
|
-
"pending": "Waiting on you",
|
|
426
|
-
"cleared": "Cleared today",
|
|
427
|
-
"median": "Median decision",
|
|
428
|
-
"medianValue": "4h 12m",
|
|
429
|
-
"endpointLabel": "Webhook endpoint",
|
|
430
|
-
"endpointNote": "Copied verbatim into your gateway. It has no break opportunity in it."
|
|
431
|
-
},
|
|
432
|
-
"logos": {
|
|
433
|
-
"title": "Teams that left email approvals behind",
|
|
434
|
-
"caption": "The track ships PAUSED, and the control beside it is a real button in the tab order.",
|
|
435
|
-
"marqueeLabel": "Customer wordmarks"
|
|
436
|
-
},
|
|
437
|
-
"features": {
|
|
438
|
-
"title": "What it does",
|
|
439
|
-
"lead": "Six capabilities, and not one of them is a new component.",
|
|
440
|
-
"routingTitle": "Routing",
|
|
441
|
-
"routingBody": "A rule reads the amount, the cost centre and the vendor, then picks the approver who owns that combination.",
|
|
442
|
-
"auditTitle": "An audit trail your accountant can read without asking anyone what a status code means",
|
|
443
|
-
"residencyTitle": "Residency",
|
|
444
|
-
"residencyBody": "Every document and every derived index stays in the Tokyo region.",
|
|
445
|
-
"evidenceTitle": "承認の証跡",
|
|
446
|
-
"evidenceBody": "決裁の理由と添付を同じ行に残します。Evidence and decision are one record, not two systems.",
|
|
447
|
-
"webhookTitle": "Webhooks",
|
|
448
|
-
"webhookBody": "Each endpoint carries an identifier with nowhere to break, and the card holds it:",
|
|
449
|
-
"ssoTitle": "SSO",
|
|
450
|
-
"ssoBody": "SAML and OIDC, with group mapping onto approval roles."
|
|
451
|
-
},
|
|
452
|
-
"testimonials": {
|
|
453
|
-
"title": "What the first year looked like",
|
|
454
|
-
"label": "Customer quotes",
|
|
455
|
-
"ratingLabel": "Rating",
|
|
456
|
-
"q1": "We closed the quarter without a single approval sitting in somebody's inbox, the auditor asked for one export instead of eleven, and the finance team stopped keeping a private spreadsheet to track what had actually been signed.",
|
|
457
|
-
"a1": "山口 佳奈",
|
|
458
|
-
"r1": "Controller, Aoba Foods",
|
|
459
|
-
"q2": "It stopped the arguments.",
|
|
460
|
-
"a2": "Dana Whitfield",
|
|
461
|
-
"r2": "Head of Procurement, Meridian Health",
|
|
462
|
-
"q3": "Chúng tôi chuyển 240 quy trình phê duyệt sang đây trong sáu tuần, và không mất một chứng từ nào.",
|
|
463
|
-
"a3": "Trần Minh Khoa",
|
|
464
|
-
"r3": "Finance Lead, Truong An"
|
|
465
|
-
},
|
|
466
|
-
"pricing": {
|
|
467
|
-
"title": "Pricing",
|
|
468
|
-
"lead": "Per approver, per month. The yearly cycle bills once.",
|
|
469
|
-
"cycleLabel": "Billing cycle",
|
|
470
|
-
"monthly": "Monthly",
|
|
471
|
-
"yearly": "Yearly",
|
|
472
|
-
"perMonth": "per approver / month",
|
|
473
|
-
"billedYearly": "billed once a year",
|
|
474
|
-
"popular": "Most chosen",
|
|
475
|
-
"saving": "2 months free",
|
|
476
|
-
"fresh": "New",
|
|
477
|
-
"quoted": "Quoted",
|
|
478
|
-
"quotedNote": "Priced against your approver count and your residency region.",
|
|
479
|
-
"starterName": "Starter",
|
|
480
|
-
"starterNote": "One approval chain, one region.",
|
|
481
|
-
"teamName": "Team",
|
|
482
|
-
"teamNote": "Parallel chains, delegation, and the evidence export.",
|
|
483
|
-
"enterpriseName": "エンタープライズ",
|
|
484
|
-
"enterpriseNote": "専用テナント · SSO · 監査窓口。Dedicated tenant, SSO, named auditor contact.",
|
|
485
|
-
"cta": "Start free",
|
|
486
|
-
"ctaQuote": "Talk to us",
|
|
487
|
-
"featChains": "Approval chains",
|
|
488
|
-
"featDelegation": "Delegation and out-of-office",
|
|
489
|
-
"featExport": "One-file audit export",
|
|
490
|
-
"featSso": "SAML and OIDC",
|
|
491
|
-
"featResidency": "Choice of residency region",
|
|
492
|
-
"featSupport": "Named support contact",
|
|
493
|
-
"limitedChains": "One chain only",
|
|
494
|
-
"limitedSupport": "Business hours"
|
|
495
|
-
},
|
|
496
|
-
"cta": {
|
|
497
|
-
"title": "Put one approval chain through it this week",
|
|
498
|
-
"lead": "Import a chain from a spreadsheet, send three real approvals through it, and keep the export.",
|
|
499
|
-
"primary": "Start free",
|
|
500
|
-
"secondary": "Book a walkthrough",
|
|
501
|
-
"note": "Sales replies within one business day, Tokyo time."
|
|
502
|
-
},
|
|
503
|
-
"footer": {
|
|
504
|
-
"label": "Footer",
|
|
505
|
-
"product": "Product",
|
|
506
|
-
"company": "Company",
|
|
507
|
-
"legal": "Legal",
|
|
508
|
-
"contact": "Contact",
|
|
509
|
-
"featuresLink": "Features",
|
|
510
|
-
"pricingLink": "Pricing",
|
|
511
|
-
"changelog": "Changelog",
|
|
512
|
-
"status": "Status",
|
|
513
|
-
"about": "About",
|
|
514
|
-
"careers": "Careers",
|
|
515
|
-
"terms": "Terms",
|
|
516
|
-
"privacy": "Privacy",
|
|
517
|
-
"security": "Security",
|
|
518
|
-
"subprocessors": "Subprocessors",
|
|
519
|
-
"accessibility": "Accessibility statement",
|
|
520
|
-
"salesLine": "Sales",
|
|
521
|
-
"supportLine": "Support",
|
|
522
|
-
"addressLabel": "Registered office",
|
|
523
|
-
"address": "Chiyoda, Tokyo",
|
|
524
|
-
"rights": "Example Works. A fictional company, for documentation only."
|
|
525
|
-
}
|
|
526
|
-
},
|
|
527
|
-
"showcase": {
|
|
528
|
-
"pagination": {
|
|
529
|
-
"recordCount": {
|
|
530
|
-
"one": "{count} record",
|
|
531
|
-
"other": "{count} records"
|
|
532
|
-
},
|
|
533
|
-
"loadMore": {
|
|
534
|
-
"one": "Load {count} more",
|
|
535
|
-
"other": "Load {count} more"
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
"flexMeasure": {
|
|
539
|
-
"title": "measure — full-bleed outside, a measured column inside",
|
|
540
|
-
"lead": "A band is a <section> carrying the edge-to-edge paint around one Flex that measure centres and caps at --page-measure-*. The gutter stays pad's job: measure adds none. narrow (42rem) and medium (48rem) are reading measures; wide (72rem) is the marketing one."
|
|
541
|
-
},
|
|
542
|
-
"tagInput": {
|
|
543
|
-
"longIdTitle": "Long identifiers and +N",
|
|
544
|
-
"ledgerLabel": "Ledger ID",
|
|
545
|
-
"ledgerHelper": "A 71-character identifier still stays inside the control"
|
|
546
|
-
},
|
|
547
|
-
"select": {
|
|
548
|
-
"createTitle": "Tags: create row, onCreate and case-insensitive matching",
|
|
549
|
-
"createDescription": "Typed text that matches no option is offered as an explicit “Create” row. onCreate reports only invented text, never an option id. Typing “bug” finds “Bug” instead of creating a duplicate (caseSensitive restores exact matching). Unlike antd, the create row is labelled and text longer than 12 characters is refused through allowCreate. While you type, the create row (or an option that exactly matches) is the first and active row, so Enter never takes off a tag you already picked; also unlike antd, that exact match is lifted to the top.",
|
|
550
|
-
"createField": "Labels",
|
|
551
|
-
"createdHelper": "Created in this session: {list}",
|
|
552
|
-
"createdNone": "Nothing created yet"
|
|
553
|
-
},
|
|
554
|
-
"colorPicker": {
|
|
555
|
-
"presetsTitle": "Tag colour from a palette",
|
|
556
|
-
"presetsDescription": "presets — fixed swatch groups under the picker; each group collapses, and the free picker stays available.",
|
|
557
|
-
"paletteLabel": "Label colour",
|
|
558
|
-
"recommendedGroup": "Recommended",
|
|
559
|
-
"recentGroup": "Recently used",
|
|
560
|
-
"presetsOnlyTitle": "Palette only",
|
|
561
|
-
"presetsOnlyDescription": "panelRender returns only Presets — people pick from the palette and cannot type an arbitrary hex.",
|
|
562
|
-
"tagColorLabel": "Tag colour",
|
|
563
|
-
"tagColorHelper": "Arrow keys move between swatches; the selected one is announced."
|
|
564
|
-
},
|
|
565
|
-
"splitPaneStackOrder": {
|
|
566
|
-
"title": "stackOrder — the aside first when the panes stack",
|
|
567
|
-
"lead": "stackOrder=\"aside-first\" puts the aside above main once the pane is too narrow to split, and first in the DOM, so Tab reaches it first too. Wide enough to split, it sits in the trailing column exactly as it does by default. The embed below is narrower than the split width, so the properties card sits above the thread.",
|
|
568
|
-
"propertiesTitle": "Properties",
|
|
569
|
-
"status": "Status",
|
|
570
|
-
"statusValue": "In progress",
|
|
571
|
-
"assignee": "Assignee",
|
|
572
|
-
"threadTitle": "Comments",
|
|
573
|
-
"threadLead": "Long threads no longer push the properties below the fold on a phone."
|
|
574
|
-
}
|
|
575
|
-
},
|
|
576
|
-
"serviceLauncherShowcase": {
|
|
577
|
-
"page": {
|
|
578
|
-
"title": "ServiceLauncherCard",
|
|
579
|
-
"subtitle": "Tiles for an organization's internal application list — available, restricted, suspended, archived, loading, and catalog entry."
|
|
580
|
-
},
|
|
581
|
-
"status": {
|
|
582
|
-
"available": "Available",
|
|
583
|
-
"active": "Active",
|
|
584
|
-
"maintenance": "Under maintenance",
|
|
585
|
-
"stopped": "Stopped",
|
|
586
|
-
"adminOnly": "Admin only",
|
|
587
|
-
"preparing": "Preparing",
|
|
588
|
-
"archived": "Archived",
|
|
589
|
-
"unapplied": "Not requested",
|
|
590
|
-
"noPermission": "No permission",
|
|
591
|
-
"attentionRequired": "Attention required"
|
|
592
|
-
},
|
|
593
|
-
"action": {
|
|
594
|
-
"openService": "Open service",
|
|
595
|
-
"open": "Open",
|
|
596
|
-
"viewStatus": "View status",
|
|
597
|
-
"viewHistory": "View history",
|
|
598
|
-
"checkPermissions": "Check permissions",
|
|
599
|
-
"openSettings": "Open settings",
|
|
600
|
-
"viewArchive": "View archive",
|
|
601
|
-
"openRequestForm": "Open request form",
|
|
602
|
-
"openList": "Open the list",
|
|
603
|
-
"openServiceEnglish": "Open service"
|
|
604
|
-
},
|
|
605
|
-
"sections": {
|
|
606
|
-
"basics": {
|
|
607
|
-
"heading": "1 · Basics · services you can use",
|
|
608
|
-
"why": "Icon, name, status, description, identifier, action. The status copy always belongs to the consumer — the component only decides what the Badge's tone means.",
|
|
609
|
-
"attendance": {
|
|
610
|
-
"title": "Attendance management",
|
|
611
|
-
"description": "Manage clock-in/out, shifts, and leave requests in one workspace."
|
|
612
|
-
},
|
|
613
|
-
"expense": {
|
|
614
|
-
"title": "Expense reimbursement",
|
|
615
|
-
"description": "Handles everything from receipt submission and approval to journal-entry sync."
|
|
616
|
-
},
|
|
617
|
-
"meetingRoom": {
|
|
618
|
-
"title": "Meeting room booking",
|
|
619
|
-
"description": "Book meeting rooms and equipment for each site."
|
|
620
|
-
}
|
|
621
|
-
},
|
|
622
|
-
"statusTones": {
|
|
623
|
-
"heading": "2 · All 6 statusTone values",
|
|
624
|
-
"why": "success / warning / destructive / info / neutral / muted. The tone only decides what the Badge means — the copy, the judgment, and whether the action is allowed all come from the consumer.",
|
|
625
|
-
"mail": {
|
|
626
|
-
"title": "Internal mail",
|
|
627
|
-
"description": "Manage mailboxes, distribution lists, and shared signatures."
|
|
628
|
-
},
|
|
629
|
-
"fileShare": {
|
|
630
|
-
"title": "File sharing",
|
|
631
|
-
"description": "Handles department folders and external share links."
|
|
632
|
-
},
|
|
633
|
-
"dataSync": {
|
|
634
|
-
"title": "Data integration platform",
|
|
635
|
-
"description": "Manages data-sync jobs with external systems."
|
|
636
|
-
},
|
|
637
|
-
"iam": {
|
|
638
|
-
"title": "Access management",
|
|
639
|
-
"description": "Review roles, two-factor authentication policy, and audit events."
|
|
640
|
-
},
|
|
641
|
-
"integrations": {
|
|
642
|
-
"title": "Connected apps",
|
|
643
|
-
"description": "Configure third-party integration connections and scopes."
|
|
644
|
-
},
|
|
645
|
-
"legacyKb": {
|
|
646
|
-
"title": "Legacy knowledge base",
|
|
647
|
-
"description": "Keeps operating procedures through fiscal year 2024 in read-only storage."
|
|
648
|
-
}
|
|
649
|
-
},
|
|
650
|
-
"disabledReason": {
|
|
651
|
-
"heading": "3 · disabledReason · the reason an action doesn't work comes before the action",
|
|
652
|
-
"why": "A disabled button conveys no 'why' at all. That's why the reason is placed before the action in DOM order (WCAG 2.2 · 1.3.2), and the tile carries data-unavailable so its medallion recedes. disabledReason does not disable the button — that stays the consumer's own Button prop.",
|
|
653
|
-
"inventory": {
|
|
654
|
-
"title": "Inventory management",
|
|
655
|
-
"description": "Manage inventory, stock movements, and physical counts by site.",
|
|
656
|
-
"reason": "This department's usage request has not been approved yet."
|
|
657
|
-
},
|
|
658
|
-
"contracts": {
|
|
659
|
-
"title": "Contract management",
|
|
660
|
-
"description": "Handles contract storage, deadline notifications, and e-signature requests.",
|
|
661
|
-
"reason": "Viewing requires a Legal department role. Apply through the IT help desk."
|
|
662
|
-
},
|
|
663
|
-
"analytics": {
|
|
664
|
-
"title": "Analytics platform",
|
|
665
|
-
"description": "Provides company-wide dashboards and data marts.",
|
|
666
|
-
"reason": "This service has been suspended by an organization administrator."
|
|
667
|
-
}
|
|
668
|
-
},
|
|
669
|
-
"loadingCatalog": {
|
|
670
|
-
"heading": "4 · Loading state and catalog entry",
|
|
671
|
-
"why": "ServiceLauncherCardSkeleton is the initial placeholder with the same skeleton, requires a label, carries aria-busy, and deliberately never opens a live region. ServiceCatalogCta is the companion tile you place alongside it only when a real additional entry point exists, and it accepts a glyph other than the default Plus.",
|
|
672
|
-
"skeletonLabel": "Loading service",
|
|
673
|
-
"addApp": {
|
|
674
|
-
"title": "Add an app"
|
|
675
|
-
},
|
|
676
|
-
"allApps": {
|
|
677
|
-
"title": "View all internal apps"
|
|
678
|
-
}
|
|
679
|
-
},
|
|
680
|
-
"edgeCases": {
|
|
681
|
-
"heading": "5 · Touching the edges · a 3-line name, no description, a long hostname that won't break",
|
|
682
|
-
"why": "A tidy example never shows where a tile breaks. This is the side that breaks: a name that wraps to 3 lines sits next to a 2-word name in the same row, a tile with no description sits beside one that has one, and a hostname with no whitespace tries to stretch the column. If it looks unsightly, this section is doing its job — what has to hold up is the component, not the sample data.",
|
|
683
|
-
"hrPortal": {
|
|
684
|
-
"title": "Global HR information platform · Employee self-service portal (Asia-Pacific)",
|
|
685
|
-
"description": "An integrated workspace that centrally manages HR master data, attendance, payroll, and performance reviews."
|
|
686
|
-
},
|
|
687
|
-
"dailyReport": {
|
|
688
|
-
"title": "Daily report"
|
|
689
|
-
},
|
|
690
|
-
"warningConsole": {
|
|
691
|
-
"title": "Global Workforce Identity & Entitlement Administration Console",
|
|
692
|
-
"description": "Review pending entitlement requests before the next access certification.",
|
|
693
|
-
"reason": "Your organization has no approved request for this service yet."
|
|
694
|
-
}
|
|
695
|
-
},
|
|
696
|
-
"minimalTiles": {
|
|
697
|
-
"heading": "6 · Minimal tiles",
|
|
698
|
-
"why": "Only icon, title, and action are required. Omit statusLabel and the whole Badge row disappears; omit description and metadata too and the skeleton still holds — compare its height with the fully loaded tile next to it.",
|
|
699
|
-
"wiki": {
|
|
700
|
-
"title": "Internal wiki"
|
|
701
|
-
},
|
|
702
|
-
"contact": {
|
|
703
|
-
"title": "Support contact",
|
|
704
|
-
"description": "Internal system inquiries are accepted here."
|
|
705
|
-
},
|
|
706
|
-
"calendar": {
|
|
707
|
-
"title": "Company-wide calendar",
|
|
708
|
-
"description": "Shares company-wide events, holidays, and site-specific schedules.",
|
|
709
|
-
"reason": "Published as read-only."
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
"logo": {
|
|
713
|
-
"heading": "7 · logo · an uploaded logo, and the services that have none",
|
|
714
|
-
"why": "logo is a URL to an image the administrator uploaded, and it only replaces icon when it actually loads. icon stays required — a freshly created service has no logo, and a service whose URL now 404s has none either. A broken image never enters the DOM. The image box is the same 20px as the glyph (--card-service-launcher-icon-glyph-size), and its aspect ratio is preserved with object-fit: contain.",
|
|
715
|
-
"uploaded": {
|
|
716
|
-
"title": "Attendance management",
|
|
717
|
-
"description": "A service with an uploaded logo. The medallion shows the logo instead of icon."
|
|
718
|
-
},
|
|
719
|
-
"missing": {
|
|
720
|
-
"title": "Attendance management (no logo set)",
|
|
721
|
-
"description": "The same tile without a logo passed. icon stays as-is, and the medallion size doesn't change either."
|
|
722
|
-
},
|
|
723
|
-
"broken": {
|
|
724
|
-
"title": "Data integration platform (logo 404)",
|
|
725
|
-
"description": "logo_url is set but the file doesn't exist. The tile doesn't go blank — it falls back to icon."
|
|
726
|
-
},
|
|
727
|
-
"wideMark": {
|
|
728
|
-
"title": "Expense reimbursement",
|
|
729
|
-
"description": "A wide 240×96 wordmark logo. Because of contain it's never cropped, and the box width stays the same as the glyph's."
|
|
730
|
-
},
|
|
731
|
-
"withReason": {
|
|
732
|
-
"title": "Access management",
|
|
733
|
-
"description": "logo and disabledReason are orthogonal. State is conveyed by the Badge and the reason text — we never let another company's brand color carry that meaning on our own.",
|
|
734
|
-
"reason": "Viewing requires an administrator role."
|
|
735
|
-
},
|
|
736
|
-
"emptyString": {
|
|
737
|
-
"title": "Internal mail",
|
|
738
|
-
"description": "An empty-string logo. It's treated the same as not set, and issues no wasted request either."
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
}
|
|
742
|
-
},
|
|
743
|
-
"caimono": {
|
|
744
|
-
"brand": "Caimono",
|
|
745
|
-
"eyebrow": "Understand the price. Choose where to buy.",
|
|
746
|
-
"demo": "Interactive prototype. Products, merchants and prices are illustrative.",
|
|
747
|
-
"synthetic": "Illustrative product",
|
|
748
|
-
"product": "Aero H1 Wireless",
|
|
749
|
-
"productMeta": "Model AERO-H1 · {count} item · excludes H2 and bundles",
|
|
750
|
-
"variant": "Colour to compare",
|
|
751
|
-
"black": "Black · H1-BK",
|
|
752
|
-
"cream": "Cream · H1-CR",
|
|
753
|
-
"condition": "Condition",
|
|
754
|
-
"new": "New",
|
|
755
|
-
"used": "Used",
|
|
756
|
-
"lowest": "Lowest eligible total",
|
|
757
|
-
"noEligible": "No eligible price",
|
|
758
|
-
"incl": "Includes tax and known domestic delivery fees",
|
|
759
|
-
"couponActive": "Hako coupon deducted with your confirmation",
|
|
760
|
-
"couponInactive": "No coupon or reward points deducted",
|
|
761
|
-
"bestDetails": "View lowest offer",
|
|
762
|
-
"priceAlert": "Set price alert",
|
|
763
|
-
"save": "Save product",
|
|
764
|
-
"saved": "Product saved",
|
|
765
|
-
"offers": "Compare merchants",
|
|
766
|
-
"snapshot": "Illustrative data as of {date} (Japan time)",
|
|
767
|
-
"findShop": "Find a merchant in this table",
|
|
768
|
-
"searchPlaceholder": "Merchant name…",
|
|
769
|
-
"deliverTo": "Domestic delivery to",
|
|
770
|
-
"Tokyo": "Tokyo",
|
|
771
|
-
"Osaka": "Osaka",
|
|
772
|
-
"sort": "Sort by",
|
|
773
|
-
"totalSort": "Total: lowest first",
|
|
774
|
-
"deliverySort": "Delivery: soonest first",
|
|
775
|
-
"free": "Free domestic delivery",
|
|
776
|
-
"stockOnly": "In stock only",
|
|
777
|
-
"fast": "Delivery within {duration}",
|
|
778
|
-
"reset": "Clear filters",
|
|
779
|
-
"counts": "Offers: {total} · Eligible for ranking: {eligible}",
|
|
780
|
-
"shop": "Merchant",
|
|
781
|
-
"cash": "Total payable",
|
|
782
|
-
"delivery": "Delivery & warranty",
|
|
783
|
-
"action": "Action",
|
|
784
|
-
"breakdown": "Price breakdown",
|
|
785
|
-
"detailFor": "Price breakdown — {merchant}",
|
|
786
|
-
"best": "Lowest total",
|
|
787
|
-
"observed": "Observed {date}",
|
|
788
|
-
"itemValue": "Item: {amount}",
|
|
789
|
-
"shippingValue": "Domestic delivery: {amount}",
|
|
790
|
-
"discountValue": "Eligible coupon: −{amount}",
|
|
791
|
-
"unknownTotal": "Total cannot be calculated",
|
|
792
|
-
"unknown": "Unknown",
|
|
793
|
-
"eta": "Estimated {duration} (demo)",
|
|
794
|
-
"pointsValue": "Reward points: {count} · not deducted",
|
|
795
|
-
"stale": "Old price — recheck required",
|
|
796
|
-
"outStock": "Out of stock",
|
|
797
|
-
"needsShipping": "Delivery fee needs confirmation",
|
|
798
|
-
"inStock": "In stock",
|
|
799
|
-
"manufacturer": "Manufacturer warranty (demo)",
|
|
800
|
-
"sellerWarranty": "Merchant warranty (demo)",
|
|
801
|
-
"noResultTitle": "No matching merchants",
|
|
802
|
-
"noResultBody": "Try clearing filters or changing the merchant name. Missing data does not mean a zero price.",
|
|
803
|
-
"limitNote": "Only matching models, colours, conditions and markets with known totals are ranked. Confirm the final price with the merchant.",
|
|
804
|
-
"couponTitle": "Have a Hako coupon?",
|
|
805
|
-
"couponLabel": "I checked my eligibility for the {amount} discount",
|
|
806
|
-
"couponHelp": "Illustrative new-account coupon for Hako Market only. Never enabled automatically.",
|
|
807
|
-
"expires": "Expires {date} (Japan time)",
|
|
808
|
-
"whyRank": "How offers are ranked",
|
|
809
|
-
"rule1": "Same variant, condition and market.",
|
|
810
|
-
"rule2": "Fresh prices, available stock and complete fees come first.",
|
|
811
|
-
"rule3": "Commission does not determine ranking.",
|
|
812
|
-
"kaimiBody": "Reward points are not an immediate cash discount. Check the total first, then the conditions and expiry of points.",
|
|
813
|
-
"buyAssist": "Need help buying from Japan?",
|
|
814
|
-
"buyAssistBody": "Service fees, international shipping and unknown charges are separate. Domestic cost is not the landed cost.",
|
|
815
|
-
"quote": "View quote structure",
|
|
816
|
-
"historyTitle": "Lowest price over time",
|
|
817
|
-
"historyScope": "Illustrative data · black / new / Tokyo · before coupons · independent of current filters",
|
|
818
|
-
"period": "History period",
|
|
819
|
-
"historyMetric": "Known total, before reward points",
|
|
820
|
-
"date": "Sample date",
|
|
821
|
-
"price": "Sample total",
|
|
822
|
-
"reviewTitle": "Choose the right product before the lowest price",
|
|
823
|
-
"editorial": "Editorial reviews",
|
|
824
|
-
"editorialBody": "This illustrative product has not been tested. No test score or verified badge is shown.",
|
|
825
|
-
"community": "Community reviews",
|
|
826
|
-
"communityBody": "No reviews yet. Merchant ratings are not product quality ratings.",
|
|
827
|
-
"specTitle": "Illustrative specifications",
|
|
828
|
-
"model": "Model",
|
|
829
|
-
"modelValue": "AERO-H1",
|
|
830
|
-
"connection": "Connection",
|
|
831
|
-
"wireless": "Wireless",
|
|
832
|
-
"unit": "Items per offer",
|
|
833
|
-
"market": "Market",
|
|
834
|
-
"japan": "Japan",
|
|
835
|
-
"disclosure": "Commercial transparency",
|
|
836
|
-
"disclosureText": "No affiliate links are connected in this prototype. A live service must disclose commissions near the table and label sponsored placements separately. This demo excludes prices older than {duration} from the lowest-price claim.",
|
|
837
|
-
"footerNote": "Prototype · No live shops, payments or notifications.",
|
|
838
|
-
"close": "Close",
|
|
839
|
-
"breakdownTitle": "Understand what you pay",
|
|
840
|
-
"breakdownNote": "Illustrative data. No transaction or merchant-site redirect.",
|
|
841
|
-
"item": "Item price",
|
|
842
|
-
"shipping": "Domestic delivery",
|
|
843
|
-
"fee": "Mandatory fees",
|
|
844
|
-
"discount": "Eligible coupon",
|
|
845
|
-
"points": "Expected reward points",
|
|
846
|
-
"notDeducted": "Reward points are not deducted from cash payable.",
|
|
847
|
-
"notRankedExplain": "This offer is not eligible for the lowest-total label. The original price remains visible to explain stale or incomplete data.",
|
|
848
|
-
"alertTitle": "Set your target price",
|
|
849
|
-
"alertBody": "This demo stores a threshold on this device only. It sends no emails or notifications.",
|
|
850
|
-
"alertScope": "AERO-H1 · {variant} · {condition} · {destination} · JPY",
|
|
851
|
-
"alertLabel": "Alert when the total is at most (JPY)",
|
|
852
|
-
"alertHelp": "Positive whole amount. Excludes personal coupons and reward points.",
|
|
853
|
-
"alertSave": "Save demo threshold",
|
|
854
|
-
"alertSaved": "Threshold saved on this device. No real notification has been created.",
|
|
855
|
-
"storageFail": "Browser storage is unavailable. Your change was not saved.",
|
|
856
|
-
"favoriteOn": "Product saved in this browser.",
|
|
857
|
-
"favoriteOff": "Product removed from saved items in this browser.",
|
|
858
|
-
"quoteTitle": "Buying assistance: a two-stage quote",
|
|
859
|
-
"quoteBody": "This is an explanation, not a service quote. Known costs and charges needing confirmation must remain separate.",
|
|
860
|
-
"domestic": "Selected domestic purchase cost",
|
|
861
|
-
"assistFee": "Buying service fee",
|
|
862
|
-
"intlShip": "International shipping",
|
|
863
|
-
"importCost": "Import taxes and fees",
|
|
864
|
-
"landed": "Landed total",
|
|
865
|
-
"pendingQuote": "Quote required",
|
|
866
|
-
"notFinal": "Not yet confirmed",
|
|
867
|
-
"quoteNote": "No checkout while fees are unknown. The next step in a real service is requesting a quote.",
|
|
868
|
-
"merchants": {
|
|
869
|
-
"mori": "Mori Store",
|
|
870
|
-
"aoi": "Aoi Direct",
|
|
871
|
-
"hako": "Hako Market",
|
|
872
|
-
"kumo": "Kumo Shop",
|
|
873
|
-
"haru": "Haru Select",
|
|
874
|
-
"mika": "Mika Audio",
|
|
875
|
-
"neko": "Neko Outlet",
|
|
876
|
-
"other": "Other Model Shop"
|
|
877
|
-
}
|
|
878
|
-
},
|
|
879
|
-
"dataTableDocs": {
|
|
880
|
-
"stackedRecordWide": "Record collection (wide — stays a table)",
|
|
881
|
-
"stackedRecordFolded": "Same table, same column definitions (narrow — folds into cards)"
|
|
882
|
-
},
|
|
883
|
-
"chartsDocs": {
|
|
884
|
-
"areaSplitTitle": "AreaChart · fill apart from stroke / cropped value axis",
|
|
885
|
-
"areaSplitBody": "series[].fillColor sets the band's colour independently of the line's color, and valueDomain / valueTicks state the value axis outright. A non-zero baseline is legitimate only where the SHAPE is the message and zero is not a meaningful reference — a price, a temperature, an index, a latency percentile. In any figure that asks the reader to compare magnitudes (every bar chart), it exaggerates the wobble and misleads. If you crop, say the range and keep the grid.",
|
|
886
|
-
"areaSplitLabel": "Weekly price (cropped to ¥24,000–31,000)",
|
|
887
|
-
"areaSplitDescription": "Not zero-based. The axis runs ¥24,000–31,000.",
|
|
888
|
-
"priceSeries": "Price",
|
|
889
|
-
"tokenScopeTitle": "Theme tokens · scoped to a region",
|
|
890
|
-
"tokenScopeBody": "Stroke weight, band density and grid dash are house style, so they are tokens rather than props. --chart-series-stroke-width / --chart-area-fill-alpha / --chart-grid-line-dash are set on the block below and nowhere else. No page-local CSS, no raw recharts.",
|
|
891
|
-
"tokenScopeLabel": "Weekly price (themed)"
|
|
892
|
-
},
|
|
893
|
-
"themeScopeDocs": {
|
|
894
|
-
"page": {
|
|
895
|
-
"subtitle": "A themed region whose overlays keep the region's tokens.",
|
|
896
|
-
"title": "ThemeScope"
|
|
897
|
-
},
|
|
898
|
-
"intro": {
|
|
899
|
-
"title": "Why a region needs this at all",
|
|
900
|
-
"description": "Every overlay portals to document.body, so custom-property inheritance stops at the portal boundary.",
|
|
901
|
-
"body": "A region that themes itself themes its own subtree and nothing it opens: measured on a scoped theme, the region read --primary 204 100% 37% and the Dialog it opened read 268.7 100% 50%, the package default. ThemeScope carries the computed difference between the region and the document root to a host at the portal destination, so the overlay inherits it by containment. It has no theme prop — it reads the DOM, which is why an inline style, a class and a stylesheet rule all behave the same."
|
|
902
|
-
},
|
|
903
|
-
"region": {
|
|
904
|
-
"description": "Open anything here. The panel it opens is painted by this region.",
|
|
905
|
-
"pending": "Awaiting review",
|
|
906
|
-
"queue": "12 submissions in the queue",
|
|
907
|
-
"reviewerLabel": "Assign a reviewer",
|
|
908
|
-
"reviewerPlaceholder": "Choose a reviewer",
|
|
909
|
-
"approve": "Approve submission",
|
|
910
|
-
"history": "Review history",
|
|
911
|
-
"notify": "Notify the submitter"
|
|
912
|
-
},
|
|
913
|
-
"dialog": {
|
|
914
|
-
"title": "Approve this submission",
|
|
915
|
-
"description": "The approval is recorded against your account and the submitter is notified immediately.",
|
|
916
|
-
"confirm": "Approve",
|
|
917
|
-
"body": "Three submissions from this customer are waiting on the same evidence pack."
|
|
918
|
-
},
|
|
919
|
-
"popover": {
|
|
920
|
-
"body": "Returned once for missing evidence, resubmitted the same day."
|
|
921
|
-
},
|
|
922
|
-
"toast": {
|
|
923
|
-
"approved": "Submission approved",
|
|
924
|
-
"saved": "The submitter has been notified"
|
|
925
|
-
},
|
|
926
|
-
"acme": {
|
|
927
|
-
"name": "ACME Logistics"
|
|
928
|
-
},
|
|
929
|
-
"night": {
|
|
930
|
-
"name": "Night shift console"
|
|
931
|
-
},
|
|
932
|
-
"without": {
|
|
933
|
-
"title": "The same region without ThemeScope",
|
|
934
|
-
"description": "The tokens are declared exactly as above — only the wrapper is a plain div.",
|
|
935
|
-
"open": "Approve submission",
|
|
936
|
-
"dialogTitle": "Approve this submission",
|
|
937
|
-
"dialogDescription": "This panel is the defect: it is painted by the package defaults, not by the region that opened it.",
|
|
938
|
-
"dialogBody": "Compare the button that opened it with the button inside it: the region's colour did not travel."
|
|
939
|
-
}
|
|
940
|
-
},
|
|
941
|
-
"tableDocs": {
|
|
942
|
-
"title": "Cash movements · row tone",
|
|
943
|
-
"item": "Item",
|
|
944
|
-
"amount": "Amount",
|
|
945
|
-
"status": "Status",
|
|
946
|
-
"fee": "Transfer fee",
|
|
947
|
-
"done": "Processed",
|
|
948
|
-
"overdue": "Payment 3 days overdue",
|
|
949
|
-
"check": "Needs review",
|
|
950
|
-
"failed": "Direct debit failed",
|
|
951
|
-
"failedBadge": "Failed"
|
|
952
|
-
},
|
|
953
|
-
"themeLab": {
|
|
954
|
-
"page": {
|
|
955
|
-
"title": "Theme lab",
|
|
956
|
-
"subtitle": "One page, every component that can render, several themes, several seed colours. A theme here is custom properties and nothing else.",
|
|
957
|
-
"footer": "The URL carries the theme and the seed, so a screenshot and a measurement address the same cell of the matrix."
|
|
958
|
-
},
|
|
959
|
-
"product": "Theme Lab",
|
|
960
|
-
"switch": {
|
|
961
|
-
"title": "Theme and seed",
|
|
962
|
-
"note": "Adding a theme is one CSS file plus one row in docs/themes/index.ts. This page is never edited for it.",
|
|
963
|
-
"themeLabel": "Theme",
|
|
964
|
-
"seedLabel": "Seed colour",
|
|
965
|
-
"modeLabel": "Polarity",
|
|
966
|
-
"seedHex": "Seed",
|
|
967
|
-
"seedInk": "Label on the seed",
|
|
968
|
-
"seedContrast": "Label contrast, WCAG 2.2 SC 1.4.3",
|
|
969
|
-
"legendPass": "4.5:1 or better",
|
|
970
|
-
"legendFail": "below AA"
|
|
971
|
-
},
|
|
972
|
-
"mode": {
|
|
973
|
-
"light": "Light",
|
|
974
|
-
"dark": "Dark"
|
|
975
|
-
},
|
|
976
|
-
"theme": {
|
|
977
|
-
"base": {
|
|
978
|
-
"name": "Default",
|
|
979
|
-
"note": "The library's own theme. No theme file and no overrides — the control that shows what these components look like unthemed."
|
|
980
|
-
},
|
|
981
|
-
"glass": {
|
|
982
|
-
"name": "Glassmorphism",
|
|
983
|
-
"note": "Frosted translucent panels, a backdrop blur with saturation, a thin light edge and layered depth over a vivid ground."
|
|
984
|
-
},
|
|
985
|
-
"flat": {
|
|
986
|
-
"name": "Flat",
|
|
987
|
-
"note": "No corners, no shadow, opaque surfaces separated by a line. Squaring one number costs sixty-seven declarations."
|
|
988
|
-
},
|
|
989
|
-
"neubrutalism": {
|
|
990
|
-
"name": "Neubrutalism",
|
|
991
|
-
"note": "Thick black borders, hard offset shadows with no blur, square corners and loud saturated fills. Thickening a border costs 22 declarations and still reaches only a fifth of them."
|
|
992
|
-
}
|
|
993
|
-
},
|
|
994
|
-
"seed": {
|
|
995
|
-
"violet": "Violet",
|
|
996
|
-
"azure": "Azure",
|
|
997
|
-
"coral": "Coral",
|
|
998
|
-
"citron": "Citron",
|
|
999
|
-
"navy": "Navy"
|
|
1000
|
-
},
|
|
1001
|
-
"nav": {
|
|
1002
|
-
"section": "Workspace",
|
|
1003
|
-
"overview": "Overview",
|
|
1004
|
-
"reports": "Reports",
|
|
1005
|
-
"people": "People",
|
|
1006
|
-
"settings": "Settings",
|
|
1007
|
-
"role": "Administrator",
|
|
1008
|
-
"footer": "Signed in"
|
|
1009
|
-
},
|
|
1010
|
-
"app": {
|
|
1011
|
-
"console": "Console",
|
|
1012
|
-
"billing": "Billing"
|
|
1013
|
-
},
|
|
1014
|
-
"topbar": {
|
|
1015
|
-
"notifications": "Notifications",
|
|
1016
|
-
"account": "Account"
|
|
1017
|
-
},
|
|
1018
|
-
"menu": {
|
|
1019
|
-
"profile": "Profile",
|
|
1020
|
-
"billing": "Billing",
|
|
1021
|
-
"logout": "Sign out"
|
|
1022
|
-
},
|
|
1023
|
-
"popover": {
|
|
1024
|
-
"title": "Two new items",
|
|
1025
|
-
"body": "Nothing needs your attention right now.",
|
|
1026
|
-
"action": "Mark all as read"
|
|
1027
|
-
},
|
|
1028
|
-
"section": {
|
|
1029
|
-
"type": "Type, marks and rhythm",
|
|
1030
|
-
"typeNote": "The ink ramp is the first thing a translucent surface breaks, so every step of it is on the page at once.",
|
|
1031
|
-
"actions": "Actions",
|
|
1032
|
-
"display": "Status and data display",
|
|
1033
|
-
"tables": "Tables",
|
|
1034
|
-
"charts": "Charts",
|
|
1035
|
-
"fields": "Form controls",
|
|
1036
|
-
"fieldsNote": "A field has to read as a place you can type before it reads as a theme: fill, border, focus ring, placeholder and the filled and empty states are all here.",
|
|
1037
|
-
"nav": "Navigation",
|
|
1038
|
-
"feedback": "Feedback",
|
|
1039
|
-
"overlays": "Overlays",
|
|
1040
|
-
"overlaysNote": "These are opened by the measurement, not merely present. Each one portals out of this subtree and reaches the theme through ThemeScope's overlay host.",
|
|
1041
|
-
"regions": "Regions that nest",
|
|
1042
|
-
"chat": "Conversational",
|
|
1043
|
-
"absent": "Could not be rendered",
|
|
1044
|
-
"absentNote": "An absence nobody can see is an absence nobody accounts for."
|
|
1045
|
-
},
|
|
1046
|
-
"absent": {
|
|
1047
|
-
"export": "Export",
|
|
1048
|
-
"reason": "Reason",
|
|
1049
|
-
"provider": "A provider, already mounted above this page by the preview runtime.",
|
|
1050
|
-
"overlayPortal": "A provider that re-parents every overlay portal; mounting it here would replace the ThemeScope host this page exists to measure.",
|
|
1051
|
-
"themeScope": "It is this page's own wrapper.",
|
|
1052
|
-
"ownsPage": "A shell that owns the whole document; it cannot nest inside AppShell.",
|
|
1053
|
-
"hook": "A hook. It has no surface of its own to paint.",
|
|
1054
|
-
"function": "A function, not a component.",
|
|
1055
|
-
"inertia": "An Inertia adapter; it needs a router this preview does not have.",
|
|
1056
|
-
"needsFile": "It needs a real File chosen from a file input.",
|
|
1057
|
-
"needsNetwork": "It needs a network image; committed assets are used instead.",
|
|
1058
|
-
"needsRouter": "It needs a route and a prefetchable query.",
|
|
1059
|
-
"needsQuery": "It needs a live TanStack Query result, which is data rather than theme.",
|
|
1060
|
-
"invisible": "It is on the page, and by definition it paints nothing.",
|
|
1061
|
-
"needsSchema": "It needs a zod schema, and check:example-imports allows a docs page to import only react, lucide-react and @godxjp/ui.",
|
|
1062
|
-
"sameSurface": "The composed form of AlertDialog, which is on the page; it paints no new surface."
|
|
1063
|
-
},
|
|
1064
|
-
"action": {
|
|
1065
|
-
"save": "Save",
|
|
1066
|
-
"cancel": "Cancel",
|
|
1067
|
-
"secondary": "Secondary",
|
|
1068
|
-
"outline": "Outline",
|
|
1069
|
-
"ghost": "Ghost",
|
|
1070
|
-
"dashed": "Dashed",
|
|
1071
|
-
"destructive": "Delete",
|
|
1072
|
-
"link": "Link",
|
|
1073
|
-
"disabled": "Disabled",
|
|
1074
|
-
"search": "Search",
|
|
1075
|
-
"bold": "Bold",
|
|
1076
|
-
"unread": "Unread",
|
|
1077
|
-
"retry": "Try again",
|
|
1078
|
-
"more": "More",
|
|
1079
|
-
"share": "Share",
|
|
1080
|
-
"open": "Open"
|
|
1081
|
-
},
|
|
1082
|
-
"align": {
|
|
1083
|
-
"start": "Start",
|
|
1084
|
-
"center": "Centre",
|
|
1085
|
-
"end": "End"
|
|
1086
|
-
},
|
|
1087
|
-
"label": {
|
|
1088
|
-
"variants": "Variants",
|
|
1089
|
-
"sizes": "Sizes",
|
|
1090
|
-
"toggles": "Toggles and rating",
|
|
1091
|
-
"actionsBar": "Response actions",
|
|
1092
|
-
"badges": "Badges and swatches",
|
|
1093
|
-
"items": "items",
|
|
1094
|
-
"align": "Alignment",
|
|
1095
|
-
"progress": "Storage used",
|
|
1096
|
-
"people": "Team",
|
|
1097
|
-
"tools": "Tools",
|
|
1098
|
-
"schedule": "Schedule",
|
|
1099
|
-
"week": "Week",
|
|
1100
|
-
"start": "Start of range",
|
|
1101
|
-
"end": "End of range",
|
|
1102
|
-
"permissions": "Permissions",
|
|
1103
|
-
"quickPick": "Quick pick",
|
|
1104
|
-
"noResults": "Nothing to show",
|
|
1105
|
-
"available": "Available",
|
|
1106
|
-
"selected": "Selected",
|
|
1107
|
-
"qr": "Enrolment QR code",
|
|
1108
|
-
"thumbnail": "A dashboard screenshot",
|
|
1109
|
-
"credential": "API key",
|
|
1110
|
-
"detail": "Detail",
|
|
1111
|
-
"master": "List",
|
|
1112
|
-
"catalog": "Add from the catalogue",
|
|
1113
|
-
"mainNav": "Main navigation",
|
|
1114
|
-
"onThisPage": "On this page",
|
|
1115
|
-
"pinned": "Pinned bar",
|
|
1116
|
-
"skeletons": "Loading placeholders",
|
|
1117
|
-
"assistant": "Assistant",
|
|
1118
|
-
"loading": "Loading",
|
|
1119
|
-
"rating": "Rating"
|
|
1120
|
-
},
|
|
1121
|
-
"table": {
|
|
1122
|
-
"name": "Name",
|
|
1123
|
-
"owner": "Owner",
|
|
1124
|
-
"status": "Status",
|
|
1125
|
-
"amount": "Amount"
|
|
1126
|
-
},
|
|
1127
|
-
"tone": {
|
|
1128
|
-
"neutral": "Neutral",
|
|
1129
|
-
"success": "Approved",
|
|
1130
|
-
"warning": "Waiting",
|
|
1131
|
-
"destructive": "Rejected",
|
|
1132
|
-
"info": "Information"
|
|
1133
|
-
},
|
|
1134
|
-
"stat": {
|
|
1135
|
-
"members": "Members",
|
|
1136
|
-
"revenue": "Revenue",
|
|
1137
|
-
"usage": "Usage",
|
|
1138
|
-
"open": "Open requests",
|
|
1139
|
-
"hint": "Up 3% on last month"
|
|
1140
|
-
},
|
|
1141
|
-
"chart": {
|
|
1142
|
-
"trend": "Plan against actual",
|
|
1143
|
-
"plan": "Plan",
|
|
1144
|
-
"actual": "Actual",
|
|
1145
|
-
"byMonth": "By month",
|
|
1146
|
-
"stacked": "Stacked",
|
|
1147
|
-
"split": "Split",
|
|
1148
|
-
"weekly": "Last seven days"
|
|
1149
|
-
},
|
|
1150
|
-
"field": {
|
|
1151
|
-
"name": "Name",
|
|
1152
|
-
"namePlaceholder": "Two to sixty characters",
|
|
1153
|
-
"email": "Email",
|
|
1154
|
-
"emailError": "That is not an email address.",
|
|
1155
|
-
"search": "Search",
|
|
1156
|
-
"searchPlaceholder": "Search by name or id",
|
|
1157
|
-
"quantity": "Quantity",
|
|
1158
|
-
"password": "Password",
|
|
1159
|
-
"notes": "Notes",
|
|
1160
|
-
"tags": "Labels",
|
|
1161
|
-
"role": "Role",
|
|
1162
|
-
"date": "Date",
|
|
1163
|
-
"time": "Time",
|
|
1164
|
-
"timeRange": "Shift",
|
|
1165
|
-
"colour": "Brand colour",
|
|
1166
|
-
"volume": "Volume",
|
|
1167
|
-
"region": "Region",
|
|
1168
|
-
"account": "Account",
|
|
1169
|
-
"notify": "Email notifications",
|
|
1170
|
-
"agree": "I accept the terms",
|
|
1171
|
-
"scope": "Applies to"
|
|
1172
|
-
},
|
|
1173
|
-
"role": {
|
|
1174
|
-
"viewer": "Viewer",
|
|
1175
|
-
"editor": "Editor",
|
|
1176
|
-
"admin": "Administrator"
|
|
1177
|
-
},
|
|
1178
|
-
"perm": {
|
|
1179
|
-
"read": "Read",
|
|
1180
|
-
"write": "Write",
|
|
1181
|
-
"admin": "Administer"
|
|
1182
|
-
},
|
|
1183
|
-
"overlay": {
|
|
1184
|
-
"dialog": "Open dialog",
|
|
1185
|
-
"sheet": "Open sheet",
|
|
1186
|
-
"alertDialog": "Confirm deletion",
|
|
1187
|
-
"tooltip": "Hover for a tooltip",
|
|
1188
|
-
"toast": "Show toast",
|
|
1189
|
-
"toastMessage": "Saved.",
|
|
1190
|
-
"twoFactor": "Set up two-factor",
|
|
1191
|
-
"inlineNote": "The Select listbox is an overlay too: it needs the most opaque fill of the three, because a menu sits over arbitrary content."
|
|
1192
|
-
},
|
|
1193
|
-
"error": {
|
|
1194
|
-
"title": "You do not have access to this report"
|
|
1195
|
-
},
|
|
1196
|
-
"auth": {
|
|
1197
|
-
"title": "Sign in",
|
|
1198
|
-
"requester": "Theme Lab is requesting access",
|
|
1199
|
-
"switch": "Switch account",
|
|
1200
|
-
"or": "or",
|
|
1201
|
-
"terms": "Terms",
|
|
1202
|
-
"privacy": "Privacy"
|
|
1203
|
-
},
|
|
1204
|
-
"chat": {
|
|
1205
|
-
"welcomeTitle": "Good afternoon",
|
|
1206
|
-
"welcomeBody": "Ask about invoices, expenses or attendance.",
|
|
1207
|
-
"assistant": "How can I help?",
|
|
1208
|
-
"user": "Summarise yesterday's invoices.",
|
|
1209
|
-
"assistantName": "Assistant",
|
|
1210
|
-
"userName": "You",
|
|
1211
|
-
"thoughts": "Steps taken",
|
|
1212
|
-
"placeholder": "Write a message"
|
|
1213
|
-
},
|
|
1214
|
-
"sample": {
|
|
1215
|
-
"alpha": "Northern district",
|
|
1216
|
-
"beta": "Central office",
|
|
1217
|
-
"gamma": "Southern depot",
|
|
1218
|
-
"delta": "Harbour annexe",
|
|
1219
|
-
"epsilon": "Field team",
|
|
1220
|
-
"one": "Pham Thai Duong",
|
|
1221
|
-
"two": "Mai Sato",
|
|
1222
|
-
"three": "Diego Costa",
|
|
1223
|
-
"short": "Updated a few minutes ago.",
|
|
1224
|
-
"long": "A tidy board is the defect, not the deliverable: this row carries a three-line label beside a one-word one, an unbreakable token beside an empty slot, and the longest string the layout will ever be handed.",
|
|
1225
|
-
"headline": "Can this component set wear a complex theme?",
|
|
1226
|
-
"linkLabel": "Read the token-resolution rules",
|
|
1227
|
-
"codeLabel": "Theme excerpt",
|
|
1228
|
-
"secure": "Session is encrypted",
|
|
1229
|
-
"syncing": "Syncing",
|
|
1230
|
-
"marqueeLabel": "Pause the scrolling list",
|
|
1231
|
-
"aspectTitle": "A fixed-ratio region"
|
|
1232
|
-
},
|
|
1233
|
-
"launcher": {
|
|
1234
|
-
"trigger": "Apps",
|
|
1235
|
-
"title": "Switch app"
|
|
1236
|
-
},
|
|
1237
|
-
"org": {
|
|
1238
|
-
"trigger": "Organisation"
|
|
1239
|
-
},
|
|
1240
|
-
"twoFactor": {
|
|
1241
|
-
"title": "Set up two-factor authentication",
|
|
1242
|
-
"description": "Scan the code with an authenticator app, then enter the six digits it shows.",
|
|
1243
|
-
"manualKey": "Or enter this key by hand",
|
|
1244
|
-
"code": "Six-digit code",
|
|
1245
|
-
"recovery": "Store these recovery codes somewhere safe. They are shown once.",
|
|
1246
|
-
"acknowledge": "I have saved them"
|
|
1247
|
-
}
|
|
1248
|
-
},
|
|
1249
|
-
"spaceCompactDocs": {
|
|
1250
|
-
"title": "SpaceCompact",
|
|
1251
|
-
"subtitle": "Read a row of controls as ONE box — recurrence, search, an amount with its unit",
|
|
1252
|
-
"recur": {
|
|
1253
|
-
"title": "Recurrence (every N weeks)",
|
|
1254
|
-
"body": "The number and the unit are one setting, so they read as one box. FormField lands the label on the ROW, so a screen reader opens with “Recurrence, group” and each control inside keeps its own name.",
|
|
1255
|
-
"label": "Recurrence",
|
|
1256
|
-
"helper": "How often the invoice is issued automatically.",
|
|
1257
|
-
"every": "Interval",
|
|
1258
|
-
"unit": "Unit",
|
|
1259
|
-
"reads": "Reads as",
|
|
1260
|
-
"role": "role",
|
|
1261
|
-
"roleValue": "group (only on a NAMED row)"
|
|
1262
|
-
},
|
|
1263
|
-
"unit": {
|
|
1264
|
-
"day": "day",
|
|
1265
|
-
"week": "week",
|
|
1266
|
-
"month": "month"
|
|
1267
|
-
},
|
|
1268
|
-
"search": {
|
|
1269
|
-
"title": "Search and its button",
|
|
1270
|
-
"body": "Typing and running are one continuous action, so the seam goes. The button is still a real Button — focus ring and disabled keep working. With `fullWidth` the field fills the row and the button keeps its own width (antd `block`).",
|
|
1271
|
-
"row": "Search employees",
|
|
1272
|
-
"term": "Search term",
|
|
1273
|
-
"run": "Run the search",
|
|
1274
|
-
"placeholder": "Name or employee number"
|
|
1275
|
-
},
|
|
1276
|
-
"amount": {
|
|
1277
|
-
"title": "Amount, currency, and fullWidth",
|
|
1278
|
-
"body": "`fullWidth` stretches the row to its parent (antd `block`). The proportions inside stay each control's own, so the digits do not crush on a narrow screen.",
|
|
1279
|
-
"label": "Invoice amount",
|
|
1280
|
-
"value": "Amount",
|
|
1281
|
-
"currency": "Currency"
|
|
1282
|
-
},
|
|
1283
|
-
"vertical": {
|
|
1284
|
-
"title": "orientation=\"vertical\" — a written-down partial port",
|
|
1285
|
-
"body": "A vertical stack collapses the shared border, but corner-zeroing is inline-only for now: the Input and trigger corner tokens exist on the inline axis only. Written down as a follow-up rather than left as a silent gap.",
|
|
1286
|
-
"row": "Note and send",
|
|
1287
|
-
"note": "Handover note",
|
|
1288
|
-
"send": "Send",
|
|
1289
|
-
"alias": "`vertical` is antd's boolean spelling. Set both and `orientation` wins."
|
|
1290
|
-
},
|
|
1291
|
-
"dont": {
|
|
1292
|
-
"title": "When NOT to weld",
|
|
1293
|
-
"body": "Joining things that are not one setting makes unrelated values look like one box. Keep them in separate FormFields.",
|
|
1294
|
-
"dept": "Department code",
|
|
1295
|
-
"ext": "Extension"
|
|
1296
|
-
}
|
|
1297
|
-
},
|
|
1298
|
-
"chatComposerDocs": {
|
|
1299
|
-
"footerTitle": "footer as NodeRender · move attach / hint / send into a bottom toolbar",
|
|
1300
|
-
"footerBody": "With `actions={false}` the inline send button is hidden, and passing a function to `footer` hands you `components.SubmitButton` — already wired to onSubmit, disabled and the loading swap. The draft box keeps its full width; attach sits at the row start and send at the end.",
|
|
1301
|
-
"noComments": "No comments yet",
|
|
1302
|
-
"commentLabel": "Comment (bottom toolbar)",
|
|
1303
|
-
"commentPlaceholder": "Write a comment",
|
|
1304
|
-
"attach": "Attach a file",
|
|
1305
|
-
"enterHint": "Enter to send · Shift + Enter for a new line",
|
|
1306
|
-
"sendComment": "Send the comment"
|
|
1307
|
-
},
|
|
1308
|
-
"tcgm": {
|
|
1309
|
-
"demoNotice": "DESIGN PROTOTYPE · every card, price, shop and release date below is a fictional sample.",
|
|
1310
|
-
"brandAlt": "TCG-M",
|
|
1311
|
-
"nav": {
|
|
1312
|
-
"cards": "Find cards",
|
|
1313
|
-
"news": "News",
|
|
1314
|
-
"calendar": "Release calendar",
|
|
1315
|
-
"watchlist": "Watchlist",
|
|
1316
|
-
"method": "Data & editorial policy",
|
|
1317
|
-
"label": "Main navigation"
|
|
1318
|
-
},
|
|
1319
|
-
"header": {
|
|
1320
|
-
"search": "Card search",
|
|
1321
|
-
"watchlist": "Watchlist",
|
|
1322
|
-
"tryApp": "Try the app",
|
|
1323
|
-
"openMenu": "Open menu",
|
|
1324
|
-
"menu": "Menu"
|
|
1325
|
-
},
|
|
1326
|
-
"hero": {
|
|
1327
|
-
"eyebrow": "Different cards. Same passion.",
|
|
1328
|
-
"titleLine1": "Find more of",
|
|
1329
|
-
"titleLine2": "the cards you love.",
|
|
1330
|
-
"leadLine1": "From the one card you came for to the next thing you discover.",
|
|
1331
|
-
"leadLine2": "Card data, price comparison and news, in one place.",
|
|
1332
|
-
"searchPlaceholder": "Search by card name, number or set",
|
|
1333
|
-
"searchLabel": "Card name, number or set",
|
|
1334
|
-
"artAlt": "Original card illustration spread across a pale sky",
|
|
1335
|
-
"artTag": "More cards. More possibilities.",
|
|
1336
|
-
"hintTitles": "Many titles",
|
|
1337
|
-
"hintCompare": "Compare like for like",
|
|
1338
|
-
"hintDiscover": "New discoveries"
|
|
1339
|
-
},
|
|
1340
|
-
"games": {
|
|
1341
|
-
"label": "Filter by title",
|
|
1342
|
-
"all": "All",
|
|
1343
|
-
"pokemon": "Pokémon Card",
|
|
1344
|
-
"onepiece": "ONE PIECE",
|
|
1345
|
-
"yugioh": "Yu-Gi-Oh!",
|
|
1346
|
-
"duel": "Duel Masters",
|
|
1347
|
-
"mtg": "MTG",
|
|
1348
|
-
"other": "Other"
|
|
1349
|
-
},
|
|
1350
|
-
"card": {
|
|
1351
|
-
"classifiedAs": "Category: {game}",
|
|
1352
|
-
"priceLabel": "Listed shop price",
|
|
1353
|
-
"noPrice": "No price listed",
|
|
1354
|
-
"shippingNote": "Excl. shipping",
|
|
1355
|
-
"sampleNote": "Sample",
|
|
1356
|
-
"sampleBadge": "SAMPLE",
|
|
1357
|
-
"artAlt": "Fictional card: {name}",
|
|
1358
|
-
"watchAdd": "Add {name} to watchlist",
|
|
1359
|
-
"watchRemove": "Remove {name} from watchlist"
|
|
1360
|
-
},
|
|
1361
|
-
"cards": {
|
|
1362
|
-
"demo-01": {
|
|
1363
|
-
"name": "Guide of the Star Crossing",
|
|
1364
|
-
"edition": "Standard"
|
|
1365
|
-
},
|
|
1366
|
-
"demo-02": {
|
|
1367
|
-
"name": "Atelier of Sky Blue",
|
|
1368
|
-
"edition": "Holo"
|
|
1369
|
-
},
|
|
1370
|
-
"demo-03": {
|
|
1371
|
-
"name": "Garden in Moonlight",
|
|
1372
|
-
"edition": "Standard"
|
|
1373
|
-
},
|
|
1374
|
-
"demo-04": {
|
|
1375
|
-
"name": "Voyage of Coral",
|
|
1376
|
-
"edition": "Alternate art"
|
|
1377
|
-
},
|
|
1378
|
-
"demo-05": {
|
|
1379
|
-
"name": "A Letter That Carries Wind",
|
|
1380
|
-
"edition": "Standard"
|
|
1381
|
-
},
|
|
1382
|
-
"demo-06": {
|
|
1383
|
-
"name": "Prism at Daybreak",
|
|
1384
|
-
"edition": "Holo"
|
|
1385
|
-
}
|
|
1386
|
-
},
|
|
1387
|
-
"collection": {
|
|
1388
|
-
"eyebrow": "Explore the collection",
|
|
1389
|
-
"title": "Meet a card you haven't met yet.",
|
|
1390
|
-
"action": "Find cards",
|
|
1391
|
-
"count": "{count} samples",
|
|
1392
|
-
"note": "The cards below are fictional, for design review only. They are not official cards of any real title.",
|
|
1393
|
-
"emptyTitle": "No card matches these conditions",
|
|
1394
|
-
"emptyBody": "Try a different title or card number.",
|
|
1395
|
-
"reset": "Reset filters"
|
|
1396
|
-
},
|
|
1397
|
-
"news": {
|
|
1398
|
-
"eyebrow": "Read & discover",
|
|
1399
|
-
"title": "Know your cards a little better.",
|
|
1400
|
-
"action": "Read articles",
|
|
1401
|
-
"sample": "Sample article",
|
|
1402
|
-
"meta": "2026.09.24 · 4 min read",
|
|
1403
|
-
"manual": "Manual only · no autoplay"
|
|
1404
|
-
},
|
|
1405
|
-
"articles": {
|
|
1406
|
-
"compare": {
|
|
1407
|
-
"title": "Five things to check before you look at the price",
|
|
1408
|
-
"cat": "Starter guide"
|
|
1409
|
-
},
|
|
1410
|
-
"edition": {
|
|
1411
|
-
"title": "Same name, different card? Telling editions apart",
|
|
1412
|
-
"cat": "Card knowledge"
|
|
1413
|
-
},
|
|
1414
|
-
"watch": {
|
|
1415
|
-
"title": "Keep the cards you care about in one list",
|
|
1416
|
-
"cat": "How to"
|
|
1417
|
-
},
|
|
1418
|
-
"sources": {
|
|
1419
|
-
"title": "Why the \"last updated\" time on price data matters",
|
|
1420
|
-
"cat": "Reading the data"
|
|
1421
|
-
}
|
|
1422
|
-
},
|
|
1423
|
-
"releases": {
|
|
1424
|
-
"eyebrow": "Coming next",
|
|
1425
|
-
"title": "Put what you're waiting for on the calendar.",
|
|
1426
|
-
"action": "Open calendar",
|
|
1427
|
-
"view": "View release"
|
|
1428
|
-
},
|
|
1429
|
-
"release": {
|
|
1430
|
-
"prism": {
|
|
1431
|
-
"title": "Prism World — Chapter of Sky",
|
|
1432
|
-
"kind": "Original fictional set"
|
|
1433
|
-
},
|
|
1434
|
-
"notes": {
|
|
1435
|
-
"title": "Collector's Notes Vol.01",
|
|
1436
|
-
"kind": "Guide release example"
|
|
1437
|
-
},
|
|
1438
|
-
"study": {
|
|
1439
|
-
"title": "Edition Study — Light and Shadow",
|
|
1440
|
-
"kind": "Original fictional set"
|
|
1441
|
-
}
|
|
1442
|
-
},
|
|
1443
|
-
"trust": {
|
|
1444
|
-
"eyebrow": "Clarity comes first",
|
|
1445
|
-
"titleLine1": "The facts you need",
|
|
1446
|
-
"titleLine2": "to compare, made plain.",
|
|
1447
|
-
"bodyLine1": "Not just the price: the edition, the condition, the shipping and the time it was last checked.",
|
|
1448
|
-
"bodyLine2": "The footing you need to choose with confidence.",
|
|
1449
|
-
"link": "Data & editorial policy",
|
|
1450
|
-
"editionTitle": "Same edition, same condition",
|
|
1451
|
-
"editionBody": "Standard and alternate-art printings are compared separately.",
|
|
1452
|
-
"freshnessTitle": "The update time is stated",
|
|
1453
|
-
"freshnessBody": "Conditions at the time of listing may differ from now.",
|
|
1454
|
-
"adsTitle": "Ads kept apart from comparison",
|
|
1455
|
-
"adsBody": "PR labelling and the reason for the ordering, both in plain sight."
|
|
1456
|
-
},
|
|
1457
|
-
"footer": {
|
|
1458
|
-
"taglineLine1": "The cards you love, connecting a wider world.",
|
|
1459
|
-
"taglineLine2": "Card price comparison · card data · news",
|
|
1460
|
-
"accent": "Different cards. Same passion.",
|
|
1461
|
-
"colFind": "Find & compare",
|
|
1462
|
-
"colRead": "Read & learn",
|
|
1463
|
-
"colAbout": "About TCG-M",
|
|
1464
|
-
"linkSearch": "Card search",
|
|
1465
|
-
"linkCompare": "Compare editions",
|
|
1466
|
-
"linkWatchlist": "Watchlist",
|
|
1467
|
-
"linkNews": "News & guides",
|
|
1468
|
-
"linkCalendar": "Release calendar",
|
|
1469
|
-
"linkBasics": "Comparison basics",
|
|
1470
|
-
"linkMethod": "Data & editorial policy",
|
|
1471
|
-
"linkComponents": "UI components",
|
|
1472
|
-
"linkConsent": "Demo storage settings",
|
|
1473
|
-
"legal": "© TCG-M · tcg-m.com · Design prototype",
|
|
1474
|
-
"disclaimer": "Title names are category examples. They do not indicate an official service or partnership."
|
|
1475
|
-
},
|
|
1476
|
-
"toast": {
|
|
1477
|
-
"saved": "Saved to this browser",
|
|
1478
|
-
"removed": "Removed from your watchlist"
|
|
1479
|
-
},
|
|
1480
|
-
"dialog": {
|
|
1481
|
-
"title": "Fictional release",
|
|
1482
|
-
"body": "This is a calendar display example. It is not an actual product release or pre-order.",
|
|
1483
|
-
"sample": "Sample",
|
|
1484
|
-
"date": "September 2026 · demo date"
|
|
1485
|
-
}
|
|
1486
|
-
},
|
|
1487
|
-
"authExpiryDocs": {
|
|
1488
|
-
"membersTitle": "Members",
|
|
1489
|
-
"nameColumn": "Name",
|
|
1490
|
-
"inviteTitle": "Send invitation",
|
|
1491
|
-
"send": "Send"
|
|
1492
|
-
},
|
|
1493
|
-
"treeDocs": {
|
|
1494
|
-
"longList": {
|
|
1495
|
-
"title": "Long child lists (height · virtual · filterTreeNode)",
|
|
1496
|
-
"description": "2 suites → 28 sections → up to 421 cases. With height the tree scrolls inside that height and renders only the rows in view (antd height + virtual). Nodes matching the search are highlighted by filterTreeNode, never hidden. Section 2 fails its first loadData and fetches again when reopened. Section 3 shows how to compose a paged API: selecting the last leaf loads the next 100.",
|
|
1497
|
-
"searchLabel": "Search cases",
|
|
1498
|
-
"searchPlaceholder": "Highlight by case name (e.g. 042)",
|
|
1499
|
-
"treeLabel": "Test suites",
|
|
1500
|
-
"suiteIntegration": "Integration tests",
|
|
1501
|
-
"suiteAcceptance": "Acceptance tests",
|
|
1502
|
-
"section": "Section {number}",
|
|
1503
|
-
"sectionFailing": "Section {number} (first load fails)",
|
|
1504
|
-
"sectionPaged": "Section {number} ({count} at a time)",
|
|
1505
|
-
"case": "Case {number}",
|
|
1506
|
-
"loadMore": {
|
|
1507
|
-
"one": "Load {count} more",
|
|
1508
|
-
"other": "Load {count} more"
|
|
1509
|
-
}
|
|
1510
|
-
},
|
|
1511
|
-
"drag": {
|
|
1512
|
-
"title": "Drag to reorder or reparent (draggable · allowDrop · onDrop)",
|
|
1513
|
-
"description": "Drop on the upper quarter of a row to land before it, the lower quarter after it, the middle inside it. Tree never edits treeData; onDrop reports the move. From the keyboard: Alt+↑ / Alt+↓ move past a sibling, Alt+← outdents, Alt+→ indents into the previous sibling. Every move is announced in a live region. Here allowDrop refuses dropping inside “Release notes”.",
|
|
1514
|
-
"treeLabel": "Reorderable pages",
|
|
1515
|
-
"lastMove": "Last move: {move}",
|
|
1516
|
-
"none": "none",
|
|
1517
|
-
"keys": "When draggable: past a sibling / outdent / indent",
|
|
1518
|
-
"pages": {
|
|
1519
|
-
"guide": "User guide",
|
|
1520
|
-
"start": "Getting started",
|
|
1521
|
-
"setup": "Setup",
|
|
1522
|
-
"faq": "FAQ",
|
|
1523
|
-
"notes": "Release notes"
|
|
1524
|
-
}
|
|
1525
|
-
}
|
|
1526
|
-
},
|
|
1527
|
-
"progressDocs": {
|
|
1528
|
-
"testRun": {
|
|
1529
|
-
"passed": "Passed",
|
|
1530
|
-
"failed": "Failed",
|
|
1531
|
-
"blocked": "Blocked",
|
|
1532
|
-
"notRun": "Not run",
|
|
1533
|
-
"caption": "Regression suite — {total} cases"
|
|
1534
|
-
}
|
|
1535
|
-
},
|
|
1536
|
-
"breadcrumbExamples": {
|
|
1537
|
-
"ellipsisTitle": "ellipsis · a long segment on one line",
|
|
1538
|
-
"ellipsisDescription": "ellipsis on a segment keeps the trail on one line and cuts that label with \"…\"; the full label shows in a tooltip on hover and when the crumb link takes keyboard focus. antd Breadcrumb has no per-item ellipsis — the shape is Typography’s. PageContainer breadcrumb takes the same item field.",
|
|
1539
|
-
"ellipsisAria": "Truncated breadcrumb",
|
|
1540
|
-
"home": "Home",
|
|
1541
|
-
"longSuite": "Q3 integration test · payment module · invoice re-issue scenarios",
|
|
1542
|
-
"longSection": "Acceptance criteria review for the release candidate of September 2026"
|
|
1543
|
-
},
|
|
1544
|
-
"timelineDocs": {
|
|
1545
|
-
"log": {
|
|
1546
|
-
"title": "status=\"log\" (activity log)",
|
|
1547
|
-
"description": "For a record of things that already happened, such as an issue history, use status=\"log\": a neutral dot and hairline rail, and no “Completed:” / “Upcoming:” prefix read out (antd's gray item).",
|
|
1548
|
-
"status": "Tanaka changed the status Open → In progress",
|
|
1549
|
-
"comment": "Nguyen commented",
|
|
1550
|
-
"assignee": "Tanaka changed the assignee"
|
|
1551
|
-
}
|
|
1552
|
-
},
|
|
1553
|
-
"textDiffDocs": {
|
|
1554
|
-
"subtitle": "Show what changed between two versions of a text, as removals and additions",
|
|
1555
|
-
"source": {
|
|
1556
|
-
"title": "See what changed in the original",
|
|
1557
|
-
"description": "The original a translation was written against, compared with the original now. Japanese is compared character by character, so changing one particle does not mark the whole sentence."
|
|
1558
|
-
},
|
|
1559
|
-
"policy": {
|
|
1560
|
-
"title": "Policy revision (side by side)",
|
|
1561
|
-
"description": "Unchanged lines fold away behind a button. Removals are struck through and additions underlined, so colour is never the only signal.",
|
|
1562
|
-
"before": "Before revision",
|
|
1563
|
-
"after": "After revision"
|
|
1564
|
-
},
|
|
1565
|
-
"words": {
|
|
1566
|
-
"title": "Alphabetic text, word by word",
|
|
1567
|
-
"description": "Languages that separate words with spaces are compared per word. Pass granularity=\"line\" to compare whole lines."
|
|
1568
|
-
}
|
|
1569
|
-
},
|
|
1570
|
-
"badgeDocs": {
|
|
1571
|
-
"longLabels": {
|
|
1572
|
-
"title": "Long labels",
|
|
1573
|
-
"description": "A chip never wraps: a label wider than its container ends in an ellipsis (gh#1101), and when it was cut the full text opens in a tooltip on hover and on keyboard focus of the link or row around the chip (gh#1105). No extra props in a table cell or a Card.",
|
|
1574
|
-
"sample": "Via team · Platform infrastructure operations (East Japan region, night-shift rotation group 2)"
|
|
1575
|
-
}
|
|
1576
|
-
},
|
|
1577
|
-
"markdownDocs": {
|
|
1578
|
-
"subtitle": "@godxjp/markdown · GFM + heading anchors + sanitiser · renderer v{version}",
|
|
1579
|
-
"page": {
|
|
1580
|
-
"title": "Page body",
|
|
1581
|
-
"description": "Tables, checklists, code, footnotes, Mermaid. A Mermaid fence becomes a diagram only after its generated SVG passes the check; until then it shows as code."
|
|
1582
|
-
},
|
|
1583
|
-
"hostile": {
|
|
1584
|
-
"title": "A hostile body",
|
|
1585
|
-
"description": "Raw HTML never becomes elements, and javascript: and data: URLs are removed."
|
|
1586
|
-
}
|
|
1587
|
-
},
|
|
1588
|
-
"markdownEditorDocs": {
|
|
1589
|
-
"subtitle": "@godxjp/editor · formatting toolbar · write / preview / side by side · paste or drop to attach",
|
|
1590
|
-
"edit": {
|
|
1591
|
-
"title": "Edit a page",
|
|
1592
|
-
"description": "⌘/Ctrl + B, I, K for bold, italic, link. Shortcuts never fire during IME composition.",
|
|
1593
|
-
"label": "Body",
|
|
1594
|
-
"save": "Save"
|
|
1595
|
-
},
|
|
1596
|
-
"readOnly": {
|
|
1597
|
-
"title": "Read-only",
|
|
1598
|
-
"description": "The toolbar stays focusable, but its actions do nothing.",
|
|
1599
|
-
"label": "Body (view only)"
|
|
1600
|
-
}
|
|
1601
|
-
},
|
|
1602
|
-
"blockEditorDocs": {
|
|
1603
|
-
"subtitle": "@godxjp/block-editor · / block menu · drag handle · format toolbar · saves Markdown",
|
|
1604
|
-
"edit": {
|
|
1605
|
-
"title": "Edit a page",
|
|
1606
|
-
"description": "Type / for blocks, select text for formatting, drag ⋮⋮ to move a block (Alt+Shift+↑↓ from the keyboard).",
|
|
1607
|
-
"label": "Body",
|
|
1608
|
-
"save": "Save"
|
|
1609
|
-
},
|
|
1610
|
-
"markdown": {
|
|
1611
|
-
"title": "What it saves",
|
|
1612
|
-
"description": "The canonical Markdown — exactly what normalize() from @godxjp/markdown/codec returns.",
|
|
1613
|
-
"label": "Markdown"
|
|
1614
|
-
},
|
|
1615
|
-
"readOnly": {
|
|
1616
|
-
"title": "Read-only",
|
|
1617
|
-
"description": "No handle, no menus; the body renders as Prose.",
|
|
1618
|
-
"label": "Body (view only)"
|
|
1619
|
-
},
|
|
1620
|
-
"pages": {
|
|
1621
|
-
"guide": "Design guide",
|
|
1622
|
-
"setup": "Setup",
|
|
1623
|
-
"release": "Release steps"
|
|
1624
|
-
}
|
|
1625
|
-
},
|
|
1626
|
-
"pageCoverDocs": {
|
|
1627
|
-
"title": "Quarterly planning notes",
|
|
1628
|
-
"icon": "Page icon",
|
|
1629
|
-
"reposition": "Reposition",
|
|
1630
|
-
"done": "Done",
|
|
1631
|
-
"body": "Drag the cover while repositioning, or use the arrow keys; the icon opens the emoji picker.",
|
|
1632
|
-
"position": "Focal point: {value}% from the top"
|
|
1633
|
-
},
|
|
1634
|
-
"emojiPickerDocs": {
|
|
1635
|
-
"subtitle": "Search in your language · categories · recents · keyboard grid",
|
|
1636
|
-
"title": "Choose a page icon",
|
|
1637
|
-
"description": "Type a keyword in the current language, or browse the categories. Arrow keys move through the grid; Enter picks.",
|
|
1638
|
-
"label": "Icon",
|
|
1639
|
-
"chosen": "Chosen: {icon}",
|
|
1640
|
-
"none": "No icon"
|
|
1641
|
-
},
|
|
1642
|
-
"dialogWidthDocs": {
|
|
1643
|
-
"title": "Wide dialog (width)",
|
|
1644
|
-
"description": "DialogContent width sizes the panel for an overview grid; it is capped at the viewport minus the inset, so it still fits a phone.",
|
|
1645
|
-
"open": "Open the overview",
|
|
1646
|
-
"dialogTitle": "All desktops",
|
|
1647
|
-
"dialogDescription": "A 60rem dialog holding a three-column grid.",
|
|
1648
|
-
"desktop": "Desktop {n}"
|
|
1649
|
-
},
|
|
1650
|
-
"sortableListDocs": {
|
|
1651
|
-
"subtitle": "Drag a grip, or Space · arrows · Space · Esc — every move is announced",
|
|
1652
|
-
"widgetsTitle": "Home widgets",
|
|
1653
|
-
"widgetsDescription": "Order the tiles on your desktop. The order is saved once, when you drop.",
|
|
1654
|
-
"calendar": "Calendar",
|
|
1655
|
-
"mail": "Mail",
|
|
1656
|
-
"tasks": "Tasks",
|
|
1657
|
-
"notes": "Notes",
|
|
1658
|
-
"slot": "Slot {position}",
|
|
1659
|
-
"saved": "Saved order: {order}",
|
|
1660
|
-
"tabsTitle": "Project tabs",
|
|
1661
|
-
"tabsDescription": "A list layout. Billing is locked by your plan, so it cannot be picked up — the others still move past it.",
|
|
1662
|
-
"overview": "Overview",
|
|
1663
|
-
"members": "Members",
|
|
1664
|
-
"billing": "Billing",
|
|
1665
|
-
"audit": "Audit log"
|
|
1666
|
-
},
|
|
1667
|
-
"topbarItemDocs": {
|
|
1668
|
-
"notifications": "Notifications",
|
|
1669
|
-
"notificationsUnread": "Notifications, {count} unread"
|
|
1670
|
-
},
|
|
1671
|
-
"appLauncherDocs": {
|
|
1672
|
-
"requestAccess": "Request access",
|
|
1673
|
-
"allApps": "All apps"
|
|
1674
|
-
},
|
|
1675
|
-
"responsiveGridDocs": {
|
|
1676
|
-
"boardTitle": "Widget board (rowSpan + dense)",
|
|
1677
|
-
"boardDescription": "A 2×1 cell, a tall 1×2 cell (ResponsiveGrid.Item rowSpan={2}) and 1×1 cells. dense lets the small cells fill the space beside the wide and tall ones.",
|
|
1678
|
-
"revenue": "Monthly revenue",
|
|
1679
|
-
"tasks": "Open tasks",
|
|
1680
|
-
"members": "Members",
|
|
1681
|
-
"invoices": "Invoices",
|
|
1682
|
-
"services": "Services",
|
|
1683
|
-
"invitations": "Invitations"
|
|
1684
|
-
},
|
|
1685
|
-
"avatarDocs": {
|
|
1686
|
-
"fitTitle": "Logos: fit=\"contain\"",
|
|
1687
|
-
"fitDescription": "cover (the default) crops to fill — right for a face. contain shows a wide or transparent logo whole.",
|
|
1688
|
-
"logo": "Acme logo"
|
|
1689
|
-
},
|
|
1690
|
-
"sidebarDocs": {
|
|
1691
|
-
"newEntry": "New journal entry"
|
|
1692
|
-
},
|
|
1693
|
-
"rangeTimelineDocs": {
|
|
1694
|
-
"resizeTitle": "Resizable label column, loading, undated rows",
|
|
1695
|
-
"resizeDescription": "Drag the divider in the header (or focus it and use the arrow keys, Shift for bigger steps, Home/End) to widen the label column. The width is controlled, so an app can remember it per user. The switch marks a range as loading; a row without dates shows a hint instead of a bar.",
|
|
1696
|
-
"busyToggle": "Loading a new range",
|
|
1697
|
-
"longTask": "EXSELI-81 Rebuild the contact form and its confirmation email",
|
|
1698
|
-
"undatedTask": "EXSELI-82 Not scheduled yet",
|
|
1699
|
-
"width": "Label column: {width}px",
|
|
1700
|
-
"doneTask": "EXSELI-79 Release notes (done)",
|
|
1701
|
-
"lateTask": "EXSELI-80 Data migration (overdue)",
|
|
1702
|
-
"plannedTask": "EXSELI-84 Payment API (plan 3–7, actual 3–10)",
|
|
1703
|
-
"schedulesTitle": "Schedules: milestones, dependencies, baselines",
|
|
1704
|
-
"schedulesDescription": "A phase heading row with no hint, bars against a baseline (overrun and early labels), a milestone diamond with its hollow baseline, an open-ended row with no end grip, a cancelled row, a finish recorded without a start, and dependency arrows: a violated one gets a focusable marker. Emphasis marks the critical path and an at-risk row.",
|
|
1705
|
-
"baseline": "the baseline",
|
|
1706
|
-
"phase": "Phase 1: Launch",
|
|
1707
|
-
"design": "Design",
|
|
1708
|
-
"build": "Build",
|
|
1709
|
-
"release": "Release",
|
|
1710
|
-
"ops": "Operations (in progress)",
|
|
1711
|
-
"legacy": "Legacy migration (cancelled)",
|
|
1712
|
-
"audit": "Security review (finish only)",
|
|
1713
|
-
"violation": "Release cannot finish before the build"
|
|
1714
|
-
}
|
|
1715
|
-
}
|