@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,265 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
4
|
+
import { Button, Text } from "@godxjp/ui/general";
|
|
5
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
6
|
+
import { Steps } from "@godxjp/ui/navigation";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Steps — multi-step progress indicator. Horizontal or vertical, default or dot style.
|
|
10
|
+
* Drive current from state; use status='error' to mark the active step failed.
|
|
11
|
+
* Composed only from real @godxjp/ui components.
|
|
12
|
+
*/
|
|
13
|
+
const approvalSteps = [
|
|
14
|
+
{ title: "申請", description: "申請者が提出" },
|
|
15
|
+
{ title: "一次審査", description: "部門長レビュー" },
|
|
16
|
+
{ title: "経理承認", description: "経理部チェック" },
|
|
17
|
+
{ title: "完了", description: "支払処理済" },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const onboardingSteps = [
|
|
21
|
+
{ title: "基本情報", subtitle: "必須" },
|
|
22
|
+
{ title: "法人設定", subtitle: "税務情報" },
|
|
23
|
+
{ title: "銀行口座", subtitle: "入出金" },
|
|
24
|
+
{ title: "確認・完了" },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export default function Demo() {
|
|
28
|
+
const [approvalCurrent, setApprovalCurrent] = useState(1);
|
|
29
|
+
const [wizardCurrent, setWizardCurrent] = useState(0);
|
|
30
|
+
const [hasError, setHasError] = useState(false);
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<PageContainer
|
|
34
|
+
title="Steps"
|
|
35
|
+
subtitle="Horizontal + vertical, default + dot · drive current from state"
|
|
36
|
+
>
|
|
37
|
+
<Flex direction="col" gap="lg">
|
|
38
|
+
{/* Horizontal — default style with descriptions */}
|
|
39
|
+
<Card>
|
|
40
|
+
<CardHeader>
|
|
41
|
+
<CardTitle level={2}>水平 · default スタイル (経費承認フロー)</CardTitle>
|
|
42
|
+
<CardDescription>
|
|
43
|
+
items に title + description を渡す。current は 0-based index。 前のステップは
|
|
44
|
+
finish、現在は process、後のステップは wait。
|
|
45
|
+
</CardDescription>
|
|
46
|
+
</CardHeader>
|
|
47
|
+
<CardContent>
|
|
48
|
+
<Steps value={approvalCurrent} items={approvalSteps} />
|
|
49
|
+
</CardContent>
|
|
50
|
+
</Card>
|
|
51
|
+
|
|
52
|
+
{/* Interactive — advance/retreat */}
|
|
53
|
+
<Card>
|
|
54
|
+
<CardHeader>
|
|
55
|
+
<CardTitle level={2}>インタラクティブ · ステップを進む / 戻る</CardTitle>
|
|
56
|
+
<CardDescription>
|
|
57
|
+
onValueChange を渡すと各ステップがクリッカブルになる。ボタンで value
|
|
58
|
+
を制御することもできる。
|
|
59
|
+
</CardDescription>
|
|
60
|
+
</CardHeader>
|
|
61
|
+
<CardContent>
|
|
62
|
+
<Flex direction="col" gap="md">
|
|
63
|
+
<Steps
|
|
64
|
+
value={approvalCurrent}
|
|
65
|
+
items={approvalSteps}
|
|
66
|
+
onValueChange={setApprovalCurrent}
|
|
67
|
+
/>
|
|
68
|
+
<Flex direction="row" gap="sm">
|
|
69
|
+
<Button
|
|
70
|
+
size="sm"
|
|
71
|
+
variant="outline"
|
|
72
|
+
disabled={approvalCurrent === 0}
|
|
73
|
+
onClick={() => setApprovalCurrent((c) => c - 1)}
|
|
74
|
+
>
|
|
75
|
+
戻る
|
|
76
|
+
</Button>
|
|
77
|
+
<Button
|
|
78
|
+
size="sm"
|
|
79
|
+
disabled={approvalCurrent >= approvalSteps.length - 1}
|
|
80
|
+
onClick={() => setApprovalCurrent((c) => c + 1)}
|
|
81
|
+
>
|
|
82
|
+
次へ
|
|
83
|
+
</Button>
|
|
84
|
+
</Flex>
|
|
85
|
+
</Flex>
|
|
86
|
+
</CardContent>
|
|
87
|
+
</Card>
|
|
88
|
+
|
|
89
|
+
{/* Error status on current step */}
|
|
90
|
+
<Card>
|
|
91
|
+
<CardHeader>
|
|
92
|
+
<CardTitle level={2}>status="error" — 現在ステップをエラー表示</CardTitle>
|
|
93
|
+
<CardDescription>
|
|
94
|
+
status prop を error にするとアクティブステップが赤くなる。
|
|
95
|
+
バリデーション失敗時にフォームと組み合わせて使う。
|
|
96
|
+
</CardDescription>
|
|
97
|
+
</CardHeader>
|
|
98
|
+
<CardContent>
|
|
99
|
+
<Flex direction="col" gap="md">
|
|
100
|
+
<Steps value={2} status={hasError ? "error" : "process"} items={approvalSteps} />
|
|
101
|
+
<Button size="sm" variant="outline" onClick={() => setHasError((e) => !e)}>
|
|
102
|
+
{hasError ? "エラーをクリア" : "エラーを発生させる"}
|
|
103
|
+
</Button>
|
|
104
|
+
</Flex>
|
|
105
|
+
</CardContent>
|
|
106
|
+
</Card>
|
|
107
|
+
|
|
108
|
+
{/* Vertical — default style */}
|
|
109
|
+
<Card>
|
|
110
|
+
<CardHeader>
|
|
111
|
+
<CardTitle level={2}>垂直 · default スタイル (法人オンボーディング)</CardTitle>
|
|
112
|
+
<CardDescription>
|
|
113
|
+
orientation="vertical" でサイドバーやサイドパネルに収まる縦型レイアウト。
|
|
114
|
+
</CardDescription>
|
|
115
|
+
</CardHeader>
|
|
116
|
+
<CardContent>
|
|
117
|
+
<Flex direction="row" gap="xl">
|
|
118
|
+
<Steps
|
|
119
|
+
orientation="vertical"
|
|
120
|
+
value={wizardCurrent}
|
|
121
|
+
items={onboardingSteps}
|
|
122
|
+
onValueChange={setWizardCurrent}
|
|
123
|
+
/>
|
|
124
|
+
<Flex direction="col" gap="md" className="flex-1">
|
|
125
|
+
<Text as="p" weight="medium">
|
|
126
|
+
ステップ {wizardCurrent + 1}: {onboardingSteps[wizardCurrent].title}
|
|
127
|
+
</Text>
|
|
128
|
+
<Text as="p" tone="muted">
|
|
129
|
+
このステップのフォームコンテンツがここに表示されます。
|
|
130
|
+
</Text>
|
|
131
|
+
<Flex direction="row" gap="sm">
|
|
132
|
+
<Button
|
|
133
|
+
size="sm"
|
|
134
|
+
variant="outline"
|
|
135
|
+
disabled={wizardCurrent === 0}
|
|
136
|
+
onClick={() => setWizardCurrent((c) => c - 1)}
|
|
137
|
+
>
|
|
138
|
+
戻る
|
|
139
|
+
</Button>
|
|
140
|
+
<Button
|
|
141
|
+
size="sm"
|
|
142
|
+
disabled={wizardCurrent >= onboardingSteps.length - 1}
|
|
143
|
+
onClick={() => setWizardCurrent((c) => c + 1)}
|
|
144
|
+
>
|
|
145
|
+
次へ
|
|
146
|
+
</Button>
|
|
147
|
+
</Flex>
|
|
148
|
+
</Flex>
|
|
149
|
+
</Flex>
|
|
150
|
+
</CardContent>
|
|
151
|
+
</Card>
|
|
152
|
+
|
|
153
|
+
{/* size union — md (default) vs sm */}
|
|
154
|
+
<Card>
|
|
155
|
+
<CardHeader>
|
|
156
|
+
<CardTitle level={2}>size · md (既定) / sm</CardTitle>
|
|
157
|
+
<CardDescription>
|
|
158
|
+
size は各ステップのタイトルと説明の文字サイズを決める。size="md"
|
|
159
|
+
が既定でページ見出し直下の主要フローに使う。size="sm"
|
|
160
|
+
はカードヘッダやサイドパネルなど、周囲の密度に合わせて縮める場合に使う。
|
|
161
|
+
</CardDescription>
|
|
162
|
+
</CardHeader>
|
|
163
|
+
<CardContent>
|
|
164
|
+
<Flex direction="col" gap="lg">
|
|
165
|
+
<Flex direction="col" gap="sm">
|
|
166
|
+
<Text as="p" size="sm" tone="muted">
|
|
167
|
+
size="md"
|
|
168
|
+
</Text>
|
|
169
|
+
<Steps size="md" value={1} items={approvalSteps} />
|
|
170
|
+
</Flex>
|
|
171
|
+
<Flex direction="col" gap="sm">
|
|
172
|
+
<Text as="p" size="sm" tone="muted">
|
|
173
|
+
size="sm"
|
|
174
|
+
</Text>
|
|
175
|
+
<Steps size="sm" value={1} items={approvalSteps} />
|
|
176
|
+
</Flex>
|
|
177
|
+
</Flex>
|
|
178
|
+
</CardContent>
|
|
179
|
+
</Card>
|
|
180
|
+
|
|
181
|
+
{/* 320px stress */}
|
|
182
|
+
<Card>
|
|
183
|
+
<CardHeader>
|
|
184
|
+
<CardTitle level={2}>320px stress · 長いタイトル</CardTitle>
|
|
185
|
+
<CardDescription>
|
|
186
|
+
狭いコンテナで水平 Steps の長い日本語タイトルと説明を確認する。
|
|
187
|
+
</CardDescription>
|
|
188
|
+
</CardHeader>
|
|
189
|
+
<CardContent>
|
|
190
|
+
<Card className="max-w-80">
|
|
191
|
+
<CardContent>
|
|
192
|
+
<Steps
|
|
193
|
+
value={1}
|
|
194
|
+
items={[
|
|
195
|
+
{ title: "会社情報の入力", description: "法人番号と所在地" },
|
|
196
|
+
{ title: "本人確認書類のアップロード", description: "代表者の確認" },
|
|
197
|
+
{ title: "申請内容の最終確認", description: "送信前の確認" },
|
|
198
|
+
]}
|
|
199
|
+
/>
|
|
200
|
+
</CardContent>
|
|
201
|
+
</Card>
|
|
202
|
+
</CardContent>
|
|
203
|
+
</Card>
|
|
204
|
+
|
|
205
|
+
{/* Dot style — compact */}
|
|
206
|
+
<Card>
|
|
207
|
+
<CardHeader>
|
|
208
|
+
<CardTitle level={2}>Dot スタイル · コンパクト (type="dot")</CardTitle>
|
|
209
|
+
<CardDescription>
|
|
210
|
+
type="dot" + size="sm" で最小フットプリントのプログレスガイド。
|
|
211
|
+
サイドバーのオンボーディングチェックリストに最適。
|
|
212
|
+
</CardDescription>
|
|
213
|
+
</CardHeader>
|
|
214
|
+
<CardContent>
|
|
215
|
+
<Steps
|
|
216
|
+
type="dot"
|
|
217
|
+
size="sm"
|
|
218
|
+
orientation="vertical"
|
|
219
|
+
defaultValue={2}
|
|
220
|
+
titlePlacement="horizontal"
|
|
221
|
+
items={[
|
|
222
|
+
{ title: "会社情報", status: "finish" },
|
|
223
|
+
{ title: "代表者情報", status: "finish" },
|
|
224
|
+
{ title: "税務署設定" },
|
|
225
|
+
{ title: "銀行口座" },
|
|
226
|
+
{ title: "完了確認" },
|
|
227
|
+
]}
|
|
228
|
+
/>
|
|
229
|
+
</CardContent>
|
|
230
|
+
</Card>
|
|
231
|
+
|
|
232
|
+
{/* Inline row — the hosted-identity / device progression (gh#12) */}
|
|
233
|
+
<Card>
|
|
234
|
+
<CardHeader>
|
|
235
|
+
<CardTitle level={2}>
|
|
236
|
+
Inline 行 · 区切りグリフ (type="inline" · separator)
|
|
237
|
+
</CardTitle>
|
|
238
|
+
<CardDescription>
|
|
239
|
+
認証・デバイス系の 1 行プログレス。区切りは既定が chevron (›)、 正典のホステッド ID
|
|
240
|
+
画面は arrow (→) — chevron は「掘り下げる」、arrow
|
|
241
|
+
は「次へ」を意味し、ステップ行の意味は後者。 番号の強調(既定は太字 /
|
|
242
|
+
正典はアクセント色)は --steps-inline-index-color / --steps-inline-index-font-weight
|
|
243
|
+
で、アプリ CSS を書かずに切り替える。
|
|
244
|
+
</CardDescription>
|
|
245
|
+
</CardHeader>
|
|
246
|
+
<CardContent>
|
|
247
|
+
<Flex direction="col" gap="md">
|
|
248
|
+
<Steps
|
|
249
|
+
type="inline"
|
|
250
|
+
value={1}
|
|
251
|
+
items={[{ title: "コード入力" }, { title: "確認" }, { title: "完了" }]}
|
|
252
|
+
/>
|
|
253
|
+
<Steps
|
|
254
|
+
type="inline"
|
|
255
|
+
separator="arrow"
|
|
256
|
+
value={1}
|
|
257
|
+
items={[{ title: "コード入力" }, { title: "確認" }, { title: "完了" }]}
|
|
258
|
+
/>
|
|
259
|
+
</Flex>
|
|
260
|
+
</CardContent>
|
|
261
|
+
</Card>
|
|
262
|
+
</Flex>
|
|
263
|
+
</PageContainer>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Card, CardContent, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
2
|
+
import { PageContainer } from "@godxjp/ui/layout";
|
|
3
|
+
import { Tabs } from "@godxjp/ui/navigation";
|
|
4
|
+
|
|
5
|
+
export default function Demo() {
|
|
6
|
+
return (
|
|
7
|
+
<div dir="rtl" lang="ar">
|
|
8
|
+
<PageContainer title="علامات التبويب" subtitle="RTL keyboard and layout evidence">
|
|
9
|
+
<Card>
|
|
10
|
+
<CardHeader>
|
|
11
|
+
<CardTitle as="h2">إعدادات الحساب</CardTitle>
|
|
12
|
+
</CardHeader>
|
|
13
|
+
<CardContent>
|
|
14
|
+
<Tabs
|
|
15
|
+
dir="rtl"
|
|
16
|
+
defaultValue="profile"
|
|
17
|
+
items={[
|
|
18
|
+
{ value: "profile", label: "الملف الشخصي", content: "معلومات الملف الشخصي" },
|
|
19
|
+
{ value: "security", label: "الأمان", content: "إعدادات الأمان" },
|
|
20
|
+
{ value: "recovery", label: "الاسترداد", content: "طرق الاسترداد" },
|
|
21
|
+
]}
|
|
22
|
+
/>
|
|
23
|
+
</CardContent>
|
|
24
|
+
</Card>
|
|
25
|
+
</PageContainer>
|
|
26
|
+
</div>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
|
|
4
|
+
import { Button, Text } from "@godxjp/ui/general";
|
|
5
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
6
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@godxjp/ui/navigation";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Tabs — Radix tab container with items API and three variants (default / line / card).
|
|
10
|
+
* Use items for the common full set; compose TabsList/TabsTrigger/TabsContent manually
|
|
11
|
+
* when you need per-panel control (forceMount, custom props).
|
|
12
|
+
* Composed only from real @godxjp/ui components.
|
|
13
|
+
*/
|
|
14
|
+
const journalItems = [
|
|
15
|
+
{
|
|
16
|
+
value: "pending",
|
|
17
|
+
label: "未承認",
|
|
18
|
+
content: (
|
|
19
|
+
<Flex direction="col" gap="sm">
|
|
20
|
+
<Text as="p">JE-0042 · 売上計上 株式会社山田商事 ¥480,000</Text>
|
|
21
|
+
<Text as="p">JE-0043 · 仕入計上 有限会社田中工業 ¥120,000</Text>
|
|
22
|
+
</Flex>
|
|
23
|
+
),
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
value: "posted",
|
|
27
|
+
label: "承認済",
|
|
28
|
+
content: (
|
|
29
|
+
<Flex direction="col" gap="sm">
|
|
30
|
+
<Text as="p">JE-0040 · 給与支払 2024年5月分 ¥2,800,000</Text>
|
|
31
|
+
<Text as="p">JE-0041 · 経費精算 交通費 ¥38,500</Text>
|
|
32
|
+
</Flex>
|
|
33
|
+
),
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
value: "voided",
|
|
37
|
+
label: "取消済",
|
|
38
|
+
content: (
|
|
39
|
+
<Text as="p" tone="muted">
|
|
40
|
+
取消済の仕訳はありません。
|
|
41
|
+
</Text>
|
|
42
|
+
),
|
|
43
|
+
disabled: false,
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
export default function Demo() {
|
|
48
|
+
const [activeTab, setActiveTab] = useState("pending");
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<PageContainer
|
|
52
|
+
title="Tabs"
|
|
53
|
+
subtitle="items API (default / line / card variant) + manual compound composition"
|
|
54
|
+
>
|
|
55
|
+
<Flex direction="col" gap="lg">
|
|
56
|
+
{/* items API — default variant (pill) */}
|
|
57
|
+
<Card>
|
|
58
|
+
<CardHeader>
|
|
59
|
+
<CardTitle level={2}>Default variant · items API</CardTitle>
|
|
60
|
+
<CardDescription>
|
|
61
|
+
Pass an items array; Tabs renders all triggers and content panels automatically.
|
|
62
|
+
variant="default" is the pill style.
|
|
63
|
+
</CardDescription>
|
|
64
|
+
</CardHeader>
|
|
65
|
+
<CardContent>
|
|
66
|
+
<Tabs defaultValue="pending" variant="default" items={journalItems} />
|
|
67
|
+
</CardContent>
|
|
68
|
+
</Card>
|
|
69
|
+
|
|
70
|
+
{/* Disabled first item — fallback selection must skip it (gh#175) */}
|
|
71
|
+
<Card>
|
|
72
|
+
<CardHeader>
|
|
73
|
+
<CardTitle level={2}>先頭タブが disabled · フォールバック選択</CardTitle>
|
|
74
|
+
<CardDescription>
|
|
75
|
+
defaultValue/value を渡さない場合、Tabs は先頭の ENABLED タブを自動選択する(disabled
|
|
76
|
+
の先頭タブは選ばない)。全タブが disabled の場合は何も選択しない (gh#175)。
|
|
77
|
+
</CardDescription>
|
|
78
|
+
</CardHeader>
|
|
79
|
+
<CardContent>
|
|
80
|
+
<Tabs
|
|
81
|
+
variant="default"
|
|
82
|
+
items={[
|
|
83
|
+
{
|
|
84
|
+
value: "archived",
|
|
85
|
+
label: "アーカイブ済 (無効)",
|
|
86
|
+
content: <Text as="p">アーカイブ済の仕訳は表示できません。</Text>,
|
|
87
|
+
disabled: true,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
value: "pending",
|
|
91
|
+
label: "未承認",
|
|
92
|
+
content: <Text as="p">未承認の仕訳が 2 件あります。</Text>,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
value: "posted",
|
|
96
|
+
label: "承認済",
|
|
97
|
+
content: <Text as="p">当期承認済: 48 件</Text>,
|
|
98
|
+
},
|
|
99
|
+
]}
|
|
100
|
+
/>
|
|
101
|
+
</CardContent>
|
|
102
|
+
</Card>
|
|
103
|
+
|
|
104
|
+
<Card>
|
|
105
|
+
<CardHeader>
|
|
106
|
+
<CardTitle level={2}>320px stress · 長いローカライズラベル</CardTitle>
|
|
107
|
+
<CardDescription>
|
|
108
|
+
狭いコンテナでも長いラベルはクリップされず、水平タブリストが自身でスクロールする
|
|
109
|
+
(gh#175)。compact navigation への変換は Tabs API に存在しないため擬似実装しない —
|
|
110
|
+
スクロールが意図した縮退動作。
|
|
111
|
+
</CardDescription>
|
|
112
|
+
</CardHeader>
|
|
113
|
+
<CardContent>
|
|
114
|
+
<Card className="max-w-80">
|
|
115
|
+
<CardContent>
|
|
116
|
+
<Tabs
|
|
117
|
+
defaultValue="methods"
|
|
118
|
+
variant="line"
|
|
119
|
+
items={[
|
|
120
|
+
{
|
|
121
|
+
value: "methods",
|
|
122
|
+
label: "サインイン方法とパスワード",
|
|
123
|
+
content: <Text>方法</Text>,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
value: "two-factor",
|
|
127
|
+
label: "二要素認証の設定",
|
|
128
|
+
content: <Text>二要素認証</Text>,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
value: "recovery",
|
|
132
|
+
label: "アカウントの復旧方法",
|
|
133
|
+
content: <Text>復旧</Text>,
|
|
134
|
+
},
|
|
135
|
+
]}
|
|
136
|
+
/>
|
|
137
|
+
</CardContent>
|
|
138
|
+
</Card>
|
|
139
|
+
</CardContent>
|
|
140
|
+
</Card>
|
|
141
|
+
|
|
142
|
+
{/* items API — line variant */}
|
|
143
|
+
<Card>
|
|
144
|
+
<CardHeader>
|
|
145
|
+
<CardTitle level={2}>Line variant · controlled</CardTitle>
|
|
146
|
+
<CardDescription>
|
|
147
|
+
variant="line" renders an underline indicator. Pair value + onValueChange
|
|
148
|
+
when the active tab is driven by parent state (e.g. URL param).
|
|
149
|
+
</CardDescription>
|
|
150
|
+
</CardHeader>
|
|
151
|
+
<CardContent>
|
|
152
|
+
<Tabs
|
|
153
|
+
variant="line"
|
|
154
|
+
value={activeTab}
|
|
155
|
+
onValueChange={setActiveTab}
|
|
156
|
+
items={journalItems}
|
|
157
|
+
/>
|
|
158
|
+
</CardContent>
|
|
159
|
+
</Card>
|
|
160
|
+
|
|
161
|
+
{/* items API — card variant */}
|
|
162
|
+
<Card>
|
|
163
|
+
<CardHeader>
|
|
164
|
+
<CardTitle level={2}>Card variant</CardTitle>
|
|
165
|
+
<CardDescription>
|
|
166
|
+
variant="card" gives each trigger a card-like surface. Good for settings or
|
|
167
|
+
admin profile pages.
|
|
168
|
+
</CardDescription>
|
|
169
|
+
</CardHeader>
|
|
170
|
+
<CardContent>
|
|
171
|
+
<Tabs
|
|
172
|
+
defaultValue="pending"
|
|
173
|
+
variant="card"
|
|
174
|
+
items={[
|
|
175
|
+
{
|
|
176
|
+
value: "pending",
|
|
177
|
+
label: "未承認 (2)",
|
|
178
|
+
content: <Text as="p">未承認の仕訳が 2 件あります。</Text>,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
value: "posted",
|
|
182
|
+
label: "承認済",
|
|
183
|
+
content: <Text as="p">当期承認済: 48 件</Text>,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
value: "voided",
|
|
187
|
+
label: "取消済",
|
|
188
|
+
content: <Text as="p">取消済: 3 件</Text>,
|
|
189
|
+
},
|
|
190
|
+
]}
|
|
191
|
+
/>
|
|
192
|
+
</CardContent>
|
|
193
|
+
</Card>
|
|
194
|
+
|
|
195
|
+
{/* Manual compound — orientation vertical */}
|
|
196
|
+
<Card>
|
|
197
|
+
<CardHeader>
|
|
198
|
+
<CardTitle level={2}>Manual compound · vertical orientation</CardTitle>
|
|
199
|
+
<CardDescription>
|
|
200
|
+
Compose TabsList / TabsTrigger / TabsContent when per-panel control is needed.
|
|
201
|
+
orientation="vertical" goes on the root Tabs element.
|
|
202
|
+
</CardDescription>
|
|
203
|
+
</CardHeader>
|
|
204
|
+
<CardContent>
|
|
205
|
+
<Tabs defaultValue="overview" orientation="vertical" style={{ gap: "var(--space-6)" }}>
|
|
206
|
+
<TabsList variant="line" className="h-auto w-40 flex-col items-stretch">
|
|
207
|
+
<TabsTrigger value="overview">概要</TabsTrigger>
|
|
208
|
+
<TabsTrigger value="ledger">元帳</TabsTrigger>
|
|
209
|
+
<TabsTrigger value="attachments">添付</TabsTrigger>
|
|
210
|
+
</TabsList>
|
|
211
|
+
<Flex direction="col" gap="md" className="flex-1">
|
|
212
|
+
<TabsContent value="overview">
|
|
213
|
+
<Text as="p">取引先: 株式会社山田商事 · 売掛金残高 ¥480,000</Text>
|
|
214
|
+
</TabsContent>
|
|
215
|
+
<TabsContent value="ledger">
|
|
216
|
+
<Text as="p">元帳エントリ: 売掛金 Dr / 売上 Cr ¥480,000</Text>
|
|
217
|
+
</TabsContent>
|
|
218
|
+
<TabsContent value="attachments">
|
|
219
|
+
<Text as="p">添付ファイル: invoice_0042.pdf</Text>
|
|
220
|
+
</TabsContent>
|
|
221
|
+
</Flex>
|
|
222
|
+
</Tabs>
|
|
223
|
+
</CardContent>
|
|
224
|
+
</Card>
|
|
225
|
+
|
|
226
|
+
{/* Controlled with external Button */}
|
|
227
|
+
<Card>
|
|
228
|
+
<CardHeader>
|
|
229
|
+
<CardTitle level={2}>外部制御 · ボタンでタブを切り替え</CardTitle>
|
|
230
|
+
<CardDescription>
|
|
231
|
+
value + onValueChange で親から active tab を制御できる。
|
|
232
|
+
</CardDescription>
|
|
233
|
+
</CardHeader>
|
|
234
|
+
<CardContent>
|
|
235
|
+
<Flex direction="col" gap="md">
|
|
236
|
+
<Flex direction="row" gap="sm">
|
|
237
|
+
<Button
|
|
238
|
+
size="sm"
|
|
239
|
+
variant={activeTab === "pending" ? "default" : "outline"}
|
|
240
|
+
onClick={() => setActiveTab("pending")}
|
|
241
|
+
>
|
|
242
|
+
未承認へ
|
|
243
|
+
</Button>
|
|
244
|
+
<Button
|
|
245
|
+
size="sm"
|
|
246
|
+
variant={activeTab === "posted" ? "default" : "outline"}
|
|
247
|
+
onClick={() => setActiveTab("posted")}
|
|
248
|
+
>
|
|
249
|
+
承認済へ
|
|
250
|
+
</Button>
|
|
251
|
+
</Flex>
|
|
252
|
+
<Tabs
|
|
253
|
+
variant="line"
|
|
254
|
+
value={activeTab}
|
|
255
|
+
onValueChange={setActiveTab}
|
|
256
|
+
items={journalItems}
|
|
257
|
+
/>
|
|
258
|
+
</Flex>
|
|
259
|
+
</CardContent>
|
|
260
|
+
</Card>
|
|
261
|
+
|
|
262
|
+
{/* TabsList union — both list variants, hand-composed and named explicitly */}
|
|
263
|
+
<Card>
|
|
264
|
+
<CardHeader>
|
|
265
|
+
<CardTitle level={2}>TabsList variant · default / line</CardTitle>
|
|
266
|
+
<CardDescription>
|
|
267
|
+
手動合成では TabsList に variant を直接指定する。variant="default"
|
|
268
|
+
はピル型のリスト、variant="line" は下線インジケータのリスト。items API
|
|
269
|
+
を使う場合は Tabs の variant がそのまま TabsList に渡る。
|
|
270
|
+
</CardDescription>
|
|
271
|
+
</CardHeader>
|
|
272
|
+
<CardContent>
|
|
273
|
+
<Flex direction="col" gap="lg">
|
|
274
|
+
<Flex direction="col" gap="sm">
|
|
275
|
+
<Text as="p" size="sm" tone="muted">
|
|
276
|
+
variant="default"
|
|
277
|
+
</Text>
|
|
278
|
+
<Tabs defaultValue="summary">
|
|
279
|
+
<TabsList variant="default">
|
|
280
|
+
<TabsTrigger value="summary">サマリ</TabsTrigger>
|
|
281
|
+
<TabsTrigger value="detail">明細</TabsTrigger>
|
|
282
|
+
</TabsList>
|
|
283
|
+
<TabsContent value="summary">
|
|
284
|
+
<Text as="p">当月の売上合計 ¥4,820,000</Text>
|
|
285
|
+
</TabsContent>
|
|
286
|
+
<TabsContent value="detail">
|
|
287
|
+
<Text as="p">明細 24 件 · 未承認 2 件</Text>
|
|
288
|
+
</TabsContent>
|
|
289
|
+
</Tabs>
|
|
290
|
+
</Flex>
|
|
291
|
+
<Flex direction="col" gap="sm">
|
|
292
|
+
<Text as="p" size="sm" tone="muted">
|
|
293
|
+
variant="line"
|
|
294
|
+
</Text>
|
|
295
|
+
<Tabs defaultValue="summary">
|
|
296
|
+
<TabsList variant="line">
|
|
297
|
+
<TabsTrigger value="summary">サマリ</TabsTrigger>
|
|
298
|
+
<TabsTrigger value="detail">明細</TabsTrigger>
|
|
299
|
+
</TabsList>
|
|
300
|
+
<TabsContent value="summary">
|
|
301
|
+
<Text as="p">当月の売上合計 ¥4,820,000</Text>
|
|
302
|
+
</TabsContent>
|
|
303
|
+
<TabsContent value="detail">
|
|
304
|
+
<Text as="p">明細 24 件 · 未承認 2 件</Text>
|
|
305
|
+
</TabsContent>
|
|
306
|
+
</Tabs>
|
|
307
|
+
</Flex>
|
|
308
|
+
</Flex>
|
|
309
|
+
</CardContent>
|
|
310
|
+
</Card>
|
|
311
|
+
</Flex>
|
|
312
|
+
</PageContainer>
|
|
313
|
+
);
|
|
314
|
+
}
|