@godxjp/ui 19.1.0 → 19.3.1
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 +25 -128
- package/dist/app/theme-axes.d.ts +4 -15
- package/dist/app/timezones.d.ts +1 -4
- package/dist/components/charts/area-chart.d.ts +2 -3
- package/dist/components/charts/bar-chart.d.ts +2 -3
- package/dist/components/charts/chart-frame.d.ts +7 -16
- package/dist/components/charts/chart-summary.d.ts +2 -2
- package/dist/components/charts/compact-bar-trend.d.ts +9 -24
- package/dist/components/charts/index.d.ts +1 -6
- package/dist/components/data-display/badge.d.ts +20 -14
- package/dist/components/data-display/badge.js +18 -4
- package/dist/components/data-display/card.d.ts +21 -41
- package/dist/components/data-display/carousel.d.ts +1 -2
- package/dist/components/data-display/code-block.d.ts +4 -0
- package/dist/components/data-display/code-block.js +24 -0
- package/dist/components/data-display/data-table.d.ts +15 -37
- package/dist/components/data-display/data-table.js +1 -3
- package/dist/components/data-display/descriptions.d.ts +2 -6
- package/dist/components/data-display/descriptions.js +0 -2
- package/dist/components/data-display/index.d.ts +4 -0
- package/dist/components/data-display/index.js +4 -0
- package/dist/components/data-display/list-row.d.ts +3 -22
- package/dist/components/data-display/permission-matrix.d.ts +7 -20
- package/dist/components/data-display/progress.d.ts +1 -1
- package/dist/components/data-display/prose.d.ts +4 -0
- package/dist/components/data-display/prose.js +20 -0
- package/dist/components/data-display/service-launcher-card.d.ts +3 -10
- package/dist/components/data-display/table.d.ts +20 -80
- package/dist/components/data-display/table.js +0 -3
- package/dist/components/data-display/timeline.d.ts +3 -5
- package/dist/components/data-entry/branch-scope-picker.d.ts +2 -19
- package/dist/components/data-entry/branch-scope-picker.js +0 -1
- package/dist/components/data-entry/calendar.d.ts +3 -2
- package/dist/components/data-entry/calendar.js +58 -3
- package/dist/components/data-entry/command-palette.d.ts +8 -22
- package/dist/components/data-entry/date-picker.d.ts +4 -5
- package/dist/components/data-entry/date-picker.js +6 -1
- package/dist/components/data-entry/date-range-picker.d.ts +1 -1
- package/dist/components/data-entry/date-range-picker.js +8 -3
- package/dist/components/data-entry/form-errors.d.ts +7 -18
- package/dist/components/data-entry/form-field.js +1 -5
- package/dist/components/data-entry/form.d.ts +1 -9
- package/dist/components/data-entry/input.d.ts +16 -14
- package/dist/components/data-entry/input.js +3 -0
- package/dist/components/data-entry/month-picker.js +2 -2
- package/dist/components/data-entry/month-range-picker.d.ts +4 -6
- package/dist/components/data-entry/month-range-picker.js +2 -2
- package/dist/components/data-entry/number-input.d.ts +1 -5
- package/dist/components/data-entry/number-input.js +1 -0
- package/dist/components/data-entry/radio.js +0 -1
- package/dist/components/data-entry/search-select.d.ts +2 -4
- package/dist/components/data-entry/select.d.ts +11 -6
- package/dist/components/data-entry/select.js +4 -2
- package/dist/components/data-entry/switch.js +0 -1
- package/dist/components/data-entry/textarea.d.ts +10 -16
- package/dist/components/data-entry/time-picker.d.ts +3 -5
- package/dist/components/data-entry/upload-types.d.ts +1 -5
- package/dist/components/data-entry/use-upload-draft.d.ts +0 -4
- package/dist/components/feedback/dialog.d.ts +6 -15
- package/dist/components/feedback/overlay-header-tone.d.ts +1 -1
- package/dist/components/feedback/sheet.d.ts +3 -10
- package/dist/components/feedback/sheet.js +1 -1
- package/dist/components/feedback/sonner.js +2 -3
- package/dist/components/general/activity.d.ts +4 -30
- package/dist/components/general/button.js +1 -10
- package/dist/components/general/logo.d.ts +6 -28
- package/dist/components/general/reveal.d.ts +3 -9
- package/dist/components/general/typography.d.ts +1 -3
- package/dist/components/layout/account-chip.d.ts +8 -0
- package/dist/components/layout/account-chip.js +45 -0
- package/dist/components/layout/auth-divider.d.ts +2 -9
- package/dist/components/layout/auth-shell.d.ts +1 -14
- package/dist/components/layout/breadcrumb.d.ts +1 -5
- package/dist/components/layout/centered-shell.d.ts +4 -18
- package/dist/components/layout/error-surface.d.ts +11 -28
- package/dist/components/layout/error-surface.js +4 -1
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/components/layout/index.js +2 -0
- package/dist/components/layout/legal-document-shell.d.ts +5 -28
- package/dist/components/layout/master-detail.d.ts +2 -18
- package/dist/components/layout/page-container.js +0 -1
- package/dist/components/layout/responsive-grid.d.ts +6 -1
- package/dist/components/layout/responsive-grid.js +9 -2
- package/dist/components/layout/service-role-panel.d.ts +7 -19
- package/dist/components/layout/sidebar.d.ts +5 -27
- package/dist/components/layout/sidebar.js +0 -1
- package/dist/components/layout/split-pane.d.ts +0 -7
- package/dist/components/layout/topbar.d.ts +1 -14
- package/dist/components/navigation/app-setting-picker.js +1 -3
- package/dist/components/navigation/filter-bar.d.ts +1 -6
- package/dist/components/navigation/pagination-utils.d.ts +2 -12
- package/dist/components/navigation/tabs-scroll.d.ts +2 -36
- package/dist/components/navigation/tabs.js +4 -8
- package/dist/components/query/data-state.d.ts +2 -2
- package/dist/components/ui/credential-reveal.d.ts +1 -4
- package/dist/components/ui/hover-card.d.ts +1 -2
- package/dist/components/ui/separator.d.ts +2 -15
- package/dist/components/ui/toggle-group.d.ts +1 -5
- package/dist/components/ui/toggle.d.ts +6 -31
- package/dist/email/brand-mark.d.ts +6 -34
- package/dist/email/color.d.ts +7 -17
- package/dist/email/geometry.d.ts +4 -8
- package/dist/email/index.d.ts +4 -48
- package/dist/email/inline-style.d.ts +3 -9
- package/dist/email/urgency.d.ts +2 -7
- package/dist/form/form-context.d.ts +2 -5
- package/dist/form/form-root.d.ts +1 -2
- package/dist/i18n/messages/en.json +4 -0
- package/dist/i18n/messages/ja.json +4 -0
- package/dist/i18n/messages/vi.json +4 -0
- package/dist/inertia/index.d.ts +2 -10
- package/dist/lib/control-styles.d.ts +10 -21
- package/dist/lib/control-styles.js +4 -6
- package/dist/lib/datetime/format-date.d.ts +1 -4
- package/dist/lib/field-a11y.d.ts +11 -68
- package/dist/lib/field-a11y.js +0 -1
- package/dist/lib/format.d.ts +4 -8
- package/dist/lib/hooks.d.ts +6 -12
- package/dist/lib/permission-grid.d.ts +3 -18
- package/dist/lib/query-error.d.ts +3 -3
- package/dist/props/components/app.prop.d.ts +15 -38
- package/dist/props/components/charts.prop.d.ts +2 -3
- package/dist/props/components/data-display.prop.d.ts +55 -72
- package/dist/props/components/data-entry.prop.d.ts +35 -40
- package/dist/props/components/form.prop.d.ts +2 -6
- package/dist/props/components/general.prop.d.ts +11 -27
- package/dist/props/components/layout.prop.d.ts +89 -260
- package/dist/props/components/navigation.prop.d.ts +27 -42
- package/dist/props/registry.d.ts +36 -1
- package/dist/props/registry.js +45 -1
- package/dist/props/vocabulary/data.prop.d.ts +18 -49
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +10 -12
- package/dist/props/vocabulary/layout.prop.d.ts +8 -30
- package/dist/props/vocabulary/shared.prop.d.ts +3 -2
- package/dist/styles/alert-layout.css +1 -32
- package/dist/styles/badge-layout.css +19 -18
- package/dist/styles/base.css +14 -113
- package/dist/styles/card-layout.css +6 -128
- package/dist/styles/chart-layout.css +2 -17
- package/dist/styles/control.css +380 -458
- package/dist/styles/core.css +21 -0
- package/dist/styles/data-display-layout.css +175 -94
- package/dist/styles/data-entry-layout.css +0 -45
- package/dist/styles/density.css +1 -30
- package/dist/styles/dialog-layout.css +5 -69
- package/dist/styles/focus-ring.css +13 -87
- package/dist/styles/fonts.css +1 -31
- package/dist/styles/form-layout.css +7 -91
- package/dist/styles/index.css +2 -20
- package/dist/styles/layout.css +38 -456
- package/dist/styles/logo-layout.css +1 -35
- package/dist/styles/motion.css +3 -42
- package/dist/styles/navigation-layout.css +3 -50
- package/dist/styles/shell-layout.css +37 -403
- package/dist/styles/table-layout.css +16 -274
- package/dist/styles/text-layout.css +7 -21
- package/dist/styles/toggle.css +1 -23
- package/dist/theme/dxs.canonical.css +1 -55
- package/dist/theme/example.service.css +1 -26
- package/dist/theme/famgia.service.css +5 -15
- package/dist/tokens/axes.css +3 -40
- package/dist/tokens/base.css +1 -4
- package/dist/tokens/components/activity.css +6 -42
- package/dist/tokens/components/badge.css +12 -13
- package/dist/tokens/components/banner.css +4 -9
- package/dist/tokens/components/card.css +32 -88
- package/dist/tokens/components/chart.css +9 -26
- package/dist/tokens/components/control.css +37 -222
- package/dist/tokens/components/data-display.css +28 -79
- package/dist/tokens/components/data-entry.css +5 -19
- package/dist/tokens/components/descriptions.css +7 -27
- package/dist/tokens/components/email.css +38 -84
- package/dist/tokens/components/error-surface.css +2 -18
- package/dist/tokens/components/feedback.css +27 -124
- package/dist/tokens/components/form.css +13 -45
- package/dist/tokens/components/legal-document.css +16 -41
- package/dist/tokens/components/list-row.css +11 -36
- package/dist/tokens/components/logo.css +2 -57
- package/dist/tokens/components/navigation.css +16 -94
- package/dist/tokens/components/scroll-area.css +2 -18
- package/dist/tokens/components/separator.css +8 -30
- package/dist/tokens/components/sheet.css +3 -14
- package/dist/tokens/components/shell.css +53 -307
- package/dist/tokens/components/sidebar.css +5 -22
- package/dist/tokens/components/table.css +19 -140
- package/dist/tokens/components/toggle.css +3 -65
- package/dist/tokens/components/upload.css +7 -43
- package/dist/tokens/foundation.css +108 -383
- package/dist/tokens/semantic/layout.css +33 -207
- package/docs/CANONICAL-CONTRACTS.md +206 -0
- package/docs/COMPONENTS.md +157 -0
- package/docs/COMPOSITION-VS-COMPONENT.md +105 -0
- package/docs/CONSUMER-RULES.md +14 -0
- package/docs/CUSTOMER-THEMING.md +162 -0
- package/docs/DATETIME.md +69 -0
- package/docs/DEVELOPMENT.md +173 -0
- package/docs/FORMS.md +143 -0
- package/docs/FRAME-A11Y-CI.md +267 -0
- package/docs/FRAME-COVERAGE-LEDGER.md +123 -0
- package/docs/FRAME-COVERAGE-REPORT.md +140 -0
- package/docs/FRAME-COVERAGE-STANDARD.md +65 -0
- package/docs/FRAME-COVERAGE.md +29 -0
- package/docs/PROPS-REGISTRY.md +61 -0
- package/docs/PROPS-VOCABULARY.md +100 -0
- package/docs/README.md +60 -0
- package/docs/REGISTRY.md +70 -0
- package/docs/SPACING.md +56 -0
- package/docs/STANDARDS-vocabulary-tokens.md +48 -0
- package/docs/TESTING.md +98 -0
- package/docs/TOKENS.md +347 -0
- package/docs/asset-modules.d.ts +46 -0
- package/docs/assets/cover-terrain.svg +6 -0
- package/docs/assets/portrait-amber.svg +5 -0
- package/docs/assets/portrait-clay.svg +5 -0
- package/docs/assets/portrait-indigo.svg +5 -0
- package/docs/assets/portrait-iris.svg +5 -0
- package/docs/assets/portrait-moss.svg +5 -0
- package/docs/assets/portrait-plum.svg +5 -0
- package/docs/assets/portrait-slate.svg +5 -0
- package/docs/charts/compact-bar-trend.tsx +328 -0
- package/docs/charts/size-tiers.tsx +192 -0
- package/docs/data-display/accordion.tsx +99 -0
- package/docs/data-display/avatar.tsx +355 -0
- package/docs/data-display/badge.tsx +283 -0
- package/docs/data-display/card/examples/detail-panel.tsx +106 -0
- package/docs/data-display/card/index.md +3 -0
- package/docs/data-display/card/index.tsx +285 -0
- package/docs/data-display/carousel.tsx +160 -0
- package/docs/data-display/charts.tsx +198 -0
- package/docs/data-display/code-block.tsx +90 -0
- package/docs/data-display/collapsible.tsx +162 -0
- package/docs/data-display/credential-reveal.tsx +145 -0
- package/docs/data-display/data-table/examples/approval-queue.tsx +212 -0
- package/docs/data-display/data-table/examples/grid-features.tsx +158 -0
- package/docs/data-display/data-table/examples/list-page.tsx +175 -0
- package/docs/data-display/data-table/index.md +5 -0
- package/docs/data-display/data-table/index.tsx +295 -0
- package/docs/data-display/descriptions.tsx +143 -0
- package/docs/data-display/empty-state.tsx +164 -0
- package/docs/data-display/hover-card.tsx +181 -0
- package/docs/data-display/list-row.tsx +420 -0
- package/docs/data-display/permission-matrix.tsx +188 -0
- package/docs/data-display/popover-touch.tsx +27 -0
- package/docs/data-display/popover.tsx +246 -0
- package/docs/data-display/progress.tsx +84 -0
- package/docs/data-display/prose.tsx +105 -0
- package/docs/data-display/qr-code.tsx +68 -0
- package/docs/data-display/scroll-area.tsx +303 -0
- package/docs/data-display/service-launcher-card.tsx +145 -0
- package/docs/data-display/stat-card.tsx +99 -0
- package/docs/data-display/table.tsx +251 -0
- package/docs/data-display/timeline.tsx +112 -0
- package/docs/data-display/touch-actions.tsx +36 -0
- package/docs/data-display/tree-list.tsx +107 -0
- package/docs/data-entry/branch-scope-picker.tsx +123 -0
- package/docs/data-entry/calendar.tsx +180 -0
- package/docs/data-entry/cascader.tsx +378 -0
- package/docs/data-entry/checkbox.tsx +256 -0
- package/docs/data-entry/color-picker.tsx +117 -0
- package/docs/data-entry/command-palette.tsx +179 -0
- package/docs/data-entry/command.tsx +262 -0
- package/docs/data-entry/country-picker-recipe.tsx +175 -0
- package/docs/data-entry/date-picker.tsx +191 -0
- package/docs/data-entry/date-range-picker.tsx +149 -0
- package/docs/data-entry/form/examples/employee-settings.tsx +267 -0
- package/docs/data-entry/form/examples/invoice-form.tsx +387 -0
- package/docs/data-entry/form-field/examples/a11y-contract.tsx +240 -0
- package/docs/data-entry/form-field/examples/create-form.tsx +105 -0
- package/docs/data-entry/form-field/index.md +8 -0
- package/docs/data-entry/form-field/index.tsx +330 -0
- package/docs/data-entry/form-inertia.tsx +80 -0
- package/docs/data-entry/form-root.tsx +102 -0
- package/docs/data-entry/form.tsx +724 -0
- package/docs/data-entry/input-otp.tsx +231 -0
- package/docs/data-entry/input.tsx +114 -0
- package/docs/data-entry/label.tsx +100 -0
- package/docs/data-entry/month-picker.tsx +101 -0
- package/docs/data-entry/month-range-picker.tsx +115 -0
- package/docs/data-entry/number-input.tsx +240 -0
- package/docs/data-entry/password-input.tsx +102 -0
- package/docs/data-entry/password-strength.tsx +97 -0
- package/docs/data-entry/radio-group.tsx +95 -0
- package/docs/data-entry/rating.tsx +87 -0
- package/docs/data-entry/search-input.tsx +120 -0
- package/docs/data-entry/select-async-contracts.tsx +108 -0
- package/docs/data-entry/select-matrix.tsx +204 -0
- package/docs/data-entry/select.tsx +369 -0
- package/docs/data-entry/slider.tsx +130 -0
- package/docs/data-entry/switch.tsx +67 -0
- package/docs/data-entry/tag-input.tsx +108 -0
- package/docs/data-entry/textarea.tsx +209 -0
- package/docs/data-entry/time-picker.tsx +99 -0
- package/docs/data-entry/toggle-count.tsx +293 -0
- package/docs/data-entry/toggle-group.tsx +225 -0
- package/docs/data-entry/toggle.tsx +127 -0
- package/docs/data-entry/transfer.tsx +97 -0
- package/docs/data-entry/tree-select.tsx +204 -0
- package/docs/data-entry/upload.tsx +184 -0
- package/docs/feedback/alert-dialog.tsx +270 -0
- package/docs/feedback/alert.tsx +248 -0
- package/docs/feedback/banner.tsx +183 -0
- package/docs/feedback/danger-confirm.tsx +88 -0
- package/docs/feedback/dialog-touch.tsx +24 -0
- package/docs/feedback/dialog.tsx +193 -0
- package/docs/feedback/sheet.tsx +420 -0
- package/docs/feedback/skeleton.tsx +111 -0
- package/docs/feedback/toast.tsx +135 -0
- package/docs/feedback/tooltip.tsx +171 -0
- package/docs/feedback/two-factor-setup.tsx +68 -0
- package/docs/foundation/_email-specimen.ts +274 -0
- package/docs/foundation/colors.tsx +204 -0
- package/docs/foundation/density.tsx +232 -0
- package/docs/foundation/email-tokens.tsx +323 -0
- package/docs/foundation/radius-shadow.tsx +154 -0
- package/docs/foundation/spacing.tsx +211 -0
- package/docs/foundation/typography.tsx +147 -0
- package/docs/general/activity.tsx +224 -0
- package/docs/general/button/examples/destructive-confirm.tsx +90 -0
- package/docs/general/button/examples/form-actions.tsx +85 -0
- package/docs/general/button/examples/toolbar.tsx +160 -0
- package/docs/general/button/index.md +12 -0
- package/docs/general/button/index.tsx +211 -0
- package/docs/general/logo.tsx +131 -0
- package/docs/general/reveal.tsx +41 -0
- package/docs/general/typography.tsx +152 -0
- package/docs/layout/account-chip.tsx +72 -0
- package/docs/layout/admin-collection.tsx +122 -0
- package/docs/layout/app-shell.tsx +374 -0
- package/docs/layout/aspect-ratio.tsx +135 -0
- package/docs/layout/auth-account-summary.tsx +103 -0
- package/docs/layout/auth-divider.tsx +28 -0
- package/docs/layout/auth-footer.tsx +37 -0
- package/docs/layout/auth-identity.tsx +36 -0
- package/docs/layout/auth-recovery/examples/mfa-challenge.md +41 -0
- package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +254 -0
- package/docs/layout/auth-recovery/examples/mobile-390.md +25 -0
- package/docs/layout/auth-recovery/examples/mobile-390.tsx +82 -0
- package/docs/layout/auth-recovery/examples/password-recovery.md +24 -0
- package/docs/layout/auth-recovery/examples/password-recovery.tsx +197 -0
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +27 -0
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +156 -0
- package/docs/layout/auth-recovery/index.md +140 -0
- package/docs/layout/auth-recovery/index.tsx +96 -0
- package/docs/layout/auth-shell-context.tsx +103 -0
- package/docs/layout/auth-shell-device.tsx +112 -0
- package/docs/layout/auth-shell-registration.tsx +335 -0
- package/docs/layout/auth-shell-variants.tsx +139 -0
- package/docs/layout/auth-shell.tsx +59 -0
- package/docs/layout/auth-stack.tsx +40 -0
- package/docs/layout/centered-shell.tsx +102 -0
- package/docs/layout/error-surface/examples/application-403.tsx +84 -0
- package/docs/layout/error-surface/examples/application-404.tsx +77 -0
- package/docs/layout/error-surface/examples/system-500.tsx +47 -0
- package/docs/layout/error-surface/examples/system-503.tsx +48 -0
- package/docs/layout/error-surface/index.md +153 -0
- package/docs/layout/error-surface/index.tsx +239 -0
- package/docs/layout/flex.tsx +266 -0
- package/docs/layout/legal-document-shell/_data.ts +110 -0
- package/docs/layout/legal-document-shell/examples/desktop-1440.md +12 -0
- package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +83 -0
- package/docs/layout/legal-document-shell/examples/mobile-390.md +22 -0
- package/docs/layout/legal-document-shell/examples/mobile-390.tsx +70 -0
- package/docs/layout/legal-document-shell/examples/tablet-1024.md +3 -0
- package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +84 -0
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +18 -0
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +61 -0
- package/docs/layout/legal-document-shell/index.md +51 -0
- package/docs/layout/legal-document-shell/index.tsx +101 -0
- package/docs/layout/master-detail.tsx +387 -0
- package/docs/layout/org-switcher.tsx +131 -0
- package/docs/layout/page-container.tsx +954 -0
- package/docs/layout/resizable-panel.tsx +419 -0
- package/docs/layout/responsive-grid.tsx +243 -0
- package/docs/layout/separator.tsx +327 -0
- package/docs/layout/service-role-panel.tsx +144 -0
- package/docs/layout/sidebar.tsx +609 -0
- package/docs/layout/split-pane.tsx +468 -0
- package/docs/layout/topbar.tsx +349 -0
- package/docs/navigation/app-setting-picker.tsx +142 -0
- package/docs/navigation/breadcrumb.tsx +135 -0
- package/docs/navigation/context-menu.tsx +123 -0
- package/docs/navigation/dropdown-menu.tsx +213 -0
- package/docs/navigation/filter-bar.tsx +227 -0
- package/docs/navigation/menubar.tsx +141 -0
- package/docs/navigation/navigation-menu.tsx +158 -0
- package/docs/navigation/pagination.tsx +241 -0
- package/docs/navigation/steps.tsx +265 -0
- package/docs/navigation/tabs-rtl.tsx +28 -0
- package/docs/navigation/tabs.tsx +314 -0
- package/docs/navigation/toolbar.tsx +339 -0
- package/docs/providers/app-provider.tsx +191 -0
- package/docs/providers/format-date.tsx +230 -0
- package/docs/query/button-refetch.tsx +160 -0
- package/docs/query/data-state.tsx +192 -0
- package/docs/query/infinite-query-state.tsx +93 -0
- package/docs/query/mutation-feedback.tsx +70 -0
- package/docs/query/prefetch-link.tsx +262 -0
- package/docs/query/touch-actions.tsx +68 -0
- package/docs/showcase/acme-portal.tsx +455 -0
- package/docs/showcase/acme-website.tsx +461 -0
- package/docs/showcase/case1-warehouse-dashboard.tsx +359 -0
- package/docs/showcase/case2-employee-me.tsx +444 -0
- package/docs/showcase/case3-approval-workflow.tsx +529 -0
- package/docs/showcase/case4-login.tsx +313 -0
- package/docs/showcase/case5-shift-calendar.tsx +795 -0
- package/docs/showcase/case6-agency-handy.tsx +1113 -0
- package/docs/showcase/futurelastic-web.tsx +392 -0
- package/docs/showcase/org-switcher.tsx +313 -0
- package/docs/showcase/permission-matrix.tsx +346 -0
- package/docs/showcase/public-landing.tsx +210 -0
- package/docs/showcase/settings-account-sections.tsx +559 -0
- package/docs/showcase/settings-security-mfa.tsx +145 -0
- package/docs/showcase/table-approval-queue.tsx +199 -0
- package/docs/showcase/table-bulk-actions.tsx +460 -0
- package/docs/showcase/table-compact-kintone.tsx +438 -0
- package/docs/showcase/table-conditional-format.tsx +367 -0
- package/docs/showcase/table-crud-list.tsx +544 -0
- package/docs/showcase/table-density.tsx +347 -0
- package/docs/showcase/table-expandable-rows.tsx +480 -0
- package/docs/showcase/table-filter-chips.tsx +456 -0
- package/docs/showcase/table-footer-totals.tsx +314 -0
- package/docs/showcase/table-grouped-subtotals.tsx +391 -0
- package/docs/showcase/table-master-detail.tsx +484 -0
- package/docs/showcase/table-pagination.tsx +327 -0
- package/docs/showcase/table-states.tsx +366 -0
- package/docs/showcase/table-sticky-columns.tsx +376 -0
- package/docs/showcase/table-tree-rows.tsx +444 -0
- package/docs/showcase/table-view-tabs.tsx +488 -0
- package/package.json +9 -12
- package/scripts/_agent-setup.mjs +16 -2
- package/scripts/audit-hook.mjs +3 -13
- package/scripts/init-agent-kit.mjs +1 -14
- package/scripts/postinstall.mjs +12 -12
- package/scripts/ui-audit.mjs +93 -31
- package/scripts/visual-audit-rules.mjs +51 -7
- package/scripts/visual-audit.mjs +118 -47
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
2
|
+
import { Button } from "@godxjp/ui/general";
|
|
3
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
4
|
+
import { Pencil, Plus, Trash2 } from "lucide-react";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Button — the core action primitive. Composed only from real @godxjp/ui
|
|
8
|
+
* components. The reference design: exactly one primary (default) action per view; height
|
|
9
|
+
* comes from the size preset (--control-height); never raw <button>.
|
|
10
|
+
*/
|
|
11
|
+
export default function Demo() {
|
|
12
|
+
return (
|
|
13
|
+
<PageContainer
|
|
14
|
+
title="Button"
|
|
15
|
+
subtitle="variant × size × state · the only action control (never a raw button element)"
|
|
16
|
+
>
|
|
17
|
+
<Flex direction="col" gap="lg">
|
|
18
|
+
<Card>
|
|
19
|
+
<CardHeader>
|
|
20
|
+
<CardTitle level={2}>Count</CardTitle>
|
|
21
|
+
<CardDescription>
|
|
22
|
+
Trailing totals, overflow cap, and explicit zero visibility.
|
|
23
|
+
</CardDescription>
|
|
24
|
+
</CardHeader>
|
|
25
|
+
<CardContent>
|
|
26
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
27
|
+
<Button variant="outline" count={18}>
|
|
28
|
+
保留中
|
|
29
|
+
</Button>
|
|
30
|
+
<Button variant="outline" count={128} overflowCount={99}>
|
|
31
|
+
受信トレイ
|
|
32
|
+
</Button>
|
|
33
|
+
<Button variant="ghost" count={0} showZero>
|
|
34
|
+
完了
|
|
35
|
+
</Button>
|
|
36
|
+
<Button variant="ghost" count={0} showZero={false}>
|
|
37
|
+
非表示のゼロ
|
|
38
|
+
</Button>
|
|
39
|
+
</Flex>
|
|
40
|
+
</CardContent>
|
|
41
|
+
</Card>
|
|
42
|
+
|
|
43
|
+
<Card>
|
|
44
|
+
<CardHeader>
|
|
45
|
+
<CardTitle level={2}>Variants</CardTitle>
|
|
46
|
+
<CardDescription>
|
|
47
|
+
One default (primary) per view. outline / secondary / ghost for supporting actions;
|
|
48
|
+
link for inline navigation; destructive for irreversible actions.
|
|
49
|
+
</CardDescription>
|
|
50
|
+
</CardHeader>
|
|
51
|
+
<CardContent>
|
|
52
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
53
|
+
<Button>確定 Confirm</Button>
|
|
54
|
+
<Button variant="secondary">下書き Draft</Button>
|
|
55
|
+
<Button variant="outline">取消 Cancel</Button>
|
|
56
|
+
<Button variant="dashed">追加 Add row</Button>
|
|
57
|
+
<Button variant="ghost">詳細 Details</Button>
|
|
58
|
+
<Button variant="link">もっと見る More</Button>
|
|
59
|
+
<Button variant="destructive">削除 Delete</Button>
|
|
60
|
+
</Flex>
|
|
61
|
+
</CardContent>
|
|
62
|
+
</Card>
|
|
63
|
+
|
|
64
|
+
<Card>
|
|
65
|
+
<CardHeader>
|
|
66
|
+
<CardTitle level={2}>Shape</CardTitle>
|
|
67
|
+
<CardDescription>
|
|
68
|
+
`shape` sets corner radius from the tokens: default (control radius) / pill (fully
|
|
69
|
+
rounded) / sharp (square). Works with any variant or size.
|
|
70
|
+
</CardDescription>
|
|
71
|
+
</CardHeader>
|
|
72
|
+
<CardContent>
|
|
73
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
74
|
+
<Button shape="default">Default</Button>
|
|
75
|
+
<Button shape="pill">Pill</Button>
|
|
76
|
+
<Button shape="sharp">Sharp</Button>
|
|
77
|
+
<Button shape="pill" variant="outline">
|
|
78
|
+
Pill outline
|
|
79
|
+
</Button>
|
|
80
|
+
<Button shape="sharp" variant="secondary">
|
|
81
|
+
Sharp secondary
|
|
82
|
+
</Button>
|
|
83
|
+
</Flex>
|
|
84
|
+
</CardContent>
|
|
85
|
+
</Card>
|
|
86
|
+
|
|
87
|
+
<Card>
|
|
88
|
+
<CardHeader>
|
|
89
|
+
<CardTitle level={2}>Sizes</CardTitle>
|
|
90
|
+
<CardDescription>
|
|
91
|
+
Height comes from the preset: xs 24 / sm 28 / default 32 / lg 36. Icon-only buttons
|
|
92
|
+
use the square icon-* sizes. icon-xs owns a 12px glyph: an explicit size-4 class on
|
|
93
|
+
its SVG is normalized so compact-density padding cannot collapse. Fine pointers use
|
|
94
|
+
the active --control-height-xs visual square; coarse pointers expand the actual hit
|
|
95
|
+
target to the framework's 44px --control-height-default floor.
|
|
96
|
+
</CardDescription>
|
|
97
|
+
</CardHeader>
|
|
98
|
+
<CardContent>
|
|
99
|
+
<Flex direction="col" gap="md">
|
|
100
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
101
|
+
<Button size="xs">XS</Button>
|
|
102
|
+
<Button size="sm">Small</Button>
|
|
103
|
+
<Button>Default</Button>
|
|
104
|
+
<Button size="lg">Large</Button>
|
|
105
|
+
</Flex>
|
|
106
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
107
|
+
<Button size="icon-xs" variant="ghost" aria-label="Edit">
|
|
108
|
+
<Pencil />
|
|
109
|
+
</Button>
|
|
110
|
+
<Button size="icon-xs" variant="ghost" aria-label="Edit with 16px icon">
|
|
111
|
+
<Pencil className="size-4" />
|
|
112
|
+
</Button>
|
|
113
|
+
<Button size="icon-sm" variant="ghost" aria-label="Edit">
|
|
114
|
+
<Pencil />
|
|
115
|
+
</Button>
|
|
116
|
+
<Button size="icon" variant="outline" aria-label="Add">
|
|
117
|
+
<Plus />
|
|
118
|
+
</Button>
|
|
119
|
+
<Button size="icon-lg" aria-label="Add">
|
|
120
|
+
<Plus />
|
|
121
|
+
</Button>
|
|
122
|
+
</Flex>
|
|
123
|
+
<div className="ui-density-compact">
|
|
124
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
125
|
+
<Button size="icon-xs" variant="ghost" aria-label="Compact edit">
|
|
126
|
+
<Pencil />
|
|
127
|
+
</Button>
|
|
128
|
+
<Button size="icon-xs" variant="ghost" aria-label="Compact edit with 16px icon">
|
|
129
|
+
<Pencil className="size-4" />
|
|
130
|
+
</Button>
|
|
131
|
+
</Flex>
|
|
132
|
+
</div>
|
|
133
|
+
</Flex>
|
|
134
|
+
</CardContent>
|
|
135
|
+
</Card>
|
|
136
|
+
|
|
137
|
+
<Card>
|
|
138
|
+
<CardHeader>
|
|
139
|
+
<CardTitle level={2}>Icon + label, states, and links</CardTitle>
|
|
140
|
+
<CardDescription>
|
|
141
|
+
Leading icons auto-size to 1rem. disabled blocks pointer events (prevents
|
|
142
|
+
double-submit). Use asChild to render a real link with button styling.
|
|
143
|
+
</CardDescription>
|
|
144
|
+
</CardHeader>
|
|
145
|
+
<CardContent>
|
|
146
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
147
|
+
<Button>
|
|
148
|
+
<Plus />
|
|
149
|
+
新規作成 New
|
|
150
|
+
</Button>
|
|
151
|
+
<Button variant="destructive">
|
|
152
|
+
<Trash2 />
|
|
153
|
+
削除 Delete
|
|
154
|
+
</Button>
|
|
155
|
+
<Button disabled>Disabled</Button>
|
|
156
|
+
<Button variant="outline" disabled>
|
|
157
|
+
Disabled
|
|
158
|
+
</Button>
|
|
159
|
+
<Button asChild variant="link">
|
|
160
|
+
<a href="#">Navigate as a link</a>
|
|
161
|
+
</Button>
|
|
162
|
+
</Flex>
|
|
163
|
+
</CardContent>
|
|
164
|
+
</Card>
|
|
165
|
+
|
|
166
|
+
<Card>
|
|
167
|
+
<CardHeader>
|
|
168
|
+
<CardTitle level={2}>Full width</CardTitle>
|
|
169
|
+
<CardDescription>
|
|
170
|
+
`fullWidth` spans the container (`width:100%`) — the prop form of `className="w-full"`
|
|
171
|
+
for stacked auth / dialog-footer actions. Use the prop, not a raw utility (rule #42).
|
|
172
|
+
</CardDescription>
|
|
173
|
+
</CardHeader>
|
|
174
|
+
<CardContent>
|
|
175
|
+
<Flex direction="col" gap="sm" className="max-w-xs">
|
|
176
|
+
<Button fullWidth>ログイン Sign in</Button>
|
|
177
|
+
<Button fullWidth variant="outline">
|
|
178
|
+
アカウント作成 Create account
|
|
179
|
+
</Button>
|
|
180
|
+
</Flex>
|
|
181
|
+
</CardContent>
|
|
182
|
+
</Card>
|
|
183
|
+
|
|
184
|
+
<Card>
|
|
185
|
+
<CardHeader>
|
|
186
|
+
<CardTitle level={2}>Loading</CardTitle>
|
|
187
|
+
<CardDescription>
|
|
188
|
+
`loading` shows a leading spinner, sets `aria-busy`, and blocks activation while
|
|
189
|
+
keeping the label in place (no width jump). `loadingText` swaps the label for an
|
|
190
|
+
i18n-friendly in-flight message.
|
|
191
|
+
</CardDescription>
|
|
192
|
+
</CardHeader>
|
|
193
|
+
<CardContent>
|
|
194
|
+
<Flex direction="row" wrap align="center" gap="md">
|
|
195
|
+
<Button loading loadingText="保存中…">
|
|
196
|
+
保存 Save
|
|
197
|
+
</Button>
|
|
198
|
+
<Button variant="outline" loading loadingText="送信中…">
|
|
199
|
+
送信 Submit
|
|
200
|
+
</Button>
|
|
201
|
+
<Button variant="destructive" loading loadingText="削除中…">
|
|
202
|
+
削除 Delete
|
|
203
|
+
</Button>
|
|
204
|
+
<Button loading>処理中…</Button>
|
|
205
|
+
</Flex>
|
|
206
|
+
</CardContent>
|
|
207
|
+
</Card>
|
|
208
|
+
</Flex>
|
|
209
|
+
</PageContainer>
|
|
210
|
+
);
|
|
211
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
2
|
+
import { Logo, Text } from "@godxjp/ui/general";
|
|
3
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
4
|
+
|
|
5
|
+
/** Logo — token-sized brand mark with decorative and explicitly named accessibility modes. */
|
|
6
|
+
export default function Demo() {
|
|
7
|
+
return (
|
|
8
|
+
<PageContainer title="Logo" subtitle="size · glyph · decorative and named brand marks">
|
|
9
|
+
<Flex direction="col" gap="lg">
|
|
10
|
+
<Card>
|
|
11
|
+
<CardHeader>
|
|
12
|
+
<CardTitle level={2}>Size tiers</CardTitle>
|
|
13
|
+
<CardDescription>
|
|
14
|
+
xs / sm / md(既定)/ lg のトークンサイズ。size はすべてのマークに効きます。箱付き
|
|
15
|
+
glyph の辺と字送りは --logo-size-* と --logo-font-size-*、識別マーク
|
|
16
|
+
(mark="godx")は専用の --logo-godx-size-* (1.5 / 1.75 / 2 / 2.5rem)が
|
|
17
|
+
所有します。識別マークは正方形の viewBox
|
|
18
|
+
に横長カプセルが入るため、同じ視覚重量になるよう箱付き glyph より 1
|
|
19
|
+
段大きく取ります。サービステーマが --logo-godx-size
|
|
20
|
+
を設定すると、全ティアで識別マークの箱を固定できます。
|
|
21
|
+
</CardDescription>
|
|
22
|
+
</CardHeader>
|
|
23
|
+
<CardContent>
|
|
24
|
+
<Flex direction="col" gap="md">
|
|
25
|
+
<Flex direction="row" align="center" wrap gap="md">
|
|
26
|
+
<Logo size="xs" />
|
|
27
|
+
<Logo size="sm" />
|
|
28
|
+
<Logo />
|
|
29
|
+
<Logo size="lg" />
|
|
30
|
+
</Flex>
|
|
31
|
+
{/* The identity mark honours the SAME size prop — it is not a fixed-size mark. */}
|
|
32
|
+
<Flex direction="row" align="center" wrap gap="md">
|
|
33
|
+
<Logo mark="godx" size="xs" label="godx identity mark, xs" />
|
|
34
|
+
<Logo mark="godx" size="sm" label="godx identity mark, sm" />
|
|
35
|
+
<Logo mark="godx" label="godx identity mark, md" />
|
|
36
|
+
<Logo mark="godx" size="lg" label="godx identity mark, lg" />
|
|
37
|
+
</Flex>
|
|
38
|
+
</Flex>
|
|
39
|
+
</CardContent>
|
|
40
|
+
</Card>
|
|
41
|
+
|
|
42
|
+
<Card>
|
|
43
|
+
<CardHeader>
|
|
44
|
+
<CardTitle level={2}>Glyph and accessible name</CardTitle>
|
|
45
|
+
<CardDescription>
|
|
46
|
+
Wordmark と組み合わせる mark は decorative。単独 mark は label で名前を付けます。
|
|
47
|
+
</CardDescription>
|
|
48
|
+
</CardHeader>
|
|
49
|
+
<CardContent>
|
|
50
|
+
<Flex direction="col" gap="md">
|
|
51
|
+
<Flex direction="row" align="center" gap="sm">
|
|
52
|
+
<Logo glyph="GX" />
|
|
53
|
+
<Text weight="bold">godx Admin</Text>
|
|
54
|
+
</Flex>
|
|
55
|
+
<Logo glyph="神" label="Godx" size="lg" />
|
|
56
|
+
<Logo glyph="G" tone="success" label="Godx green identity mark" />
|
|
57
|
+
</Flex>
|
|
58
|
+
</CardContent>
|
|
59
|
+
</Card>
|
|
60
|
+
|
|
61
|
+
<Card>
|
|
62
|
+
<CardHeader>
|
|
63
|
+
<CardTitle level={2}>tone · アイデンティティロール</CardTitle>
|
|
64
|
+
<CardDescription>
|
|
65
|
+
tone は 2 値で、箱付き glyph の塗りを決めます。primary(既定)はアプリのアクション色
|
|
66
|
+
--primary、success はブランドの識別ロール --brand です。--brand
|
|
67
|
+
はステータス緑(--success)とも アクション色とも独立しているため、
|
|
68
|
+
テーマを変えても正規のエメラルドが保たれます。 なお mark="godx"
|
|
69
|
+
の識別マークは tone に関わらず常に --brand で描かれます。size は効きます(上の Size
|
|
70
|
+
tiers を参照)。箱付き glyph は実テキストなので WCAG 2.2 SC 1.4.3 の 4.5:1
|
|
71
|
+
が適用されます(14px bold は large text ではありません)。文字色は
|
|
72
|
+
--logo-identity-foreground(近黒)で、--brand-foreground
|
|
73
|
+
ではありません。後者は識別マークの抜き色(--background に追従)で エメラルド上では
|
|
74
|
+
3.67:1 しかなく、非テキスト(SC 1.4.11)の 3:1 しか満たしません。
|
|
75
|
+
</CardDescription>
|
|
76
|
+
</CardHeader>
|
|
77
|
+
<CardContent>
|
|
78
|
+
<Flex direction="row" wrap gap="lg">
|
|
79
|
+
<Flex direction="col" gap="sm">
|
|
80
|
+
<Logo tone="primary" glyph="GX" size="lg" label="primary tone boxed glyph" />
|
|
81
|
+
<Text size="2xs" mono tone="muted">
|
|
82
|
+
{`tone="primary" · --primary`}
|
|
83
|
+
</Text>
|
|
84
|
+
</Flex>
|
|
85
|
+
<Flex direction="col" gap="sm">
|
|
86
|
+
<Logo tone="success" glyph="GX" size="lg" label="brand tone boxed glyph" />
|
|
87
|
+
<Text size="2xs" mono tone="muted">
|
|
88
|
+
{`tone="success" · --brand`}
|
|
89
|
+
</Text>
|
|
90
|
+
</Flex>
|
|
91
|
+
<Flex direction="col" gap="sm">
|
|
92
|
+
<Logo tone="primary" mark="godx" label="godx identity mark, primary tone" />
|
|
93
|
+
<Text size="2xs" mono tone="muted">
|
|
94
|
+
{`mark="godx" tone="primary" · --brand`}
|
|
95
|
+
</Text>
|
|
96
|
+
</Flex>
|
|
97
|
+
<Flex direction="col" gap="sm">
|
|
98
|
+
<Logo tone="success" mark="godx" label="godx identity mark, brand tone" />
|
|
99
|
+
<Text size="2xs" mono tone="muted">
|
|
100
|
+
{`mark="godx" tone="success" · --brand`}
|
|
101
|
+
</Text>
|
|
102
|
+
</Flex>
|
|
103
|
+
</Flex>
|
|
104
|
+
</CardContent>
|
|
105
|
+
</Card>
|
|
106
|
+
|
|
107
|
+
<Card>
|
|
108
|
+
<CardHeader>
|
|
109
|
+
<CardTitle level={2}>Wordmark lockup</CardTitle>
|
|
110
|
+
<CardDescription>
|
|
111
|
+
wordmark を渡すと mark + 製品名の lockup になります。GoDX の lockup は --primary
|
|
112
|
+
ではなく identity role(brand green)で着色されるため、
|
|
113
|
+
テーマ変更でブランド色が崩れません。
|
|
114
|
+
</CardDescription>
|
|
115
|
+
</CardHeader>
|
|
116
|
+
<CardContent>
|
|
117
|
+
<Flex direction="col" gap="md">
|
|
118
|
+
{/* Canonical GoDX lockup — brand-green mark + wordmark, one element. */}
|
|
119
|
+
<Logo mark="godx" tone="success" wordmark="GoDX" />
|
|
120
|
+
<Logo mark="godx" tone="success" wordmark="GoDX ID" size="lg" />
|
|
121
|
+
{/* Boxed-glyph lockup for a product brand that is not the GoDX identity. */}
|
|
122
|
+
<Logo glyph="GX" wordmark="godx Admin" size="sm" />
|
|
123
|
+
{/* label overrides the lockup name when the wordmark alone is ambiguous. */}
|
|
124
|
+
<Logo mark="godx" wordmark="GoDX" label="GoDX ID ホーム" />
|
|
125
|
+
</Flex>
|
|
126
|
+
</CardContent>
|
|
127
|
+
</Card>
|
|
128
|
+
</Flex>
|
|
129
|
+
</PageContainer>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Card, CardContent, StatCard } from "@godxjp/ui/data-display";
|
|
2
|
+
import { Reveal } from "@godxjp/ui/general";
|
|
3
|
+
import { Flex, PageContainer, ResponsiveGrid } from "@godxjp/ui/layout";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Reveal — the official entrance-motion primitive (staggered fade-up). Reads the DS motion tokens
|
|
7
|
+
* (`--duration-slow`, `--ease-emphasized`, `--reveal-distance`, `--reveal-stagger-step`) and honours
|
|
8
|
+
* `prefers-reduced-motion`, replacing hand-rolled `@keyframes` + `.app-reveal`/`.d1..d6` classes.
|
|
9
|
+
* Composed only from real @godxjp/ui components.
|
|
10
|
+
*/
|
|
11
|
+
export default function Demo() {
|
|
12
|
+
const stats = [
|
|
13
|
+
{ label: "本日の売上", value: "¥1,240,000" },
|
|
14
|
+
{ label: "新規顧客", value: "38" },
|
|
15
|
+
{ label: "未処理", value: "12" },
|
|
16
|
+
{ label: "承認待ち", value: "5" },
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<PageContainer
|
|
21
|
+
title="Reveal"
|
|
22
|
+
subtitle="Staggered fade-up entrance · reads motion tokens · respects prefers-reduced-motion"
|
|
23
|
+
>
|
|
24
|
+
<Flex direction="col" gap="lg">
|
|
25
|
+
<Reveal>
|
|
26
|
+
<Card>
|
|
27
|
+
<CardContent>単一のカードが読み込み時にフェードアップします。</CardContent>
|
|
28
|
+
</Card>
|
|
29
|
+
</Reveal>
|
|
30
|
+
|
|
31
|
+
<ResponsiveGrid columns={{ sm: 2, lg: 4 }}>
|
|
32
|
+
{stats.map((stat, i) => (
|
|
33
|
+
<Reveal key={stat.label} delay={(i + 1) as 1 | 2 | 3 | 4}>
|
|
34
|
+
<StatCard label={stat.label} value={stat.value} />
|
|
35
|
+
</Reveal>
|
|
36
|
+
))}
|
|
37
|
+
</ResponsiveGrid>
|
|
38
|
+
</Flex>
|
|
39
|
+
</PageContainer>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Button, Heading, Text } from "@godxjp/ui/general";
|
|
2
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
3
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Text + Heading — the typographic primitives. Use these INSTEAD of a hand-rolled
|
|
7
|
+
* `<span className="text-[13px] font-medium text-muted-foreground">`. Size is a step of the
|
|
8
|
+
* golden-ratio type scale (never an arbitrary px); tone/weight are semantic tokens.
|
|
9
|
+
*/
|
|
10
|
+
const sizes = ["2xs", "xs", "sm", "md", "lg", "xl", "2xl"] as const;
|
|
11
|
+
const tones = ["default", "muted", "primary", "success", "warning", "destructive", "info"] as const;
|
|
12
|
+
const levels = [1, 2, 3, 4] as const;
|
|
13
|
+
|
|
14
|
+
/** Heading tone — every branch paired with the section it actually belongs on. */
|
|
15
|
+
const headingTones = [
|
|
16
|
+
{ tone: "default", title: "請求サマリー" },
|
|
17
|
+
{ tone: "muted", title: "補足情報" },
|
|
18
|
+
{ tone: "primary", title: "今月の重点項目" },
|
|
19
|
+
{ tone: "success", title: "月次締め処理が完了しました" },
|
|
20
|
+
{ tone: "warning", title: "承認待ちの申請があります" },
|
|
21
|
+
{ tone: "destructive", title: "同期に失敗した明細" },
|
|
22
|
+
{ tone: "info", title: "システムメンテナンスのお知らせ" },
|
|
23
|
+
] as const;
|
|
24
|
+
|
|
25
|
+
export default function Demo() {
|
|
26
|
+
return (
|
|
27
|
+
<PageContainer
|
|
28
|
+
title="Typography"
|
|
29
|
+
subtitle="Text + Heading · token-driven type, never an arbitrary px className"
|
|
30
|
+
>
|
|
31
|
+
<Flex direction="col" gap="lg">
|
|
32
|
+
<Card>
|
|
33
|
+
<CardHeader>
|
|
34
|
+
<CardTitle level={2}>Heading levels</CardTitle>
|
|
35
|
+
<CardDescription>
|
|
36
|
+
level sets BOTH the --heading-h* size token and the semantic <h1..h4> element.
|
|
37
|
+
</CardDescription>
|
|
38
|
+
</CardHeader>
|
|
39
|
+
<CardContent>
|
|
40
|
+
<Flex direction="col" gap="sm">
|
|
41
|
+
{levels.map((level) => (
|
|
42
|
+
<Heading key={level} level={level}>
|
|
43
|
+
H{level} · 請求書一覧
|
|
44
|
+
</Heading>
|
|
45
|
+
))}
|
|
46
|
+
</Flex>
|
|
47
|
+
</CardContent>
|
|
48
|
+
</Card>
|
|
49
|
+
|
|
50
|
+
<Card>
|
|
51
|
+
<CardHeader>
|
|
52
|
+
<CardTitle level={2}>Heading tone</CardTitle>
|
|
53
|
+
<CardDescription>
|
|
54
|
+
level は文書構造、tone は意味です。見出しの tone は Text
|
|
55
|
+
と同じ意味論トークンを読むため、 節の状態を色で示しても文書階層は変わりません。
|
|
56
|
+
</CardDescription>
|
|
57
|
+
</CardHeader>
|
|
58
|
+
<CardContent>
|
|
59
|
+
<Flex direction="col" gap="md">
|
|
60
|
+
{headingTones.map(({ tone, title }) => (
|
|
61
|
+
<Flex key={tone} direction="col" gap="xs">
|
|
62
|
+
<Heading level={3} tone={tone}>
|
|
63
|
+
{title}
|
|
64
|
+
</Heading>
|
|
65
|
+
<Text size="2xs" mono tone="muted">
|
|
66
|
+
{`tone="${tone}"`}
|
|
67
|
+
</Text>
|
|
68
|
+
</Flex>
|
|
69
|
+
))}
|
|
70
|
+
</Flex>
|
|
71
|
+
</CardContent>
|
|
72
|
+
</Card>
|
|
73
|
+
|
|
74
|
+
<Card>
|
|
75
|
+
<CardHeader>
|
|
76
|
+
<CardTitle level={2}>Text sizes</CardTitle>
|
|
77
|
+
<CardDescription>
|
|
78
|
+
size is a type-scale step (2xs / xs / sm / md / lg / xl) — sm is the base. No px.
|
|
79
|
+
</CardDescription>
|
|
80
|
+
</CardHeader>
|
|
81
|
+
<CardContent>
|
|
82
|
+
<Flex direction="col" gap="xs">
|
|
83
|
+
{sizes.map((size) => (
|
|
84
|
+
<Text key={size} size={size}>
|
|
85
|
+
{size} — 関連する仕訳データを表示します
|
|
86
|
+
</Text>
|
|
87
|
+
))}
|
|
88
|
+
</Flex>
|
|
89
|
+
</CardContent>
|
|
90
|
+
</Card>
|
|
91
|
+
|
|
92
|
+
<Card>
|
|
93
|
+
<CardHeader>
|
|
94
|
+
<CardTitle level={2}>Tone + weight</CardTitle>
|
|
95
|
+
<CardDescription>
|
|
96
|
+
tone maps to semantic foreground tokens; weight is the 3-weight canon (400/500/700).
|
|
97
|
+
</CardDescription>
|
|
98
|
+
</CardHeader>
|
|
99
|
+
<CardContent>
|
|
100
|
+
<Flex direction="col" gap="sm">
|
|
101
|
+
<Flex direction="row" gap="md" wrap align="center">
|
|
102
|
+
{tones.map((tone) => (
|
|
103
|
+
<Text key={tone} tone={tone} weight="medium">
|
|
104
|
+
{tone}
|
|
105
|
+
</Text>
|
|
106
|
+
))}
|
|
107
|
+
</Flex>
|
|
108
|
+
<Flex direction="row" gap="md" wrap align="center">
|
|
109
|
+
<Text weight="regular">Regular 400</Text>
|
|
110
|
+
<Text weight="medium">Medium 500</Text>
|
|
111
|
+
<Text weight="bold">Bold 700</Text>
|
|
112
|
+
</Flex>
|
|
113
|
+
</Flex>
|
|
114
|
+
</CardContent>
|
|
115
|
+
</Card>
|
|
116
|
+
|
|
117
|
+
<Card>
|
|
118
|
+
<CardHeader>
|
|
119
|
+
<CardTitle level={2}>Numbers, codes, truncation</CardTitle>
|
|
120
|
+
<CardDescription>
|
|
121
|
+
tabular for figures, mono for ids, truncate for one line, clamp for N lines.
|
|
122
|
+
</CardDescription>
|
|
123
|
+
</CardHeader>
|
|
124
|
+
<CardContent>
|
|
125
|
+
<Flex direction="col" gap="sm">
|
|
126
|
+
<Text tabular weight="medium">
|
|
127
|
+
¥1,240,000
|
|
128
|
+
</Text>
|
|
129
|
+
<Text size="xs" mono tone="muted">
|
|
130
|
+
RC-204881 · JAN 4987241135219
|
|
131
|
+
</Text>
|
|
132
|
+
<Text truncate className="max-w-64">
|
|
133
|
+
とても長い説明テキストが一行に収まらない場合は省略記号で切り詰められます。
|
|
134
|
+
</Text>
|
|
135
|
+
{/* clamp={2} — the card-description case (dxs-platform/platform#427): a long
|
|
136
|
+
* Japanese description limited to 2 lines, full text kept in the DOM. */}
|
|
137
|
+
<Text as="p" size="sm" tone="muted" clamp={2} className="max-w-64">
|
|
138
|
+
クラウド会計・請求書発行・経費精算・勤怠管理までを一つの契約で提供する統合バックオフィスサービスです。組織の規模や業種に合わせてプランを選択でき、導入後もデータ移行と運用支援を継続的に受けられます。
|
|
139
|
+
</Text>
|
|
140
|
+
<Flex direction="row" gap="sm" align="center">
|
|
141
|
+
<Text>明細を確認してください。</Text>
|
|
142
|
+
<Button size="xs" variant="link">
|
|
143
|
+
詳細
|
|
144
|
+
</Button>
|
|
145
|
+
</Flex>
|
|
146
|
+
</Flex>
|
|
147
|
+
</CardContent>
|
|
148
|
+
</Card>
|
|
149
|
+
</Flex>
|
|
150
|
+
</PageContainer>
|
|
151
|
+
);
|
|
152
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Button } from "@godxjp/ui/general";
|
|
2
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
3
|
+
import {
|
|
4
|
+
Select,
|
|
5
|
+
SelectContent,
|
|
6
|
+
SelectItem,
|
|
7
|
+
SelectTrigger,
|
|
8
|
+
SelectValue,
|
|
9
|
+
} from "@godxjp/ui/data-entry";
|
|
10
|
+
import { AccountChip, Flex, PageContainer } from "@godxjp/ui/layout";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* AccountChip — the signed-in user in a PageContainer `extra` slot, a Topbar or a footer row.
|
|
14
|
+
* Avatar, name and one ghost action at the control tier height, level with the controls beside it.
|
|
15
|
+
*/
|
|
16
|
+
export default function Demo() {
|
|
17
|
+
return (
|
|
18
|
+
<PageContainer
|
|
19
|
+
title="AccountChip"
|
|
20
|
+
subtitle="サインイン中のユーザー(アバター・名前・1 アクション)"
|
|
21
|
+
extra={
|
|
22
|
+
<>
|
|
23
|
+
<Select defaultValue="ja">
|
|
24
|
+
<SelectTrigger width="auto" aria-label="言語">
|
|
25
|
+
<SelectValue />
|
|
26
|
+
</SelectTrigger>
|
|
27
|
+
<SelectContent>
|
|
28
|
+
<SelectItem value="ja">日本語</SelectItem>
|
|
29
|
+
<SelectItem value="en">English</SelectItem>
|
|
30
|
+
<SelectItem value="vi">Tiếng Việt</SelectItem>
|
|
31
|
+
</SelectContent>
|
|
32
|
+
</Select>
|
|
33
|
+
<Button variant="outline">履歴</Button>
|
|
34
|
+
<AccountChip
|
|
35
|
+
name="Satoshi"
|
|
36
|
+
email="satoshi@example.com"
|
|
37
|
+
actionLabel="サインアウト"
|
|
38
|
+
onAction={() => {}}
|
|
39
|
+
/>
|
|
40
|
+
<Button>送信</Button>
|
|
41
|
+
</>
|
|
42
|
+
}
|
|
43
|
+
>
|
|
44
|
+
<Card>
|
|
45
|
+
<CardHeader>
|
|
46
|
+
<CardTitle level={2}>ヘッダー行の中で</CardTitle>
|
|
47
|
+
<CardDescription>
|
|
48
|
+
上の `extra` スロット: Select(width="auto")、Button、AccountChip、Button
|
|
49
|
+
がすべて同じ --control-height に揃います。
|
|
50
|
+
</CardDescription>
|
|
51
|
+
</CardHeader>
|
|
52
|
+
<CardContent>
|
|
53
|
+
<Flex direction="col" gap="md">
|
|
54
|
+
<AccountChip name="Nguyễn Thị Thu Hà" email="thuha@example.com" />
|
|
55
|
+
<AccountChip
|
|
56
|
+
name="Satoshi"
|
|
57
|
+
avatarSrc="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32'><rect width='32' height='32' fill='%23334155'/></svg>"
|
|
58
|
+
actionLabel="Sign out"
|
|
59
|
+
onAction={() => {}}
|
|
60
|
+
/>
|
|
61
|
+
<AccountChip
|
|
62
|
+
name="Disabled action"
|
|
63
|
+
actionLabel="Sign out"
|
|
64
|
+
onAction={() => {}}
|
|
65
|
+
disabled
|
|
66
|
+
/>
|
|
67
|
+
</Flex>
|
|
68
|
+
</CardContent>
|
|
69
|
+
</Card>
|
|
70
|
+
</PageContainer>
|
|
71
|
+
);
|
|
72
|
+
}
|