@godxjp/ui 19.0.0 → 19.2.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 +25 -128
- package/dist/app/app-provider.d.ts +1 -1
- package/dist/app/app-provider.js +3 -0
- 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 +2 -12
- 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/cascader.js +3 -1
- package/dist/components/data-entry/checkbox-group.js +12 -5
- package/dist/components/data-entry/checkbox.js +30 -21
- 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 +12 -3
- package/dist/components/data-entry/date-range-picker.d.ts +1 -1
- package/dist/components/data-entry/date-range-picker.js +17 -6
- package/dist/components/data-entry/form-errors.d.ts +7 -18
- package/dist/components/data-entry/form-field.d.ts +1 -1
- package/dist/components/data-entry/form-field.js +15 -6
- 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 +13 -3
- package/dist/components/data-entry/month-picker.js +6 -4
- package/dist/components/data-entry/month-range-picker.d.ts +4 -6
- package/dist/components/data-entry/month-range-picker.js +11 -5
- 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 +19 -6
- package/dist/components/data-entry/search-select.d.ts +3 -5
- package/dist/components/data-entry/search-select.js +8 -2
- package/dist/components/data-entry/select.d.ts +15 -2
- package/dist/components/data-entry/select.js +57 -10
- package/dist/components/data-entry/switch.js +9 -2
- package/dist/components/data-entry/textarea.d.ts +10 -16
- package/dist/components/data-entry/textarea.js +8 -1
- package/dist/components/data-entry/time-picker.d.ts +3 -5
- package/dist/components/data-entry/tree-select.js +3 -1
- 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 +31 -36
- package/dist/lib/field-a11y.js +16 -2
- 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 +19 -27
- package/dist/props/components/charts.prop.d.ts +2 -3
- package/dist/props/components/data-display.prop.d.ts +48 -72
- package/dist/props/components/data-entry.prop.d.ts +41 -30
- 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 +31 -0
- package/dist/props/registry.js +33 -0
- 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 +4 -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 +4 -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 +247 -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 +156 -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 +184 -0
- package/docs/data-display/popover-touch.tsx +27 -0
- package/docs/data-display/popover.tsx +245 -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 +271 -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 +170 -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 +326 -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 +106 -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 +410 -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 +202 -0
- package/docs/foundation/density.tsx +232 -0
- package/docs/foundation/email-tokens.tsx +306 -0
- package/docs/foundation/radius-shadow.tsx +152 -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 +119 -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 +262 -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 +946 -0
- package/docs/layout/resizable-panel.tsx +419 -0
- package/docs/layout/responsive-grid.tsx +235 -0
- package/docs/layout/separator.tsx +327 -0
- package/docs/layout/service-role-panel.tsx +144 -0
- package/docs/layout/sidebar.tsx +586 -0
- package/docs/layout/split-pane.tsx +451 -0
- package/docs/layout/topbar.tsx +347 -0
- package/docs/navigation/app-setting-picker.tsx +141 -0
- package/docs/navigation/breadcrumb.tsx +128 -0
- package/docs/navigation/context-menu.tsx +117 -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 +165 -0
- package/docs/navigation/pagination.tsx +241 -0
- package/docs/navigation/steps.tsx +263 -0
- package/docs/navigation/tabs-rtl.tsx +28 -0
- package/docs/navigation/tabs.tsx +308 -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 +441 -0
- package/docs/showcase/acme-website.tsx +455 -0
- package/docs/showcase/case1-warehouse-dashboard.tsx +343 -0
- package/docs/showcase/case2-employee-me.tsx +441 -0
- package/docs/showcase/case3-approval-workflow.tsx +527 -0
- package/docs/showcase/case4-login.tsx +307 -0
- package/docs/showcase/case5-shift-calendar.tsx +795 -0
- package/docs/showcase/case6-agency-handy.tsx +1072 -0
- package/docs/showcase/futurelastic-web.tsx +390 -0
- package/docs/showcase/org-switcher.tsx +313 -0
- package/docs/showcase/permission-matrix.tsx +343 -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 +340 -0
- package/docs/showcase/table-expandable-rows.tsx +471 -0
- package/docs/showcase/table-filter-chips.tsx +461 -0
- package/docs/showcase/table-footer-totals.tsx +311 -0
- package/docs/showcase/table-grouped-subtotals.tsx +388 -0
- package/docs/showcase/table-master-detail.tsx +479 -0
- package/docs/showcase/table-pagination.tsx +320 -0
- package/docs/showcase/table-states.tsx +363 -0
- package/docs/showcase/table-sticky-columns.tsx +373 -0
- package/docs/showcase/table-tree-rows.tsx +444 -0
- package/docs/showcase/table-view-tabs.tsx +488 -0
- package/package.json +10 -11
- 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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Showcase · case5 — Security / two-factor settings (Bảo mật · Xác thực hai lớp)
|
|
3
|
+
*
|
|
4
|
+
* The CORRECT build of the screen that keeps getting hand-rolled wrong. Every defect from the
|
|
5
|
+
* freelanced version is fixed here by following rules that ALREADY exist in the godx-ui MCP:
|
|
6
|
+
*
|
|
7
|
+
* ✗ wrong (hand-rolled) ✓ here (rule)
|
|
8
|
+
* ─────────────────────────────────────────────────────────────────────────────────────────
|
|
9
|
+
* factor row = a centered <div> with the ListRow — leading icon · title/description ·
|
|
10
|
+
* title duplicated as its own description trailing action (no redundant copy) (#113)
|
|
11
|
+
* "Xoá" rendered as plain black text destructive-toned ghost button — delete is a
|
|
12
|
+
* destructive action, color carries intent
|
|
13
|
+
* every action a full-width stacked bar right-aligned, auto-width actions; ONE primary
|
|
14
|
+
* (rule 217 explicitly forbids this) per card, secondary = outline (rule 217)
|
|
15
|
+
* 📱 / ✉️ emoji as "icons" lucide icons (no emoji in product UI) (anti-tell)
|
|
16
|
+
* brand glyph = a styled <span> (size/radius Avatar primitive — real brand mark (#116)
|
|
17
|
+
* baked as literals)
|
|
18
|
+
*
|
|
19
|
+
* Built ENTIRELY from real @godxjp/ui primitives. reference-design DNA: small headings, 14/1.7 body,
|
|
20
|
+
* one --primary action, 1px-border surfaces, no resting shadow, quiet factual copy, no emoji.
|
|
21
|
+
*/
|
|
22
|
+
import { KeyRound, Mail, ShieldCheck, Smartphone } from "lucide-react";
|
|
23
|
+
|
|
24
|
+
import { Button, Text } from "@godxjp/ui/general";
|
|
25
|
+
import {
|
|
26
|
+
Avatar,
|
|
27
|
+
AvatarFallback,
|
|
28
|
+
Badge,
|
|
29
|
+
Card,
|
|
30
|
+
CardContent,
|
|
31
|
+
CardDescription,
|
|
32
|
+
CardFooter,
|
|
33
|
+
CardHeader,
|
|
34
|
+
CardTitle,
|
|
35
|
+
ListRow,
|
|
36
|
+
} from "@godxjp/ui/data-display";
|
|
37
|
+
import { Flex, PageContainer } from "@godxjp/ui/layout";
|
|
38
|
+
|
|
39
|
+
// A row-level delete is destructive but low-emphasis — a ghost button toned destructive (color
|
|
40
|
+
// carries the intent without a heavy solid-red fill). This is the canonical "delete in a list" action.
|
|
41
|
+
function DeleteAction({ label }: { label: string }) {
|
|
42
|
+
return (
|
|
43
|
+
<Button
|
|
44
|
+
size="sm"
|
|
45
|
+
variant="ghost"
|
|
46
|
+
className="text-destructive hover:bg-destructive/10 hover:text-destructive"
|
|
47
|
+
>
|
|
48
|
+
{label}
|
|
49
|
+
</Button>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default function SecurityMfaShowcase() {
|
|
54
|
+
return (
|
|
55
|
+
<PageContainer title="Bảo mật" subtitle="Quản lý mật khẩu, xác thực 2 lớp và passkey.">
|
|
56
|
+
<Flex direction="col" gap="lg" className="max-w-3xl">
|
|
57
|
+
{/* Account identity — the brand mark is an Avatar primitive, not a styled span. */}
|
|
58
|
+
<Flex direction="row" align="center" gap="sm">
|
|
59
|
+
<Avatar className="rounded-md">
|
|
60
|
+
<AvatarFallback className="bg-primary text-primary-foreground font-bold">
|
|
61
|
+
T
|
|
62
|
+
</AvatarFallback>
|
|
63
|
+
</Avatar>
|
|
64
|
+
<Flex direction="col" gap="xs">
|
|
65
|
+
<Text weight="medium">Tài khoản godx</Text>
|
|
66
|
+
<Text size="xs" tone="muted">
|
|
67
|
+
tu-phuc-vu@famgia.com
|
|
68
|
+
</Text>
|
|
69
|
+
</Flex>
|
|
70
|
+
</Flex>
|
|
71
|
+
|
|
72
|
+
{/* Two-factor authentication. Enrolled factors are ListRows; add/manage actions live in the
|
|
73
|
+
* trailing slot per row — NOT a stack of full-width bars. */}
|
|
74
|
+
<Card>
|
|
75
|
+
<CardHeader>
|
|
76
|
+
<CardTitle level={2}>Xác thực hai lớp</CardTitle>
|
|
77
|
+
<CardDescription>Yêu cầu xác minh thêm khi đăng nhập.</CardDescription>
|
|
78
|
+
</CardHeader>
|
|
79
|
+
<CardContent flush>
|
|
80
|
+
<ListRow
|
|
81
|
+
leading={<Mail aria-hidden="true" className="size-4" />}
|
|
82
|
+
title="OTP qua email"
|
|
83
|
+
description="Gửi mã tới t•••@famgia.com"
|
|
84
|
+
trailing={
|
|
85
|
+
<>
|
|
86
|
+
<Badge tone="success" icon={null}>
|
|
87
|
+
Đã bật
|
|
88
|
+
</Badge>
|
|
89
|
+
<DeleteAction label="Xoá" />
|
|
90
|
+
</>
|
|
91
|
+
}
|
|
92
|
+
/>
|
|
93
|
+
<ListRow
|
|
94
|
+
leading={<Smartphone aria-hidden="true" className="size-4" />}
|
|
95
|
+
title="Ứng dụng xác thực"
|
|
96
|
+
description="Chưa thiết lập"
|
|
97
|
+
trailing={
|
|
98
|
+
<Button size="sm" variant="outline">
|
|
99
|
+
Thiết lập
|
|
100
|
+
</Button>
|
|
101
|
+
}
|
|
102
|
+
/>
|
|
103
|
+
<ListRow
|
|
104
|
+
leading={<KeyRound aria-hidden="true" className="size-4" />}
|
|
105
|
+
title="Passkey"
|
|
106
|
+
description="1 thiết bị · MacBook Pro"
|
|
107
|
+
trailing={
|
|
108
|
+
<Button size="sm" variant="ghost">
|
|
109
|
+
Quản lý
|
|
110
|
+
</Button>
|
|
111
|
+
}
|
|
112
|
+
/>
|
|
113
|
+
</CardContent>
|
|
114
|
+
</Card>
|
|
115
|
+
|
|
116
|
+
{/* Recovery codes — a card whose single action sits in a right-aligned footer (rule 217:
|
|
117
|
+
* primary rightmost, never a centered/full-width bar). */}
|
|
118
|
+
<Card>
|
|
119
|
+
<CardHeader>
|
|
120
|
+
<CardTitle level={2}>Mã khôi phục</CardTitle>
|
|
121
|
+
<CardDescription>
|
|
122
|
+
Dùng khi bạn không truy cập được thiết bị xác thực. Còn lại 8 mã chưa dùng.
|
|
123
|
+
</CardDescription>
|
|
124
|
+
</CardHeader>
|
|
125
|
+
<CardContent>
|
|
126
|
+
<Flex direction="row" align="center" gap="sm">
|
|
127
|
+
<ShieldCheck aria-hidden="true" className="text-success size-4" />
|
|
128
|
+
<Text size="sm" tone="muted">
|
|
129
|
+
Đã tạo ngày 12/03/2026
|
|
130
|
+
</Text>
|
|
131
|
+
</Flex>
|
|
132
|
+
</CardContent>
|
|
133
|
+
<CardFooter separated className="justify-end gap-2">
|
|
134
|
+
<Button variant="ghost" size="sm">
|
|
135
|
+
Tải xuống
|
|
136
|
+
</Button>
|
|
137
|
+
<Button variant="outline" size="sm">
|
|
138
|
+
Tạo lại mã
|
|
139
|
+
</Button>
|
|
140
|
+
</CardFooter>
|
|
141
|
+
</Card>
|
|
142
|
+
</Flex>
|
|
143
|
+
</PageContainer>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Showcase · アクセス承認キュー / Access approval queue (gh#253) — the canonical five-column
|
|
3
|
+
* approval collection at 1440 · 1024 · 390 using ONLY public API.
|
|
4
|
+
*
|
|
5
|
+
* The whole responsive contract is `Table preset="action-collection"` plus a `priority` on each
|
|
6
|
+
* column's `TableHead`/`TableCell`. Below the collapse step the package swaps the desktop
|
|
7
|
+
* intrinsic column widths for the token-owned priority measures under `table-layout: fixed` and
|
|
8
|
+
* lets cells wrap, so 申請者 · 対象 · 理由 · 申請日時 · 操作 all stay inside the initial 390px
|
|
9
|
+
* frame — no page-local CSS, no consumer width, no hidden column, no horizontal scroll.
|
|
10
|
+
*
|
|
11
|
+
* The table stays a REAL table at every width: `<thead>` / `<th scope>` / `<tr>` / `<td>` are
|
|
12
|
+
* untouched, so header association and screen-reader table navigation are identical at 390 and at
|
|
13
|
+
* 1440. Row actions are a single kebab menu, the affordance whose measure the preset reserves
|
|
14
|
+
* first — it can never be pushed outside the viewport.
|
|
15
|
+
*
|
|
16
|
+
* Content is JA + EN + VI, including a deliberately long reason and a long resource path.
|
|
17
|
+
*/
|
|
18
|
+
import { ClipboardCheck, LayoutDashboard, MoreHorizontal, ScrollText } from "lucide-react";
|
|
19
|
+
|
|
20
|
+
import {
|
|
21
|
+
Badge,
|
|
22
|
+
Card,
|
|
23
|
+
CardContent,
|
|
24
|
+
Table,
|
|
25
|
+
TableBody,
|
|
26
|
+
TableCell,
|
|
27
|
+
TableHead,
|
|
28
|
+
TableHeader,
|
|
29
|
+
TableRow,
|
|
30
|
+
} from "@godxjp/ui/data-display";
|
|
31
|
+
import { Button, Text } from "@godxjp/ui/general";
|
|
32
|
+
import { AppShell, Flex, PageContainer, Sidebar, Topbar } from "@godxjp/ui/layout";
|
|
33
|
+
import {
|
|
34
|
+
DropdownMenu,
|
|
35
|
+
DropdownMenuContent,
|
|
36
|
+
DropdownMenuItem,
|
|
37
|
+
DropdownMenuTrigger,
|
|
38
|
+
} from "@godxjp/ui/navigation";
|
|
39
|
+
|
|
40
|
+
type Request = {
|
|
41
|
+
id: string;
|
|
42
|
+
requester: string;
|
|
43
|
+
requesterMail: string;
|
|
44
|
+
target: string;
|
|
45
|
+
reason: string;
|
|
46
|
+
requestedAt: string;
|
|
47
|
+
state: "pending" | "escalated";
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const REQUESTS: Request[] = [
|
|
51
|
+
{
|
|
52
|
+
id: "req-1041",
|
|
53
|
+
requester: "田中 太郎",
|
|
54
|
+
requesterMail: "taro.tanaka@example.co.jp",
|
|
55
|
+
target: "会計 / 請求書エクスポート",
|
|
56
|
+
reason: "月次決算のため請求データの一括出力権限が必要です。",
|
|
57
|
+
requestedAt: "2026-08-03T09:12:00+09:00",
|
|
58
|
+
state: "pending",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "req-1042",
|
|
62
|
+
requester: "Nguyễn Thị Hồng Ánh",
|
|
63
|
+
requesterMail: "hong.anh.nguyen@example.vn",
|
|
64
|
+
target: "Kho vận / Quản trị phiếu xuất kho khu vực miền Nam",
|
|
65
|
+
reason:
|
|
66
|
+
"Cần quyền quản trị để xử lý phiếu xuất kho tồn đọng của chi nhánh miền Nam trong kỳ kiểm kê quý III.",
|
|
67
|
+
requestedAt: "2026-08-03T11:47:00+09:00",
|
|
68
|
+
state: "escalated",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "req-1043",
|
|
72
|
+
requester: "Margaret Whitmore-Ashcombe",
|
|
73
|
+
requesterMail: "margaret.whitmore@example.com",
|
|
74
|
+
target: "Identity / Service account administration",
|
|
75
|
+
reason: "Rotating the service-account credentials scheduled for the August maintenance window.",
|
|
76
|
+
requestedAt: "2026-08-04T02:05:00+09:00",
|
|
77
|
+
state: "pending",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "req-1044",
|
|
81
|
+
requester: "佐藤 花子",
|
|
82
|
+
requesterMail: "hanako.sato@example.co.jp",
|
|
83
|
+
target: "勤怠 / 部門レポート",
|
|
84
|
+
reason: "部門別の残業集計を確認するため。",
|
|
85
|
+
requestedAt: "2026-08-04T08:30:00+09:00",
|
|
86
|
+
state: "pending",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
const REQUESTED_AT = new Intl.DateTimeFormat("ja-JP", {
|
|
91
|
+
dateStyle: "short",
|
|
92
|
+
timeStyle: "short",
|
|
93
|
+
timeZone: "Asia/Tokyo",
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
export default function TableApprovalQueue() {
|
|
97
|
+
return (
|
|
98
|
+
<AppShell
|
|
99
|
+
sidebar={
|
|
100
|
+
<Sidebar
|
|
101
|
+
product={{ name: "GodX Platform", role: "運用管理" }}
|
|
102
|
+
activeId="approvals"
|
|
103
|
+
sections={[
|
|
104
|
+
{
|
|
105
|
+
label: "運用",
|
|
106
|
+
items: [
|
|
107
|
+
{ id: "dashboard", label: "ダッシュボード", icon: LayoutDashboard },
|
|
108
|
+
{ id: "approvals", label: "アクセス承認", icon: ClipboardCheck },
|
|
109
|
+
{ id: "audit", label: "監査ログ", icon: ScrollText },
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
]}
|
|
113
|
+
/>
|
|
114
|
+
}
|
|
115
|
+
topbar={<Topbar start={<Text weight="medium">アクセス承認</Text>} />}
|
|
116
|
+
>
|
|
117
|
+
<PageContainer
|
|
118
|
+
title="アクセス承認"
|
|
119
|
+
subtitle="Access approval · Phê duyệt truy cập"
|
|
120
|
+
density="compact"
|
|
121
|
+
variant="flush"
|
|
122
|
+
>
|
|
123
|
+
<Card>
|
|
124
|
+
<CardContent flush>
|
|
125
|
+
<Table preset="action-collection" collapseBelow="sm">
|
|
126
|
+
<TableHeader>
|
|
127
|
+
<TableRow>
|
|
128
|
+
<TableHead priority="primary" scope="col">
|
|
129
|
+
申請者
|
|
130
|
+
</TableHead>
|
|
131
|
+
<TableHead priority="secondary" scope="col">
|
|
132
|
+
対象
|
|
133
|
+
</TableHead>
|
|
134
|
+
<TableHead scope="col">理由</TableHead>
|
|
135
|
+
<TableHead priority="meta" scope="col">
|
|
136
|
+
申請日時
|
|
137
|
+
</TableHead>
|
|
138
|
+
<TableHead priority="actions" scope="col">
|
|
139
|
+
<span className="sr-only">操作</span>
|
|
140
|
+
</TableHead>
|
|
141
|
+
</TableRow>
|
|
142
|
+
</TableHeader>
|
|
143
|
+
<TableBody>
|
|
144
|
+
{REQUESTS.map((request) => (
|
|
145
|
+
<TableRow key={request.id}>
|
|
146
|
+
<TableCell priority="primary">
|
|
147
|
+
<Flex direction="col" gap="xs">
|
|
148
|
+
<Text size="sm">{request.requester}</Text>
|
|
149
|
+
<Text size="xs" tone="muted">
|
|
150
|
+
{request.requesterMail}
|
|
151
|
+
</Text>
|
|
152
|
+
</Flex>
|
|
153
|
+
</TableCell>
|
|
154
|
+
<TableCell priority="secondary">
|
|
155
|
+
<Flex direction="col" gap="xs" align="start">
|
|
156
|
+
<Text size="sm">{request.target}</Text>
|
|
157
|
+
{request.state === "escalated" && (
|
|
158
|
+
<Badge tone="warning">エスカレーション</Badge>
|
|
159
|
+
)}
|
|
160
|
+
</Flex>
|
|
161
|
+
</TableCell>
|
|
162
|
+
<TableCell>
|
|
163
|
+
<Text size="sm">{request.reason}</Text>
|
|
164
|
+
</TableCell>
|
|
165
|
+
<TableCell priority="meta">
|
|
166
|
+
<Text size="xs" tone="muted">
|
|
167
|
+
<time dateTime={request.requestedAt}>
|
|
168
|
+
{REQUESTED_AT.format(new Date(request.requestedAt))}
|
|
169
|
+
</time>
|
|
170
|
+
</Text>
|
|
171
|
+
</TableCell>
|
|
172
|
+
<TableCell priority="actions">
|
|
173
|
+
<DropdownMenu>
|
|
174
|
+
<DropdownMenuTrigger asChild>
|
|
175
|
+
<Button
|
|
176
|
+
variant="ghost"
|
|
177
|
+
size="xs"
|
|
178
|
+
aria-label={`${request.requester} の申請の操作`}
|
|
179
|
+
>
|
|
180
|
+
<MoreHorizontal aria-hidden />
|
|
181
|
+
</Button>
|
|
182
|
+
</DropdownMenuTrigger>
|
|
183
|
+
<DropdownMenuContent align="end">
|
|
184
|
+
<DropdownMenuItem>承認する</DropdownMenuItem>
|
|
185
|
+
<DropdownMenuItem>却下する</DropdownMenuItem>
|
|
186
|
+
<DropdownMenuItem>詳細を表示</DropdownMenuItem>
|
|
187
|
+
</DropdownMenuContent>
|
|
188
|
+
</DropdownMenu>
|
|
189
|
+
</TableCell>
|
|
190
|
+
</TableRow>
|
|
191
|
+
))}
|
|
192
|
+
</TableBody>
|
|
193
|
+
</Table>
|
|
194
|
+
</CardContent>
|
|
195
|
+
</Card>
|
|
196
|
+
</PageContainer>
|
|
197
|
+
</AppShell>
|
|
198
|
+
);
|
|
199
|
+
}
|