@phis/ui 0.2.0 → 0.3.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 +5 -5
- package/cms/plugins.d.ts +1 -1
- package/cms.d.ts +1 -1
- package/components/calendar/gregory-calendar-adapter-client.js +1 -0
- package/components/cms/clients/phi-background-motion-layer-client.js +5 -2
- package/components/cms/phi-cms-area-render-scope.d.ts +1 -3
- package/components/cms/phi-cms-deferred-error-page.d.ts +19 -0
- package/components/cms/phi-cms-deferred-error-page.js +31 -0
- package/components/cms/phi-cms-error-fallback.d.ts +11 -0
- package/components/cms/phi-cms-error-fallback.js +35 -0
- package/components/cms/phi-cms-error-page.js +13 -32
- package/components/cms/phi-cms-layout-renderer.d.ts +12 -2
- package/components/cms/phi-cms-layout-renderer.js +140 -58
- package/components/cms/phi-cms-page-redirect.js +3 -5
- package/components/cms/phi-cms-page-render-scope.d.ts +52 -0
- package/components/cms/phi-cms-page-render-scope.js +94 -0
- package/components/cms/phi-cms-render-diagnostic-client.js +11 -3
- package/components/cms/phi-cms-root-layout.d.ts +2 -1
- package/components/cms/phi-cms-root-layout.js +67 -19
- package/components/cms/phi-cms-root-page.js +4 -32
- package/components/cms/phi-cms-root-slot-page.js +6 -38
- package/components/controls/phi-anchor-nav-control.d.ts +20 -0
- package/components/controls/phi-anchor-nav-control.js +12 -0
- package/components/controls/phi-avatar-control.js +2 -2
- package/components/controls/phi-background-control.d.ts +8 -8
- package/components/controls/phi-background-control.js +28 -51
- package/components/controls/phi-breadcrumb-control.d.ts +12 -0
- package/components/controls/phi-breadcrumb-control.js +7 -0
- package/components/controls/phi-bullet-list-control.d.ts +32 -0
- package/components/controls/phi-bullet-list-control.js +73 -0
- package/components/controls/phi-button-control.d.ts +8 -1
- package/components/controls/phi-button-control.js +9 -5
- package/components/controls/phi-button-types.d.ts +0 -1
- package/components/controls/phi-button-types.js +1 -9
- package/components/controls/phi-cascader-control.d.ts +22 -0
- package/components/controls/phi-cascader-control.js +62 -5
- package/components/controls/phi-collapse-control.d.ts +43 -0
- package/components/controls/phi-collapse-control.js +35 -0
- package/components/controls/phi-collection-header-control.js +3 -2
- package/components/controls/phi-color-control.js +9 -67
- package/components/controls/phi-color-field-control.d.ts +6 -1
- package/components/controls/phi-color-field-control.js +4 -2
- package/components/controls/phi-confirm-dialog.d.ts +2 -1
- package/components/controls/phi-control-option-content.d.ts +7 -3
- package/components/controls/phi-control-option-content.js +9 -4
- package/components/controls/phi-date-picker-control.js +3 -2
- package/components/controls/phi-description-tooltip-icon.js +2 -2
- package/components/controls/phi-dialog-control.d.ts +3 -3
- package/components/controls/phi-dialog-control.js +9 -2
- package/components/controls/phi-drag-handle-control.js +2 -2
- package/components/controls/phi-drawer-control-adapter.js +1 -1
- package/components/controls/phi-drawer-control.d.ts +3 -3
- package/components/controls/phi-expand-indicator.js +4 -3
- package/components/controls/phi-float-button-control.d.ts +39 -0
- package/components/controls/phi-float-button-control.js +73 -0
- package/components/controls/phi-form-control-contract.d.ts +9 -0
- package/components/controls/phi-form-control.js +68 -3
- package/components/controls/phi-icon-picker-control.js +17 -12
- package/components/controls/phi-image-control.d.ts +52 -0
- package/components/controls/phi-image-control.js +69 -0
- package/components/controls/phi-inline-text-editor.d.ts +6 -1
- package/components/controls/phi-inline-text-editor.js +15 -3
- package/components/controls/phi-labeled-control.d.ts +17 -2
- package/components/controls/phi-labeled-control.js +20 -2
- package/components/controls/phi-lightbox-image-control.d.ts +16 -0
- package/components/controls/phi-lightbox-image-control.js +12 -0
- package/components/controls/phi-mask-picker-control.js +5 -13
- package/components/controls/phi-media-asset-tile-control.js +3 -23
- package/components/controls/phi-media-picker-control.js +3 -3
- package/components/controls/phi-menu-control.d.ts +4 -9
- package/components/controls/phi-menu-control.js +45 -46
- package/components/controls/phi-modal-control-adapter.js +63 -1
- package/components/controls/phi-multi-select-control.js +11 -4
- package/components/controls/phi-number-control.js +4 -3
- package/components/controls/phi-options-provider.js +3 -6
- package/components/controls/phi-otp-control.js +4 -3
- package/components/controls/phi-overlay-control-contract.d.ts +3 -3
- package/components/controls/phi-padding-control.d.ts +0 -2
- package/components/controls/phi-padding-control.js +11 -13
- package/components/controls/phi-rate-control.js +3 -2
- package/components/controls/phi-result-control.d.ts +15 -0
- package/components/controls/phi-result-control.js +11 -0
- package/components/controls/phi-segmented-control.js +11 -4
- package/components/controls/phi-select-control.js +41 -9
- package/components/controls/phi-shadow-control.js +5 -1
- package/components/controls/phi-slider-control.d.ts +17 -4
- package/components/controls/phi-slider-control.js +33 -8
- package/components/controls/phi-steps-control.d.ts +40 -0
- package/components/controls/phi-steps-control.js +24 -0
- package/components/controls/phi-surface-control.d.ts +56 -0
- package/components/controls/phi-surface-control.js +109 -0
- package/components/controls/phi-switch-control.js +3 -2
- package/components/controls/phi-table-control.d.ts +2 -0
- package/components/controls/phi-table-control.js +69 -19
- package/components/controls/phi-text-control.d.ts +3 -5
- package/components/controls/phi-text-control.js +7 -5
- package/components/controls/phi-text-types.d.ts +8 -0
- package/components/controls/phi-theme-scope-control.d.ts +23 -0
- package/components/controls/phi-theme-scope-control.js +29 -0
- package/components/controls/phi-timeline-control.d.ts +32 -0
- package/components/controls/phi-timeline-control.js +33 -0
- package/components/controls/phi-toolbar-control.d.ts +1 -0
- package/components/controls/phi-toolbar-control.js +9 -1
- package/components/controls/phi-tour-control.d.ts +41 -0
- package/components/controls/phi-tour-control.js +29 -0
- package/components/controls/phi-tree-control.js +4 -3
- package/components/controls/phi-tree-select-control.js +11 -4
- package/components/controls/phi-video-embed-control.js +2 -2
- package/components/forms/auth-admin-settings-labels.d.ts +2 -0
- package/components/forms/auth-admin-settings-labels.js +4 -0
- package/components/forms/choice-form-field-controls.js +2 -2
- package/components/forms/compound-form-controls.js +29 -28
- package/components/forms/content-entry-curation-config.d.ts +12 -0
- package/components/forms/content-entry-curation-config.js +12 -0
- package/components/forms/content-entry-forms.d.ts +52 -0
- package/components/forms/content-entry-forms.js +328 -0
- package/components/forms/extended-form-field-controls.js +18 -1
- package/components/forms/form-descriptor-contract.d.ts +0 -9
- package/components/forms/form-descriptor-contract.js +1 -1
- package/components/forms/form-descriptor-runtime-client.js +86 -10
- package/components/forms/form-guard-client.d.ts +14 -1
- package/components/forms/form-guard-client.js +13 -2
- package/components/forms/form-labels.js +2 -1
- package/components/forms/form-provider-contract.d.ts +38 -0
- package/components/forms/form-provider-contract.js +41 -0
- package/components/forms/form-provider-registry.d.ts +9 -2
- package/components/forms/form-resolution.js +3 -5
- package/components/forms/form-widget-config.d.ts +5 -4
- package/components/forms/form-widget-config.js +3 -2
- package/components/forms/link-target-form-control.d.ts +10 -0
- package/components/forms/link-target-form-control.js +82 -0
- package/components/forms/phi-form-widget.js +2 -4
- package/components/forms/runtime-form-client.d.ts +0 -22
- package/components/forms/runtime-form-client.js +1 -1
- package/components/forms/runtime-form-controller-mount.js +6 -4
- package/components/forms/runtime-form-controller-requirement.d.ts +1 -11
- package/components/forms/runtime-form-controller-requirement.js +3 -3
- package/components/forms/shared-form-ids.d.ts +5 -0
- package/components/forms/shared-form-ids.js +5 -0
- package/components/forms/shared-form-loaders.d.ts +11 -2
- package/components/forms/shared-form-loaders.js +13 -3
- package/components/forms/shared-form-provider-registry.js +4 -0
- package/components/forms/storage-size.d.ts +0 -9
- package/components/forms/storage-size.js +1 -1
- package/components/forms/upload-form-control.d.ts +5 -0
- package/components/forms/upload-form-control.js +27 -7
- package/components/layouts/clients/phi-carousel-layout-client.d.ts +5 -17
- package/components/layouts/clients/phi-carousel-layout-client.js +36 -61
- package/components/layouts/clients/phi-collapsible-layout-client.d.ts +3 -1
- package/components/layouts/clients/phi-collapsible-layout-client.js +84 -81
- package/components/layouts/clients/phi-content-layout-client.d.ts +4 -33
- package/components/layouts/clients/phi-content-layout-client.js +7 -11
- package/components/layouts/clients/phi-flex-layout-client.d.ts +7 -0
- package/components/layouts/clients/phi-flex-layout-client.js +77 -51
- package/components/layouts/clients/phi-grid-layout-client.js +37 -38
- package/components/layouts/clients/phi-layout-anchored-overlay.d.ts +0 -1
- package/components/layouts/clients/phi-layout-anchored-overlay.js +3 -3
- package/components/layouts/clients/phi-sequence-slot-editor.d.ts +2 -3
- package/components/layouts/clients/phi-sequence-slot-editor.js +41 -38
- package/components/layouts/clients/phi-split-card-half.d.ts +28 -0
- package/components/layouts/clients/phi-split-card-half.js +33 -0
- package/components/layouts/clients/phi-split-card-layout-client.d.ts +12 -21
- package/components/layouts/clients/phi-split-card-layout-client.js +29 -51
- package/components/layouts/clients/phi-stack-layout-client.d.ts +2 -17
- package/components/layouts/clients/phi-stack-layout-client.js +67 -90
- package/components/layouts/clients/phi-three-column-layout-client.d.ts +3 -30
- package/components/layouts/clients/phi-three-column-layout-client.js +6 -10
- package/components/layouts/clients/use-phi-sequence-layout.d.ts +44 -0
- package/components/layouts/clients/use-phi-sequence-layout.js +69 -0
- package/components/layouts/layout-definitions.d.ts +64 -68
- package/components/layouts/layout-definitions.js +20 -34
- package/components/layouts/layout-slot-meta.d.ts +19 -0
- package/components/layouts/layout-slot-meta.js +34 -0
- package/components/layouts/phi-base-layout.d.ts +1 -1
- package/components/layouts/phi-base-layout.js +5 -8
- package/components/layouts/phi-flex-vertical-layout.d.ts +3 -2
- package/components/layouts/phi-flex-vertical-layout.js +2 -2
- package/components/layouts/phi-grid-contract.d.ts +30 -22
- package/components/layouts/phi-grid-contract.js +39 -38
- package/components/layouts/phi-layout-contract.d.ts +9 -14
- package/components/layouts/phi-layout-contract.js +5 -57
- package/components/layouts/phi-layout-signal-surface.d.ts +26 -0
- package/components/layouts/phi-layout-signal-surface.js +15 -0
- package/components/layouts/phi-layout-surface-box.d.ts +32 -0
- package/components/layouts/phi-layout-surface-box.js +41 -0
- package/components/layouts/phi-layout-view-model.d.ts +6 -2
- package/components/layouts/phi-layout-view-model.js +16 -26
- package/components/layouts/phi-masonry-columns.d.ts +18 -0
- package/components/layouts/phi-masonry-columns.js +77 -0
- package/components/layouts/phi-masonry-contract.d.ts +45 -0
- package/components/layouts/phi-masonry-contract.js +62 -0
- package/components/layouts/phi-masonry-layout.d.ts +9 -2
- package/components/layouts/phi-masonry-layout.js +27 -21
- package/components/layouts/phi-structure-region-layout.js +2 -2
- package/components/layouts/plugins/carousel-layout-plugin.js +2 -31
- package/components/layouts/plugins/collapsible-layout-plugin.js +16 -3
- package/components/layouts/plugins/content-layout-plugin.js +1 -1
- package/components/layouts/plugins/flex-layout-plugin.js +1 -1
- package/components/layouts/plugins/flex-vertical-layout-plugin.js +1 -1
- package/components/layouts/plugins/grid-layout-plugin.js +1 -1
- package/components/layouts/plugins/masonry-layout-plugin.js +1 -1
- package/components/layouts/plugins/split-card-layout-plugin.js +1 -1
- package/components/layouts/plugins/stack-layout-plugin.js +2 -25
- package/components/layouts/plugins/three-column-layout-plugin.js +1 -1
- package/components/layouts/split-card-geometry.d.ts +14 -0
- package/components/layouts/split-card-geometry.js +32 -0
- package/components/layouts/stack-signals.d.ts +5 -0
- package/components/layouts/stack-signals.js +12 -4
- package/components/layouts/use-phi-slot-sequence.d.ts +0 -9
- package/components/layouts/use-phi-slot-sequence.js +2 -2
- package/components/media/asset-type-label.d.ts +6 -0
- package/components/media/asset-type-label.js +27 -0
- package/components/media/background-asset-projection.d.ts +3 -17
- package/components/media/background-asset-projection.js +15 -6
- package/components/media/focal-rect.d.ts +20 -1
- package/components/media/focal-rect.js +37 -2
- package/components/media/image-presentation.d.ts +12 -2
- package/components/media/image-presentation.js +33 -6
- package/components/media/media-folder-options.d.ts +2 -0
- package/components/media/media-folder-options.js +5 -0
- package/components/media/media-space-selection.d.ts +0 -27
- package/components/media/media-space-selection.js +2 -2
- package/components/media/media-upload-flow.d.ts +17 -14
- package/components/media/media-upload-flow.js +135 -26
- package/components/media/phi-area-upload-widget.js +30 -27
- package/components/media/phi-asset-focal-rect-widget.js +0 -1
- package/components/media/phi-asset-inspector-section.js +6 -9
- package/components/media/phi-image-preview-data.d.ts +0 -10
- package/components/media/phi-image-preview-data.js +1 -1
- package/components/media/phi-media-kind-icon.js +10 -10
- package/components/media/phi-media-picker-binding.js +2 -2
- package/components/media/phi-media-restricted-icon.js +2 -2
- package/components/media/phi-media-upload.d.ts +13 -1
- package/components/media/phi-media-upload.js +51 -7
- package/components/media/phi-site-font-assets.d.ts +8 -1
- package/components/media/phi-site-font-assets.js +20 -6
- package/components/motion/phi-sequence-viewport.js +17 -4
- package/components/motion/use-phi-sequence-autoplay.d.ts +26 -0
- package/components/motion/use-phi-sequence-autoplay.js +52 -0
- package/components/motion/use-phi-sequence-gestures.d.ts +24 -0
- package/components/motion/use-phi-sequence-gestures.js +59 -0
- package/components/overlays/phi-dialog-body-context.d.ts +5 -0
- package/components/overlays/phi-dialog-body-context.js +17 -0
- package/components/overlays/phi-overlay-container-client.js +37 -15
- package/components/regions/clients/cms-region-container-client.d.ts +6 -1
- package/components/regions/clients/cms-region-container-client.js +66 -28
- package/components/regions/clients/use-phi-region-reveal.d.ts +28 -0
- package/components/regions/clients/use-phi-region-reveal.js +104 -0
- package/components/regions/phi-cms-region-container.d.ts +4 -1
- package/components/regions/phi-cms-region-container.js +13 -3
- package/components/regions/phi-cms-region-shell.d.ts +13 -1
- package/components/regions/phi-cms-region-shell.js +98 -51
- package/components/regions/phi-cms-region-static.js +5 -2
- package/components/regions/presets/content-entry-editor-page-tree.d.ts +48 -0
- package/components/regions/presets/content-entry-editor-page-tree.js +749 -0
- package/components/regions/presets/content-entry-editor-tour.d.ts +19 -0
- package/components/regions/presets/content-entry-editor-tour.js +71 -0
- package/components/regions/presets/content-entry-public-page-trees.d.ts +52 -0
- package/components/regions/presets/content-entry-public-page-trees.js +146 -0
- package/components/regions/presets/phi-area-root-redirect-tree.js +7 -1
- package/components/regions/presets/phi-area-shell-preset-nodes.d.ts +49 -0
- package/components/regions/presets/phi-area-shell-preset-nodes.js +160 -0
- package/components/regions/presets/phi-base-page-column.d.ts +26 -0
- package/components/regions/presets/phi-base-page-column.js +42 -0
- package/components/regions/presets/phi-base-page-layout.d.ts +3 -3
- package/components/regions/presets/phi-base-page-layout.js +4 -3
- package/components/regions/presets/phi-settings-page-shell-tree.d.ts +15 -5
- package/components/regions/presets/phi-settings-page-shell-tree.js +34 -28
- package/components/root/phi-config-provider.d.ts +20 -2
- package/components/root/phi-config-provider.js +26 -4
- package/components/root/phi-dayjs-locale.d.ts +0 -7
- package/components/root/phi-dayjs-locale.js +4 -6
- package/components/root/phi-root-background.d.ts +9 -0
- package/components/root/phi-root-background.js +14 -3
- package/components/root/phi-root-layout.d.ts +1 -0
- package/components/root/phi-root-layout.js +32 -27
- package/components/root/phi-root-live-theme-provider.d.ts +1 -2
- package/components/root/phi-root-live-theme-provider.js +9 -3
- package/components/root/phi-root-theme-resolver.d.ts +4 -0
- package/components/root/phi-root-theme-resolver.js +65 -3
- package/components/root/phi-shell-chrome-overlay.d.ts +47 -22
- package/components/root/phi-shell-chrome-overlay.js +61 -20
- package/components/root/phi-theme-tone-source.d.ts +19 -0
- package/components/root/phi-theme-tone-source.js +7 -0
- package/components/runtime/core-runtime-controller-address.d.ts +0 -1
- package/components/runtime/core-runtime-controller-address.js +1 -1
- package/components/runtime/mounted-runtime-controller.js +5 -2
- package/components/runtime/phi-restored-request-runtime.d.ts +12 -0
- package/components/runtime/phi-restored-request-runtime.js +12 -0
- package/components/runtime/renderable-block-runtime.d.ts +10 -4
- package/components/runtime/renderable-block-runtime.js +53 -121
- package/components/runtime/runtime-controller-config-overlays.d.ts +19 -0
- package/components/runtime/runtime-controller-config-overlays.js +76 -0
- package/components/runtime/runtime-controller-materialization.d.ts +37 -1
- package/components/runtime/runtime-controller-materialization.js +87 -13
- package/components/runtime/runtime-controller-server-host.d.ts +4 -2
- package/components/runtime/runtime-controller-server-host.js +4 -2
- package/components/runtime/runtime-module-authoring-host.js +2 -1
- package/components/runtime/runtime-module-context.d.ts +2 -1
- package/components/runtime/runtime-page-condition-state.js +3 -2
- package/components/runtime/runtime-signal-identity.d.ts +11 -1
- package/components/runtime/runtime-signal-identity.js +28 -1
- package/components/runtime/runtime-signal-partition.d.ts +9 -0
- package/components/runtime/runtime-signal-partition.js +4 -0
- package/components/runtime/runtime-signal-registry.d.ts +1 -1
- package/components/runtime/runtime-signal-registry.js +2 -5
- package/components/runtime/runtime-visual-anchors.d.ts +48 -0
- package/components/runtime/runtime-visual-anchors.js +128 -0
- package/components/runtime/use-phi-pathname.d.ts +6 -0
- package/components/runtime/use-phi-pathname.js +11 -0
- package/components/runtime/user-state-client.js +2 -1
- package/components/shell/phi-antd-icon.d.ts +117 -60
- package/components/shell/phi-antd-icon.js +234 -61
- package/components/shell/phi-cms-shell.d.ts +7 -1
- package/components/shell/phi-cms-shell.js +4 -3
- package/components/shell/phi-icon.d.ts +7 -2
- package/components/shell/phi-icon.js +5 -5
- package/components/shell/phi-locale-switch.js +3 -2
- package/components/shell/phi-widget-icon.js +28 -28
- package/components/state/history-store.d.ts +28 -16
- package/components/state/history-store.js +10 -4
- package/components/surface/phi-surface-ground.d.ts +16 -0
- package/components/surface/phi-surface-ground.js +54 -0
- package/components/surface/phi-surface-tone-scope.d.ts +14 -0
- package/components/surface/phi-surface-tone-scope.js +11 -0
- package/components/surface/phi-surface-tone.d.ts +18 -0
- package/components/surface/phi-surface-tone.js +36 -0
- package/components/tables/client/phi-table-binding.d.ts +4 -2
- package/components/tables/client/phi-table-binding.js +15 -11
- package/components/trees/client/phi-tree-binding.js +85 -7
- package/components/widgets/builder/phi-static-options-picker.d.ts +1 -0
- package/components/widgets/builder/phi-static-options-picker.js +63 -195
- package/components/widgets/builder/phi-static-rows-editor.d.ts +65 -0
- package/components/widgets/builder/phi-static-rows-editor.js +190 -0
- package/components/widgets/builder/phi-static-timeline-picker.d.ts +7 -0
- package/components/widgets/builder/phi-static-timeline-picker.js +91 -0
- package/components/widgets/client/description-editor-sections.d.ts +1 -1
- package/components/widgets/client/external-document-editor.js +24 -9
- package/components/widgets/client/html-editor-image-node.d.ts +0 -8
- package/components/widgets/client/html-editor-image-node.js +2 -2
- package/components/widgets/client/html-editor.js +13 -2
- package/components/widgets/client/shared/core-options-providers.js +4 -7
- package/components/widgets/client/shared/description-items.d.ts +5 -4
- package/components/widgets/client/shared/description-items.js +9 -4
- package/components/widgets/client/shared/phi-choice-controller.d.ts +1 -1
- package/components/widgets/client/shared/phi-choice-controller.js +11 -4
- package/components/widgets/client/shared/phi-command-buttons-authoring-tools.d.ts +11 -0
- package/components/widgets/client/shared/phi-command-buttons-authoring-tools.js +40 -0
- package/components/widgets/client/shared/phi-command-buttons.d.ts +20 -0
- package/components/widgets/client/shared/phi-command-buttons.js +286 -0
- package/components/widgets/client/shared/phi-link-target-control.d.ts +44 -0
- package/components/widgets/client/shared/phi-link-target-control.js +93 -0
- package/components/widgets/client/shared/phi-mask-picker.js +65 -34
- package/components/widgets/client/shared/phi-page-reference-picker.js +2 -2
- package/components/widgets/client/shared/phi-rendered-value.d.ts +0 -14
- package/components/widgets/client/shared/phi-rendered-value.js +1 -1
- package/components/widgets/client/shared/phi-static-table-provider.d.ts +1 -12
- package/components/widgets/client/shared/phi-static-table-provider.js +16 -17
- package/components/widgets/client/shared/phi-table-provider-request.d.ts +11 -0
- package/components/widgets/client/shared/phi-table-provider-request.js +43 -0
- package/components/widgets/client/shared/phi-timeline-provider.d.ts +36 -0
- package/components/widgets/client/shared/phi-timeline-provider.js +115 -0
- package/components/widgets/client/shared/phi-widget-image-tool-button.d.ts +0 -1
- package/components/widgets/client/shared/phi-widget-image-tool-button.js +2 -4
- package/components/widgets/client/shared/phi-widget-tool-buttons.d.ts +17 -2
- package/components/widgets/client/shared/phi-widget-tool-buttons.js +53 -45
- package/components/widgets/config/background-pattern-live.js +4 -14
- package/components/widgets/config/background.d.ts +33 -11
- package/components/widgets/config/background.js +86 -149
- package/components/widgets/config/choice-shared.d.ts +2 -3
- package/components/widgets/config/choice-shared.js +1 -1
- package/components/widgets/config/command-buttons.d.ts +48 -0
- package/components/widgets/config/command-buttons.js +207 -0
- package/components/widgets/config/common-action-field.d.ts +52 -0
- package/components/widgets/config/common-action-field.js +57 -0
- package/components/widgets/config/control-signal-config.d.ts +26 -0
- package/components/widgets/config/control-signal-config.js +21 -13
- package/components/widgets/config/geometry.js +7 -5
- package/components/widgets/config/image-source-parser.d.ts +0 -2
- package/components/widgets/config/image-source-parser.js +2 -5
- package/components/widgets/config/image-variant-options.d.ts +5 -0
- package/components/widgets/config/image-variant-options.js +14 -0
- package/components/widgets/config/mask.d.ts +2 -1
- package/components/widgets/config/mask.js +11 -2
- package/components/widgets/config/parser-primitives.d.ts +1 -10
- package/components/widgets/config/parser-primitives.js +2 -42
- package/components/widgets/config/search-shared.d.ts +1 -6
- package/components/widgets/config/search-shared.js +1 -51
- package/components/widgets/config/spacing-options.d.ts +4 -4
- package/components/widgets/config/spacing-options.js +10 -11
- package/components/widgets/config/stack-tabs.d.ts +0 -1
- package/components/widgets/config/stack-tabs.js +1 -1
- package/components/widgets/helpers/font-size.js +6 -1
- package/components/widgets/helpers/html-content.js +2 -1
- package/components/widgets/helpers/internal-reference-resolver.server.js +8 -7
- package/components/widgets/label-sets/admin-locales.d.ts +4 -0
- package/components/widgets/label-sets/admin-locales.js +8 -0
- package/components/widgets/label-sets/admin-settings.d.ts +4 -0
- package/components/widgets/label-sets/admin-settings.js +8 -0
- package/components/widgets/label-sets/admin-users.d.ts +7 -0
- package/components/widgets/label-sets/admin-users.js +14 -0
- package/components/widgets/label-sets/authoring-tools.d.ts +0 -2
- package/components/widgets/label-sets/authoring-tools.js +78 -6
- package/components/widgets/label-sets/background.js +11 -13
- package/components/widgets/label-sets/builder-modules.js +6 -0
- package/components/widgets/label-sets/card.d.ts +5 -0
- package/components/widgets/label-sets/card.js +17 -0
- package/components/widgets/label-sets/color-picker.d.ts +0 -2
- package/components/widgets/label-sets/color-picker.js +0 -4
- package/components/widgets/label-sets/common-controls.d.ts +0 -2
- package/components/widgets/label-sets/common-controls.js +1 -1
- package/components/widgets/label-sets/content-entries.d.ts +128 -0
- package/components/widgets/label-sets/content-entries.js +197 -0
- package/components/widgets/label-sets/gallery.d.ts +4 -0
- package/components/widgets/label-sets/gallery.js +31 -0
- package/components/widgets/label-sets/history.d.ts +5 -0
- package/components/widgets/label-sets/history.js +106 -0
- package/components/widgets/label-sets/icon-picker.d.ts +0 -2
- package/components/widgets/label-sets/icon-picker.js +0 -4
- package/components/widgets/label-sets/inspector.js +124 -1
- package/components/widgets/label-sets/logout.d.ts +4 -0
- package/components/widgets/label-sets/logout.js +21 -0
- package/components/widgets/label-sets/profile.d.ts +1 -0
- package/components/widgets/label-sets/profile.js +2 -0
- package/components/widgets/label-sets/revisions.js +20 -0
- package/components/widgets/label-sets/theme-mode-switch.d.ts +4 -0
- package/components/widgets/label-sets/theme-mode-switch.js +19 -0
- package/components/widgets/label-sets/tour.d.ts +4 -0
- package/components/widgets/label-sets/tour.js +29 -0
- package/components/widgets/label-types/authoring-tools.d.ts +44 -1
- package/components/widgets/label-types/authoring-tools.js +42 -1
- package/components/widgets/label-types/background.d.ts +2 -3
- package/components/widgets/label-types/background.js +3 -4
- package/components/widgets/label-types/builder-modules.d.ts +5 -0
- package/components/widgets/label-types/builder-modules.js +4 -0
- package/components/widgets/label-types/card.d.ts +5 -0
- package/components/widgets/label-types/card.js +3 -0
- package/components/widgets/label-types/gallery.d.ts +13 -0
- package/components/widgets/label-types/gallery.js +10 -0
- package/components/widgets/label-types/history.d.ts +48 -0
- package/components/widgets/label-types/history.js +66 -0
- package/components/widgets/label-types/inspector.d.ts +84 -0
- package/components/widgets/label-types/inspector.js +66 -0
- package/components/widgets/label-types/logout.d.ts +5 -0
- package/components/widgets/label-types/logout.js +1 -0
- package/components/widgets/label-types/revisions.d.ts +15 -0
- package/components/widgets/label-types/revisions.js +14 -4
- package/components/widgets/label-types/theme-mode-switch.d.ts +5 -0
- package/components/widgets/label-types/theme-mode-switch.js +4 -0
- package/components/widgets/label-types/tour.d.ts +9 -0
- package/components/widgets/label-types/tour.js +7 -0
- package/components/widgets/login-redirect.d.ts +1 -1
- package/components/widgets/login-redirect.js +4 -6
- package/components/widgets/navigation-descriptor-resolver.server.js +64 -30
- package/components/widgets/server/navigation-request.d.ts +0 -1
- package/components/widgets/server/navigation-request.js +1 -1
- package/components/widgets/server/search.d.ts +0 -2
- package/components/widgets/server/search.js +1 -1
- package/components/widgets/shared/bullet-list-vocabulary.d.ts +80 -0
- package/components/widgets/shared/bullet-list-vocabulary.js +159 -0
- package/components/widgets/shared/card-body-client.d.ts +64 -56
- package/components/widgets/shared/card-body-client.js +243 -90
- package/components/widgets/shared/card-vocabulary.d.ts +53 -0
- package/components/widgets/shared/card-vocabulary.js +39 -0
- package/components/widgets/shared/markdown-body-client.d.ts +9 -5
- package/components/widgets/shared/markdown-body-client.js +24 -36
- package/components/widgets/shared/markdown-render.d.ts +11 -0
- package/components/widgets/shared/markdown-render.js +24 -6
- package/components/widgets/shared/result-body-client.js +2 -2
- package/components/widgets/signals/command-toolbar-address.d.ts +0 -2
- package/components/widgets/signals/command-toolbar-address.js +0 -4
- package/components/widgets/signals/control-signal-capabilities.d.ts +23 -13
- package/components/widgets/signals/control-signal-capabilities.js +33 -3
- package/components/widgets/signals/renderable-block-signal-capabilities.d.ts +5 -0
- package/components/widgets/signals/renderable-block-signal-capabilities.js +5 -0
- package/components/widgets/signals/signal-endpoints.d.ts +4 -1
- package/components/widgets/signals/signal-endpoints.js +9 -4
- package/components/workspace/catalog-state.d.ts +13 -0
- package/components/workspace/catalog-store.js +1 -0
- package/constants/cms-layout-types.d.ts +6 -2
- package/constants/cms-layout-types.js +8 -4
- package/constants/cms-widget-types.d.ts +8 -19
- package/constants/cms-widget-types.js +22 -13
- package/constants/content-entry-kinds.d.ts +21 -0
- package/constants/content-entry-kinds.js +25 -0
- package/constants/content-entry-parts.d.ts +55 -0
- package/constants/content-entry-parts.js +48 -0
- package/constants/core-data-provider-keys.d.ts +12 -0
- package/constants/core-data-provider-keys.js +12 -0
- package/constants/grid-columns.d.ts +4 -0
- package/constants/grid-columns.js +5 -0
- package/constants/html-link-schemes.d.ts +6 -0
- package/constants/html-link-schemes.js +6 -0
- package/constants/media-library-provider-keys.d.ts +5 -0
- package/constants/media-library-provider-keys.js +5 -0
- package/constants/public-login-route.d.ts +11 -0
- package/constants/public-login-route.js +12 -0
- package/constants/runtime-data-provider-key.d.ts +1 -1
- package/constants/runtime-module-ownership.js +32 -5
- package/constants/runtime-render-client-types.d.ts +0 -1
- package/constants/runtime-render-client-types.js +0 -1
- package/constants/site-cookies.d.ts +9 -0
- package/constants/site-cookies.js +13 -0
- package/constants/support.d.ts +1 -1
- package/constants/support.js +1 -1
- package/constants/thread-library-provider-keys.d.ts +4 -3
- package/constants/thread-library-provider-keys.js +4 -3
- package/constants.d.ts +2 -1
- package/constants.js +3 -1
- package/controls.d.ts +16 -0
- package/controls.js +8 -0
- package/forms.d.ts +3 -2
- package/forms.js +1 -1
- package/gateway/auth-public-manifest.js +21 -14
- package/gateway/content-entries.d.ts +57 -0
- package/gateway/content-entries.js +141 -0
- package/gateway/dashboard-cards-route.js +121 -77
- package/gateway/errors.d.ts +0 -1
- package/gateway/errors.js +1 -1
- package/gateway/form-registry.d.ts +1 -6
- package/gateway/form-registry.js +12 -28
- package/gateway/form-submit.d.ts +6 -21
- package/gateway/form-submit.js +8 -13
- package/gateway/internal-references.d.ts +7 -4
- package/gateway/internal-references.js +157 -15
- package/gateway/media-folder-images.d.ts +19 -0
- package/gateway/media-folder-images.js +37 -0
- package/gateway/module-diagnostics-route.js +4 -9
- package/gateway/navigation-target-route.js +15 -84
- package/gateway/page-references-route.d.ts +18 -0
- package/gateway/page-references-route.js +86 -0
- package/gateway/route-handler-helpers.d.ts +9 -0
- package/gateway/route-handler-helpers.js +41 -0
- package/gateway/server-capabilities.d.ts +1 -1
- package/gateway/server-capabilities.js +24 -16
- package/gateway/site-api-request.d.ts +32 -0
- package/gateway/site-api-request.js +48 -0
- package/gateway/site-area.d.ts +26 -2
- package/gateway/site-area.js +80 -95
- package/gateway/site-auth-settings.d.ts +4 -3
- package/gateway/site-auth-settings.js +11 -27
- package/gateway/site-config.js +15 -16
- package/gateway/site-content.d.ts +30 -0
- package/gateway/site-content.js +32 -0
- package/gateway/site-form-route.js +14 -5
- package/gateway/site-media-settings.d.ts +6 -5
- package/gateway/site-media-settings.js +11 -27
- package/gateway/site-nav.js +34 -61
- package/gateway/site-page.d.ts +11 -5
- package/gateway/site-page.js +56 -96
- package/gateway/site-proxy.js +13 -3
- package/gateway/site-settings.d.ts +4 -3
- package/gateway/site-settings.js +11 -27
- package/gateway/site-stats.d.ts +4 -3
- package/gateway/site-stats.js +11 -27
- package/gateway/site-theme.d.ts +3 -3
- package/gateway/site-theme.js +14 -31
- package/gateway/thread-inbox-stats.d.ts +4 -3
- package/gateway/thread-inbox-stats.js +13 -25
- package/gateway/tr.d.ts +8 -0
- package/gateway/tr.js +18 -3
- package/gateway/user-state.d.ts +2 -2
- package/gateway/user-state.js +14 -26
- package/helpers/access.d.ts +0 -5
- package/helpers/access.js +0 -19
- package/helpers/antd-locale.d.ts +0 -3
- package/helpers/antd-locale.js +4 -6
- package/helpers/cms-area-config.d.ts +15 -11
- package/helpers/cms-area-config.js +13 -10
- package/helpers/cms-area-root-route.d.ts +4 -5
- package/helpers/cms-area-root-route.js +2 -6
- package/helpers/cms-config-field-validation.d.ts +7 -3
- package/helpers/cms-config-field-validation.js +47 -6
- package/helpers/cms-container-chrome.d.ts +10 -2
- package/helpers/cms-container-chrome.js +22 -31
- package/helpers/cms-content-binding.d.ts +13 -0
- package/helpers/cms-content-binding.js +32 -0
- package/helpers/cms-dialog.d.ts +51 -0
- package/helpers/cms-dialog.js +50 -0
- package/helpers/cms-layout-defaults.d.ts +19 -9
- package/helpers/cms-layout-defaults.js +64 -74
- package/helpers/cms-navigation-catalog.d.ts +0 -1
- package/helpers/cms-navigation-catalog.js +1 -1
- package/helpers/cms-node-factories.d.ts +1 -3
- package/helpers/cms-node-factories.js +2 -5
- package/helpers/cms-node-visibility.d.ts +8 -0
- package/helpers/cms-node-visibility.js +21 -1
- package/helpers/cms-page-catalog.d.ts +1 -3
- package/helpers/cms-page-catalog.js +11 -11
- package/helpers/cms-preset-nodes.d.ts +51 -1
- package/helpers/cms-preset-nodes.js +68 -2
- package/helpers/cms-preset-page-tree.d.ts +28 -0
- package/helpers/cms-preset-page-tree.js +83 -0
- package/helpers/cms-region-keys.d.ts +0 -1
- package/helpers/cms-region-keys.js +1 -1
- package/helpers/cms-routing.d.ts +0 -1
- package/helpers/cms-scope-search-params.d.ts +5 -1
- package/helpers/cms-scope-search-params.js +6 -1
- package/helpers/cms-tree-controller-settings.d.ts +11 -0
- package/helpers/cms-tree-controller-settings.js +37 -0
- package/helpers/content-entry-record-binding.d.ts +21 -0
- package/helpers/content-entry-record-binding.js +31 -0
- package/helpers/css-linear-gradient.d.ts +28 -0
- package/helpers/css-linear-gradient.js +122 -0
- package/helpers/flags.d.ts +10 -0
- package/helpers/flags.js +20 -0
- package/helpers/form-id.d.ts +8 -0
- package/helpers/form-id.js +10 -0
- package/helpers/format-date-time.d.ts +5 -0
- package/helpers/format-date-time.js +31 -0
- package/helpers/internal-path.d.ts +12 -0
- package/helpers/internal-path.js +28 -0
- package/helpers/is-record.js +2 -1
- package/helpers/layout-authoring-markers.d.ts +0 -2
- package/helpers/layout-authoring-markers.js +1 -1
- package/helpers/layout-style.d.ts +2 -16
- package/helpers/layout-style.js +15 -32
- package/helpers/link-target.d.ts +6 -1
- package/helpers/link-target.js +12 -4
- package/helpers/locale.d.ts +2 -0
- package/helpers/locale.js +4 -0
- package/helpers/logout.d.ts +0 -16
- package/helpers/logout.js +1 -1
- package/helpers/motion.d.ts +0 -1
- package/helpers/motion.js +1 -1
- package/helpers/overlay-events.d.ts +9 -0
- package/helpers/overlay-events.js +9 -0
- package/helpers/page-reference-tree.d.ts +42 -0
- package/helpers/page-reference-tree.js +92 -0
- package/helpers/phi-seo.d.ts +0 -3
- package/helpers/phi-seo.js +2 -2
- package/helpers/public-route-claims.d.ts +0 -1
- package/helpers/public-route-claims.js +1 -1
- package/helpers/region-page-scope.d.ts +26 -0
- package/helpers/region-page-scope.js +121 -0
- package/helpers/renderable-block-defaults.d.ts +0 -3
- package/helpers/renderable-block-defaults.js +1 -1
- package/helpers/renderable-block-normalizers.d.ts +26 -0
- package/helpers/renderable-block-normalizers.js +166 -0
- package/helpers/renderable-block-serialization.d.ts +1 -5
- package/helpers/renderable-block-serialization.js +13 -166
- package/helpers/runtime-module-route-path.d.ts +0 -1
- package/helpers/runtime-module-route-path.js +1 -1
- package/helpers/shell-region-style.d.ts +3 -3
- package/helpers/shell-region-style.js +3 -3
- package/helpers/signal-listen-routes.d.ts +14 -0
- package/helpers/signal-listen-routes.js +33 -0
- package/helpers/signal-route-lifecycle.d.ts +1 -3
- package/helpers/signal-route-lifecycle.js +2 -2
- package/helpers/signal-route-set-join.d.ts +4 -0
- package/helpers/signal-route-set-join.js +29 -0
- package/helpers/site-api.d.ts +0 -3
- package/helpers/site-api.js +1 -3
- package/helpers/site-locale-config.d.ts +16 -6
- package/helpers/site-locale-config.js +14 -0
- package/helpers/static-render-path.d.ts +12 -0
- package/helpers/static-render-path.js +18 -0
- package/helpers/structure-widget-swap.js +4 -4
- package/helpers/surface-presets.d.ts +81 -0
- package/helpers/surface-presets.js +65 -0
- package/helpers/surface-style.d.ts +63 -0
- package/helpers/surface-style.js +74 -0
- package/helpers/table-binding.d.ts +6 -2
- package/helpers/table-binding.js +12 -1
- package/helpers/text-placeholders.d.ts +11 -21
- package/helpers/text-placeholders.js +24 -8
- package/helpers/translation-cache.js +3 -1
- package/helpers.d.ts +3 -0
- package/helpers.js +8 -0
- package/module-dashboard-cards.d.ts +15 -0
- package/module-dashboard-cards.js +15 -0
- package/module-records.d.ts +14 -0
- package/module-records.js +13 -0
- package/net/log.d.ts +1 -2
- package/net/log.js +1 -1
- package/next/area-route.d.ts +17 -3
- package/next/area-route.js +30 -22
- package/next/config.d.mts +25 -0
- package/next/config.mjs +277 -0
- package/next/overlay-zones.js +3 -7
- package/next/root-error-page.d.ts +15 -0
- package/next/root-error-page.js +30 -0
- package/next/root-route.d.ts +0 -4
- package/next/root-route.js +6 -7
- package/next/seo-routes.js +8 -36
- package/next/site-proxy.d.ts +2 -2
- package/next/site-proxy.js +26 -7
- package/package.json +23 -2
- package/plugins/factories/widget-builder-plugin.js +2 -3
- package/plugins/registries/runtime-controllers.js +4 -1
- package/plugins/runtime/phi-slot-child-frame-client.js +17 -8
- package/plugins/runtime/phi-slot-child-frame-view.d.ts +10 -2
- package/plugins/runtime/phi-slot-child-frame-view.js +12 -28
- package/plugins/runtime/phi-slot-child-frame.d.ts +2 -0
- package/plugins/runtime/phi-slot-child-frame.js +1 -1
- package/plugins/runtime/phi-slot-child-viewport-effects-observer.js +12 -5
- package/plugins/runtime/slot-size-policy.d.ts +1 -2
- package/plugins/runtime/slot-size-policy.js +17 -6
- package/plugins/runtime-modules/accounting/module.d.ts +1 -1
- package/plugins/runtime-modules/accounting/trees/phi-default-accounting-page-tree.js +2 -0
- package/plugins/runtime-modules/admin/definition.d.ts +2 -5
- package/plugins/runtime-modules/admin/definition.js +2 -8
- package/plugins/runtime-modules/admin/forms.d.ts +0 -3
- package/plugins/runtime-modules/admin/forms.js +15 -24
- package/plugins/runtime-modules/admin/ids.d.ts +9 -0
- package/plugins/runtime-modules/admin/ids.js +9 -0
- package/plugins/runtime-modules/admin/module.d.ts +32 -1
- package/plugins/runtime-modules/admin/module.js +8 -3
- package/plugins/runtime-modules/admin/presets.d.ts +1 -4
- package/plugins/runtime-modules/admin/presets.js +0 -1
- package/plugins/runtime-modules/admin/trees/admin-settings-label-set.js +3 -2
- package/plugins/runtime-modules/admin/trees/phi-default-admin-area-preset-tree.js +15 -147
- package/plugins/runtime-modules/admin/trees/phi-default-admin-settings-page-tree.js +7 -4
- package/plugins/runtime-modules/app/definition.d.ts +2 -2
- package/plugins/runtime-modules/app/definition.js +2 -2
- package/plugins/runtime-modules/app/forms.d.ts +0 -6
- package/plugins/runtime-modules/app/forms.js +34 -56
- package/plugins/runtime-modules/app/ids.d.ts +9 -0
- package/plugins/runtime-modules/app/ids.js +9 -0
- package/plugins/runtime-modules/app/module.d.ts +1 -1
- package/plugins/runtime-modules/app/trees/phi-default-app-area-preset-tree.js +8 -64
- package/plugins/runtime-modules/app/trees/phi-default-app-profile-page-tree.js +1 -0
- package/plugins/runtime-modules/app/trees/profile-label-set.js +3 -2
- package/plugins/runtime-modules/area-base-presets.d.ts +1 -1
- package/plugins/runtime-modules/area-base-presets.js +0 -1
- package/plugins/runtime-modules/area-contributions/accounting.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/admin.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/app.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/app.js +0 -2
- package/plugins/runtime-modules/area-contributions/builder.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/common.d.ts +7 -2
- package/plugins/runtime-modules/area-contributions/common.js +10 -1
- package/plugins/runtime-modules/area-contributions/editor.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/editor.js +2 -0
- package/plugins/runtime-modules/area-contributions/public.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/public.js +2 -0
- package/plugins/runtime-modules/area-contributions.d.ts +0 -1
- package/plugins/runtime-modules/area-contributions.js +14 -4
- package/plugins/runtime-modules/area-definitions.d.ts +0 -97
- package/plugins/runtime-modules/area-definitions.js +9 -31
- package/plugins/runtime-modules/area-module-defaults.js +13 -5
- package/plugins/runtime-modules/asset/client-data-providers.js +6 -0
- package/plugins/runtime-modules/asset/controller/client.d.ts +14 -5
- package/plugins/runtime-modules/asset/controller/client.js +1 -1
- package/plugins/runtime-modules/asset/controller/definition.d.ts +21 -5
- package/plugins/runtime-modules/asset/controller/definition.js +22 -10
- package/plugins/runtime-modules/asset/controller/mount.d.ts +5 -2
- package/plugins/runtime-modules/asset/controller/mount.js +2 -2
- package/plugins/runtime-modules/asset/controller/runtime.d.ts +8 -1
- package/plugins/runtime-modules/asset/controller/runtime.js +69 -115
- package/plugins/runtime-modules/asset/data-providers.d.ts +59 -0
- package/plugins/runtime-modules/asset/data-providers.js +50 -0
- package/plugins/runtime-modules/asset/definition.d.ts +54 -0
- package/plugins/runtime-modules/asset/ids.d.ts +6 -0
- package/plugins/runtime-modules/asset/ids.js +7 -0
- package/plugins/runtime-modules/asset/metadata-form.d.ts +0 -2
- package/plugins/runtime-modules/asset/metadata-form.js +2 -2
- package/plugins/runtime-modules/asset/server.js +5 -0
- package/plugins/runtime-modules/asset/services/folder-images.server.d.ts +11 -0
- package/plugins/runtime-modules/asset/services/folder-images.server.js +41 -0
- package/plugins/runtime-modules/asset/services/options.d.ts +3 -0
- package/plugins/runtime-modules/asset/services/options.js +37 -28
- package/plugins/runtime-modules/asset/settings-forms.d.ts +0 -3
- package/plugins/runtime-modules/asset/settings-forms.js +1 -1
- package/plugins/runtime-modules/asset/trees/phi-default-admin-media-settings-page-tree.js +28 -8
- package/plugins/runtime-modules/asset/trees/phi-default-builder-media-page-tree.js +106 -58
- package/plugins/runtime-modules/asset/widgets/area-upload/config.d.ts +2 -2
- package/plugins/runtime-modules/asset/widgets/area-upload/config.js +4 -3
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.d.ts +2 -1
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.js +1 -1
- package/plugins/runtime-modules/asset/widgets/image-inspector/config.d.ts +2 -2
- package/plugins/runtime-modules/asset/widgets/image-inspector/config.js +4 -3
- package/plugins/runtime-modules/asset/widgets/media-picker/config.d.ts +2 -2
- package/plugins/runtime-modules/asset/widgets/media-picker/config.js +4 -3
- package/plugins/runtime-modules/auth/admin-settings-forms.d.ts +0 -7
- package/plugins/runtime-modules/auth/admin-settings-forms.js +3 -3
- package/plugins/runtime-modules/auth/controller/definition.d.ts +13 -4
- package/plugins/runtime-modules/auth/controller/definition.js +3 -3
- package/plugins/runtime-modules/auth/controller/server-definition.d.ts +5 -5
- package/plugins/runtime-modules/auth/controller-plugin.js +23 -47
- package/plugins/runtime-modules/auth/definition.d.ts +1 -1
- package/plugins/runtime-modules/auth/definition.js +2 -2
- package/plugins/runtime-modules/auth/form-provider-registry.js +10 -6
- package/plugins/runtime-modules/auth/ids.d.ts +16 -0
- package/plugins/runtime-modules/auth/ids.js +17 -0
- package/plugins/runtime-modules/auth/machine.d.ts +0 -13
- package/plugins/runtime-modules/auth/machine.js +1 -1
- package/plugins/runtime-modules/auth/overlay-ids.d.ts +0 -1
- package/plugins/runtime-modules/auth/overlay-ids.js +0 -3
- package/plugins/runtime-modules/auth/services/installations-table.js +4 -3
- package/plugins/runtime-modules/auth/trees/phi-auth-area-overlay-tree.server.js +35 -7
- package/plugins/runtime-modules/auth/trees/phi-auth-runtime-page-tree.js +1 -1
- package/plugins/runtime-modules/auth/trees/phi-default-admin-auth-settings-page-tree.js +1 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-confirm-page-tree.js +25 -21
- package/plugins/runtime-modules/auth/trees/phi-default-pub-login-page-tree.js +25 -21
- package/plugins/runtime-modules/auth/trees/phi-default-pub-registration-page-tree.js +25 -21
- package/plugins/runtime-modules/auth/trees/phi-default-pub-reset-password-page-tree.js +25 -21
- package/plugins/runtime-modules/auth/trees/security-label-set.js +3 -2
- package/plugins/runtime-modules/auth/widgets/auth-methods/config.d.ts +2 -1
- package/plugins/runtime-modules/auth/widgets/auth-methods/config.js +1 -1
- package/plugins/runtime-modules/auth/widgets/auth-workflow/client.js +3 -2
- package/plugins/runtime-modules/auth/widgets/auth-workflow/config.d.ts +2 -1
- package/plugins/runtime-modules/auth/widgets/auth-workflow/config.js +1 -1
- package/plugins/runtime-modules/auth/widgets/logout/client.d.ts +3 -1
- package/plugins/runtime-modules/auth/widgets/logout/client.js +12 -7
- package/plugins/runtime-modules/auth/widgets/logout/server.d.ts +1 -1
- package/plugins/runtime-modules/auth/widgets/logout/server.js +10 -2
- package/plugins/runtime-modules/auth/widgets/security/client.d.ts +4 -1
- package/plugins/runtime-modules/auth/widgets/security/client.js +11 -5
- package/plugins/runtime-modules/avatar/definition.d.ts +1 -1
- package/plugins/runtime-modules/avatar/definition.js +2 -2
- package/plugins/runtime-modules/avatar/ids.d.ts +9 -0
- package/plugins/runtime-modules/avatar/ids.js +9 -0
- package/plugins/runtime-modules/avatar/labels.js +3 -2
- package/plugins/runtime-modules/avatar/module.d.ts +1 -1
- package/plugins/runtime-modules/avatar/overlay-tree.server.js +2 -6
- package/plugins/runtime-modules/avatar/widgets/account-avatar/client.js +6 -3
- package/plugins/runtime-modules/blog/authoring-widgets.d.ts +2 -0
- package/plugins/runtime-modules/blog/authoring-widgets.js +4 -0
- package/plugins/runtime-modules/blog/authoring.d.ts +1 -0
- package/plugins/runtime-modules/blog/authoring.js +8 -0
- package/plugins/runtime-modules/blog/definition.d.ts +35 -0
- package/plugins/runtime-modules/blog/definition.js +22 -0
- package/plugins/runtime-modules/blog/forms.d.ts +16 -0
- package/plugins/runtime-modules/blog/forms.js +11 -0
- package/plugins/runtime-modules/blog/ids.d.ts +25 -0
- package/plugins/runtime-modules/blog/ids.js +27 -0
- package/plugins/runtime-modules/blog/labels.d.ts +4 -0
- package/plugins/runtime-modules/blog/labels.js +27 -0
- package/plugins/runtime-modules/blog/module.d.ts +35 -0
- package/plugins/runtime-modules/blog/module.js +12 -0
- package/plugins/runtime-modules/blog/presets.d.ts +53 -0
- package/plugins/runtime-modules/blog/presets.js +24 -0
- package/plugins/runtime-modules/blog/server.d.ts +1 -0
- package/plugins/runtime-modules/blog/server.js +17 -0
- package/plugins/runtime-modules/builder/addresses.d.ts +1 -1
- package/plugins/runtime-modules/builder/area-settings-answer.d.ts +31 -0
- package/plugins/runtime-modules/builder/area-settings-answer.js +81 -0
- package/plugins/runtime-modules/builder/area-shell-presets.server.d.ts +21 -5
- package/plugins/runtime-modules/builder/area-shell-presets.server.js +102 -100
- package/plugins/runtime-modules/builder/authoring-provider-keys.d.ts +1 -20
- package/plugins/runtime-modules/builder/authoring-provider-keys.js +1 -1
- package/plugins/runtime-modules/builder/authoring-widgets.js +0 -2
- package/plugins/runtime-modules/builder/cards.d.ts +3 -0
- package/plugins/runtime-modules/builder/cards.js +79 -0
- package/plugins/runtime-modules/builder/clients/builder-region-overrides.js +4 -2
- package/plugins/runtime-modules/builder/clients/canvas-widget.js +19 -6
- package/plugins/runtime-modules/builder/clients/grid-placement-settings.d.ts +24 -0
- package/plugins/runtime-modules/builder/clients/grid-placement-settings.js +93 -0
- package/plugins/runtime-modules/builder/clients/inspector-config-field.d.ts +46 -5
- package/plugins/runtime-modules/builder/clients/inspector-config-field.js +325 -104
- package/plugins/runtime-modules/builder/clients/inspector-image-field.d.ts +17 -0
- package/plugins/runtime-modules/builder/clients/inspector-image-field.js +59 -0
- package/plugins/runtime-modules/builder/clients/inspector-link-target-field.d.ts +9 -23
- package/plugins/runtime-modules/builder/clients/inspector-link-target-field.js +13 -60
- package/plugins/runtime-modules/builder/clients/inspector-section-widget.d.ts +9 -3
- package/plugins/runtime-modules/builder/clients/inspector-section-widget.js +51 -110
- package/plugins/runtime-modules/builder/clients/inspector-surface-labels.d.ts +8 -0
- package/plugins/runtime-modules/builder/clients/inspector-surface-labels.js +24 -0
- package/plugins/runtime-modules/builder/clients/inspector-title.js +7 -8
- package/plugins/runtime-modules/builder/clients/layout-inspector.d.ts +18 -9
- package/plugins/runtime-modules/builder/clients/layout-inspector.js +71 -158
- package/plugins/runtime-modules/builder/clients/layout-scaffold-buttons.js +4 -4
- package/plugins/runtime-modules/builder/clients/layout-scaffold-overlays.js +2 -2
- package/plugins/runtime-modules/builder/clients/mode-switch.js +3 -5
- package/plugins/runtime-modules/builder/clients/pages-header.js +11 -63
- package/plugins/runtime-modules/builder/clients/pages-workspace.js +10 -1
- package/plugins/runtime-modules/builder/clients/region-inspector.d.ts +6 -2
- package/plugins/runtime-modules/builder/clients/region-inspector.js +12 -26
- package/plugins/runtime-modules/builder/clients/region-visibility-fields.d.ts +15 -0
- package/plugins/runtime-modules/builder/clients/region-visibility-fields.js +135 -0
- package/plugins/runtime-modules/builder/clients/shells-workspace.js +3 -1
- package/plugins/runtime-modules/builder/clients/structure-canvas.d.ts +1 -3
- package/plugins/runtime-modules/builder/clients/structure-canvas.js +50 -41
- package/plugins/runtime-modules/builder/clients/widget-effects-editor.js +2 -2
- package/plugins/runtime-modules/builder/clients/widget-inspector.d.ts +15 -1
- package/plugins/runtime-modules/builder/clients/widget-inspector.js +69 -26
- package/plugins/runtime-modules/builder/cms-instance-allocator.d.ts +0 -1
- package/plugins/runtime-modules/builder/cms-instance-allocator.js +1 -1
- package/plugins/runtime-modules/builder/controller/client.d.ts +31 -14
- package/plugins/runtime-modules/builder/controller/client.js +9 -2
- package/plugins/runtime-modules/builder/controller/definition.d.ts +53 -14
- package/plugins/runtime-modules/builder/controller/definition.js +148 -37
- package/plugins/runtime-modules/builder/{draft-command-controller.d.ts → controller/draft-command-controller.d.ts} +12 -5
- package/plugins/runtime-modules/builder/{draft-command-controller.js → controller/draft-command-controller.js} +186 -232
- package/plugins/runtime-modules/builder/{draft-status-controller.d.ts → controller/draft-status-controller.d.ts} +9 -2
- package/plugins/runtime-modules/builder/{draft-status-controller.js → controller/draft-status-controller.js} +30 -12
- package/plugins/runtime-modules/builder/controller/inspector-controller.d.ts +3 -0
- package/plugins/runtime-modules/builder/controller/inspector-controller.js +207 -0
- package/plugins/runtime-modules/builder/controller/mount.d.ts +1 -1
- package/plugins/runtime-modules/builder/controller/mount.js +1 -1
- package/plugins/runtime-modules/builder/{page-controller-helpers.d.ts → controller/page-controller-helpers.d.ts} +2 -4
- package/plugins/runtime-modules/builder/{page-controller-helpers.js → controller/page-controller-helpers.js} +4 -4
- package/plugins/runtime-modules/builder/{page-controller.d.ts → controller/page-controller.d.ts} +6 -3
- package/plugins/runtime-modules/builder/{page-controller.js → controller/page-controller.js} +45 -134
- package/plugins/runtime-modules/builder/controller/preview-controller.d.ts +5 -0
- package/plugins/runtime-modules/builder/controller/preview-controller.js +68 -0
- package/plugins/runtime-modules/builder/{region-controller.d.ts → controller/region-controller.d.ts} +1 -2
- package/plugins/runtime-modules/builder/{region-controller.js → controller/region-controller.js} +18 -38
- package/plugins/runtime-modules/builder/controller/server-definition.d.ts +34 -14
- package/plugins/runtime-modules/builder/controller/server-definition.js +29 -3
- package/plugins/runtime-modules/builder/{signal-wiring-controller.d.ts → controller/signal-wiring-controller.d.ts} +2 -8
- package/plugins/runtime-modules/builder/{signal-wiring-controller.js → controller/signal-wiring-controller.js} +4 -12
- package/plugins/runtime-modules/builder/{workspace-controller.d.ts → controller/workspace-controller.d.ts} +15 -7
- package/plugins/runtime-modules/builder/{workspace-controller.js → controller/workspace-controller.js} +270 -725
- package/plugins/runtime-modules/builder/data-providers.d.ts +1 -1
- package/plugins/runtime-modules/builder/definition.d.ts +3 -3
- package/plugins/runtime-modules/builder/definition.js +2 -2
- package/plugins/runtime-modules/builder/developer-workspace-store.d.ts +27 -26
- package/plugins/runtime-modules/builder/developer-workspace-store.js +59 -224
- package/plugins/runtime-modules/builder/developer-workspace-types.d.ts +30 -34
- package/plugins/runtime-modules/builder/edit-scaffold-drawer.js +6 -5
- package/plugins/runtime-modules/builder/effects-form-values.js +3 -2
- package/plugins/runtime-modules/builder/history.d.ts +59 -5
- package/plugins/runtime-modules/builder/ids.d.ts +9 -0
- package/plugins/runtime-modules/builder/ids.js +9 -0
- package/plugins/runtime-modules/builder/inspector-actions.d.ts +18 -13
- package/plugins/runtime-modules/builder/inspector-actions.js +9 -16
- package/plugins/runtime-modules/builder/inspector-overlay-addresses.d.ts +2 -3
- package/plugins/runtime-modules/builder/inspector-overlay-addresses.js +3 -8
- package/plugins/runtime-modules/builder/inspector-section-widget.js +15 -6
- package/plugins/runtime-modules/builder/module-authoring-catalog.d.ts +2 -0
- package/plugins/runtime-modules/builder/module-authoring-catalog.server.js +3 -0
- package/plugins/runtime-modules/builder/module-usage-client.js +5 -1
- package/plugins/runtime-modules/builder/navigation-catalog.server.js +4 -1
- package/plugins/runtime-modules/builder/navigation-folder-address.d.ts +0 -1
- package/plugins/runtime-modules/builder/navigation-folder-address.js +1 -1
- package/plugins/runtime-modules/builder/navigation-path-context.js +3 -5
- package/plugins/runtime-modules/builder/navigation-store.d.ts +2 -2
- package/plugins/runtime-modules/builder/navigation-store.js +3 -3
- package/plugins/runtime-modules/builder/node-config-write.d.ts +38 -0
- package/plugins/runtime-modules/builder/node-config-write.js +134 -0
- package/plugins/runtime-modules/builder/node-finders.d.ts +0 -1
- package/plugins/runtime-modules/builder/node-finders.js +1 -1
- package/plugins/runtime-modules/builder/offered-page-catalog.d.ts +0 -13
- package/plugins/runtime-modules/builder/offered-page-catalog.js +2 -2
- package/plugins/runtime-modules/builder/options-providers.js +16 -9
- package/plugins/runtime-modules/builder/page-preset-catalog.server.js +2 -63
- package/plugins/runtime-modules/builder/page-presets.server.d.ts +8 -1
- package/plugins/runtime-modules/builder/page-presets.server.js +63 -76
- package/plugins/runtime-modules/builder/page-references-provider.js +1 -1
- package/plugins/runtime-modules/builder/page-tree-walk.d.ts +3 -0
- package/plugins/runtime-modules/builder/page-tree-walk.js +4 -0
- package/plugins/runtime-modules/builder/persistence.d.ts +26 -11
- package/plugins/runtime-modules/builder/persistence.js +38 -78
- package/plugins/runtime-modules/builder/plugin-meta-labels.js +2 -0
- package/plugins/runtime-modules/builder/plugin-meta-labels.server.d.ts +15 -0
- package/plugins/runtime-modules/builder/plugin-meta-labels.server.js +58 -30
- package/plugins/runtime-modules/builder/plugin-metas.d.ts +7 -0
- package/plugins/runtime-modules/builder/plugin-metas.js +27 -9
- package/plugins/runtime-modules/builder/presets.d.ts +0 -132
- package/plugins/runtime-modules/builder/presets.js +0 -1
- package/plugins/runtime-modules/builder/preview-transport.d.ts +9 -26
- package/plugins/runtime-modules/builder/preview-transport.js +2 -2
- package/plugins/runtime-modules/builder/public-route-collisions.d.ts +0 -33
- package/plugins/runtime-modules/builder/public-route-collisions.js +4 -4
- package/plugins/runtime-modules/builder/region-defaults.js +18 -46
- package/plugins/runtime-modules/builder/region-hydration.d.ts +5 -9
- package/plugins/runtime-modules/builder/region-hydration.js +37 -106
- package/plugins/runtime-modules/builder/region-keys.d.ts +0 -1
- package/plugins/runtime-modules/builder/region-keys.js +1 -4
- package/plugins/runtime-modules/builder/region-root-node.d.ts +22 -0
- package/plugins/runtime-modules/builder/region-root-node.js +25 -0
- package/plugins/runtime-modules/builder/render-root-node-preview.server.d.ts +2 -20
- package/plugins/runtime-modules/builder/render-root-node-preview.server.js +10 -27
- package/plugins/runtime-modules/builder/render-root-node-scaffold.d.ts +13 -4
- package/plugins/runtime-modules/builder/render-root-node-scaffold.js +27 -130
- package/plugins/runtime-modules/builder/root-node-normalization.d.ts +31 -23
- package/plugins/runtime-modules/builder/root-node-normalization.js +72 -69
- package/plugins/runtime-modules/builder/root-node-renderable-tree.d.ts +1 -3
- package/plugins/runtime-modules/builder/root-node-renderable-tree.js +11 -53
- package/plugins/runtime-modules/builder/runtime-module-selection.d.ts +3 -12
- package/plugins/runtime-modules/builder/runtime-module-selection.js +25 -4
- package/plugins/runtime-modules/builder/selected-collection-source.d.ts +0 -8
- package/plugins/runtime-modules/builder/selected-collection-source.js +5 -6
- package/plugins/runtime-modules/builder/sequential-slot-helpers.d.ts +0 -3
- package/plugins/runtime-modules/builder/sequential-slot-helpers.js +1 -1
- package/plugins/runtime-modules/builder/server.js +5 -0
- package/plugins/runtime-modules/builder/services/navigation-table.js +31 -13
- package/plugins/runtime-modules/builder/services/page-source-tree.js +20 -7
- package/plugins/runtime-modules/builder/services/runtime-modules-table.d.ts +19 -0
- package/plugins/runtime-modules/builder/services/runtime-modules-table.js +84 -12
- package/plugins/runtime-modules/builder/signal-endpoints.js +11 -31
- package/plugins/runtime-modules/builder/signal-route-selection.js +4 -7
- package/plugins/runtime-modules/builder/signal-wiring-options.js +5 -4
- package/plugins/runtime-modules/builder/structure-region-pick-items.js +3 -2
- package/plugins/runtime-modules/builder/trees/builder-navigation-label-set.js +3 -2
- package/plugins/runtime-modules/builder/trees/builder-settings-label-set.js +3 -2
- package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.server.js +86 -35
- package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.d.ts +11 -5
- package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.js +196 -107
- package/plugins/runtime-modules/builder/trees/phi-default-builder-settings-page-tree.js +7 -4
- package/plugins/runtime-modules/builder/widgets/chrome/config.d.ts +32 -52
- package/plugins/runtime-modules/builder/widgets/chrome/config.js +4 -6
- package/plugins/runtime-modules/builder/widgets/hello-world/config.d.ts +2 -1
- package/plugins/runtime-modules/builder/widgets/hello-world/config.js +4 -3
- package/plugins/runtime-modules/builder/widgets/structure-region/built-in.js +279 -638
- package/plugins/runtime-modules/builder/widgets/structure-region/config.js +3 -10
- package/plugins/runtime-modules/builder/widgets/structure-region/plugin.js +4 -3
- package/plugins/runtime-modules/builder/widgets/structure-region/tree-operations.d.ts +43 -0
- package/plugins/runtime-modules/builder/widgets/structure-region/tree-operations.js +114 -0
- package/plugins/runtime-modules/builder/widgets/test-block/config.d.ts +2 -1
- package/plugins/runtime-modules/builder/widgets/test-block/config.js +4 -3
- package/plugins/runtime-modules/builder/widgets/workspaces/config.d.ts +1 -1
- package/plugins/runtime-modules/builder/widgets.js +0 -8
- package/plugins/runtime-modules/client-area-contributions/accounting.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/accounting.js +0 -2
- package/plugins/runtime-modules/client-area-contributions/admin.js +0 -8
- package/plugins/runtime-modules/client-area-contributions/app.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/app.js +0 -8
- package/plugins/runtime-modules/client-area-contributions/builder.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/builder.js +0 -2
- package/plugins/runtime-modules/client-area-contributions/common.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/common.js +12 -0
- package/plugins/runtime-modules/client-area-contributions/editor.js +0 -8
- package/plugins/runtime-modules/client-area-contributions/public.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-module.js +6 -0
- package/plugins/runtime-modules/client-authoring-providers/accounting.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/admin.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/app.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/app.js +0 -6
- package/plugins/runtime-modules/client-authoring-providers/builder.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/common.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/common.js +12 -0
- package/plugins/runtime-modules/client-authoring-providers/editor.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/editor.js +9 -3
- package/plugins/runtime-modules/client-authoring-providers/public.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/public.js +10 -4
- package/plugins/runtime-modules/client-authoring-widget-module.js +6 -0
- package/plugins/runtime-modules/client-manifests/app.js +0 -5
- package/plugins/runtime-modules/client-manifests/builder.js +0 -4
- package/plugins/runtime-modules/client-manifests/common-data-providers.js +3 -0
- package/plugins/runtime-modules/client-manifests/common.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/common.js +35 -3
- package/plugins/runtime-modules/client-manifests/editor.js +2 -2
- package/plugins/runtime-modules/client-manifests/public.js +0 -2
- package/plugins/runtime-modules/content-entry-routes.d.ts +105 -0
- package/plugins/runtime-modules/content-entry-routes.js +112 -0
- package/plugins/runtime-modules/contracts.d.ts +2 -4
- package/plugins/runtime-modules/contracts.js +39 -2
- package/plugins/runtime-modules/core/authoring-widgets.js +19 -3
- package/plugins/runtime-modules/core/cards.js +3 -9
- package/plugins/runtime-modules/core/client-data-providers.d.ts +14 -2
- package/plugins/runtime-modules/core/client-data-providers.js +31 -0
- package/plugins/runtime-modules/core/content-entries/categories-table.d.ts +10 -0
- package/plugins/runtime-modules/core/content-entries/categories-table.js +77 -0
- package/plugins/runtime-modules/core/content-entries/curation-options.d.ts +8 -0
- package/plugins/runtime-modules/core/content-entries/curation-options.js +71 -0
- package/plugins/runtime-modules/core/content-entries/record-source.server.d.ts +22 -0
- package/plugins/runtime-modules/core/content-entries/record-source.server.js +19 -0
- package/plugins/runtime-modules/core/content-entries/record.server.d.ts +10 -0
- package/plugins/runtime-modules/core/content-entries/record.server.js +18 -0
- package/plugins/runtime-modules/{news/services → core/content-entries}/table.d.ts +3 -2
- package/plugins/runtime-modules/core/content-entries/table.js +164 -0
- package/plugins/runtime-modules/core/content-entries/tags.d.ts +14 -0
- package/plugins/runtime-modules/core/content-entries/tags.js +40 -0
- package/plugins/runtime-modules/core/data-providers.d.ts +289 -0
- package/plugins/runtime-modules/core/data-providers.js +199 -0
- package/plugins/runtime-modules/core/definition.d.ts +328 -1
- package/plugins/runtime-modules/core/definition.js +2 -2
- package/plugins/runtime-modules/core/form-providers.d.ts +38 -0
- package/plugins/runtime-modules/core/form-providers.js +3 -0
- package/plugins/runtime-modules/core/ids.d.ts +9 -0
- package/plugins/runtime-modules/core/ids.js +9 -0
- package/plugins/runtime-modules/core/messaging/data-providers.d.ts +106 -0
- package/plugins/runtime-modules/core/messaging/data-providers.js +119 -0
- package/plugins/runtime-modules/core/messaging/forms.d.ts +16 -0
- package/plugins/runtime-modules/core/messaging/forms.js +145 -0
- package/plugins/runtime-modules/core/messaging/labels.d.ts +49 -0
- package/plugins/runtime-modules/core/messaging/labels.js +149 -0
- package/plugins/runtime-modules/{threads/services/table.js → core/messaging/thread-inbox-table.js} +22 -22
- package/plugins/runtime-modules/core/server.js +12 -0
- package/plugins/runtime-modules/core/widgets/account/client.js +6 -4
- package/plugins/runtime-modules/core/widgets/account/config.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/account/config.js +2 -1
- package/plugins/runtime-modules/core/widgets/brand/client.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/brand/client.js +9 -2
- package/plugins/runtime-modules/core/widgets/brand/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/brand/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/brand/plugin.js +2 -2
- package/plugins/runtime-modules/core/widgets/brand/server.d.ts +2 -2
- package/plugins/runtime-modules/core/widgets/brand/server.js +2 -1
- package/plugins/runtime-modules/core/widgets/breadcrumb/client.js +4 -4
- package/plugins/runtime-modules/core/widgets/breadcrumb/config.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/breadcrumb/config.js +2 -1
- package/plugins/runtime-modules/core/widgets/button/client.js +7 -5
- package/plugins/runtime-modules/core/widgets/button/config.d.ts +73 -36
- package/plugins/runtime-modules/core/widgets/button/config.js +40 -29
- package/plugins/runtime-modules/core/widgets/card/authoring.js +3 -3
- package/plugins/runtime-modules/core/widgets/card/collection-view-binding.js +58 -15
- package/plugins/runtime-modules/core/widgets/card/config.d.ts +336 -32
- package/plugins/runtime-modules/core/widgets/card/config.js +176 -45
- package/plugins/runtime-modules/core/widgets/card/editor.d.ts +6 -2
- package/plugins/runtime-modules/core/widgets/card/editor.js +133 -25
- package/plugins/runtime-modules/core/widgets/card/plugin.js +13 -6
- package/plugins/runtime-modules/core/widgets/card/server.d.ts +10 -3
- package/plugins/runtime-modules/core/widgets/card/server.js +71 -32
- package/plugins/runtime-modules/core/widgets/cascader/authoring.d.ts +9 -4
- package/plugins/runtime-modules/core/widgets/cascader/config.d.ts +3 -2
- package/plugins/runtime-modules/core/widgets/cascader/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/checkbox-group/config.d.ts +3 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.js +20 -2
- package/plugins/runtime-modules/core/widgets/collection-view/config.d.ts +2 -4
- package/plugins/runtime-modules/core/widgets/collection-view/config.js +8 -14
- package/plugins/runtime-modules/core/widgets/color/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/color/config.d.ts +8 -2
- package/plugins/runtime-modules/core/widgets/color/config.js +18 -2
- package/plugins/runtime-modules/core/widgets/color/plugin.js +4 -3
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring.js +5 -4
- package/plugins/runtime-modules/core/widgets/command-toolbar/client.js +11 -237
- package/plugins/runtime-modules/core/widgets/command-toolbar/config.d.ts +17 -26
- package/plugins/runtime-modules/core/widgets/command-toolbar/config.js +32 -116
- package/plugins/runtime-modules/core/widgets/command-toolbar/plugin.js +4 -3
- package/plugins/runtime-modules/core/widgets/date-input/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/date-input/authoring.js +8 -0
- package/plugins/runtime-modules/core/widgets/date-input/client.d.ts +6 -0
- package/plugins/runtime-modules/core/widgets/{date-picker → date-input}/client.js +5 -10
- package/plugins/runtime-modules/core/widgets/{date-picker → date-input}/config.d.ts +6 -4
- package/plugins/runtime-modules/core/widgets/{date-picker → date-input}/config.js +11 -16
- package/plugins/runtime-modules/core/widgets/date-input/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/date-input/plugin.js +9 -0
- package/plugins/runtime-modules/core/widgets/date-input/selection.d.ts +8 -0
- package/plugins/runtime-modules/core/widgets/date-input/selection.js +13 -0
- package/plugins/runtime-modules/core/widgets/description/client.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/description/client.js +5 -21
- package/plugins/runtime-modules/core/widgets/description/config.d.ts +323 -12
- package/plugins/runtime-modules/core/widgets/description/config.js +12 -6
- package/plugins/runtime-modules/core/widgets/description/editor.js +44 -29
- package/plugins/runtime-modules/core/widgets/description/plugin.js +1 -1
- package/plugins/runtime-modules/core/widgets/description/server.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/description/server.js +14 -31
- package/plugins/runtime-modules/core/widgets/dimension/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/draft-status/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/draft-status/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/draft-status/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/entry-detail/authoring.d.ts +6 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/authoring.js +14 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/client.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/client.js +7 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/config.d.ts +62 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/config.js +35 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/plugin.js +8 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/server.d.ts +18 -0
- package/plugins/runtime-modules/core/widgets/entry-detail/server.js +42 -0
- package/plugins/runtime-modules/core/widgets/entry-header/authoring.d.ts +6 -0
- package/plugins/runtime-modules/core/widgets/entry-header/authoring.js +14 -0
- package/plugins/runtime-modules/core/widgets/entry-header/client.d.ts +12 -0
- package/plugins/runtime-modules/core/widgets/entry-header/client.js +10 -0
- package/plugins/runtime-modules/core/widgets/entry-header/config.d.ts +77 -0
- package/plugins/runtime-modules/core/widgets/entry-header/config.js +52 -0
- package/plugins/runtime-modules/core/widgets/entry-header/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/entry-header/plugin.js +8 -0
- package/plugins/runtime-modules/core/widgets/entry-header/server.d.ts +15 -0
- package/plugins/runtime-modules/core/widgets/entry-header/server.js +40 -0
- package/plugins/runtime-modules/core/widgets/entry-list/authoring.d.ts +2 -0
- package/plugins/runtime-modules/{news/widgets/news-list → core/widgets/entry-list}/authoring.js +5 -5
- package/plugins/runtime-modules/core/widgets/entry-list/client.d.ts +95 -0
- package/plugins/runtime-modules/core/widgets/entry-list/client.js +130 -0
- package/plugins/runtime-modules/core/widgets/entry-list/config.d.ts +201 -0
- package/plugins/runtime-modules/core/widgets/entry-list/config.js +153 -0
- package/plugins/runtime-modules/core/widgets/entry-list/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/entry-list/plugin.js +11 -0
- package/plugins/runtime-modules/core/widgets/entry-list/server.d.ts +27 -0
- package/plugins/runtime-modules/core/widgets/entry-list/server.js +85 -0
- package/plugins/runtime-modules/core/widgets/entry-list/view.server.d.ts +33 -0
- package/plugins/runtime-modules/core/widgets/entry-list/view.server.js +104 -0
- package/plugins/runtime-modules/core/widgets/float-button/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/float-button/authoring.js +16 -0
- package/plugins/runtime-modules/core/widgets/float-button/client.d.ts +12 -0
- package/plugins/runtime-modules/core/widgets/float-button/client.js +24 -0
- package/plugins/runtime-modules/core/widgets/float-button/config.d.ts +97 -0
- package/plugins/runtime-modules/core/widgets/float-button/config.js +129 -0
- package/plugins/runtime-modules/core/widgets/float-button/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/float-button/plugin.js +29 -0
- package/plugins/runtime-modules/core/widgets/form/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/form/config.js +18 -1
- package/plugins/runtime-modules/core/widgets/form-preview/client.js +2 -1
- package/plugins/runtime-modules/core/widgets/form-preview/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/form-preview/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/gallery/authoring.js +16 -3
- package/plugins/runtime-modules/core/widgets/gallery/client.d.ts +5 -14
- package/plugins/runtime-modules/core/widgets/gallery/client.js +77 -57
- package/plugins/runtime-modules/core/widgets/gallery/config.d.ts +89 -12
- package/plugins/runtime-modules/core/widgets/gallery/config.js +28 -20
- package/plugins/runtime-modules/core/widgets/gallery/plugin.js +2 -3
- package/plugins/runtime-modules/core/widgets/gallery/server.d.ts +17 -0
- package/plugins/runtime-modules/core/widgets/gallery/server.js +42 -0
- package/plugins/runtime-modules/core/widgets/header-navigation/client.js +3 -3
- package/plugins/runtime-modules/core/widgets/header-navigation/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/header-navigation/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/html/config.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/html/config.js +2 -1
- package/plugins/runtime-modules/core/widgets/icon/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/icon/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/image/client.js +8 -40
- package/plugins/runtime-modules/core/widgets/image/config.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/image/config.js +7 -18
- package/plugins/runtime-modules/core/widgets/image/editor.js +9 -27
- package/plugins/runtime-modules/core/widgets/input/client.js +24 -7
- package/plugins/runtime-modules/core/widgets/input/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/input/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/length/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/locale/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/locale/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/markdown/config.d.ts +13 -48
- package/plugins/runtime-modules/core/widgets/markdown/config.js +25 -12
- package/plugins/runtime-modules/core/widgets/markdown-toc/client.js +2 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/markdown-toc/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/multi-select/config.d.ts +3 -3
- package/plugins/runtime-modules/core/widgets/multi-select/config.js +1 -3
- package/plugins/runtime-modules/core/widgets/number-input/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/otp/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/otp/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/page-title/server.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/page-title/server.js +1 -1
- package/plugins/runtime-modules/core/widgets/pagination/client.js +2 -1
- package/plugins/runtime-modules/core/widgets/pagination/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/pagination/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/quick-links/client.js +9 -6
- package/plugins/runtime-modules/core/widgets/quick-links/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/quick-links/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/rate/config.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/rate/config.js +2 -1
- package/plugins/runtime-modules/core/widgets/record/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/record/authoring.js +17 -5
- package/plugins/runtime-modules/core/widgets/record/client.js +9 -8
- package/plugins/runtime-modules/core/widgets/record/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/record/config.js +3 -2
- package/plugins/runtime-modules/core/widgets/result/config.d.ts +92 -21
- package/plugins/runtime-modules/core/widgets/result/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/segmented/authoring.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/segmented/authoring.js +24 -2
- package/plugins/runtime-modules/core/widgets/segmented/client.d.ts +4 -1
- package/plugins/runtime-modules/core/widgets/segmented/client.js +5 -1
- package/plugins/runtime-modules/core/widgets/segmented/config.d.ts +3 -2
- package/plugins/runtime-modules/core/widgets/segmented/config.js +3 -3
- package/plugins/runtime-modules/core/widgets/select-box/config.d.ts +3 -2
- package/plugins/runtime-modules/core/widgets/select-box/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.js +5 -5
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/simple-text/client.js +2 -1
- package/plugins/runtime-modules/core/widgets/simple-text/config.d.ts +92 -21
- package/plugins/runtime-modules/core/widgets/simple-text/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/simple-text/editor.js +1 -2
- package/plugins/runtime-modules/core/widgets/slider/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/slider/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/slot-upload/client.js +46 -20
- package/plugins/runtime-modules/core/widgets/slot-upload/config.d.ts +2 -14
- package/plugins/runtime-modules/core/widgets/slot-upload/config.js +3 -3
- package/plugins/runtime-modules/core/widgets/steps/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/steps/authoring.js +28 -0
- package/plugins/runtime-modules/core/widgets/steps/client.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/steps/client.js +32 -0
- package/plugins/runtime-modules/core/widgets/steps/config.d.ts +156 -0
- package/plugins/runtime-modules/core/widgets/steps/config.js +69 -0
- package/plugins/runtime-modules/core/widgets/steps/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/steps/plugin.js +38 -0
- package/plugins/runtime-modules/core/widgets/switch/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/switch/config.js +1 -1
- package/plugins/runtime-modules/core/widgets/table/client.js +153 -80
- package/plugins/runtime-modules/core/widgets/table/config.d.ts +248 -22
- package/plugins/runtime-modules/core/widgets/table/config.js +54 -6
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/authoring.js +3 -2
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.d.ts +9 -5
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.js +15 -10
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.d.ts +6 -10
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.js +3 -5
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/plugin.js +3 -13
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/server.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/server.js +23 -0
- package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/client.d.ts +1 -1
- package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/client.js +104 -16
- package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/config.d.ts +13 -4
- package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/config.js +8 -2
- package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/server.js +1 -1
- package/plugins/runtime-modules/{threads → core}/widgets/thread-widget-config.d.ts +7 -0
- package/plugins/runtime-modules/{threads → core}/widgets/thread-widget-config.js +4 -4
- package/plugins/runtime-modules/core/widgets/timeline/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/timeline/authoring.js +11 -0
- package/plugins/runtime-modules/core/widgets/timeline/client.d.ts +10 -0
- package/plugins/runtime-modules/core/widgets/timeline/client.js +75 -0
- package/plugins/runtime-modules/core/widgets/timeline/config.d.ts +116 -0
- package/plugins/runtime-modules/core/widgets/timeline/config.js +102 -0
- package/plugins/runtime-modules/core/widgets/timeline/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/timeline/plugin.js +45 -0
- package/plugins/runtime-modules/core/widgets/tour-button/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/tour-button/authoring.js +10 -0
- package/plugins/runtime-modules/core/widgets/tour-button/client.d.ts +13 -0
- package/plugins/runtime-modules/core/widgets/tour-button/client.js +36 -0
- package/plugins/runtime-modules/core/widgets/tour-button/config.d.ts +39 -0
- package/plugins/runtime-modules/core/widgets/tour-button/config.js +28 -0
- package/plugins/runtime-modules/core/widgets/tour-button/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/tour-button/plugin.js +8 -0
- package/plugins/runtime-modules/core/widgets/tour-button/server.d.ts +8 -0
- package/plugins/runtime-modules/core/widgets/tour-button/server.js +14 -0
- package/plugins/runtime-modules/core/widgets/tree/client.js +41 -45
- package/plugins/runtime-modules/core/widgets/tree/config.js +1 -1
- package/plugins/runtime-modules/core/widgets.js +72 -6
- package/plugins/runtime-modules/dashboard/authoring-client.d.ts +0 -1
- package/plugins/runtime-modules/dashboard/authoring-client.js +1 -1
- package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.js +55 -17
- package/plugins/runtime-modules/dashboard/definition.d.ts +1 -4
- package/plugins/runtime-modules/dashboard/definition.js +2 -8
- package/plugins/runtime-modules/dashboard/ids.d.ts +9 -0
- package/plugins/runtime-modules/dashboard/ids.js +9 -0
- package/plugins/runtime-modules/dashboard/module.d.ts +39 -1
- package/plugins/runtime-modules/dashboard/module.js +8 -3
- package/plugins/runtime-modules/dashboard/services/collection.js +2 -2
- package/plugins/runtime-modules/dashboard/trees/admin-dashboard-label-set.js +3 -2
- package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.d.ts +2 -0
- package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.js +7 -2
- package/plugins/runtime-modules/dashboard/trees/dashboard-cards-page-tree.d.ts +37 -0
- package/plugins/runtime-modules/dashboard/trees/dashboard-cards-page-tree.js +69 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-admin-dashboard-page-tree.js +6 -52
- package/plugins/runtime-modules/dashboard/trees/phi-default-area-dashboard-page-tree.js +7 -46
- package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.js +21 -17
- package/plugins/runtime-modules/descriptor-compiler.d.ts +3 -13
- package/plugins/runtime-modules/descriptor-compiler.js +162 -71
- package/plugins/runtime-modules/editor/client-data-providers.d.ts +5 -0
- package/plugins/runtime-modules/editor/client-data-providers.js +9 -0
- package/plugins/runtime-modules/editor/data-providers.d.ts +83 -0
- package/plugins/runtime-modules/editor/data-providers.js +75 -0
- package/plugins/runtime-modules/editor/definition.d.ts +76 -5
- package/plugins/runtime-modules/editor/definition.js +4 -8
- package/plugins/runtime-modules/editor/ids.d.ts +19 -0
- package/plugins/runtime-modules/editor/ids.js +26 -0
- package/plugins/runtime-modules/editor/module.d.ts +89 -1
- package/plugins/runtime-modules/editor/module.js +8 -3
- package/plugins/runtime-modules/editor/presets.d.ts +39 -1
- package/plugins/runtime-modules/editor/presets.js +26 -3
- package/plugins/runtime-modules/editor/services/releases-table.d.ts +10 -0
- package/plugins/runtime-modules/editor/services/releases-table.js +182 -0
- package/plugins/runtime-modules/editor/tour.d.ts +29 -0
- package/plugins/runtime-modules/editor/tour.js +34 -0
- package/plugins/runtime-modules/editor/trees/editor-releases-label-set.d.ts +35 -0
- package/plugins/runtime-modules/editor/trees/editor-releases-label-set.js +54 -0
- package/plugins/runtime-modules/editor/trees/phi-default-editor-area-preset-tree.js +12 -180
- package/plugins/runtime-modules/editor/trees/phi-default-editor-releases-page-tree.d.ts +13 -0
- package/plugins/runtime-modules/editor/trees/phi-default-editor-releases-page-tree.js +134 -0
- package/plugins/runtime-modules/form-builder/client.js +1 -1
- package/{components/forms/form-builder-controller-plugin.d.ts → plugins/runtime-modules/form-builder/controller/client.d.ts} +2 -2
- package/{components/forms/form-builder-controller-plugin.js → plugins/runtime-modules/form-builder/controller/client.js} +2 -2
- package/plugins/runtime-modules/groups/addresses.d.ts +3 -0
- package/plugins/runtime-modules/groups/addresses.js +11 -0
- package/plugins/runtime-modules/groups/controller/client.d.ts +5 -0
- package/plugins/runtime-modules/groups/controller/client.js +43 -30
- package/plugins/runtime-modules/groups/controller/definition.d.ts +5 -0
- package/plugins/runtime-modules/groups/controller/definition.js +10 -0
- package/plugins/runtime-modules/groups/data-providers.d.ts +2 -2
- package/plugins/runtime-modules/groups/data-providers.js +3 -3
- package/plugins/runtime-modules/groups/definition.d.ts +3 -3
- package/plugins/runtime-modules/groups/definition.js +2 -2
- package/plugins/runtime-modules/groups/forms.d.ts +1 -6
- package/plugins/runtime-modules/groups/forms.js +65 -30
- package/plugins/runtime-modules/groups/ids.d.ts +9 -0
- package/plugins/runtime-modules/groups/ids.js +9 -0
- package/plugins/runtime-modules/groups/labels.d.ts +5 -0
- package/plugins/runtime-modules/groups/labels.js +15 -3
- package/plugins/runtime-modules/groups/presets.js +2 -2
- package/plugins/runtime-modules/groups/services/options.js +4 -3
- package/plugins/runtime-modules/groups/services/table.js +32 -36
- package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.d.ts +5 -1
- package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.js +259 -146
- package/plugins/runtime-modules/groups/trees/phi-default-app-groups-page-tree.js +3 -4
- package/plugins/runtime-modules/localization/cards.js +11 -7
- package/plugins/runtime-modules/localization/controller/client.d.ts +12 -4
- package/plugins/runtime-modules/localization/controller/client.js +31 -131
- package/plugins/runtime-modules/localization/controller/definition.d.ts +19 -4
- package/plugins/runtime-modules/localization/controller/definition.js +7 -4
- package/plugins/runtime-modules/localization/data-providers.js +1 -1
- package/plugins/runtime-modules/localization/definition.d.ts +2 -2
- package/plugins/runtime-modules/localization/definition.js +3 -3
- package/plugins/runtime-modules/localization/forms.d.ts +0 -4
- package/plugins/runtime-modules/localization/forms.js +35 -44
- package/plugins/runtime-modules/localization/ids.d.ts +9 -0
- package/plugins/runtime-modules/localization/ids.js +9 -0
- package/plugins/runtime-modules/localization/presets.d.ts +45 -1
- package/plugins/runtime-modules/localization/presets.js +16 -12
- package/plugins/runtime-modules/localization/server.js +1 -0
- package/plugins/runtime-modules/localization/services/options.js +16 -8
- package/plugins/runtime-modules/localization/services/table.js +24 -44
- package/plugins/runtime-modules/localization/tour.d.ts +35 -0
- package/plugins/runtime-modules/localization/tour.js +42 -0
- package/plugins/runtime-modules/localization/trees/admin-locales-label-set.js +3 -2
- package/plugins/runtime-modules/localization/trees/editor-translations-label-set.js +3 -2
- package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.d.ts +2 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.js +7 -2
- package/plugins/runtime-modules/localization/trees/phi-default-admin-locales-page-tree.js +3 -9
- package/plugins/runtime-modules/localization/trees/phi-default-editor-translations-page-tree.js +40 -24
- package/plugins/runtime-modules/module-labels.server.js +21 -27
- package/plugins/runtime-modules/news/authoring-widgets.js +3 -6
- package/plugins/runtime-modules/news/definition.d.ts +9 -139
- package/plugins/runtime-modules/news/definition.js +8 -18
- package/plugins/runtime-modules/news/forms.d.ts +3 -26
- package/plugins/runtime-modules/news/forms.js +10 -203
- package/plugins/runtime-modules/news/ids.d.ts +19 -36
- package/plugins/runtime-modules/news/ids.js +20 -118
- package/plugins/runtime-modules/news/labels.d.ts +4 -0
- package/plugins/runtime-modules/news/labels.js +27 -0
- package/plugins/runtime-modules/news/module.d.ts +4 -126
- package/plugins/runtime-modules/news/presets.d.ts +51 -15
- package/plugins/runtime-modules/news/presets.js +20 -62
- package/plugins/runtime-modules/news/server.js +1 -2
- package/plugins/runtime-modules/observability/definition.d.ts +1 -1
- package/plugins/runtime-modules/observability/definition.js +2 -2
- package/plugins/runtime-modules/observability/ids.d.ts +9 -0
- package/plugins/runtime-modules/observability/ids.js +9 -0
- package/plugins/runtime-modules/observability/module.d.ts +1 -1
- package/plugins/runtime-modules/observability/services/table.js +11 -24
- package/plugins/runtime-modules/observability/trees/admin-logs-label-set.js +3 -2
- package/plugins/runtime-modules/observability/trees/phi-default-admin-logs-page-tree.js +2 -7
- package/plugins/runtime-modules/phi-default-site-area-preset-tree.js +38 -37
- package/plugins/runtime-modules/pub-area-preset.js +7 -2
- package/plugins/runtime-modules/public/module.d.ts +1 -1
- package/plugins/runtime-modules/public/trees/phi-default-pub-contact-page-tree.js +25 -20
- package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.js +15 -10
- package/plugins/runtime-modules/public/trees/phi-default-pub-home-page-tree.js +11 -20
- package/plugins/runtime-modules/public/trees/phi-default-pub-terms-page-tree.js +11 -20
- package/plugins/runtime-modules/public/trees/phi-default-pub-unsubscribe-page-tree.js +11 -20
- package/plugins/runtime-modules/public/trees/phi-default-pub-welcome-page-tree.js +0 -1
- package/plugins/runtime-modules/resolver.d.ts +0 -4
- package/plugins/runtime-modules/resolver.js +17 -2
- package/plugins/runtime-modules/revisions/authoring-client.d.ts +0 -1
- package/plugins/runtime-modules/revisions/authoring-client.js +1 -1
- package/plugins/runtime-modules/revisions/controller/client.d.ts +23 -5
- package/plugins/runtime-modules/revisions/controller/client.js +33 -70
- package/plugins/runtime-modules/revisions/controller/definition.d.ts +30 -5
- package/plugins/runtime-modules/revisions/controller/definition.js +10 -3
- package/plugins/runtime-modules/revisions/data-providers.d.ts +7 -0
- package/plugins/runtime-modules/revisions/data-providers.js +2 -0
- package/plugins/runtime-modules/revisions/definition.d.ts +7 -0
- package/plugins/runtime-modules/revisions/forms.js +7 -16
- package/plugins/runtime-modules/revisions/services/table.js +63 -11
- package/plugins/runtime-modules/revisions/trees/phi-default-builder-revisions-page-tree.js +129 -22
- package/plugins/runtime-modules/revisions/types.d.ts +3 -0
- package/plugins/runtime-modules/settings.d.ts +9 -1
- package/plugins/runtime-modules/settings.js +19 -10
- package/plugins/runtime-modules/shell-tree-composition.d.ts +4 -4
- package/plugins/runtime-modules/shell-tree-composition.js +2 -0
- package/plugins/runtime-modules/sidebar-route.d.ts +2 -2
- package/plugins/runtime-modules/sidebar-route.js +2 -3
- package/plugins/runtime-modules/site-module-client-manifests.d.ts +1 -2
- package/plugins/runtime-modules/site-module-client-manifests.js +1 -1
- package/plugins/runtime-modules/theme/brand-theme-model.d.ts +170 -0
- package/plugins/runtime-modules/theme/brand-theme-model.js +164 -0
- package/plugins/runtime-modules/theme/controller/client.d.ts +4 -9
- package/plugins/runtime-modules/theme/controller/client.js +7 -5
- package/plugins/runtime-modules/theme/controller/definition.d.ts +14 -8
- package/plugins/runtime-modules/theme/controller/definition.js +8 -14
- package/plugins/runtime-modules/theme/controller/runtime.d.ts +11 -0
- package/plugins/runtime-modules/theme/controller/runtime.js +627 -0
- package/plugins/runtime-modules/theme/controller/server-definition.d.ts +4 -9
- package/plugins/runtime-modules/theme/controller/server-definition.js +8 -1
- package/plugins/runtime-modules/theme/materialize-images.js +9 -1
- package/plugins/runtime-modules/theme/presets.d.ts +44 -2
- package/plugins/runtime-modules/theme/presets.js +16 -12
- package/plugins/runtime-modules/theme/tour.d.ts +36 -0
- package/plugins/runtime-modules/theme/tour.js +43 -0
- package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.js +60 -42
- package/plugins/runtime-modules/theme/widgets/brand-controls/authoring.d.ts +10 -10
- package/plugins/runtime-modules/theme/widgets/brand-controls/client.d.ts +0 -6
- package/plugins/runtime-modules/theme/widgets/brand-controls/client.js +177 -934
- package/plugins/runtime-modules/theme/widgets/brand-controls/plugin.js +3 -2
- package/plugins/runtime-modules/theme-descriptors.d.ts +0 -58
- package/plugins/runtime-modules/theme-descriptors.js +1 -1
- package/plugins/runtime-modules/threads/addresses.d.ts +15 -8
- package/plugins/runtime-modules/threads/addresses.js +30 -23
- package/plugins/runtime-modules/threads/authoring-widgets.js +3 -5
- package/plugins/runtime-modules/threads/cards.js +4 -6
- package/plugins/runtime-modules/threads/client-data-providers.js +0 -5
- package/plugins/runtime-modules/threads/controller/client.d.ts +0 -6
- package/plugins/runtime-modules/threads/controller/client.js +20 -49
- package/plugins/runtime-modules/threads/controller/definition.d.ts +0 -6
- package/plugins/runtime-modules/threads/controller/definition.js +14 -29
- package/plugins/runtime-modules/threads/data-providers.d.ts +3 -98
- package/plugins/runtime-modules/threads/data-providers.js +1 -104
- package/plugins/runtime-modules/threads/definition.d.ts +6 -99
- package/plugins/runtime-modules/threads/definition.js +5 -3
- package/plugins/runtime-modules/threads/forms.d.ts +3 -22
- package/plugins/runtime-modules/threads/forms.js +18 -145
- package/plugins/runtime-modules/threads/ids.d.ts +9 -0
- package/plugins/runtime-modules/threads/ids.js +9 -0
- package/{components/widgets/label-sets/threads.d.ts → plugins/runtime-modules/threads/labels.d.ts} +2 -40
- package/plugins/runtime-modules/threads/labels.js +156 -0
- package/plugins/runtime-modules/threads/presets.js +33 -15
- package/plugins/runtime-modules/threads/server.js +1 -0
- package/plugins/runtime-modules/threads/services/options.js +4 -8
- package/plugins/runtime-modules/threads/trees/{phi-default-app-threads-page-tree.d.ts → phi-default-threads-page-tree.d.ts} +3 -1
- package/plugins/runtime-modules/threads/trees/{phi-default-app-threads-page-tree.js → phi-default-threads-page-tree.js} +185 -187
- package/plugins/runtime-modules/threads/widgets.js +5 -14
- package/plugins/runtime-modules/tour/authoring-widgets.d.ts +2 -0
- package/plugins/runtime-modules/tour/authoring-widgets.js +4 -0
- package/plugins/runtime-modules/tour/authoring.d.ts +1 -0
- package/plugins/runtime-modules/tour/authoring.js +8 -0
- package/plugins/runtime-modules/tour/client.d.ts +1 -0
- package/plugins/runtime-modules/{admin → tour}/client.js +1 -1
- package/plugins/runtime-modules/tour/controller/address.d.ts +1 -0
- package/plugins/runtime-modules/tour/controller/address.js +3 -0
- package/plugins/runtime-modules/tour/controller/client.d.ts +39 -0
- package/plugins/runtime-modules/tour/controller/client.js +162 -0
- package/plugins/runtime-modules/tour/controller/definition.d.ts +48 -0
- package/plugins/runtime-modules/tour/controller/definition.js +41 -0
- package/plugins/runtime-modules/tour/controller/progress.d.ts +19 -0
- package/plugins/runtime-modules/tour/controller/progress.js +24 -0
- package/plugins/runtime-modules/tour/definition.d.ts +27 -0
- package/plugins/runtime-modules/tour/definition.js +32 -0
- package/plugins/runtime-modules/tour/ids.d.ts +7 -0
- package/plugins/runtime-modules/tour/ids.js +8 -0
- package/plugins/runtime-modules/tour/module.d.ts +1 -0
- package/plugins/runtime-modules/tour/module.js +4 -0
- package/plugins/runtime-modules/tour/server.d.ts +1 -0
- package/plugins/runtime-modules/tour/server.js +14 -0
- package/plugins/runtime-modules/user-management/cards.js +3 -5
- package/plugins/runtime-modules/user-management/controller/client.d.ts +14 -8
- package/plugins/runtime-modules/user-management/controller/client.js +50 -181
- package/plugins/runtime-modules/user-management/controller/definition.d.ts +21 -8
- package/plugins/runtime-modules/user-management/controller/definition.js +54 -26
- package/plugins/runtime-modules/user-management/definition.d.ts +1 -1
- package/plugins/runtime-modules/user-management/definition.js +2 -2
- package/plugins/runtime-modules/user-management/forms.d.ts +0 -4
- package/plugins/runtime-modules/user-management/forms.js +34 -34
- package/plugins/runtime-modules/user-management/ids.d.ts +9 -0
- package/plugins/runtime-modules/user-management/ids.js +9 -0
- package/plugins/runtime-modules/user-management/server.js +1 -0
- package/plugins/runtime-modules/user-management/services/table.js +15 -48
- package/plugins/runtime-modules/user-management/trees/admin-users-label-set.js +3 -2
- package/plugins/runtime-modules/user-management/trees/phi-default-admin-users-page-tree.js +82 -19
- package/plugins/runtime-modules/video/widgets/embed/config.d.ts +2 -10
- package/plugins/runtime-modules/video/widgets/embed/config.js +5 -4
- package/runtime-data-provider-client.d.ts +2 -0
- package/runtime-data-provider-client.js +1 -0
- package/server-helpers/area-root-door-warmup.js +11 -4
- package/server-helpers/area-root-route.d.ts +5 -7
- package/server-helpers/area-root-route.js +5 -11
- package/server-helpers/cms-area.js +3 -1
- package/server-helpers/cms-bound-content.d.ts +38 -0
- package/server-helpers/cms-bound-content.js +97 -0
- package/server-helpers/cms-link-targets.d.ts +8 -1
- package/server-helpers/cms-link-targets.js +13 -1
- package/server-helpers/cms-lookup.d.ts +22 -0
- package/server-helpers/cms-lookup.js +56 -0
- package/server-helpers/cms-node-features.d.ts +17 -3
- package/server-helpers/cms-node-features.js +22 -16
- package/server-helpers/cms-request.js +50 -25
- package/server-helpers/cms-review.d.ts +14 -1
- package/server-helpers/cms-review.js +20 -6
- package/server-helpers/cms-root.d.ts +3 -1
- package/server-helpers/cms-root.js +42 -44
- package/server-helpers/cms-route.d.ts +2 -1
- package/server-helpers/cms-route.js +8 -1
- package/server-helpers/content-entry-page.d.ts +16 -0
- package/server-helpers/content-entry-page.js +24 -0
- package/server-helpers/page-tour.d.ts +11 -0
- package/server-helpers/page-tour.js +26 -0
- package/server-helpers/public-login-route.d.ts +10 -5
- package/server-helpers/public-login-route.js +49 -28
- package/server-helpers/record-source.d.ts +31 -0
- package/server-helpers/record-source.js +44 -0
- package/server-helpers/request-locale.js +23 -9
- package/server-helpers/request-memo.d.ts +14 -0
- package/server-helpers/request-memo.js +72 -0
- package/server-helpers/request-runtime.d.ts +9 -2
- package/server-helpers/request-runtime.js +2 -2
- package/server-helpers/request-search-params.d.ts +12 -0
- package/server-helpers/request-search-params.js +21 -0
- package/server-helpers/root-layout.js +2 -13
- package/server-helpers/runtime.d.ts +1 -41
- package/server-helpers/runtime.js +51 -46
- package/server-helpers/translate.d.ts +3 -1
- package/server-helpers/translate.js +13 -7
- package/styles/builder-scaffold.css +0 -112
- package/styles/control-shape.css +14 -0
- package/styles/controls.css +51 -0
- package/styles/layout-authoring-scaffold.css +0 -31
- package/styles/layout.css +233 -10
- package/styles/shell.css +54 -0
- package/theme/antd-css-var-contract.d.ts +5 -10
- package/theme/antd-css-var-contract.js +5 -10
- package/theme/phi-button-shadow.d.ts +0 -2
- package/theme/phi-button-shadow.js +1 -1
- package/theme/phi-control-shape.js +2 -1
- package/theme/phi-css-vars.d.ts +13 -3
- package/theme/phi-css-vars.js +25 -16
- package/theme/phi-font-catalogue.d.ts +0 -2
- package/theme/phi-font-catalogue.js +1 -1
- package/theme/phi-font-face.d.ts +0 -3
- package/theme/phi-font-face.js +2 -2
- package/theme/phi-published-root-style.d.ts +1 -2
- package/theme/phi-published-root-style.js +2 -4
- package/theme/phi-theme-adoption.d.ts +0 -3
- package/theme/phi-theme-adoption.js +3 -3
- package/theme/phi-theme-blocks.js +4 -4
- package/theme/phi-theme-palette.d.ts +0 -1
- package/theme/phi-theme-palette.js +0 -3
- package/theme/phi-theme-selection.d.ts +0 -9
- package/theme/phi-theme-selection.js +4 -3
- package/theme/phi-theme-tokens.d.ts +1 -16
- package/theme/phi-theme-tokens.js +5 -2
- package/theme/phi-theme.d.ts +0 -2
- package/theme/phi-theme.js +38 -15
- package/theme/phi-tokens.d.ts +36 -10
- package/theme/phi-tokens.js +44 -2
- package/types/builder.d.ts +8 -0
- package/types/calendar.d.ts +5 -0
- package/types/calendar.js +7 -6
- package/types/cms-border-config.js +2 -1
- package/types/cms-config.d.ts +20 -47
- package/types/cms-config.js +36 -117
- package/types/cms-container.d.ts +8 -8
- package/types/cms-module-descriptors.d.ts +17 -25
- package/types/cms-mount-policy.d.ts +0 -1
- package/types/cms-mount-policy.js +1 -1
- package/types/cms-overlay.d.ts +34 -7
- package/types/cms-overlay.js +33 -43
- package/types/cms-plugins.d.ts +205 -9
- package/types/cms-presets.d.ts +62 -15
- package/types/cms-presets.js +23 -1
- package/types/cms.d.ts +41 -21
- package/types/content-entries.d.ts +76 -0
- package/types/content-entries.js +16 -0
- package/types/core-runtime-controller.js +4 -3
- package/types/core-widget-placements.d.ts +59 -21
- package/types/dashboard-cards.d.ts +28 -7
- package/types/dashboard-cards.js +5 -0
- package/types/dimension.js +2 -1
- package/types/draft-status.js +2 -1
- package/types/form-descriptor.d.ts +1 -1
- package/types/form-submit-route.d.ts +26 -0
- package/types/form-submit-route.js +1 -0
- package/types/layout-style.d.ts +12 -4
- package/types/layout-style.js +15 -6
- package/types/media.d.ts +0 -1
- package/types/record-provider.d.ts +23 -0
- package/types/record-provider.js +1 -0
- package/types/references.d.ts +1 -1
- package/types/references.js +1 -1
- package/types/renderable-block-geometry.d.ts +0 -4
- package/types/renderable-block-geometry.js +2 -2
- package/types/renderable-block.d.ts +9 -6
- package/types/runtime-data-provider.d.ts +11 -1
- package/types/runtime-data-provider.js +25 -2
- package/types/signals.d.ts +3 -1
- package/types/signals.js +3 -1
- package/types/site-config.d.ts +15 -3
- package/types/site-request-context.d.ts +2 -159
- package/types/site-theme.d.ts +1 -4
- package/types/surface.d.ts +59 -0
- package/types/surface.js +62 -0
- package/types/table-signal-values.js +25 -4
- package/types/table-widget.d.ts +50 -0
- package/types/table-widget.js +3 -4
- package/types/thread-widget.js +2 -1
- package/types/tours.d.ts +84 -0
- package/types/tours.js +75 -0
- package/types/widget-runtime.d.ts +35 -41
- package/types.d.ts +2 -1
- package/types.js +2 -0
- package/widget-config.d.ts +2 -1
- package/widget-config.js +3 -1
- package/components/layouts/clients/phi-flex-vertical-layout-client.d.ts +0 -10
- package/components/layouts/clients/phi-flex-vertical-layout-client.js +0 -133
- package/components/root/phi-root-rem-provider.d.ts +0 -7
- package/components/root/phi-root-rem-provider.js +0 -14
- package/components/widgets/label-sets/news.d.ts +0 -9
- package/components/widgets/label-sets/news.js +0 -29
- package/components/widgets/label-sets/threads.js +0 -269
- package/gateway/news.d.ts +0 -22
- package/gateway/news.js +0 -76
- package/helpers/visibility.d.ts +0 -1
- package/helpers/visibility.js +0 -4
- package/plugins/runtime-modules/admin/client.d.ts +0 -1
- package/plugins/runtime-modules/admin/controller/address.d.ts +0 -3
- package/plugins/runtime-modules/admin/controller/address.js +0 -4
- package/plugins/runtime-modules/admin/controller/client.d.ts +0 -18
- package/plugins/runtime-modules/admin/controller/client.js +0 -8
- package/plugins/runtime-modules/admin/controller/definition.d.ts +0 -16
- package/plugins/runtime-modules/admin/controller/definition.js +0 -13
- package/plugins/runtime-modules/avatar/client.d.ts +0 -0
- package/plugins/runtime-modules/avatar/client.js +0 -2
- package/plugins/runtime-modules/builder/inspector-controller.d.ts +0 -3
- package/plugins/runtime-modules/builder/inspector-controller.js +0 -290
- package/plugins/runtime-modules/builder/page-reference-tree.d.ts +0 -18
- package/plugins/runtime-modules/builder/page-reference-tree.js +0 -31
- package/plugins/runtime-modules/builder/preview-controller.d.ts +0 -7
- package/plugins/runtime-modules/builder/preview-controller.js +0 -82
- package/plugins/runtime-modules/builder/tree-options.d.ts +0 -7
- package/plugins/runtime-modules/builder/tree-options.js +0 -14
- package/plugins/runtime-modules/builder/widgets/chrome-controls/authoring.d.ts +0 -3
- package/plugins/runtime-modules/builder/widgets/chrome-controls/authoring.js +0 -7
- package/plugins/runtime-modules/builder/widgets/chrome-controls/client.d.ts +0 -9
- package/plugins/runtime-modules/builder/widgets/chrome-controls/client.js +0 -34
- package/plugins/runtime-modules/builder/widgets/chrome-controls/config.d.ts +0 -19
- package/plugins/runtime-modules/builder/widgets/chrome-controls/config.js +0 -30
- package/plugins/runtime-modules/builder/widgets/chrome-controls/plugin.d.ts +0 -3
- package/plugins/runtime-modules/builder/widgets/chrome-controls/plugin.js +0 -9
- package/plugins/runtime-modules/builder/widgets/chrome-controls/server.d.ts +0 -8
- package/plugins/runtime-modules/builder/widgets/chrome-controls/server.js +0 -6
- package/plugins/runtime-modules/client-manifests/news-render-clients.d.ts +0 -2
- package/plugins/runtime-modules/client-manifests/news-render-clients.js +0 -10
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.js +0 -45
- package/plugins/runtime-modules/core/widgets/date-picker/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/date-picker/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/date-picker/client.d.ts +0 -6
- package/plugins/runtime-modules/core/widgets/date-picker/plugin.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/date-picker/plugin.js +0 -9
- package/plugins/runtime-modules/dashboard/client.d.ts +0 -2
- package/plugins/runtime-modules/dashboard/client.js +0 -13
- package/plugins/runtime-modules/dashboard/controller/address.d.ts +0 -3
- package/plugins/runtime-modules/dashboard/controller/address.js +0 -4
- package/plugins/runtime-modules/dashboard/controller/client.d.ts +0 -18
- package/plugins/runtime-modules/dashboard/controller/client.js +0 -8
- package/plugins/runtime-modules/dashboard/controller/definition.d.ts +0 -16
- package/plugins/runtime-modules/dashboard/controller/definition.js +0 -13
- package/plugins/runtime-modules/editor/client.d.ts +0 -1
- package/plugins/runtime-modules/editor/client.js +0 -7
- package/plugins/runtime-modules/editor/controller/address.d.ts +0 -3
- package/plugins/runtime-modules/editor/controller/address.js +0 -4
- package/plugins/runtime-modules/editor/controller/client.d.ts +0 -18
- package/plugins/runtime-modules/editor/controller/client.js +0 -8
- package/plugins/runtime-modules/editor/controller/definition.d.ts +0 -16
- package/plugins/runtime-modules/editor/controller/definition.js +0 -13
- package/plugins/runtime-modules/editor/trees/editor-label-set.d.ts +0 -8
- package/plugins/runtime-modules/editor/trees/editor-label-set.js +0 -22
- package/plugins/runtime-modules/news/client-data-providers.d.ts +0 -11
- package/plugins/runtime-modules/news/client-data-providers.js +0 -14
- package/plugins/runtime-modules/news/data-providers.d.ts +0 -133
- package/plugins/runtime-modules/news/data-providers.js +0 -112
- package/plugins/runtime-modules/news/services/options.d.ts +0 -3
- package/plugins/runtime-modules/news/services/options.js +0 -35
- package/plugins/runtime-modules/news/services/table.js +0 -144
- package/plugins/runtime-modules/news/trees/editor-news-label-set.d.ts +0 -8
- package/plugins/runtime-modules/news/trees/editor-news-label-set.js +0 -29
- package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.d.ts +0 -65
- package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.js +0 -106
- package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.d.ts +0 -17
- package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.js +0 -462
- package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.d.ts +0 -11
- package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.js +0 -86
- package/plugins/runtime-modules/news/widgets/news-list/authoring.d.ts +0 -2
- package/plugins/runtime-modules/news/widgets/news-list/client.d.ts +0 -34
- package/plugins/runtime-modules/news/widgets/news-list/client.js +0 -26
- package/plugins/runtime-modules/news/widgets/news-list/config.d.ts +0 -43
- package/plugins/runtime-modules/news/widgets/news-list/config.js +0 -52
- package/plugins/runtime-modules/news/widgets/news-list/plugin.d.ts +0 -3
- package/plugins/runtime-modules/news/widgets/news-list/plugin.js +0 -8
- package/plugins/runtime-modules/news/widgets/news-list/server.d.ts +0 -14
- package/plugins/runtime-modules/news/widgets/news-list/server.js +0 -82
- package/plugins/runtime-modules/news/widgets.d.ts +0 -2
- package/plugins/runtime-modules/news/widgets.js +0 -16
- package/types/news.d.ts +0 -33
- /package/{types/news.js → components/controls/phi-form-control-contract.js} +0 -0
- /package/plugins/runtime-modules/{threads/services/table.d.ts → core/messaging/thread-inbox-table.d.ts} +0 -0
- /package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/authoring.d.ts +0 -0
- /package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/authoring.js +0 -0
- /package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/plugin.d.ts +0 -0
- /package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/plugin.js +0 -0
- /package/plugins/runtime-modules/{threads → core}/widgets/thread-conversation/server.d.ts +0 -0
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
-
import { ConfigProvider, theme as antdTheme } from "antd";
|
|
5
|
-
import { DeleteOutlined } from "@ant-design/icons";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore, } from "react";
|
|
6
4
|
import { usePhiSignalDispatcher, usePhiSignalListener } from "../../../../../components/runtime/runtime-signal-bus";
|
|
7
5
|
import { usePhiSignalIdentity } from "../../../../../components/runtime/runtime-signal-identity";
|
|
8
|
-
import { usePhiApplicationFeedback } from "../../../../../components/runtime/use-phi-application-feedback";
|
|
9
6
|
import { PHI_SIGNAL_VALUE_SCHEMAS } from "../../../../../types/signals";
|
|
10
7
|
import { createPhiThemeControllerAddress } from "../../../../../plugins/runtime-modules/theme/controller/address";
|
|
11
8
|
import { PHI_THEME_SIGNAL_CHANNELS } from "../../../../../plugins/runtime-modules/theme/controller/signals";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { buildPhiThemeCustomColorPalette, resolvePhiThemePaletteCustomColors, resolvePhiThemePresetCustomColors, } from "../../../../../theme/phi-theme-palette";
|
|
9
|
+
import { PHI_THEME_CUSTOM_COLOR_KEYS, isPhiThemePaletteModeSeedKey, mergePhiThemePalettes, resolvePhiThemeColorTokens, } from "../../../../../theme/phi-theme-presets";
|
|
10
|
+
import { buildPhiThemeCustomColorPalette, resolvePhiThemePaletteCustomColors } from "../../../../../theme/phi-theme-palette";
|
|
15
11
|
import { usePhiConfig } from "../../../../../components/root/phi-config-provider";
|
|
16
12
|
import { usePhiThemeBlockCatalog } from "../../../../../components/root/phi-theme-block-catalog-provider";
|
|
17
13
|
import { resolvePhiThemeComposition, resolvePhiThemeEffectiveLogo, resolvePhiThemeEffectiveFonts, resolvePhiThemeEffectiveRoot, } from "../../../../../theme/phi-theme-composition";
|
|
@@ -19,23 +15,21 @@ import { usePhiSiteFontAssets } from "../../../../../components/media/phi-site-f
|
|
|
19
15
|
import { buildPhiFontFaceCss, buildPhiFontFamilyStack } from "../../../../../theme/phi-font-face";
|
|
20
16
|
import { PHI_THEME_HEADING_FONT_VARIABLE, readPhiThemeHeadingFont, resolvePhiThemeHeadingFontFamily, } from "../../../../../theme/phi-theme-typography";
|
|
21
17
|
import { resolvePhiThemeRuntimePayload } from "../../../../../theme/phi-theme-runtime";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import { PHI_CONTROL_HEIGHTS, PHI_PADDING, PHI_RADII } from "../../../../../theme/phi-tokens";
|
|
27
|
-
import { PHI_COLOR_PICKER_NEUTRAL_PRESETS, PHI_COLOR_PICKER_PRESETS, } from "../../../../../components/widgets/config/color-picker-presets";
|
|
18
|
+
import { resolvePhiAntdAliasTokens } from "../../../../../theme/phi-antd-token-resolver";
|
|
19
|
+
import { buildPhiThemeStructuralTokens } from "../../../../../theme/phi-theme";
|
|
20
|
+
import { PHI_CONTROL_HEIGHTS, PHI_PADDING, PHI_RADII, } from "../../../../../theme/phi-tokens";
|
|
21
|
+
import { PHI_COLOR_PICKER_NEUTRAL_PRESETS, PHI_COLOR_PICKER_PRESETS } from "../../../../../components/widgets/config/color-picker-presets";
|
|
28
22
|
import { PHI_SPACING_TOKEN_KEYS } from "../../../../../components/widgets/config/spacing-options";
|
|
29
23
|
import { PhiColorFieldControl } from "../../../../../components/controls/phi-color-field-control";
|
|
30
24
|
import { PhiBrandControl, resolvePhiBrandLogoUrl } from "../../../../../components/controls/phi-brand-control";
|
|
31
25
|
import { PhiBackgroundControl } from "../../../../../components/controls/phi-background-control";
|
|
32
|
-
import { PHI_ROOT_BACKGROUND_IMAGE_SOURCE_KINDS, PHI_ROOT_BACKGROUND_MOTION_MODES, resolvePhiRootBackgroundPaintStyle, } from "../../../../../components/root/phi-root-background";
|
|
33
|
-
import { PHI_SHELL_CHROME_OVERLAY_BASE_KINDS,
|
|
26
|
+
import { PHI_ROOT_BACKGROUND_IMAGE_SOURCE_KINDS, PHI_ROOT_BACKGROUND_FILTERS, PHI_ROOT_BACKGROUND_MOTION_MODES, resolvePhiRootBackgroundPaintStyle, } from "../../../../../components/root/phi-root-background";
|
|
27
|
+
import { PHI_SHELL_CHROME_OVERLAY_BASE_KINDS, PHI_SHELL_CHROME_OVERLAY_FILTERS, PHI_SHELL_CHROME_OVERLAY_IMAGE_SOURCE_KINDS, PHI_SHELL_CHROME_OVERLAY_MOTION_MODES, resolvePhiShellChromeOverlayConfig, resolvePhiShellChromePaneShadow, resolvePhiShellChromePaneShadows, resolvePhiShellChromeOverlayStyle, } from "../../../../../components/root/phi-shell-chrome-overlay";
|
|
34
28
|
import { normalizePhiBackgroundWidgetConfig } from "../../../../../components/widgets/config/background";
|
|
35
29
|
import { PhiMediaPickerBinding } from "../../../../../components/media/phi-media-picker-binding";
|
|
36
30
|
import { PHI_MEDIA_WIDGET_DEFAULT_LABELS } from "../../../../../components/media/media-widget-labels";
|
|
37
31
|
import { PHI_SEARCH_WIDGET_DEFAULT_LABELS } from "../../../../../components/widgets/label-types/search";
|
|
38
|
-
import { buildPhiMediaAssetContentDeliveryUrl, PhiMediaAssetFlags, PhiMediaKind } from "../../../../../constants/media";
|
|
32
|
+
import { buildPhiMediaAssetContentDeliveryUrl, PhiMediaAssetFlags, PhiMediaKind, } from "../../../../../constants/media";
|
|
39
33
|
import { createPhiMediaPickerAssetControllerRoutes } from "../../../../../components/media/asset-controller-routes";
|
|
40
34
|
import { PhiPresetSizeControl } from "../../../../../components/controls/phi-preset-size-control";
|
|
41
35
|
import { PhiButtonControl } from "../../../../../components/controls/phi-button-control";
|
|
@@ -49,9 +43,6 @@ import { PHI_AUTHORING_OPTION_PROVIDER_KEYS } from "../../../../../constants/aut
|
|
|
49
43
|
import { PhiShadowControl } from "../../../../../components/controls/phi-shadow-control";
|
|
50
44
|
import { PhiIcon } from "../../../../../components/shell/phi-icon";
|
|
51
45
|
import { PhiIconPickerControl } from "../../../../../components/controls/phi-icon-picker-control";
|
|
52
|
-
import { createPhiHistoryStore } from "../../../../../components/state/history-store";
|
|
53
|
-
import { createPhiCommandToolbarControlAddress } from "../../../../../components/widgets/signals/command-toolbar-address";
|
|
54
|
-
import { PHI_THEME_RUNTIME_MODULE_ID } from "../../../../../plugins/runtime-modules/theme/ids";
|
|
55
46
|
import { PhiTableControl } from "../../../../../components/controls/phi-table-control";
|
|
56
47
|
import { PhiSegmentedControl } from "../../../../../components/controls/phi-segmented-control";
|
|
57
48
|
import { applyPhiButtonShadowComponentTokens, isPhiButtonShadowStep, } from "../../../../../theme/phi-button-shadow";
|
|
@@ -61,13 +52,14 @@ import { PhiSwitchControl } from "../../../../../components/controls/phi-switch-
|
|
|
61
52
|
import { PhiTagControl } from "../../../../../components/controls/phi-tag-control";
|
|
62
53
|
import { PHI_CONTROL_SHAPES, applyPhiControlShapeComponentTokens, applyPhiSurfaceShapeComponentTokens, buildPhiControlShapeCssVars, PHI_SURFACE_SHAPE_CSS_VAR, resolvePhiSurfaceShapeRadius, createPhiControlShapeCorners, readPhiControlShapeCorners, resolvePhiControlShape, resolvePhiUniformControlShape, } from "../../../../../theme/phi-control-shape";
|
|
63
54
|
import { PhiAccordionControl } from "../../../../../components/controls/phi-accordion-control";
|
|
55
|
+
import { PhiAlertControl } from "../../../../../components/controls/phi-alert-control";
|
|
64
56
|
import { PhiCardControl } from "../../../../../components/controls/phi-card-control";
|
|
57
|
+
import { PhiThemeScopeControl } from "../../../../../components/controls/phi-theme-scope-control";
|
|
65
58
|
import { PhiFlexControl } from "../../../../../components/controls/phi-flex-control";
|
|
66
59
|
import { PhiTypographyControl } from "../../../../../components/controls/phi-typography-control";
|
|
67
60
|
import { PhiDividerControl } from "../../../../../components/controls/phi-divider-control";
|
|
68
61
|
import { PhiStatisticControl } from "../../../../../components/controls/phi-statistic-control";
|
|
69
|
-
|
|
70
|
-
const DEFAULT_THEME_KEY = "default";
|
|
62
|
+
import { DEFAULT_THEME_KEY, omitThemeFields, resolveThemeKey, normalizeTheme, resolveInitialTheme, clearThemeControlShape, resolveThemePayloadPreset, applyThemePreset, createInitialBrandThemeState, clearThemeAuthoredGround, } from "../../brand-theme-model";
|
|
71
63
|
const PHI_THEME_CHROME_SHADOW_EDGES = [
|
|
72
64
|
{ family: "header", label: "Header, downwards onto the Page" },
|
|
73
65
|
{ family: "sider", label: "Sider, outwards at its outer edge" },
|
|
@@ -277,10 +269,6 @@ const BRAND_THEME_COLOR_SECTION_KEYS = [
|
|
|
277
269
|
"custom",
|
|
278
270
|
...THEME_COLOR_SEED_SECTIONS.map((section) => section.key),
|
|
279
271
|
];
|
|
280
|
-
/** The record without the named fields, for the places where a part of the Theme is handed back to its block. */
|
|
281
|
-
function omitThemeFields(theme, ...fields) {
|
|
282
|
-
return Object.fromEntries(Object.entries(theme).filter(([key]) => !fields.includes(key)));
|
|
283
|
-
}
|
|
284
272
|
/**
|
|
285
273
|
* The Site's palette written back with empty containers dropped, so a Theme whose author cleared their
|
|
286
274
|
* last colour owns nothing again and follows its palette block outright. An absent `palette` and an
|
|
@@ -346,27 +334,6 @@ function omitThemeColorOverride(theme, tokenKey, mode) {
|
|
|
346
334
|
overrides: Object.fromEntries(Object.entries(current.overrides ?? {}).filter(([key]) => key !== tokenKey)),
|
|
347
335
|
}));
|
|
348
336
|
}
|
|
349
|
-
function resolveThemeKey(config) {
|
|
350
|
-
return config?.themeKey?.trim() || DEFAULT_THEME_KEY;
|
|
351
|
-
}
|
|
352
|
-
function normalizeTheme(input, fallback) {
|
|
353
|
-
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
354
|
-
return fallback;
|
|
355
|
-
}
|
|
356
|
-
return input;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* A fresh draft names its blocks and owns nothing: the proportions come from the style block at
|
|
360
|
-
* resolve time, the colour from the palette block, and nothing is copied in that a reset would later
|
|
361
|
-
* have to know how to take away.
|
|
362
|
-
*/
|
|
363
|
-
function resolveInitialTheme(runtime) {
|
|
364
|
-
return normalizeTheme(runtime.site.theme, {
|
|
365
|
-
mode: "light",
|
|
366
|
-
preset: PHI_DEFAULT_THEME_PRESET_KEY,
|
|
367
|
-
presetVersion: PHI_DEFAULT_THEME_PRESET_VERSION,
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
337
|
function readThemeButtonShadowChoice(theme, kind) {
|
|
371
338
|
const step = theme.buttons?.shadow?.[kind];
|
|
372
339
|
return isPhiButtonShadowStep(step) ? step : "theme";
|
|
@@ -410,9 +377,7 @@ function mergeThemeFontSlot(theme, slot, family) {
|
|
|
410
377
|
fonts[slot] = family;
|
|
411
378
|
else
|
|
412
379
|
delete fonts[slot];
|
|
413
|
-
return Object.keys(fonts).length > 0
|
|
414
|
-
? { ...theme, fonts }
|
|
415
|
-
: Object.fromEntries(Object.entries(theme).filter(([key]) => key !== "fonts"));
|
|
380
|
+
return Object.keys(fonts).length > 0 ? { ...theme, fonts } : omitThemeFields(theme, "fonts");
|
|
416
381
|
}
|
|
417
382
|
/**
|
|
418
383
|
* The heading font chosen, or handed back to the body font by removing it.
|
|
@@ -426,9 +391,7 @@ function mergeThemeHeadingFont(theme, heading) {
|
|
|
426
391
|
delete typography.headings;
|
|
427
392
|
else
|
|
428
393
|
typography.headings = heading;
|
|
429
|
-
return Object.keys(typography).length > 0
|
|
430
|
-
? { ...theme, typography }
|
|
431
|
-
: Object.fromEntries(Object.entries(theme).filter(([key]) => key !== "typography"));
|
|
394
|
+
return Object.keys(typography).length > 0 ? { ...theme, typography } : omitThemeFields(theme, "typography");
|
|
432
395
|
}
|
|
433
396
|
function mergeThemeControlShape(theme, controls) {
|
|
434
397
|
return {
|
|
@@ -480,13 +443,6 @@ function clearThemeShapeScale(theme) {
|
|
|
480
443
|
style: { ...(theme.style ?? {}), token },
|
|
481
444
|
};
|
|
482
445
|
}
|
|
483
|
-
function clearThemeControlShape(theme) {
|
|
484
|
-
const shape = Object.fromEntries(Object.entries(theme.shape ?? {}).filter(([key]) => key !== "controls"));
|
|
485
|
-
return Object.keys(shape).length > 0 ? { ...theme, shape } : omitThemeFields(theme, "shape");
|
|
486
|
-
}
|
|
487
|
-
function resolveThemePayloadPreset(theme, presets) {
|
|
488
|
-
return resolvePhiThemePresetPlugin(presets, theme.preset);
|
|
489
|
-
}
|
|
490
446
|
function resolveThemePayloadMode(theme) {
|
|
491
447
|
return theme.mode === "dark" ? "dark" : "light";
|
|
492
448
|
}
|
|
@@ -503,26 +459,6 @@ function mergeThemeCustomColors(theme, colorPatch, mode) {
|
|
|
503
459
|
customColors: { ...(current.customColors ?? {}), ...colorPatch },
|
|
504
460
|
}));
|
|
505
461
|
}
|
|
506
|
-
/**
|
|
507
|
-
* Picking a palette block drops the author's own palette, exactly as picking a ground or a style drops
|
|
508
|
-
* theirs: somebody choosing another palette means to see it, and their seeds laid over it would hide
|
|
509
|
-
* the very thing they asked for.
|
|
510
|
-
*/
|
|
511
|
-
function applyThemePreset(theme, preset) {
|
|
512
|
-
return {
|
|
513
|
-
...omitThemeFields(theme, "palette"),
|
|
514
|
-
preset: preset.key,
|
|
515
|
-
presetVersion: preset.version,
|
|
516
|
-
};
|
|
517
|
-
}
|
|
518
|
-
/** Back to the blocks alone: the palette, the proportions, the Button shadows and the component overrides all go. */
|
|
519
|
-
function resetThemeToPreset(theme, presets, preset = resolveThemePayloadPreset(theme, presets)) {
|
|
520
|
-
return {
|
|
521
|
-
...omitThemeFields(theme, "palette", "style", "buttons", "components"),
|
|
522
|
-
preset: preset.key,
|
|
523
|
-
presetVersion: preset.version,
|
|
524
|
-
};
|
|
525
|
-
}
|
|
526
462
|
function stripEmptyTokenValues(token) {
|
|
527
463
|
return Object.fromEntries(Object.entries(token).filter(([, value]) => value !== undefined && value !== null && value !== ""));
|
|
528
464
|
}
|
|
@@ -544,14 +480,6 @@ function countThemePaletteLeaves(palette) {
|
|
|
544
480
|
Object.keys(mode?.overrides ?? {}).length +
|
|
545
481
|
Object.keys(mode?.customColors ?? {}).length, Object.keys(palette?.seed ?? {}).length);
|
|
546
482
|
}
|
|
547
|
-
function readTokenColor(token, key, fallback) {
|
|
548
|
-
const value = token[key];
|
|
549
|
-
return typeof value === "string" && value.trim() ? value : fallback;
|
|
550
|
-
}
|
|
551
|
-
function readComputedTokenColor(token, key, fallback) {
|
|
552
|
-
const value = token[key];
|
|
553
|
-
return typeof value === "string" && value.trim() ? value : fallback;
|
|
554
|
-
}
|
|
555
483
|
function readEffectiveTokenString(token, key, fallback) {
|
|
556
484
|
const value = token[key];
|
|
557
485
|
return typeof value === "string" && value.trim() ? value : fallback;
|
|
@@ -571,18 +499,6 @@ function readEffectiveTokenBoolean(token, key, fallback) {
|
|
|
571
499
|
const value = token[key];
|
|
572
500
|
return typeof value === "boolean" ? value : fallback;
|
|
573
501
|
}
|
|
574
|
-
function buildThemeReviewRoutePath(area) {
|
|
575
|
-
return area === "public" ? "/public" : `/${area}`;
|
|
576
|
-
}
|
|
577
|
-
function buildThemeReviewHref({ area, revisionId, themeKey, }) {
|
|
578
|
-
const url = new URL(buildThemeReviewRoutePath(area), window.location.origin);
|
|
579
|
-
url.searchParams.set("reviewKind", "theme");
|
|
580
|
-
url.searchParams.set("reviewRevision", String(revisionId));
|
|
581
|
-
url.searchParams.set("reviewArea", area);
|
|
582
|
-
url.searchParams.set("reviewPage", "/");
|
|
583
|
-
url.searchParams.set("reviewThemeKey", themeKey);
|
|
584
|
-
return `${url.pathname}${url.search}`;
|
|
585
|
-
}
|
|
586
502
|
/*
|
|
587
503
|
* One route set per purpose: the preview swatch and the image field each open their own picker.
|
|
588
504
|
*
|
|
@@ -614,13 +530,14 @@ const renderPhiThemeRootBackgroundMediaPicker = function renderPhiThemeRootBackg
|
|
|
614
530
|
signalRoutes: PHI_THEME_ROOT_BACKGROUND_MEDIA_ROUTES[props.purpose],
|
|
615
531
|
}, labels: PHI_MEDIA_WIDGET_DEFAULT_LABELS, searchLabels: PHI_SEARCH_WIDGET_DEFAULT_LABELS, value: props.value, open: props.open, trigger: props.trigger, onOpenChange: props.onOpenChange, onCommit: props.onCommit, onDiscard: props.onDiscard, onAssetSelect: props.onAssetSelect, onAssetClear: props.onAssetClear }));
|
|
616
532
|
};
|
|
617
|
-
|
|
533
|
+
/** The Theme root's ground (`background`) or its chrome overlay (`chrome`) for one colour mode. */
|
|
534
|
+
function mergeThemeRootSurface(theme, surface, mode, value) {
|
|
618
535
|
return {
|
|
619
536
|
...theme,
|
|
620
537
|
root: {
|
|
621
538
|
...(theme.root ?? {}),
|
|
622
|
-
|
|
623
|
-
...(theme.root?.
|
|
539
|
+
[surface]: {
|
|
540
|
+
...(theme.root?.[surface] ?? {}),
|
|
624
541
|
[mode]: value,
|
|
625
542
|
},
|
|
626
543
|
},
|
|
@@ -641,18 +558,6 @@ function mergeThemeChromeShadow(theme, family, value) {
|
|
|
641
558
|
},
|
|
642
559
|
};
|
|
643
560
|
}
|
|
644
|
-
function mergeThemeChromeOverlay(theme, mode, value) {
|
|
645
|
-
return {
|
|
646
|
-
...theme,
|
|
647
|
-
root: {
|
|
648
|
-
...(theme.root ?? {}),
|
|
649
|
-
chrome: {
|
|
650
|
-
...(theme.root?.chrome ?? {}),
|
|
651
|
-
[mode]: value,
|
|
652
|
-
},
|
|
653
|
-
},
|
|
654
|
-
};
|
|
655
|
-
}
|
|
656
561
|
/**
|
|
657
562
|
* A patch on the Brand block, with the empties taken back out.
|
|
658
563
|
*
|
|
@@ -722,22 +627,29 @@ function mergeThemeBrandLogo(theme, mode, logo) {
|
|
|
722
627
|
* like it did nothing but reopen the first part. Only a list that is blank all through clears the
|
|
723
628
|
* Wordmark, which is what hands the Site's own name back to the fallback.
|
|
724
629
|
*/
|
|
630
|
+
/**
|
|
631
|
+
* One change to the Wordmark, and the record kept clean: a field set to nothing leaves it, and a
|
|
632
|
+
* Wordmark with nothing left in it goes. Weight, slant and tracking used to stay behind as `null`
|
|
633
|
+
* inside the record, which `mergeThemeBrand` only cleans one level up.
|
|
634
|
+
*/
|
|
635
|
+
function mergeThemeWordmark(theme, patch) {
|
|
636
|
+
const wordmark = { ...(theme.brand?.wordmark ?? {}), ...patch };
|
|
637
|
+
for (const [key, value] of Object.entries(wordmark)) {
|
|
638
|
+
if (value == null || value === "")
|
|
639
|
+
delete wordmark[key];
|
|
640
|
+
}
|
|
641
|
+
return mergeThemeBrand(theme, {
|
|
642
|
+
wordmark: Object.keys(wordmark).length > 0 ? wordmark : null,
|
|
643
|
+
});
|
|
644
|
+
}
|
|
725
645
|
function mergeThemeWordmarkParts(theme, parts) {
|
|
726
646
|
const hasText = parts.some((part) => part.text.trim());
|
|
727
|
-
const wordmark = theme.brand?.wordmark ?? {};
|
|
728
|
-
if (hasText) {
|
|
729
|
-
return mergeThemeBrand(theme, {
|
|
730
|
-
wordmark: { ...wordmark, parts: parts.map((part) => ({ ...part })) },
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
647
|
/*
|
|
734
|
-
* Clearing the text hands the Site's name back to the fallback
|
|
735
|
-
*
|
|
736
|
-
*
|
|
648
|
+
* Clearing the text hands the Site's name back to the fallback, and takes only the text: the weight,
|
|
649
|
+
* slant, tracking and font somebody chose -- and a decision to draw no name at all -- are about the
|
|
650
|
+
* Wordmark, not about its parts, and used to go with the last character.
|
|
737
651
|
*/
|
|
738
|
-
return
|
|
739
|
-
wordmark: wordmark.shows === "none" ? { shows: "none" } : null,
|
|
740
|
-
});
|
|
652
|
+
return mergeThemeWordmark(theme, { parts: hasText ? parts.map((part) => ({ ...part })) : null });
|
|
741
653
|
}
|
|
742
654
|
/** Whether the Brand draws a name at all. Off is stated; on is simply the Wordmark without the word. */
|
|
743
655
|
function mergeThemeWordmarkShows(theme, shows) {
|
|
@@ -756,103 +668,6 @@ function mergeThemeWordmarkShows(theme, shows) {
|
|
|
756
668
|
wordmark: Object.keys(rest).length > 0 ? rest : null,
|
|
757
669
|
});
|
|
758
670
|
}
|
|
759
|
-
/**
|
|
760
|
-
* What a Widget knows before the Controller has told it anything: the theme the Site was rendered with.
|
|
761
|
-
*
|
|
762
|
-
* It used to consult a module variable the Widgets kept between them, because a Widget mounting late
|
|
763
|
-
* had no other way to learn about an unsaved draft. That variable answered for the browser tab, while
|
|
764
|
-
* the draft belongs to the Area the Controller is mounted in -- so it was right by coincidence and
|
|
765
|
-
* silently wrong wherever the two differed. A Widget asks now, and this is only the starting point.
|
|
766
|
-
*/
|
|
767
|
-
function createInitialBrandThemeState(themeKey, fallbackTheme) {
|
|
768
|
-
return {
|
|
769
|
-
key: themeKey,
|
|
770
|
-
published: fallbackTheme,
|
|
771
|
-
draft: fallbackTheme,
|
|
772
|
-
revisionId: null,
|
|
773
|
-
hasPublishedThemeRevision: false,
|
|
774
|
-
publishedRevisionId: null,
|
|
775
|
-
};
|
|
776
|
-
}
|
|
777
|
-
function isSameThemePayload(left, right) {
|
|
778
|
-
return JSON.stringify(left) === JSON.stringify(right);
|
|
779
|
-
}
|
|
780
|
-
/*
|
|
781
|
-
* `correlationId` is the exchange this state belongs to: the command that saved, published or reset,
|
|
782
|
-
* or the draft another Widget asked the Controller to take. It is absent only where the Controller
|
|
783
|
-
* announces the state it loaded on arrival, which begins one.
|
|
784
|
-
*/
|
|
785
|
-
function emitThemeState(dispatchSignal, theme, revisionId, selectionValue, draftStatus = "draft", correlationId) {
|
|
786
|
-
const sender = createPhiThemeControllerAddress();
|
|
787
|
-
const receiver = "broadcast";
|
|
788
|
-
dispatchSignal({
|
|
789
|
-
scope: "area",
|
|
790
|
-
channel: PHI_THEME_SIGNAL_CHANNELS.brandTheme,
|
|
791
|
-
action: "change",
|
|
792
|
-
value: {
|
|
793
|
-
theme,
|
|
794
|
-
revisionId,
|
|
795
|
-
draftStatus,
|
|
796
|
-
themeKey: DEFAULT_THEME_KEY,
|
|
797
|
-
},
|
|
798
|
-
valueType: "json",
|
|
799
|
-
valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.brandTheme,
|
|
800
|
-
sender,
|
|
801
|
-
receiver,
|
|
802
|
-
correlationId,
|
|
803
|
-
timestamp: Date.now(),
|
|
804
|
-
});
|
|
805
|
-
dispatchSignal({
|
|
806
|
-
scope: "area",
|
|
807
|
-
channel: PHI_THEME_SIGNAL_CHANNELS.presetSelect,
|
|
808
|
-
action: "change",
|
|
809
|
-
value: selectionValue,
|
|
810
|
-
valueType: "string",
|
|
811
|
-
sender,
|
|
812
|
-
receiver,
|
|
813
|
-
correlationId,
|
|
814
|
-
timestamp: Date.now(),
|
|
815
|
-
});
|
|
816
|
-
}
|
|
817
|
-
/**
|
|
818
|
-
* The draft's state in the words every draft keeper uses (`PhiDraftStatusSignalValue`), for the Core
|
|
819
|
-
* Draft Status Widget: broadcast when it changes, or addressed to the one Widget that asked on mount.
|
|
820
|
-
*/
|
|
821
|
-
function emitThemeDraftStatus(dispatchSignal, receiver, value, correlationId) {
|
|
822
|
-
dispatchSignal({
|
|
823
|
-
scope: "area",
|
|
824
|
-
channel: PHI_THEME_SIGNAL_CHANNELS.draftStatus,
|
|
825
|
-
action: "change",
|
|
826
|
-
value: { ...value, themeKey: DEFAULT_THEME_KEY },
|
|
827
|
-
valueType: "json",
|
|
828
|
-
valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.revisionsDraftStatus,
|
|
829
|
-
sender: createPhiThemeControllerAddress(),
|
|
830
|
-
receiver,
|
|
831
|
-
correlationId,
|
|
832
|
-
timestamp: Date.now(),
|
|
833
|
-
});
|
|
834
|
-
}
|
|
835
|
-
/**
|
|
836
|
-
* The Set select's options, stated again for a stored Theme that changed.
|
|
837
|
-
*
|
|
838
|
-
* The Site Theme entry names the Set the stored Theme was derived from, and a save or a publish is a
|
|
839
|
-
* new stored Theme. The whole list goes out, because that is what the select takes; the Sets come from
|
|
840
|
-
* the server, where the active Modules are known.
|
|
841
|
-
*/
|
|
842
|
-
function emitThemeSelectOptions(dispatchSignal, options, correlationId) {
|
|
843
|
-
dispatchSignal({
|
|
844
|
-
scope: "area",
|
|
845
|
-
channel: PHI_THEME_SIGNAL_CHANNELS.presetOptions,
|
|
846
|
-
action: "change",
|
|
847
|
-
value: { options: options.map((option) => ({ ...option })) },
|
|
848
|
-
valueType: "json",
|
|
849
|
-
valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.controlOptions,
|
|
850
|
-
sender: createPhiThemeControllerAddress(),
|
|
851
|
-
receiver: "broadcast",
|
|
852
|
-
correlationId,
|
|
853
|
-
timestamp: Date.now(),
|
|
854
|
-
});
|
|
855
|
-
}
|
|
856
671
|
/**
|
|
857
672
|
* "Publish what you are holding" -- the question a Widget asks the Controller when it mounts.
|
|
858
673
|
*
|
|
@@ -878,28 +693,6 @@ function emitThemeHydrateRequest(dispatchSignal, sender) {
|
|
|
878
693
|
timestamp: Date.now(),
|
|
879
694
|
});
|
|
880
695
|
}
|
|
881
|
-
/**
|
|
882
|
-
* The reply, addressed to the one Widget that asked.
|
|
883
|
-
*
|
|
884
|
-
* Deliberately not `emitThemeState`. That one announces a change everybody is affected by, and says
|
|
885
|
-
* three things -- the theme, the draft status, the selected preset -- because all three moved. Nothing
|
|
886
|
-
* moved here: one Widget arrived late and needs catching up, so a broadcast would set the state of
|
|
887
|
-
* Widgets that already had it, under the correlation of a mount they had no part in.
|
|
888
|
-
*/
|
|
889
|
-
function emitThemeStateTo(dispatchSignal, receiver, theme, revisionId, draftStatus, correlationId) {
|
|
890
|
-
dispatchSignal({
|
|
891
|
-
scope: "area",
|
|
892
|
-
channel: PHI_THEME_SIGNAL_CHANNELS.brandTheme,
|
|
893
|
-
action: "change",
|
|
894
|
-
value: { theme, revisionId, draftStatus, themeKey: DEFAULT_THEME_KEY },
|
|
895
|
-
valueType: "json",
|
|
896
|
-
valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.brandTheme,
|
|
897
|
-
sender: createPhiThemeControllerAddress(),
|
|
898
|
-
receiver,
|
|
899
|
-
correlationId,
|
|
900
|
-
timestamp: Date.now(),
|
|
901
|
-
});
|
|
902
|
-
}
|
|
903
696
|
function emitThemeDraftRequest(dispatchSignal, theme, revisionId, edit) {
|
|
904
697
|
dispatchSignal({
|
|
905
698
|
scope: "area",
|
|
@@ -919,48 +712,6 @@ function emitThemeDraftRequest(dispatchSignal, theme, revisionId, edit) {
|
|
|
919
712
|
timestamp: Date.now(),
|
|
920
713
|
});
|
|
921
714
|
}
|
|
922
|
-
function emitRootThemeState(dispatchSignal, theme, correlationId) {
|
|
923
|
-
dispatchSignal({
|
|
924
|
-
scope: "site",
|
|
925
|
-
channel: "theme",
|
|
926
|
-
action: "change",
|
|
927
|
-
value: theme,
|
|
928
|
-
valueType: "json",
|
|
929
|
-
valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.runtimeTheme,
|
|
930
|
-
sender: createPhiThemeControllerAddress(),
|
|
931
|
-
receiver: createPhiCoreRuntimeControllerAddress(),
|
|
932
|
-
correlationId,
|
|
933
|
-
timestamp: Date.now(),
|
|
934
|
-
});
|
|
935
|
-
}
|
|
936
|
-
/**
|
|
937
|
-
* The Page, asked again for the Theme it now has.
|
|
938
|
-
*
|
|
939
|
-
* Publishing moves what the server renders from, and almost none of that is in this Widget's hands.
|
|
940
|
-
* The Root layout reads the Site's Theme once per server render and hands the whole of it down --
|
|
941
|
-
* fonts, the root background, the Brand's pictures -- and the Builder page around this Widget was
|
|
942
|
-
* measured with the shell heights of the Theme that stood before. The broadcast beside this one
|
|
943
|
-
* reaches the Theme Widgets on this page and nothing above them, and the preview signal only paints
|
|
944
|
-
* the draft; so without this, what was published is visible on the next navigation and not before.
|
|
945
|
-
*
|
|
946
|
-
* `reload` at the Core Runtime's address is the Site's one way of saying it: the always-mounted
|
|
947
|
-
* adapter answers with `router.refresh()`, which re-renders the route's Server components and leaves
|
|
948
|
-
* the operator on the panel they had open (components/runtime/core-runtime-application-adapter.tsx).
|
|
949
|
-
* A document reload would close it.
|
|
950
|
-
*/
|
|
951
|
-
function emitRootReload(dispatchSignal, correlationId) {
|
|
952
|
-
dispatchSignal({
|
|
953
|
-
scope: "site",
|
|
954
|
-
channel: "reload",
|
|
955
|
-
action: "activate",
|
|
956
|
-
value: null,
|
|
957
|
-
valueType: "none",
|
|
958
|
-
sender: createPhiThemeControllerAddress(),
|
|
959
|
-
receiver: createPhiCoreRuntimeControllerAddress(),
|
|
960
|
-
correlationId,
|
|
961
|
-
timestamp: Date.now(),
|
|
962
|
-
});
|
|
963
|
-
}
|
|
964
715
|
/**
|
|
965
716
|
* The draft, for a Widget that edits it but does not own it.
|
|
966
717
|
*
|
|
@@ -1044,502 +795,33 @@ function usePhiBrandThemeDraft(runtime, themeKey) {
|
|
|
1044
795
|
}, undefined, selfAddress);
|
|
1045
796
|
return { state, draftRef, publishDraft, pickerTransaction, editTransaction };
|
|
1046
797
|
}
|
|
798
|
+
/*
|
|
799
|
+
* The mode the preview switch last said, kept beside the panels rather than in them. The switch speaks
|
|
800
|
+
* only when it changes, and the panels sit in a Stack that remounts them on every tab change, so a
|
|
801
|
+
* panel opened after the switch went dark started light again while the switch still read "Dark".
|
|
802
|
+
*/
|
|
803
|
+
let phiBrandPreviewModeHeard = null;
|
|
804
|
+
const phiBrandPreviewModeListeners = new Set();
|
|
805
|
+
function subscribePhiBrandPreviewMode(listener) {
|
|
806
|
+
phiBrandPreviewModeListeners.add(listener);
|
|
807
|
+
return () => {
|
|
808
|
+
phiBrandPreviewModeListeners.delete(listener);
|
|
809
|
+
};
|
|
810
|
+
}
|
|
1047
811
|
function usePhiBrandPreviewMode(initialMode) {
|
|
1048
|
-
const
|
|
812
|
+
const heard = useSyncExternalStore(subscribePhiBrandPreviewMode, () => phiBrandPreviewModeHeard, () => null);
|
|
1049
813
|
usePhiSignalListener((signal) => {
|
|
1050
814
|
if (signal.scope === "page" &&
|
|
1051
815
|
signal.receiver === "broadcast" &&
|
|
1052
816
|
signal.channel === PHI_THEME_SIGNAL_CHANNELS.previewThemeMode &&
|
|
1053
817
|
signal.action === "change" &&
|
|
1054
818
|
signal.valueType === "boolean") {
|
|
1055
|
-
|
|
819
|
+
phiBrandPreviewModeHeard = signal.value === true ? "dark" : "light";
|
|
820
|
+
for (const listener of phiBrandPreviewModeListeners)
|
|
821
|
+
listener();
|
|
1056
822
|
}
|
|
1057
823
|
});
|
|
1058
|
-
return
|
|
1059
|
-
}
|
|
1060
|
-
export function PhiBuilderBrandThemeControllerWidgetClient({ runtime, config, setOptions, }) {
|
|
1061
|
-
const dispatchSignal = usePhiSignalDispatcher();
|
|
1062
|
-
const { showMessage } = usePhiApplicationFeedback();
|
|
1063
|
-
const { presets: themePresets } = usePhiConfig();
|
|
1064
|
-
const themeBlocks = usePhiThemeBlockCatalog();
|
|
1065
|
-
const themeKey = resolveThemeKey(config);
|
|
1066
|
-
const siteKey = runtime.site.key;
|
|
1067
|
-
const historyScope = `theme:${siteKey}:${themeKey}`;
|
|
1068
|
-
const reviewArea = config?.reviewArea ?? (runtime.area === "builder" ? "public" : runtime.area);
|
|
1069
|
-
const fallbackTheme = useMemo(() => resolveInitialTheme(runtime), [runtime]);
|
|
1070
|
-
const initialState = useMemo(() => createInitialBrandThemeState(themeKey, fallbackTheme), [fallbackTheme, themeKey]);
|
|
1071
|
-
const [state, setState] = useState(initialState);
|
|
1072
|
-
const stateRef = useRef(initialState);
|
|
1073
|
-
/*
|
|
1074
|
-
* The Theme being worked on -- the Draft entry of the Set select. Trying on a Set or the Published
|
|
1075
|
-
* Theme leaves it alone, so picking Draft again takes the try-on back; any edit moves it.
|
|
1076
|
-
*/
|
|
1077
|
-
const siteThemeRef = useRef(initialState.draft);
|
|
1078
|
-
/* The options last sent, so a draft that changes nothing in the select does not send them again. */
|
|
1079
|
-
const sentSelectOptionsRef = useRef(null);
|
|
1080
|
-
/* The draft a picker edit started from, while one is open; see `PhiThemeDraftEdit`. */
|
|
1081
|
-
const pickerEditBeforeRef = useRef(null);
|
|
1082
|
-
const [saving, setSaving] = useState(false);
|
|
1083
|
-
/*
|
|
1084
|
-
* The Theme as it is stored -- the saved draft, or the published Theme where no draft stands -- and
|
|
1085
|
-
* why it could not be read, if it could not. What is on screen differing from it is `unsaved`.
|
|
1086
|
-
*/
|
|
1087
|
-
const savedThemeRef = useRef(initialState.draft);
|
|
1088
|
-
const readErrorRef = useRef(null);
|
|
1089
|
-
const resolveDraftStatus = useCallback(() => {
|
|
1090
|
-
const current = stateRef.current;
|
|
1091
|
-
const subject = `theme/${themeKey}`;
|
|
1092
|
-
if (readErrorRef.current !== null) {
|
|
1093
|
-
return { status: "error", revisionId: null, subject, error: readErrorRef.current };
|
|
1094
|
-
}
|
|
1095
|
-
if (!isSameThemePayload(current.draft, savedThemeRef.current)) {
|
|
1096
|
-
return { status: "unsaved", revisionId: current.revisionId, subject };
|
|
1097
|
-
}
|
|
1098
|
-
return current.revisionId != null
|
|
1099
|
-
? { status: "draft", revisionId: current.revisionId, subject }
|
|
1100
|
-
: { status: "published", revisionId: null, subject };
|
|
1101
|
-
}, [themeKey]);
|
|
1102
|
-
const announceDraftStatus = useCallback((correlationId) => {
|
|
1103
|
-
emitThemeDraftStatus(dispatchSignal, "broadcast", resolveDraftStatus(), correlationId);
|
|
1104
|
-
}, [dispatchSignal, resolveDraftStatus]);
|
|
1105
|
-
/*
|
|
1106
|
-
* A draft exists once one was saved, or once the Theme being worked on is no longer the published one.
|
|
1107
|
-
* Undoing back to the published Theme takes an unsaved draft away again.
|
|
1108
|
-
*/
|
|
1109
|
-
const hasDraft = useCallback(() => {
|
|
1110
|
-
const current = stateRef.current;
|
|
1111
|
-
return current.revisionId != null || !isSameThemePayload(siteThemeRef.current, current.published);
|
|
1112
|
-
}, []);
|
|
1113
|
-
const resolveSelectionValue = useCallback(() => resolvePhiThemeSelectionValue(siteKey, {
|
|
1114
|
-
published: stateRef.current.hasPublishedThemeRevision,
|
|
1115
|
-
draft: hasDraft(),
|
|
1116
|
-
}), [hasDraft, siteKey]);
|
|
1117
|
-
const emitSelectOptions = useCallback((correlationId) => {
|
|
1118
|
-
const current = stateRef.current;
|
|
1119
|
-
const options = [
|
|
1120
|
-
...buildPhiSiteThemeSelectOptions({
|
|
1121
|
-
siteKey,
|
|
1122
|
-
published: current.hasPublishedThemeRevision
|
|
1123
|
-
? { theme: current.published, revisionId: current.publishedRevisionId }
|
|
1124
|
-
: null,
|
|
1125
|
-
draft: hasDraft() ? { theme: siteThemeRef.current, revisionId: current.revisionId } : null,
|
|
1126
|
-
}),
|
|
1127
|
-
...setOptions,
|
|
1128
|
-
];
|
|
1129
|
-
const serialized = JSON.stringify(options);
|
|
1130
|
-
if (serialized === sentSelectOptionsRef.current) {
|
|
1131
|
-
return;
|
|
1132
|
-
}
|
|
1133
|
-
sentSelectOptionsRef.current = serialized;
|
|
1134
|
-
emitThemeSelectOptions(dispatchSignal, options, correlationId);
|
|
1135
|
-
}, [dispatchSignal, hasDraft, setOptions, siteKey]);
|
|
1136
|
-
/*
|
|
1137
|
-
* Every draft states the Set it was derived from. A Theme that never named one gets the core Set on
|
|
1138
|
-
* its first draft, so the Draft entry is never without a name.
|
|
1139
|
-
*/
|
|
1140
|
-
const publishDraft = useCallback((draftTheme, options) => {
|
|
1141
|
-
const nextTheme = ensurePhiThemeDerivation(draftTheme);
|
|
1142
|
-
const current = stateRef.current;
|
|
1143
|
-
if (options?.history !== false && !isSameThemePayload(current.draft, nextTheme)) {
|
|
1144
|
-
phiThemeHistory.record(historyScope, {
|
|
1145
|
-
label: "Update theme",
|
|
1146
|
-
before: current.draft,
|
|
1147
|
-
after: nextTheme,
|
|
1148
|
-
});
|
|
1149
|
-
}
|
|
1150
|
-
const nextState = {
|
|
1151
|
-
...current,
|
|
1152
|
-
draft: nextTheme,
|
|
1153
|
-
};
|
|
1154
|
-
stateRef.current = nextState;
|
|
1155
|
-
if (options?.updateSiteSnapshot !== false) {
|
|
1156
|
-
siteThemeRef.current = nextTheme;
|
|
1157
|
-
}
|
|
1158
|
-
setState(nextState);
|
|
1159
|
-
emitThemeState(dispatchSignal, nextTheme, nextState.revisionId, options?.selectionValue ?? resolveSelectionValue(), "draft", options?.correlationId);
|
|
1160
|
-
announceDraftStatus(options?.correlationId);
|
|
1161
|
-
emitSelectOptions(options?.correlationId);
|
|
1162
|
-
}, [announceDraftStatus, dispatchSignal, emitSelectOptions, historyScope, resolveSelectionValue]);
|
|
1163
|
-
useEffect(() => {
|
|
1164
|
-
const emitAvailability = () => {
|
|
1165
|
-
const availability = phiThemeHistory.getAvailability(historyScope);
|
|
1166
|
-
for (const [controlKey, enabled] of [
|
|
1167
|
-
["undo", availability.canUndo],
|
|
1168
|
-
["redo", availability.canRedo],
|
|
1169
|
-
]) {
|
|
1170
|
-
dispatchSignal({
|
|
1171
|
-
scope: "area",
|
|
1172
|
-
channel: "enabled",
|
|
1173
|
-
action: "change",
|
|
1174
|
-
value: enabled,
|
|
1175
|
-
valueType: "boolean",
|
|
1176
|
-
sender: createPhiThemeControllerAddress(),
|
|
1177
|
-
receiver: createPhiCommandToolbarControlAddress(PHI_THEME_RUNTIME_MODULE_ID, "builder-theme-page", controlKey),
|
|
1178
|
-
timestamp: Date.now(),
|
|
1179
|
-
});
|
|
1180
|
-
}
|
|
1181
|
-
};
|
|
1182
|
-
emitAvailability();
|
|
1183
|
-
return phiThemeHistory.subscribe(historyScope, emitAvailability);
|
|
1184
|
-
}, [dispatchSignal, historyScope]);
|
|
1185
|
-
useEffect(() => {
|
|
1186
|
-
let cancelled = false;
|
|
1187
|
-
void fetch(`/api/site/cms/theme?key=${encodeURIComponent(themeKey)}`, {
|
|
1188
|
-
method: "GET",
|
|
1189
|
-
cache: "no-store",
|
|
1190
|
-
})
|
|
1191
|
-
.then(async (response) => {
|
|
1192
|
-
const body = (await response.json().catch(() => null));
|
|
1193
|
-
if (!response.ok) {
|
|
1194
|
-
throw new Error(body?.error ?? "Failed to read theme.");
|
|
1195
|
-
}
|
|
1196
|
-
if (cancelled) {
|
|
1197
|
-
return;
|
|
1198
|
-
}
|
|
1199
|
-
const published = normalizeTheme(body?.published, fallbackTheme);
|
|
1200
|
-
const draft = normalizeTheme(body?.draft?.theme?.theme, published);
|
|
1201
|
-
const revisionId = typeof body?.draft?.revisionId === "number" && Number.isInteger(body.draft.revisionId)
|
|
1202
|
-
? body.draft.revisionId
|
|
1203
|
-
: null;
|
|
1204
|
-
const publishedRevisionId = typeof body?.publishedRevisionId === "number" && Number.isInteger(body.publishedRevisionId)
|
|
1205
|
-
? body.publishedRevisionId
|
|
1206
|
-
: null;
|
|
1207
|
-
const nextState = {
|
|
1208
|
-
key: body?.key?.trim() || themeKey,
|
|
1209
|
-
published,
|
|
1210
|
-
draft,
|
|
1211
|
-
revisionId,
|
|
1212
|
-
hasPublishedThemeRevision: publishedRevisionId != null,
|
|
1213
|
-
publishedRevisionId,
|
|
1214
|
-
};
|
|
1215
|
-
stateRef.current = nextState;
|
|
1216
|
-
siteThemeRef.current = draft;
|
|
1217
|
-
savedThemeRef.current = draft;
|
|
1218
|
-
readErrorRef.current = null;
|
|
1219
|
-
setState(nextState);
|
|
1220
|
-
phiThemeHistory.clear(historyScope);
|
|
1221
|
-
emitThemeState(dispatchSignal, draft, revisionId, resolveSelectionValue(), revisionId == null ? "published" : "draft");
|
|
1222
|
-
announceDraftStatus();
|
|
1223
|
-
emitSelectOptions();
|
|
1224
|
-
})
|
|
1225
|
-
.catch((error) => {
|
|
1226
|
-
if (!cancelled) {
|
|
1227
|
-
const message = error instanceof Error ? error.message : "Failed to read theme.";
|
|
1228
|
-
readErrorRef.current = message;
|
|
1229
|
-
announceDraftStatus();
|
|
1230
|
-
showMessage({ level: "error", content: message });
|
|
1231
|
-
}
|
|
1232
|
-
});
|
|
1233
|
-
return () => {
|
|
1234
|
-
cancelled = true;
|
|
1235
|
-
};
|
|
1236
|
-
}, [
|
|
1237
|
-
announceDraftStatus,
|
|
1238
|
-
dispatchSignal,
|
|
1239
|
-
emitSelectOptions,
|
|
1240
|
-
fallbackTheme,
|
|
1241
|
-
historyScope,
|
|
1242
|
-
resolveSelectionValue,
|
|
1243
|
-
showMessage,
|
|
1244
|
-
siteKey,
|
|
1245
|
-
themeKey,
|
|
1246
|
-
]);
|
|
1247
|
-
async function saveTheme(draftTheme = stateRef.current.draft, options) {
|
|
1248
|
-
let nextTheme = ensurePhiThemeDerivation(draftTheme);
|
|
1249
|
-
setSaving(true);
|
|
1250
|
-
try {
|
|
1251
|
-
const current = stateRef.current;
|
|
1252
|
-
/*
|
|
1253
|
-
* The blocks a Module brought become the Site's here, on the way to the server and nowhere else:
|
|
1254
|
-
* its palette, its style tokens, and its ground -- background, Chrome and Shadow of both modes as
|
|
1255
|
-
* values, every picture as a Site Asset. Following a block costs nothing; saving is what says
|
|
1256
|
-
* somebody means to keep it, and a look somebody decided on must not depend on a package staying
|
|
1257
|
-
* installed.
|
|
1258
|
-
*/
|
|
1259
|
-
const materialized = await materializePhiThemeModuleBlocks(nextTheme, resolvePhiThemeComposition(nextTheme, themeBlocks));
|
|
1260
|
-
/*
|
|
1261
|
-
* The Logo is taken the same way, from every Set, core included: a Set offers it, and a Site that
|
|
1262
|
-
* saved has decided to keep it -- as a picture in its own library, not as a data URL in its record.
|
|
1263
|
-
*/
|
|
1264
|
-
nextTheme = await materializePhiThemeBrandLogo(materialized.theme, resolvePhiThemeComposition(materialized.theme, themeBlocks).markSet);
|
|
1265
|
-
const response = await fetch("/api/site/cms/theme", {
|
|
1266
|
-
method: "POST",
|
|
1267
|
-
headers: {
|
|
1268
|
-
"content-type": "application/json",
|
|
1269
|
-
},
|
|
1270
|
-
body: JSON.stringify({
|
|
1271
|
-
key: current.key,
|
|
1272
|
-
theme: nextTheme,
|
|
1273
|
-
message: "Brand theme draft",
|
|
1274
|
-
}),
|
|
1275
|
-
});
|
|
1276
|
-
const body = (await response.json().catch(() => null));
|
|
1277
|
-
if (!response.ok) {
|
|
1278
|
-
throw new Error(body?.error ?? "Failed to save theme draft.");
|
|
1279
|
-
}
|
|
1280
|
-
const revisionId = typeof body?.revisionId === "number" && Number.isInteger(body.revisionId) ? body.revisionId : null;
|
|
1281
|
-
const savedTheme = normalizeTheme(body?.theme?.theme, nextTheme);
|
|
1282
|
-
const nextState = {
|
|
1283
|
-
...stateRef.current,
|
|
1284
|
-
draft: savedTheme,
|
|
1285
|
-
revisionId,
|
|
1286
|
-
};
|
|
1287
|
-
stateRef.current = nextState;
|
|
1288
|
-
siteThemeRef.current = savedTheme;
|
|
1289
|
-
savedThemeRef.current = savedTheme;
|
|
1290
|
-
setState(nextState);
|
|
1291
|
-
emitThemeState(dispatchSignal, savedTheme, revisionId, resolveSelectionValue(), "draft", options?.correlationId);
|
|
1292
|
-
announceDraftStatus(options?.correlationId);
|
|
1293
|
-
emitSelectOptions(options?.correlationId);
|
|
1294
|
-
if (options?.notify !== false) {
|
|
1295
|
-
showMessage({ level: "success", content: "Saved theme draft." }, { correlationId: options?.correlationId ?? null });
|
|
1296
|
-
}
|
|
1297
|
-
return revisionId;
|
|
1298
|
-
}
|
|
1299
|
-
finally {
|
|
1300
|
-
setSaving(false);
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
async function publishTheme(correlationId) {
|
|
1304
|
-
const current = stateRef.current;
|
|
1305
|
-
if (current.revisionId == null) {
|
|
1306
|
-
throw new Error("No saved theme draft found to publish.");
|
|
1307
|
-
}
|
|
1308
|
-
const response = await fetch("/api/site/cms/theme/publish", {
|
|
1309
|
-
method: "POST",
|
|
1310
|
-
headers: {
|
|
1311
|
-
"content-type": "application/json",
|
|
1312
|
-
},
|
|
1313
|
-
body: JSON.stringify({
|
|
1314
|
-
key: current.key,
|
|
1315
|
-
revisionId: current.revisionId,
|
|
1316
|
-
}),
|
|
1317
|
-
});
|
|
1318
|
-
const body = (await response.json().catch(() => null));
|
|
1319
|
-
if (!response.ok) {
|
|
1320
|
-
throw new Error(body?.error ?? "Failed to publish theme.");
|
|
1321
|
-
}
|
|
1322
|
-
const published = normalizeTheme(body?.theme?.theme, current.draft);
|
|
1323
|
-
const nextState = {
|
|
1324
|
-
...current,
|
|
1325
|
-
published,
|
|
1326
|
-
draft: published,
|
|
1327
|
-
revisionId: null,
|
|
1328
|
-
hasPublishedThemeRevision: true,
|
|
1329
|
-
publishedRevisionId: current.revisionId,
|
|
1330
|
-
};
|
|
1331
|
-
stateRef.current = nextState;
|
|
1332
|
-
siteThemeRef.current = published;
|
|
1333
|
-
savedThemeRef.current = published;
|
|
1334
|
-
setState(nextState);
|
|
1335
|
-
emitThemeState(dispatchSignal, published, null, resolveSelectionValue(), "published", correlationId);
|
|
1336
|
-
announceDraftStatus(correlationId);
|
|
1337
|
-
emitSelectOptions(correlationId);
|
|
1338
|
-
showMessage({ level: "success", content: "Published theme." }, { correlationId: correlationId ?? null });
|
|
1339
|
-
emitRootReload(dispatchSignal, correlationId);
|
|
1340
|
-
}
|
|
1341
|
-
/*
|
|
1342
|
-
* The Controller names the address it is addressed at, or the bus has nobody to deliver to.
|
|
1343
|
-
*
|
|
1344
|
-
* A signal is held until a listener answers for its receiver, and a listener answers only for an
|
|
1345
|
-
* address it names. Every draft a Widget sent -- and every hydrate request -- was held here and
|
|
1346
|
-
* never arrived, silently: the Widget rendered its own copy, so the controls looked right while the
|
|
1347
|
-
* Controller knew nothing and the preview was never told.
|
|
1348
|
-
*/
|
|
1349
|
-
usePhiSignalListener((signal) => {
|
|
1350
|
-
if (signal.channel === PHI_THEME_SIGNAL_CHANNELS.brandTheme &&
|
|
1351
|
-
signal.action === "change" &&
|
|
1352
|
-
signal.receiver === createPhiThemeControllerAddress() &&
|
|
1353
|
-
signal.sender !== createPhiThemeControllerAddress()) {
|
|
1354
|
-
const value = signal.value && typeof signal.value === "object"
|
|
1355
|
-
? signal.value
|
|
1356
|
-
: null;
|
|
1357
|
-
const current = stateRef.current;
|
|
1358
|
-
const nextTheme = normalizeTheme(value?.theme, current.draft);
|
|
1359
|
-
const revisionId = typeof value?.revisionId === "number" && Number.isInteger(value.revisionId) ? value.revisionId : current.revisionId;
|
|
1360
|
-
if (revisionId !== current.revisionId) {
|
|
1361
|
-
stateRef.current = { ...current, revisionId };
|
|
1362
|
-
}
|
|
1363
|
-
const edit = value?.edit;
|
|
1364
|
-
if (edit === "live") {
|
|
1365
|
-
pickerEditBeforeRef.current ??= current.draft;
|
|
1366
|
-
publishDraft(nextTheme, { history: false, correlationId: signal.correlationId });
|
|
1367
|
-
return;
|
|
1368
|
-
}
|
|
1369
|
-
if (edit === "commit" || edit === "discard") {
|
|
1370
|
-
const before = pickerEditBeforeRef.current;
|
|
1371
|
-
pickerEditBeforeRef.current = null;
|
|
1372
|
-
if (edit === "discard") {
|
|
1373
|
-
publishDraft(before ?? nextTheme, { history: false, correlationId: signal.correlationId });
|
|
1374
|
-
return;
|
|
1375
|
-
}
|
|
1376
|
-
publishDraft(nextTheme, { history: false, correlationId: signal.correlationId });
|
|
1377
|
-
if (before && !isSameThemePayload(before, nextTheme)) {
|
|
1378
|
-
phiThemeHistory.record(historyScope, { label: "Update theme", before, after: nextTheme });
|
|
1379
|
-
}
|
|
1380
|
-
return;
|
|
1381
|
-
}
|
|
1382
|
-
pickerEditBeforeRef.current = null;
|
|
1383
|
-
publishDraft(nextTheme, { correlationId: signal.correlationId });
|
|
1384
|
-
return;
|
|
1385
|
-
}
|
|
1386
|
-
if (signal.scope === "area" &&
|
|
1387
|
-
signal.receiver === createPhiThemeControllerAddress() &&
|
|
1388
|
-
signal.channel === PHI_THEME_SIGNAL_CHANNELS.previewThemeMode &&
|
|
1389
|
-
signal.action === "change" &&
|
|
1390
|
-
signal.valueType === "boolean") {
|
|
1391
|
-
const value = signal.value;
|
|
1392
|
-
const nextMode = typeof value === "boolean" ? value ? "dark" : "light" : null;
|
|
1393
|
-
if (!nextMode) {
|
|
1394
|
-
return;
|
|
1395
|
-
}
|
|
1396
|
-
const current = stateRef.current;
|
|
1397
|
-
const baseTheme = current.hasPublishedThemeRevision ? current.published : fallbackTheme;
|
|
1398
|
-
const nextTheme = {
|
|
1399
|
-
...baseTheme,
|
|
1400
|
-
mode: nextMode,
|
|
1401
|
-
};
|
|
1402
|
-
// Resolved here, where the catalogue is: the root applies what it receives and holds no blocks.
|
|
1403
|
-
emitRootThemeState(dispatchSignal, resolvePhiThemeRuntimePayload(nextTheme, themeBlocks).theme, signal.correlationId);
|
|
1404
|
-
return;
|
|
1405
|
-
}
|
|
1406
|
-
if (signal.channel === PHI_THEME_SIGNAL_CHANNELS.presetSelect) {
|
|
1407
|
-
if (signal.scope === "area" &&
|
|
1408
|
-
signal.action === "change" &&
|
|
1409
|
-
signal.receiver === createPhiThemeControllerAddress() &&
|
|
1410
|
-
typeof signal.value === "string" &&
|
|
1411
|
-
signal.value.trim().length > 0) {
|
|
1412
|
-
/*
|
|
1413
|
-
* Draft goes back to the Theme being worked on; Published is tried on the way a Set is -- it
|
|
1414
|
-
* replaces what is shown, the Draft entry keeps what was there, and only a save or an edit on
|
|
1415
|
-
* top makes it the draft. Both are one history entry.
|
|
1416
|
-
*/
|
|
1417
|
-
const siteState = readPhiSiteThemeSelectionState(signal.value, siteKey);
|
|
1418
|
-
if (siteState) {
|
|
1419
|
-
const current = stateRef.current;
|
|
1420
|
-
if (siteState === "published" && !current.hasPublishedThemeRevision) {
|
|
1421
|
-
return;
|
|
1422
|
-
}
|
|
1423
|
-
const nextTheme = siteState === "draft" ? siteThemeRef.current : current.published;
|
|
1424
|
-
if (!isSameThemePayload(current.draft, nextTheme)) {
|
|
1425
|
-
publishDraft(nextTheme, {
|
|
1426
|
-
updateSiteSnapshot: false,
|
|
1427
|
-
correlationId: signal.correlationId,
|
|
1428
|
-
selectionValue: createPhiSiteThemeSelectionValue(siteKey, siteState),
|
|
1429
|
-
});
|
|
1430
|
-
}
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1433
|
-
/*
|
|
1434
|
-
* A Set is tried on, not taken: it decides all three parts and names itself as the derivation,
|
|
1435
|
-
* but the Site Theme entry keeps what was there before, so choosing it again takes the Set back.
|
|
1436
|
-
*/
|
|
1437
|
-
const set = themeBlocks.sets.find((candidate) => candidate.key === signal.value);
|
|
1438
|
-
if (!set) {
|
|
1439
|
-
return;
|
|
1440
|
-
}
|
|
1441
|
-
const palette = themeBlocks.palettes.find((candidate) => candidate.key === set.palette);
|
|
1442
|
-
const withSet = mergeThemeSetChoice(stateRef.current.draft, set);
|
|
1443
|
-
const nextTheme = {
|
|
1444
|
-
...(palette ? applyThemePreset(withSet, palette) : withSet),
|
|
1445
|
-
derivedFrom: createPhiThemeDerivation(set),
|
|
1446
|
-
};
|
|
1447
|
-
if (!isSameThemePayload(stateRef.current.draft, nextTheme)) {
|
|
1448
|
-
publishDraft(nextTheme, {
|
|
1449
|
-
updateSiteSnapshot: false,
|
|
1450
|
-
correlationId: signal.correlationId,
|
|
1451
|
-
selectionValue: set.key,
|
|
1452
|
-
});
|
|
1453
|
-
}
|
|
1454
|
-
return;
|
|
1455
|
-
}
|
|
1456
|
-
return;
|
|
1457
|
-
}
|
|
1458
|
-
/*
|
|
1459
|
-
* A Draft Status Widget that mounted asks what stands; the answer goes to it alone, for the reason
|
|
1460
|
-
* `emitThemeStateTo` gives. Answered whatever is in progress, because it is a question about state.
|
|
1461
|
-
*/
|
|
1462
|
-
if (signal.scope === "area" &&
|
|
1463
|
-
signal.channel === PHI_THEME_SIGNAL_CHANNELS.draftStatus &&
|
|
1464
|
-
signal.action === "activate" &&
|
|
1465
|
-
signal.receiver === createPhiThemeControllerAddress()) {
|
|
1466
|
-
if (signal.sender != null) {
|
|
1467
|
-
emitThemeDraftStatus(dispatchSignal, signal.sender, resolveDraftStatus(), signal.correlationId);
|
|
1468
|
-
}
|
|
1469
|
-
return;
|
|
1470
|
-
}
|
|
1471
|
-
if (signal.scope !== "area" ||
|
|
1472
|
-
signal.channel !== PHI_THEME_SIGNAL_CHANNELS.command ||
|
|
1473
|
-
signal.action !== "activate" ||
|
|
1474
|
-
signal.valueType !== "string" ||
|
|
1475
|
-
signal.receiver !== createPhiThemeControllerAddress()) {
|
|
1476
|
-
return;
|
|
1477
|
-
}
|
|
1478
|
-
const commandValue = signal.value;
|
|
1479
|
-
/*
|
|
1480
|
-
* Answered before the saving guard: a Widget that mounts mid-save is asking what is there, which
|
|
1481
|
-
* is a question about state and not a command that would compete with the save.
|
|
1482
|
-
*/
|
|
1483
|
-
if (commandValue === "hydrate") {
|
|
1484
|
-
const asker = signal.sender;
|
|
1485
|
-
if (asker == null) {
|
|
1486
|
-
return;
|
|
1487
|
-
}
|
|
1488
|
-
const current = stateRef.current;
|
|
1489
|
-
emitThemeStateTo(dispatchSignal, asker, current.draft, current.revisionId, current.revisionId == null ? "published" : "draft", signal.correlationId);
|
|
1490
|
-
return;
|
|
1491
|
-
}
|
|
1492
|
-
if (saving) {
|
|
1493
|
-
return;
|
|
1494
|
-
}
|
|
1495
|
-
if (commandValue === "save") {
|
|
1496
|
-
void saveTheme(undefined, { correlationId: signal.correlationId }).catch((error) => {
|
|
1497
|
-
showMessage({ level: "error", content: error instanceof Error ? error.message : "Failed to save theme draft." }, { correlationId: signal.correlationId });
|
|
1498
|
-
});
|
|
1499
|
-
return;
|
|
1500
|
-
}
|
|
1501
|
-
if (commandValue === "publish") {
|
|
1502
|
-
void publishTheme(signal.correlationId).catch((error) => {
|
|
1503
|
-
showMessage({ level: "error", content: error instanceof Error ? error.message : "Failed to publish theme." }, { correlationId: signal.correlationId });
|
|
1504
|
-
});
|
|
1505
|
-
return;
|
|
1506
|
-
}
|
|
1507
|
-
if (commandValue === "preview") {
|
|
1508
|
-
const revisionId = stateRef.current.revisionId;
|
|
1509
|
-
if (!Number.isInteger(revisionId) || revisionId <= 0) {
|
|
1510
|
-
showMessage({ level: "error", content: "No saved theme draft found. Save first before opening live preview." }, { correlationId: signal.correlationId });
|
|
1511
|
-
return;
|
|
1512
|
-
}
|
|
1513
|
-
const href = buildThemeReviewHref({
|
|
1514
|
-
area: reviewArea,
|
|
1515
|
-
revisionId: revisionId,
|
|
1516
|
-
themeKey: stateRef.current.key,
|
|
1517
|
-
});
|
|
1518
|
-
window.open(href, "_blank", "noopener,noreferrer");
|
|
1519
|
-
return;
|
|
1520
|
-
}
|
|
1521
|
-
if (commandValue === "reset") {
|
|
1522
|
-
const preset = resolveThemePayloadPreset(stateRef.current.draft, themePresets);
|
|
1523
|
-
publishDraft(resetThemeToPreset(stateRef.current.draft, themePresets, preset), { correlationId: signal.correlationId });
|
|
1524
|
-
showMessage({ level: "success", content: `Reset theme to ${preset.title}.` }, { correlationId: signal.correlationId });
|
|
1525
|
-
return;
|
|
1526
|
-
}
|
|
1527
|
-
if (commandValue === "undo") {
|
|
1528
|
-
pickerEditBeforeRef.current = null;
|
|
1529
|
-
phiThemeHistory.undo(historyScope, (previous) => {
|
|
1530
|
-
publishDraft(previous, { history: false, correlationId: signal.correlationId });
|
|
1531
|
-
});
|
|
1532
|
-
return;
|
|
1533
|
-
}
|
|
1534
|
-
if (commandValue === "redo") {
|
|
1535
|
-
pickerEditBeforeRef.current = null;
|
|
1536
|
-
phiThemeHistory.redo(historyScope, (next) => {
|
|
1537
|
-
publishDraft(next, { history: false, correlationId: signal.correlationId });
|
|
1538
|
-
});
|
|
1539
|
-
}
|
|
1540
|
-
}, undefined, createPhiThemeControllerAddress());
|
|
1541
|
-
void state;
|
|
1542
|
-
return null;
|
|
824
|
+
return heard ?? initialMode;
|
|
1543
825
|
}
|
|
1544
826
|
/**
|
|
1545
827
|
* The open section of a Theme panel, remembered for the session.
|
|
@@ -1708,35 +990,53 @@ export function PhiBuilderBrandThemeControlsWidgetClient({ runtime, config, colo
|
|
|
1708
990
|
const loading = false;
|
|
1709
991
|
const saving = false;
|
|
1710
992
|
const [activeColorSection, changeActiveColorSection] = usePhiBrandAccordionSection(BRAND_THEME_COLOR_COLLAPSE_STORAGE_KEY, BRAND_THEME_COLOR_SECTION_KEYS);
|
|
1711
|
-
const themeComposition = resolvePhiThemeComposition(state.draft, themeBlocks);
|
|
1712
|
-
const algorithm = previewMode === "dark" ? antdTheme.darkAlgorithm : antdTheme.defaultAlgorithm;
|
|
1713
|
-
const selectedPreset = resolveThemePayloadPreset(state.draft, themePresets);
|
|
1714
|
-
/*
|
|
1715
|
-
* What the tab shows is what the Site renders: the palette block with the draft's palette on top,
|
|
1716
|
-
* resolved for the mode being edited. The seeds the author owns are the ones present in the draft's
|
|
1717
|
-
* palette, shared or under this mode; the derived overrides live under this mode alone.
|
|
1718
|
-
*/
|
|
1719
|
-
const colorToken = resolvePhiThemeColorTokens(selectedPreset, state.draft.palette, previewMode);
|
|
1720
|
-
const ownPalette = state.draft.palette ?? {};
|
|
1721
|
-
const ownOverrides = ownPalette.modes?.[previewMode]?.overrides ?? {};
|
|
1722
993
|
/*
|
|
1723
|
-
*
|
|
1724
|
-
*
|
|
994
|
+
* Everything the panel derives from the draft, derived once per draft and mode. The panel renders
|
|
995
|
+
* on every picker step and again on the Controller's echo of it, and each render used to resolve the
|
|
996
|
+
* colour tokens twice and the whole alias derivation on top -- for some seventy colour fields that
|
|
997
|
+
* then redrew. Kept until the draft, the mode, the blocks or the presets change.
|
|
1725
998
|
*/
|
|
1726
|
-
const
|
|
1727
|
-
const customPalette =
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
999
|
+
const customLabel = colorPickerLabels?.custom ?? "Custom";
|
|
1000
|
+
const { themeComposition, selectedPreset, colorToken, ownPalette, ownOverrides, customPalette, customColorOptions, computedToken, } = useMemo(() => {
|
|
1001
|
+
const themeComposition = resolvePhiThemeComposition(state.draft, themeBlocks);
|
|
1002
|
+
const selectedPreset = resolveThemePayloadPreset(state.draft, themePresets);
|
|
1003
|
+
/*
|
|
1004
|
+
* What the tab shows is what the Site renders: the palette block with the draft's palette on top,
|
|
1005
|
+
* resolved for the mode being edited. The seeds the author owns are the ones present in the draft's
|
|
1006
|
+
* palette, shared or under this mode; the derived overrides live under this mode alone.
|
|
1007
|
+
*/
|
|
1008
|
+
const colorToken = resolvePhiThemeColorTokens(selectedPreset, state.draft.palette, previewMode);
|
|
1009
|
+
const ownPalette = state.draft.palette ?? {};
|
|
1010
|
+
const ownOverrides = ownPalette.modes?.[previewMode]?.overrides ?? {};
|
|
1011
|
+
/*
|
|
1012
|
+
* The same colour without the author's derived overrides: what a derived control falls back to, and
|
|
1013
|
+
* what its "Reset override" hands back. Seeds stay in, so the algorithm derives from the author's
|
|
1014
|
+
* seed.
|
|
1015
|
+
*/
|
|
1016
|
+
const baseColorToken = resolvePhiThemeColorTokens(selectedPreset, mergeThemePaletteMode(state.draft, previewMode, (current) => ({ ...current, overrides: {} })).palette, previewMode);
|
|
1017
|
+
const customPalette = resolveThemeCustomPalette(state.draft, selectedPreset, previewMode);
|
|
1018
|
+
const customColorOptions = PHI_THEME_CUSTOM_COLOR_KEYS.map((key, index) => ({
|
|
1019
|
+
key,
|
|
1020
|
+
label: `${customLabel} ${index + 1}`,
|
|
1021
|
+
value: customPalette[key],
|
|
1022
|
+
}));
|
|
1023
|
+
// What the algorithm derives for the mode being edited: the Foundation's resolver, which is the one
|
|
1024
|
+
// the preview and the live render use too.
|
|
1025
|
+
const computedToken = resolvePhiAntdAliasTokens(previewMode, {
|
|
1736
1026
|
...buildPhiEffectiveNonColorThemeTokens(state.draft),
|
|
1737
1027
|
...baseColorToken,
|
|
1738
|
-
}
|
|
1739
|
-
|
|
1028
|
+
});
|
|
1029
|
+
return {
|
|
1030
|
+
themeComposition,
|
|
1031
|
+
selectedPreset,
|
|
1032
|
+
colorToken,
|
|
1033
|
+
ownPalette,
|
|
1034
|
+
ownOverrides,
|
|
1035
|
+
customPalette,
|
|
1036
|
+
customColorOptions,
|
|
1037
|
+
computedToken,
|
|
1038
|
+
};
|
|
1039
|
+
}, [customLabel, previewMode, state.draft, themeBlocks, themePresets]);
|
|
1740
1040
|
return (_jsx(PhiFlexControl, { vertical: true, gap: clientToken.padding, style: { width: "100%", minWidth: 0, opacity: loading ? 0.65 : 1 }, children: _jsx(PhiCardControl, { size: "small", children: _jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingSM, children: [_jsx(PhiBrandBlockPicker, { label: "Palette", value: themeComposition.palette.key, unavailable: themeComposition.unavailable.palette, options: themeBlocks.palettes, onChange: (key) => {
|
|
1741
1041
|
const palette = themeBlocks.palettes.find((candidate) => candidate.key === key);
|
|
1742
1042
|
if (!palette)
|
|
@@ -1749,7 +1049,7 @@ export function PhiBuilderBrandThemeControlsWidgetClient({ runtime, config, colo
|
|
|
1749
1049
|
flex: `0 1 min(100%, ${colorControlWidth}px)`,
|
|
1750
1050
|
minWidth: 0,
|
|
1751
1051
|
maxWidth: "100%",
|
|
1752
|
-
}, children: _jsx(PhiColorFieldControl, { ...pickerTransaction, tokenKey: "custom6", value: customPalette.custom6, defaultValue:
|
|
1052
|
+
}, children: _jsx(PhiColorFieldControl, { ...pickerTransaction, tokenKey: "custom6", value: customPalette.custom6, defaultValue: resolvePhiThemePaletteCustomColors(selectedPreset.palette, previewMode).custom6, disabled: saving, customColors: customColorOptions, presets: PHI_COLOR_PICKER_PRESETS, labels: colorPickerLabels, onChange: (value) => {
|
|
1753
1053
|
publishDraft(mergeThemeCustomColors(state.draft, buildPhiThemeCustomColorPalette(value), previewMode));
|
|
1754
1054
|
} }) })] })),
|
|
1755
1055
|
children: (_jsx(PhiFlexControl, { wrap: "wrap", style: { minWidth: 0, columnGap: clientToken.paddingXXS, rowGap: clientToken.paddingSM }, children: customColorOptions
|
|
@@ -1758,7 +1058,7 @@ export function PhiBuilderBrandThemeControlsWidgetClient({ runtime, config, colo
|
|
|
1758
1058
|
flex: `1 1 calc((100% - ${clientToken.paddingXXS}) / 2)`,
|
|
1759
1059
|
minWidth: 0,
|
|
1760
1060
|
maxWidth: "100%",
|
|
1761
|
-
}, children: _jsx(PhiColorFieldControl, { ...pickerTransaction, label: item.label, tokenKey: item.key, value: item.value, defaultValue:
|
|
1061
|
+
}, children: _jsx(PhiColorFieldControl, { ...pickerTransaction, label: item.label, tokenKey: item.key, value: item.value, defaultValue: resolvePhiThemePaletteCustomColors(selectedPreset.palette, previewMode)[item.key], disabled: saving, customColors: customColorOptions, presets: PHI_COLOR_PICKER_PRESETS, labels: colorPickerLabels, onChange: (value, tokenKey) => {
|
|
1762
1062
|
if (!tokenKey || !PHI_THEME_CUSTOM_COLOR_KEYS.includes(tokenKey)) {
|
|
1763
1063
|
return;
|
|
1764
1064
|
}
|
|
@@ -1768,9 +1068,9 @@ export function PhiBuilderBrandThemeControlsWidgetClient({ runtime, config, colo
|
|
|
1768
1068
|
...THEME_COLOR_SEED_SECTIONS.map((section) => {
|
|
1769
1069
|
const seedAuthored = Object.prototype.hasOwnProperty.call(ownPalette.seed ?? {}, section.key) ||
|
|
1770
1070
|
Object.prototype.hasOwnProperty.call(ownPalette.modes?.[previewMode]?.seed ?? {}, section.key);
|
|
1771
|
-
const seedDefaultValue =
|
|
1071
|
+
const seedDefaultValue = readEffectiveTokenString(computedToken, section.key, section.fallback);
|
|
1772
1072
|
const seedValue = seedAuthored
|
|
1773
|
-
?
|
|
1073
|
+
? readEffectiveTokenString(colorToken, section.key, seedDefaultValue)
|
|
1774
1074
|
: seedDefaultValue;
|
|
1775
1075
|
return {
|
|
1776
1076
|
key: section.key,
|
|
@@ -1783,12 +1083,12 @@ export function PhiBuilderBrandThemeControlsWidgetClient({ runtime, config, colo
|
|
|
1783
1083
|
} }) })] })),
|
|
1784
1084
|
children: (_jsx(PhiFlexControl, { wrap: "wrap", style: { minWidth: 0, columnGap: clientToken.paddingXXS, rowGap: clientToken.paddingSM }, children: section.derived.map((item) => {
|
|
1785
1085
|
const overridden = Object.prototype.hasOwnProperty.call(ownOverrides, item.key);
|
|
1786
|
-
const fallback =
|
|
1086
|
+
const fallback = readEffectiveTokenString(computedToken, item.key, section.fallback);
|
|
1787
1087
|
return (_jsx("div", { style: {
|
|
1788
1088
|
flex: `1 1 calc((100% - ${clientToken.paddingXXS}) / 2)`,
|
|
1789
1089
|
minWidth: 0,
|
|
1790
1090
|
maxWidth: "100%",
|
|
1791
|
-
}, children: _jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXXS, children: [_jsx(PhiColorFieldControl, { ...pickerTransaction, label: item.label, tokenKey: item.key, value: overridden ?
|
|
1091
|
+
}, children: _jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXXS, children: [_jsx(PhiColorFieldControl, { ...pickerTransaction, label: item.label, tokenKey: item.key, value: overridden ? readEffectiveTokenString(colorToken, item.key, fallback) : fallback, defaultValue: fallback, disabled: saving, customColors: customColorOptions, labels: colorPickerLabels, onChange: (value, tokenKey) => {
|
|
1792
1092
|
if (!tokenKey) {
|
|
1793
1093
|
return;
|
|
1794
1094
|
}
|
|
@@ -1823,8 +1123,9 @@ export function PhiBuilderBrandStyleControlsWidgetClient({ runtime, config, }) {
|
|
|
1823
1123
|
controlHeight: readEffectiveTokenNumber(styleTokenInput, "controlHeight", PHI_CONTROL_HEIGHTS.md),
|
|
1824
1124
|
controlHeightLG: readEffectiveTokenNumber(styleTokenInput, "controlHeightLG", PHI_CONTROL_HEIGHTS.lg),
|
|
1825
1125
|
};
|
|
1126
|
+
/** One row per size step: a label and the preset picker; Border Radius and Control Height share it. */
|
|
1127
|
+
const renderPresetSizeRows = (items, options) => (_jsx(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: items.map((item) => (_jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingSM, wrap: "nowrap", children: [_jsx(PhiTypographyControl, { style: { flex: `0 0 ${fieldLabelWidth}px` }, children: item.label }), _jsx(PhiPresetSizeControl, { disabled: saving, value: item.value, fallbackKey: item.fallbackPreset, options: options, onChange: (value) => updateToken({ [item.key]: value }) })] }, item.key))) }));
|
|
1826
1128
|
const wireframe = readEffectiveTokenBoolean(styleTokenInput, "wireframe", true);
|
|
1827
|
-
const remRootValue = state.draft.rem?.rootValue ?? 16;
|
|
1828
1129
|
const baseFontSize = readEffectiveTokenNumber(styleTokenInput, "fontSize", 12);
|
|
1829
1130
|
function updateToken(tokenPatch) {
|
|
1830
1131
|
publishDraft(mergeThemeToken(state.draft, tokenPatch));
|
|
@@ -1876,7 +1177,7 @@ export function PhiBuilderBrandStyleControlsWidgetClient({ runtime, config, }) {
|
|
|
1876
1177
|
},
|
|
1877
1178
|
})),
|
|
1878
1179
|
], [fontFamilies, resolvedCatalogueFamilies, siteFontAssets.options]);
|
|
1879
|
-
return (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.padding, style: { width: "100%", minWidth: 0, opacity: loading ? 0.65 : 1 }, children: [siteFontFaceCss ? (_jsx("style", { href: "phi-theme-font-picker-faces", precedence: "default", dangerouslySetInnerHTML: { __html: siteFontFaceCss } })) : null, _jsx(PhiCardControl, { size: "small", children: _jsx(PhiAccordionControl, { openSection: activeStyleSection, onOpenSectionChange: changeActiveStyleSection, sections: [
|
|
1180
|
+
return (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.padding, style: { width: "100%", minWidth: 0, opacity: loading ? 0.65 : 1 }, children: [siteFontFaceCss ? (_jsx("style", { href: "phi-theme-font-picker-faces", precedence: "default", dangerouslySetInnerHTML: { __html: siteFontFaceCss } })) : null, siteFontAssets.error ? (_jsx(PhiAlertControl, { level: "error", title: "The Site's own typefaces could not be read.", description: siteFontAssets.error })) : null, _jsx(PhiCardControl, { size: "small", children: _jsx(PhiAccordionControl, { openSection: activeStyleSection, onOpenSectionChange: changeActiveStyleSection, sections: [
|
|
1880
1181
|
{
|
|
1881
1182
|
key: "shapes",
|
|
1882
1183
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Shapes" }),
|
|
@@ -1899,20 +1200,20 @@ export function PhiBuilderBrandStyleControlsWidgetClient({ runtime, config, }) {
|
|
|
1899
1200
|
{
|
|
1900
1201
|
key: "radius",
|
|
1901
1202
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Border Radius" }),
|
|
1902
|
-
children: (
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1203
|
+
children: renderPresetSizeRows([
|
|
1204
|
+
{ key: "borderRadiusSM", label: "Small", value: radiusValues.borderRadiusSM, fallbackPreset: "xs" },
|
|
1205
|
+
{ key: "borderRadius", label: "Base", value: radiusValues.borderRadius, fallbackPreset: "sm" },
|
|
1206
|
+
{ key: "borderRadiusLG", label: "Large", value: radiusValues.borderRadiusLG, fallbackPreset: "base" },
|
|
1207
|
+
], PHI_STYLE_RADIUS_PRESET_OPTIONS),
|
|
1907
1208
|
},
|
|
1908
1209
|
{
|
|
1909
1210
|
key: "controlHeight",
|
|
1910
1211
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Control Height" }),
|
|
1911
|
-
children: (
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1212
|
+
children: renderPresetSizeRows([
|
|
1213
|
+
{ key: "controlHeightSM", label: "Small", value: controlHeightValues.controlHeightSM, fallbackPreset: "base" },
|
|
1214
|
+
{ key: "controlHeight", label: "Base", value: controlHeightValues.controlHeight, fallbackPreset: "md" },
|
|
1215
|
+
{ key: "controlHeightLG", label: "Large", value: controlHeightValues.controlHeightLG, fallbackPreset: "lg" },
|
|
1216
|
+
], PHI_STYLE_CONTROL_HEIGHT_PRESET_OPTIONS),
|
|
1916
1217
|
},
|
|
1917
1218
|
{
|
|
1918
1219
|
key: "fontFamily",
|
|
@@ -1924,7 +1225,7 @@ export function PhiBuilderBrandStyleControlsWidgetClient({ runtime, config, }) {
|
|
|
1924
1225
|
{
|
|
1925
1226
|
key: "fontSize",
|
|
1926
1227
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Base Font Size" }),
|
|
1927
|
-
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingSM, wrap: "nowrap", children: [_jsx(PhiTypographyControl, { style: { flex: `0 0 ${fieldLabelWidth}px` }, children: "
|
|
1228
|
+
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingSM, wrap: "nowrap", children: [_jsx(PhiTypographyControl, { style: { flex: `0 0 ${fieldLabelWidth}px` }, children: "Font size" }), _jsxs(PhiTypographyControl, { code: true, children: [baseFontSize, "px"] })] }), _jsx(PhiTypographyControl, { type: "secondary", children: "The seed every other type size is derived from." })] })),
|
|
1928
1229
|
},
|
|
1929
1230
|
{
|
|
1930
1231
|
key: "wireframe",
|
|
@@ -1970,30 +1271,9 @@ function mergeThemeBlockChoice(theme, part, block) {
|
|
|
1970
1271
|
return clearThemeAuthoredGround(withChoice);
|
|
1971
1272
|
return withChoice;
|
|
1972
1273
|
}
|
|
1973
|
-
/**
|
|
1974
|
-
* A Set decides all three parts, so it clears all three: the parts picked one by one, because a Set is
|
|
1975
|
-
* what somebody falls back on when they stop deciding each part, and the values authored on top of
|
|
1976
|
-
* them, for the same reason picking a single block clears its own. The Control shape belongs to the
|
|
1977
|
-
* style, so it goes with the style tokens.
|
|
1978
|
-
*/
|
|
1979
|
-
function mergeThemeSetChoice(theme, set) {
|
|
1980
|
-
return clearThemeAuthoredFonts(clearThemeAuthoredGround(clearThemeControlShape(clearThemeStyleTokens({
|
|
1981
|
-
...theme,
|
|
1982
|
-
blocks: { set: { key: set.key, version: set.version } },
|
|
1983
|
-
}))));
|
|
1984
|
-
}
|
|
1985
|
-
/** Every font slot an author set, so the Set's fonts block is what shows. */
|
|
1986
|
-
function clearThemeAuthoredFonts(theme) {
|
|
1987
|
-
return Object.fromEntries(Object.entries(theme).filter(([key]) => key !== "fonts"));
|
|
1988
|
-
}
|
|
1989
1274
|
function formatShapeLabel(shape) {
|
|
1990
1275
|
return shape.charAt(0).toUpperCase() + shape.slice(1);
|
|
1991
1276
|
}
|
|
1992
|
-
/** Every ground value an author set, in both modes, so the chosen block is what shows. */
|
|
1993
|
-
function clearThemeAuthoredGround(theme) {
|
|
1994
|
-
const root = Object.fromEntries(Object.entries(theme.root ?? {}).filter(([key]) => key !== "background" && key !== "chrome"));
|
|
1995
|
-
return { ...theme, root };
|
|
1996
|
-
}
|
|
1997
1277
|
/**
|
|
1998
1278
|
* Dropping the author's values for one surface, so the block below shows through again.
|
|
1999
1279
|
*
|
|
@@ -2026,16 +1306,6 @@ function clearThemeRootSurface(theme, surface, mode) {
|
|
|
2026
1306
|
function PhiBrandBlockResetButton({ blockTitle, disabled, onReset, }) {
|
|
2027
1307
|
return (_jsx(PhiButtonControl, { size: "small", style: { flexShrink: 0 }, disabled: disabled, onClick: onReset, label: `Follow ${blockTitle}` }));
|
|
2028
1308
|
}
|
|
2029
|
-
/**
|
|
2030
|
-
* Dropping every structural override, so the style block shows through again.
|
|
2031
|
-
*
|
|
2032
|
-
* Colour stays: the two tabs are two decisions, and somebody resetting the proportions did not ask to
|
|
2033
|
-
* lose the brand colour they picked. The record keeps them apart -- `palette` and `style` -- so taking
|
|
2034
|
-
* the one away never touches the other.
|
|
2035
|
-
*/
|
|
2036
|
-
function clearThemeStyleTokens(theme) {
|
|
2037
|
-
return omitThemeFields(theme, "style");
|
|
2038
|
-
}
|
|
2039
1309
|
/**
|
|
2040
1310
|
* The picker for one part of the Theme.
|
|
2041
1311
|
*
|
|
@@ -2229,27 +1499,20 @@ export function PhiBuilderBrandIdentityControlsWidgetClient({ runtime, config, }
|
|
|
2229
1499
|
"--phi-labeled-control-width": "100%",
|
|
2230
1500
|
}, children: [_jsx(PhiTypographyControl, { type: "secondary", children: showsWordmark
|
|
2231
1501
|
? _jsxs(_Fragment, { children: ["The Site name as it is set. One part per colour: a two-tone name is one word written in two. With no part at all the frame shows ", fallbackWordmark, "."] })
|
|
2232
|
-
: _jsx(_Fragment, { children: "The Brand is the Logo alone. The name is not drawn, and neither is the Eyebrow above it." }) }), _jsx(PhiSwitchControl, { label: "Show name", checked: showsWordmark, checkedLabel: "On", uncheckedLabel: "Off", onChange: (checked) => publishDraft(mergeThemeWordmarkShows(state.draft, checked)) }), showsWordmark && (_jsxs(_Fragment, { children: [editableWordmarkParts.map((part, index) => (_jsx(PhiLabeledControl, { label: `Part #${index + 1}`, fill: true, children: _jsxs(PhiFlexControl, { gap: clientToken.paddingXXS, align: "center", style: { width: "100%", minWidth: 0 }, children: [_jsx(PhiTextControl, { value: part.text, placeholder: index === 0 ? fallbackWordmark : "Part", ariaLabel: `Wordmark part ${index + 1}`, allowClear: false, onChange: (next) => updateWordmarkPart(index, { text: next ?? "" }) }), _jsx(PhiColorControl, { mode: "single", allowClear: true,
|
|
1502
|
+
: _jsx(_Fragment, { children: "The Brand is the Logo alone. The name is not drawn, and neither is the Eyebrow above it." }) }), _jsx(PhiSwitchControl, { label: "Show name", checked: showsWordmark, checkedLabel: "On", uncheckedLabel: "Off", onChange: (checked) => publishDraft(mergeThemeWordmarkShows(state.draft, checked)) }), showsWordmark && (_jsxs(_Fragment, { children: [editableWordmarkParts.map((part, index) => (_jsx(PhiLabeledControl, { label: `Part #${index + 1}`, fill: true, children: _jsxs(PhiFlexControl, { gap: clientToken.paddingXXS, align: "center", style: { width: "100%", minWidth: 0 }, children: [_jsx(PhiTextControl, { value: part.text, placeholder: index === 0 ? fallbackWordmark : "Part", ariaLabel: `Wordmark part ${index + 1}`, allowClear: false, onChange: (next) => updateWordmarkPart(index, { text: next ?? "" }) }), _jsx(PhiColorControl, { mode: "single", allowClear: true,
|
|
1503
|
+
// A part's row is narrow: the swatch says the colour, the value would overflow it.
|
|
1504
|
+
showText: false, value: part.color ?? null, presets: PHI_COLOR_PICKER_PRESETS, onChange: (next) => updateWordmarkPart(index, { color: next }) }), _jsx(PhiButtonControl, { type: "text", size: "small", danger: true, disabled: wordmarkParts.length === 0, icon: _jsx(PhiIcon, { name: "delete", size: "inherit" }), ariaLabel: "Remove this part of the Wordmark", onClick: () => {
|
|
2233
1505
|
setWordmarkPartKeys((current) => ({
|
|
2234
1506
|
...current,
|
|
2235
1507
|
keys: current.keys.filter((_, at) => at !== index),
|
|
2236
1508
|
}));
|
|
2237
1509
|
publishDraft(mergeThemeWordmarkParts(state.draft, editableWordmarkParts.filter((_, at) => at !== index)));
|
|
2238
|
-
} })] }) }, wordmarkPartKeys.keys[index] ?? `pending-${index}`))), _jsx(PhiLabeledControl, { label: " ", fill: true, children: _jsx(PhiButtonControl, { size: "small", label: "Add part", onClick: () => publishDraft(mergeThemeWordmarkParts(state.draft, [...editableWordmarkParts, { text: "" }])) }) }), _jsx(PhiDividerControl, { style: { marginBlock: clientToken.paddingXXS } }), _jsx(PhiLabeledControl, { label: "Weight", fill: true, children: _jsxs(PhiFlexControl, { gap: clientToken.paddingXS, align: "center", style: { width: "100%", minWidth: 0 }, children: [_jsx(PhiSelectControl, { ariaLabel: "Wordmark weight", style: { flex: "1 1 auto", minWidth: 0 }, value: String(brand.wordmark?.fontWeight ?? ""), options: [...PHI_THEME_WORDMARK_WEIGHT_OPTIONS], onChange: (next) => publishDraft(
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
wordmark: {
|
|
2245
|
-
...(brand.wordmark ?? {}),
|
|
2246
|
-
fontStyle: checked ? "italic" : null,
|
|
2247
|
-
},
|
|
2248
|
-
})) })] }) }), _jsx(PhiNumberControl, { label: "Tracking", prefix: "em", style: { width: "100%" }, value: readWordmarkLetterSpacingEm(brand.wordmark?.letterSpacing), step: 0.01, precision: 3, min: -0.2, max: 1, onChange: (next) => publishDraft(mergeThemeBrand(state.draft, {
|
|
2249
|
-
wordmark: {
|
|
2250
|
-
...(brand.wordmark ?? {}),
|
|
2251
|
-
letterSpacing: next == null ? null : `${next}em`,
|
|
2252
|
-
},
|
|
1510
|
+
} })] }) }, wordmarkPartKeys.keys[index] ?? `pending-${index}`))), _jsx(PhiLabeledControl, { label: " ", fill: true, children: _jsx(PhiButtonControl, { size: "small", label: "Add part", onClick: () => publishDraft(mergeThemeWordmarkParts(state.draft, [...editableWordmarkParts, { text: "" }])) }) }), _jsx(PhiDividerControl, { style: { marginBlock: clientToken.paddingXXS } }), _jsx(PhiLabeledControl, { label: "Weight", fill: true, children: _jsxs(PhiFlexControl, { gap: clientToken.paddingXS, align: "center", style: { width: "100%", minWidth: 0 }, children: [_jsx(PhiSelectControl, { ariaLabel: "Wordmark weight", style: { flex: "1 1 auto", minWidth: 0 }, value: String(brand.wordmark?.fontWeight ?? ""), options: [...PHI_THEME_WORDMARK_WEIGHT_OPTIONS], onChange: (next) => publishDraft(mergeThemeWordmark(state.draft, {
|
|
1511
|
+
fontWeight: next === "" ? null : Number(next),
|
|
1512
|
+
})) }), _jsx(PhiCheckboxControl, { checked: brand.wordmark?.fontStyle === "italic", label: "Italic", onChange: (checked) => publishDraft(mergeThemeWordmark(state.draft, {
|
|
1513
|
+
fontStyle: checked ? "italic" : null,
|
|
1514
|
+
})) })] }) }), _jsx(PhiNumberControl, { label: "Tracking", prefix: "em", style: { width: "100%" }, value: readWordmarkLetterSpacingEm(brand.wordmark?.letterSpacing), step: 0.01, precision: 3, min: -0.2, max: 1, onChange: (next) => publishDraft(mergeThemeWordmark(state.draft, {
|
|
1515
|
+
letterSpacing: next == null ? null : `${next}em`,
|
|
2253
1516
|
})) }), _jsx(PhiLabeledControl, { label: "Eyebrow", fill: true, children: _jsx(PhiTextControl, { value: brand.eyebrow ?? "", placeholder: "The small line above the name", ariaLabel: "Eyebrow", allowClear: false, onChange: (next) => publishDraft(mergeThemeBrand(state.draft, {
|
|
2254
1517
|
eyebrow: next ?? "",
|
|
2255
1518
|
})) }) })] }))] })),
|
|
@@ -2305,12 +1568,12 @@ export function PhiBuilderBrandBackgroundControlsWidgetClient({ runtime, config,
|
|
|
2305
1568
|
{
|
|
2306
1569
|
key: "root",
|
|
2307
1570
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Root Background" }),
|
|
2308
|
-
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", justify: "space-between", gap: clientToken.paddingXS, children: [_jsxs(PhiTypographyControl, { type: "secondary", children: [modeLabel, ". One layer behind the whole Site, fixed to the viewport."] }), _jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingXXS, style: { flexShrink: 0 }, children: [_jsx(PhiBrandBlockResetButton, { disabled: state.draft.root?.background?.[mode] == null, blockTitle: composition.ground.title, onReset: () => publishDraft(clearThemeRootSurface(state.draft, "background", mode)) }), _jsx(PhiBrandCopyModeButton, { mode: mode, disabled: isSamePhiBackgroundConfig(rootBackground, otherRootBackground), onCopy: () => publishDraft(
|
|
1571
|
+
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", justify: "space-between", gap: clientToken.paddingXS, children: [_jsxs(PhiTypographyControl, { type: "secondary", children: [modeLabel, ". One layer behind the whole Site, fixed to the viewport."] }), _jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingXXS, style: { flexShrink: 0 }, children: [_jsx(PhiBrandBlockResetButton, { disabled: state.draft.root?.background?.[mode] == null, blockTitle: composition.ground.title, onReset: () => publishDraft(clearThemeRootSurface(state.draft, "background", mode)) }), _jsx(PhiBrandCopyModeButton, { mode: mode, disabled: isSamePhiBackgroundConfig(rootBackground, otherRootBackground), onCopy: () => publishDraft(mergeThemeRootSurface(state.draft, "background", otherMode, rootBackground)) })] })] }), _jsx(PhiBackgroundControl, { value: rootBackground, motionModes: PHI_ROOT_BACKGROUND_MOTION_MODES, filters: PHI_ROOT_BACKGROUND_FILTERS, imageSourceKinds: PHI_ROOT_BACKGROUND_IMAGE_SOURCE_KINDS, renderMediaPicker: renderPhiThemeRootBackgroundMediaPicker, editTransaction: editTransaction, onChange: (value) => publishDraft(mergeThemeRootSurface(state.draft, "background", mode, value)) }, mode)] })),
|
|
2309
1572
|
},
|
|
2310
1573
|
{
|
|
2311
1574
|
key: "chrome",
|
|
2312
1575
|
label: _jsx(PhiTypographyControl, { strong: true, children: "Chrome Overlay" }),
|
|
2313
|
-
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", justify: "space-between", gap: clientToken.paddingXS, children: [_jsxs(PhiTypographyControl, { type: "secondary", children: [modeLabel, ". Shared by the Header, Sider and Footer Regions. Content and Hero never take it, and a Region that authors its own Background or Effect paints over it."] }), _jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingXXS, style: { flexShrink: 0 }, children: [_jsx(PhiBrandBlockResetButton, { disabled: state.draft.root?.chrome?.[mode] == null, blockTitle: composition.ground.title, onReset: () => publishDraft(clearThemeRootSurface(state.draft, "chrome", mode)) }), _jsx(PhiBrandCopyModeButton, { mode: mode, disabled: isSamePhiBackgroundConfig(chromeOverlay, otherChromeOverlay), onCopy: () => publishDraft(
|
|
1576
|
+
children: (_jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingXS, children: [_jsxs(PhiFlexControl, { align: "center", justify: "space-between", gap: clientToken.paddingXS, children: [_jsxs(PhiTypographyControl, { type: "secondary", children: [modeLabel, ". Shared by the Header, Sider and Footer Regions. Content and Hero never take it, and a Region that authors its own Background or Effect paints over it."] }), _jsxs(PhiFlexControl, { align: "center", gap: clientToken.paddingXXS, style: { flexShrink: 0 }, children: [_jsx(PhiBrandBlockResetButton, { disabled: state.draft.root?.chrome?.[mode] == null, blockTitle: composition.ground.title, onReset: () => publishDraft(clearThemeRootSurface(state.draft, "chrome", mode)) }), _jsx(PhiBrandCopyModeButton, { mode: mode, disabled: isSamePhiBackgroundConfig(chromeOverlay, otherChromeOverlay), onCopy: () => publishDraft(mergeThemeRootSurface(state.draft, "chrome", otherMode, chromeOverlay)) })] })] }), _jsx(PhiBackgroundControl, { value: chromeOverlay, motionModes: PHI_SHELL_CHROME_OVERLAY_MOTION_MODES, filters: PHI_SHELL_CHROME_OVERLAY_FILTERS, baseKinds: PHI_SHELL_CHROME_OVERLAY_BASE_KINDS, imageSourceKinds: PHI_SHELL_CHROME_OVERLAY_IMAGE_SOURCE_KINDS, renderMediaPicker: renderPhiThemeRootBackgroundMediaPicker, editTransaction: editTransaction, onChange: (value) => publishDraft(mergeThemeRootSurface(state.draft, "chrome", mode, value)) }, `chrome-${mode}`)] })),
|
|
2314
1577
|
},
|
|
2315
1578
|
{
|
|
2316
1579
|
key: "shadow",
|
|
@@ -2391,7 +1654,7 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2391
1654
|
* and the parts nobody chose are the block's. Resolving here rather than in the state keeps the draft
|
|
2392
1655
|
* that travels back to the Controller free of anything that was only worked out for display.
|
|
2393
1656
|
*/
|
|
2394
|
-
const previewThemeResolved = resolvePhiThemeRuntimePayload(previewTheme, themeBlocks).theme;
|
|
1657
|
+
const previewThemeResolved = useMemo(() => resolvePhiThemeRuntimePayload(previewTheme, themeBlocks).theme, [previewTheme, themeBlocks]);
|
|
2395
1658
|
const [hoveredStatusKey, setHoveredStatusKey] = useState(null);
|
|
2396
1659
|
const [previewTableSearch, setPreviewTableSearch] = useState("");
|
|
2397
1660
|
/*
|
|
@@ -2413,15 +1676,22 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2413
1676
|
serif: previewFontStacks.serif.stack,
|
|
2414
1677
|
display: previewFontStacks.display.stack,
|
|
2415
1678
|
});
|
|
2416
|
-
|
|
1679
|
+
/*
|
|
1680
|
+
* The preview's tokens, derived once per draft and mode. The preview renders on every picker step,
|
|
1681
|
+
* on every hover over a status sample and on every keystroke in its sample field, and each render used
|
|
1682
|
+
* to run the colour resolution, the alias derivation and the component shaping again -- and handed
|
|
1683
|
+
* `PhiThemeScopeControl` a new token object, which wrote a new set of CSS variables each time.
|
|
1684
|
+
*/
|
|
1685
|
+
const previewBodyFontStack = previewFontStacks.body.stack;
|
|
1686
|
+
const previewMonoFontStack = previewFontStacks.mono.stack;
|
|
1687
|
+
const previewEffectiveToken = useMemo(() => resolvePhiAntdAliasTokens(mode, {
|
|
2417
1688
|
...buildPhiEffectiveNonColorThemeTokens(previewThemeResolved),
|
|
2418
1689
|
...resolvePhiThemeColorTokens(previewPreset, previewThemeResolved.palette, mode),
|
|
2419
1690
|
...(previewThemeResolved.style?.token ?? {}),
|
|
2420
1691
|
// The draft's lettering, applied as the root theme applies the Site's: body text and code.
|
|
2421
|
-
...(
|
|
2422
|
-
...(
|
|
2423
|
-
};
|
|
2424
|
-
const previewEffectiveToken = resolvePhiAntdAliasTokens(mode, previewTokenInput);
|
|
1692
|
+
...(previewBodyFontStack ? { fontFamily: previewBodyFontStack } : {}),
|
|
1693
|
+
...(previewMonoFontStack ? { fontFamilyCode: previewMonoFontStack } : {}),
|
|
1694
|
+
}), [mode, previewBodyFontStack, previewMonoFontStack, previewPreset, previewThemeResolved]);
|
|
2425
1695
|
const columns = [
|
|
2426
1696
|
{ title: "Name", key: "name", fieldPath: "name", sizing: { mode: "fill" } },
|
|
2427
1697
|
{ title: "Status", key: "status", fieldPath: "status", sizing: { mode: "content" }, render: (value) => _jsx(PhiTagControl, { color: "processing", children: String(value) }) },
|
|
@@ -2450,23 +1720,13 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2450
1720
|
* identity as well is part of it: two shapes with otherwise equal tokens would hash to one key and
|
|
2451
1721
|
* serve each other from cache.
|
|
2452
1722
|
*/
|
|
2453
|
-
const previewControlShape =
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
mode,
|
|
2461
|
-
token: previewEffectiveToken,
|
|
2462
|
-
components: previewShapedComponents,
|
|
2463
|
-
}),
|
|
2464
|
-
},
|
|
2465
|
-
token: {
|
|
2466
|
-
...previewEffectiveToken,
|
|
2467
|
-
},
|
|
2468
|
-
components: previewShapedComponents,
|
|
2469
|
-
};
|
|
1723
|
+
const { previewControlShape, previewShapedComponents } = useMemo(() => {
|
|
1724
|
+
const previewControlShape = resolvePhiControlShape(previewThemeResolved.shape?.controls);
|
|
1725
|
+
return {
|
|
1726
|
+
previewControlShape,
|
|
1727
|
+
previewShapedComponents: applyPhiSurfaceShapeComponentTokens(applyPhiControlShapeComponentTokens({ ...(applyPhiButtonShadowComponentTokens(previewThemeResolved.components, previewThemeResolved.buttons, mode) ?? {}) }, previewControlShape, previewEffectiveToken), previewControlShape, previewEffectiveToken),
|
|
1728
|
+
};
|
|
1729
|
+
}, [mode, previewEffectiveToken, previewThemeResolved]);
|
|
2470
1730
|
const previewCardBackground = readEffectiveTokenString(previewEffectiveToken, "colorBgContainer", mode === "dark" ? "#141414" : "#ffffff");
|
|
2471
1731
|
const previewSurfaceBackground = readEffectiveTokenString(previewEffectiveToken, "colorBgLayout", mode === "dark" ? "#000000" : "#f5f5f5");
|
|
2472
1732
|
/*
|
|
@@ -2491,48 +1751,30 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2491
1751
|
const previewSwatchColor = readEffectiveTokenString(previewEffectiveToken, "colorPrimary", "#1677ff");
|
|
2492
1752
|
const previewLinkHoverColor = readEffectiveTokenString(previewEffectiveToken, "colorLinkHover", previewLinkColor);
|
|
2493
1753
|
const previewLinkActiveColor = readEffectiveTokenString(previewEffectiveToken, "colorLinkActive", previewLinkColor);
|
|
1754
|
+
/*
|
|
1755
|
+
* Four status colours, one shape: text, ground and border, each with its hover. Info's border falls
|
|
1756
|
+
* back to the link colour where the others fall back to their own base, which is how it always was.
|
|
1757
|
+
*/
|
|
2494
1758
|
const statusPreviewItems = [
|
|
2495
|
-
{
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
},
|
|
2515
|
-
{
|
|
2516
|
-
key: "warning",
|
|
2517
|
-
label: "Warning",
|
|
2518
|
-
color: readEffectiveTokenString(previewEffectiveToken, "colorWarningText", readEffectiveTokenString(previewEffectiveToken, "colorWarning", "#faad14")),
|
|
2519
|
-
background: readEffectiveTokenString(previewEffectiveToken, "colorWarningBg", previewCardBackground),
|
|
2520
|
-
border: readEffectiveTokenString(previewEffectiveToken, "colorWarningBorder", readEffectiveTokenString(previewEffectiveToken, "colorWarning", "#faad14")),
|
|
2521
|
-
hoverColor: readEffectiveTokenString(previewEffectiveToken, "colorWarningTextHover", readEffectiveTokenString(previewEffectiveToken, "colorWarningHover", "#ffc53d")),
|
|
2522
|
-
hoverBackground: readEffectiveTokenString(previewEffectiveToken, "colorWarningBgHover", previewCardBackground),
|
|
2523
|
-
hoverBorder: readEffectiveTokenString(previewEffectiveToken, "colorWarningBorderHover", readEffectiveTokenString(previewEffectiveToken, "colorWarningHover", "#ffc53d")),
|
|
2524
|
-
},
|
|
2525
|
-
{
|
|
2526
|
-
key: "error",
|
|
2527
|
-
label: "Error",
|
|
2528
|
-
color: readEffectiveTokenString(previewEffectiveToken, "colorErrorText", readEffectiveTokenString(previewEffectiveToken, "colorError", "#ff4d4f")),
|
|
2529
|
-
background: readEffectiveTokenString(previewEffectiveToken, "colorErrorBg", previewCardBackground),
|
|
2530
|
-
border: readEffectiveTokenString(previewEffectiveToken, "colorErrorBorder", readEffectiveTokenString(previewEffectiveToken, "colorError", "#ff4d4f")),
|
|
2531
|
-
hoverColor: readEffectiveTokenString(previewEffectiveToken, "colorErrorTextHover", readEffectiveTokenString(previewEffectiveToken, "colorErrorHover", "#ff7875")),
|
|
2532
|
-
hoverBackground: readEffectiveTokenString(previewEffectiveToken, "colorErrorBgHover", previewCardBackground),
|
|
2533
|
-
hoverBorder: readEffectiveTokenString(previewEffectiveToken, "colorErrorBorderHover", readEffectiveTokenString(previewEffectiveToken, "colorErrorHover", "#ff7875")),
|
|
2534
|
-
},
|
|
2535
|
-
];
|
|
1759
|
+
{ key: "info", label: "Info", prefix: "colorInfo", base: "#1677ff", hover: "#4096ff", borderFallback: previewLinkColor },
|
|
1760
|
+
{ key: "success", label: "Success", prefix: "colorSuccess", base: "#52c41a", hover: "#73d13d" },
|
|
1761
|
+
{ key: "warning", label: "Warning", prefix: "colorWarning", base: "#faad14", hover: "#ffc53d" },
|
|
1762
|
+
{ key: "error", label: "Error", prefix: "colorError", base: "#ff4d4f", hover: "#ff7875" },
|
|
1763
|
+
].map(({ key, label, prefix, base, hover, ...item }) => {
|
|
1764
|
+
const read = (suffix, fallback) => readEffectiveTokenString(previewEffectiveToken, `${prefix}${suffix}`, fallback);
|
|
1765
|
+
const baseColor = read("", base);
|
|
1766
|
+
const hoverColor = read("Hover", hover);
|
|
1767
|
+
return {
|
|
1768
|
+
key,
|
|
1769
|
+
label,
|
|
1770
|
+
color: read("Text", baseColor),
|
|
1771
|
+
background: read("Bg", previewCardBackground),
|
|
1772
|
+
border: read("Border", "borderFallback" in item ? item.borderFallback : baseColor),
|
|
1773
|
+
hoverColor: read("TextHover", hoverColor),
|
|
1774
|
+
hoverBackground: read("BgHover", previewCardBackground),
|
|
1775
|
+
hoverBorder: read("BorderHover", hoverColor),
|
|
1776
|
+
};
|
|
1777
|
+
});
|
|
2536
1778
|
const fontPreviewItems = [
|
|
2537
1779
|
{
|
|
2538
1780
|
key: "body",
|
|
@@ -2605,7 +1847,7 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2605
1847
|
},
|
|
2606
1848
|
];
|
|
2607
1849
|
const wireframeEnabled = readEffectiveTokenBoolean(previewEffectiveToken, "wireframe", true);
|
|
2608
|
-
return (_jsxs(
|
|
1850
|
+
return (_jsxs(PhiThemeScopeControl, { scope: "builder-theme-preview", mode: mode, token: previewEffectiveToken, components: previewShapedComponents, children: [previewFontStacks.faceCss ? (_jsx("style", { href: "phi-theme-preview-faces", precedence: "default", dangerouslySetInnerHTML: { __html: previewFontStacks.faceCss } })) : null, _jsx(PhiCardControl, { size: "small", style: {
|
|
2609
1851
|
width: "100%",
|
|
2610
1852
|
background: previewCardBackground,
|
|
2611
1853
|
color: previewTextColor,
|
|
@@ -2651,8 +1893,9 @@ export function PhiBuilderBrandThemePreviewWidgetClient({ runtime, }) {
|
|
|
2651
1893
|
background: previewCardBackground,
|
|
2652
1894
|
padding: clientToken.paddingXS,
|
|
2653
1895
|
}, children: [_jsx(PhiTypographyControl, { type: "secondary", style: { display: "block" }, children: item.label }), _jsx(PhiTypographyControl, { style: { display: "block", color: previewTextColor, fontFamily: item.family }, children: item.sample }), item.value ? (_jsx(PhiTypographyControl, { type: "secondary", style: { display: "block", fontFamily: item.family }, children: item.value })) : null] }, item.key))) })] }), _jsx(PhiFlexControl, { gap: clientToken.padding, wrap: "wrap", children: _jsxs(PhiFlexControl, { vertical: true, gap: clientToken.paddingSM, style: { flex: "1 1 260px", minWidth: 0 }, children: [_jsx(PhiTypographyControl, { presentation: "title", level: 5, style: { margin: 0, color: previewTextColor }, children: "Border Radius" }), _jsx(PhiFlexControl, { gap: clientToken.paddingXS, wrap: "wrap", children: radiusPreviewItems.map((item) => (_jsxs("div", { style: {
|
|
2654
|
-
|
|
2655
|
-
|
|
1896
|
+
// The tokens are numbers; `calc(40 * 2)` is no length, and the sample lost its size.
|
|
1897
|
+
width: clientToken.controlHeightLG * 2,
|
|
1898
|
+
minHeight: clientToken.controlHeight * 1.25,
|
|
2656
1899
|
border: `1px solid ${readEffectiveTokenString(previewEffectiveToken, "colorBorder", "rgba(0,0,0,0.15)")}`,
|
|
2657
1900
|
borderRadius: item.value,
|
|
2658
1901
|
background: previewCardBackground,
|