@phis/ui 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -2009
- package/cms/plugins.d.ts +1 -2
- package/cms/plugins.js +0 -1
- package/cms.d.ts +2 -2
- package/cms.js +2 -2
- package/components/account/avatar-client.js +12 -17
- package/components/calendar/gregory-calendar-adapter-client.js +15 -13
- package/components/cms/clients/phi-cms-node-visibility-gate.d.ts +19 -0
- package/components/cms/clients/phi-cms-node-visibility-gate.js +1 -0
- package/components/cms/phi-cms-area-access-guard.d.ts +21 -0
- package/components/cms/phi-cms-area-access-guard.js +48 -0
- package/components/cms/phi-cms-area-render-scope.d.ts +6 -65
- package/components/cms/phi-cms-area-render-scope.js +8 -7
- package/components/cms/phi-cms-error-page.d.ts +1 -1
- package/components/cms/phi-cms-error-page.js +14 -12
- package/components/cms/phi-cms-layout-renderer.d.ts +54 -2
- package/components/cms/phi-cms-layout-renderer.js +179 -74
- package/components/cms/phi-cms-page-redirect.js +10 -5
- package/components/cms/phi-cms-page-renderer.js +2 -1
- package/components/cms/phi-cms-render-diagnostic-client.js +3 -3
- package/components/cms/phi-cms-root-layout.js +52 -25
- package/components/cms/phi-cms-root-page.js +30 -30
- package/components/cms/phi-cms-root-slot-page.js +16 -19
- package/components/cms/phi-cms-runtime-registry.d.ts +20 -2
- package/components/cms/phi-cms-runtime-registry.js +12 -0
- package/components/cms/phi-hard-forward.d.ts +21 -0
- package/components/cms/phi-hard-forward.js +26 -0
- package/components/controls/phi-accordion-control.d.ts +30 -0
- package/components/controls/phi-accordion-control.js +17 -0
- package/components/controls/phi-alert-control.d.ts +1 -1
- package/components/controls/phi-alert-control.js +12 -2
- package/components/controls/phi-avatar-control.d.ts +31 -0
- package/components/controls/phi-avatar-control.js +26 -0
- package/components/controls/phi-background-control.js +15 -9
- package/components/controls/phi-border-control.js +3 -2
- package/components/controls/phi-brand-control.d.ts +39 -8
- package/components/controls/phi-brand-control.js +71 -15
- package/components/controls/phi-builder-insert-picker-control-labels.d.ts +2 -0
- package/components/controls/phi-builder-insert-picker-control-labels.js +1 -0
- package/components/controls/phi-builder-insert-picker-control.js +97 -35
- package/components/controls/phi-button-control.d.ts +19 -2
- package/components/controls/phi-button-control.js +38 -7
- package/components/controls/phi-card-control.d.ts +61 -0
- package/components/controls/phi-card-control.js +12 -0
- package/components/controls/phi-checkbox-group-control.js +4 -7
- package/components/controls/phi-collection-header-control.js +3 -9
- package/components/controls/phi-collection-view-control.d.ts +1 -0
- package/components/controls/phi-collection-view-control.js +3 -3
- package/components/controls/phi-color-control.js +29 -13
- package/components/controls/phi-color-field-control.d.ts +38 -0
- package/components/controls/phi-color-field-control.js +32 -0
- package/components/controls/phi-compact-group-control.d.ts +38 -0
- package/components/controls/phi-compact-group-control.js +6 -0
- package/components/controls/phi-confirm-control.js +2 -14
- package/components/controls/phi-confirm-dialog.d.ts +32 -0
- package/components/controls/phi-confirm-dialog.js +79 -0
- package/components/controls/phi-control-option-content.d.ts +16 -1
- package/components/controls/phi-control-option-content.js +26 -10
- package/components/controls/phi-control-options.d.ts +1 -69
- package/components/controls/phi-control-options.js +6 -112
- package/components/controls/phi-description-list-control.d.ts +43 -0
- package/components/controls/phi-description-list-control.js +28 -0
- package/components/controls/phi-description-tooltip-icon.d.ts +11 -2
- package/components/controls/phi-description-tooltip-icon.js +15 -2
- package/components/controls/phi-dialog-control.d.ts +76 -0
- package/components/controls/phi-dialog-control.js +15 -0
- package/components/controls/phi-dimension-control.js +7 -1
- package/components/controls/phi-divider-control.d.ts +14 -0
- package/components/controls/phi-divider-control.js +6 -0
- package/components/controls/phi-drawer-control-adapter.d.ts +2 -0
- package/components/controls/phi-drawer-control-adapter.js +75 -0
- package/components/controls/phi-drawer-control.d.ts +9 -2
- package/components/controls/phi-drawer-control.js +18 -54
- package/components/controls/phi-dropdown-control.js +3 -4
- package/components/controls/phi-empty-control.d.ts +28 -0
- package/components/controls/phi-empty-control.js +6 -0
- package/components/controls/phi-entry-list-control.d.ts +46 -0
- package/components/controls/phi-entry-list-control.js +17 -0
- package/components/controls/phi-expand-indicator.js +1 -2
- package/components/controls/phi-file-drop-control.d.ts +41 -0
- package/components/controls/phi-file-drop-control.js +10 -0
- package/components/controls/phi-flex-control.d.ts +20 -0
- package/components/controls/phi-flex-control.js +6 -0
- package/components/controls/phi-form-control.d.ts +5 -0
- package/components/controls/phi-form-control.js +120 -31
- package/components/controls/phi-geometry-control.js +35 -22
- package/components/controls/phi-hover-text.d.ts +12 -0
- package/components/controls/phi-hover-text.js +23 -0
- package/components/controls/phi-icon-picker-control.d.ts +1 -1
- package/components/controls/phi-icon-picker-control.js +17 -5
- package/components/controls/phi-inline-text-editor.d.ts +43 -0
- package/components/controls/phi-inline-text-editor.js +62 -0
- package/components/controls/phi-labeled-control.d.ts +10 -0
- package/components/controls/phi-labeled-control.js +14 -4
- package/components/controls/phi-length-control.js +11 -3
- package/components/controls/phi-mask-picker-control.js +3 -5
- package/components/controls/phi-media-asset-tile-control.d.ts +8 -1
- package/components/controls/phi-media-asset-tile-control.js +16 -17
- package/components/controls/phi-media-picker-control.js +3 -2
- package/components/controls/phi-menu-control.d.ts +15 -1
- package/components/controls/phi-menu-control.js +4 -1
- package/components/controls/phi-modal-control-adapter.d.ts +2 -0
- package/components/controls/phi-modal-control-adapter.js +160 -0
- package/components/controls/phi-modal-control.d.ts +15 -4
- package/components/controls/phi-modal-control.js +22 -128
- package/components/controls/phi-multi-select-control.d.ts +3 -1
- package/components/controls/phi-multi-select-control.js +2 -2
- package/components/controls/phi-name-control.d.ts +33 -0
- package/components/controls/phi-name-control.js +6 -0
- package/components/controls/phi-number-control.d.ts +3 -1
- package/components/controls/phi-number-control.js +8 -2
- package/components/controls/phi-overlay-control-contract.d.ts +36 -1
- package/components/controls/phi-overlay-control-contract.js +50 -0
- package/components/controls/phi-padding-control.js +20 -9
- package/components/controls/phi-pagination-control.d.ts +8 -1
- package/components/controls/phi-pagination-control.js +2 -2
- package/components/controls/phi-picker-control-contract.d.ts +2 -0
- package/components/controls/phi-picker-control-contract.js +3 -2
- package/components/controls/phi-preset-size-control.js +2 -2
- package/components/controls/phi-progress-control.d.ts +15 -0
- package/components/controls/phi-progress-control.js +6 -0
- package/components/controls/phi-qr-code-control.d.ts +13 -0
- package/components/controls/phi-qr-code-control.js +6 -0
- package/components/controls/phi-radio-group-control.js +4 -7
- package/components/controls/phi-select-control.d.ts +3 -1
- package/components/controls/phi-select-control.js +2 -2
- package/components/controls/phi-skeleton-control.d.ts +52 -0
- package/components/controls/phi-skeleton-control.js +44 -0
- package/components/controls/phi-spin-control.d.ts +18 -0
- package/components/controls/phi-spin-control.js +6 -0
- package/components/controls/phi-statistic-control.d.ts +14 -0
- package/components/controls/phi-statistic-control.js +6 -0
- package/components/controls/phi-switch-control.d.ts +7 -3
- package/components/controls/phi-switch-control.js +2 -2
- package/components/controls/phi-table-control.d.ts +7 -1
- package/components/controls/phi-table-control.js +90 -33
- package/components/controls/phi-tag-control.d.ts +19 -1
- package/components/controls/phi-tag-control.js +5 -2
- package/components/controls/phi-text-control.d.ts +5 -1
- package/components/controls/phi-text-control.js +4 -3
- package/components/controls/phi-toolbar-control.js +12 -3
- package/components/controls/phi-tree-control.js +10 -7
- package/components/controls/phi-tree-select-control.d.ts +56 -0
- package/components/controls/phi-tree-select-control.js +69 -0
- package/components/controls/phi-typography-control-adapter.d.ts +2 -0
- package/components/controls/phi-typography-control-adapter.js +40 -0
- package/components/controls/phi-typography-control.d.ts +33 -0
- package/components/controls/phi-typography-control.js +56 -0
- package/components/controls/phi-video-embed-control.d.ts +50 -0
- package/components/controls/phi-video-embed-control.js +87 -0
- package/components/forms/auth-admin-settings-labels.d.ts +8 -3
- package/components/forms/auth-admin-settings-labels.js +16 -4
- package/components/forms/choice-form-field-controls.d.ts +5 -0
- package/components/forms/choice-form-field-controls.js +15 -0
- package/components/forms/compound-form-controls.js +1 -5
- package/components/forms/datetime-form-control.js +2 -1
- package/components/forms/extended-form-field-controls.d.ts +2 -0
- package/components/forms/extended-form-field-controls.js +19 -1
- package/components/forms/form-descriptor-contract.d.ts +65 -320
- package/components/forms/form-descriptor-contract.js +82 -435
- package/components/forms/form-descriptor-runtime-client.d.ts +1 -1
- package/components/forms/form-descriptor-runtime-client.js +175 -90
- package/components/forms/form-guard-client.d.ts +3 -3
- package/components/forms/form-guard-client.js +7 -5
- package/components/forms/form-provider-contract.d.ts +71 -625
- package/components/forms/form-provider-contract.js +105 -70
- package/components/forms/form-provider-registry.d.ts +7 -2
- package/components/forms/form-registry.d.ts +36 -22
- package/components/forms/form-registry.js +39 -1
- package/components/forms/form-relay-area.d.ts +14 -0
- package/components/forms/form-relay-area.js +24 -0
- package/components/forms/form-resolution.js +2 -4
- package/components/forms/form-widget-config.d.ts +57 -0
- package/components/forms/form-widget-config.js +122 -0
- package/components/forms/phi-form-widget-frame.d.ts +51 -13
- package/components/forms/phi-form-widget-frame.js +90 -16
- package/components/forms/phi-form-widget.d.ts +15 -0
- package/components/forms/phi-form-widget.js +95 -0
- package/components/forms/runtime-form-client.js +4 -6
- package/components/forms/runtime-form-controller-definition.d.ts +1 -1
- package/components/forms/runtime-form-controller-mount.js +30 -15
- package/components/forms/runtime-form-controller-plugin.d.ts +1 -1
- package/components/forms/runtime-form-controller-requirement.d.ts +1 -1
- package/components/forms/runtime-form-state.js +5 -7
- package/components/forms/shared-form-descriptors.d.ts +175 -0
- package/components/forms/shared-form-descriptors.js +158 -0
- package/components/forms/shared-form-ids.d.ts +18 -0
- package/components/forms/shared-form-ids.js +18 -0
- package/components/forms/shared-form-loaders.d.ts +20 -0
- package/components/forms/shared-form-loaders.js +31 -0
- package/components/forms/shared-form-provider-registry.js +134 -117
- package/components/forms/site-locales-config.d.ts +18 -0
- package/components/forms/site-locales-config.js +35 -0
- package/components/forms/storage-size.d.ts +36 -0
- package/components/forms/storage-size.js +46 -0
- package/components/forms/upload-form-control.d.ts +24 -0
- package/components/forms/upload-form-control.js +126 -0
- package/components/layouts/clients/phi-base-layout-client.d.ts +3 -12
- package/components/layouts/clients/phi-base-layout-client.js +5 -165
- package/components/layouts/clients/phi-carousel-layout-client.d.ts +1 -2
- package/components/layouts/clients/phi-carousel-layout-client.js +28 -23
- package/components/layouts/clients/phi-collapsible-layout-client.d.ts +0 -3
- package/components/layouts/clients/phi-collapsible-layout-client.js +125 -49
- package/components/layouts/clients/phi-content-layout-client.d.ts +7 -5
- package/components/layouts/clients/phi-content-layout-client.js +3 -4
- package/components/layouts/clients/phi-flex-layout-client.js +21 -7
- package/components/layouts/clients/phi-flex-vertical-layout-client.js +23 -6
- package/components/layouts/clients/phi-grid-layout-client.js +112 -115
- package/components/layouts/clients/phi-layout-anchored-overlay.d.ts +16 -0
- package/components/layouts/clients/phi-layout-anchored-overlay.js +29 -24
- package/components/layouts/clients/phi-sequence-slot-editor.d.ts +15 -3
- package/components/layouts/clients/phi-sequence-slot-editor.js +7 -20
- package/components/layouts/clients/phi-split-card-layout-client.d.ts +1 -1
- package/components/layouts/clients/phi-split-card-layout-client.js +25 -13
- package/components/layouts/clients/phi-stack-layout-client.d.ts +2 -2
- package/components/layouts/clients/phi-stack-layout-client.js +72 -26
- package/components/layouts/clients/phi-three-column-layout-client.d.ts +6 -4
- package/components/layouts/clients/phi-three-column-layout-client.js +40 -26
- package/components/layouts/layout-definitions.d.ts +184 -40
- package/components/layouts/layout-definitions.js +148 -28
- package/components/layouts/phi-base-layout.d.ts +1 -1
- package/components/layouts/phi-base-layout.js +12 -39
- package/components/layouts/phi-carousel-layout.js +1 -1
- package/components/layouts/phi-carousel-pages.d.ts +28 -0
- package/components/layouts/phi-carousel-pages.js +53 -0
- package/components/layouts/phi-collapsible-layout.js +1 -1
- package/components/layouts/phi-grid-contract.d.ts +83 -1
- package/components/layouts/phi-grid-contract.js +138 -10
- package/components/layouts/phi-grid-layout.js +1 -1
- package/components/layouts/phi-layout-contract.d.ts +156 -18
- package/components/layouts/phi-layout-contract.js +305 -51
- package/components/layouts/phi-layout-slot-state.d.ts +0 -1
- package/components/layouts/phi-layout-slot-state.js +0 -8
- package/components/layouts/phi-layout-view-model.d.ts +1 -1
- package/components/layouts/phi-layout-view-model.js +2 -1
- package/components/layouts/phi-masonry-layout.js +44 -9
- package/components/layouts/phi-stack-layout.js +1 -1
- package/components/layouts/phi-structure-region-layout.js +4 -3
- package/components/layouts/plugins/carousel-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/carousel-layout-plugin.js +3 -4
- package/components/layouts/plugins/collapsible-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/collapsible-layout-plugin.js +3 -4
- package/components/layouts/plugins/content-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/content-layout-plugin.js +3 -3
- package/components/layouts/plugins/flex-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/flex-layout-plugin.js +3 -4
- package/components/layouts/plugins/flex-vertical-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/flex-vertical-layout-plugin.js +3 -4
- package/components/layouts/plugins/grid-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/grid-layout-plugin.js +2 -4
- package/components/layouts/plugins/masonry-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/masonry-layout-plugin.js +1 -3
- package/components/layouts/plugins/page-region-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/page-region-layout-plugin.js +0 -2
- package/components/layouts/plugins/split-card-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/split-card-layout-plugin.js +2 -4
- package/components/layouts/plugins/stack-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/stack-layout-plugin.js +3 -4
- package/components/layouts/plugins/structure-region-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/structure-region-layout-plugin.js +0 -2
- package/components/layouts/plugins/three-column-layout-plugin.d.ts +0 -1
- package/components/layouts/plugins/three-column-layout-plugin.js +2 -4
- package/components/layouts/stack-signals.d.ts +0 -1
- package/components/layouts/stack-signals.js +0 -1
- package/components/layouts/use-phi-slot-sequence.d.ts +31 -3
- package/components/layouts/use-phi-slot-sequence.js +32 -12
- package/components/media/asset-collection-runtime.d.ts +3 -2
- package/components/media/asset-collection-runtime.js +9 -11
- package/components/media/background-asset-projection.js +3 -5
- package/components/media/label-sets/media.js +2 -0
- package/components/media/media-folder-options.d.ts +18 -0
- package/components/media/media-folder-options.js +76 -0
- package/components/media/media-settings-labels.d.ts +4 -1
- package/components/media/media-settings-labels.js +23 -16
- package/components/media/media-upload-digest.d.ts +38 -0
- package/components/media/media-upload-digest.js +38 -0
- package/components/media/media-upload-flow.d.ts +98 -1
- package/components/media/media-upload-flow.js +301 -8
- package/components/media/media-widget-labels.d.ts +1 -0
- package/components/media/media-widget-labels.js +1 -0
- package/components/media/phi-area-upload-widget.d.ts +1 -1
- package/components/media/phi-area-upload-widget.js +33 -48
- package/components/media/phi-asset-focal-rect-widget.d.ts +2 -2
- package/components/media/phi-asset-focal-rect-widget.js +14 -3
- package/components/media/phi-asset-inspector-section.js +5 -4
- package/components/media/phi-image-inspector-widget.d.ts +1 -1
- package/components/media/phi-image-inspector-widget.js +1 -1
- package/components/media/phi-image-preview-store.d.ts +0 -9
- package/components/media/phi-image-preview-store.js +0 -29
- package/components/media/phi-media-picker-binding.d.ts +1 -1
- package/components/media/phi-media-picker-binding.js +15 -11
- package/components/media/phi-media-picker-server.d.ts +1 -1
- package/components/media/phi-media-picker-widget.d.ts +1 -1
- package/components/media/phi-site-font-assets.js +1 -1
- package/components/media/use-authoring-asset-details.js +5 -8
- package/components/menus/phi-account-menu.d.ts +14 -11
- package/components/menus/phi-account-menu.js +94 -46
- package/components/motion/phi-sequence-viewport.js +11 -0
- package/components/navigation/phi-link.d.ts +11 -1
- package/components/navigation/phi-link.js +2 -2
- package/components/overlays/phi-overlay-container-client.d.ts +10 -7
- package/components/overlays/phi-overlay-container-client.js +113 -38
- package/components/overlays/phi-overlay-zones-loader.d.ts +20 -0
- package/components/overlays/phi-overlay-zones-loader.js +26 -0
- package/components/regions/clients/cms-region-container-client.d.ts +8 -3
- package/components/regions/clients/cms-region-container-client.js +102 -336
- package/components/regions/phi-cms-region-container.js +3 -1
- package/components/regions/phi-cms-region-shell.d.ts +88 -0
- package/components/regions/phi-cms-region-shell.js +300 -0
- package/components/regions/phi-cms-region-static.d.ts +8 -4
- package/components/regions/phi-cms-region-static.js +19 -211
- package/components/regions/presets/navigation-redirect.d.ts +0 -1
- package/components/regions/presets/navigation-redirect.js +5 -22
- package/components/regions/presets/phi-area-root-redirect-tree.d.ts +1 -3
- package/components/regions/presets/phi-area-root-redirect-tree.js +8 -2
- package/components/regions/presets/phi-base-page-layout.js +10 -11
- package/components/regions/presets/phi-header-top-actions-layout.d.ts +17 -0
- package/components/regions/presets/phi-header-top-actions-layout.js +28 -0
- package/components/regions/presets/phi-settings-page-shell-tree.d.ts +97 -15
- package/components/regions/presets/phi-settings-page-shell-tree.js +242 -44
- package/components/root/phi-config-provider.d.ts +9 -2
- package/components/root/phi-config-provider.js +10 -2
- package/components/root/phi-dayjs-locale.d.ts +9 -2
- package/components/root/phi-dayjs-locale.js +20 -4
- package/components/root/phi-intl-locale.d.ts +6 -0
- package/components/root/phi-intl-locale.js +21 -0
- package/components/root/phi-root-background.d.ts +3 -3
- package/components/root/phi-root-background.js +3 -3
- package/components/root/phi-root-layout.d.ts +2 -1
- package/components/root/phi-root-layout.js +12 -3
- package/components/root/phi-root-live-theme-provider.d.ts +8 -3
- package/components/root/phi-root-live-theme-provider.js +75 -9
- package/components/root/phi-root-theme-resolver.d.ts +21 -1
- package/components/root/phi-root-theme-resolver.js +20 -3
- package/components/runtime/application-feedback-host.d.ts +35 -0
- package/components/runtime/application-feedback-host.js +66 -0
- package/components/runtime/core-runtime-application-adapter.d.ts +8 -1
- package/components/runtime/core-runtime-application-adapter.js +97 -26
- package/components/runtime/core-runtime-controller-definition.d.ts +11 -0
- package/components/runtime/core-runtime-controller-definition.js +33 -0
- package/components/runtime/core-runtime-controller-plugin.d.ts +11 -0
- package/components/runtime/phi-password-change-required-modal.d.ts +16 -0
- package/components/runtime/phi-password-change-required-modal.js +34 -0
- package/components/runtime/phi-password-change-required.d.ts +14 -0
- package/components/runtime/phi-password-change-required.js +41 -0
- package/components/runtime/phi-state-machine-binding.d.ts +40 -0
- package/components/runtime/phi-state-machine-binding.js +119 -0
- package/components/runtime/phi-video-consent-store.d.ts +17 -0
- package/components/runtime/phi-video-consent-store.js +54 -0
- package/components/runtime/renderable-block-runtime.d.ts +0 -8
- package/components/runtime/renderable-block-runtime.js +5 -18
- package/components/runtime/renderable-widget-runtime.d.ts +10 -0
- package/components/runtime/renderable-widget-runtime.js +20 -0
- package/components/runtime/runtime-controller-materialization.d.ts +22 -2
- package/components/runtime/runtime-controller-materialization.js +48 -10
- package/components/runtime/runtime-module-authoring-client-manifest.d.ts +5 -5
- package/components/runtime/runtime-module-authoring-client-manifest.js +4 -13
- package/components/runtime/runtime-module-authoring-host.d.ts +1 -6
- package/components/runtime/runtime-module-authoring-host.js +0 -4
- package/components/runtime/runtime-module-calendar-adapter-client-manifest.js +10 -12
- package/components/runtime/runtime-module-client-manifest-context.d.ts +25 -0
- package/components/runtime/runtime-module-client-manifest-context.js +45 -0
- package/components/runtime/runtime-module-context.d.ts +11 -1
- package/components/runtime/runtime-module-context.js +12 -2
- package/components/runtime/runtime-module-controller-client-manifest.d.ts +5 -5
- package/components/runtime/runtime-module-controller-client-manifest.js +4 -13
- package/components/runtime/runtime-module-data-provider-client-manifest.d.ts +2 -2
- package/components/runtime/runtime-module-data-provider-client-manifest.js +7 -22
- package/components/runtime/runtime-module-render-client-manifest.d.ts +11 -2
- package/components/runtime/runtime-module-render-client-manifest.js +17 -20
- package/components/runtime/runtime-module-ui-provider-client-manifest.d.ts +36 -0
- package/components/runtime/runtime-module-ui-provider-client-manifest.js +30 -0
- package/components/runtime/runtime-signal-bus.js +76 -2
- package/components/runtime/runtime-signal-identity.d.ts +11 -1
- package/components/runtime/runtime-signal-identity.js +25 -0
- package/components/runtime/runtime-signal-registry.d.ts +0 -3
- package/components/runtime/runtime-signal-registry.js +1 -15
- package/components/runtime/user-state-client.d.ts +34 -0
- package/components/runtime/user-state-client.js +79 -0
- package/components/shell/phi-antd-icon.d.ts +73 -0
- package/components/shell/phi-antd-icon.js +192 -0
- package/components/shell/phi-asset-icon.d.ts +5 -0
- package/components/shell/phi-asset-icon.js +18 -0
- package/components/shell/phi-avatar.d.ts +1 -15
- package/components/shell/phi-avatar.js +4 -26
- package/components/shell/phi-builder-icon.d.ts +1 -1
- package/components/shell/phi-builder-icon.js +19 -2
- package/components/shell/phi-builder-motif-icon.js +1 -0
- package/components/shell/phi-icon.js +11 -43
- package/components/shell/phi-locale-switch.js +6 -1
- package/components/shell/phi-widget-icon.js +2 -1
- package/components/shell/shell-types.d.ts +25 -15
- package/components/shell/shell-types.js +1 -68
- package/components/state/history-store.d.ts +2 -0
- package/components/state/history-store.js +13 -0
- package/components/state/scoped-state-store.js +12 -5
- package/components/tables/client/phi-table-binding.d.ts +3 -2
- package/components/tables/phi-plain-table.js +1 -2
- package/components/trees/client/phi-tree-binding.js +8 -5
- package/components/widgets/accessible-areas.d.ts +42 -0
- package/components/widgets/accessible-areas.js +49 -0
- package/components/widgets/builder/phi-static-options-picker.js +24 -17
- package/components/widgets/builder/stack-tabs.d.ts +1 -2
- package/components/widgets/builder/stack-tabs.js +1 -2
- package/components/widgets/built-in/widget-preview-client.js +9 -5
- package/components/widgets/client/auth-workflow-body.d.ts +19 -3
- package/components/widgets/client/auth-workflow-body.js +24 -43
- package/components/widgets/client/description-editor-sections.d.ts +28 -0
- package/components/widgets/client/description-editor-sections.js +7 -0
- package/components/widgets/client/external-document-editor.js +3 -2
- package/components/widgets/client/html-editor-image-node.js +51 -17
- package/components/widgets/client/search.js +11 -59
- package/components/widgets/client/shared/core-options-providers.d.ts +3 -0
- package/components/widgets/client/shared/core-options-providers.js +20 -1
- package/components/widgets/client/shared/description-items.d.ts +6 -0
- package/components/widgets/client/shared/description-items.js +12 -0
- package/components/widgets/client/shared/phi-authoring-tools-labels.d.ts +7 -0
- package/components/widgets/client/shared/phi-authoring-tools-labels.js +23 -0
- package/components/widgets/client/shared/phi-button-icons.js +19 -19
- package/components/widgets/client/shared/phi-choice-controller.js +2 -1
- package/components/widgets/client/shared/phi-collection-provider.d.ts +22 -17
- package/components/widgets/client/shared/phi-collection-provider.js +2 -2
- package/components/widgets/client/shared/phi-collection-view-binding.d.ts +5 -19
- package/components/widgets/client/shared/phi-collection-view-binding.js +32 -21
- package/components/widgets/client/shared/phi-control-signal-routing.d.ts +35 -0
- package/components/widgets/client/shared/phi-control-signal-routing.js +35 -0
- package/components/widgets/client/shared/phi-control-signals.d.ts +0 -1
- package/components/widgets/client/shared/phi-control-signals.js +31 -65
- package/components/widgets/client/shared/phi-input-signals.d.ts +0 -3
- package/components/widgets/client/shared/phi-page-reference-picker.d.ts +18 -0
- package/components/widgets/client/shared/phi-page-reference-picker.js +32 -0
- package/components/widgets/client/shared/phi-rendered-value.d.ts +43 -0
- package/components/widgets/client/shared/phi-rendered-value.js +75 -0
- package/components/widgets/client/shared/phi-search-draft.d.ts +33 -0
- package/components/widgets/client/shared/phi-search-draft.js +52 -0
- package/components/widgets/client/shared/phi-static-table-provider.d.ts +12 -1
- package/components/widgets/client/shared/phi-static-table-provider.js +57 -7
- package/components/widgets/client/shared/phi-table-provider-response.d.ts +14 -0
- package/components/widgets/client/shared/phi-table-provider-response.js +16 -0
- package/components/widgets/client/shared/phi-table-provider.d.ts +3 -5
- package/components/widgets/client/shared/phi-table-provider.js +10 -24
- package/components/widgets/client/shared/phi-widget-image-tool-button.d.ts +2 -4
- package/components/widgets/client/shared/phi-widget-image-tool-button.js +6 -8
- package/components/widgets/client/shared/phi-widget-tool-buttons.js +56 -45
- package/components/widgets/config/background.d.ts +23 -0
- package/components/widgets/config/background.js +128 -41
- package/components/widgets/config/button-variant.d.ts +28 -0
- package/components/widgets/config/button-variant.js +32 -0
- package/components/widgets/config/choice-shared.d.ts +2 -2
- package/components/widgets/config/geometry.d.ts +4 -4
- package/components/widgets/config/helpers.d.ts +2 -2
- package/components/widgets/config/image-source-parser.d.ts +1 -1
- package/components/widgets/config/mask.d.ts +4 -2
- package/components/widgets/config/mask.js +13 -28
- package/components/widgets/config/parser-primitives.d.ts +11 -2
- package/components/widgets/config/parser-primitives.js +38 -3
- package/components/widgets/config/search-shared.d.ts +1 -80
- package/components/widgets/config/search-shared.js +4 -6
- package/components/widgets/config/spacing-options.d.ts +0 -1
- package/components/widgets/config/spacing-options.js +0 -1
- package/components/widgets/config/stack-tabs.d.ts +1 -121
- package/components/widgets/config/stack-tabs.js +3 -7
- package/components/widgets/config/text-tone.d.ts +22 -0
- package/components/widgets/config/text-tone.js +18 -0
- package/components/widgets/helpers/font-family.d.ts +13 -2
- package/components/widgets/helpers/font-family.js +22 -0
- package/components/widgets/helpers/font-size.d.ts +6 -2
- package/components/widgets/helpers/font-size.js +14 -0
- package/components/widgets/helpers/internal-reference-resolver.server.d.ts +10 -0
- package/components/widgets/helpers/internal-reference-resolver.server.js +19 -10
- package/components/widgets/inspector-field-row.js +3 -2
- package/components/widgets/label-sets/account.d.ts +7 -5
- package/components/widgets/label-sets/account.js +18 -8
- package/components/widgets/label-sets/auth-workflow.d.ts +4 -0
- package/components/widgets/label-sets/auth-workflow.js +63 -0
- package/components/widgets/label-sets/authoring-tools.d.ts +6 -0
- package/components/widgets/label-sets/authoring-tools.js +122 -0
- package/components/widgets/label-sets/border.js +8 -0
- package/components/widgets/label-sets/builder-chrome.js +2 -16
- package/components/widgets/label-sets/builder-modules.js +2 -0
- package/components/widgets/label-sets/draft-status.d.ts +4 -0
- package/components/widgets/label-sets/draft-status.js +29 -0
- package/components/widgets/label-sets/effects.js +8 -0
- package/components/widgets/label-sets/icon-picker.d.ts +6 -0
- package/components/widgets/label-sets/icon-picker.js +67 -0
- package/components/widgets/label-sets/news.d.ts +9 -0
- package/components/widgets/label-sets/news.js +29 -0
- package/components/widgets/label-sets/padding.d.ts +4 -0
- package/components/widgets/label-sets/padding.js +55 -0
- package/components/widgets/label-sets/profile.d.ts +55 -23
- package/components/widgets/label-sets/profile.js +80 -47
- package/components/widgets/label-sets/record.d.ts +4 -0
- package/components/widgets/label-sets/record.js +23 -0
- package/components/widgets/label-sets/region.js +4 -0
- package/components/widgets/label-sets/revisions.js +16 -0
- package/components/widgets/label-sets/security.d.ts +4 -0
- package/components/widgets/label-sets/security.js +81 -0
- package/components/widgets/label-sets/session.d.ts +6 -0
- package/components/widgets/label-sets/session.js +20 -0
- package/components/widgets/label-sets/threads.d.ts +96 -0
- package/components/widgets/label-sets/threads.js +269 -0
- package/components/widgets/label-sets/unsubscribe.d.ts +17 -0
- package/components/widgets/label-sets/unsubscribe.js +39 -0
- package/components/widgets/label-sets/video.d.ts +11 -0
- package/components/widgets/label-sets/video.js +40 -0
- package/components/widgets/label-types/auth-workflow.d.ts +38 -0
- package/components/widgets/label-types/authoring-tools.d.ts +78 -0
- package/components/widgets/label-types/authoring-tools.js +61 -0
- package/components/widgets/label-types/border.d.ts +8 -10
- package/components/widgets/label-types/border.js +7 -9
- package/components/widgets/label-types/builder-chrome.d.ts +0 -10
- package/components/widgets/label-types/builder-chrome.js +0 -12
- package/components/widgets/label-types/builder-modules.d.ts +2 -0
- package/components/widgets/label-types/builder-modules.js +2 -0
- package/components/widgets/label-types/common-controls.d.ts +2 -1
- package/components/widgets/label-types/common-controls.js +4 -4
- package/components/widgets/label-types/draft-status.d.ts +11 -0
- package/components/widgets/label-types/draft-status.js +12 -0
- package/components/widgets/label-types/effects.d.ts +6 -0
- package/components/widgets/label-types/effects.js +5 -0
- package/components/widgets/label-types/icon-picker.d.ts +30 -0
- package/components/widgets/label-types/icon-picker.js +31 -0
- package/components/widgets/label-types/padding.d.ts +3 -0
- package/components/widgets/label-types/padding.js +2 -0
- package/components/widgets/label-types/record.d.ts +8 -0
- package/components/widgets/label-types/record.js +9 -0
- package/components/widgets/label-types/region.d.ts +4 -0
- package/components/widgets/label-types/region.js +2 -0
- package/components/widgets/label-types/revisions.d.ts +11 -0
- package/components/widgets/label-types/revisions.js +9 -0
- package/components/widgets/label-types/security.d.ts +37 -0
- package/components/widgets/label-types/security.js +3 -0
- package/components/widgets/label-types/spacing-scale.d.ts +13 -0
- package/components/widgets/label-types/spacing-scale.js +11 -0
- package/components/widgets/login-redirect.js +3 -7
- package/components/widgets/navigation-descriptor-resolver.server.js +16 -5
- package/components/widgets/plugins/stack-tabs-widget-plugin.d.ts +1 -2
- package/components/widgets/plugins/stack-tabs-widget-plugin.js +1 -2
- package/components/widgets/server/builder-chrome.d.ts +0 -1
- package/components/widgets/server/builder-chrome.js +0 -4
- package/components/widgets/shared/card-body-client.d.ts +86 -0
- package/components/widgets/shared/card-body-client.js +102 -0
- package/components/widgets/shared/markdown-body-client.d.ts +81 -0
- package/components/widgets/shared/markdown-body-client.js +181 -0
- package/components/widgets/shared/markdown-code-tokens.d.ts +46 -0
- package/components/widgets/shared/markdown-code-tokens.js +330 -0
- package/components/widgets/shared/markdown-render.d.ts +40 -0
- package/components/widgets/shared/markdown-render.js +506 -0
- package/components/widgets/shared/result-body-client.d.ts +5 -2
- package/components/widgets/shared/result-body.d.ts +13 -1
- package/components/widgets/shared/result-body.js +11 -2
- package/components/widgets/signals/control-signal-capabilities.d.ts +0 -72
- package/components/widgets/signals/control-signal-capabilities.js +0 -70
- package/components/widgets/signals/page-title-signals.d.ts +0 -1
- package/components/widgets/signals/page-title-signals.js +2 -5
- package/components/widgets/signals/signal-endpoint-list.js +4 -3
- package/components/widgets/signals/signal-endpoints.js +2 -4
- package/components/workspace/catalog-store.d.ts +0 -1
- package/components/workspace/catalog-store.js +0 -3
- package/constants/authoring-option-provider-keys.d.ts +20 -0
- package/constants/authoring-option-provider-keys.js +21 -0
- package/constants/cms-areas.d.ts +22 -7
- package/constants/cms-areas.js +25 -37
- package/constants/cms-error-pages.d.ts +25 -0
- package/constants/cms-error-pages.js +31 -0
- package/constants/cms-layout-type-keys.d.ts +21 -0
- package/constants/cms-layout-type-keys.js +54 -0
- package/constants/cms-layout-types.d.ts +0 -20
- package/constants/cms-layout-types.js +2 -48
- package/constants/cms-widget-types.d.ts +9 -7
- package/constants/cms-widget-types.js +15 -16
- package/constants/core-data-provider-keys.d.ts +12 -0
- package/constants/core-data-provider-keys.js +13 -0
- package/constants/dashboard-card-provider-keys.d.ts +19 -0
- package/constants/dashboard-card-provider-keys.js +20 -0
- package/constants/http-headers.d.ts +20 -1
- package/constants/http-headers.js +20 -1
- package/constants/media-library-provider-keys.d.ts +9 -0
- package/constants/media-library-provider-keys.js +10 -1
- package/constants/phi-base-role-metadata.d.ts +0 -1
- package/constants/phi-cms.d.ts +1 -1
- package/constants/phi-cms.js +1 -1
- package/constants/runtime-data-provider-key.d.ts +8 -0
- package/constants/runtime-data-provider-key.js +10 -0
- package/constants/runtime-module-ownership.js +41 -0
- package/constants/runtime-render-client-types.d.ts +1 -3
- package/constants/runtime-render-client-types.js +2 -4
- package/constants/support.d.ts +2 -0
- package/constants/support.js +6 -0
- package/constants/thread-library-provider-keys.d.ts +19 -0
- package/constants/thread-library-provider-keys.js +20 -0
- package/constants/threads.d.ts +1 -0
- package/constants/threads.js +6 -0
- package/constants/user-state.d.ts +1 -0
- package/constants/user-state.js +6 -0
- package/constants.d.ts +8 -6
- package/constants.js +8 -6
- package/controls.d.ts +12 -7
- package/controls.js +20 -3
- package/core-widgets.d.ts +3 -0
- package/core-widgets.js +7 -0
- package/forms-client.d.ts +4 -0
- package/forms-client.js +8 -0
- package/forms.d.ts +4 -7
- package/forms.js +10 -6
- package/gateway/area-root-door.d.ts +14 -0
- package/gateway/area-root-door.js +65 -0
- package/gateway/auth-public-manifest.d.ts +23 -1
- package/gateway/auth-public-manifest.js +41 -12
- package/gateway/dashboard-cards-route.d.ts +21 -0
- package/gateway/dashboard-cards-route.js +269 -0
- package/gateway/form-handler-resolution.d.ts +12 -1
- package/gateway/form-handler-resolution.js +45 -53
- package/gateway/form-registry.js +7 -11
- package/gateway/form-submit.js +23 -15
- package/gateway/internal-references.js +6 -3
- package/gateway/label-set.js +4 -4
- package/gateway/module-diagnostics-route.d.ts +36 -0
- package/gateway/module-diagnostics-route.js +61 -0
- package/gateway/navigation-target-route.d.ts +6 -0
- package/gateway/navigation-target-route.js +215 -0
- package/gateway/news.d.ts +22 -0
- package/gateway/news.js +76 -0
- package/gateway/server-capabilities.js +3 -5
- package/gateway/site-area-bridges.d.ts +23 -0
- package/gateway/site-area-bridges.js +12 -0
- package/gateway/site-area.js +6 -11
- package/gateway/site-auth-settings.js +3 -5
- package/gateway/site-config.d.ts +2 -84
- package/gateway/site-config.js +4 -6
- package/gateway/site-form-route.d.ts +4 -12
- package/gateway/site-form-route.js +61 -43
- package/gateway/site-media-settings.js +3 -5
- package/gateway/site-nav.js +6 -15
- package/gateway/site-page.js +6 -15
- package/gateway/site-proxy.d.ts +10 -1
- package/gateway/site-proxy.js +89 -6
- package/gateway/site-read-cache.d.ts +19 -0
- package/gateway/site-read-cache.js +24 -0
- package/gateway/site-settings.js +3 -5
- package/gateway/site-stats.js +3 -5
- package/gateway/site-theme.js +2 -5
- package/gateway/thread-inbox-stats.d.ts +25 -0
- package/gateway/thread-inbox-stats.js +34 -0
- package/gateway/tr.js +48 -85
- package/gateway/user-state.d.ts +27 -0
- package/gateway/user-state.js +48 -0
- package/helpers/access.d.ts +0 -7
- package/helpers/access.js +1 -11
- package/helpers/border-widget-style.d.ts +35 -0
- package/helpers/border-widget-style.js +41 -0
- package/helpers/brand-wordmark.d.ts +10 -0
- package/helpers/brand-wordmark.js +14 -3
- package/helpers/client-json-request.d.ts +48 -0
- package/helpers/client-json-request.js +49 -0
- package/helpers/cms-access-policy.js +1 -5
- package/helpers/cms-area-config.d.ts +22 -2
- package/helpers/cms-area-config.js +32 -11
- package/helpers/cms-area-root-route.d.ts +8 -7
- package/helpers/cms-area-root-route.js +11 -12
- package/helpers/cms-config-field-validation.js +9 -0
- package/helpers/cms-config-serialization.d.ts +0 -69
- package/helpers/cms-config-serialization.js +1 -60
- package/helpers/cms-draft-delete.d.ts +8 -0
- package/helpers/cms-draft-delete.js +23 -0
- package/helpers/cms-layout-defaults.js +16 -25
- package/helpers/cms-layout-depth.d.ts +0 -2
- package/helpers/cms-layout-depth.js +0 -35
- package/helpers/cms-navigation-catalog.d.ts +24 -3
- package/helpers/cms-navigation-catalog.js +52 -17
- package/helpers/cms-node-factories.d.ts +21 -8
- package/helpers/cms-node-factories.js +8 -2
- package/helpers/cms-page-catalog.d.ts +0 -3
- package/helpers/cms-page-catalog.js +0 -10
- package/helpers/cms-paths.d.ts +4 -4
- package/helpers/cms-paths.js +6 -15
- package/helpers/cms-preset-nodes.d.ts +79 -6
- package/helpers/cms-preset-nodes.js +57 -14
- package/helpers/cms-region-keys.d.ts +18 -1
- package/helpers/cms-region-keys.js +23 -0
- package/helpers/cms-routing.d.ts +17 -0
- package/helpers/cms-routing.js +37 -0
- package/helpers/csrf-token.d.ts +33 -0
- package/helpers/csrf-token.js +61 -0
- package/helpers/dot-path.d.ts +7 -0
- package/helpers/dot-path.js +18 -0
- package/helpers/format-date-time.d.ts +2 -2
- package/helpers/format-date-time.js +20 -11
- package/helpers/is-record.d.ts +1 -0
- package/helpers/is-record.js +6 -0
- package/helpers/layout-authoring-markers.d.ts +4 -1
- package/helpers/layout-authoring-markers.js +5 -2
- package/helpers/link-target.d.ts +44 -0
- package/helpers/link-target.js +66 -0
- package/helpers/locale.d.ts +28 -0
- package/helpers/locale.js +82 -27
- package/helpers/logout.d.ts +26 -0
- package/helpers/logout.js +37 -0
- package/helpers/motion.d.ts +8 -0
- package/helpers/motion.js +8 -0
- package/helpers/nav-selection.js +12 -9
- package/helpers/phi-metadata.d.ts +9 -0
- package/helpers/phi-metadata.js +2 -0
- package/helpers/renderable-block-anchor.d.ts +2 -0
- package/helpers/renderable-block-anchor.js +28 -0
- package/helpers/renderable-block-effects.js +3 -1
- package/helpers/renderable-block-serialization.d.ts +1 -2
- package/helpers/renderable-block-serialization.js +13 -35
- package/helpers/runtime-module-route-path.d.ts +14 -1
- package/helpers/runtime-module-route-path.js +18 -0
- package/helpers/shell-region-style.d.ts +5 -3
- package/helpers/shell-region-style.js +27 -4
- package/helpers/site-api.d.ts +11 -10
- package/helpers/site-api.js +13 -18
- package/helpers/site-locale-config.js +6 -6
- package/helpers/site-runtime.d.ts +0 -2
- package/helpers/site-runtime.js +0 -10
- package/helpers/state-machine-binding.d.ts +84 -0
- package/helpers/state-machine-binding.js +101 -0
- package/helpers/state-machine-diagnostics.d.ts +30 -0
- package/helpers/state-machine-diagnostics.js +89 -0
- package/helpers/table-binding.js +4 -5
- package/helpers/text-placeholders.d.ts +50 -0
- package/helpers/text-placeholders.js +83 -0
- package/helpers/visibility.d.ts +0 -1
- package/helpers/visibility.js +0 -5
- package/helpers.d.ts +3 -13
- package/helpers.js +3 -13
- package/media.d.ts +2 -2
- package/media.js +1 -1
- package/module-client.d.ts +6 -1
- package/module-labels.d.ts +18 -0
- package/module-labels.js +16 -0
- package/module-projection-authoring-client.d.ts +5 -3
- package/module-projection-authoring-client.js +8 -5
- package/module-projection-client.d.ts +2 -2
- package/module-projection-client.js +7 -2
- package/module-projection.d.ts +12 -5
- package/module-projection.js +31 -8
- package/module.d.ts +37 -12
- package/module.js +22 -7
- package/net/log.d.ts +0 -1
- package/net/log.js +0 -1
- package/net/phi-next-proxy.d.ts +25 -0
- package/net/phi-next-proxy.js +64 -3
- package/next/area-route.d.ts +24 -13
- package/next/area-route.js +30 -20
- package/next/areas/accounting-client.js +3 -2
- package/next/areas/admin-client.js +3 -2
- package/next/areas/app-client.js +3 -2
- package/next/areas/builder-client.js +3 -2
- package/next/areas/builder.js +1 -1
- package/next/areas/editor-client.js +3 -2
- package/next/areas/public-client.js +3 -2
- package/next/global-error.d.ts +33 -0
- package/next/global-error.js +80 -0
- package/next/overlay-zones.d.ts +15 -0
- package/next/overlay-zones.js +104 -0
- package/next/proxy-runtime.d.ts +16 -0
- package/next/proxy-runtime.js +89 -12
- package/next/root-route.d.ts +24 -5
- package/next/root-route.js +76 -26
- package/next/route-handlers.d.ts +23 -0
- package/next/route-handlers.js +22 -0
- package/next/runtime-module-client-boundary.d.ts +3 -1
- package/next/runtime-module-client-boundary.js +3 -2
- package/next/seo-routes.js +1 -2
- package/next/site-proxy.js +72 -15
- package/next/static-asset-path.d.ts +1 -0
- package/next/static-asset-path.js +23 -0
- package/package.json +50 -62
- package/plugins/registries/runtime-controllers.js +3 -5
- package/plugins/runtime/phi-effects-ready-trigger.d.ts +13 -0
- package/plugins/runtime/phi-effects-ready-trigger.js +48 -0
- package/plugins/runtime/phi-slot-child-frame-client.js +6 -6
- package/plugins/runtime/phi-slot-child-frame-view.js +19 -29
- package/plugins/runtime/slot-size-policy.d.ts +34 -3
- package/plugins/runtime/slot-size-policy.js +152 -17
- package/plugins/runtime-modules/accounting/definition.d.ts +0 -3
- package/plugins/runtime-modules/accounting/definition.js +0 -6
- package/plugins/runtime-modules/accounting/module.d.ts +15 -1
- package/plugins/runtime-modules/accounting/module.js +8 -3
- package/plugins/runtime-modules/accounting/trees/phi-default-accounting-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/accounting/trees/phi-default-accounting-page-tree.js +45 -0
- package/plugins/runtime-modules/admin/controller/address.d.ts +0 -2
- package/plugins/runtime-modules/admin/controller/address.js +1 -5
- package/plugins/runtime-modules/admin/forms.js +1 -6
- package/plugins/runtime-modules/admin/module.d.ts +1 -45
- package/plugins/runtime-modules/admin/module.js +2 -4
- package/plugins/runtime-modules/admin/presets.d.ts +1 -5
- package/plugins/runtime-modules/admin/presets.js +3 -6
- package/plugins/runtime-modules/admin/trees/admin-settings-label-set.d.ts +6 -0
- package/plugins/runtime-modules/admin/trees/admin-settings-label-set.js +18 -0
- package/plugins/runtime-modules/admin/trees/phi-default-admin-area-preset-tree.d.ts +6 -0
- package/plugins/runtime-modules/admin/trees/phi-default-admin-area-preset-tree.js +180 -0
- package/plugins/runtime-modules/admin/trees/phi-default-admin-settings-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/admin/trees/phi-default-admin-settings-page-tree.js +81 -0
- package/plugins/runtime-modules/app/definition.d.ts +59 -3
- package/plugins/runtime-modules/app/definition.js +4 -6
- package/plugins/runtime-modules/app/forms.d.ts +82 -0
- package/plugins/runtime-modules/app/forms.js +341 -0
- package/plugins/runtime-modules/app/module.d.ts +74 -1
- package/plugins/runtime-modules/app/module.js +8 -3
- package/plugins/runtime-modules/app/server.js +2 -0
- package/plugins/runtime-modules/app/trees/phi-default-app-area-preset-tree.d.ts +18 -0
- package/plugins/runtime-modules/app/trees/phi-default-app-area-preset-tree.js +101 -0
- package/plugins/runtime-modules/app/trees/phi-default-app-profile-page-tree.d.ts +22 -0
- package/plugins/runtime-modules/app/trees/phi-default-app-profile-page-tree.js +175 -0
- package/plugins/runtime-modules/app/trees/profile-label-set.d.ts +11 -0
- package/plugins/runtime-modules/app/trees/profile-label-set.js +40 -0
- package/plugins/runtime-modules/area-base-presets.d.ts +31 -4
- package/plugins/runtime-modules/area-base-presets.js +108 -22
- package/plugins/runtime-modules/area-catalogs/accounting.d.ts +1 -6
- package/plugins/runtime-modules/area-catalogs/accounting.js +3 -12
- package/plugins/runtime-modules/area-catalogs/admin.d.ts +1 -6
- package/plugins/runtime-modules/area-catalogs/admin.js +3 -12
- package/plugins/runtime-modules/area-catalogs/app.d.ts +1 -6
- package/plugins/runtime-modules/area-catalogs/app.js +3 -12
- package/plugins/runtime-modules/area-catalogs/area-catalog.d.ts +13 -0
- package/plugins/runtime-modules/area-catalogs/area-catalog.js +13 -0
- package/plugins/runtime-modules/area-catalogs/editor.d.ts +1 -6
- package/plugins/runtime-modules/area-catalogs/editor.js +3 -12
- package/plugins/runtime-modules/area-catalogs/public.d.ts +1 -6
- package/plugins/runtime-modules/area-catalogs/public.js +3 -12
- package/plugins/runtime-modules/area-contributions/app.d.ts +1 -1
- package/plugins/runtime-modules/area-contributions/app.js +4 -0
- 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 +4 -0
- package/plugins/runtime-modules/area-definitions.d.ts +184 -121
- package/plugins/runtime-modules/area-definitions.js +183 -43
- package/plugins/runtime-modules/area-module-defaults.d.ts +3 -0
- package/plugins/runtime-modules/area-module-defaults.js +59 -0
- package/plugins/runtime-modules/area-root-route.d.ts +1 -3
- package/plugins/runtime-modules/area-root-route.js +2 -4
- package/plugins/runtime-modules/asset/client-data-providers.js +2 -2
- package/plugins/runtime-modules/asset/client.js +1 -1
- package/plugins/runtime-modules/asset/controller/client.d.ts +124 -0
- package/plugins/runtime-modules/asset/controller/client.js +10 -0
- package/plugins/runtime-modules/asset/controller/definition.js +128 -0
- package/plugins/runtime-modules/asset/controller/mount.d.ts +4 -0
- package/plugins/runtime-modules/asset/controller/mount.js +6 -0
- package/plugins/runtime-modules/asset/controller/runtime.d.ts +1 -0
- package/plugins/runtime-modules/asset/controller/runtime.js +327 -0
- package/plugins/runtime-modules/asset/data-providers.d.ts +2 -1
- package/plugins/runtime-modules/asset/data-providers.js +4 -2
- package/plugins/runtime-modules/asset/definition.d.ts +8 -1
- package/plugins/runtime-modules/asset/definition.js +13 -5
- package/plugins/runtime-modules/asset/form-providers.js +11 -0
- package/plugins/runtime-modules/asset/form-ui-provider.js +13 -0
- package/plugins/runtime-modules/asset/ids.d.ts +2 -0
- package/plugins/runtime-modules/asset/ids.js +3 -1
- package/plugins/runtime-modules/asset/media-page-ids.d.ts +6 -0
- package/plugins/runtime-modules/asset/media-page-ids.js +36 -0
- package/plugins/runtime-modules/asset/metadata-form.d.ts +243 -0
- package/plugins/runtime-modules/asset/metadata-form.js +197 -0
- package/plugins/runtime-modules/asset/module.d.ts +1 -231
- package/plugins/runtime-modules/asset/module.js +3 -5
- package/plugins/runtime-modules/asset/presets.d.ts +2 -174
- package/plugins/runtime-modules/asset/presets.js +18 -43
- package/plugins/runtime-modules/asset/server.js +3 -4
- package/plugins/runtime-modules/asset/services/collection.js +162 -0
- package/plugins/runtime-modules/asset/services/options.js +69 -0
- package/plugins/runtime-modules/asset/settings-forms.d.ts +22 -0
- package/plugins/runtime-modules/asset/settings-forms.js +177 -0
- package/plugins/runtime-modules/asset/trees/phi-default-admin-media-settings-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/asset/trees/phi-default-admin-media-settings-page-tree.js +93 -0
- package/plugins/runtime-modules/asset/trees/phi-default-builder-media-page-tree.d.ts +15 -0
- package/plugins/runtime-modules/asset/trees/phi-default-builder-media-page-tree.js +735 -0
- package/plugins/runtime-modules/asset/widgets/area-upload/authoring.d.ts +2 -3
- package/plugins/runtime-modules/asset/widgets/area-upload/authoring.js +4 -4
- package/plugins/runtime-modules/asset/widgets/area-upload/config.d.ts +1 -9
- package/plugins/runtime-modules/asset/widgets/area-upload/config.js +0 -2
- package/plugins/runtime-modules/asset/widgets/area-upload/plugin.d.ts +1 -3
- package/plugins/runtime-modules/asset/widgets/area-upload/plugin.js +2 -3
- package/plugins/runtime-modules/asset/widgets/area-upload/server.d.ts +7 -0
- package/plugins/runtime-modules/asset/widgets/area-upload/server.js +13 -0
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/authoring.d.ts +2 -3
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/authoring.js +2 -4
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.d.ts +1 -6
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.js +0 -2
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/plugin.d.ts +1 -3
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/plugin.js +2 -3
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/server.d.ts +6 -0
- package/plugins/runtime-modules/asset/widgets/asset-focal-rect/server.js +6 -0
- package/plugins/runtime-modules/asset/widgets/image-inspector/authoring.d.ts +2 -3
- package/plugins/runtime-modules/asset/widgets/image-inspector/authoring.js +4 -4
- package/plugins/runtime-modules/asset/widgets/image-inspector/config.d.ts +1 -7
- package/plugins/runtime-modules/asset/widgets/image-inspector/config.js +0 -2
- package/plugins/runtime-modules/asset/widgets/image-inspector/plugin.d.ts +1 -3
- package/plugins/runtime-modules/asset/widgets/image-inspector/plugin.js +2 -3
- package/plugins/runtime-modules/asset/widgets/image-inspector/server.d.ts +7 -0
- package/plugins/runtime-modules/asset/widgets/image-inspector/server.js +18 -0
- package/plugins/runtime-modules/asset/widgets/media-picker/authoring.d.ts +2 -3
- package/plugins/runtime-modules/asset/widgets/media-picker/authoring.js +2 -4
- package/plugins/runtime-modules/asset/widgets/media-picker/config.d.ts +2 -16
- package/plugins/runtime-modules/asset/widgets/media-picker/config.js +1 -2
- package/plugins/runtime-modules/asset/widgets/media-picker/plugin.d.ts +1 -3
- package/plugins/runtime-modules/asset/widgets/media-picker/plugin.js +1 -2
- package/plugins/runtime-modules/auth/admin-settings-forms.d.ts +15 -0
- package/plugins/runtime-modules/auth/admin-settings-forms.js +394 -0
- package/plugins/runtime-modules/auth/client-data-providers.js +1 -1
- package/plugins/runtime-modules/auth/client.js +1 -1
- package/plugins/runtime-modules/auth/controller/address.d.ts +14 -0
- package/plugins/runtime-modules/auth/controller/address.js +17 -0
- package/plugins/runtime-modules/auth/controller/definition.d.ts +86 -0
- package/plugins/runtime-modules/auth/controller/definition.js +93 -0
- package/plugins/runtime-modules/auth/controller/server-definition.d.ts +83 -0
- package/plugins/runtime-modules/auth/controller/server-definition.js +55 -0
- package/plugins/runtime-modules/auth/controller-plugin.d.ts +1 -0
- package/plugins/runtime-modules/auth/controller-plugin.js +312 -0
- package/plugins/runtime-modules/auth/definition.d.ts +47 -16
- package/plugins/runtime-modules/auth/definition.js +16 -7
- package/plugins/runtime-modules/auth/features.js +2 -2
- package/plugins/runtime-modules/auth/form-provider-registry.d.ts +1 -0
- package/plugins/runtime-modules/auth/form-provider-registry.js +38 -0
- package/plugins/runtime-modules/auth/form-providers.d.ts +232 -0
- package/plugins/runtime-modules/auth/form-providers.js +42 -0
- package/plugins/runtime-modules/auth/form-ui-provider.js +7 -0
- package/plugins/runtime-modules/auth/forms.d.ts +3 -0
- package/plugins/runtime-modules/auth/forms.js +140 -0
- package/plugins/runtime-modules/auth/machine.d.ts +46 -0
- package/plugins/runtime-modules/auth/machine.js +98 -0
- package/plugins/runtime-modules/auth/module.js +1 -1
- package/plugins/runtime-modules/auth/overlay-ids.d.ts +23 -0
- package/plugins/runtime-modules/auth/overlay-ids.js +27 -0
- package/plugins/runtime-modules/auth/presets.d.ts +7 -68
- package/plugins/runtime-modules/auth/presets.js +66 -61
- package/plugins/runtime-modules/auth/server.js +3 -4
- package/plugins/runtime-modules/auth/services/installations-table.js +162 -0
- package/plugins/runtime-modules/auth/trees/phi-auth-area-overlay-tree.server.d.ts +8 -0
- package/plugins/runtime-modules/auth/trees/phi-auth-area-overlay-tree.server.js +105 -0
- package/plugins/runtime-modules/auth/trees/phi-auth-runtime-page-tree.d.ts +7 -0
- package/plugins/runtime-modules/auth/trees/phi-auth-runtime-page-tree.js +53 -0
- package/plugins/runtime-modules/auth/trees/phi-default-admin-auth-settings-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/auth/trees/phi-default-admin-auth-settings-page-tree.js +334 -0
- package/plugins/runtime-modules/auth/trees/phi-default-app-security-page-tree.d.ts +17 -0
- package/plugins/runtime-modules/auth/trees/phi-default-app-security-page-tree.js +90 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-confirm-page-tree.d.ts +5 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-confirm-page-tree.js +166 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-login-page-tree.d.ts +10 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-login-page-tree.js +126 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-registration-page-tree.d.ts +10 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-registration-page-tree.js +118 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-reset-password-page-tree.d.ts +5 -0
- package/plugins/runtime-modules/auth/trees/phi-default-pub-reset-password-page-tree.js +151 -0
- package/plugins/runtime-modules/auth/trees/phi-login-form-nodes.d.ts +46 -0
- package/plugins/runtime-modules/auth/trees/phi-login-form-nodes.js +216 -0
- package/plugins/runtime-modules/auth/trees/security-label-set.d.ts +8 -0
- package/plugins/runtime-modules/auth/trees/security-label-set.js +22 -0
- package/plugins/runtime-modules/auth/widgets/auth-methods/client.js +33 -24
- package/plugins/runtime-modules/auth/widgets/auth-workflow/client.d.ts +3 -1
- package/plugins/runtime-modules/auth/widgets/auth-workflow/client.js +48 -22
- package/plugins/runtime-modules/auth/widgets/auth-workflow/config.d.ts +8 -1
- package/plugins/runtime-modules/auth/widgets/auth-workflow/config.js +36 -5
- package/plugins/runtime-modules/auth/widgets/auth-workflow/plugin.js +8 -7
- package/plugins/runtime-modules/auth/widgets/auth-workflow/server.d.ts +15 -0
- package/plugins/runtime-modules/auth/widgets/auth-workflow/server.js +14 -0
- package/plugins/runtime-modules/auth/widgets/logout/client.d.ts +3 -1
- package/plugins/runtime-modules/auth/widgets/logout/client.js +9 -26
- package/plugins/runtime-modules/auth/widgets/logout/config.d.ts +1 -0
- package/plugins/runtime-modules/auth/widgets/logout/config.js +1 -0
- package/plugins/runtime-modules/auth/widgets/security/client.d.ts +6 -1
- package/plugins/runtime-modules/auth/widgets/security/client.js +60 -56
- package/plugins/runtime-modules/auth/widgets/security/config.d.ts +1 -0
- package/plugins/runtime-modules/auth/widgets/security/config.js +1 -0
- package/plugins/runtime-modules/auth/widgets/security/server.js +18 -1
- package/plugins/runtime-modules/avatar/addresses.js +19 -0
- package/plugins/runtime-modules/avatar/definition.d.ts +2 -2
- package/plugins/runtime-modules/avatar/definition.js +5 -2
- package/plugins/runtime-modules/avatar/labels.d.ts +25 -0
- package/plugins/runtime-modules/avatar/media-spaces.d.ts +9 -0
- package/plugins/runtime-modules/avatar/media-spaces.js +9 -0
- package/plugins/runtime-modules/avatar/module.d.ts +2 -2
- package/plugins/runtime-modules/avatar/overlay-tree.js +12 -0
- package/plugins/runtime-modules/avatar/overlay-tree.server.js +95 -0
- package/plugins/runtime-modules/avatar/presets.js +1 -1
- package/plugins/runtime-modules/avatar/server.js +1 -2
- package/plugins/runtime-modules/avatar/widgets/account-avatar/authoring.d.ts +1 -2
- package/plugins/runtime-modules/avatar/widgets/account-avatar/authoring.js +2 -4
- package/plugins/runtime-modules/avatar/widgets/account-avatar/client.js +5 -5
- package/plugins/runtime-modules/avatar/widgets/account-avatar/config.d.ts +1 -1
- package/plugins/runtime-modules/avatar/widgets/account-avatar/config.js +1 -2
- package/plugins/runtime-modules/avatar/widgets/account-avatar/server.js +1 -1
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/authoring.d.ts +1 -2
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/authoring.js +2 -4
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/client.js +9 -8
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/config.d.ts +1 -1
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/config.js +1 -2
- package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/server.js +1 -1
- package/plugins/runtime-modules/builder/addresses.d.ts +23 -0
- package/plugins/runtime-modules/builder/addresses.js +53 -0
- package/plugins/runtime-modules/builder/area-settings-form.d.ts +2 -0
- package/plugins/runtime-modules/builder/area-settings-form.js +137 -0
- package/plugins/runtime-modules/builder/area-settings-values.d.ts +26 -0
- package/plugins/runtime-modules/builder/area-settings-values.js +26 -0
- package/plugins/runtime-modules/builder/area-shell-presets.server.d.ts +0 -1
- package/plugins/runtime-modules/builder/area-shell-presets.server.js +12 -10
- package/plugins/runtime-modules/builder/authoring-canvas.js +5 -0
- package/plugins/runtime-modules/builder/authoring-widgets.js +2 -3
- package/plugins/runtime-modules/builder/builder-geometry.d.ts +28 -0
- package/plugins/runtime-modules/builder/builder-geometry.js +38 -0
- package/plugins/runtime-modules/builder/client-data-providers.js +8 -0
- package/plugins/runtime-modules/builder/client.d.ts +0 -1
- package/plugins/runtime-modules/builder/client.js +0 -4
- package/plugins/runtime-modules/builder/clients/builder-region-overrides.js +3 -4
- package/plugins/runtime-modules/builder/clients/inspector-config-field.d.ts +7 -1
- package/plugins/runtime-modules/builder/clients/inspector-config-field.js +101 -30
- package/plugins/runtime-modules/builder/clients/inspector-link-target-field.d.ts +30 -0
- package/plugins/runtime-modules/builder/clients/inspector-link-target-field.js +69 -0
- package/plugins/runtime-modules/builder/clients/inspector-section-widget.d.ts +4 -2
- package/plugins/runtime-modules/builder/clients/inspector-section-widget.js +60 -49
- package/plugins/runtime-modules/builder/clients/inspector-signal-section.js +4 -3
- package/plugins/runtime-modules/builder/clients/layout-inspector.d.ts +7 -3
- package/plugins/runtime-modules/builder/clients/layout-inspector.js +34 -6
- package/plugins/runtime-modules/builder/clients/mode-switch.js +2 -2
- package/plugins/runtime-modules/builder/clients/pages-header.d.ts +0 -1
- package/plugins/runtime-modules/builder/clients/pages-header.js +24 -9
- package/plugins/runtime-modules/builder/clients/region-inspector.js +2 -2
- package/plugins/runtime-modules/builder/clients/runtime-module-authoring-boundary.js +14 -2
- package/plugins/runtime-modules/builder/clients/shells-workspace.js +13 -1
- package/plugins/runtime-modules/builder/clients/structure-canvas.js +8 -7
- package/plugins/runtime-modules/builder/clients/widget-effects-editor.d.ts +4 -1
- package/plugins/runtime-modules/builder/clients/widget-effects-editor.js +2 -2
- package/plugins/runtime-modules/builder/clients/widget-inspector.d.ts +7 -1
- package/plugins/runtime-modules/builder/clients/widget-inspector.js +24 -19
- package/plugins/runtime-modules/builder/controller/client.d.ts +6 -0
- package/plugins/runtime-modules/builder/controller/definition.d.ts +6 -0
- package/plugins/runtime-modules/builder/controller/definition.js +7 -0
- package/plugins/runtime-modules/builder/controller/server-definition.d.ts +7 -1
- package/plugins/runtime-modules/builder/data-providers.d.ts +26 -1
- package/plugins/runtime-modules/builder/data-providers.js +23 -0
- package/plugins/runtime-modules/builder/definition.d.ts +26 -1
- package/plugins/runtime-modules/builder/demand-controller-store.d.ts +0 -1
- package/plugins/runtime-modules/builder/demand-controller-store.js +0 -5
- package/plugins/runtime-modules/builder/developer-workspace-store.d.ts +17 -1
- package/plugins/runtime-modules/builder/developer-workspace-store.js +34 -3
- package/plugins/runtime-modules/builder/developer-workspace-types.d.ts +32 -2
- package/plugins/runtime-modules/builder/draft-command-controller.d.ts +6 -4
- package/plugins/runtime-modules/builder/draft-command-controller.js +69 -171
- package/plugins/runtime-modules/builder/draft-status-controller.d.ts +23 -0
- package/plugins/runtime-modules/builder/draft-status-controller.js +173 -0
- package/plugins/runtime-modules/builder/effects-form-values.d.ts +9 -0
- package/plugins/runtime-modules/builder/effects-form-values.js +14 -4
- package/plugins/runtime-modules/builder/history.d.ts +2 -0
- package/plugins/runtime-modules/builder/ids.d.ts +1 -0
- package/plugins/runtime-modules/builder/ids.js +5 -3
- package/plugins/runtime-modules/builder/inspector-actions.d.ts +3 -0
- package/plugins/runtime-modules/builder/inspector-actions.js +6 -5
- package/plugins/runtime-modules/builder/inspector-controller.js +24 -17
- package/plugins/runtime-modules/builder/inspector-overlay-addresses.d.ts +1 -1
- package/plugins/runtime-modules/builder/inspector-section-widget.d.ts +2 -1
- package/plugins/runtime-modules/builder/inspector-section-widget.js +10 -2
- package/plugins/runtime-modules/builder/module-authoring-catalog.d.ts +4 -0
- package/plugins/runtime-modules/builder/module-authoring-catalog.server.js +2 -0
- package/plugins/runtime-modules/builder/module.d.ts +1 -609
- package/plugins/runtime-modules/builder/module.js +2 -4
- package/plugins/runtime-modules/builder/navigation-catalog.server.d.ts +2 -1
- package/plugins/runtime-modules/builder/navigation-folder-address.d.ts +1 -1
- package/plugins/runtime-modules/builder/navigation-folder-address.js +1 -1
- package/plugins/runtime-modules/builder/navigation-path-context.d.ts +1 -1
- package/plugins/runtime-modules/builder/navigation-path-context.js +27 -10
- package/plugins/runtime-modules/builder/navigation-persistence.js +11 -1
- package/plugins/runtime-modules/builder/navigation-store.d.ts +0 -2
- package/plugins/runtime-modules/builder/navigation-store.js +0 -6
- package/plugins/runtime-modules/builder/node-kind-theme.d.ts +0 -4
- package/plugins/runtime-modules/builder/node-kind-theme.js +1 -14
- package/plugins/runtime-modules/builder/offered-page-catalog.d.ts +12 -1
- package/plugins/runtime-modules/builder/offered-page-catalog.js +98 -3
- package/plugins/runtime-modules/builder/options-providers.d.ts +3 -19
- package/plugins/runtime-modules/builder/options-providers.js +116 -50
- package/plugins/runtime-modules/builder/page-controller-helpers.d.ts +0 -1
- package/plugins/runtime-modules/builder/page-controller-helpers.js +0 -8
- package/plugins/runtime-modules/builder/page-controller.d.ts +0 -1
- package/plugins/runtime-modules/builder/page-controller.js +1 -2
- package/plugins/runtime-modules/builder/page-meta-form.js +139 -64
- package/plugins/runtime-modules/builder/page-presets.server.d.ts +0 -1
- package/plugins/runtime-modules/builder/page-presets.server.js +45 -12
- package/plugins/runtime-modules/builder/page-reference-tree.d.ts +18 -0
- package/plugins/runtime-modules/builder/page-reference-tree.js +31 -0
- package/plugins/runtime-modules/builder/page-references-provider.d.ts +5 -0
- package/plugins/runtime-modules/builder/page-references-provider.js +14 -0
- package/plugins/runtime-modules/builder/pages-workspace.d.ts +2 -1
- package/plugins/runtime-modules/builder/pages-workspace.js +5 -4
- package/plugins/runtime-modules/builder/persistence.d.ts +0 -1
- package/plugins/runtime-modules/builder/persistence.js +11 -28
- package/plugins/runtime-modules/builder/plugin-meta-labels.d.ts +16 -0
- package/plugins/runtime-modules/builder/plugin-meta-labels.js +57 -0
- package/plugins/runtime-modules/builder/plugin-meta-labels.server.d.ts +4 -0
- package/plugins/runtime-modules/builder/plugin-meta-labels.server.js +65 -0
- package/plugins/runtime-modules/builder/plugin-meta-store.d.ts +4 -0
- package/plugins/runtime-modules/builder/plugin-meta-store.js +8 -1
- package/plugins/runtime-modules/builder/plugin-metas.d.ts +1 -2
- package/plugins/runtime-modules/builder/plugin-metas.js +3 -14
- package/plugins/runtime-modules/builder/presets.d.ts +4 -2
- package/plugins/runtime-modules/builder/presets.js +3 -4
- package/plugins/runtime-modules/builder/preview-controller.d.ts +1 -2
- package/plugins/runtime-modules/builder/preview-controller.js +2 -70
- package/plugins/runtime-modules/builder/preview-store.d.ts +0 -1
- package/plugins/runtime-modules/builder/preview-store.js +1 -4
- package/plugins/runtime-modules/builder/preview-transport.js +4 -6
- package/plugins/runtime-modules/builder/region-controller.d.ts +0 -1
- package/plugins/runtime-modules/builder/region-controller.js +0 -6
- package/plugins/runtime-modules/builder/region-hydration.d.ts +5 -13
- package/plugins/runtime-modules/builder/region-hydration.js +0 -20
- package/plugins/runtime-modules/builder/render-root-node-preview.server.d.ts +1 -3
- package/plugins/runtime-modules/builder/render-root-node-preview.server.js +8 -56
- package/plugins/runtime-modules/builder/render-root-node-scaffold.d.ts +2 -2
- package/plugins/runtime-modules/builder/render-root-node-scaffold.js +137 -47
- package/plugins/runtime-modules/builder/root-node-normalization.d.ts +6 -1
- package/plugins/runtime-modules/builder/root-node-normalization.js +22 -6
- package/plugins/runtime-modules/builder/runtime-module-sandbox.server.d.ts +1 -1
- package/plugins/runtime-modules/builder/selected-collection-source.d.ts +22 -0
- package/plugins/runtime-modules/builder/selected-collection-source.js +51 -0
- package/plugins/runtime-modules/builder/sequential-slot-helpers.d.ts +7 -0
- package/plugins/runtime-modules/builder/sequential-slot-helpers.js +4 -0
- package/plugins/runtime-modules/builder/server.js +8 -2
- package/plugins/runtime-modules/builder/services/navigation-table.js +11 -3
- package/plugins/runtime-modules/builder/services/page-source-tree.js +8 -2
- package/plugins/runtime-modules/builder/services/runtime-modules-table.d.ts +15 -0
- package/plugins/runtime-modules/builder/services/runtime-modules-table.js +92 -24
- package/plugins/runtime-modules/builder/services/signal-routes-table.js +3 -1
- package/plugins/runtime-modules/builder/shells-workspace.d.ts +2 -1
- package/plugins/runtime-modules/builder/shells-workspace.js +5 -4
- package/plugins/runtime-modules/builder/signal-wiring-controller.js +18 -2
- package/plugins/runtime-modules/builder/signal-wiring-form.js +15 -6
- package/plugins/runtime-modules/builder/signal-wiring-options.js +38 -10
- package/plugins/runtime-modules/builder/structure-region-pick-items.js +14 -2
- package/plugins/runtime-modules/builder/trees/builder-navigation-label-set.d.ts +35 -0
- package/plugins/runtime-modules/builder/trees/builder-navigation-label-set.js +68 -0
- package/plugins/runtime-modules/builder/trees/builder-settings-label-set.d.ts +17 -0
- package/plugins/runtime-modules/builder/trees/builder-settings-label-set.js +34 -0
- package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.d.ts +7 -0
- package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.js +12 -0
- package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.server.d.ts +20 -0
- package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.server.js +569 -0
- package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.d.ts +132 -0
- package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.js +2052 -0
- package/plugins/runtime-modules/builder/trees/phi-default-builder-settings-page-tree.d.ts +12 -0
- package/plugins/runtime-modules/builder/trees/phi-default-builder-settings-page-tree.js +55 -0
- package/plugins/runtime-modules/builder/use-offered-page-catalog.d.ts +16 -0
- package/plugins/runtime-modules/builder/use-offered-page-catalog.js +35 -0
- package/plugins/runtime-modules/builder/widgets/chrome/config.d.ts +0 -1
- package/plugins/runtime-modules/builder/widgets/chrome/config.js +2 -5
- package/plugins/runtime-modules/builder/widgets/hello-world/client.js +2 -10
- package/plugins/runtime-modules/builder/widgets/hello-world/config.d.ts +3 -3
- package/plugins/runtime-modules/builder/widgets/hello-world/config.js +1 -2
- package/plugins/runtime-modules/builder/widgets/hello-world/plugin.d.ts +0 -2
- package/plugins/runtime-modules/builder/widgets/hello-world/plugin.js +0 -2
- package/plugins/runtime-modules/builder/widgets/structure-region/built-in.d.ts +3 -1
- package/plugins/runtime-modules/builder/widgets/structure-region/built-in.js +112 -89
- package/plugins/runtime-modules/builder/widgets/structure-region/config.d.ts +3 -0
- package/plugins/runtime-modules/builder/widgets/structure-region/config.js +3 -0
- package/plugins/runtime-modules/builder/widgets/structure-region/internal-builder.d.ts +22 -0
- package/plugins/runtime-modules/builder/widgets/structure-region/internal-builder.js +8 -0
- package/plugins/runtime-modules/builder/widgets/structure-region/plugin.js +12 -8
- package/plugins/runtime-modules/builder/widgets/test-block/config.d.ts +3 -2
- package/plugins/runtime-modules/builder/widgets/test-block/config.js +1 -0
- package/plugins/runtime-modules/builder/widgets/workspace-headers/config.d.ts +1 -0
- package/plugins/runtime-modules/builder/widgets/workspace-headers/config.js +1 -0
- package/plugins/runtime-modules/builder/widgets.js +1 -8
- package/plugins/runtime-modules/builder/workspace-controller.d.ts +1 -1
- package/plugins/runtime-modules/builder/workspace-controller.js +206 -199
- package/plugins/runtime-modules/client-area-contributions/accounting.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/accounting.js +0 -7
- package/plugins/runtime-modules/client-area-contributions/app.js +4 -4
- package/plugins/runtime-modules/client-area-contributions/public.d.ts +1 -1
- package/plugins/runtime-modules/client-area-contributions/public.js +0 -6
- package/plugins/runtime-modules/client-authoring-providers/app.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/app.js +12 -0
- package/plugins/runtime-modules/client-authoring-providers/editor.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/editor.js +6 -0
- package/plugins/runtime-modules/client-authoring-providers/public.d.ts +1 -1
- package/plugins/runtime-modules/client-authoring-providers/public.js +12 -0
- package/plugins/runtime-modules/client-calendar-adapters/core.js +1 -1
- package/plugins/runtime-modules/client-manifests/accounting.d.ts +2 -1
- package/plugins/runtime-modules/client-manifests/accounting.js +5 -1
- package/plugins/runtime-modules/client-manifests/admin.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/admin.js +4 -9
- package/plugins/runtime-modules/client-manifests/app.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/app.js +12 -3
- package/plugins/runtime-modules/client-manifests/builder.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/builder.js +3 -4
- package/plugins/runtime-modules/client-manifests/common.d.ts +7 -0
- package/plugins/runtime-modules/client-manifests/common.js +59 -31
- package/plugins/runtime-modules/client-manifests/editor.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/editor.js +8 -1
- package/plugins/runtime-modules/client-manifests/news-render-clients.d.ts +2 -0
- package/plugins/runtime-modules/client-manifests/news-render-clients.js +10 -0
- package/plugins/runtime-modules/client-manifests/public.d.ts +1 -0
- package/plugins/runtime-modules/client-manifests/public.js +3 -0
- package/plugins/runtime-modules/contracts.js +89 -27
- package/plugins/runtime-modules/core/authoring-widgets.js +6 -14
- package/plugins/runtime-modules/core/cards.d.ts +3 -0
- package/plugins/runtime-modules/core/cards.js +83 -0
- package/plugins/runtime-modules/core/client-data-providers.js +11 -3
- package/plugins/runtime-modules/core/data-providers.js +10 -1
- package/plugins/runtime-modules/core/definition.d.ts +223 -181
- package/plugins/runtime-modules/core/definition.js +1 -1
- package/plugins/runtime-modules/core/form-providers.d.ts +417 -0
- package/plugins/runtime-modules/core/form-providers.js +13 -0
- package/plugins/runtime-modules/core/ids.d.ts +0 -4
- package/plugins/runtime-modules/core/ids.js +0 -5
- package/plugins/runtime-modules/core/module.d.ts +1 -508
- package/plugins/runtime-modules/core/module.js +2 -4
- package/plugins/runtime-modules/core/server.js +3 -0
- package/plugins/runtime-modules/core/services/table.js +13 -0
- package/plugins/runtime-modules/core/widgets/account/client.d.ts +3 -2
- package/plugins/runtime-modules/core/widgets/account/client.js +62 -38
- package/plugins/runtime-modules/core/widgets/account/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/account/config.js +1 -2
- package/plugins/runtime-modules/core/widgets/account/plugin.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/account/plugin.js +9 -4
- package/plugins/runtime-modules/core/widgets/account/server.d.ts +9 -5
- package/plugins/runtime-modules/core/widgets/account/server.js +89 -49
- package/plugins/runtime-modules/core/widgets/brand/authoring.js +65 -5
- package/plugins/runtime-modules/core/widgets/brand/client.d.ts +8 -4
- package/plugins/runtime-modules/core/widgets/brand/client.js +35 -8
- package/plugins/runtime-modules/core/widgets/brand/config.d.ts +13 -15
- package/plugins/runtime-modules/core/widgets/brand/config.js +24 -9
- package/plugins/runtime-modules/core/widgets/brand/mode.d.ts +23 -0
- package/plugins/runtime-modules/core/widgets/brand/mode.js +7 -0
- package/plugins/runtime-modules/core/widgets/brand/plugin.js +12 -2
- package/plugins/runtime-modules/core/widgets/brand/server.d.ts +3 -6
- package/plugins/runtime-modules/core/widgets/brand/server.js +2 -6
- package/plugins/runtime-modules/core/widgets/breadcrumb/client.js +3 -2
- package/plugins/runtime-modules/core/widgets/breadcrumb/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/breadcrumb/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/button/client.d.ts +14 -1
- package/plugins/runtime-modules/core/widgets/button/client.js +15 -5
- package/plugins/runtime-modules/core/widgets/button/config.d.ts +61 -7
- package/plugins/runtime-modules/core/widgets/button/config.js +29 -20
- package/plugins/runtime-modules/core/widgets/button/plugin.js +34 -4
- package/plugins/runtime-modules/core/widgets/card/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/card/collection-view-binding.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/card/collection-view-binding.js +104 -0
- package/plugins/runtime-modules/core/widgets/card/config.d.ts +16 -1
- package/plugins/runtime-modules/core/widgets/card/config.js +16 -2
- package/plugins/runtime-modules/core/widgets/card/editor.d.ts +11 -0
- package/plugins/runtime-modules/core/widgets/card/editor.js +48 -0
- package/plugins/runtime-modules/core/widgets/card/plugin.js +3 -1
- package/plugins/runtime-modules/core/widgets/card/server.d.ts +4 -5
- package/plugins/runtime-modules/core/widgets/card/server.js +11 -2
- package/plugins/runtime-modules/core/widgets/cascader/authoring.d.ts +9 -9
- package/plugins/runtime-modules/core/widgets/cascader/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/cascader/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/checkbox/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox/config.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/checkbox/config.js +0 -2
- package/plugins/runtime-modules/core/widgets/checkbox/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/config.d.ts +2 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/config.js +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/checkbox-group/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.js +253 -0
- package/plugins/runtime-modules/core/widgets/collection-view/authoring.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/collection-view/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/collection-view/client.d.ts +10 -0
- package/plugins/runtime-modules/core/widgets/collection-view/client.js +55 -0
- package/plugins/runtime-modules/core/widgets/collection-view/config.d.ts +94 -88
- package/plugins/runtime-modules/core/widgets/collection-view/config.js +47 -38
- package/plugins/runtime-modules/core/widgets/collection-view/image-preview-grid.d.ts +7 -0
- package/plugins/runtime-modules/core/widgets/collection-view/image-preview-grid.js +16 -0
- package/plugins/runtime-modules/core/widgets/collection-view/plugin.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/collection-view/server.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/color/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/color/client.d.ts +8 -0
- package/plugins/runtime-modules/core/widgets/color/client.js +18 -0
- package/plugins/runtime-modules/core/widgets/color/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/color/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.d.ts +5 -0
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.js +45 -0
- package/plugins/runtime-modules/core/widgets/command-toolbar/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/command-toolbar/client.js +2 -1
- package/plugins/runtime-modules/core/widgets/command-toolbar/config.d.ts +14 -22
- package/plugins/runtime-modules/core/widgets/command-toolbar/config.js +11 -7
- package/plugins/runtime-modules/core/widgets/date-picker/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/date-picker/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/date-picker/config.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/date-picker/config.js +2 -3
- package/plugins/runtime-modules/core/widgets/date-picker/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/date-picker/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/description/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/description/client.d.ts +5 -2
- package/plugins/runtime-modules/core/widgets/description/client.js +10 -9
- package/plugins/runtime-modules/core/widgets/description/config.d.ts +25 -0
- package/plugins/runtime-modules/core/widgets/description/config.js +5 -0
- package/plugins/runtime-modules/core/widgets/description/editor.d.ts +6 -0
- package/plugins/runtime-modules/core/widgets/description/editor.js +129 -0
- package/plugins/runtime-modules/core/widgets/description/plugin.js +4 -2
- package/plugins/runtime-modules/core/widgets/description/server.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/description/server.js +36 -12
- package/plugins/runtime-modules/core/widgets/dimension/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/dimension/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/draft-status/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/draft-status/authoring.js +9 -0
- package/plugins/runtime-modules/core/widgets/draft-status/client.d.ts +21 -0
- package/plugins/runtime-modules/core/widgets/draft-status/client.js +118 -0
- package/plugins/runtime-modules/core/widgets/draft-status/config.d.ts +43 -0
- package/plugins/runtime-modules/core/widgets/draft-status/config.js +37 -0
- package/plugins/runtime-modules/core/widgets/draft-status/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/draft-status/plugin.js +23 -0
- package/plugins/runtime-modules/core/widgets/form/authoring.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/form/config.d.ts +70 -62
- package/plugins/runtime-modules/core/widgets/form/config.js +65 -67
- package/plugins/runtime-modules/core/widgets/form/plugin.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/form/plugin.js +2 -2
- package/plugins/runtime-modules/core/widgets/form-preview/built-in.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/form-preview/built-in.js +1 -0
- package/plugins/runtime-modules/core/widgets/form-preview/client.js +12 -9
- package/plugins/runtime-modules/core/widgets/form-preview/config.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/form-preview/config.js +3 -4
- package/plugins/runtime-modules/core/widgets/form-preview/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/form-preview/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/gallery/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/gallery/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/gallery/config.d.ts +13 -1
- package/plugins/runtime-modules/core/widgets/gallery/config.js +10 -7
- package/plugins/runtime-modules/core/widgets/gallery/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/gallery/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/header-navigation/authoring.js +4 -3
- package/plugins/runtime-modules/core/widgets/header-navigation/client.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/header-navigation/client.js +2 -5
- package/plugins/runtime-modules/core/widgets/header-navigation/config.js +2 -2
- package/plugins/runtime-modules/core/widgets/header-navigation/plugin.js +3 -2
- package/plugins/runtime-modules/core/widgets/html/config.d.ts +1 -7
- package/plugins/runtime-modules/core/widgets/html/config.js +12 -35
- package/plugins/runtime-modules/core/widgets/html/server.js +16 -20
- package/plugins/runtime-modules/core/widgets/icon/authoring.js +2 -2
- package/plugins/runtime-modules/core/widgets/icon/client.d.ts +9 -2
- package/plugins/runtime-modules/core/widgets/icon/client.js +5 -3
- package/plugins/runtime-modules/core/widgets/icon/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/icon/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/icon/editor.d.ts +10 -0
- package/plugins/runtime-modules/core/widgets/icon/editor.js +12 -0
- package/plugins/runtime-modules/core/widgets/image/authoring.js +2 -2
- package/plugins/runtime-modules/core/widgets/image/client.js +9 -6
- package/plugins/runtime-modules/core/widgets/image/config.d.ts +10 -24
- package/plugins/runtime-modules/core/widgets/image/config.js +13 -15
- package/plugins/runtime-modules/core/widgets/image/editor.d.ts +10 -0
- package/plugins/runtime-modules/core/widgets/image/editor.js +100 -0
- package/plugins/runtime-modules/core/widgets/input/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/input/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/input/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/length/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/length/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/locale/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/locale/config.js +1 -2
- package/plugins/runtime-modules/core/widgets/locale/plugin.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/locale/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/markdown/authoring.js +1 -1
- package/plugins/runtime-modules/core/widgets/markdown/config.d.ts +6 -9
- package/plugins/runtime-modules/core/widgets/markdown/config.js +29 -5
- package/plugins/runtime-modules/core/widgets/markdown/editor.d.ts +9 -0
- package/plugins/runtime-modules/core/widgets/markdown/editor.js +104 -0
- package/plugins/runtime-modules/core/widgets/markdown/plugin.js +1 -0
- package/plugins/runtime-modules/core/widgets/markdown/server.d.ts +1 -19
- package/plugins/runtime-modules/core/widgets/markdown/server.js +1 -486
- package/plugins/runtime-modules/core/widgets/markdown-toc/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/client.js +4 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/config.d.ts +1 -6
- package/plugins/runtime-modules/core/widgets/markdown-toc/config.js +0 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/markdown-toc/server.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/markdown-toc/server.js +4 -2
- package/plugins/runtime-modules/core/widgets/multi-select/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/multi-select/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/number-input/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/number-input/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/number-input/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/number-input/config.js +1 -2
- package/plugins/runtime-modules/core/widgets/number-input/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/number-input/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/otp/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/otp/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/otp/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/otp/config.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/otp/config.js +0 -2
- package/plugins/runtime-modules/core/widgets/otp/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/otp/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/page-title/authoring.js +2 -2
- package/plugins/runtime-modules/core/widgets/page-title/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/page-title/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/pagination/client.js +3 -2
- package/plugins/runtime-modules/core/widgets/quick-links/authoring.js +3 -3
- package/plugins/runtime-modules/core/widgets/quick-links/client.js +5 -5
- package/plugins/runtime-modules/core/widgets/quick-links/config.js +2 -2
- package/plugins/runtime-modules/core/widgets/quick-links/items.d.ts +5 -0
- package/plugins/runtime-modules/core/widgets/quick-links/items.js +27 -0
- package/plugins/runtime-modules/core/widgets/quick-links/server.js +1 -1
- package/plugins/runtime-modules/core/widgets/rate/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/rate/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/rate/config.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/rate/config.js +0 -2
- package/plugins/runtime-modules/core/widgets/rate/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/rate/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/record/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/record/authoring.js +8 -0
- package/plugins/runtime-modules/core/widgets/record/client.d.ts +7 -0
- package/plugins/runtime-modules/core/widgets/record/client.js +136 -0
- package/plugins/runtime-modules/core/widgets/record/config.d.ts +186 -0
- package/plugins/runtime-modules/core/widgets/record/config.js +214 -0
- package/plugins/runtime-modules/core/widgets/record/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/record/plugin.js +19 -0
- package/plugins/runtime-modules/core/widgets/record/server.d.ts +7 -0
- package/plugins/runtime-modules/core/widgets/record/server.js +6 -0
- package/plugins/runtime-modules/core/widgets/result/config.d.ts +36 -7
- package/plugins/runtime-modules/core/widgets/result/config.js +1 -5
- package/plugins/runtime-modules/core/widgets/result/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/result/plugin.js +5 -4
- package/plugins/runtime-modules/core/widgets/result/server.d.ts +3 -1
- package/plugins/runtime-modules/core/widgets/result/server.js +4 -4
- package/plugins/runtime-modules/core/widgets/segmented/config.d.ts +1 -1
- package/plugins/runtime-modules/core/widgets/select-box/config.d.ts +2 -1
- package/plugins/runtime-modules/core/widgets/select-box/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/authoring.js +2 -2
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.js +19 -24
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.js +15 -20
- package/plugins/runtime-modules/core/widgets/simple-text/authoring.js +2 -2
- package/plugins/runtime-modules/core/widgets/simple-text/client.d.ts +4 -6
- package/plugins/runtime-modules/core/widgets/simple-text/client.js +15 -32
- package/plugins/runtime-modules/core/widgets/simple-text/config.d.ts +252 -11
- package/plugins/runtime-modules/core/widgets/simple-text/config.js +28 -68
- package/plugins/runtime-modules/core/widgets/simple-text/editor.d.ts +32 -0
- package/plugins/runtime-modules/core/widgets/simple-text/editor.js +143 -0
- package/plugins/runtime-modules/core/widgets/simple-text/marks.d.ts +4 -0
- package/plugins/runtime-modules/core/widgets/simple-text/marks.js +8 -0
- package/plugins/runtime-modules/core/widgets/simple-text/server.js +13 -3
- package/plugins/runtime-modules/core/widgets/slider/authoring.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/slider/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/slider/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/slider/config.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/slider/config.js +1 -5
- package/plugins/runtime-modules/core/widgets/slider/plugin.d.ts +1 -2
- package/plugins/runtime-modules/core/widgets/slider/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/slider/value.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/slider/value.js +7 -0
- package/plugins/runtime-modules/core/widgets/slot-upload/client.js +12 -7
- package/plugins/runtime-modules/core/widgets/slot-upload/config.d.ts +1 -0
- package/plugins/runtime-modules/core/widgets/slot-upload/config.js +1 -0
- package/plugins/runtime-modules/core/widgets/spacer/authoring.d.ts +1 -3
- package/plugins/runtime-modules/core/widgets/spacer/authoring.js +1 -2
- package/plugins/runtime-modules/core/widgets/spacer/client.d.ts +2 -2
- package/plugins/runtime-modules/core/widgets/spacer/config.d.ts +4 -3
- package/plugins/runtime-modules/core/widgets/spacer/config.js +2 -4
- package/plugins/runtime-modules/core/widgets/spacer/plugin.d.ts +2 -3
- package/plugins/runtime-modules/core/widgets/spacer/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/switch/client.js +1 -1
- package/plugins/runtime-modules/core/widgets/switch/config.d.ts +2 -2
- package/plugins/runtime-modules/core/widgets/switch/config.js +14 -7
- package/plugins/runtime-modules/core/widgets/table/client.js +103 -88
- package/plugins/runtime-modules/core/widgets/table/config.d.ts +120 -12
- package/plugins/runtime-modules/core/widgets/table/config.js +62 -74
- package/plugins/runtime-modules/core/widgets/table/plugin.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/table/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets/table/static-resource-editor.d.ts +6 -0
- package/plugins/runtime-modules/core/widgets/table/static-resource-editor.js +10 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/authoring.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/authoring.js +12 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.d.ts +20 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.js +37 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.d.ts +43 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.js +39 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/plugin.d.ts +3 -0
- package/plugins/runtime-modules/core/widgets/theme-mode-switch/plugin.js +18 -0
- package/plugins/runtime-modules/core/widgets/tree/client.js +2 -2
- package/plugins/runtime-modules/core/widgets/tree/config.d.ts +9 -1
- package/plugins/runtime-modules/core/widgets/tree/config.js +24 -28
- package/plugins/runtime-modules/core/widgets/tree/plugin.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/tree/plugin.js +1 -2
- package/plugins/runtime-modules/core/widgets.js +23 -55
- package/plugins/runtime-modules/dashboard/client-data-providers.d.ts +19 -0
- package/plugins/runtime-modules/dashboard/client-data-providers.js +26 -0
- package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.d.ts +9 -0
- package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.js +128 -0
- package/plugins/runtime-modules/dashboard/controller/address.d.ts +0 -2
- package/plugins/runtime-modules/dashboard/controller/address.js +1 -5
- package/plugins/runtime-modules/dashboard/data-providers.d.ts +30 -0
- package/plugins/runtime-modules/dashboard/data-providers.js +34 -0
- package/plugins/runtime-modules/dashboard/definition.d.ts +24 -0
- package/plugins/runtime-modules/dashboard/definition.js +11 -1
- package/plugins/runtime-modules/dashboard/ids.d.ts +6 -0
- package/plugins/runtime-modules/dashboard/ids.js +6 -0
- package/plugins/runtime-modules/dashboard/module.d.ts +1 -28
- package/plugins/runtime-modules/dashboard/module.js +2 -4
- package/plugins/runtime-modules/dashboard/presets.js +35 -55
- package/plugins/runtime-modules/dashboard/services/collection.d.ts +4 -0
- package/plugins/runtime-modules/dashboard/services/collection.js +76 -0
- package/plugins/runtime-modules/dashboard/trees/admin-dashboard-label-set.d.ts +7 -0
- package/plugins/runtime-modules/dashboard/trees/admin-dashboard-label-set.js +26 -0
- package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.d.ts +9 -0
- package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.js +38 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-admin-dashboard-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-admin-dashboard-page-tree.js +87 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-area-dashboard-page-tree.d.ts +9 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-area-dashboard-page-tree.js +87 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.js +103 -0
- package/plugins/runtime-modules/descriptor-compiler.d.ts +14 -3
- package/plugins/runtime-modules/descriptor-compiler.js +144 -37
- package/plugins/runtime-modules/editor/controller/address.d.ts +0 -2
- package/plugins/runtime-modules/editor/controller/address.js +1 -5
- package/plugins/runtime-modules/editor/module.d.ts +1 -28
- package/plugins/runtime-modules/editor/module.js +2 -4
- package/plugins/runtime-modules/editor/presets.js +2 -12
- package/plugins/runtime-modules/editor/trees/editor-label-set.d.ts +8 -0
- package/plugins/runtime-modules/editor/trees/editor-label-set.js +22 -0
- package/plugins/runtime-modules/editor/trees/phi-default-editor-area-preset-tree.d.ts +6 -0
- package/plugins/runtime-modules/editor/trees/phi-default-editor-area-preset-tree.js +213 -0
- package/plugins/runtime-modules/form-builder/module.d.ts +1 -28
- package/plugins/runtime-modules/form-builder/module.js +2 -4
- package/plugins/runtime-modules/groups/controller/client.d.ts +2 -2
- package/plugins/runtime-modules/groups/controller/client.js +30 -64
- package/plugins/runtime-modules/groups/controller/definition.d.ts +13 -2
- package/plugins/runtime-modules/groups/controller/definition.js +11 -3
- package/plugins/runtime-modules/groups/data-providers.d.ts +2 -0
- package/plugins/runtime-modules/groups/data-providers.js +64 -12
- package/plugins/runtime-modules/groups/definition.d.ts +3 -0
- package/plugins/runtime-modules/groups/definition.js +9 -0
- package/plugins/runtime-modules/groups/forms.d.ts +0 -1
- package/plugins/runtime-modules/groups/forms.js +0 -47
- package/plugins/runtime-modules/groups/labels.d.ts +4 -1
- package/plugins/runtime-modules/groups/labels.js +8 -2
- package/plugins/runtime-modules/groups/module.d.ts +1 -335
- package/plugins/runtime-modules/groups/module.js +2 -4
- package/plugins/runtime-modules/groups/presets.d.ts +2 -56
- package/plugins/runtime-modules/groups/presets.js +17 -35
- package/plugins/runtime-modules/groups/services/options.js +5 -4
- package/plugins/runtime-modules/groups/services/table.js +42 -33
- package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.d.ts +13 -0
- package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.js +485 -0
- package/plugins/runtime-modules/groups/trees/phi-default-app-groups-page-tree.d.ts +14 -0
- package/plugins/runtime-modules/groups/trees/phi-default-app-groups-page-tree.js +384 -0
- package/plugins/runtime-modules/localization/cards.d.ts +3 -0
- package/plugins/runtime-modules/localization/cards.js +109 -0
- package/plugins/runtime-modules/localization/controller/client.js +4 -3
- package/plugins/runtime-modules/localization/definition.d.ts +0 -5
- package/plugins/runtime-modules/localization/definition.js +0 -2
- package/plugins/runtime-modules/localization/forms.js +2 -15
- package/plugins/runtime-modules/localization/module.d.ts +1 -372
- package/plugins/runtime-modules/localization/module.js +2 -4
- package/plugins/runtime-modules/localization/presets.d.ts +2 -25
- package/plugins/runtime-modules/localization/presets.js +30 -17
- package/plugins/runtime-modules/localization/server.js +4 -0
- package/plugins/runtime-modules/localization/services/table.js +22 -30
- package/plugins/runtime-modules/localization/trees/admin-locales-label-set.d.ts +8 -0
- package/plugins/runtime-modules/localization/trees/admin-locales-label-set.js +22 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-label-set.d.ts +8 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-label-set.js +22 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-shell.js +51 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.d.ts +56 -0
- package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.js +100 -0
- package/plugins/runtime-modules/localization/trees/phi-default-admin-locales-page-tree.d.ts +7 -0
- package/plugins/runtime-modules/localization/trees/phi-default-admin-locales-page-tree.js +251 -0
- package/plugins/runtime-modules/localization/trees/phi-default-editor-translations-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/localization/trees/phi-default-editor-translations-page-tree.js +325 -0
- package/plugins/runtime-modules/news/authoring-widgets.d.ts +2 -0
- package/plugins/runtime-modules/news/authoring-widgets.js +7 -0
- package/plugins/runtime-modules/news/authoring.d.ts +1 -0
- package/plugins/runtime-modules/news/authoring.js +8 -0
- package/plugins/runtime-modules/news/client-data-providers.d.ts +11 -0
- package/plugins/runtime-modules/news/client-data-providers.js +14 -0
- package/plugins/runtime-modules/news/data-providers.d.ts +133 -0
- package/plugins/runtime-modules/news/data-providers.js +112 -0
- package/plugins/runtime-modules/news/definition.d.ts +165 -0
- package/plugins/runtime-modules/news/definition.js +32 -0
- package/plugins/runtime-modules/news/forms.d.ts +39 -0
- package/plugins/runtime-modules/news/forms.js +204 -0
- package/plugins/runtime-modules/news/ids.d.ts +42 -0
- package/plugins/runtime-modules/news/ids.js +125 -0
- package/plugins/runtime-modules/news/module.d.ts +157 -0
- package/plugins/runtime-modules/news/module.js +12 -0
- package/plugins/runtime-modules/news/presets.d.ts +17 -0
- package/plugins/runtime-modules/news/presets.js +64 -0
- package/plugins/runtime-modules/news/server.d.ts +1 -0
- package/plugins/runtime-modules/news/server.js +18 -0
- package/plugins/runtime-modules/news/services/options.d.ts +3 -0
- package/plugins/runtime-modules/news/services/options.js +35 -0
- package/plugins/runtime-modules/news/services/table.d.ts +14 -0
- package/plugins/runtime-modules/news/services/table.js +144 -0
- package/plugins/runtime-modules/news/trees/editor-news-label-set.d.ts +8 -0
- package/plugins/runtime-modules/news/trees/editor-news-label-set.js +29 -0
- package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.d.ts +65 -0
- package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.js +106 -0
- package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.d.ts +17 -0
- package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.js +462 -0
- package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.d.ts +11 -0
- package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.js +86 -0
- package/plugins/runtime-modules/news/widgets/news-list/authoring.d.ts +2 -0
- package/plugins/runtime-modules/news/widgets/news-list/authoring.js +21 -0
- package/plugins/runtime-modules/news/widgets/news-list/client.d.ts +34 -0
- package/plugins/runtime-modules/news/widgets/news-list/client.js +26 -0
- package/plugins/runtime-modules/news/widgets/news-list/config.d.ts +43 -0
- package/plugins/runtime-modules/news/widgets/news-list/config.js +52 -0
- package/plugins/runtime-modules/news/widgets/news-list/plugin.d.ts +3 -0
- package/plugins/runtime-modules/news/widgets/news-list/plugin.js +8 -0
- package/plugins/runtime-modules/news/widgets/news-list/server.d.ts +14 -0
- package/plugins/runtime-modules/news/widgets/news-list/server.js +82 -0
- package/plugins/runtime-modules/news/widgets.d.ts +2 -0
- package/plugins/runtime-modules/news/widgets.js +16 -0
- package/plugins/runtime-modules/observability/authoring-widgets.d.ts +9 -0
- package/plugins/runtime-modules/observability/authoring-widgets.js +11 -6
- package/plugins/runtime-modules/observability/definition.d.ts +0 -5
- package/plugins/runtime-modules/observability/definition.js +0 -2
- package/plugins/runtime-modules/observability/module.d.ts +0 -5
- package/plugins/runtime-modules/observability/presets.d.ts +2 -30
- package/plugins/runtime-modules/observability/presets.js +10 -19
- package/plugins/runtime-modules/observability/server.js +1 -2
- package/plugins/runtime-modules/observability/trees/admin-logs-label-set.d.ts +8 -0
- package/plugins/runtime-modules/observability/trees/admin-logs-label-set.js +22 -0
- package/plugins/runtime-modules/observability/trees/phi-default-admin-logs-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/observability/trees/phi-default-admin-logs-page-tree.js +313 -0
- package/plugins/runtime-modules/phi-default-site-area-preset-tree.d.ts +11 -0
- package/plugins/runtime-modules/phi-default-site-area-preset-tree.js +633 -0
- package/plugins/runtime-modules/pub-area-preset.d.ts +2 -0
- package/plugins/runtime-modules/pub-area-preset.js +130 -0
- package/plugins/runtime-modules/public/definition.d.ts +14 -3
- package/plugins/runtime-modules/public/definition.js +1 -7
- package/plugins/runtime-modules/public/form-providers.d.ts +29 -0
- package/plugins/runtime-modules/public/form-providers.js +11 -0
- package/plugins/runtime-modules/public/forms.d.ts +3 -0
- package/plugins/runtime-modules/public/forms.js +38 -0
- package/plugins/runtime-modules/public/module.d.ts +46 -1
- package/plugins/runtime-modules/public/module.js +8 -3
- package/plugins/runtime-modules/public/server.js +1 -1
- package/plugins/runtime-modules/public/trees/phi-default-pub-contact-page-tree.d.ts +4 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-contact-page-tree.js +103 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.js +105 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-home-page-tree.d.ts +10 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-home-page-tree.js +79 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-terms-page-tree.d.ts +4 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-terms-page-tree.js +82 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-unsubscribe-page-tree.d.ts +16 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-unsubscribe-page-tree.js +110 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-welcome-page-tree.d.ts +15 -0
- package/plugins/runtime-modules/public/trees/phi-default-pub-welcome-page-tree.js +194 -0
- package/plugins/runtime-modules/public-base-page-references.d.ts +32 -0
- package/plugins/runtime-modules/public-base-page-references.js +43 -0
- package/plugins/runtime-modules/resolver.js +35 -60
- package/plugins/runtime-modules/revisions/controller/client.d.ts +6 -0
- package/plugins/runtime-modules/revisions/controller/client.js +92 -10
- package/plugins/runtime-modules/revisions/controller/definition.d.ts +6 -0
- package/plugins/runtime-modules/revisions/controller/definition.js +17 -0
- package/plugins/runtime-modules/revisions/forms.d.ts +4 -0
- package/plugins/runtime-modules/revisions/forms.js +70 -0
- package/plugins/runtime-modules/revisions/module.d.ts +1 -149
- package/plugins/runtime-modules/revisions/module.js +2 -4
- package/plugins/runtime-modules/revisions/page-ids.d.ts +9 -0
- package/plugins/runtime-modules/revisions/page-ids.js +28 -0
- package/plugins/runtime-modules/revisions/presets.d.ts +2 -141
- package/plugins/runtime-modules/revisions/presets.js +11 -24
- package/plugins/runtime-modules/revisions/server.js +2 -0
- package/plugins/runtime-modules/revisions/services/table.js +13 -15
- package/plugins/runtime-modules/revisions/trees/phi-default-builder-revisions-page-tree.d.ts +14 -0
- package/plugins/runtime-modules/revisions/trees/phi-default-builder-revisions-page-tree.js +506 -0
- package/plugins/runtime-modules/runtime-calendar-adapters.js +1 -1
- package/plugins/runtime-modules/settings.d.ts +28 -4
- package/plugins/runtime-modules/settings.js +60 -5
- package/plugins/runtime-modules/shell-tree-composition.d.ts +3 -0
- package/plugins/runtime-modules/sidebar-route.d.ts +55 -0
- package/plugins/runtime-modules/sidebar-route.js +56 -0
- package/plugins/runtime-modules/site-module-client-manifests.d.ts +2 -0
- package/plugins/runtime-modules/site-module-client-manifests.js +2 -0
- package/plugins/runtime-modules/site-module-placements.d.ts +26 -0
- package/plugins/runtime-modules/site-module-placements.js +33 -0
- package/plugins/runtime-modules/site-modules-client.d.ts +2 -0
- package/plugins/runtime-modules/theme/block-descriptors.d.ts +12 -23
- package/plugins/runtime-modules/theme/block-descriptors.js +12 -27
- package/plugins/runtime-modules/theme/controller/client.d.ts +7 -1
- package/plugins/runtime-modules/theme/controller/definition.d.ts +6 -0
- package/plugins/runtime-modules/theme/controller/definition.js +7 -0
- package/plugins/runtime-modules/theme/controller/server-definition.d.ts +7 -1
- package/plugins/runtime-modules/theme/materialize-images.d.ts +11 -5
- package/plugins/runtime-modules/theme/materialize-images.js +16 -8
- package/plugins/runtime-modules/theme/module.d.ts +1 -79
- package/plugins/runtime-modules/theme/module.js +2 -4
- package/plugins/runtime-modules/theme/page-ids.d.ts +3 -0
- package/plugins/runtime-modules/theme/page-ids.js +36 -0
- package/plugins/runtime-modules/theme/presets.d.ts +2 -141
- package/plugins/runtime-modules/theme/presets.js +11 -24
- package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.d.ts +17 -0
- package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.js +614 -0
- package/plugins/runtime-modules/theme/widgets/brand-controls/authoring.d.ts +25 -25
- package/plugins/runtime-modules/theme/widgets/brand-controls/client.js +311 -117
- package/plugins/runtime-modules/theme/widgets/brand-controls/config.js +2 -2
- package/plugins/runtime-modules/theme-descriptors.d.ts +68 -0
- package/plugins/runtime-modules/theme-descriptors.js +34 -0
- package/plugins/runtime-modules/threads/addresses.d.ts +15 -0
- package/plugins/runtime-modules/threads/addresses.js +32 -0
- package/plugins/runtime-modules/threads/authoring-widgets.d.ts +2 -0
- package/plugins/runtime-modules/threads/authoring-widgets.js +6 -0
- package/plugins/runtime-modules/threads/authoring.d.ts +1 -0
- package/plugins/runtime-modules/threads/authoring.js +8 -0
- package/plugins/runtime-modules/threads/cards.d.ts +3 -0
- package/plugins/runtime-modules/threads/cards.js +87 -0
- package/plugins/runtime-modules/threads/client-data-providers.d.ts +7 -0
- package/plugins/runtime-modules/threads/client-data-providers.js +14 -0
- package/plugins/runtime-modules/threads/client.d.ts +1 -0
- package/plugins/runtime-modules/threads/client.js +7 -0
- package/plugins/runtime-modules/threads/controller/address.d.ts +5 -0
- package/plugins/runtime-modules/threads/controller/address.js +8 -0
- package/plugins/runtime-modules/threads/controller/client.d.ts +85 -0
- package/plugins/runtime-modules/threads/controller/client.js +231 -0
- package/plugins/runtime-modules/threads/controller/definition.d.ts +111 -0
- package/plugins/runtime-modules/threads/controller/definition.js +141 -0
- package/plugins/runtime-modules/threads/data-providers.d.ts +105 -0
- package/plugins/runtime-modules/threads/data-providers.js +116 -0
- package/plugins/runtime-modules/threads/definition.d.ts +150 -0
- package/plugins/runtime-modules/threads/definition.js +54 -0
- package/plugins/runtime-modules/threads/forms.d.ts +38 -0
- package/plugins/runtime-modules/threads/forms.js +267 -0
- package/plugins/runtime-modules/threads/ids.d.ts +10 -0
- package/plugins/runtime-modules/threads/ids.js +15 -0
- package/plugins/runtime-modules/threads/media-spaces.d.ts +14 -0
- package/plugins/runtime-modules/threads/media-spaces.js +22 -0
- package/plugins/runtime-modules/threads/module.d.ts +1 -0
- package/plugins/runtime-modules/threads/module.js +4 -0
- package/plugins/runtime-modules/threads/presets.d.ts +2 -0
- package/plugins/runtime-modules/threads/presets.js +18 -0
- package/plugins/runtime-modules/threads/server.d.ts +1 -0
- package/plugins/runtime-modules/threads/server.js +24 -0
- package/plugins/runtime-modules/threads/services/options.d.ts +3 -0
- package/plugins/runtime-modules/threads/services/options.js +48 -0
- package/plugins/runtime-modules/threads/services/table.d.ts +3 -0
- package/plugins/runtime-modules/threads/services/table.js +130 -0
- package/plugins/runtime-modules/threads/trees/phi-default-app-threads-page-tree.d.ts +23 -0
- package/plugins/runtime-modules/threads/trees/phi-default-app-threads-page-tree.js +775 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/authoring.d.ts +3 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/authoring.js +9 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/client.d.ts +7 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/client.js +445 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/config.d.ts +46 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/config.js +59 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/plugin.d.ts +3 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/plugin.js +9 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/server.d.ts +7 -0
- package/plugins/runtime-modules/threads/widgets/thread-conversation/server.js +24 -0
- package/plugins/runtime-modules/threads/widgets/thread-widget-config.d.ts +42 -0
- package/plugins/runtime-modules/threads/widgets/thread-widget-config.js +51 -0
- package/plugins/runtime-modules/threads/widgets.d.ts +2 -0
- package/plugins/runtime-modules/threads/widgets.js +14 -0
- package/plugins/runtime-modules/user-management/cards.d.ts +3 -0
- package/plugins/runtime-modules/user-management/cards.js +73 -0
- package/plugins/runtime-modules/user-management/controller/client.js +1 -1
- package/plugins/runtime-modules/user-management/definition.d.ts +0 -5
- package/plugins/runtime-modules/user-management/definition.js +0 -2
- package/plugins/runtime-modules/user-management/forms.js +0 -12
- package/plugins/runtime-modules/user-management/module.d.ts +1 -257
- package/plugins/runtime-modules/user-management/module.js +2 -4
- package/plugins/runtime-modules/user-management/presets.d.ts +2 -30
- package/plugins/runtime-modules/user-management/presets.js +10 -19
- package/plugins/runtime-modules/user-management/server.js +4 -0
- package/plugins/runtime-modules/user-management/services/table.js +9 -16
- package/plugins/runtime-modules/user-management/trees/admin-users-label-set.d.ts +8 -0
- package/plugins/runtime-modules/user-management/trees/admin-users-label-set.js +22 -0
- package/plugins/runtime-modules/user-management/trees/phi-default-admin-users-page-tree.d.ts +6 -0
- package/plugins/runtime-modules/user-management/trees/phi-default-admin-users-page-tree.js +558 -0
- package/plugins/runtime-modules/video/authoring-widgets.d.ts +2 -0
- package/plugins/runtime-modules/video/authoring-widgets.js +6 -0
- package/plugins/runtime-modules/video/authoring.d.ts +1 -0
- package/plugins/runtime-modules/video/authoring.js +8 -0
- package/plugins/runtime-modules/video/definition.d.ts +25 -0
- package/plugins/runtime-modules/video/definition.js +28 -0
- package/plugins/runtime-modules/video/ids.d.ts +9 -0
- package/plugins/runtime-modules/video/ids.js +11 -0
- package/plugins/runtime-modules/video/module.d.ts +11 -0
- package/plugins/runtime-modules/video/module.js +4 -0
- package/plugins/runtime-modules/video/providers.d.ts +21 -0
- package/plugins/runtime-modules/video/providers.js +62 -0
- package/plugins/runtime-modules/video/server.d.ts +1 -0
- package/plugins/runtime-modules/video/server.js +15 -0
- package/plugins/runtime-modules/video/widgets/embed/aspect-ratio.d.ts +3 -0
- package/plugins/runtime-modules/video/widgets/embed/aspect-ratio.js +15 -0
- package/plugins/runtime-modules/video/widgets/embed/authoring.d.ts +2 -0
- package/plugins/runtime-modules/video/widgets/embed/authoring.js +51 -0
- package/plugins/runtime-modules/video/widgets/embed/client.d.ts +22 -0
- package/plugins/runtime-modules/video/widgets/embed/client.js +28 -0
- package/plugins/runtime-modules/video/widgets/embed/config.d.ts +101 -0
- package/plugins/runtime-modules/video/widgets/embed/config.js +100 -0
- package/plugins/runtime-modules/video/widgets/embed/plugin.d.ts +3 -0
- package/plugins/runtime-modules/video/widgets/embed/plugin.js +9 -0
- package/plugins/runtime-modules/video/widgets/embed/server.d.ts +14 -0
- package/plugins/runtime-modules/video/widgets/embed/server.js +54 -0
- package/plugins/runtime-modules/video/widgets.d.ts +2 -0
- package/plugins/runtime-modules/video/widgets.js +14 -0
- package/references.d.ts +3 -1
- package/references.js +3 -1
- package/runtime-authoring-client.d.ts +1 -1
- package/runtime-authoring-client.js +1 -1
- package/runtime-controller-client.d.ts +3 -0
- package/runtime-controller-client.js +15 -0
- package/runtime-data-provider-client.d.ts +1 -1
- package/runtime-data-provider-client.js +1 -1
- package/runtime-render-client.d.ts +1 -0
- package/runtime-render-client.js +1 -0
- package/runtime-user-state-client.d.ts +2 -0
- package/runtime-user-state-client.js +2 -0
- package/server-helpers/area-root-door-warmup.d.ts +35 -0
- package/server-helpers/area-root-door-warmup.js +71 -0
- package/server-helpers/area-root-route.js +0 -1
- package/server-helpers/auth-ui-provider.d.ts +2 -0
- package/server-helpers/auth-ui-provider.js +28 -0
- package/server-helpers/cms-link-targets.d.ts +16 -0
- package/server-helpers/cms-link-targets.js +48 -0
- package/server-helpers/cms-request.d.ts +11 -5
- package/server-helpers/cms-request.js +31 -17
- package/server-helpers/cms-review.d.ts +1 -1
- package/server-helpers/cms-root.d.ts +11 -4
- package/server-helpers/cms-root.js +39 -7
- package/server-helpers/cms-route.js +2 -4
- package/server-helpers/public-login-route.d.ts +1 -2
- package/server-helpers/public-login-route.js +18 -6
- package/server-helpers/request-runtime.d.ts +32 -0
- package/server-helpers/request-runtime.js +34 -1
- package/server-helpers/runtime.d.ts +1 -165
- package/server-helpers/runtime.js +42 -22
- package/server-helpers/site-locale.d.ts +8 -0
- package/server-helpers/site-locale.js +18 -32
- package/server-helpers/translate.js +13 -33
- package/server-helpers.d.ts +5 -0
- package/server-helpers.js +11 -0
- package/styles/builder-scaffold.css +1 -1
- package/styles/control-shape.css +77 -3
- package/styles/controls.css +535 -0
- package/styles/layout-authoring-scaffold.css +54 -7
- package/styles/layout.css +87 -17
- package/styles/root.css +27 -2
- package/styles/shell.css +10 -0
- package/theme/antd-css-var-contract.d.ts +2 -3
- package/theme/antd-css-var-contract.js +2 -3
- package/theme/phi-container-breakpoints.d.ts +35 -2
- package/theme/phi-container-breakpoints.js +32 -0
- package/theme/phi-control-shape.d.ts +54 -4
- package/theme/phi-control-shape.js +170 -10
- package/theme/phi-published-root-style.d.ts +1 -1
- package/theme/phi-root-background.server.d.ts +1 -1
- package/theme/phi-server-tokens.d.ts +9 -37
- package/theme/phi-server-tokens.js +7 -1
- package/theme/phi-theme-adoption.d.ts +2 -1
- package/theme/phi-theme-adoption.js +4 -1
- package/theme/phi-theme-blocks.d.ts +19 -0
- package/theme/phi-theme-blocks.js +16 -6
- package/theme/phi-theme-composition.d.ts +3 -3
- package/theme/phi-theme-composition.js +2 -2
- package/theme/phi-theme-ground-image.d.ts +12 -12
- package/theme/phi-theme-ground-image.js +34 -12
- package/theme/phi-theme-mode.d.ts +86 -9
- package/theme/phi-theme-mode.js +128 -19
- package/theme/phi-theme-placeholder-logo.d.ts +19 -0
- package/theme/phi-theme-placeholder-logo.js +31 -0
- package/theme/phi-theme-presets.d.ts +6 -0
- package/theme/phi-theme-presets.js +41 -0
- package/theme/phi-theme-runtime.js +1 -1
- package/theme/phi-theme-tokens.d.ts +79 -0
- package/theme/phi-theme-tokens.js +227 -0
- package/theme/phi-tokens.d.ts +5 -4
- package/theme/phi-tokens.js +41 -4
- package/theme.d.ts +2 -8
- package/theme.js +2 -8
- package/types/auth-manifest.d.ts +7 -1
- package/types/builder.d.ts +5 -2
- package/types/calendar-keys.d.ts +7 -0
- package/types/calendar-keys.js +8 -0
- package/types/calendar.d.ts +16 -1
- package/types/calendar.js +64 -2
- package/types/cms-border-config.d.ts +2 -0
- package/types/cms-border-config.js +44 -0
- package/types/cms-border-source.d.ts +19 -0
- package/types/cms-border-source.js +34 -0
- package/types/cms-config.d.ts +35 -9
- package/types/cms-config.js +48 -58
- package/types/cms-instance-id.d.ts +4 -5
- package/types/cms-instance-id.js +16 -9
- package/types/cms-module-descriptors.d.ts +106 -2
- package/types/cms-mount-policy.d.ts +0 -12
- package/types/cms-mount-policy.js +0 -16
- package/types/cms-overlay-zones.d.ts +36 -0
- package/types/cms-overlay-zones.js +1 -0
- package/types/cms-overlay.d.ts +29 -3
- package/types/cms-overlay.js +20 -6
- package/types/cms-plugins.d.ts +219 -15
- package/types/cms-presets.d.ts +4 -4
- package/types/cms.d.ts +22 -4
- package/types/collection-provider.d.ts +32 -5
- package/types/collection-view-widget.d.ts +67 -0
- package/types/collection-view-widget.js +1 -0
- package/types/core-runtime-controller.js +3 -5
- package/types/core-widget-placements.d.ts +365 -0
- package/types/core-widget-placements.js +3 -0
- package/types/dashboard-cards.d.ts +152 -0
- package/types/dashboard-cards.js +15 -0
- package/types/draft-status.d.ts +23 -0
- package/types/draft-status.js +20 -0
- package/types/form-descriptor.d.ts +2 -140
- package/types/form-descriptor.js +6 -3
- package/types/markdown.d.ts +6 -0
- package/types/markdown.js +1 -0
- package/types/media.d.ts +28 -0
- package/types/news.d.ts +33 -0
- package/types/news.js +1 -0
- package/types/record-widget.d.ts +49 -0
- package/types/record-widget.js +1 -0
- package/types/references.d.ts +18 -30
- package/types/references.js +9 -114
- package/types/renderable-block-geometry.d.ts +85 -0
- package/types/renderable-block-geometry.js +96 -0
- package/types/renderable-block.d.ts +31 -4
- package/types/responsive.d.ts +1 -11
- package/types/responsive.js +5 -8
- package/types/result-widget.d.ts +5 -0
- package/types/result-widget.js +1 -0
- package/types/runtime-condition.d.ts +3 -90
- package/types/runtime-condition.js +7 -164
- package/types/runtime-data-provider.d.ts +13 -2
- package/types/runtime-data-provider.js +25 -5
- package/types/seed.d.ts +32 -0
- package/types/seed.js +15 -0
- package/types/signals.d.ts +53 -5
- package/types/signals.js +52 -38
- package/types/site-config.d.ts +83 -0
- package/types/site-config.js +1 -0
- package/types/site-request-context.d.ts +167 -0
- package/types/site-request-context.js +1 -0
- package/types/site-theme.d.ts +17 -0
- package/types/spacing.d.ts +1 -3
- package/types/spacing.js +5 -14
- package/types/state-machine.d.ts +229 -0
- package/types/state-machine.js +161 -0
- package/types/table-signal-values.d.ts +8 -0
- package/types/table-signal-values.js +71 -0
- package/types/table-widget.d.ts +34 -22
- package/types/table-widget.js +13 -78
- package/types/thread-widget.d.ts +27 -0
- package/types/thread-widget.js +9 -0
- package/types/threads.d.ts +13 -0
- package/types/threads.js +13 -0
- package/types/tree-widget.d.ts +10 -6
- package/types/tree-widget.js +14 -7
- package/types/tree.d.ts +8 -0
- package/types/user-state.d.ts +17 -0
- package/types/user-state.js +17 -0
- package/types/video.d.ts +152 -0
- package/types/video.js +278 -0
- package/types/widget-runtime.d.ts +19 -3
- package/types.d.ts +12 -31
- package/types.js +4 -1
- package/widgets.d.ts +6 -8
- package/widgets.js +3 -4
- package/builder.d.ts +0 -2
- package/builder.js +0 -2
- package/components/controls/phi-dropdown-control.module.css +0 -63
- package/components/controls/phi-expand-indicator.module.css +0 -16
- package/components/controls/phi-icon-picker-labels.d.ts +0 -27
- package/components/controls/phi-icon-picker-labels.js +0 -26
- package/components/controls/phi-table-control.module.css +0 -16
- package/components/controls/phi-tree-control.module.css +0 -22
- package/components/forms/auth-admin-settings-forms.d.ts +0 -15
- package/components/forms/auth-admin-settings-forms.js +0 -349
- package/components/forms/auth-form-provider-registry.d.ts +0 -1
- package/components/forms/auth-form-provider-registry.js +0 -38
- package/components/forms/auth-form-ui-provider.js +0 -7
- package/components/forms/auth-installations-table-service.js +0 -144
- package/components/forms/auth-link-confirmation-contract.d.ts +0 -7
- package/components/forms/auth-link-confirmation-contract.js +0 -8
- package/components/forms/shared-form-plugins.d.ts +0 -4
- package/components/forms/shared-form-plugins.js +0 -171
- package/components/media/asset-collection-service.js +0 -160
- package/components/media/asset-controller-definition.js +0 -128
- package/components/media/asset-controller-mount.d.ts +0 -4
- package/components/media/asset-controller-mount.js +0 -6
- package/components/media/asset-controller-plugin.d.ts +0 -124
- package/components/media/asset-controller-plugin.js +0 -10
- package/components/media/asset-form-field-providers.js +0 -11
- package/components/media/asset-form-ui-provider.js +0 -13
- package/components/media/asset-inspector-addresses.d.ts +0 -4
- package/components/media/asset-inspector-addresses.js +0 -30
- package/components/media/asset-metadata-form.d.ts +0 -243
- package/components/media/asset-metadata-form.js +0 -209
- package/components/media/asset-options-providers.js +0 -69
- package/components/media/media-settings-forms.d.ts +0 -22
- package/components/media/media-settings-forms.js +0 -130
- package/components/media/phi-area-upload-server.d.ts +0 -7
- package/components/media/phi-area-upload-server.js +0 -13
- package/components/media/phi-asset-collection-view-binding.d.ts +0 -9
- package/components/media/phi-asset-collection-view-binding.js +0 -245
- package/components/media/phi-asset-focal-rect-server.d.ts +0 -6
- package/components/media/phi-asset-focal-rect-server.js +0 -6
- package/components/media/phi-image-inspector-server.d.ts +0 -7
- package/components/media/phi-image-inspector-server.js +0 -18
- package/components/media/phi-image-preview-grid-widget.d.ts +0 -7
- package/components/media/phi-image-preview-grid-widget.js +0 -16
- package/components/media/phi-media-scope-controller.d.ts +0 -20
- package/components/media/phi-media-scope-controller.js +0 -398
- package/components/regions/presets/admin-dashboard-label-set.d.ts +0 -22
- package/components/regions/presets/admin-dashboard-label-set.js +0 -50
- package/components/regions/presets/admin-locales-label-set.d.ts +0 -8
- package/components/regions/presets/admin-locales-label-set.js +0 -22
- package/components/regions/presets/admin-logs-label-set.d.ts +0 -8
- package/components/regions/presets/admin-logs-label-set.js +0 -22
- package/components/regions/presets/admin-settings-label-set.d.ts +0 -6
- package/components/regions/presets/admin-settings-label-set.js +0 -18
- package/components/regions/presets/admin-users-label-set.d.ts +0 -8
- package/components/regions/presets/admin-users-label-set.js +0 -22
- package/components/regions/presets/builder-navigation-label-set.d.ts +0 -35
- package/components/regions/presets/builder-navigation-label-set.js +0 -68
- package/components/regions/presets/builder-settings-label-set.d.ts +0 -17
- package/components/regions/presets/builder-settings-label-set.js +0 -34
- package/components/regions/presets/editor-label-set.d.ts +0 -8
- package/components/regions/presets/editor-label-set.js +0 -22
- package/components/regions/presets/editor-shell.js +0 -44
- package/components/regions/presets/editor-translations-label-set.d.ts +0 -8
- package/components/regions/presets/editor-translations-label-set.js +0 -22
- package/components/regions/presets/phi-auth-area-overlay-tree.server.d.ts +0 -8
- package/components/regions/presets/phi-auth-area-overlay-tree.server.js +0 -114
- package/components/regions/presets/phi-auth-runtime-page-tree.d.ts +0 -7
- package/components/regions/presets/phi-auth-runtime-page-tree.js +0 -57
- package/components/regions/presets/phi-avatar-area-overlay-tree.js +0 -12
- package/components/regions/presets/phi-avatar-area-overlay-tree.server.js +0 -104
- package/components/regions/presets/phi-builder-inspector-area-overlay-tree.d.ts +0 -7
- package/components/regions/presets/phi-builder-inspector-area-overlay-tree.js +0 -12
- package/components/regions/presets/phi-builder-inspector-area-overlay-tree.server.d.ts +0 -20
- package/components/regions/presets/phi-builder-inspector-area-overlay-tree.server.js +0 -527
- package/components/regions/presets/phi-default-accounting-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-accounting-page-tree.js +0 -50
- package/components/regions/presets/phi-default-admin-area-preset-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-area-preset-tree.js +0 -252
- package/components/regions/presets/phi-default-admin-auth-settings-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-auth-settings-page-tree.js +0 -290
- package/components/regions/presets/phi-default-admin-dashboard-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-dashboard-page-tree.js +0 -181
- package/components/regions/presets/phi-default-admin-groups-page-tree.d.ts +0 -13
- package/components/regions/presets/phi-default-admin-groups-page-tree.js +0 -409
- package/components/regions/presets/phi-default-admin-locales-page-tree.d.ts +0 -7
- package/components/regions/presets/phi-default-admin-locales-page-tree.js +0 -264
- package/components/regions/presets/phi-default-admin-logs-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-logs-page-tree.js +0 -287
- package/components/regions/presets/phi-default-admin-media-settings-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-media-settings-page-tree.js +0 -94
- package/components/regions/presets/phi-default-admin-settings-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-settings-page-tree.js +0 -82
- package/components/regions/presets/phi-default-admin-users-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-admin-users-page-tree.js +0 -568
- package/components/regions/presets/phi-default-app-groups-page-tree.d.ts +0 -14
- package/components/regions/presets/phi-default-app-groups-page-tree.js +0 -315
- package/components/regions/presets/phi-default-app-profile-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-app-profile-page-tree.js +0 -29
- package/components/regions/presets/phi-default-area-dashboard-page-tree.d.ts +0 -9
- package/components/regions/presets/phi-default-area-dashboard-page-tree.js +0 -67
- package/components/regions/presets/phi-default-builder-area-preset-tree.d.ts +0 -131
- package/components/regions/presets/phi-default-builder-area-preset-tree.js +0 -3580
- package/components/regions/presets/phi-default-builder-dashboard-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-builder-dashboard-page-tree.js +0 -112
- package/components/regions/presets/phi-default-builder-settings-page-tree.d.ts +0 -12
- package/components/regions/presets/phi-default-builder-settings-page-tree.js +0 -55
- package/components/regions/presets/phi-default-editor-area-preset-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-editor-area-preset-tree.js +0 -253
- package/components/regions/presets/phi-default-editor-translations-page-tree.d.ts +0 -6
- package/components/regions/presets/phi-default-editor-translations-page-tree.js +0 -323
- package/components/regions/presets/phi-default-pub-confirm-page-tree.d.ts +0 -5
- package/components/regions/presets/phi-default-pub-confirm-page-tree.js +0 -175
- package/components/regions/presets/phi-default-pub-contact-page-tree.d.ts +0 -4
- package/components/regions/presets/phi-default-pub-contact-page-tree.js +0 -112
- package/components/regions/presets/phi-default-pub-error-page-tree.d.ts +0 -8
- package/components/regions/presets/phi-default-pub-error-page-tree.js +0 -128
- package/components/regions/presets/phi-default-pub-home-page-tree.d.ts +0 -10
- package/components/regions/presets/phi-default-pub-home-page-tree.js +0 -90
- package/components/regions/presets/phi-default-pub-login-page-tree.d.ts +0 -10
- package/components/regions/presets/phi-default-pub-login-page-tree.js +0 -111
- package/components/regions/presets/phi-default-pub-registration-page-tree.d.ts +0 -10
- package/components/regions/presets/phi-default-pub-registration-page-tree.js +0 -127
- package/components/regions/presets/phi-default-pub-reset-password-page-tree.d.ts +0 -5
- package/components/regions/presets/phi-default-pub-reset-password-page-tree.js +0 -159
- package/components/regions/presets/phi-default-pub-terms-page-tree.d.ts +0 -4
- package/components/regions/presets/phi-default-pub-terms-page-tree.js +0 -93
- package/components/regions/presets/phi-default-pub-welcome-page-tree.d.ts +0 -17
- package/components/regions/presets/phi-default-pub-welcome-page-tree.js +0 -110
- package/components/regions/presets/phi-default-site-area-preset-tree.d.ts +0 -11
- package/components/regions/presets/phi-default-site-area-preset-tree.js +0 -640
- package/components/regions/presets/phi-login-form-nodes.d.ts +0 -46
- package/components/regions/presets/phi-login-form-nodes.js +0 -210
- package/components/regions/presets/profile-label-set.d.ts +0 -11
- package/components/regions/presets/profile-label-set.js +0 -28
- package/components/regions/presets/pub.d.ts +0 -2
- package/components/regions/presets/pub.js +0 -130
- package/components/runtime/accounting-base-controller-plugin.d.ts +0 -1
- package/components/runtime/accounting-base-controller-plugin.js +0 -4
- package/components/runtime/app-base-controller-plugin.d.ts +0 -1
- package/components/runtime/app-base-controller-plugin.js +0 -4
- package/components/runtime/area-base-controller-addresses.d.ts +0 -23
- package/components/runtime/area-base-controller-addresses.js +0 -26
- package/components/runtime/area-base-controller-client-factory.d.ts +0 -2
- package/components/runtime/area-base-controller-client-factory.js +0 -8
- package/components/runtime/area-base-controller-definitions.d.ts +0 -106
- package/components/runtime/area-base-controller-definitions.js +0 -75
- package/components/runtime/auth-controller-plugin.d.ts +0 -1
- package/components/runtime/auth-controller-plugin.js +0 -172
- package/components/runtime/auth-controller-server-definition.d.ts +0 -62
- package/components/runtime/auth-controller-server-definition.js +0 -3
- package/components/runtime/auth-overlay-ids.d.ts +0 -23
- package/components/runtime/auth-overlay-ids.js +0 -27
- package/components/runtime/avatar-overlay-ids.js +0 -19
- package/components/runtime/public-base-controller-plugin.d.ts +0 -1
- package/components/runtime/public-base-controller-plugin.js +0 -4
- package/components/shell/phi-management-icon.d.ts +0 -4
- package/components/shell/phi-management-icon.js +0 -59
- package/components/tables/client/phi-static-table-resource-editor.d.ts +0 -6
- package/components/tables/client/phi-static-table-resource-editor.js +0 -10
- package/components/tables/phi-plain-table.module.css +0 -34
- package/components/widgets/area-menu-items.d.ts +0 -16
- package/components/widgets/area-menu-items.js +0 -26
- package/components/widgets/builder/command-toolbar-authoring-tools.d.ts +0 -5
- package/components/widgets/builder/command-toolbar-authoring-tools.js +0 -41
- package/components/widgets/builder/icon-editor.d.ts +0 -10
- package/components/widgets/builder/icon-editor.js +0 -10
- package/components/widgets/builder/internal-builder.d.ts +0 -22
- package/components/widgets/builder/internal-builder.js +0 -8
- package/components/widgets/builder/simple-text-editor.d.ts +0 -39
- package/components/widgets/builder/simple-text-editor.js +0 -121
- package/components/widgets/client/area-menu-preview.d.ts +0 -5
- package/components/widgets/client/area-menu-preview.js +0 -18
- package/components/widgets/client/card-editor.d.ts +0 -11
- package/components/widgets/client/card-editor.js +0 -46
- package/components/widgets/client/collection-view-widget.d.ts +0 -10
- package/components/widgets/client/collection-view-widget.js +0 -44
- package/components/widgets/client/description-editor.d.ts +0 -6
- package/components/widgets/client/description-editor.js +0 -130
- package/components/widgets/client/image-editor.d.ts +0 -10
- package/components/widgets/client/image-editor.js +0 -100
- package/components/widgets/client/markdown-editor.d.ts +0 -9
- package/components/widgets/client/markdown-editor.js +0 -80
- package/components/widgets/client/phi-color-widget.d.ts +0 -34
- package/components/widgets/client/phi-color-widget.js +0 -45
- package/components/widgets/client/shared/core-table-providers.js +0 -13
- package/components/widgets/client/shared/phi-card-collection-view-binding.d.ts +0 -9
- package/components/widgets/client/shared/phi-card-collection-view-binding.js +0 -106
- package/components/widgets/client/use-table-provider-mutation.d.ts +0 -1
- package/components/widgets/client/use-table-provider-mutation.js +0 -2
- package/components/widgets/label-sets/avatar.d.ts +0 -26
- package/components/widgets/label-sets/editor-translations.d.ts +0 -4
- package/components/widgets/label-sets/editor-translations.js +0 -100
- package/components/widgets/label-sets/footer.d.ts +0 -8
- package/components/widgets/label-sets/footer.js +0 -22
- package/components/widgets/label-types/editor-translations.d.ts +0 -53
- package/components/widgets/quick-links-items.d.ts +0 -6
- package/components/widgets/quick-links-items.js +0 -32
- package/gateway/data-source-fetch.d.ts +0 -12
- package/gateway/data-source-fetch.js +0 -46
- package/gateway/media-proxy.d.ts +0 -9
- package/gateway/media-proxy.js +0 -12
- package/gateway/mutation-fetch.d.ts +0 -5
- package/gateway/mutation-fetch.js +0 -71
- package/gateway.d.ts +0 -13
- package/gateway.js +0 -13
- package/helpers/cms-page-addresses.d.ts +0 -32
- package/helpers/cms-page-addresses.js +0 -77
- package/helpers/css-length.d.ts +0 -1
- package/helpers/css-length.js +0 -10
- package/helpers/site-structure.d.ts +0 -13
- package/helpers/site-structure.js +0 -82
- package/next/module-diagnostics-route.d.ts +0 -37
- package/next/module-diagnostics-route.js +0 -64
- package/next/navigation-target-route.d.ts +0 -8
- package/next/navigation-target-route.js +0 -216
- package/plugins/runtime-modules/accounting/client.d.ts +0 -1
- package/plugins/runtime-modules/accounting/client.js +0 -7
- package/plugins/runtime-modules/app/client.d.ts +0 -1
- package/plugins/runtime-modules/app/client.js +0 -7
- package/plugins/runtime-modules/auth/ui-provider.d.ts +0 -2
- package/plugins/runtime-modules/auth/ui-provider.js +0 -29
- package/plugins/runtime-modules/builder/clients/inline-text-editor.d.ts +0 -31
- package/plugins/runtime-modules/builder/clients/inline-text-editor.js +0 -44
- package/plugins/runtime-modules/builder/navigation-signals.d.ts +0 -36
- package/plugins/runtime-modules/builder/navigation-signals.js +0 -88
- package/plugins/runtime-modules/builder/page-reference-picker.d.ts +0 -16
- package/plugins/runtime-modules/builder/page-reference-picker.js +0 -43
- package/plugins/runtime-modules/builder/root-node-css-size.d.ts +0 -1
- package/plugins/runtime-modules/builder/root-node-css-size.js +0 -10
- package/plugins/runtime-modules/builder/runtime-module-defaults.d.ts +0 -3
- package/plugins/runtime-modules/builder/runtime-module-defaults.js +0 -41
- package/plugins/runtime-modules/builder/signal-route-config.d.ts +0 -3
- package/plugins/runtime-modules/builder/signal-route-config.js +0 -37
- package/plugins/runtime-modules/builder/widgets/draft-status/authoring-plugin.d.ts +0 -3
- package/plugins/runtime-modules/builder/widgets/draft-status/authoring-plugin.js +0 -8
- package/plugins/runtime-modules/builder/widgets/draft-status/authoring.d.ts +0 -4
- package/plugins/runtime-modules/builder/widgets/draft-status/authoring.js +0 -228
- package/plugins/runtime-modules/builder/widgets/draft-status/plugin.d.ts +0 -3
- package/plugins/runtime-modules/builder/widgets/draft-status/plugin.js +0 -8
- package/plugins/runtime-modules/builder/workspace-view-model.d.ts +0 -4
- package/plugins/runtime-modules/builder/workspace-view-model.js +0 -24
- package/plugins/runtime-modules/client-state.d.ts +0 -5
- package/plugins/runtime-modules/client-state.js +0 -17
- package/plugins/runtime-modules/core/widgets/account/index.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/account/index.js +0 -2
- package/plugins/runtime-modules/core/widgets/area-menu/authoring.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/area-menu/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/area-menu/client.d.ts +0 -11
- package/plugins/runtime-modules/core/widgets/area-menu/client.js +0 -61
- package/plugins/runtime-modules/core/widgets/area-menu/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/area-menu/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/area-menu/index.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/area-menu/index.js +0 -2
- package/plugins/runtime-modules/core/widgets/area-menu/plugin.d.ts +0 -4
- package/plugins/runtime-modules/core/widgets/area-menu/plugin.js +0 -11
- package/plugins/runtime-modules/core/widgets/area-menu/server.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/area-menu/server.js +0 -14
- package/plugins/runtime-modules/core/widgets/card/client.d.ts +0 -37
- package/plugins/runtime-modules/core/widgets/card/client.js +0 -64
- package/plugins/runtime-modules/core/widgets/footer/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/footer/authoring.js +0 -22
- package/plugins/runtime-modules/core/widgets/footer/client.d.ts +0 -21
- package/plugins/runtime-modules/core/widgets/footer/client.js +0 -30
- package/plugins/runtime-modules/core/widgets/footer/config.d.ts +0 -31
- package/plugins/runtime-modules/core/widgets/footer/config.js +0 -34
- package/plugins/runtime-modules/core/widgets/footer/index.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/footer/index.js +0 -1
- package/plugins/runtime-modules/core/widgets/footer/plugin.d.ts +0 -4
- package/plugins/runtime-modules/core/widgets/footer/plugin.js +0 -9
- package/plugins/runtime-modules/core/widgets/footer/server.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/footer/server.js +0 -46
- package/plugins/runtime-modules/core/widgets/form/built-in.d.ts +0 -15
- package/plugins/runtime-modules/core/widgets/form/built-in.js +0 -74
- package/plugins/runtime-modules/core/widgets/html/index.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/html/index.js +0 -1
- package/plugins/runtime-modules/core/widgets/icon/index.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/icon/index.js +0 -1
- package/plugins/runtime-modules/core/widgets/markdown/client.d.ts +0 -72
- package/plugins/runtime-modules/core/widgets/markdown/client.js +0 -141
- package/plugins/runtime-modules/core/widgets/profile-email/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/profile-email/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/profile-email/client.d.ts +0 -28
- package/plugins/runtime-modules/core/widgets/profile-email/client.js +0 -96
- package/plugins/runtime-modules/core/widgets/profile-email/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/profile-email/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/profile-email/plugin.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/profile-email/plugin.js +0 -10
- package/plugins/runtime-modules/core/widgets/profile-email/server.d.ts +0 -8
- package/plugins/runtime-modules/core/widgets/profile-email/server.js +0 -16
- package/plugins/runtime-modules/core/widgets/profile-locale/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/profile-locale/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/profile-locale/client.d.ts +0 -20
- package/plugins/runtime-modules/core/widgets/profile-locale/client.js +0 -107
- package/plugins/runtime-modules/core/widgets/profile-locale/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/profile-locale/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/profile-locale/plugin.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/profile-locale/plugin.js +0 -10
- package/plugins/runtime-modules/core/widgets/profile-locale/server.d.ts +0 -8
- package/plugins/runtime-modules/core/widgets/profile-locale/server.js +0 -16
- package/plugins/runtime-modules/core/widgets/profile-name/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/profile-name/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/profile-name/client.d.ts +0 -23
- package/plugins/runtime-modules/core/widgets/profile-name/client.js +0 -96
- package/plugins/runtime-modules/core/widgets/profile-name/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/profile-name/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/profile-name/plugin.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/profile-name/plugin.js +0 -10
- package/plugins/runtime-modules/core/widgets/profile-name/server.d.ts +0 -8
- package/plugins/runtime-modules/core/widgets/profile-name/server.js +0 -16
- package/plugins/runtime-modules/core/widgets/profile-overview/authoring.d.ts +0 -2
- package/plugins/runtime-modules/core/widgets/profile-overview/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/profile-overview/client.d.ts +0 -19
- package/plugins/runtime-modules/core/widgets/profile-overview/client.js +0 -73
- package/plugins/runtime-modules/core/widgets/profile-overview/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/profile-overview/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/profile-overview/plugin.d.ts +0 -4
- package/plugins/runtime-modules/core/widgets/profile-overview/plugin.js +0 -10
- package/plugins/runtime-modules/core/widgets/profile-overview/server.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/profile-overview/server.js +0 -16
- package/plugins/runtime-modules/core/widgets/profile-password/authoring.d.ts +0 -3
- package/plugins/runtime-modules/core/widgets/profile-password/authoring.js +0 -8
- package/plugins/runtime-modules/core/widgets/profile-password/client.d.ts +0 -27
- package/plugins/runtime-modules/core/widgets/profile-password/client.js +0 -91
- package/plugins/runtime-modules/core/widgets/profile-password/config.d.ts +0 -12
- package/plugins/runtime-modules/core/widgets/profile-password/config.js +0 -14
- package/plugins/runtime-modules/core/widgets/profile-password/plugin.d.ts +0 -5
- package/plugins/runtime-modules/core/widgets/profile-password/plugin.js +0 -10
- package/plugins/runtime-modules/core/widgets/profile-password/server.d.ts +0 -8
- package/plugins/runtime-modules/core/widgets/profile-password/server.js +0 -16
- package/plugins/runtime-modules/core/widgets/quick-links/index.d.ts +0 -1
- package/plugins/runtime-modules/core/widgets/quick-links/index.js +0 -1
- package/plugins/runtime-modules/observability/widgets/log-detail/authoring.d.ts +0 -3
- package/plugins/runtime-modules/observability/widgets/log-detail/authoring.js +0 -8
- package/plugins/runtime-modules/observability/widgets/log-detail/client.d.ts +0 -56
- package/plugins/runtime-modules/observability/widgets/log-detail/client.js +0 -125
- package/plugins/runtime-modules/observability/widgets/log-detail/config.d.ts +0 -58
- package/plugins/runtime-modules/observability/widgets/log-detail/config.js +0 -71
- package/plugins/runtime-modules/observability/widgets/log-detail/plugin.d.ts +0 -3
- package/plugins/runtime-modules/observability/widgets/log-detail/plugin.js +0 -8
- package/plugins/runtime-modules/observability/widgets/log-detail/server.d.ts +0 -7
- package/plugins/runtime-modules/observability/widgets/log-detail/server.js +0 -13
- package/plugins/runtime-modules/observability/widgets.d.ts +0 -2
- package/plugins/runtime-modules/observability/widgets.js +0 -16
- package/plugins/runtime-modules/public/client.d.ts +0 -1
- package/plugins/runtime-modules/public/client.js +0 -7
- package/plugins/runtime-modules/theme/blocks/alpine-ground-image.d.ts +0 -17
- package/plugins/runtime-modules/theme/blocks/alpine-ground-image.js +0 -17
- package/plugins/runtime-modules/theme/blocks/alpine-ground.jpg +0 -0
- package/plugins/runtime-modules/theme/blocks/alpine.d.ts +0 -19
- package/plugins/runtime-modules/theme/blocks/alpine.js +0 -76
- package/plugins/runtime-modules/theme/theme-descriptors.d.ts +0 -80
- package/plugins/runtime-modules/theme/theme-descriptors.js +0 -34
- package/theme/phi-theme-brand-logo.d.ts +0 -12
- package/theme/phi-theme-brand-logo.js +0 -12
- /package/components/widgets/label-types/{editor-translations.js → auth-workflow.js} +0 -0
- /package/{components/media/asset-controller-definition.d.ts → plugins/runtime-modules/asset/controller/definition.d.ts} +0 -0
- /package/{components/media/asset-form-field-providers.d.ts → plugins/runtime-modules/asset/form-providers.d.ts} +0 -0
- /package/{components/media/asset-form-ui-provider.d.ts → plugins/runtime-modules/asset/form-ui-provider.d.ts} +0 -0
- /package/{components/media/asset-collection-service.d.ts → plugins/runtime-modules/asset/services/collection.d.ts} +0 -0
- /package/{components/media/asset-options-providers.d.ts → plugins/runtime-modules/asset/services/options.d.ts} +0 -0
- /package/{components/forms/auth-form-ui-provider.d.ts → plugins/runtime-modules/auth/form-ui-provider.d.ts} +0 -0
- /package/{components/forms/auth-installations-table-service.d.ts → plugins/runtime-modules/auth/services/installations-table.d.ts} +0 -0
- /package/{components/runtime/avatar-overlay-ids.d.ts → plugins/runtime-modules/avatar/addresses.d.ts} +0 -0
- /package/{components/widgets/label-sets/avatar.js → plugins/runtime-modules/avatar/labels.js} +0 -0
- /package/{components/regions/presets/phi-avatar-area-overlay-tree.d.ts → plugins/runtime-modules/avatar/overlay-tree.d.ts} +0 -0
- /package/{components/regions/presets/phi-avatar-area-overlay-tree.server.d.ts → plugins/runtime-modules/avatar/overlay-tree.server.d.ts} +0 -0
- /package/{components/widgets/client/shared/core-table-providers.d.ts → plugins/runtime-modules/core/services/table.d.ts} +0 -0
- /package/{components/regions/presets/editor-shell.d.ts → plugins/runtime-modules/localization/trees/editor-translations-shell.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,2011 +1,121 @@
|
|
|
1
1
|
# @phis/ui
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
[
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
and
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
- Non-staff CMS areas `public` and `app` should fall back in this order:
|
|
123
|
-
- own DB-backed shell instance
|
|
124
|
-
- public DB-backed shell instance
|
|
125
|
-
- area-appropriate code-owned shell preset
|
|
126
|
-
- If an area has no dedicated code-owned shell preset in `phis-ui`, it should fall back to the public shell preset on read.
|
|
127
|
-
- That fallback does not change persistence ownership: saving in an area must still create or update that area's own revision-backed shell state.
|
|
128
|
-
- Staff role to area mapping must follow this contract:
|
|
129
|
-
- `Admin -> /admin`
|
|
130
|
-
- `Developer -> /admin`
|
|
131
|
-
- `Builder -> /builder`
|
|
132
|
-
- `Author -> /editor`
|
|
133
|
-
- `Publisher -> /editor`
|
|
134
|
-
- `Supporter -> /app`
|
|
135
|
-
- `Accountant -> /accounting`
|
|
136
|
-
- `builder` is the structural and design-authoring area.
|
|
137
|
-
- `editor` is the content and publishing area.
|
|
138
|
-
- `admin` is the shared control-plane host; contribution policies distinguish Admin-only surfaces
|
|
139
|
-
from Developer tooling.
|
|
140
|
-
- Staff Areas remain role-selected; authenticated non-staff users resolve to `app`.
|
|
141
|
-
- Missing CMS pages should resolve to a normal `404`, not to a fallback shell guess.
|
|
142
|
-
- `app/[root]/layout.tsx` should stay a thin site-owned wrapper that calls shared CMS root rendering.
|
|
143
|
-
- `app/[root]/[[...path]]/page.tsx` should stay a thin site-owned wrapper that calls shared page rendering.
|
|
144
|
-
- `PhiCmsRootLayout` owns root resolution, locale/special-area normalization, request runtime resolution, the stable area shell, access boundary, and stable shell slot placement.
|
|
145
|
-
- `PhiCmsRootPage` should primarily resolve and supply page payload for the shell's page-capable slots and reuse the already-resolved root/runtime scope.
|
|
146
|
-
- `PhiCmsRootSlotPage` owns shared rendering for one page-owned shell slot and is the intended target for thin site-owned parallel-route wrappers.
|
|
147
|
-
- Shell slot placement and page payload are separate concerns:
|
|
148
|
-
- the outer shell owns placement, sticky behavior, offset handling, z-index, and shell-relative sizing
|
|
149
|
-
- the page owns the payload tree and region config for page-capable slots
|
|
150
|
-
- The stable shell must expose placeholder slots for:
|
|
151
|
-
- `header_bottom`
|
|
152
|
-
- `hero`
|
|
153
|
-
- `sider_right`
|
|
154
|
-
- `footer_top`
|
|
155
|
-
- `content`
|
|
156
|
-
- In the target contract, `content` is the only truly page-internal region; the other page-capable regions are shell-mounted placeholders that receive page-owned payload.
|
|
157
|
-
- Under a stable `[root]` layout, those page-owned shell slots should be delivered through dedicated App Router parallel routes rather than by resolving page payload directly inside the stable layout render, so client navigation refreshes the slot payload correctly without a client fetch workaround.
|
|
158
|
-
- Shared CMS resolution must keep two explicit runtime classes:
|
|
159
|
-
- fast published-live path for normal live requests
|
|
160
|
-
- authoring/preview path for builder and `revision=<id>` requests
|
|
161
|
-
- Normal published-live requests must not pay draft-preview or builder overhead.
|
|
162
|
-
- `/public` and `/app` are the primary live-performance paths and should stay published-only unless an explicit preview request is active.
|
|
163
|
-
- Authoring and preview requests may pay extra cost for cookies, role checks, draft reads, and additional request metadata.
|
|
164
|
-
- Layout and page resolution must consume one shared normalized request context for the active request.
|
|
165
|
-
- The consuming site may transport normalized request metadata into shared code through thin wrappers or proxies, but it must not re-implement CMS area/page resolution, redirect rules, or preview semantics.
|
|
166
|
-
- If a header bridge is unavoidable, it must stay one small fixed request-context transport surface, not multiple competing transport channels for the same fact.
|
|
167
|
-
- Public routes should look like `/{locale}/...`.
|
|
168
|
-
- Special-area routes should look like `/app/...`, `/admin/...`, `/builder/...`, `/editor/...`, and `/accounting/...`.
|
|
169
|
-
- These root classes are mutually exclusive: a Special Area must never be prefixed by a locale. Its
|
|
170
|
-
effective locale comes from the resolved request/profile/cookie fallback rather than its URL path.
|
|
171
|
-
- Shared shells in `@phis/ui` place resolved region slots into one neutral CMS shell surface.
|
|
172
|
-
- Shared server helpers should bind to a request-scoped runtime contract rather than reading environment variables implicitly.
|
|
173
|
-
- v1 favors explicit contract changes over compatibility shims. Do not preserve old and new shapes in parallel when a contract can be updated directly.
|
|
174
|
-
- `@phis/ui` must not define real App Router entries such as site-owned `page.tsx`, `layout.tsx`, `route.ts`, `loading.tsx`, or `error.tsx`.
|
|
175
|
-
|
|
176
|
-
### Layering
|
|
177
|
-
|
|
178
|
-
- `shells`: high-level shell orchestration.
|
|
179
|
-
- `regions`: CMS area and page regions such as `header_top`, `header_main`, `header_bottom`, `hero`, `content`, `sider_left`, `sider_right`, `footer_top`, `footer_main`, `footer_bottom`, and `drawer_right`, rendered through one shared CMS shell and generic region containers.
|
|
180
|
-
- `layouts`: internal structural composition components and CMS layout plugin implementations. Raw implementation files live under `components/layouts/*`; interactive client inners live under `components/layouts/clients/*`.
|
|
181
|
-
- `plugins/runtime`: shared renderer-owned runtime helpers such as slot-size policy resolution and slot-child framing. These are infrastructure, not layout or widget implementations.
|
|
182
|
-
- Layouts own both topology and optional visible-container config. `layoutKind` identifies the structural topology (`flex`, `stack`, `grid`, `split`, `threecol`, `masonry`, `content`, `form`).
|
|
183
|
-
- `widgets`: internal high-level widget implementations and CMS widget plugin implementations.
|
|
184
|
-
- normal CMS-backed widgets are split across `components/widgets/config/*`, `components/widgets/server/*`, `components/widgets/client/*`, and `components/widgets/builder/*`
|
|
185
|
-
- widget-owned canonical content persistence metadata such as `contentBinding` belongs in `components/widgets/config/*`
|
|
186
|
-
- lower-level interactive client inners may still live under `components/widgets/client/*`, including shared helpers under `components/widgets/client/shared/*`
|
|
187
|
-
- special non-standard runtime helpers live under `components/widgets/built-in/*`
|
|
188
|
-
- rich-text widgets should keep their editor foundation on MIT-safe OSS dependencies only
|
|
189
|
-
- do not introduce shared runtime dependencies on plan-gated or Pro editor UI packages when the same behavior can be built on top of OSS editor cores
|
|
190
|
-
- `modals`: self-contained modal containers.
|
|
191
|
-
- `forms`: low-level presentational form building blocks.
|
|
192
|
-
- `navigation`: shared navigation components and link primitives.
|
|
193
|
-
- `state`: transient scoped UI/runtime state helpers shared across widgets, builder surfaces, and other client-side integrations.
|
|
194
|
-
|
|
195
|
-
## Drag And Drop Contract
|
|
196
|
-
|
|
197
|
-
- Drag and drop must reuse the existing shared contracts:
|
|
198
|
-
- `RenderableBlock.capabilities.draggable`
|
|
199
|
-
- `RenderableBlock.capabilities.droppable`
|
|
200
|
-
- `runtimeSignals`
|
|
201
|
-
- the shared runtime signal bus
|
|
202
|
-
- Do not introduce a second isolated widget-local drag/drop contract when the shared block and signal contracts already cover the same ownership.
|
|
203
|
-
- Low-level pointer orchestration may use `dnd-kit`, native browser DnD, or another local interaction engine.
|
|
204
|
-
- That engine is an implementation detail.
|
|
205
|
-
- It must not become the public shared DnD contract.
|
|
206
|
-
- In the builder, `dnd-kit` is the preferred default for new DnD interactions unless a stronger reason requires a different engine.
|
|
207
|
-
- That preference still does not change the public contract; plugins and backend-facing contracts must stay engine-agnostic.
|
|
208
|
-
- The shared contract is semantic:
|
|
209
|
-
- `capabilities` answers whether a block or subpart participates at all
|
|
210
|
-
- `runtimeSignals.dragDrop` declares what payload types a plugin exposes or accepts
|
|
211
|
-
- runtime signals transport semantic drag/drop state and committed outcomes, not pixel-level pointer movement
|
|
212
|
-
- New widgets and layouts that participate in DnD must follow this split:
|
|
213
|
-
- interaction engine locally
|
|
214
|
-
- semantic contract in shared types
|
|
215
|
-
- semantic lifecycle on the signal bus
|
|
216
|
-
- Shared payload types should be stable and namespaced strings such as:
|
|
217
|
-
- `navigation:item`
|
|
218
|
-
- `navigation:page`
|
|
219
|
-
- `cms:widget`
|
|
220
|
-
- `cms:layout`
|
|
221
|
-
- `cms:slot`
|
|
222
|
-
- `media:asset`
|
|
223
|
-
- Shared drop modes should use the stable set:
|
|
224
|
-
- `before`
|
|
225
|
-
- `after`
|
|
226
|
-
- `child`
|
|
227
|
-
- `replace`
|
|
228
|
-
- `append`
|
|
229
|
-
- `channel: "drag"` is the shared renderable-block drag channel.
|
|
230
|
-
- Drag start uses `action: "start"` and semantic JSON metadata.
|
|
231
|
-
- Drag updates use `action: "change"` and semantic JSON metadata.
|
|
232
|
-
- Drag end/cancel uses `action: "stop"`.
|
|
233
|
-
- `channel: "drop"` is the shared committed drop channel.
|
|
234
|
-
- Drop commits use `action: "drop"` and semantic JSON metadata.
|
|
235
|
-
- Drop-target hover or acceptance state may use `action: "change"` on `drop` when needed.
|
|
236
|
-
- Drag/drop values may carry payload type, sender key, receiver key, drop mode, and acceptance state.
|
|
237
|
-
- Drag/drop signals must not be used as a high-frequency pointer transport stream.
|
|
238
|
-
- New widget or layout code must not invent ad hoc `onWidgetDrop`, `dragPayload`, `dropKind`, or similar parallel contracts when the existing shared contract can express the same intent.
|
|
239
|
-
- A shared widget editor scaffold may expose a drag handle when the widget declares `capabilities.draggable`.
|
|
240
|
-
- the handle and pointer sensors belong to the builder interaction layer, not to each widget implementation
|
|
241
|
-
- moving a widget between slots remains a builder draft mutation governed by the parent slot contract
|
|
242
|
-
- semantic drag lifecycle and committed drop outcomes still use the shared DnD capabilities and signal protocols above
|
|
243
|
-
- pointer coordinates and engine-local collision state never become persisted CMS or runtime signal data
|
|
244
|
-
|
|
245
|
-
## Root Theme And CSS Contract
|
|
246
|
-
|
|
247
|
-
- `PhiRootLayout` is the global provider host only.
|
|
248
|
-
- It wires Ant Design, locale, fonts, CSS variables, and runtime theme resolution.
|
|
249
|
-
- It must not become the owner of shell topology.
|
|
250
|
-
- `site.theme` is the dynamic visual contract loaded per request.
|
|
251
|
-
- It may contain site-owned fonts, Ant Design token overrides, shell defaults, and other explicit theme values.
|
|
252
|
-
- A later active-theme selector may be added without breaking the current contract.
|
|
253
|
-
- `site.themeRevision` carries the resolved default Theme scope pointers separately from the visual Theme payload.
|
|
254
|
-
- Builder preset selection uses only `publishedRevisionId` and `workingDraftRevisionId` to distinguish a Site-owned Theme from immutable preset choices; it never infers ownership from Theme contents or the stored preset key.
|
|
255
|
-
- If either pointer exists, the internal selection is `site:<siteKey>` and its visible label is the Site name. If neither pointer exists, the initial selection is the `phis` preset, the one Theme core ships.
|
|
256
|
-
- The `/builder/theme` page-local Light/Dark switch selects the preview and color-authoring mode only.
|
|
257
|
-
- It resolves mode-specific preset seeds, derived Ant Design colors, and the matching custom-color palette without changing the global Area Theme mode.
|
|
258
|
-
- Shared seeds in `site.theme.palette.seed` and structural `site.theme.style.token` values apply in both modes; the base seeds, explicit colour tokens and custom colours live per mode under `site.theme.palette.modes`.
|
|
259
|
-
- The published custom colours, resolved per mode from `site.theme.palette.modes[mode].customColors` over the followed palette block, are the canonical custom-color source for live rendering, Builder canvases, inspectors, and normal CMS widgets.
|
|
260
|
-
- `PhiColorWidget` consumes that palette through `usePhiConfig().customColors`; consumers must not reconstruct it from CSS variables or substitute semantic Ant Design tokens.
|
|
261
|
-
- The `/theme` authoring workspace is the only path that supplies its current draft palette explicitly, because it must preview colors before they are published.
|
|
262
|
-
- `site.runtime` may later carry the active theme selection, but the current live rendering path should keep reading the resolved `site.theme` contract.
|
|
263
|
-
- `site.theme.palette` and `site.theme.style.token` are the Site's source of truth for Ant Design design tokens, resolved over the Theme blocks it follows.
|
|
264
|
-
- If the root provider enables Ant Design `cssVar`, the runtime CSS variables are derived from that same token source.
|
|
265
|
-
- `px2remTransformer` remains a separate bridge for rem conversion and should not be treated as a token source.
|
|
266
|
-
- `site.theme.rem` contains only `rootValue`; typography is not persisted under `rem`.
|
|
267
|
-
- The shared Ant Design `fontSize` seed is `12`. Ant Design's token algorithm derives `fontSizeSM`, `fontSizeLG`, headings, and line heights; any of those derived aliases may still be overridden explicitly in `site.theme.style.token`.
|
|
268
|
-
- Theme authors may override size tokens as canonical numeric values such as `padding = 21`, `paddingMD = 34`, or `paddingXL = 89`.
|
|
269
|
-
- Ant Design consumes the numeric token value directly and emits both CSS-in-JS rules and SSR-extracted `--ant-*` variables.
|
|
270
|
-
- Phi may additionally project a value only when it represents a distinct Phi-owned shell or layout contract, for example a sidebar width expressed in `rem`.
|
|
271
|
-
- Do not mirror Ant Design colors, spacing, radii, typography, shadows, control sizes, or motion values into `--phi-*`.
|
|
272
|
-
- The root theme has one server projection and one client projection, both resolved from the same published Theme input.
|
|
273
|
-
- `AntdRegistry` extracts Ant Design styles during SSR, including the configured `--ant-*` token variables used by Server Component markup and plain CSS.
|
|
274
|
-
- `resolvePhiPublishedRootTheme(...)` emits only SSR-safe Phi-owned structural variables that have no Ant Design token.
|
|
275
|
-
- `PhiConfigProvider` is the single Client Component boundary for Ant Design locale/theme configuration and the Phi-only `fonts`, `layout`, `customColors`, `mode`, and `presets` values.
|
|
276
|
-
- The Server Root passes only serializable locale, Theme, font, preset, and custom-color data across that boundary. Client theme modules must not import server resolvers, server barrels, request helpers, or `server-only` modules.
|
|
277
|
-
- Server theme projection modules remain protected with `server-only`; the package module-graph audit must report no Client-to-server-only reachability.
|
|
278
|
-
- Client Components consume Ant Design semantics from `usePhiConfig().token` (or `theme.useToken()` inside a nested Ant Design provider).
|
|
279
|
-
- Plain CSS consumes the corresponding Ant Design-owned `--ant-*` variables.
|
|
280
|
-
- Client code must not resolve Ant Design semantics from `--phi-*` or maintain a parallel Phi token map.
|
|
281
|
-
- `--phi-*` is reserved for true Phi-only structural or technical CSS contracts. Custom theme colors are data in `usePhiConfig().customColors`, not global CSS variables.
|
|
282
|
-
- CSS-in-JS remains enabled while live Theme mode changes are projected through Ant Design runtime tokens. Ant Design `zeroRuntime` is a separate packaging decision, not part of this contract.
|
|
283
|
-
- The shell stays a region-level live rendering concern.
|
|
284
|
-
- The current live shell contract remains unchanged.
|
|
285
|
-
- New editor and preview layout systems should be parallel, not destructive.
|
|
286
|
-
- `root.css` should stay minimal.
|
|
287
|
-
- Ant Design reset CSS should be imported directly in `PhiRootLayout`, not via `@import` in `root.css`.
|
|
288
|
-
- It should hold the global reset, base `html` / `body` rules, live effect rules, and small utilities only.
|
|
289
|
-
- It should not encode shell topology.
|
|
290
|
-
- `shell.css` defines the shared shell topology.
|
|
291
|
-
- It should hold reusable region-grid templates such as `header_*`, `footer_*`, and `sider_*`.
|
|
292
|
-
- It also owns the structural page-content viewport and the stable placeholder slots for page-capable regions.
|
|
293
|
-
- It should not own region chrome such as background, border, or shadow.
|
|
294
|
-
- See `SHELL.md` for the canonical shell contract.
|
|
295
|
-
- `LAYOUTING.md` defines the canonical layouting contract.
|
|
296
|
-
- `layout.css` defines reusable live/preview layout primitives and runtime geometry such as slot flow, anchors, fill behavior, slot-child frames, widget fallbacks, CMS region shells, and the variant contract for built-in layouts.
|
|
297
|
-
- `layout-authoring-scaffold.css` contains Builder-only debug and editor chrome such as slot frames, empty-slot state, edit drawers, selection frames, and the shared `--phi-debug-layer-*` palette.
|
|
298
|
-
- `layout-affordances.css` defines Builder-only insert/delete affordance styling.
|
|
299
|
-
- Builder scaffold and affordance styles are imported only by the Builder Authoring module, never by the global Root or a Public runtime entry.
|
|
300
|
-
- Sequential flow layouts compact their `slotIndex` order after delete; sparse slot layouts keep their positions stable.
|
|
301
|
-
- Typography remains configurable through `site.theme.style.token`, the active font selection in `site.theme`, and the rem bridge in `site.theme.rem`.
|
|
302
|
-
- Root rem scaling and Phi-only structural variables are resolved and emitted by `PhiRootLayout` on the server.
|
|
303
|
-
- Client Ant Design token updates remain inside `PhiConfigProvider`; generated `--ant-*` variables are Ant Design's
|
|
304
|
-
canonical CSS projection, while mirrored `--phi-color-*` output is forbidden.
|
|
305
|
-
|
|
306
|
-
## Metadata Contract
|
|
307
|
-
|
|
308
|
-
- Page metadata is owned by the CMS page record.
|
|
309
|
-
- The concrete page title and description should come from the page record, for example through `titleMsgId` and `descriptionMsgId`.
|
|
310
|
-
- Page metadata has the highest priority and should override all area and site defaults.
|
|
311
|
-
- Code-owned route presets return resolved title and description through `pageMeta`. When a preset has no title label or explicit metadata, its descriptor title is resolved through the normal Site-scoped translation path before becoming the runtime title.
|
|
312
|
-
- A Page Title Widget reads `runtime.page.title` automatically and receives stable-shell navigation updates through the Core Page-context projection without persisted signal routes.
|
|
313
|
-
- Indexing is answered on the page record, not in `pageMeta`.
|
|
314
|
-
- `pageMeta` is the translation projection of `titleMsgId` and `descriptionMsgId`; a boolean has no place in it. Whether a page may be indexed is the `PhiCmsFlags.NoIndex` bit on the page row, and the Builder's page-meta dialog is where it is set.
|
|
315
|
-
- A route preset states only what a page of it *starts out* as, through `defaultPageFlags`. The value is seeded onto the page when the route is instantiated and copied into the draft on install; from then on the record answers. The sign-in pages ship `NoIndex` this way, and a Site that wants its `/register` found can switch it on without the Module agreeing.
|
|
316
|
-
- Area metadata is the contextual fallback layer.
|
|
317
|
-
- Public, App, Admin, Developer, and Editor Areas may define their own fallback title and description behavior.
|
|
318
|
-
- Internal areas may also choose stronger defaults such as `noindex`.
|
|
319
|
-
- The two rungs only ever add up: the Area decides first, every authenticated Area is `noindex` whatever a page says, and inside Public a page may withdraw itself but can never reopen an Area that was switched off.
|
|
320
|
-
- Addresses are stated only for an indexable Public page.
|
|
321
|
-
- Such a page gets `alternates.canonical`, its own absolute URL in its own locale, and `alternates.languages`, one entry per Site locale with the same locale-neutral path plus `x-default` for the default locale. A language version is never canonical to another one.
|
|
322
|
-
- Both are built by `helpers/phi-seo.ts` from the Site's public base (`site.publicUrl`, else `config/site-runtime.json`). A Site without an absolute public base states no canonical, no alternates and has no sitemap.
|
|
323
|
-
- `/sitemap.xml` and `/robots.txt` are route handlers from `@phis/ui/next/seo-routes`, answered from the Public bridge only.
|
|
324
|
-
- The sitemap exists when the Site has a public base and the Public Area has both `index` and `sitemap` switched on; otherwise it answers 404. Its candidates are the Area root, the exact Module routes and the published Public pages, which the Public Area read adds on `include=publishedPages`; each candidate is resolved as an anonymous page view and listed only when that view is not a redirect, not refused and not `noindex`. Every page appears once per locale with the full hreflang set.
|
|
325
|
-
- The finished sitemap is kept until the next publish. Every request reads the Public Area with its published pages once and fingerprints the answer -- live revision ids, Area preset, active Modules, locales, public base; only a changed fingerprint resolves the candidates again. The Core never notifies a Site, so the cache is pulled, not pushed, and a new Site process starts empty.
|
|
326
|
-
- `robots.txt` allows everything and names the sitemap when there is one. It lists no staff Area on purpose: those stay out of the index through `noindex`, and a `Disallow` list would publish where they are. It answers even when the Site cannot be read, because a failing robots.txt stops crawling of the whole host.
|
|
327
|
-
- Site metadata is the global fallback layer.
|
|
328
|
-
- `site.name` and `site.theme.brand` are the most natural site-level fallback sources.
|
|
329
|
-
- Site metadata should not replace a concrete page title when the page provides one.
|
|
330
|
-
- The root layout composes metadata only.
|
|
331
|
-
- It should set the shared app-level defaults such as `metadataBase`, `title.template`, and `applicationName`.
|
|
332
|
-
- It should not own concrete page copy.
|
|
333
|
-
- Recommended priority:
|
|
334
|
-
1. Page metadata
|
|
335
|
-
2. Area metadata
|
|
336
|
-
3. Site metadata
|
|
337
|
-
4. Generic product fallback
|
|
338
|
-
- `site.theme` remains a visual contract, not the primary page-metadata owner.
|
|
339
|
-
- If a future theme-level title or description default is ever needed, it should be treated as a fallback only.
|
|
340
|
-
- Shared spacing scale:
|
|
341
|
-
- `xxs = 3`
|
|
342
|
-
- `xs = 8`
|
|
343
|
-
- `sm = 13`
|
|
344
|
-
- `base = 21`
|
|
345
|
-
- `md = 34`
|
|
346
|
-
- `lg = 55`
|
|
347
|
-
- `xl = 89`
|
|
348
|
-
- `xxl = 155`
|
|
349
|
-
- `theme`: shared theme/token helpers.
|
|
350
|
-
- `constants`: public runtime constants, enums, and flag definitions.
|
|
351
|
-
- `helpers`: public runtime helper functions.
|
|
352
|
-
- `helpers/site-runtime`: server-only site runtime loader for repo-local `config/site-runtime.json`.
|
|
353
|
-
- `server-helpers`: public server-only helpers.
|
|
354
|
-
- `net`: public network/proxy helpers.
|
|
355
|
-
- `gateway`: internal-only Phi-server adapter layer for site config, navigation, generic label-set infrastructure, form guards, form registry resolution, translation requests, and the shared data-source contract.
|
|
356
|
-
|
|
357
|
-
Practical meaning of the main rendering layers:
|
|
358
|
-
|
|
359
|
-
- `widget`
|
|
360
|
-
- one editorial or functional unit such as brand, locale switch, quick links, markdown, account
|
|
361
|
-
- `layout`
|
|
362
|
-
- structural slot composition only
|
|
363
|
-
- no implicit padding, no shell ownership
|
|
364
|
-
- edit mode renders structural slots plus drop zones and insert affordances
|
|
365
|
-
- `edit` render order
|
|
366
|
-
- outer shell or region first
|
|
367
|
-
- then layout scaffold
|
|
368
|
-
- then occupied child content
|
|
369
|
-
- then the widget content inside each occupied slot
|
|
370
|
-
- then the widget selection/interaction layer
|
|
371
|
-
- then optional widget-owned authoring chrome
|
|
372
|
-
- then shared editor tools
|
|
373
|
-
- `edit` renderer contract
|
|
374
|
-
- plugins provide slot topology and occupancy
|
|
375
|
-
- shared scaffolds provide the common edit chrome
|
|
376
|
-
- the minimal shape should describe `kind`, `variant`, `slots`, `occupied`, and `insertPoints`
|
|
377
|
-
- `flex` uses sequential slots with one open append slot after the last occupied slot
|
|
378
|
-
- named layouts use one fixed zone per semantic slot key
|
|
379
|
-
- `stack` exposes one zone per section slot and only the active section renders live content
|
|
380
|
-
- `grid` derives zones from visible cells or spans
|
|
381
|
-
- a minimal render call can be thought of as `renderEdit({ kind, slots, occupied, insertPoints, runtime })`
|
|
382
|
-
- widget content remains visually live-like but is inert by default; editor mode must not be simulated by setting every control to its runtime-disabled state
|
|
383
|
-
- the widget interaction layer owns selection, hover, and a future shared DnD handle, while widget-owned authoring chrome stays above that layer
|
|
384
|
-
- layout scaffolds must not cover their full descendant content because their slots and nested child scaffolds remain independently interactive
|
|
385
|
-
- builder selection terms
|
|
386
|
-
- `selectedRegionKey` names the active region shell
|
|
387
|
-
- `selectedRootRegionKey` names the region that currently hosts the selected layout root
|
|
388
|
-
- `selectedStructureNodeKey` names the selected layout or widget node inside the structure tree
|
|
389
|
-
- builder inspector contract
|
|
390
|
-
- inspector sections are persisted globally per selected structure node key so reopening the same node restores the previous collapse state
|
|
391
|
-
- layout roots expose `rootNodeBackground` and `rootNodeBorder` as separate draft fields; they are sibling chrome controls, not a nested `nodeBackground` object
|
|
392
|
-
- the layout Inspector exposes background, border, shadow, effect, and padding on the same level
|
|
393
|
-
- editor draft state and preview snapshot stay separate, but both normalize through the shared builder root-node helper before rendering; the snapshot is not the editor data source
|
|
394
|
-
- root layouts keep their `rootNodeConfig` blob in the draft so editor, preview, and Inspector see the same default shape until an explicit override is stored
|
|
395
|
-
- the shared padding Inspector exposes `top`, `left`, `right`, `bottom`, and `gap`
|
|
396
|
-
- `area preset`
|
|
397
|
-
- the default CMS tree for a whole Area such as `public` or `app`
|
|
398
|
-
- `shell`
|
|
399
|
-
- the stable root-level frame that mounts header, sider, footer regions across a `[root]`
|
|
400
|
-
- it also owns the structural page-content viewport
|
|
401
|
-
- that viewport is not the same thing as the page-owned CMS region named `content`
|
|
402
|
-
|
|
403
|
-
Server/client boundary for those layers:
|
|
404
|
-
|
|
405
|
-
- `shell`
|
|
406
|
-
- framework-facing infrastructure
|
|
407
|
-
- should stay server-safe and must not depend on Ant Design layout/context internals in the RSC path
|
|
408
|
-
- `layout`
|
|
409
|
-
- slot structure contract first
|
|
410
|
-
- may be implemented without Ant Design when the slot contract is sufficient
|
|
411
|
-
- `widget`
|
|
412
|
-
- primary UI integration layer
|
|
413
|
-
- first-party Phi Widgets compose canonical Phi Controls for interactive primitives; direct Ant Design
|
|
414
|
-
interaction imports remain inside the corresponding Phi Control adapter
|
|
415
|
-
|
|
416
|
-
### Shared component rules
|
|
417
|
-
|
|
418
|
-
- General naming rule:
|
|
419
|
-
- public API components, public API helpers, and public API libraries use the `Phi` prefix
|
|
420
|
-
- internal implementation files, helpers, and structural primitives that are not public exports must not use the `Phi` prefix
|
|
421
|
-
- Public `Phi*Layout` and `Phi*Widget` components should be self-contained within their documented
|
|
422
|
-
ownership boundary. A domain Widget must not privately mount a structural Modal or Drawer.
|
|
423
|
-
- Persisted Modal/Drawer workflows are Area-/Page-owned CMS Overlays. `PhiModalControl` and
|
|
424
|
-
`PhiDrawerControl` are provider-free presentation adapters used by the CMS Overlay renderer and by the
|
|
425
|
-
explicitly permitted transient prompt/editor boundary. Immediate Pickers use only their canonical
|
|
426
|
-
`Phi*Control`; that Control privately adapts a native UI-library primitive or composes
|
|
427
|
-
`PhiPopoverControl`. Pickers never use Modal or Drawer presentation.
|
|
428
|
-
- Guided learning follows [TOURS.md](./TOURS.md). `PhiTourControl` is the provider-free presentation
|
|
429
|
-
adapter; the owning Tour Controller uses ordinary Phi signaling and resolves existing visual signal
|
|
430
|
-
addresses through the active Runtime partition. Tours do not occupy hidden CMS slots, expose Ant Design
|
|
431
|
-
target refs, or resolve targets through global DOM selectors.
|
|
432
|
-
- Public `Phi*Layout` components should usually be server components.
|
|
433
|
-
- Naming contract:
|
|
434
|
-
- `*Layout` means structural composition plus optional configured visual treatment
|
|
435
|
-
- React/Next boundary contract:
|
|
436
|
-
- Server Components are the default.
|
|
437
|
-
- Client Components are used only for browser interaction or client-only React features.
|
|
438
|
-
- Shared shell/region infrastructure in the RSC path must not import Ant Design modules that rely on client-only context or css-in-js runtime internals.
|
|
439
|
-
- Ant Design remains a private implementation detail of canonical Phi Controls and root/theme adapters;
|
|
440
|
-
first-party feature Widgets and Forms do not create parallel primitive paths.
|
|
441
|
-
- Browser interaction belongs in internal `clients/*` implementations.
|
|
442
|
-
- Site code should pass control, context, explicit override, and composition props only.
|
|
443
|
-
- If a site has to preload shared labels, shared navigation trees, or shared config only to satisfy a shared widget/modal, the shared boundary is too low-level and should be raised.
|
|
444
|
-
- `*Form` components remain low-level and presentational. They should not own site-aware translation loading, endpoint selection, legal-link construction, or widget-level orchestration.
|
|
445
|
-
- Public form building blocks may be consumed by shared widgets, site widgets, and third-party widgets as long as they stay on the low-level form contract.
|
|
446
|
-
- Shared layouts and widgets should follow a server-wrapper/client-inner split when they need both runtime data and browser interaction.
|
|
447
|
-
- The server wrapper is responsible for loading site/theme/runtime config and filtering it down to a small widget-specific config slice.
|
|
448
|
-
- Server wrappers may work with a normalized runtime context that includes site, locale, area, and viewer state.
|
|
449
|
-
- That normalized runtime context is primarily a server-side contract.
|
|
450
|
-
- When shared CMS root rendering resolves runtime once for a root, shared helpers and special pages under the same root should reuse that scope instead of rebuilding it.
|
|
451
|
-
- Shared transient state should use the scoped store helper under `components/state/scoped-state-store.ts`.
|
|
452
|
-
- the store is scoped by `storeId` and `scopeKey`
|
|
453
|
-
- it is intended for runtime-only UI state, not persistence
|
|
454
|
-
- the public store contract should stay small:
|
|
455
|
-
- `useStore(scopeKey)`
|
|
456
|
-
- `getSnapshot(scopeKey)`
|
|
457
|
-
- `patch(scopeKey, updater)`
|
|
458
|
-
- `replace(scopeKey, nextState)`
|
|
459
|
-
- `reset(scopeKey)`
|
|
460
|
-
- `deleteScope(scopeKey)`
|
|
461
|
-
- builder-specific workspace state may use the shared scoped store basis, but builder orchestration and signal handling stay in the builder wrapper
|
|
462
|
-
- widgets and plugins may use the same store basis for local or shared runtime slices when they need stable in-memory state across instances
|
|
463
|
-
- Viewer authorization uses the provider-scoped role claims and single access-policy evaluator defined
|
|
464
|
-
in `ACCESS.md`; do not add direct Base/Custom flag branches or feature-permission arrays.
|
|
465
|
-
- Role-dependent capability inside an authorized surface is a controller permission projection bound to
|
|
466
|
-
`disabledWhen` conditions, never a role branch in a widget; see `ACCESS.md` section 6.
|
|
467
|
-
- Client implementations should receive only the runtime slice they actually need, not the whole request/runtime object by default.
|
|
468
|
-
- Client implementations should receive only the widget-relevant config they need; do not pass raw site/theme JSON into client components.
|
|
469
|
-
- Renderable blocks are the shared data contract for Layouts, Widgets, and Regions. Regions
|
|
470
|
-
use concrete `region:<region-key>` runtime addresses and inherit the same standard receiver channels;
|
|
471
|
-
their signal scope is derived from canonical shell/page ownership.
|
|
472
|
-
- `renderMode` defaults to `live`.
|
|
473
|
-
- `renderMode` is a transient renderer hint owned by `render()`, `renderPreview()`, and `renderEditor()` wrappers. It is not persisted and must not be controlled through runtime signals.
|
|
474
|
-
- `visibility` defaults to `visible`.
|
|
475
|
-
- `enabled` defaults to `true`.
|
|
476
|
-
- `size` is the canonical public preferred geometry form; `minSize`, `maxSize`, and `collapsedSizeHint` are the semantic geometry constraints.
|
|
477
|
-
- Renderers normalize geometry, spacing, and padding to longhand DOM properties only.
|
|
478
|
-
- Do not mix shorthand and longhand for the same CSS value on the same rendered element.
|
|
479
|
-
- `capabilities` describe what the block can do, such as `selectable`, `draggable`, `hoverable`, `activatable`, `focusable`, and `droppable`.
|
|
480
|
-
- `runtime` describes the host runtime context and interaction state for the current session, such as `siteKey`, `publicUrl`, `defaultLang`, `area`, `pageKey`, `selected`, `hovered`, `dragging`, `focused`, and `active`.
|
|
481
|
-
- `zIndex` may be part of the common render contract when a block needs stacking control; renderers should normalize an unset `zIndex` to `0`.
|
|
482
|
-
- `className` is the supported external styling hook when a consumer needs CSS-level extension.
|
|
483
|
-
- `style` is not part of the public block contract; inline styling stays inside the concrete renderer implementation.
|
|
484
|
-
- CMS renderers should pass each block's full `config` object to `PhiSlotChildFrame`, which reads only the common renderable block slice it needs.
|
|
485
|
-
- `enabled: false` means the block remains present but should not accept interaction.
|
|
486
|
-
- `hidden` means no layout participation.
|
|
487
|
-
- `collapsed` means reduced participation with a collapsed size hint.
|
|
488
|
-
- `visible` means the normal layout state.
|
|
489
|
-
- Block control commands use `action: "change"` on channels such as `visibility`, `enabled`, and `size`, and should address concrete renderable receivers.
|
|
490
|
-
- Public v1 wiring routes every Widget and Layout to `receiver: "cms:<instanceId>"`; subcontrols append `:<subcontrolKey>`.
|
|
491
|
-
- The receiver's mounted Page/Area context derives route scope. Node family is registry metadata, not an address or scope discriminator.
|
|
492
|
-
- `receiver: null` or an omitted receiver means not wired and must not emit a runtime signal.
|
|
493
|
-
- `receiver: "broadcast"` is the only public v1 broadcast form inside the selected `scope`, `channel`, and runtime context.
|
|
494
|
-
- Any `scope: "block"` or `receiver: "block:<id>"` usage is a v1 contract violation.
|
|
495
|
-
- `visibility` commands use canonical `value` values `visible`, `collapsed`, or `hidden`.
|
|
496
|
-
- UI helper verbs such as show, hide, expand, collapse, and toggle must emit those canonical states instead of inventing separate widget-local commands.
|
|
497
|
-
- CMS widgets inherit this receiver through the shared slot child frame; individual widgets must not implement duplicate hide/show/collapse receivers.
|
|
498
|
-
- Shared styling uses Ant Design tokens for every semantic Ant Design models and Phi layout classes for structure.
|
|
499
|
-
- `PHI_*` constants define seed/default content only; they are not an active runtime theme source.
|
|
500
|
-
- Reusable Client widgets, layouts, and Region containers consume `usePhiConfig().token`. Component CSS consumes Ant Design-owned `--ant-*` variables.
|
|
501
|
-
- A component-scoped CSS custom property may bridge a live token into a selector or pseudo-element, but it is an implementation detail rather than a second global theme API.
|
|
502
|
-
- `--phi-*` may represent only a distinct Phi-owned structural or technical value, for example shell geometry, Builder scaffold geometry, or runtime effects.
|
|
503
|
-
- Use inline styles mainly for geometry and per-instance layout values such as width, height, spacing, transforms, and positioning.
|
|
504
|
-
- Reusable server-side components may read `runtime.site.theme` only for explicit site-owned contracts that Ant Design does not model, for example shell, brand, or other site-specific behavior.
|
|
505
|
-
- Reusable Server Components and plain CSS use the SSR-extracted Ant Design `--ant-*` variables for generic UI semantics.
|
|
506
|
-
- Server-side theme resolution contract:
|
|
507
|
-
- Server Components must not depend on Ant Design runtime context such as `ConfigProvider` or other client-side theme hooks.
|
|
508
|
-
- They use `var(--ant-...)` in styles or classes when a generic theme value is required.
|
|
509
|
-
- Server resolvers may project only Phi-specific values that Ant Design does not model.
|
|
510
|
-
- Stable area/region/shell dimensions are not Ant Design theme concerns. Values such as header height, sidebar width, footer height, sticky offsets, and similar shell sizing should come from the DB-backed site shell contract, typically `runtime.site.theme.shell`, with `PHI_*` only as shared defaults.
|
|
511
|
-
- Shared default CMS trees may intentionally use stable `PHI_*` fallback values. Those tree defaults act as conservative starter values and remain valid even if a site developer later overrides the corresponding DB-backed CMS structure or shell sizing.
|
|
512
|
-
- Shell implementation rule:
|
|
513
|
-
- Ant Design `Layout/Header/Sider/Content/Footer` are valid UI primitives, but they are not a required contract for shared shell infrastructure.
|
|
514
|
-
- If a shell/region path must stay RSC-safe under Next App Router, prefer plain React/HTML structure over pulling Ant Design layout internals into that path.
|
|
515
|
-
- This does not prohibit Ant Design inside widgets, forms, or interactive client inners.
|
|
516
|
-
- Hardcoded colors, radii, typography values, or bespoke visual tuning are exceptions and should be introduced only on explicit request or when the required result cannot be expressed cleanly through Ant Design tokens/components.
|
|
517
|
-
- For CMS-driven pages, `@phis/ui` should resolve shared/internal namespaced widget type keys into shared widget implementations.
|
|
518
|
-
- Site-custom CMS widget type keys must go through a fixed site bridge component instead of leaking site-specific registry logic into the backend.
|
|
519
|
-
- Layout nodes must be implemented under `components/layouts/*`.
|
|
520
|
-
- Content and flow widgets must be implemented under `components/widgets/*`.
|
|
521
|
-
- Slot-based structure and runtime collections are different contracts.
|
|
522
|
-
- Layouts under `components/layouts/*` arrange persisted CMS child nodes through `slots[]`.
|
|
523
|
-
- Runtime-derived collections such as asset grids, product listings, galleries, and search results should be modeled as registered widgets under `components/widgets/*`.
|
|
524
|
-
- Those collection widgets may expose view modes such as `grid`, `masonry`, or `stack`, but they do not become layout kinds just because they reuse those visual patterns.
|
|
525
|
-
- Collection widgets should consume a shared collection scope, typically keyed by `scopeKey`, and render items through an explicit item-renderer contract.
|
|
526
|
-
- Client-only implementations belong only in sibling `clients/*` directories.
|
|
527
|
-
- CMS-facing widgets and layouts must have exactly one canonical truth.
|
|
528
|
-
- A public `Phi*` widget or layout may itself be the portable plugin implementation.
|
|
529
|
-
- A CMS widget or layout must not expose one set of defaults via a public `Phi*` component and a different set of defaults via its plugin definition.
|
|
530
|
-
- Public CMS/shared components use the `Phi*` prefix.
|
|
531
|
-
- Internal implementation helpers must not use the `Phi` prefix.
|
|
532
|
-
- If shared shell or region rendering needs non-editorial structural helpers, those may live directly under `components/layouts/*`, but they should be internal-only helpers rather than CMS plugins.
|
|
533
|
-
- Such internal shell/region helpers should not use the `Phi` CMS component naming convention.
|
|
534
|
-
- Shells orchestrate slots; they must not pass widget-specific site-theme modes as bespoke props when those modes belong to the shared site-config contract.
|
|
535
|
-
- Widgets that need no site/theme data should not load it.
|
|
536
|
-
- Widgets may define stable internal defaults when a config field is absent, but they must not start hidden replacement fetches for site/theme/runtime config.
|
|
537
|
-
- Shared config persistence must stay sparse: if a field is absent, empty, or equal to the canonical default, it should not be written to JSON. Readers normalize sparse data back to the full runtime shape.
|
|
538
|
-
- Complex widgets may fetch their own domain data, for example table rows, detail records, news entries, or product lists. They must not fetch site/theme/runtime config on their own.
|
|
539
|
-
- Generic option controls use `optionsProvider` for dynamic choices.
|
|
540
|
-
- widget config stores a strict namespaced `providerKey`; provider descriptors are owned by the active runtime module
|
|
541
|
-
- the selected option is still emitted as the canonical signal `value`
|
|
542
|
-
- provider implementations live in a React-scoped active-module boundary; global registries and registration import side effects are forbidden
|
|
543
|
-
- live runtime loads the active module's executable provider Client; Canvas receives descriptors for configuration but executes only providers explicitly declared as static authoring data
|
|
544
|
-
- DB-, API-, controller-store-, and subscription-backed providers are live-only and never expose their records in Canvas
|
|
545
|
-
- built-in keys use the `@phis/ui/options/*` namespace
|
|
546
|
-
- Shared remote data loading should use a normalized data-source descriptor with:
|
|
547
|
-
- `kind: api | serverAction | inline`
|
|
548
|
-
- `cache.mode: no-store | force-cache | revalidate`
|
|
549
|
-
- `cache.revalidateSeconds`
|
|
550
|
-
- `cache.tags`
|
|
551
|
-
- request/query mapping fields when the source is API-backed
|
|
552
|
-
- `cache.tags` are part of the contract and are intended to pair with Next.js tag invalidation.
|
|
553
|
-
- The same data-source contract should later be reused by tables, list views, and form bootstrap reads instead of introducing per-widget fetch abstractions.
|
|
554
|
-
|
|
555
|
-
### CMS rendering contract
|
|
556
|
-
|
|
557
|
-
- Shared rendering assumes a deterministic CMS tree:
|
|
558
|
-
- area preset
|
|
559
|
-
- region
|
|
560
|
-
- root layout node
|
|
561
|
-
- nested layout/content widgets
|
|
562
|
-
- Area presets own the default region set for an area.
|
|
563
|
-
- Regions without any occupied layout/widget slots must render `null`.
|
|
564
|
-
- Empty regions must not leave behind wrappers, placeholders, spacers, or reserved layout space.
|
|
565
|
-
- Do not add structural wrapper elements only to carry a React `key`, class, or trivial layout prop when the existing top-level rendered element can own that responsibility directly.
|
|
566
|
-
- Generic structural layouts should default to `margin: 0`.
|
|
567
|
-
- `*Layout` types own structure and optional visual treatment in one contract:
|
|
568
|
-
- named slots or sequential `slots[]`
|
|
569
|
-
- `gap`
|
|
570
|
-
- alignment
|
|
571
|
-
- distribution
|
|
572
|
-
- width/height/min/max box constraints
|
|
573
|
-
- optional outer layout spacing when that spacing is part of page composition rather than slot content treatment
|
|
574
|
-
- `*Layout` types are visually neutral by default:
|
|
575
|
-
- transparent
|
|
576
|
-
- no background
|
|
577
|
-
- no border
|
|
578
|
-
- no shadow
|
|
579
|
-
- no glass/blur treatment
|
|
580
|
-
- no implicit inner padding
|
|
581
|
-
- `*Layout` types must not add implicit inner slot padding for arbitrary child content.
|
|
582
|
-
- Configure padding and other visual fields directly on the Layout when a Region needs padded inner composition.
|
|
583
|
-
- Public layout component contracts should not use free-form `children` as the primary slot API.
|
|
584
|
-
- Named layouts should use explicit slot props only for genuinely semantic sides such as `left`, `middle`, or `right`.
|
|
585
|
-
- Single-slot layouts should use positional slots, for example `slots[0]`, not a named alias such as `defaultSlot`.
|
|
586
|
-
- Sequential layouts should use `slots: ReactNode[]`.
|
|
587
|
-
- Layout config may own:
|
|
588
|
-
- inner padding
|
|
589
|
-
- background
|
|
590
|
-
- shadow
|
|
591
|
-
- a semantic effect
|
|
592
|
-
- border
|
|
593
|
-
- borderRadius
|
|
594
|
-
- Reusable layouts expose visible treatment through config/props rather than hardcoded values.
|
|
595
|
-
- If a layout has multiple semantic sides or slots, side-specific treatment such as left/right background or padding is explicit in the family contract.
|
|
596
|
-
- Regions have a split contract:
|
|
597
|
-
- `Region Core`
|
|
598
|
-
- placement, visibility, ordering, root node binding, and allowed injections
|
|
599
|
-
- examples: `regionType`, `rootLayoutInstanceId`, `sortOrder`, `visibilityMask`
|
|
600
|
-
- `Region Shell`
|
|
601
|
-
- outer region behavior and chrome such as sticky placement, viewport offset, width, height, collapse, padding, background, border, shadow, effect, and full-height behavior
|
|
602
|
-
- examples: `sticky`, `offsetTop`, `zIndex`, `width`, `height`, `maxWidth`, `border`, `shadow`, `effect`
|
|
603
|
-
- for sidebars, `height: "100%"` means the available shell space between the fixed outer header/footer bounds, while `fullHeight: true` is reserved for browser-height spanning shell behavior
|
|
604
|
-
- builder-only preview adapters such as `PhiStructureRegionLayout` remain Region-shell adapters
|
|
605
|
-
- `Layout`
|
|
606
|
-
- inner structure and slot composition
|
|
607
|
-
- examples: `gap`, named slots, sequential slots, alignment, distribution
|
|
608
|
-
- Regions may own shell behavior such as sticky placement, viewport offset, width, height, collapse, padding, background, border, shadow, a semantic effect, and full-height behavior.
|
|
609
|
-
- Static and client-enhanced Region renderers resolve that chrome through the same Region-shell resolver. Presets and Builder drafts persist only the closed effect ids `glass`, `haze`, `blur`, or `dim`, and only the closed shadow ids `none`, `soft`, or `strong`. Their CSS definitions are global Phi policy and must never be copied into a preset, module, renderer, or Area-specific path. A custom shadow is the sole exception and persists as `{ kind: "custom", value: "<box-shadow>" }`; arbitrary effect parameters and arbitrary strings in the standard shadow field are invalid v1 ABI.
|
|
610
|
-
- Widgets should own only their own content rendering and should not need to know the surrounding layout box.
|
|
611
|
-
- Regions must never contain content widgets directly.
|
|
612
|
-
- Every active region must point to exactly one root layout node.
|
|
613
|
-
- Layout nodes may contain further layout nodes and content widgets.
|
|
614
|
-
- Content widgets are leaf nodes.
|
|
615
|
-
- A layout defines slots.
|
|
616
|
-
- Each slot may contain at most one direct child node.
|
|
617
|
-
- That direct child node may be either one layout node or one content widget.
|
|
618
|
-
- Layout-specific flexibility comes from how many slots a layout exposes, not from multiple direct children in the same slot.
|
|
619
|
-
- Generic layout types such as `vertical`, `flex`, and `stack` should expose sequential `slots[]`.
|
|
620
|
-
- Specialized layout types such as `three-column` expose a fixed semantic slot set, but those semantic names should resolve from stable slot indexes such as `0`, `1`, `2`.
|
|
621
|
-
- Generic sequential layouts should use `slot_index` rather than numbered global slot enums or multiple direct children in one `default` slot.
|
|
622
|
-
- Regions always start with a root layout node; they do not need an additional allowed-kind contract.
|
|
623
|
-
- Page-level CMS records currently provide payload for `hero`, `header_bottom`, `sider_right`, `footer_top`, `drawer_right`, and `content`.
|
|
624
|
-
- `hero_root_layout_node_id = NULL` means the page currently has no hero tree; that is a valid state.
|
|
625
|
-
- `header_bottom_root_layout_node_id = NULL` means the page currently has no page-owned header bottom tree; that is a valid state.
|
|
626
|
-
- `sider_right_root_layout_node_id = NULL` means the page currently has no page-owned right sidebar tree; that is a valid state.
|
|
627
|
-
- `footer_top_root_layout_node_id = NULL` means the page currently has no page-owned footer top tree; that is a valid state.
|
|
628
|
-
- `content_root_layout_node_id = NULL` means the page currently has no content tree; that is a valid empty-page state.
|
|
629
|
-
- `hero`, `header_bottom`, `sider_right`, `footer_top`, `drawer_right`, and `content` are page-owned payload channels, but their placement belongs to stable shell slots.
|
|
630
|
-
- `content` is the only truly page-internal region in the target contract.
|
|
631
|
-
- In `/builder/pages`, any workspace-level header chrome above the canvas is not the selected page's `header_bottom` region.
|
|
632
|
-
- The selected page's `header_bottom` remains a normal page-owned CMS region with its own root layout tree inside the canvas.
|
|
633
|
-
- `drawer_right` remains a page-owned payload channel for page content that intentionally uses that Region. Builder Inspectors are not page content: their three Area-owned Drawer Overlays mount through the resolved Builder Area `overlays[]` collection independently of Region occupancy.
|
|
634
|
-
- Builder chrome and controllers have stable responsibilities:
|
|
635
|
-
- the Builder workspace controller is a headless controller owned and mounted by the active Builder module; it must not be placed as a visible CMS widget in a layout slot.
|
|
636
|
-
- a regular `select-box` Widget in stable Builder chrome selects the target Area through a declarative route to the Builder Controller, currently in `header_main` left.
|
|
637
|
-
- `builder-mode-switch` is a visible builder mode control widget; pages may place it where the active workspace needs that control.
|
|
638
|
-
- the Region, Layout, and Widget Inspector section Widgets render only their declared section inside the matching Area-owned Drawer Overlay; there is no Inspector-host Widget or hidden Drawer Region.
|
|
639
|
-
- `builder-chrome-controls` controls builder chrome visibility/state through signals; it is not a header-main host.
|
|
640
|
-
- Builder command and Inspector Overlay orchestration belongs to the Builder workspace controller or page/workspace controllers. Inspector section Widgets own only their declared section presentation and controller routes.
|
|
641
|
-
- `page.layoutConfig.disabledRegionTypes: number[]` may explicitly suppress inherited fallback regions by `regionType`.
|
|
642
|
-
- Page-level payload must not redefine shell topology; it only fills the shell's page-capable placeholders.
|
|
643
|
-
- Controlled page-level slot injections into area-owned regions are a planned contract when the area contract explicitly exposes those slots, for example `header_main.actions`.
|
|
644
|
-
- Slot injections target layout-owned slots; the injected node itself may be either a layout node or a content widget.
|
|
645
|
-
- `allowedPageSlotInjections` is currently contract metadata only; the merge/injection runtime is not implemented yet.
|
|
646
|
-
- Widget instance config belongs to CMS widget nodes in revision `tree_json`, not to `site.theme.widgets.*`.
|
|
647
|
-
- If a widget persists canonical CMS content through `content_id`, its shared definition must declare that contract explicitly through `contentBinding`.
|
|
648
|
-
- Builder CMS write payloads must forward `contentBinding` as declarative metadata.
|
|
649
|
-
- `@phis/server` persists namespaced widget types in revision nodes, but it must not branch on concrete widget `typeKey`s for content persistence when the payload already declares `contentBinding`.
|
|
650
|
-
- `site.theme` remains reserved for global design defaults such as fonts, colors, shell defaults, and Ant Design deltas.
|
|
651
|
-
- Region and preset data should be normalized into stable shared interfaces before rendering.
|
|
652
|
-
- `PhiCmsLayoutRenderer` is the generic region/layout tree renderer for area-owned regions.
|
|
653
|
-
- `PhiCmsPageRenderer` should stay a thin content-focused wrapper over `PhiCmsLayoutRenderer`.
|
|
654
|
-
- Shared fallback presets should not introduce bespoke layout wrappers; they should synthesize a CMS tree and go through the same renderer path as DB-backed presets.
|
|
655
|
-
- Every layout, widget, overlay, and resolved Navigation item instance has exactly one canonical `PhiCmsInstanceId`: an opaque 96-bit value serialized as exactly 16 Base64URL characters. The same id is used in Draft, preview, published runtime, persistence, history, structural references, and signaling where applicable; UUIDs, numeric CMS node ids, and parallel runtime identity fields are not part of v1.
|
|
656
|
-
- Codec v1 uses one version/origin header byte and one explicit domain byte. The closed domains are `area`, `page`, and `navigation`. Draft-origin ids then encode a safe 48-bit owning Draft revision id and one 32-bit Draft-local sequence. The complete id is text/bytes, never one JavaScript number. Each owning Draft persists one monotonic `nextNodeSequence`, and deleted values are never reused.
|
|
657
|
-
- CMS node identities do not encode Draft or Published state. Publish validates the selected revision and updates revision state/pointers atomically without remapping node identities.
|
|
658
|
-
- Layout-parent and Page/Region root-layout references use `PhiCmsInstanceId`. Signal addresses use `cms:<instanceId>` and `cms:<instanceId>:<subcontrolKey>`; widget/layout kind remains registry metadata.
|
|
659
|
-
- The central CMS instance creator/codec is the only identity authority. Third-party packages provide definitions and authoring requests, never caller-generated ids or assembled concrete CMS nodes. Inserting or duplicating consumes the owning Draft sequence; moving, editing, saving, reviewing, and publishing preserve the id.
|
|
660
|
-
|
|
661
|
-
### Module descriptor identity and instantiation
|
|
662
|
-
|
|
663
|
-
Area-shell, route, and theme presets are separate descriptor families. The generic preset-kind registry,
|
|
664
|
-
multi-target contributions, and arbitrary route plugins are not v1 extension surfaces. Every descriptor
|
|
665
|
-
has one stable `(ownerModuleId, presetKey)` identity and a positive integer version. A route preset belongs
|
|
666
|
-
to exactly one Area and one effective normalized path. The Builder addresses it by
|
|
667
|
-
`createPhiPresetCmsPageId(ownerModuleId, presetKey)`: a hash of the pair the server already stores for a
|
|
668
|
-
Module Page, so it is recomputable rather than allocated, unique across Modules, and unmoved when a path is
|
|
669
|
-
reassigned. A Site Page is addressed by its path, which is what `site_page_scopes` keeps for it.
|
|
670
|
-
|
|
671
|
-
Outside Public, the descriptor compiler serves a route under its owner's package: `@acme/status/modules/auth`
|
|
672
|
-
declaring `/providers` answers at `/acme/status/providers`. Two packages therefore cannot contest an address.
|
|
673
|
-
Public carries no namespace, because it is the Site's own address space, and `/` is an application for the
|
|
674
|
-
Area root slot rather than a route of the Module's own.
|
|
675
|
-
|
|
676
|
-
An Area may explicitly export a route mount such as `settings`. The mount binds a stable `mountKey` to an
|
|
677
|
-
exported href-less navigation container, and a route that opts in has its navigation entry placed there. A
|
|
678
|
-
mount composes navigation, never paths.
|
|
679
|
-
|
|
680
|
-
Route paths are exact or contain at most one whole-segment parameter such as `/news/:id`. Catch-alls,
|
|
681
|
-
optional segments, regexes, arbitrary matcher callbacks, and multiple dynamic segments are rejected.
|
|
682
|
-
The metadata-only descriptor compiler validates route-mount exports, shell and route versions, module
|
|
683
|
-
ownership, route syntax, theme identity, and Area-shell composition before any tree loader runs. Its active
|
|
684
|
-
route table resolves requests by effective `path` and Builder targets independently by Page id; callers must
|
|
685
|
-
use the matching resolver instead of treating either value as the other. Building that table is a read and
|
|
686
|
-
never refuses: where two active routes want one address, the first claim answers and the second is absent,
|
|
687
|
-
which hides its navigation entry.
|
|
688
|
-
|
|
689
|
-
Preset templates contain no numeric CMS node IDs. Their structure and wiring use stable local node keys.
|
|
690
|
-
The central codec derives one canonical 96-bit `instanceId` from
|
|
691
|
-
`(contractVersion, domain, ownerModuleId, presetKey, nodeKey)`. Preset version, Site, concrete Area key,
|
|
692
|
-
request path, node type, and catalog order never participate. The domain prevents independent Area,
|
|
693
|
-
Page, and Navigation revision sequences from sharing an identity namespace. Preset authors never generate ids, retry
|
|
694
|
-
collisions, or construct concrete CMS instances.
|
|
695
|
-
|
|
696
|
-
Navigation descriptor `itemKey` values remain package-owned compile and injection anchors only. After
|
|
697
|
-
descriptor resolution, every Navigation item is addressed by its deterministic Navigation-domain
|
|
698
|
-
`PhiCmsInstanceId`; Site-authored items use Navigation Draft-origin ids from the central allocator.
|
|
699
|
-
|
|
700
|
-
Preset instantiation is in-memory and requires neither a DB row nor a Draft. Once an Area or route tree is
|
|
701
|
-
saved, its Draft/Published snapshot is independent of later descriptor versions. Untouched Live routes use
|
|
702
|
-
the currently installed descriptor; existing snapshots retain their source identity and version until the
|
|
703
|
-
operator explicitly replaces them.
|
|
704
|
-
|
|
705
|
-
Every Theme descriptor declares a required `themeKey` and `title` plus an optional `description`. Theme
|
|
706
|
-
selection consumes only active module descriptor bindings. Global mutable registries, registration side
|
|
707
|
-
effects, and parallel first-party discovery arrays are invalid.
|
|
708
|
-
|
|
709
|
-
The Builder Theme selector also exposes the concrete Site-owned Theme as `site:<siteKey>`, labelled with
|
|
710
|
-
the Site key. Preset choices are immutable bases and reusable apply actions. The Site entry is
|
|
711
|
-
selected exactly when the Theme scope has a Working Draft or Published revision pointer; clients never
|
|
712
|
-
infer that state by comparing Theme payloads. The applied preset remains provenance while the concrete
|
|
713
|
-
result is saved and published through the Site Theme Draft lifecycle. Selecting the Site entry restores
|
|
714
|
-
the current Site-owned snapshot.
|
|
715
|
-
|
|
716
|
-
Concrete persistence ownership remains target-specific: an Area target belongs to `(site, area)`, a
|
|
717
|
-
Page target belongs to `(site, area, canonical page scope)`, and other preset kinds use their own typed
|
|
718
|
-
target identity. Drafting, publishing, and resetting one target never mutates another target of the same
|
|
719
|
-
preset.
|
|
720
|
-
|
|
721
|
-
### Backup, restore, and portable import
|
|
722
|
-
|
|
723
|
-
Exact backup/restore reproduces the same installation state and preserves CMS instance ids, Draft and
|
|
724
|
-
Published revisions, pointers, and the relevant database sequences. It performs no identity remapping.
|
|
725
|
-
|
|
726
|
-
Portable CMS export/import is a content-transfer operation. Import creates a target Draft, re-derives
|
|
727
|
-
deterministic preset ids from their recorded `(ownerModuleId, presetKey, nodeKey)` provenance,
|
|
728
|
-
allocates new target-Draft ids for authored nodes, and atomically remaps structural references, signal
|
|
729
|
-
routes, controller/form bindings, and other declared node references. Module-owned domain data such as
|
|
730
|
-
Media, News, or Tickets participates only through declared module export/import hooks. Third-party code
|
|
731
|
-
never performs identity remapping itself.
|
|
732
|
-
|
|
733
|
-
- Area/page resolution must obey this visibility contract:
|
|
734
|
-
- every area resolves only its own DB-backed pages or explicit area-owned fallback pages
|
|
735
|
-
- no area may resolve pages from another non-public area
|
|
736
|
-
- public pages and public shell roots do not auto-supply other areas
|
|
737
|
-
- explicit area-owned fallbacks such as admin dashboard or admin users/logs stay local to that area
|
|
738
|
-
- Shared types should define the canonical region/preset contract, for example:
|
|
739
|
-
- `PhiCmsRegionKey`
|
|
740
|
-
- `PhiCmsRegionConfig`
|
|
741
|
-
- `PhiCmsResolvedRegion`
|
|
742
|
-
- `PhiCmsAreaPreset`
|
|
743
|
-
- Preview and live Region containers are visually neutral when `border` is missing or `null`. A Region border must come from explicit Region config; implicit header, footer, or Sider separators are not part of runtime rendering. Canvas and Editor outlines belong only to Builder scaffold chrome.
|
|
744
|
-
- A Layout `borderRadius` shorthand is normalized into the Border control's four corner-radius values for Inspector display. Explicit per-corner values override that common radius.
|
|
745
|
-
- Widgets, layouts, and route resolvers should move toward explicit plugin definitions with:
|
|
746
|
-
- `kind`
|
|
747
|
-
- `pluginKey`
|
|
748
|
-
- `typeKey`
|
|
749
|
-
- plugin-specific contract fields
|
|
750
|
-
- Synthetic CMS trees should be assembled through small factory helpers rather than by hardcoding built-in enum values inside presets:
|
|
751
|
-
- `buildPhiCmsLayoutNode(...)`
|
|
752
|
-
- `buildPhiCmsWidgetNode(...)`
|
|
753
|
-
- `buildPhiCmsLayoutNamespacedTypeKey(pluginKey, typeKey)`
|
|
754
|
-
- `buildPhiCmsWidgetTypeKey(...)`
|
|
755
|
-
- the factories take `pluginKey` and `typeKey` and emit the namespaced CMS node type used by the registry
|
|
756
|
-
- built-in `PhiCmsLayoutType.*` and `PhiCmsWidgetType.*` constants remain convenience shortcuts for shared built-ins, not the only valid CMS contract
|
|
757
|
-
- concrete layout/widget instances use only canonical 96-bit `PhiCmsInstanceId` values created by the central CMS instance service
|
|
758
|
-
- preset templates use local `nodeKey` references and never numeric CMS node IDs
|
|
759
|
-
- third-party type resolution continues through plugin-key/type-key, while deterministic preset instance identity derives only from contract version plus module-key/preset-kind/preset-key/node-key
|
|
760
|
-
- Plugins may additionally expose inert future-facing monetization metadata such as:
|
|
761
|
-
- `commercial.vendor`
|
|
762
|
-
- `commercial.website`
|
|
763
|
-
- `commercial.plan`
|
|
764
|
-
- `commercial.licenseRequired`
|
|
765
|
-
- Widget and layout plugins should additionally expose:
|
|
766
|
-
- `category`
|
|
767
|
-
- `tags`
|
|
768
|
-
- `icon`
|
|
769
|
-
- `defaultConfig`
|
|
770
|
-
- `fields`
|
|
771
|
-
- `parseConfig`
|
|
772
|
-
- `render`
|
|
773
|
-
- A CMS widget should usually consist of:
|
|
774
|
-
- a public `Phi*Widget` implementation component
|
|
775
|
-
- and a `PhiCmsWidgetPlugin` definition that adapts it into the CMS/plugin registry
|
|
776
|
-
- A CMS layout may likewise consist of:
|
|
777
|
-
- a public `Phi*Layout` implementation component
|
|
778
|
-
- and a layout plugin definition that adapts it into the CMS/plugin registry
|
|
779
|
-
- For CMS rendering, widget and layout plugins are the only supported public integration surface.
|
|
780
|
-
- Shared sites, editors, presets, and future plugin providers should target the canonical plugin contract.
|
|
781
|
-
- When a public `Phi*Widget` or `Phi*Layout` component is the plugin implementation, it must remain self-contained and idempotent.
|
|
782
|
-
- Layout plugins should additionally declare their slot contract for editor and validation use.
|
|
783
|
-
- Builder/editor metadata should come from the plugin definition itself:
|
|
784
|
-
- `title`
|
|
785
|
-
- `description`
|
|
786
|
-
- `category`
|
|
787
|
-
- `tags`
|
|
788
|
-
- `icon`
|
|
789
|
-
- `defaultConfig`
|
|
790
|
-
- `fields`
|
|
791
|
-
- and for layouts also `slots`
|
|
792
|
-
- Built-in shared layouts and widgets may seed `defaultConfig` from a common shared defaults file, but runtime callers should still read defaults through the plugin contract rather than a second caller-local fallback.
|
|
793
|
-
- For layout plugins, `defaultConfig` remains the public neutral default entrypoint. Optional creation presets materialize normal config before persistence.
|
|
794
|
-
- Third-party plugins own their own `defaultConfig` and parser defaults and must not be forced onto the shared built-in defaults file.
|
|
795
|
-
- Draft consumers in the Builder merge the plugin `defaultConfig` with the current draft through the shared helper before reading derived values.
|
|
796
|
-
- Plugin `render` is server-first; client inners remain an internal implementation detail of the plugin.
|
|
797
|
-
- Widget and layout execution contexts may later receive an optional `license` object.
|
|
798
|
-
- CMS page contracts may also use a dedicated `redirect` page type for non-content pages.
|
|
799
|
-
- Redirect pages should carry a target contract in page config with `area + path` and an optional status code.
|
|
800
|
-
- CMS page delete is modeled as a normal page revision with `status = Deleted` and a deleted revision flag; publishing that revision makes the live route resolve as not found while retaining revision history for restore.
|
|
801
|
-
- Route presets provide CMS trees inside the Area base shell. They never replace the outer shell or return
|
|
802
|
-
arbitrary React nodes.
|
|
803
|
-
- The shared catch-all route is only the site-owned transport into the central exact/dynamic route resolver.
|
|
804
|
-
- `public` should continue to prefer CMS/DB-driven shell regions and navigation by default.
|
|
805
|
-
- Navigation translation scope is part of the `navKey` contract:
|
|
806
|
-
- `builder:*` is reserved for Phi-owned builder chrome navigation and must resolve from shared presets with global shared UI translations.
|
|
807
|
-
- all other navigation keys remain site-owned navigation content and must use site-scoped navigation lookup and site-scoped translations.
|
|
808
|
-
- do not move user/site navigation labels into global label sets to fix Builder UI wording.
|
|
809
|
-
- `app` uses its own CMS/DB-driven shell baseline; optional modules contribute its routes and navigation.
|
|
810
|
-
- Area base modules declare navigation surfaces and exported anchors. Optional modules may inject only
|
|
811
|
-
into those surfaces through declarative navigation descriptors; they cannot create navKeys.
|
|
812
|
-
- Route mounts bind routing to one exported Area-owned navigation container, but navigation overlays remain
|
|
813
|
-
presentation-only: reordering or reparenting a contribution never changes its effective route path.
|
|
814
|
-
- An overlay may tombstone an Area-owned container. Runtime navigation then hides the container and its
|
|
815
|
-
remaining subtree, while Builder navigation authoring continues to show those source items disabled.
|
|
816
|
-
A child explicitly reparented outside that tombstoned subtree remains visible.
|
|
817
|
-
- Installed Module packages extend the immutable runtime-module catalog through `phis-cli`-generated
|
|
818
|
-
external build state; renderers accept only request-resolved active registries.
|
|
819
|
-
- `@phis/ui/cms` remains the explicit aggregate CMS API. Route entry modules must use the
|
|
820
|
-
narrow `cms/root-layout`, `cms/root-page`, `cms/root-slot-page`, `cms/error-page`, and `cms/request`
|
|
821
|
-
subpaths so importing one App Router boundary does not load unrelated presets and registries.
|
|
822
|
-
- `@phis/ui/cms/plugins` exports the site-bridge and plugin integration surface.
|
|
823
|
-
- The preferred site integration surface is a `PhiCmsSiteBridge` object.
|
|
824
|
-
- The stable generic Area host owns the bridge instance and consumes the generated build-time Module
|
|
825
|
-
projection; Site/Skeleton source must not reconstruct that catalog or import optional package names.
|
|
826
|
-
- Catch-all admin/builder/editor paths rendered from shared UI receive that generic bridge instead of
|
|
827
|
-
importing site-local plugin or Module files.
|
|
828
|
-
- Backend payloads, shared fallback presets, renderer input, and future editor output should all converge on that same normalized contract.
|
|
829
|
-
- Layout and widget type IDs must come from central shared registry constants, not from local component-level hardcodes.
|
|
830
|
-
- Keep separate registry constants for layout types and content/widget types.
|
|
831
|
-
- A duplicate-ID validation check in CI or test tooling is recommended and should fail on collisions.
|
|
832
|
-
- The future stable CMS type identity is the pair `(plugin_key, type_key)`.
|
|
833
|
-
- Shared core entries should use:
|
|
834
|
-
- `@phis/ui/widgets + <type-key>` for widgets
|
|
835
|
-
- `@phis/ui/layouts + <type-key>` for layouts
|
|
836
|
-
- Registries should expose both:
|
|
837
|
-
- the current technical runtime id
|
|
838
|
-
- and canonical `pluginKey` / `typeKey` metadata for future DB/plugin resolution
|
|
839
|
-
- A consuming site should keep its CMS catch-all `layout.tsx` and `page.tsx` thin and deterministic; layout and content resolution should flow from the site wrapper to `@phis/ui` to `@phis/server`.
|
|
840
|
-
|
|
841
|
-
Example site bridge:
|
|
842
|
-
|
|
843
|
-
```ts
|
|
844
|
-
import {
|
|
845
|
-
PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG,
|
|
846
|
-
type PhiCmsSiteBridge,
|
|
847
|
-
} from "@phis/ui/cms/plugins";
|
|
848
|
-
export const SITE_CMS_BRIDGE: PhiCmsSiteBridge = {
|
|
849
|
-
runtimeModuleCatalog: PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG,
|
|
850
|
-
};
|
|
851
|
-
```
|
|
852
|
-
|
|
853
|
-
Then pass that bridge into the thin shared root entrypoint:
|
|
854
|
-
|
|
855
|
-
```tsx
|
|
856
|
-
<PhiCmsRootLayout root={root} cmsBridge={SITE_CMS_BRIDGE}>
|
|
857
|
-
{children}
|
|
858
|
-
</PhiCmsRootLayout>
|
|
859
|
-
```
|
|
860
|
-
|
|
861
|
-
### Client Runtime Signal Contract
|
|
862
|
-
|
|
863
|
-
Client-only cross-component coordination uses the consolidated `PhiSignal` contract from `types/signals`.
|
|
864
|
-
|
|
865
|
-
- `PhiSignal` is the only public signal shape; do not introduce feature-local message contracts.
|
|
866
|
-
- The v1 ABI target is a flat signal shape: `{ scope, channel, action, valueType, value, valueSchema?, sender?, receiver, correlationId, timestamp, meta? }`.
|
|
867
|
-
- `scope`, `action`, and `valueType` are closed contracts. `channel` is the configured channel that connects emitters and listeners.
|
|
868
|
-
- Public JSON signals require a named schema.
|
|
869
|
-
- `valueType: "json"` capabilities and routes must declare `valueSchema`.
|
|
870
|
-
- `valueSchema` uses the namespaced form `<npm-package>/<schema-key>`.
|
|
871
|
-
- Core schemas must use `PHI_SIGNAL_VALUE_SCHEMAS`; new core schema ids are created with `createPhiSharedSignalValueSchema(...)`, not by repeating the package-name prefix at call sites.
|
|
872
|
-
- JSON wiring matches only when `scope`, `channel`, `action`, `valueType`, and `valueSchema` are compatible.
|
|
873
|
-
- Non-JSON signals must not use `valueSchema`.
|
|
874
|
-
- `scope` is the signal routing level. `scopeKey` is not a routing scope and must not be used as a fallback for signal delivery; it may name a concrete transient store, provider, collection, or data-source namespace.
|
|
875
|
-
- A receiver is registered in exactly one scope, and that registration decides.
|
|
876
|
-
- A block registers in the scope of the tree it is drawn from: a Page tree gives `page`, an Area preset gives `area`, a Region gives `region`.
|
|
877
|
-
- Delivery to a concrete address takes the scope from that registration; what a route or a dispatch declared is not consulted. A declared scope that disagrees is inert, not fatal.
|
|
878
|
-
- `broadcast` is the exception: there is no receiver to ask, so the scope is the address and has to be named.
|
|
879
|
-
- A signal to an address that is not registered yet is held and delivered when it registers. One that cannot be delivered at all -- nothing at that address, or a broadcast in a scope that forbids it -- is dropped, and says so once on the console as `[phi-signals] Dropped ...`. `pending` is normal; `undeliverable` is a fault.
|
|
880
|
-
- `sender` is `PhiSignalAddress | null`; it identifies the concrete sending instance or controller and must never be `broadcast`.
|
|
881
|
-
- `receiver` is `PhiSignalAddress | "broadcast" | null`.
|
|
882
|
-
- `null` means not wired and no runtime signal should be emitted.
|
|
883
|
-
- `"broadcast"` means explicit broadcast within the selected `scope` and current runtime context.
|
|
884
|
-
- a concrete address means targeted delivery.
|
|
885
|
-
- Public v1 scopes are exactly `widget`, `layout`, `region`, `page`, `area`, and `site`.
|
|
886
|
-
- `runtime` identifies an execution environment or Registry partition, not a signal routing scope.
|
|
887
|
-
- Live Area, active Page, and Builder Canvas runtimes remain isolated through their Registry context.
|
|
888
|
-
- Public v1 address families are exactly:
|
|
889
|
-
- `cms:<instanceId>[:<subcontrolKey>]` for Widget and Layout instances
|
|
890
|
-
- `region:<regionKey>` for a concrete Region inside the route's active context
|
|
891
|
-
- `controller:<npm-package>/<controller-key>:<instance-key>` for Controller instances
|
|
892
|
-
- Widget/Layout kind is Registry metadata and must not create separate `widget:` or `layout:` address families.
|
|
893
|
-
- `object:`, `runtime:`, `site:`, `area:`, `page:`, `slot:`, and `block:` are not public v1 address
|
|
894
|
-
families.
|
|
895
|
-
- Controller receivers are first-class `PhiSignalAddress` values, not a second signal system.
|
|
896
|
-
- The only valid controller address form is `controller:<npm-package>/<controller-key>:<instance-key>`.
|
|
897
|
-
- Singleton controllers use `default` as their instance key, for example `controller:@phis/ui/asset:default` or `controller:@phis/ui/builder:default`.
|
|
898
|
-
- Non-namespaced controller addresses such as `controller:asset:default` and short addresses such as `controller:<controller-key>` are not valid v1 ABI.
|
|
899
|
-
- The `<npm-package>/<controller-key>` segment matches the existing widget/layout `pluginKey/typeKey` registry style; third-party controllers must use their npm package name as `pluginKey`.
|
|
900
|
-
- Controller settings may restrict a controller to the single `default` instance or allow additional named instances, but the serialized address form stays the same.
|
|
901
|
-
- `scopeKey` may name the controller's internal store, provider, collection, or data-source namespace; it must not replace the controller instance key in signal routing.
|
|
902
|
-
- Plugin metadata has four separate declaration surfaces:
|
|
903
|
-
- `fields` declares inspector-editable config and persistence shape.
|
|
904
|
-
- renderable-block `capabilities` declares only binary interaction participation, such as selectable, draggable, focusable, or droppable.
|
|
905
|
-
- `runtimeSignals.emits/listens` declares semantic signal capabilities.
|
|
906
|
-
- `runtimeSignals.dragDrop` declares semantic drag/drop payload types and drop modes.
|
|
907
|
-
- Concrete instance signal routes are serialized with the CMS widget/layout/object instance config, not in `runtimeSignals`.
|
|
908
|
-
- `runtimeSignals` declares what the plugin can emit or listen to.
|
|
909
|
-
- `signalRoutes` declare how one concrete instance is connected.
|
|
910
|
-
- Each `runtimeSignals.emits/listens` capability must have a stable `id`.
|
|
911
|
-
- Each `signalRoutes.emits/listens` route must have a stable `routeKey`, unique across the owning instance's complete route set.
|
|
912
|
-
- Each route has a required `capabilityId`. In `signalRoutes.emits`, it references one declared sender capability from `runtimeSignals.emits`; in `signalRoutes.listens`, it references one declared receiver capability from `runtimeSignals.listens`.
|
|
913
|
-
- Route CRUD and table identity use `routeKey`; capability dispatch uses `capabilityId` and may resolve several explicit routes.
|
|
914
|
-
- Presets use explicit stable route keys. Builder-created routes use the central `createPhiSignalRouteKey()` helper. Route keys are never derived from array indexes, route contents, receiver addresses, or timestamps and remain stable through edit, publish, and receiver remapping.
|
|
915
|
-
- Do not persist or parse legacy `sourceKey` route fields.
|
|
916
|
-
- The runtime sender is derived from the current instance address; persisted routes should store only a stable subcontrol/source key when needed.
|
|
917
|
-
- The inspector must not infer settings from signal capabilities, and signaling must not infer wiring from inspector fields.
|
|
918
|
-
- Stable actions are exactly `activate`, `change`, `toggle`, `start`, `stop`, `clear`, `open`, `close`, `reload`, `flush`, `filter`, and `drop`.
|
|
919
|
-
- A channel has one canonical `valueType` per receiver capability. If one concept needs multiple value families, use distinct channels.
|
|
920
|
-
- Naming convention:
|
|
921
|
-
- entity `id` means numeric persisted/runtime identity
|
|
922
|
-
- capability metadata `id` is the stable string identifier of that declared capability
|
|
923
|
-
- route `capabilityId` references capability metadata `id`
|
|
924
|
-
- route `routeKey` is the stable string identity of one concrete persisted route
|
|
925
|
-
- `key` means stable string key.
|
|
926
|
-
- `index` means positional number.
|
|
927
|
-
- Command names such as `save`, `publish`, `preview`, `undo`, `redo`, `reset`, `createPage`, and `deleteSelected` are channels with `action: "activate"`, not signal actions.
|
|
928
|
-
- Generic lifecycle actions keep their domain in the channel:
|
|
929
|
-
- reload data: domain channel plus `action: "reload"`
|
|
930
|
-
- focus state: `channel: "focused"`, `action: "change"`, `valueType: "boolean"`
|
|
931
|
-
- effects: `channel: "effects"`, `action: "start" | "stop" | "clear"`
|
|
932
|
-
- drag: `channel: "drag"`, `action: "start" | "change" | "stop"`
|
|
933
|
-
- drop: `channel: "drop"`, `action: "drop"`
|
|
934
|
-
- Runtime receivers register while their instance is mounted and unregister on unmount. The bus must treat a receiver as active only while it is inside the current runtime context, such as the current page, area, or region. A mounted container or lazy fallback does not prove that its concrete signal consumer is ready: orchestration that sends an initial payload after lazy mounting must wait until both the receiver instance and at least one concrete listener for that address are registered.
|
|
935
|
-
- Runtime delivery state is provider-owned, never module-global. The Root owns the Site partition, each
|
|
936
|
-
mounted Area owns one Area partition, and each Builder Canvas owns an isolated Canvas partition.
|
|
937
|
-
Subscriptions and mounted-instance registries are destroyed with their provider; browser tabs do not
|
|
938
|
-
exchange runtime signals and v1 does not use `BroadcastChannel`.
|
|
939
|
-
- Page-owned endpoints register their concrete Page/Region context inside their current Area partition and
|
|
940
|
-
unregister on unmount. This keeps shell-to-current-page routes possible without a second global current-page
|
|
941
|
-
singleton or a parallel signal bus.
|
|
942
|
-
- `correlationId` is required on delivered runtime signals. The signal bus/controller creates it centrally when no existing correlation is supplied. Feedback or state-change signals produced by handling a command must keep the initiating correlation id.
|
|
943
|
-
- Because a missing correlation id is replaced by a fresh one rather than rejected, an answer that leaves the field out is indistinguishable from one that started a new exchange. Pass `signal.correlationId` explicitly when replying -- through any helper the listener calls, and across an `await` -- and write `createPhiSignalCorrelationId()` where a new exchange really begins. A correlation id is never a literal of one's own: every occurrence of such a string is the same id, so concurrent exchanges become indistinguishable. `pnpm runtime-modules:check` fails on both mistakes.
|
|
944
|
-
- A listener reading signals addressed to an address declares that address (third argument to `usePhiSignalListener`, or `receiver` in its filter). Delivery is gated on the listeners registered per address, so a listener that only compares `signal.receiver` in its body has told the bus nothing and its signals are held forever without a warning. Listening in on an address another listener owns is fine -- registration is per address, not per listener. `pnpm runtime-modules:check` enforces this.
|
|
945
|
-
- `condition/reload` is answered by `usePhiRuntimeConditionStateResponder`, which replies to the asker under the asked correlation id. It accepts a getter for state that is not held in React state.
|
|
946
|
-
- Listen routes are read-only with respect to the signal graph: they may update local UI/control state, but must not implicitly emit another runtime signal. If relay/automation is needed later, it requires an explicitly approved contract extension.
|
|
947
|
-
- Controllers must suppress no-op state changes instead of emitting redundant feedback.
|
|
948
|
-
- Context matching is part of routing:
|
|
949
|
-
- `page` routes only to instances in the current page composition.
|
|
950
|
-
- `area` routes only inside the current site area.
|
|
951
|
-
- `region` routes only inside the current region context.
|
|
952
|
-
- `site` routes only to the concrete required Core Runtime Controller endpoint `controller:@phis/ui/core:default`; they never target CMS/Region instances or broadcast.
|
|
953
|
-
- `cms:<instanceId>[:<subcontrolKey>]` addresses a concrete mounted CMS receiver; the registry resolves widget/layout kind.
|
|
954
|
-
- `controller:<npm-package>/<controller-key>:<instance-key>` addresses mounted runtime controller instances in the current context.
|
|
955
|
-
- Area module settings persist only optional eligible module ids; the locked base module comes from the Area definition and must not be persisted.
|
|
956
|
-
- Concrete multi-instance controller mount descriptors are materialized from the CMS structures that require them, not manually duplicated in an area module selector.
|
|
957
|
-
- Shell/area-owned widgets, layouts, and objects materialize controller instances with `mountScope: "area"`.
|
|
958
|
-
- Page-owned widgets, layouts, and objects materialize controller instances with `mountScope: "page"` only when the controller's owner module is active for the owning area.
|
|
959
|
-
- Runtime plugins may declare required controller instances, but must not mount controller plugins directly; the generic runtime controller host is the only controller mount path.
|
|
960
|
-
- A missing or null `receiver` is not connected and must not be treated as broadcast.
|
|
961
|
-
- Broadcast must use `receiver: "broadcast"`.
|
|
962
|
-
- `slot` is not a public v1 signal scope or receiver family; slot state routes through the owning layout receiver.
|
|
963
|
-
- `block:<id>` is not a public v1 wiring address; cached or hidden instances outside the current context must not receive active-context signals.
|
|
964
|
-
- Area registries remain isolated: no signal travels laterally from one Area to another. Explicit Area/Page-to-Site-Core routes and Site-Core outputs to concrete receivers in the currently active Area/Page context are the only v1 boundary crossing. Builder Canvas Registry partitions must never reach the live Site endpoint.
|
|
965
|
-
- Slot switching and slot-local state must target the owning layout receiver with channels such as `activeSlotIndex` or `activeSlotKey`; do not use `scope: "slot"` or `receiver: "slot:<key>"`.
|
|
966
|
-
- Standard renderable-block signal channels are:
|
|
967
|
-
- `visibility/change` with canonical values `visible`, `collapsed`, or `hidden`
|
|
968
|
-
- `enabled/change` with `valueType: "boolean"`
|
|
969
|
-
- `size/change`, `minSize/change`, and `maxSize/change` with `valueType: "size"`
|
|
970
|
-
- `background/change` with `valueType: "json"`, `valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.backgroundConfig`, and the shared background config shape
|
|
971
|
-
- `border/change` with `valueType: "json"`, `valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.borderConfig`, and the shared border config shape
|
|
972
|
-
- `shadow/change` with `valueType: "string"` and one of the semantic shadow ids `none`, `soft`, or `strong`; custom CSS shadows are persisted configuration and are not transported through this string signal
|
|
973
|
-
- `zIndex/change` with `valueType: "number"`
|
|
974
|
-
- `opacity/change` with `valueType: "number"` and a CSS opacity value from `0` through `1`, defaulting to `1`
|
|
975
|
-
- `effects/start`, `effects/stop`, and `effects/clear` for renderer-supported effect state
|
|
976
|
-
- `opacity: 0` keeps layout participation; use `visibility` when the block should become hidden or collapsed.
|
|
977
|
-
- Top-level block `opacity` and `effects.opacity` are separate settings. `opacity/change` updates the block's base opacity; effect opacity remains part of the effect/animation configuration.
|
|
978
|
-
- Widgets emit their native control values. A switch emits booleans, a select emits selected values, and activation controls emit activation without embedding domain-specific values in the control value.
|
|
979
|
-
- Plugin capabilities are declared with `runtimeSignals.emits` and `runtimeSignals.listens`; old binding maps are legacy and should not be extended.
|
|
980
|
-
- Provider-backed structured tables follow [TABLES.md](./TABLES.md). `PhiTableWidget` owns persisted
|
|
981
|
-
presentation, source binding, CMS identity, and standard signal routing. The reusable Core
|
|
982
|
-
`PhiTableBinding` owns Provider resolution, normalized query/request state, mutations, and edit
|
|
983
|
-
reconciliation; the provider-free `PhiTableControl` renders the resulting controlled view model. A
|
|
984
|
-
module-owned Table Provider resource owns row identity, typed field schema, validation, authorization,
|
|
985
|
-
queries, and domain mutations. Editable static rows are versioned Provider resources, not a
|
|
986
|
-
Widget-specific config or Core identity branch.
|
|
987
|
-
- Provider-backed pure hierarchies follow [TREES.md](./TREES.md). `PhiTreeWidget` owns persisted
|
|
988
|
-
presentation and source binding, `PhiTreeBinding` owns Provider lifecycle and reconciliation, and the
|
|
989
|
-
provider-free `PhiTreeControl` renders the controlled hierarchy. Domain Tree wrappers are forbidden.
|
|
990
|
-
- Provider-backed visual collections follow [COLLECTIONS.md](./COLLECTIONS.md). The generic Widget and
|
|
991
|
-
Binding own the shared view lifecycle while the selected module Provider supplies domain item and panel
|
|
992
|
-
adapters; self-contained filters, toolbar, integrated panels, and pagination are never loose preset
|
|
993
|
-
Widgets.
|
|
994
|
-
- Layouts and Widgets share the same signal bus, `cms:` receiver family, and renderable-block controls.
|
|
995
|
-
- Full widget-level rules live in `components/widgets/README.md`.
|
|
996
|
-
|
|
997
|
-
### Site Core Runtime Controller
|
|
998
|
-
|
|
999
|
-
The mandatory Core module mounts exactly one site-owned Core Runtime Controller in the shared application
|
|
1000
|
-
Root Layout above all Area layouts at `controller:@phis/ui/core:default`. It has
|
|
1001
|
-
`mountScope: "site"`, is not an optional Area selection, and remains mounted during client navigation
|
|
1002
|
-
between Areas that share that Root Layout. A deployment with multiple Next.js Root Layouts mounts one
|
|
1003
|
-
Core instance per Root Layout lifetime; crossing those roots performs a full page load and starts a new
|
|
1004
|
-
client runtime.
|
|
1005
|
-
|
|
1006
|
-
The controller is the adapter between already-resolved CMS/Site state and browser-wide runtime effects;
|
|
1007
|
-
it is not the source of Theme, Page metadata, Locale, or persistence state. Area layouts remain responsible
|
|
1008
|
-
for Area modules, controllers, Shells, Regions, and active Page context. Child Area/Page contexts explicitly
|
|
1009
|
-
publish their resolved snapshot to the Core instance when they mount or become active.
|
|
1010
|
-
|
|
1011
|
-
Its closed state inputs and mount/context-activation snapshot outputs are:
|
|
1012
|
-
|
|
1013
|
-
- `pageTitle/change` with `valueType: "string"`
|
|
1014
|
-
- `pageDescription/change` with `valueType: "string"`
|
|
1015
|
-
- `openGraphImage/change` with `valueType: "image"`
|
|
1016
|
-
- `canonicalUrl/change` with `valueType: "string"`
|
|
1017
|
-
- `theme/change` with `valueType: "json"` and a namespaced runtime-theme `valueSchema`
|
|
1018
|
-
- `themeMode/change` with `valueType: "boolean"`; `true` selects the live dark projection and `false` the live light projection without persisting Site Theme configuration
|
|
1019
|
-
- `locale/change` with `valueType: "string"`, validated against the resolved Site locale set
|
|
1020
|
-
|
|
1021
|
-
Optional `pageDescription`, `openGraphImage`, and `canonicalUrl` state additionally declares
|
|
1022
|
-
`action: "clear"` with `valueType: "none"`; absence is never encoded as an invalid string/image value.
|
|
1023
|
-
|
|
1024
|
-
The controller receives resolved persisted values, applies the effective browser/runtime state, and
|
|
1025
|
-
emits the current snapshot when the Site or active Area/Page context mounts. A `PhiPageTitleWidget` or
|
|
1026
|
-
another explicit current-context receiver can therefore initialize from the controller without making
|
|
1027
|
-
the controller the persistence source. Inputs are idempotent and must not be echoed automatically;
|
|
1028
|
-
mount snapshots start a new correlation, while a deliberately correlated apply flow preserves its
|
|
1029
|
-
existing correlation id.
|
|
1030
|
-
|
|
1031
|
-
The receive-only transient application-service inputs are:
|
|
1032
|
-
|
|
1033
|
-
- `notification/activate` with `valueType: "json"` and a closed namespaced notification schema
|
|
1034
|
-
- `message/activate` with `valueType: "json"` and a closed namespaced message schema
|
|
1035
|
-
|
|
1036
|
-
Both inputs use the same closed `level` vocabulary: `success`, `info`, `warning`, or `error`.
|
|
1037
|
-
Their exact values are deliberately small and serializable:
|
|
1038
|
-
|
|
1039
|
-
```ts
|
|
1040
|
-
type PhiCoreRuntimeNotificationValue = {
|
|
1041
|
-
level: "success" | "info" | "warning" | "error";
|
|
1042
|
-
title: string;
|
|
1043
|
-
description?: string | null;
|
|
1044
|
-
durationSeconds?: number | null;
|
|
1045
|
-
placement?: "top" | "topLeft" | "topRight" | "bottom" | "bottomLeft" | "bottomRight" | null;
|
|
1046
|
-
showTimeoutProgress?: boolean | null;
|
|
1047
|
-
};
|
|
1048
|
-
|
|
1049
|
-
type PhiCoreRuntimeMessageValue = {
|
|
1050
|
-
level: "success" | "info" | "warning" | "error";
|
|
1051
|
-
content: string;
|
|
1052
|
-
durationSeconds?: number | null;
|
|
1053
|
-
};
|
|
1054
|
-
```
|
|
1055
|
-
|
|
1056
|
-
`title` and `content` must be non-empty trimmed text. `description`, when supplied, must also be
|
|
1057
|
-
non-empty trimmed text; `durationSeconds` is a finite number greater than or equal to zero. Notification
|
|
1058
|
-
`placement` uses only the six application-level viewport positions above, and `showTimeoutProgress`
|
|
1059
|
-
controls the visible timeout progress. Unknown fields invalidate the payload. There are no arbitrary
|
|
1060
|
-
Ant Design props, React nodes, keys, actions, callbacks, persistence, or state rebroadcasts in this
|
|
1061
|
-
contract. Hover pause, stacking, maximum counts, offsets, icons, containers, and RTL are application
|
|
1062
|
-
defaults, not per-signal fields. Notification accessibility roles are derived from `level`.
|
|
1063
|
-
|
|
1064
|
-
The Root boots one Core-owned application-service adapter directly below the `App` context. It remains
|
|
1065
|
-
outside lazy Runtime-Controller projections so application-context updates cannot invalidate controller,
|
|
1066
|
-
Provider, or Table lifecycles. Feature code emits these values through `usePhiApplicationFeedback`; it
|
|
1067
|
-
never calls Ant Design Message or Notification APIs directly. Builder Canvas partitions cannot address the live Site Core instance;
|
|
1068
|
-
Canvas-only diagnostics therefore remain inline Phi Controls or cross the established Builder callback
|
|
1069
|
-
boundary.
|
|
1070
|
-
|
|
1071
|
-
The explicit Page-context snapshot is `pageMeta/change:json` with the existing namespaced `page-meta`
|
|
1072
|
-
schema. It contains `area`, `pageKey`, `pageTitle`, `pageDescription`, `pagePath`, and `pageType`, each
|
|
1073
|
-
as a concrete value or `null`. It is emitted only as a Page-scope broadcast from the Core controller into
|
|
1074
|
-
the currently active Page partition. It is a projection for current-context receivers, not a persisted
|
|
1075
|
-
route, and uses a new correlation id on mount/context activation. Site-state inputs remain targeted,
|
|
1076
|
-
idempotent Core inputs; an intentional correlated apply flow retains its correlation id without causing
|
|
1077
|
-
an automatic feedback loop.
|
|
1078
|
-
|
|
1079
|
-
Those inputs invoke the shared application Notification/Message service and are never persisted or
|
|
1080
|
-
emitted as state. Their schemas expose Phi-owned semantic fields only, never arbitrary Ant Design props.
|
|
1081
|
-
SSR/Next metadata remains server-resolved for initial HTML and crawlers; runtime metadata signals only
|
|
1082
|
-
apply the already-resolved or explicitly changed current browser state. Theme editing/persistence stays
|
|
1083
|
-
with the Theme controller, Page metadata persistence stays with the Page/Builder controller, and Locale
|
|
1084
|
-
configuration stays with its owning server/Admin flow.
|
|
1085
|
-
`locale/change` applies the validated effective runtime locale; it does not modify the Site's available
|
|
1086
|
-
or default locale configuration.
|
|
1087
|
-
|
|
1088
|
-
`scope: "site"` therefore means one explicit route to the globally mounted site-owned Core Runtime
|
|
1089
|
-
Controller, not a general global receiver Registry, Area relay, or Site broadcast. The Core instance may
|
|
1090
|
-
persist across Area transitions, but it must not retain or address receivers from an inactive Area/Page.
|
|
1091
|
-
Its outputs route only to explicit concrete receivers in the current active Registry context. Builder
|
|
1092
|
-
Canvas sandboxes have separate Registry partitions and cannot target the live Site endpoint. Different
|
|
1093
|
-
Areas may safely reuse deterministic preset instance ids.
|
|
1094
|
-
|
|
1095
|
-
Typical use cases:
|
|
1096
|
-
|
|
1097
|
-
- a header action icon refreshes a table widget in the content area
|
|
1098
|
-
- a toolbar button toggles a panel or form section
|
|
1099
|
-
- a shell control activates a specific stack slot
|
|
1100
|
-
- a filter control updates a local widget value and triggers a refetch
|
|
1101
|
-
|
|
1102
|
-
This is the target v1 contract. The declarative CMS tree remains the source of truth. The global Core
|
|
1103
|
-
mount does not authorize global broadcast, cross-Area relay, module-private buses, or imperative wiring.
|
|
1104
|
-
|
|
1105
|
-
### Runtime modules and area activation
|
|
1106
|
-
|
|
1107
|
-
The complete normative Module structure, first-party owner-folder convention, generalization gate, and
|
|
1108
|
-
Server/live/Authoring projection contract lives in [MODULES.md](./MODULES.md). The rules below describe
|
|
1109
|
-
activation and ownership details within that contract.
|
|
1110
|
-
|
|
1111
|
-
The terminology is strict across the Site/server boundary:
|
|
1112
|
-
|
|
1113
|
-
- a **Module** is a Site/client extension compiled into a Site application
|
|
1114
|
-
- an **Add-on** is a server extension compiled into `@phis/server`
|
|
1115
|
-
- **Core** is the built-in `@phis/server` capability provider
|
|
1116
|
-
|
|
1117
|
-
Every Module declares exactly one server binding: either Core or exactly one logical Add-on id. A
|
|
1118
|
-
Module must not bind to several Add-ons, install or enable an Add-on, or derive server availability
|
|
1119
|
-
from client state. One Add-on may serve several Modules only when they intentionally share one
|
|
1120
|
-
integration owner and deployment lifecycle. The normative server-side installation, capability,
|
|
1121
|
-
routing, Site-enablement, migration, and load-balancing contract lives in
|
|
1122
|
-
`phis-server/SERVER_ADDONS.md`.
|
|
1123
|
-
|
|
1124
|
-
Module and Add-on entrypoints are physically separate module graphs, whether or not they ship in the
|
|
1125
|
-
same package. `@phis/server` never imports a Site/React entrypoint, Site applications never import an
|
|
1126
|
-
`addon/` entrypoint, and both sides may share only a neutral, React-free wire-contract package. Missing or incompatible server capabilities are resolved server-side
|
|
1127
|
-
and produce a scoped diagnostic plus a deduplicated structured log entry; Module activation never
|
|
1128
|
-
installs or auto-enables server code.
|
|
1129
|
-
|
|
1130
|
-
When a Module has a direct `@phis/server` counterpart, both halves ship as one package: `@scope/name` is
|
|
1131
|
-
the Module, `@scope/name/addon/…` is the Add-on, and the Add-on's logical provider id is `@scope/name`.
|
|
1132
|
-
The entrypoint prefix identifies the half, not a different provider.
|
|
1133
|
-
|
|
1134
|
-
`PhiRuntimeModuleDefinition.serverBinding` is mandatory metadata:
|
|
1135
|
-
|
|
1136
|
-
```ts
|
|
1137
|
-
type PhiRuntimeModuleServerBinding = {
|
|
1138
|
-
providerId: `@${string}/${string}`;
|
|
1139
|
-
requiredCapabilities: readonly `@${string}/${string}:v${number}`[];
|
|
1140
|
-
};
|
|
1141
|
-
```
|
|
1142
|
-
|
|
1143
|
-
Capability ids are exact, versioned ABI requirements. During server resolution the Site fetches the
|
|
1144
|
-
site-specific capability snapshot from `@phis/server`. A selected Module activates only when its provider
|
|
1145
|
-
is available and every required capability is present. An unavailable dependent Module is omitted from
|
|
1146
|
-
route, controller, widget, layout, and provider activation while its persisted selection remains intact
|
|
1147
|
-
for diagnostics and later recovery. Modules with no server requirements bind explicitly to Core with an
|
|
1148
|
-
empty requirement list.
|
|
1149
|
-
|
|
1150
|
-
The runtime Module is the Site-side installation, ownership, activation, and lazy-loading boundary. A
|
|
1151
|
-
Module is a namespaced, NPM-owned plugin unit identified by `<npm-package>/<module-key>`. It owns at most
|
|
1152
|
-
one controller definition plus coordinated Widgets, Layouts, form definitions and handlers,
|
|
1153
|
-
data providers, option providers, Calendar adapters, authoring extensions, routes, and other provider
|
|
1154
|
-
types explicitly supported by the module contract. A controllerless module must contribute a meaningful
|
|
1155
|
-
artifact and omits all Controller fields and loaders. When present, the controller coordinates the
|
|
1156
|
-
module's runtime state, data, and signals; it is not itself the selectable module and must not activate one.
|
|
1157
|
-
|
|
1158
|
-
Area module settings are the declarative activation surface for optional runtime modules and are
|
|
1159
|
-
persisted as `runtimeModules`. Runtime modules must not be selected through hard-coded area-name
|
|
1160
|
-
switches. Selecting an optional module id makes that module eligible in the area; it does not eagerly
|
|
1161
|
-
load every implementation contributed by the module.
|
|
1162
|
-
|
|
1163
|
-
The v1 persisted activation shape is a unique string array of namespaced module ids:
|
|
1164
|
-
|
|
1165
|
-
```ts
|
|
1166
|
-
type PhiRuntimeModuleId = `${string}/${string}`;
|
|
1167
|
-
type PhiAreaRuntimeModules = readonly PhiRuntimeModuleId[];
|
|
1168
|
-
```
|
|
1169
|
-
|
|
1170
|
-
The array is selection only. Controller types, controller instance keys, controller addresses, and
|
|
1171
|
-
controller config do not belong in it. The `core` Module and the locked Area base module are omitted.
|
|
1172
|
-
Module-specific persisted config is not part of this v1 activation shape and requires a separately
|
|
1173
|
-
approved contract if needed.
|
|
1174
|
-
|
|
1175
|
-
`moduleId` and controller type are explicit, separate manifest fields even when a first-party module
|
|
1176
|
-
currently gives them the same namespaced string. The resolver must not derive either identifier from
|
|
1177
|
-
the other: module ids are persistence and activation ABI, while controller types are instance and
|
|
1178
|
-
signal-address ABI.
|
|
1179
|
-
|
|
1180
|
-
The `core` Module contains the minimal shared CMS runtime and generic Form primitives needed to resolve and
|
|
1181
|
-
render content. It is represented by the catalog's single `kind: "platform"` contribution and is never
|
|
1182
|
-
selectable or persisted in `runtimeModules`; concrete form-controller instances are created only when a
|
|
1183
|
-
resolved CMS tree requires them. Every other contribution is `kind: "module"`: the Area contract locks
|
|
1184
|
-
exactly one base module, while optional first-party and third-party modules are activated by their
|
|
1185
|
-
namespaced module id.
|
|
1186
|
-
|
|
1187
|
-
An installed NPM package may register any number of logical modules, but every module owns exactly one
|
|
1188
|
-
controller type. Every contributed Widget, Layout, controller, form/provider definition, data
|
|
1189
|
-
provider, option provider, and authoring extension has exactly one `ownerModuleId`.
|
|
1190
|
-
The module owner controls availability, definition/loader identity, versioning, and migration
|
|
1191
|
-
responsibility. A generic contribution reused by several domains belongs to Core or to its own module;
|
|
1192
|
-
it must never have several owners. A controller that needs independent activation, ownership, or
|
|
1193
|
-
lifecycle defines another module rather than becoming a second controller inside the first module.
|
|
1194
|
-
|
|
1195
|
-
Ownership is separate from dependencies and signaling:
|
|
1196
|
-
|
|
1197
|
-
- one widget/layout may declare several required controller types
|
|
1198
|
-
- an Area base module is always active; optional eligible modules must be enabled explicitly by the Area policy
|
|
1199
|
-
- controller requirements and module dependencies never auto-enable another module
|
|
1200
|
-
- one instance may wire signals to any compatible controller, widget, layout, or region without
|
|
1201
|
-
changing ownership
|
|
1202
|
-
- a module may expose named data providers to generic Core widgets; those providers retain their module
|
|
1203
|
-
ownership and are available only while their `ownerModuleId` is active
|
|
1204
|
-
- provider metadata and execution are separate: the module definition and Server registry carry only
|
|
1205
|
-
serializable descriptors; executable provider Client loaders live only in immutable Area-local Client
|
|
1206
|
-
manifests, and the Server host passes demanded provider keys across the Flight boundary
|
|
1207
|
-
- Provider execution mode (`static | live`) is independent from Authoring mode (`none | read | edit`);
|
|
1208
|
-
`authoringPolicy` is not part of the v1 descriptor ABI
|
|
1209
|
-
- provider descriptors declare `kind: "options" | "table" | "collection"`; generic controls filter descriptors by
|
|
1210
|
-
kind and executable Clients register only in the corresponding scoped provider context
|
|
1211
|
-
- first-party provider-key constants are owner-scoped so importing a Core provider key cannot retain
|
|
1212
|
-
Builder or optional-module key catalogs in the Public Client graph
|
|
1213
|
-
|
|
1214
|
-
Module activation and controller instance materialization are separate:
|
|
1215
|
-
|
|
1216
|
-
- activation happens once for the `core` Module and once per Area-base or selected optional module id
|
|
1217
|
-
- one active module exposes at most one controller type and may later materialize zero, one, or many
|
|
1218
|
-
concrete instances of that type when present
|
|
1219
|
-
- additional instances must not reload the module provider
|
|
1220
|
-
- controller instances orchestrate domain state and signals; they must not imperatively import widget,
|
|
1221
|
-
layout, form, provider, authoring, or controller registries and must never activate their module
|
|
1222
|
-
- area configuration selects module ids, never controller types; each controller-bearing module declares
|
|
1223
|
-
whether its controller has the required Site mount, receives a default Area mount, or is materialized
|
|
1224
|
-
on demand by CMS-instance requirements
|
|
1225
|
-
|
|
1226
|
-
The contribution manifest owns that controller mount policy. `site` is reserved for the `core` Module
|
|
1227
|
-
controller mounted once by the shared Root Layout; `area` mounts the module controller's `default`
|
|
1228
|
-
instance inside the active Area; `demand` exposes the controller definition but creates instances only
|
|
1229
|
-
from CMS requirements. Form uses demand materialization. A second independently mounted controller
|
|
1230
|
-
requires a second module rather than another controller entry in the same manifest.
|
|
1231
|
-
|
|
1232
|
-
A runtime module contains exactly one lightweight controller definition and may additionally contribute:
|
|
1233
|
-
|
|
1234
|
-
- lightweight Widget, Layout, form/provider, and authoring definitions
|
|
1235
|
-
- lazy live-runtime widget and layout loaders
|
|
1236
|
-
- one module-owned controller Client boundary referenced by that module manifest
|
|
1237
|
-
- lazy form renderers, field types, validators, and submit/confirm/preview handlers
|
|
1238
|
-
- serializable `formProviders` metadata for namespaced field types, validation rules, and handlers;
|
|
1239
|
-
executable providers are composed explicitly and are never registered through import side effects
|
|
1240
|
-
- serializable module-owned provider descriptors plus matching live Provider Client loaders
|
|
1241
|
-
- a serializable controller descriptor including `runtimeSignals`; Builder may catalog endpoint
|
|
1242
|
-
capabilities from it without importing or mounting the controller implementation
|
|
1243
|
-
- concrete demand-controller settings remain the result of the owning widget plugin's executable
|
|
1244
|
-
`requiredRuntimeControllers` resolver. Canvas evaluates that resolver only inside the active module's
|
|
1245
|
-
authoring Client boundary, exposes only the resulting serializable settings to Wiring, and never
|
|
1246
|
-
reconstructs a controller instance from a persisted route receiver
|
|
1247
|
-
- optional static authoring Provider Client loaders; DB/API/store/subscription-backed providers remain live-only
|
|
1248
|
-
- one optional lazy module UI provider for package-owned theme, context, CSS, and portal integration
|
|
1249
|
-
- lazy preview/editor/tool loaders for authoring modes
|
|
1250
|
-
- optional route or other package-owned runtime contributions when their existing registry contracts
|
|
1251
|
-
allow them
|
|
1252
|
-
|
|
1253
|
-
Widget and layout descriptors carry their complete lightweight definition directly. The Builder derives
|
|
1254
|
-
serializable metadata from those definitions. For layouts, the definition itself is serializable and is
|
|
1255
|
-
the single source for variants, fields, slots, signals, anchors, and layout defaults; lazy
|
|
1256
|
-
implementation plugins reuse it and add only parsers, serializers, and renderers. Builder Picker and
|
|
1257
|
-
Inspector metadata is built from the exact resolved Canvas module set and never from a global
|
|
1258
|
-
first-party widget/layout implementation registry.
|
|
1259
|
-
|
|
1260
|
-
Every installed catalog entry directly declares its complete lightweight widget/layout definitions and
|
|
1261
|
-
their lazy Server loaders. The catalog derives namespaced ownership from these entries and validates it
|
|
1262
|
-
globally without invoking executable module loaders. There is no parallel ownership list or duplicate
|
|
1263
|
-
widget/layout array in the executable module object; inactive catalog entries remain diagnostic metadata
|
|
1264
|
-
and do not become renderable.
|
|
1265
|
-
|
|
1266
|
-
#### Module UI provider boundary
|
|
1267
|
-
|
|
1268
|
-
A module may use Ant Design, Material UI, Radix, another component library, or package-owned controls
|
|
1269
|
-
internally. The component library is not part of the cross-module ABI. All public module controls still
|
|
1270
|
-
implement the standard Phi config, render-mode, control, capability, value-type, route, renderable-block,
|
|
1271
|
-
and authoring-scaffold contracts, and communicate with their module controller and other instances only
|
|
1272
|
-
through the standard Phi signal bus.
|
|
1273
|
-
|
|
1274
|
-
When a UI library needs React context, theme state, a CSS cache, locale setup, or a popup/portal root,
|
|
1275
|
-
the module may declare one lazy client UI provider. The runtime host mounts that provider only around
|
|
1276
|
-
the active module's owned render subtree; the Builder mounts the same boundary inside the target-area
|
|
1277
|
-
Canvas sandbox for preview and authoring output. Loading the provider does not activate the module and
|
|
1278
|
-
must not eagerly load module implementations that are not demanded by the current tree and render mode.
|
|
1279
|
-
|
|
1280
|
-
The provider boundary is isolated:
|
|
1281
|
-
|
|
1282
|
-
- it must not wrap the application root or another module's subtree
|
|
1283
|
-
- it must not install another signal bus, controller registry, renderer, or fallback path
|
|
1284
|
-
- module-private React context is not a cross-module communication contract
|
|
1285
|
-
- CSS resets, generated styles, variables, and theme tokens must be scoped to the module root
|
|
1286
|
-
- popup, menu, tooltip, dialog, and other portal containers must stay inside the module root or Canvas
|
|
1287
|
-
sandbox rather than escaping to an unowned global container
|
|
1288
|
-
- provider and portal state is disposed when the module subtree or sandbox unmounts
|
|
1289
|
-
|
|
1290
|
-
Different UI-library modules may coexist in one area. Their interoperability comes from Phi signals
|
|
1291
|
-
and shared value contracts, never from importing each other's contexts or component-library state.
|
|
1292
|
-
|
|
1293
|
-
The initial first-party ownership modules are:
|
|
1294
|
-
|
|
1295
|
-
- `@phis/ui/runtime` for the transitional generic widget/layout catalog while signal/runtime
|
|
1296
|
-
infrastructure and generic Form orchestration move to the `core` Module
|
|
1297
|
-
- `@phis/ui/public` for the Public Area baseline and Contact form domain
|
|
1298
|
-
- `@phis/ui/auth` for the optional Login/Registration/Confirmation/Reset domain in Public and the
|
|
1299
|
-
Site Auth settings contribution in Admin
|
|
1300
|
-
- `@phis/ui/builder` for Canvas, Workspace, Inspector, Fields, Wiring, and other
|
|
1301
|
-
Builder-owned widgets
|
|
1302
|
-
- `@phis/ui/dashboard` for Area-specific Dashboard routes and projection orchestration
|
|
1303
|
-
- `@phis/ui/localization` for locale and translation administration
|
|
1304
|
-
- `@phis/ui/observability` for site-runtime log administration
|
|
1305
|
-
- `@phis/ui/user-management` for user, invite, role, and permission administration
|
|
1306
|
-
- `@phis/ui/revisions` for revision history, restore/delete management, and Revisions widgets
|
|
1307
|
-
- `@phis/ui/theme` for Theme and Brand behavior
|
|
1308
|
-
- `@phis/ui/asset` for Media, Upload, Picker, and asset data
|
|
1309
|
-
- `@phis/ui/admin` for the locked Admin shell, navigation surface, root route, and Admin settings
|
|
1310
|
-
- `@phis/ui/editor` for content/translation editor functionality
|
|
1311
|
-
- `@phis/support/core` for the separately packaged Support Inbox domain; it is an optional Site Module,
|
|
1312
|
-
not a fixed Area, and binds to the Core `threads:v1`, `resource-links:v1`, and `support:v1`
|
|
1313
|
-
capabilities
|
|
1314
|
-
|
|
1315
|
-
Future domains such as News use their own module rather than joining Admin or Core.
|
|
1316
|
-
|
|
1317
|
-
Definitions and loader descriptors must not import their implementation modules. Installed NPM
|
|
1318
|
-
packages register their loader descriptors at build time; a package name read from the DB must never be
|
|
1319
|
-
passed directly to an unrestricted dynamic `import()`.
|
|
1320
|
-
|
|
1321
|
-
Resolution uses two mandatory gates:
|
|
1322
|
-
|
|
1323
|
-
1. Catalog metadata marks the module required, the centralized area policy locks the optional module
|
|
1324
|
-
for that area, or the owning area enables the optional module id, making that module eligible.
|
|
1325
|
-
2. The resolved shell/page tree and current runtime mode require a concrete type from that provider.
|
|
1326
|
-
|
|
1327
|
-
Area-locked module policy is resolved identically on the server and client. The Builder module is
|
|
1328
|
-
locked for the Builder area: it is always active, selected, persisted on the next save, and disabled in
|
|
1329
|
-
the module selector there, while it remains optional for every other area. Canvas resolution applies
|
|
1330
|
-
the policy of the edited target area, not the outer Builder area.
|
|
1331
|
-
|
|
1332
|
-
Only after both gates pass may the host load the implementation. The host collects distinct required
|
|
1333
|
-
types first, loads them in parallel, and caches loader promises by provider/type/mode. Supported runtime
|
|
1334
|
-
modes are conceptually separate even when one route uses several of them:
|
|
1335
|
-
|
|
1336
|
-
- `runtime` for normal live rendering
|
|
1337
|
-
- `preview` for non-authoring previews
|
|
1338
|
-
- `authoring` for widget/layout editor renderers and inline tools
|
|
1339
|
-
- `workspace` for Canvas, Inspector, and other authoring infrastructure
|
|
1340
|
-
|
|
1341
|
-
`runtime` means normal mounted rendering in any area; it is not synonymous with Pub. A Builder Canvas
|
|
1342
|
-
widget rendered normally in Editor still uses `runtime` when Editor explicitly enables the Builder
|
|
1343
|
-
module. `preview` and `authoring` describe how that widget is represented inside an
|
|
1344
|
-
authoring host.
|
|
1345
|
-
|
|
1346
|
-
Every placeable widget and layout must declare an explicit policy for `runtime`, `preview`, and
|
|
1347
|
-
`authoring`:
|
|
1348
|
-
|
|
1349
|
-
- `runtime: custom` uses its normal implementation loader
|
|
1350
|
-
- `preview` is exactly one of `custom`, `runtimeReadOnly`, `visualSkeleton`, or `visualPlaceholder`
|
|
1351
|
-
- `authoring` is exactly one of `custom` or `usePreview`
|
|
1352
|
-
|
|
1353
|
-
Unsupported/missing behavior is not an implicit fallback. Headless non-placeable components may omit
|
|
1354
|
-
visual policies; placeable components may not. A generic visual placeholder or `authoring: usePreview`
|
|
1355
|
-
is valid only when declared by the definition.
|
|
1356
|
-
|
|
1357
|
-
Canvas, selection, hover, DnD, Wiring, Effects, Inspector launch, and common toolbar chrome belong to
|
|
1358
|
-
the shared Authoring/Builder scaffold. Widget/layout modules may contribute specialized editor bodies,
|
|
1359
|
-
inline authoring, editor tools, or declared overlay layers, but they must not ship another scaffold.
|
|
1360
|
-
Widget-specific editor tools request config patches through the Builder-owned authoring context; they
|
|
1361
|
-
never mount or communicate through the target Area controller. The Canvas applies those patches and
|
|
1362
|
-
owns history plus signal-route lifecycle. Dynamic subcontrols are described declaratively by their
|
|
1363
|
-
widget definition so endpoint resolution remains plugin-generic.
|
|
1364
|
-
The Canvas Runtime-emission boundary stays disabled even while an inline authoring body is active.
|
|
1365
|
-
Editable bodies persist each config change through `authoring.updateConfig()` and must not introduce a
|
|
1366
|
-
signal-to-draft bridge or a broadcast flush protocol. Structural insert, delete, and move operations
|
|
1367
|
-
remain central scaffold mutations rather than widget Runtime signals.
|
|
1368
|
-
Demand-driven controller endpoint discovery follows the same boundary: the loaded authoring widget
|
|
1369
|
-
plugin evaluates the concrete CMS instance against the current Canvas tree, while the Builder catalogs
|
|
1370
|
-
the result only for its active page/area ownership context. This discovery does not mount the target
|
|
1371
|
-
controller or enable its module.
|
|
1372
|
-
|
|
1373
|
-
Workspace widgets are a special visual policy, not an exception. For example, a Builder Shell Canvas
|
|
1374
|
-
widget uses its real interactive Canvas in `runtime`, a read-only region/layout skeleton in `preview`,
|
|
1375
|
-
and explicitly reuses that skeleton inside the shared scaffold in `authoring`. The skeleton respects
|
|
1376
|
-
the configured widget size and structure but must not mount controllers, emit signals, mutate drafts,
|
|
1377
|
-
start DnD, fetch workspace data, or recursively render another interactive Canvas.
|
|
1378
|
-
|
|
1379
|
-
#### Builder Canvas module sandbox
|
|
1380
|
-
|
|
1381
|
-
Builder Pages and Shells canvases are isolated module sandboxes. The outer Builder area resolves and
|
|
1382
|
-
mounts its own modules and controllers. Each Canvas independently resolves the exact module set of the
|
|
1383
|
-
currently edited target area:
|
|
1384
|
-
|
|
1385
|
-
- the `core` Module plus the target Area's locked base module
|
|
1386
|
-
- centralized modules locked for the target Area
|
|
1387
|
-
- optional module ids selected by the target Area's `runtimeModules`
|
|
1388
|
-
- only the widget, layout, controller, form/provider, and authoring implementations demanded by the
|
|
1389
|
-
target tree and current Canvas render mode
|
|
1390
|
-
|
|
1391
|
-
The Canvas must not inherit, union, or progressively accumulate the outer Builder area's active module
|
|
1392
|
-
registry. Switching the target area replaces the sandbox's active registry and unmounts its isolated
|
|
1393
|
-
runtime context. Loader promises and downloaded chunks may remain cached, but cached code is not active
|
|
1394
|
-
unless it belongs to the new target module set.
|
|
1395
|
-
|
|
1396
|
-
The Builder controller owns target-area selection and may trigger the server refresh that rebuilds the
|
|
1397
|
-
sandbox. It must not import modules or widen registries itself. Module resolution remains server-owned,
|
|
1398
|
-
catalog-driven, and scoped to the Canvas. Target-area controllers are never mounted in the authoring
|
|
1399
|
-
Canvas: target modules provide definitions, capabilities, and lazy authoring implementations, while
|
|
1400
|
-
live controller/data/signaling behavior starts only in live runtime.
|
|
1401
|
-
|
|
1402
|
-
An unavailable type, inactive owner module, missing renderer, failed loader, or failed node renderer is
|
|
1403
|
-
a visible node-local Canvas contract error. The affected widget/layout renders the shared
|
|
1404
|
-
`not renderable` diagnostic block and writes a structured diagnostic warning. `missing-module` does not
|
|
1405
|
-
raise an additional notification; other renderer failures may raise one deduplicated notification.
|
|
1406
|
-
The diagnostic block must not crash the complete Canvas. This diagnostic is not a substitute renderer:
|
|
1407
|
-
the sandbox must
|
|
1408
|
-
not borrow the corresponding implementation from the Builder registry and must not retain a module
|
|
1409
|
-
from the previously edited area. Invalid module manifests, duplicate ownership, and invalid area module
|
|
1410
|
-
selection remain hard ABI errors before node rendering begins.
|
|
1411
|
-
|
|
1412
|
-
Area eligibility is a server-enforced activation policy, separate from module ownership. Builder,
|
|
1413
|
-
Theme, Admin, and Editor are area-exclusive first-party modules: each may be selected only in its
|
|
1414
|
-
matching Area, and Builder is locked there. Cross-area domain modules such as Ticket, News, Asset,
|
|
1415
|
-
and future site modules remain optional per eligible Area unless an explicit site policy restricts
|
|
1416
|
-
them. This keeps internal workspace widgets out of Public while preserving per-Area domain composition.
|
|
1417
|
-
|
|
1418
|
-
`PhiCmsSiteBridge` exposes the build-time catalog of installed, statically analyzable provider loaders;
|
|
1419
|
-
it cannot contain request-resolved registries because area policy and tree demand are not known when the
|
|
1420
|
-
site bridge is created. Every filesystem Area host supplies an immutable server-safe catalog containing
|
|
1421
|
-
exactly the modules eligible for that route Area. Builder contains the target-Area union required by
|
|
1422
|
-
Canvas, but that union does not activate Admin, Editor, or other target modules in the outer Builder
|
|
1423
|
-
runtime. The catalog does not encode an Area's current selection. For every Area, the request resolves
|
|
1424
|
-
exactly the Area's locked base module and that Area's persisted optional
|
|
1425
|
-
`runtimeModules` after applying area eligibility.
|
|
1426
|
-
The request/runtime host resolves the selected providers and concrete
|
|
1427
|
-
implementations, and the renderer receives those completely resolved active registries. It must not
|
|
1428
|
-
import a global default/internal registry, silently widen the eligible provider set, or use a fallback
|
|
1429
|
-
renderer to hide a missing provider. A tree that references a type outside the activated providers
|
|
1430
|
-
remains visible through the shared node-local diagnostic instead of terminating the complete tree.
|
|
1431
|
-
|
|
1432
|
-
Lazy-loader boundaries must follow the framework execution graph:
|
|
1433
|
-
|
|
1434
|
-
- server module/widget/layout implementations use native, statically analyzable `import()` loader
|
|
1435
|
-
functions and are collected before being awaited in parallel
|
|
1436
|
-
- server module manifests contain no Client component reference. The Server host passes only active module
|
|
1437
|
-
ids plus serializable controller setting, runtime context, and preload data to the generic Client-owned
|
|
1438
|
-
module host
|
|
1439
|
-
- the `phis-cli`-generated external build projection injects one immutable Controller Client loader
|
|
1440
|
-
manifest per route Area. The generic
|
|
1441
|
-
live host resolves only active ids through that Area manifest and performs Client-side `React.lazy`
|
|
1442
|
-
imports. Every live Area manifest contains exactly its own locked base loader and the loaders eligible for that
|
|
1443
|
-
Area; it contains no other Area's base loader or Authoring edge. Inactive module implementation trees remain
|
|
1444
|
-
unreachable from the request
|
|
1445
|
-
- Canvas receives a separate immutable Authoring Client manifest. Only the Builder provider imports it,
|
|
1446
|
-
and its entries form the complete target-Area module union so the isolated sandbox can manifest Public,
|
|
1447
|
-
Admin, Editor, Theme, and Builder modules without widening any live Area graph
|
|
1448
|
-
- every eligible Module package exports paired immutable Server and Controller Client Area projections
|
|
1449
|
-
sharing one `moduleId`; `phis-cli` validates and composes them without patching Skeleton source. The
|
|
1450
|
-
Server projection contains the catalog entry; the
|
|
1451
|
-
Controller Client projection contains only its `Controller`, made with `next/dynamic`. They validate as a 1:1
|
|
1452
|
-
Area pair. Builder additionally declares the complete Authoring Client projection with one
|
|
1453
|
-
`loadAuthoring` edge per installed target-Area module. Missing, extra, or duplicate projections are hard
|
|
1454
|
-
build-time contract errors; no route may silently widen its graph
|
|
1455
|
-
- each live Area boundary also injects one immutable Data Provider Client manifest containing only provider
|
|
1456
|
-
loaders owned by modules eligible for that Area. Server renderers pass only demanded provider keys; the
|
|
1457
|
-
Client host resolves those keys through `React.lazy`, so inactive provider implementation chunks are not
|
|
1458
|
-
part of the initial route payload. Missing or duplicate provider loaders are hard contract errors
|
|
1459
|
-
- the Builder Data Provider Client manifest additionally contains the `loadAuthoring` edges for every
|
|
1460
|
-
provider whose `authoringMode` permits `read` or `edit`. Canvas passes only demanded keys;
|
|
1461
|
-
live-only provider implementations remain unavailable in authoring
|
|
1462
|
-
- third-party packages export their Server catalog entry, Controller Client Area contribution, and
|
|
1463
|
-
Authoring Client contribution, while `phis-cli` composes installed eligible Areas and the Builder
|
|
1464
|
-
sandbox union in immutable external build state. A package cannot enable itself for an Area, request a
|
|
1465
|
-
package name from persisted data,
|
|
1466
|
-
or mutate a global registry. Third-party modules build their authoring boundary through
|
|
1467
|
-
`@phis/ui/runtime/authoring-client`; no first-party module switch or parallel authoring registry
|
|
1468
|
-
participates in Canvas resolution
|
|
1469
|
-
- client preview/editor/tool implementations use top-level `next/dynamic` or `React.lazy` declarations
|
|
1470
|
-
inside Client Component boundaries, with explicit Suspense/loading presentation where needed
|
|
1471
|
-
- a Server Component must not dynamically import a Client Component under the assumption that this
|
|
1472
|
-
automatically creates a client split
|
|
1473
|
-
- loader promises are cached by module/type/mode, and lazy declarations must never be created during a
|
|
1474
|
-
component render
|
|
1475
|
-
- broad barrels and `optimizePackageImports` are not substitutes for the provider boundary; static
|
|
1476
|
-
arrays that eagerly import every implementation remain broad even when named imports are optimized
|
|
1477
|
-
|
|
1478
|
-
The intended resolution sequence is:
|
|
1479
|
-
|
|
1480
|
-
1. Resolve the installed module catalog and the area's optional `runtimeModules` policy.
|
|
1481
|
-
2. Activate the `core` Module, the Area's locked base module, and the selected optional module ids.
|
|
1482
|
-
3. Resolve shell/page structures and materialize the required controller-instance descriptors.
|
|
1483
|
-
4. Collect the distinct widget, layout, controller, and authoring types needed for the current runtime
|
|
1484
|
-
modes.
|
|
1485
|
-
5. Load the corresponding implementations in parallel.
|
|
1486
|
-
6. Mount controller instances through the generic runtime controller host and render through the
|
|
1487
|
-
resolved registries.
|
|
1488
|
-
|
|
1489
|
-
This contract keeps optional code modular without coupling cross-area domain modules to `/builder`,
|
|
1490
|
-
`/admin`, or another fixed route. Package-owned Area contributions and the generated build projection
|
|
1491
|
-
define build-time eligibility, persisted `runtimeModules` select within that eligible catalog, and actual
|
|
1492
|
-
implementation loading follows the active module set and tree demand. A Module that must become
|
|
1493
|
-
selectable in another Area publishes the matching Area contribution and requires a regenerated build
|
|
1494
|
-
projection; it never patches a Skeleton route. Request data must never widen the build graph implicitly.
|
|
1495
|
-
|
|
1496
|
-
### Form registry contract
|
|
1497
|
-
|
|
1498
|
-
Shared forms are a separate domain from widgets and layouts.
|
|
1499
|
-
|
|
1500
|
-
- `WidgetRegistry` owns chrome, flow, and interactive wrapper behavior.
|
|
1501
|
-
- `LayoutRegistry` owns slot and structure behavior.
|
|
1502
|
-
- `FormRegistry` owns versioned descriptors, submit semantics, and versioning.
|
|
1503
|
-
|
|
1504
|
-
Preset Forms are explicit `forms` entries on their owner Runtime Module's Server Area contribution.
|
|
1505
|
-
The active target-Area module set is the only preset catalog; there is no global registry, mutable
|
|
1506
|
-
registration, or import-side-effect discovery. Code presets are the package-published baseline and the
|
|
1507
|
-
DB-backed registry may store a Site-scoped Published override for the same active namespaced `formId`.
|
|
1508
|
-
Form work is split into three independent contracts:
|
|
1509
|
-
|
|
1510
|
-
- `submit`
|
|
1511
|
-
- where the form writes
|
|
1512
|
-
- selects a server-resolved active module-owned handler Provider
|
|
1513
|
-
- `read`
|
|
1514
|
-
- where the form loads preview, guard, or lookup data
|
|
1515
|
-
- uses the shared data-source contract
|
|
1516
|
-
- `mutation`
|
|
1517
|
-
- where state changes happen outside form submit
|
|
1518
|
-
- uses a separate write descriptor contract
|
|
1519
|
-
- does not use read cache settings because Next.js only caches GET reads
|
|
1520
|
-
- `translation`
|
|
1521
|
-
- where labels and free text are resolved
|
|
1522
|
-
- uses `tr` / `trBulk` plus label-set helpers
|
|
1523
|
-
|
|
1524
|
-
The resolver order is:
|
|
1525
|
-
|
|
1526
|
-
- try the site DB form first
|
|
1527
|
-
- fall back to the active module-owned package preset if no DB override exists
|
|
1528
|
-
- if both exist, the DB form wins as the site-specific override layer
|
|
1529
|
-
|
|
1530
|
-
Form plugins follow a server-wrapper/client-inner split:
|
|
1531
|
-
|
|
1532
|
-
- the server wrapper loads runtime data and collects translation keys
|
|
1533
|
-
- the wrapper uses `trBulk` with a plugin-defined `sourceLocale`
|
|
1534
|
-
- the client inner renders the actual form UI
|
|
1535
|
-
- forms with a token-driven bootstrap step, such as confirm flows, may expose an additional preview/bootstrap phase before the submit phase; that preview state still belongs to the form contract, not to the widget shell
|
|
1536
|
-
- the form plugin itself must expose a clear implementation contract for 3rd-party authors
|
|
1537
|
-
|
|
1538
|
-
Module-owned preset definition:
|
|
1539
|
-
|
|
1540
|
-
- `ownerModuleId`
|
|
1541
|
-
- `formId` in the `<npm-package>/forms/<form-key>` shape
|
|
1542
|
-
- `version`, `flags`, `title`, optional `description`, `category`, and `tags`
|
|
1543
|
-
- one atomic versioned `descriptor` whose `key` equals `formId`
|
|
1544
|
-
- `submitHandlerKey`
|
|
1545
|
-
- `confirmHandlerKey` optional
|
|
1546
|
-
- `previewHandlerKey` optional
|
|
1547
|
-
- `previewUpstreamPath` optional
|
|
1548
|
-
- `defaultConfig` optional
|
|
1549
|
-
- `variant` and runtime `config` optional
|
|
1550
|
-
- optional server `render` callback for domain orchestration around the same descriptor
|
|
1551
|
-
- optional server `loadLabels` callback for a namespaced label set
|
|
1552
|
-
|
|
1553
|
-
Definitions are created with `definePhiRuntimeModuleForm(...)` and contributed through
|
|
1554
|
-
`catalogEntry.forms`. The package namespace in `formId` must match the owner module package. Bare ids,
|
|
1555
|
-
numeric preset ids, and `pluginKey/typeKey` Form identity are not part of the v1 ABI. The complete
|
|
1556
|
-
third-party guide is
|
|
1557
|
-
[`components/forms/PRESET_FORMS_HOWTO.md`](./components/forms/PRESET_FORMS_HOWTO.md).
|
|
1558
|
-
|
|
1559
|
-
Resolver primitive:
|
|
1560
|
-
|
|
1561
|
-
- `resolvePhiFormDefinition({ presetDefinition, overrideDefinition })`
|
|
1562
|
-
- returns the effective definition, the resolved source, and a render target key
|
|
1563
|
-
- when both preset and override exist, the override wins
|
|
1564
|
-
- config objects are merged, not replaced wholesale, so site overrides can tweak preset forms without cloning them
|
|
1565
|
-
|
|
1566
|
-
Form controller split:
|
|
1567
|
-
|
|
1568
|
-
- Runtime forms, form authoring, and Builder inspector forms are separate controller domains.
|
|
1569
|
-
- Runtime form execution uses the generic multi-instance form controller:
|
|
1570
|
-
- `controller:@phis/ui/form:<instance-key>`
|
|
1571
|
-
- It owns runtime form values, field changes, validation state, touched state, dirty state, submitting state, submit, confirm, reset, clear, result, and error signaling.
|
|
1572
|
-
- It executes a resolved form definition through the submit/preview/guard descriptor contracts.
|
|
1573
|
-
- It may be reused by third-party forms when their lifecycle follows the standard runtime form lifecycle.
|
|
1574
|
-
- Generic Form primitives and orchestration belong to the `core` Module and are not selected through
|
|
1575
|
-
`runtimeModules`. Concrete form-controller instances are materialized only from forms used in the CMS tree.
|
|
1576
|
-
- A shell-owned form widget materializes an area-scoped form controller instance.
|
|
1577
|
-
- A page-owned form widget materializes a page-scoped form controller instance.
|
|
1578
|
-
- The form widget sends to the materialized controller address, but it must not mount the controller itself.
|
|
1579
|
-
- `form:default` may exist as a convenience instance, but it is not the fundamental model and must not replace per-form instances when independent state is required.
|
|
1580
|
-
- The runtime form controller address must not include a handler key.
|
|
1581
|
-
- Handler selection belongs to the resolved Form definition through `submitHandlerKey`,
|
|
1582
|
-
`confirmHandlerKey`, or `previewHandlerKey`. Transport, target, CSRF, and credential metadata belong
|
|
1583
|
-
to the selected immutable server-side handler Provider, never Form instance config.
|
|
1584
|
-
- Changing the handler must not change the stable signal address or break existing wiring.
|
|
1585
|
-
- Form authoring uses a separate Form Builder module with one form-builder controller:
|
|
1586
|
-
- `controller:@phis/ui/form-builder:default`
|
|
1587
|
-
- It owns editing form definitions, adding/removing/reordering fields, selecting registered field types, selecting handlers, configuring validation rules, previewing definitions, and saving form definition changes.
|
|
1588
|
-
- It operates on form definitions, not on public runtime form submissions.
|
|
1589
|
-
- The module is optional, client-only, Area-mounted, and deferred to P2. Until its canvas and request
|
|
1590
|
-
contract are implemented, its headless controller declares no save/publish capabilities.
|
|
1591
|
-
- Builder inspector forms belong to the Builder module and its single controller:
|
|
1592
|
-
- `controller:@phis/ui/builder:default`
|
|
1593
|
-
- It owns Layout, Widget, Region, and object setting forms, Inspector field changes, and
|
|
1594
|
-
signal-route table sessions.
|
|
1595
|
-
- Inspector section Widgets and services are internal Builder contributions, not a separately
|
|
1596
|
-
selectable module or a second controller lifecycle.
|
|
1597
|
-
- It must not reuse the public runtime form controller for CMS node configuration.
|
|
1598
|
-
- Media inspector and media toolbar flows remain Asset controller responsibilities, not form controller responsibilities.
|
|
1599
|
-
- Third-party form support is registry-driven:
|
|
1600
|
-
- third-party packages provide Form definitions through explicit module catalog entries and expose field,
|
|
1601
|
-
validation, and submit/preview/confirm handler descriptors through their module definition
|
|
1602
|
-
- the generic runtime form controller can execute those forms when they use the standard lifecycle
|
|
1603
|
-
- third-party packages add a custom module with its own controller only for a genuinely different lifecycle such as checkout, payment, document signing, a server-state wizard, or a complex configurator
|
|
1604
|
-
- Form provider metadata is part of the module manifest:
|
|
1605
|
-
- field type, validation, and handler keys are namespaced `<npm-package>/<provider-key>` values
|
|
1606
|
-
- every provider declares exactly one `ownerModuleId`; catalog construction rejects duplicates and owner mismatches
|
|
1607
|
-
- the active module resolver exposes only the active modules' provider descriptors
|
|
1608
|
-
- executable field and validation providers are explicitly composed registries; global mutable or import-side-effect provider registration is forbidden
|
|
1609
|
-
- The form picker and Builder UI must read available forms and handlers from registries, not from hardcoded first-party lists.
|
|
1610
|
-
|
|
1611
|
-
Site-side registry resolution:
|
|
1612
|
-
|
|
1613
|
-
- `fetchFormRegistry({ apiBaseUrl, internalToken, siteKey })`
|
|
1614
|
-
- `getResolvedFormDefinition({ ..., formId, presetDefinitions })`
|
|
1615
|
-
- `listResolvedFormDefinitions({ ..., presetDefinitions })`
|
|
1616
|
-
- callers pass the active Area's module-owned preset definitions explicitly
|
|
1617
|
-
- runtime resolution reads only Published DB overrides and falls back to an active package preset
|
|
1618
|
-
- site-side consumers should use the resolved registry helper instead of talking to the raw DB registry directly
|
|
1619
|
-
|
|
1620
|
-
Database form record shape:
|
|
1621
|
-
|
|
1622
|
-
- `site_id`
|
|
1623
|
-
- `owner_module_id`
|
|
1624
|
-
- `form_id`
|
|
1625
|
-
- `version`
|
|
1626
|
-
- `status` (`0` Working Draft, `1` Published, `2` archived Published)
|
|
1627
|
-
- `flags`
|
|
1628
|
-
- `descriptor`
|
|
1629
|
-
- `submit_handler_key`
|
|
1630
|
-
- `confirm_handler_key` optional
|
|
1631
|
-
- `default_config`
|
|
1632
|
-
- `config`
|
|
1633
|
-
|
|
1634
|
-
Form-specific rendering contract:
|
|
1635
|
-
|
|
1636
|
-
- The normative serializable descriptor shape, responsive 24-unit grid, logical RTL placement,
|
|
1637
|
-
label-set references, provider boundary, authoring controls, and signal ownership are defined in
|
|
1638
|
-
[`components/forms/README.md`](./components/forms/README.md#descriptor-and-provider-contract).
|
|
1639
|
-
- `PhiFormWidget` is the generic CMS/runtime host and delegates controlled presentation and validation to
|
|
1640
|
-
`PhiFormControl`.
|
|
1641
|
-
- It should receive `formId` plus optional visual `version` and `variant` selection. Submit target, method,
|
|
1642
|
-
CSRF, and credential policy are never Widget or frame overrides.
|
|
1643
|
-
- The widget should resolve the form through the registry and render the appropriate client/server split for that definition.
|
|
1644
|
-
- Module-owned package presets have no synthetic DB id and remain the code fallback.
|
|
1645
|
-
- Forms that need token preview or bootstrap data, such as confirm flows, should resolve that preview state through the Form Control contract instead of branching in the widget shell.
|
|
1646
|
-
- Every Form uses `PhiFormControl`. Optional code wrappers may orchestrate guard, bootstrap, success,
|
|
1647
|
-
error, and domain-specific flow around that descriptor, but cannot define another field tree. Form field
|
|
1648
|
-
providers compose only Phi Controls and never Widgets, Layouts, or direct Ant Design primitives.
|
|
1649
|
-
- Visible submit/reset/cancel actions are ordinary Phi Button Widgets outside the Form. They reach the
|
|
1650
|
-
concrete Form through the owning Controller's declared routes; the Form descriptor has no action row.
|
|
1651
|
-
- `formKind`, rendered fallbacks, and hybrid modes are not part of the v1 ABI.
|
|
1652
|
-
|
|
1653
|
-
Submit dispatch contract:
|
|
1654
|
-
|
|
1655
|
-
- `submitHandlerKey`
|
|
1656
|
-
- stable logical handler name such as `auth.login`, `account.email.change`, `forms.contact`, or `site.form.submit`
|
|
1657
|
-
- `previewHandlerKey`
|
|
1658
|
-
- stable logical preview/bootstrap handler name such as `auth.confirm.preview`
|
|
1659
|
-
- `category`
|
|
1660
|
-
- coarse dispatch scope such as `auth`, `account`, `forms`, or `site`
|
|
1661
|
-
- `route target`
|
|
1662
|
-
- the actual execution endpoint selected from the active module-owned handler Provider by the Site gateway
|
|
1663
|
-
- examples:
|
|
1664
|
-
- `phis-server:/api/auth/route.ts`
|
|
1665
|
-
- `phis-server:/api/account/route.ts`
|
|
1666
|
-
- `phis-server:/api/forms/route.ts`
|
|
1667
|
-
- `site:/api/site/forms/route.ts`
|
|
1668
|
-
|
|
1669
|
-
The Site gateway resolves the Published Form from the active target-Area module catalog, resolves its
|
|
1670
|
-
handler key to the immutable active module-owned handler Provider, and only then maps the Provider's
|
|
1671
|
-
category to the concrete target. A Form revision or Client request never chooses the target.
|
|
1672
|
-
|
|
1673
|
-
Submit dispatcher contract:
|
|
1674
|
-
|
|
1675
|
-
- the browser must never call `@phis/server` directly
|
|
1676
|
-
- the browser talks only to a site-local dispatcher or server action
|
|
1677
|
-
- the Browser sends only `formId`, the closed phase (`submit` or `confirm`), and validated values to a thin
|
|
1678
|
-
Site route such as `/api/site/forms`
|
|
1679
|
-
- the dispatcher resolves the Published Form and handler Provider on the Server and constructs all
|
|
1680
|
-
execution metadata from that immutable Provider
|
|
1681
|
-
- `phis-ui` may help resolve the descriptor, but it does not execute the submit itself
|
|
1682
|
-
- the site dispatcher may be implemented as:
|
|
1683
|
-
- a route handler
|
|
1684
|
-
- a server action
|
|
1685
|
-
- a small relay wrapper that forwards to a category-specific target
|
|
1686
|
-
- the handler Provider owns `handlerKey`, phase, category, transport, method, canonical `upstreamPath` or
|
|
1687
|
-
`endpointKey`, CSRF metadata, and the mandatory closed `credentialPolicy`
|
|
1688
|
-
- `credentialPolicy` is exactly `none`, `site-session`, or Core-only `auth-link`; a future mode requires
|
|
1689
|
-
operator-approved contract work
|
|
1690
|
-
- `none` is for anonymous Site-scoped handlers and forwards no Browser cookie, while preserving trusted
|
|
1691
|
-
Site/internal gateway identity and endpoint validation; `site-session` forwards only `phis_session`, and
|
|
1692
|
-
the endpoint still decides whether the session and a particular role are required
|
|
1693
|
-
- Client payload, Form config, Site override, Widget config, and signals cannot select execution metadata,
|
|
1694
|
-
name a cookie, or grant authorization
|
|
1695
|
-
- Translation payloads stay out of the data-source contract and the submit contract.
|
|
1696
|
-
- the dispatcher then chooses one of the category targets:
|
|
1697
|
-
- `phis-server:/api/auth/route.ts`
|
|
1698
|
-
- `phis-server:/api/account/route.ts`
|
|
1699
|
-
- `phis-server:/api/forms/route.ts`
|
|
1700
|
-
- `site:/api/site/forms/route.ts`
|
|
1701
|
-
- no single global submit route should own every form flow
|
|
1702
|
-
- Persisted forms should be site-scoped and plugin-scoped, with positive IDs and flags for stateful control.
|
|
1703
|
-
- Shared preset Forms select registered handler keys. Immutable handler Providers keep upstream targets,
|
|
1704
|
-
CSRF, and credential policy declarative without placing security metadata in editable Form config.
|
|
1705
|
-
|
|
1706
|
-
Recommended initial shared form IDs:
|
|
1707
|
-
|
|
1708
|
-
- `login`
|
|
1709
|
-
- `registration`
|
|
1710
|
-
- `contact`
|
|
1711
|
-
- `confirm`
|
|
1712
|
-
- `reset-password`
|
|
1713
|
-
|
|
1714
|
-
Planned later form IDs:
|
|
1715
|
-
|
|
1716
|
-
- `profile`
|
|
1717
|
-
- `email-change`
|
|
1718
|
-
- `password-change`
|
|
1719
|
-
- `address`
|
|
1720
|
-
|
|
1721
|
-
This contract keeps the form domain editor-friendly and plugin-friendly without turning widgets or layouts into a special-case form system.
|
|
1722
|
-
|
|
1723
|
-
### Shell and region rules
|
|
1724
|
-
|
|
1725
|
-
- Shared shells orchestrate regions and own placement for all stable shell slots.
|
|
1726
|
-
- Stable outer regions should belong to the area layout contract, not to each page by default.
|
|
1727
|
-
- Page-owned payload for `hero`, `header_bottom`, `sider_right`, `footer_top`, and `content` should resolve into explicit shell placeholders instead of creating a second inner shell topology inside the page stack.
|
|
1728
|
-
- Regions define stable named areas such as `brand`, `navigation`, and `actions`.
|
|
1729
|
-
- Page content flows from site `page.tsx` into the explicit shell-mounted `content` slot of the shared CMS shell.
|
|
1730
|
-
- Pages may contribute additional widgets into explicitly allowed slots of area-owned regions, but they should not own or replace those regions.
|
|
1731
|
-
- Initial route/region loading strategy should usually be handled above widgets and modals with `loading.tsx` and `Suspense` boundaries at shell/region/page level.
|
|
1732
|
-
- Widget and modal loading states should focus on user-triggered interaction such as submit, pending, success, and error states.
|
|
1733
|
-
|
|
1734
|
-
## Public package surface
|
|
1735
|
-
|
|
1736
|
-
The preferred public import style is grouped by namespace:
|
|
1737
|
-
|
|
1738
|
-
```ts
|
|
1739
|
-
import { PhiCmsShell, PhiRootLayout } from "@phis/ui/shells";
|
|
1740
|
-
import { PhiCmsRootLayout } from "@phis/ui/cms/root-layout";
|
|
1741
|
-
import { PhiCmsRootPage } from "@phis/ui/cms/root-page";
|
|
1742
|
-
import { PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG } from "@phis/ui/cms/plugins";
|
|
1743
|
-
import { PhiLink } from "@phis/ui/navigation";
|
|
1744
|
-
import { ContactForm } from "@phis/ui/forms";
|
|
1745
|
-
import { PhiBaseRole } from "@phis/ui/constants";
|
|
1746
|
-
import { hasPhiFlag, buildApiUrl } from "@phis/ui/helpers";
|
|
1747
|
-
import { phiRuntime, tr } from "@phis/ui/server-helpers";
|
|
1748
|
-
import { buildPhiAuthProxyHandlers } from "@phis/ui/gateway";
|
|
1749
|
-
```
|
|
1750
|
-
|
|
1751
|
-
For CMS-driven sites, use the narrow `@phis/ui/cms/*` entry matching the App Router boundary.
|
|
1752
|
-
Use the aggregate `@phis/ui/cms` entry only when a module intentionally needs the complete CMS
|
|
1753
|
-
API. Internal package source must always import leaf modules directly rather than importing a package
|
|
1754
|
-
barrel.
|
|
1755
|
-
|
|
1756
|
-
Current public namespaces:
|
|
1757
|
-
|
|
1758
|
-
- `@phis/ui/widgets`
|
|
1759
|
-
- `@phis/ui/forms`
|
|
1760
|
-
- `@phis/ui/shells`
|
|
1761
|
-
- `@phis/ui/layouts`
|
|
1762
|
-
- `@phis/ui/navigation`
|
|
1763
|
-
- `@phis/ui/theme`
|
|
1764
|
-
- `@phis/ui/constants`
|
|
1765
|
-
- `@phis/ui/helpers`
|
|
1766
|
-
- `@phis/ui/server-helpers`
|
|
1767
|
-
- `@phis/ui/net`
|
|
1768
|
-
- `@phis/ui/gateway`
|
|
1769
|
-
- `@phis/ui/modals`
|
|
1770
|
-
|
|
1771
|
-
The root package export is not the preferred integration surface.
|
|
1772
|
-
|
|
1773
|
-
For CMS-driven rendering specifically:
|
|
1774
|
-
|
|
1775
|
-
- prefer plugin registries and `PhiCmsSiteBridge`
|
|
1776
|
-
- do not treat raw `Phi*Widget` or `Phi*Layout` components as the stable CMS API
|
|
1777
|
-
- internal shell/region helpers may exist outside the plugin system, but they are implementation details and must use non-`Phi` internal names
|
|
1778
|
-
|
|
1779
|
-
## Translation contract
|
|
1780
|
-
|
|
1781
|
-
Use the shared public server-only translation helpers directly:
|
|
1782
|
-
|
|
1783
|
-
- `tr(msg, params?, ctx?)`
|
|
1784
|
-
- `tr(msg, params?, ctx?, format?)`
|
|
1785
|
-
- `trBulk(msgs, ctx?, format?)`
|
|
1786
|
-
- `trForLocale(locale, msg, params?, ctx?, format?)`
|
|
1787
|
-
- `trGlobal(msg, params?, ctx?, format?)`
|
|
1788
|
-
- `trGlobalBulk(msgs, ctx?, format?)`
|
|
1789
|
-
- `trGlobalForLocale(locale, msg, params?, ctx?, format?)`
|
|
1790
|
-
- `trBulkForLocale(locale, msgs, ctx?, format?)`
|
|
1791
|
-
- `trGlobalBulkForLocale(locale, msgs, ctx?, format?)`
|
|
1792
|
-
|
|
1793
|
-
Use `phiRuntime()` only when you need runtime metadata itself, for example:
|
|
1794
|
-
|
|
1795
|
-
- `const rt = phiRuntime()`
|
|
1796
|
-
- `rt.siteKey`
|
|
1797
|
-
- `rt.locale`
|
|
1798
|
-
- `rt.apiBaseUrl`
|
|
1799
|
-
- `rt.internalToken`
|
|
1800
|
-
- `await rt.fetchSiteLocaleConfig()`
|
|
1801
|
-
|
|
1802
|
-
Rules:
|
|
1803
|
-
|
|
1804
|
-
- free translation helpers read from the request-scoped runtime set by shared CMS root rendering
|
|
1805
|
-
- `phiRuntime()` without arguments reads that same request-scoped runtime
|
|
1806
|
-
- `ctx` is empty by default for normal free text.
|
|
1807
|
-
- Set `ctx` only when semantic conflicts require it.
|
|
1808
|
-
- `format` defaults to `text`.
|
|
1809
|
-
- Use `format = "html"` only when the source string is intentional translatable HTML markup.
|
|
1810
|
-
- Site-scoped `tr`/`trBulk` calls do not carry Site source-language policy through widget runtime. `@phis/server` derives the immutable Site `sourceLocale` from the Site context.
|
|
1811
|
-
- Global Phi Core/package/preset source text is `en` and never inherits a Site locale. The Site `defaultLocale` must never be substituted for it.
|
|
1812
|
-
- `defaultLocale` is only the final request-locale fallback and is not part of the general widget runtime contract. Locale settings obtain it from their dedicated Admin endpoint.
|
|
1813
|
-
- Dynamic values must not be part of the string sent to `tr`, `trGlobal`, `trBulk`, or label-set translation. This includes first names, last names, usernames, email addresses, company names, customer numbers, site names, URLs, and similar profile/business data.
|
|
1814
|
-
- If a translated sentence needs dynamic values, the source text must use positional placeholders and apply the values after translation. The canonical placeholder format is `%1`, `%2`, ...; for example `Login history for %1`.
|
|
1815
|
-
- Label sets are static UI copy only. They may expose placeholder templates such as `Edit user %1`, but must never be built from resolved user/profile/company/email data.
|
|
1816
|
-
- Client components must format already-translated placeholder templates locally instead of concatenating translated labels with dynamic values.
|
|
1817
|
-
- Shared widgets and layouts should load their own dedicated label-set loaders from `components/widgets/label-sets/*` or `components/layouts/label-sets/*`.
|
|
1818
|
-
- Shared UI label sets should use an internal shared UI translation context by default.
|
|
1819
|
-
- Use `labels` for Phi-owned UI/control copy and `defaultLabels` for localized default content that is rendered only when CMS/config content is absent.
|
|
1820
|
-
- Do not pass dummy `labels={{}}`; copy-free renderable blocks should use the explicit `PhiNoLabels` contract.
|
|
1821
|
-
- Explicit CMS/config text such as `config.label`, `config.title`, or `config.tooltip` wins over `defaultLabels` and common action labels.
|
|
1822
|
-
- Ant Design locale remains responsible for AntD-internal copy. Do not put Ant Design locale strings or Dayjs/date formatting into Phi label sets.
|
|
1823
|
-
- Ant Design locale and the shared Dayjs locale bridge already cover pagination, empty state, picker text, validation templates, and date/time UI formatting.
|
|
1824
|
-
- Phi semantic commands such as save, publish, review, restore, reset, reload, and upload are not Ant Design locale strings; they belong to the shared Common Controls label/icon contract.
|
|
1825
|
-
- Only use a different `ctx` when the same visible text must intentionally translate differently in another semantic context.
|
|
1826
|
-
- Widget/layout label-set definitions should use semantic keys mapped to default texts; do not use free-text lookups as the working contract.
|
|
1827
|
-
- Batch translation transport may be positional internally, but public widget/layout label access should stay semantic and named.
|
|
1828
|
-
- Free-text page/site copy should usually prefer `trBulk(...)` over many single `tr(...)` calls.
|
|
1829
|
-
- Translation remains separate from the shared data-source contract and separate from submit dispatch.
|
|
1830
|
-
- Public translation helpers live under `server-helpers/*`, not under the internal `gateway/*` namespace.
|
|
1831
|
-
- Repo-local runtime config loading lives under `helpers/site-runtime`; do not re-export it through the public `helpers` barrel because it is server-only and depends on `next/headers`.
|
|
1832
|
-
|
|
1833
|
-
## Runtime and server boundaries
|
|
1834
|
-
|
|
1835
|
-
- `react`, `react-dom`, `next`, `antd`, and `@ant-design/icons` stay in `peerDependencies`.
|
|
1836
|
-
- Consuming sites must use `transpilePackages: ["@phis/ui"]`.
|
|
1837
|
-
- Ant Design SSR/style injection belongs to the consuming site's root layout through `@ant-design/nextjs-registry`, `ConfigProvider`, and `App`.
|
|
1838
|
-
- Backend-owned state such as session persistence, auth storage, CSRF state, and form-guard verification stays in `@phis/server`.
|
|
1839
|
-
- Internal Phi-server adapter functions in `gateway/*` are not public package API.
|
|
1840
|
-
- Public server-only helpers must use dedicated namespaces such as `server-helpers/*`.
|
|
1841
|
-
- `gateway/site-config.ts` is the typed server-side fetch/read layer for site config JSON from `@phis/server`; it is not the site-config source of truth and not a widget-specific fallback path for client code.
|
|
1842
|
-
- A normalized shared widget runtime should distinguish at least:
|
|
1843
|
-
- `site`
|
|
1844
|
-
- `locale`
|
|
1845
|
-
- `area`
|
|
1846
|
-
- `viewer`
|
|
1847
|
-
- `area` is render context, not authorization.
|
|
1848
|
-
- `viewer.roleClaims` carries one compact flag matrix per provider. Core and third-party role bits never
|
|
1849
|
-
share an unqualified numeric namespace.
|
|
1850
|
-
- `viewer.access` and role claims are runtime/session state. Server resolution and APIs remain the
|
|
1851
|
-
authorization authority; Client evaluation is presentation only.
|
|
1852
|
-
|
|
1853
|
-
## Locale Capability Contract
|
|
1854
|
-
|
|
1855
|
-
- Locale support is resolved centrally by `@phis/server` and consumed by `phis-ui`.
|
|
1856
|
-
- `@phis/server` owns the maximum locale capability superset and each site's validated subset.
|
|
1857
|
-
- The server capability superset must cover at least every target language supported by the configured DeepL target-language snapshot.
|
|
1858
|
-
- Site locales should use BCP-47-style identifiers where applicable, for example `de-DE`, `de-CH`, `en-US`, `en-GB`, `ja-JP`, `zh-Hans`, `zh-Hant`, `pt-BR`, and `pt-PT`.
|
|
1859
|
-
- Shared UI must not validate platform locale support and must not assume that site locales map 1:1 to Ant Design or DeepL identifiers.
|
|
1860
|
-
- A resolved runtime locale must provide:
|
|
1861
|
-
- the effective site locale
|
|
1862
|
-
- language, script, and region when available
|
|
1863
|
-
- text direction
|
|
1864
|
-
- Intl locale
|
|
1865
|
-
- Ant Design locale key
|
|
1866
|
-
- DeepL target language
|
|
1867
|
-
- Phi label fallback chain
|
|
1868
|
-
- Examples:
|
|
1869
|
-
- `de-CH -> antd de_DE, deepl DE, fallbacks [de-CH, de, en]`
|
|
1870
|
-
- `en-GB -> antd en_GB, deepl EN-GB, fallbacks [en-GB, en]`
|
|
1871
|
-
- `zh-Hans -> antd zh_CN, deepl ZH-HANS, fallbacks [zh-Hans, zh, en]`
|
|
1872
|
-
- `zh-Hant -> antd zh_TW, deepl ZH-HANT, fallbacks [zh-Hant, zh, en]`
|
|
1873
|
-
- Ant Design localization must be applied once at the root `ConfigProvider` through the resolved Ant Design locale object.
|
|
1874
|
-
- Ant Design locale modules should be loaded through an explicit whitelist of dynamic import loader functions, not through a free path expression such as `import("antd/locale/" + locale)`.
|
|
1875
|
-
- Phi widget and preset labels remain owned by Phi label sets. Ant Design locale and the shared Dayjs locale bridge cover their own UI strings and date/time formatting, including pagination, empty state, modal buttons, picker text, validation templates, and date controls.
|
|
1876
|
-
- Do not reimplement DeepL target mapping, Ant Design locale mapping, text direction, or fallback chains inside shared UI, widgets, presets, or site apps.
|
|
1877
|
-
- `x-locale` carries only an explicit locale from a locale-prefixed public route. A Proxy must never
|
|
1878
|
-
promote a cookie, browser preference, profile value, or already-resolved locale into `x-locale`.
|
|
1879
|
-
- Root, CMS, metadata, translation, and redirect consumers use the same request-scoped
|
|
1880
|
-
`GET /api/v1/site/locale` result rather than applying their own locale priority.
|
|
1881
|
-
- Site configuration fetches can stay cacheable by site key. Resolved runtime locale fetches must remain request-scoped because they can depend on user session, cookies, explicit locale, and browser `Accept-Language`.
|
|
1882
|
-
|
|
1883
|
-
## Theme and design-system rules
|
|
1884
|
-
|
|
1885
|
-
- Shared layout/math primitives stay brand-neutral.
|
|
1886
|
-
- The base `phi` spacing scale is global across Phi sites.
|
|
1887
|
-
- Site themes override from that base; they should not replace it with unrelated spacing systems.
|
|
1888
|
-
- A Widget and a Layout are shells around Ant Design. Inside one, Ant Design is free: a Control wraps an Ant Design component, and a Widget that offers several Controls may arrange them with `Flex`, `Space`, `Row` or `Col` like any other internal detail.
|
|
1889
|
-
- Composition of several Widgets belongs to the Layouts and their slots, and to nothing else. Neither an Ant Design layout primitive nor hand-written CSS may take that job, because Ant Design has to stay replaceable and cannot be if the placement of Widgets depends on it. The boundary is not Ant Design against CSS -- it is one shell against more than one Widget.
|
|
1890
|
-
- A Widget must not contain another Widget. A Widget that needs a second one beside it is a slot in a Layout, not an import.
|
|
1891
|
-
- Prefer Ant Design theme/component token configuration before CSS overrides.
|
|
1892
|
-
- Prefer Ant Design token colors, typography tokens, spacing tokens, and component variants before introducing custom visual values in shared code.
|
|
1893
|
-
- Special colors or styling settings should be treated as opt-in work and added only after an explicit operator request.
|
|
1894
|
-
- Shared theme resolution uses three layers:
|
|
1895
|
-
- shared root CSS baseline
|
|
1896
|
-
- shared default Ant Design theme derived from the `phi` scale
|
|
1897
|
-
- site-specific overrides from `site.theme`
|
|
1898
|
-
- Root layout should compose providers only; visual defaults must come through shared theme helpers and remain overridable by site theme data.
|
|
1899
|
-
- Shared root typography exposes stable theme slots:
|
|
1900
|
-
- `body`
|
|
1901
|
-
- `mono`
|
|
1902
|
-
- `serif`
|
|
1903
|
-
- `accent`
|
|
1904
|
-
- `display`
|
|
1905
|
-
- Shared root typography also exposes `--phi-font-family-system` for widgets that should explicitly use the browser/OS system stack without loading an extra brand font.
|
|
1906
|
-
- Shared typography sizes use Ant Design-owned variables such as `--ant-font-size-sm`, `--ant-font-size`, `--ant-font-size-lg`, and `--ant-font-size-xl`; no parallel `--phi-font-size-*` contract exists.
|
|
1907
|
-
- Shell Regions inherit the Ant Design base typography unless explicitly configured. Editorial Widgets default to `fontSizeLG`; an explicit `inherit` remains true CSS/component inheritance.
|
|
1908
|
-
- Reusable widget typography pickers should target the shared font contracts:
|
|
1909
|
-
- `fontFamily = inherit | system | body | mono | serif | accent | display`
|
|
1910
|
-
- `fontSize = inherit | xs | sm | base | lg | xl`
|
|
1911
|
-
- The current `next/font` baseline is intentionally small:
|
|
1912
|
-
- `body = Fira Sans`
|
|
1913
|
-
- `mono = Fira Mono`
|
|
1914
|
-
- `serif = Lora`
|
|
1915
|
-
- `accent` and `display` remain open site-theme slots for now:
|
|
1916
|
-
- `accent` falls back to `body`
|
|
1917
|
-
- `display` falls back to `serif`
|
|
1918
|
-
- Widgets and site themes should reference the shared `--phi-font-family-*` variables instead of hardcoding root font-family strings.
|
|
1919
|
-
|
|
1920
|
-
## Current internal structure
|
|
1921
|
-
|
|
1922
|
-
```text
|
|
1923
|
-
phis-ui/
|
|
1924
|
-
AGENTS.md
|
|
1925
|
-
README.md
|
|
1926
|
-
package.json
|
|
1927
|
-
index.js
|
|
1928
|
-
index.d.ts
|
|
1929
|
-
widgets.ts
|
|
1930
|
-
forms.ts
|
|
1931
|
-
regions.ts
|
|
1932
|
-
shells.ts
|
|
1933
|
-
layouts.ts
|
|
1934
|
-
navigation.ts
|
|
1935
|
-
theme.ts
|
|
1936
|
-
constants.ts
|
|
1937
|
-
helpers.ts
|
|
1938
|
-
server-helpers.ts
|
|
1939
|
-
net.ts
|
|
1940
|
-
|
|
1941
|
-
components/
|
|
1942
|
-
forms/
|
|
1943
|
-
navigation/
|
|
1944
|
-
regions/
|
|
1945
|
-
layouts/
|
|
1946
|
-
clients/
|
|
1947
|
-
shell/
|
|
1948
|
-
internal/
|
|
1949
|
-
widgets/
|
|
1950
|
-
clients/
|
|
1951
|
-
|
|
1952
|
-
constants/
|
|
1953
|
-
helpers/
|
|
1954
|
-
gateway/
|
|
1955
|
-
server-helpers/
|
|
1956
|
-
net/
|
|
1957
|
-
```
|
|
1958
|
-
|
|
1959
|
-
## Out of scope
|
|
1960
|
-
|
|
1961
|
-
- site-specific logos and brand identity
|
|
1962
|
-
- site-specific content and page copy ownership
|
|
1963
|
-
- backend-owned auth/session/guard verification logic
|
|
1964
|
-
- App Router route registration inside the shared package
|
|
1965
|
-
- ad-hoc per-site replacement of the shared base spacing system
|
|
1966
|
-
|
|
1967
|
-
## Recommended verification flow
|
|
1968
|
-
|
|
1969
|
-
Use the quiet verification runner:
|
|
1970
|
-
|
|
1971
|
-
- `pnpm verify` selects the smallest relevant check set from the current Git changes.
|
|
1972
|
-
- `pnpm verify docs` checks whitespace only.
|
|
1973
|
-
- `pnpm verify code` runs TypeScript and ESLint.
|
|
1974
|
-
- `pnpm verify runtime` adds Runtime module contract validation.
|
|
1975
|
-
- `pnpm verify antd` adds Ant Design doctor.
|
|
1976
|
-
- `pnpm verify package` validates the compiled distribution.
|
|
1977
|
-
- `pnpm verify all` is reserved for changes that cross all of those boundaries.
|
|
1978
|
-
|
|
1979
|
-
Successful underlying tools remain silent. If a check fails, the runner prints the failed command and its captured
|
|
1980
|
-
output. Do not use a broader profile than the affected contract requires. Run a full build only when packaging,
|
|
1981
|
-
bundling, SSR output, or production behavior must be verified explicitly.
|
|
1982
|
-
|
|
1983
|
-
### Distribution package
|
|
1984
|
-
|
|
1985
|
-
Local workspace consumers continue to use the typed source exports together with
|
|
1986
|
-
`transpilePackages`, so shared UI edits do not require a manual rebuild. The reproducible
|
|
1987
|
-
distribution artifact is separate:
|
|
1988
|
-
|
|
1989
|
-
- `pnpm build` emits unbundled ESM, declarations, CSS, and a validated package manifest into `dist/`
|
|
1990
|
-
- the generated manifest preserves every explicit public export key, exposes only ESM runtime targets,
|
|
1991
|
-
and keeps CSS in the package side-effect allowlist
|
|
1992
|
-
- `pnpm package:pack` builds and packs the `dist/` package instead of publishing the workspace source tree
|
|
1993
|
-
|
|
1994
|
-
The distribution build must preserve Client and Server directives, lazy imports, and Area-specific
|
|
1995
|
-
runtime manifests. It must not bundle React, Next.js, Ant Design, or the package's other runtime
|
|
1996
|
-
dependencies into one library file.
|
|
1997
|
-
|
|
1998
|
-
### Production bundler policy
|
|
1999
|
-
|
|
2000
|
-
Use the default Turbopack pipeline for both development and production builds of
|
|
2001
|
-
consuming Next.js sites:
|
|
2002
|
-
|
|
2003
|
-
- development: `next dev` (Turbopack)
|
|
2004
|
-
- production: `next build` (Turbopack)
|
|
2005
|
-
|
|
2006
|
-
The temporary Webpack production override was removed after a Next.js 16.2.11
|
|
2007
|
-
production browser check confirmed that inactive Builder implementations are absent
|
|
2008
|
-
from the Public Turbopack payload. Continue to verify the downloaded resources and the
|
|
2009
|
-
interactive route in a real browser rather than comparing build duration or `.next`
|
|
2010
|
-
size. Use Next's integrated `experimental-analyze` report for module/import-chain
|
|
2011
|
-
attribution and the reusable `browser-test` Public payload script for transferred bytes.
|
|
3
|
+
`@phis/ui` is the shared UI, CMS renderer, and Runtime Module host for Phi Sites: Next.js App Router
|
|
4
|
+
applications built on Ant Design and served by a `phis` server. It renders the Areas, Pages, Regions,
|
|
5
|
+
Layouts, Widgets, Overlays, and Forms a Site stores in `phis`, hosts the Runtime Modules installed into
|
|
6
|
+
the Site, and provides the Builder that edits them.
|
|
7
|
+
|
|
8
|
+
The package is pre-v1. Contracts change without compatibility layers; see [Stability](#stability).
|
|
9
|
+
|
|
10
|
+
## What it owns and does not own
|
|
11
|
+
|
|
12
|
+
`@phis/ui` owns:
|
|
13
|
+
|
|
14
|
+
- CMS resolution and rendering: Areas, shells, Regions, Layouts, Widgets, Overlays, and Page metadata;
|
|
15
|
+
- the Runtime Module host: catalogs, activation, lazy loading, and per-Area Client manifests;
|
|
16
|
+
- the first-party Modules (Core, the six Area base Modules, Auth, Assets, Theme, Builder tooling, and
|
|
17
|
+
others -- [MODULES.md](./MODULES.md#first-party-modules));
|
|
18
|
+
- the signal bus and Controllers, Forms and their gateway relay, Tables, Trees, and Collections;
|
|
19
|
+
- the Phi Controls around Ant Design, Theme resolution, and translation helpers;
|
|
20
|
+
- the `@phis/ui/next/*` factories a Site's route files delegate to.
|
|
21
|
+
|
|
22
|
+
It does not own:
|
|
23
|
+
|
|
24
|
+
- App Router route registration: route files live in the Site;
|
|
25
|
+
- Site branding, content, and copy: those are stored in `phis`;
|
|
26
|
+
- backend state: sessions, authentication, CSRF and Form guards, storage, and authorization belong to
|
|
27
|
+
`@phis/server`;
|
|
28
|
+
- server extensions: those are `phis` Add-ons.
|
|
29
|
+
|
|
30
|
+
## Requirements
|
|
31
|
+
|
|
32
|
+
- A Next.js 16 App Router Site. Start from `phis init` (the `phis-site-skeleton`).
|
|
33
|
+
- A running `@phis/server` (`phis`) that serves the Site.
|
|
34
|
+
- Peer dependencies:
|
|
35
|
+
|
|
36
|
+
| Package | Range |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `next` | `^16.2.11` |
|
|
39
|
+
| `react`, `react-dom` | `^19.2.8` |
|
|
40
|
+
| `antd` | `^6.5.1` |
|
|
41
|
+
| `@ant-design/icons` | `^6.3.2` |
|
|
42
|
+
| `@ant-design/nextjs-registry` | `^1.3.0` |
|
|
43
|
+
|
|
44
|
+
## For Site operators
|
|
45
|
+
|
|
46
|
+
- Create a Site with `phis init <site key>`. The generated Site is the Skeleton: route files, deployment
|
|
47
|
+
config, and a generated Module projection.
|
|
48
|
+
- The Site's `next.config` sets `transpilePackages: ["@phis/ui"]`.
|
|
49
|
+
- Route files are thin wrappers over `@phis/ui/next/*` factories (`createPhiNextStaticAreaBoundary`,
|
|
50
|
+
`createPhiNextStaticAreaLayout`, and the Area bridges in `@phis/ui/next/areas/<area>`). They hold no CMS,
|
|
51
|
+
locale, or access logic. Behavior fixes arrive by updating the package, not by editing the Site.
|
|
52
|
+
- Install Module packages with `phis module add --site <site key> --package <name>`, rebuild, and enable
|
|
53
|
+
the Module per Area in the Builder.
|
|
54
|
+
- The Site boundary, the route graph, fonts, and metadata are [NEXT_INTEGRATION.md](./NEXT_INTEGRATION.md).
|
|
55
|
+
|
|
56
|
+
## For Module authors
|
|
57
|
+
|
|
58
|
+
- Start with [THIRD_PARTY_MODULES.md](./THIRD_PARTY_MODULES.md): package layout, fixed exports, building,
|
|
59
|
+
and installing.
|
|
60
|
+
- The Module contract is [MODULES.md](./MODULES.md); signals are [SIGNALS.md](./SIGNALS.md).
|
|
61
|
+
- Read [STATIC_RENDERING.md](./STATIC_RENDERING.md) before building anything for the Public Area: Public
|
|
62
|
+
pages are rendered once for every anonymous visitor.
|
|
63
|
+
|
|
64
|
+
## Entry points
|
|
65
|
+
|
|
66
|
+
The root export (`@phis/ui`) is not an integration surface; import from the grouped subpaths below
|
|
67
|
+
(`package.json#exports`).
|
|
68
|
+
|
|
69
|
+
| Group | Entry points |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| Next.js Site | `next/area-route`, `next/areas/<area>`, `next/areas/<area>-client`, `next/root-route`, `next/site-bridge`, `next/site-proxy`, `next/proxy-runtime`, `next/route-handlers`, `next/seo-routes`, `next/cache-handler`, `next/runtime-module-client-boundary` |
|
|
72
|
+
| CMS rendering | `cms`, `cms/root-layout`, `cms/root-page`, `cms/root-slot-page`, `cms/error-page`, `cms/request`, `cms/plugins`, `cms/plugins/<area>` |
|
|
73
|
+
| Module packages | `module`, `module/client`, `module/authoring-client`, `module/projection`, `module/projection/client`, `module/projection/authoring-client`, `module/site-modules`, `module/site-modules-client` |
|
|
74
|
+
| Runtime Clients | `runtime`, `runtime/controller-client`, `runtime/render-client`, `runtime/signal-client`, `runtime/data-provider-client`, `runtime/authoring-client`, `runtime/authoring-manifest-client`, `runtime/calendar-adapter-client`, `runtime/client-manifests/<area>` |
|
|
75
|
+
| UI | `widgets`, `widget-config`, `controls`, `controls/config`, `controls/date-time`, `layouts`, `shells`, `root`, `navigation`, `forms`, `media`, `references`, `state`, `theme` |
|
|
76
|
+
| Builder | `builder`, `builder-api-route` |
|
|
77
|
+
| Contracts and helpers | `types`, `constants`, `helpers`, `helpers/site-runtime`, `server-helpers`, `net` |
|
|
78
|
+
| Plugin helpers | `plugins/factories/widget-builder-plugin`, `plugins/registries/runtime-controller-core`, `plugins/registries/runtime-controllers` |
|
|
79
|
+
|
|
80
|
+
`<area>` is `public`, `app`, `admin`, `builder`, `editor`, or `accounting` (`cms/plugins/<area>` exists
|
|
81
|
+
for all but `builder`). Import only the Area entry points a route needs; each Area is a separate module
|
|
82
|
+
graph.
|
|
83
|
+
|
|
84
|
+
## Contract documents
|
|
85
|
+
|
|
86
|
+
| Topic | Document |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| Areas, CMS tree, renderable blocks, node identity | [CMS.md](./CMS.md) |
|
|
89
|
+
| Runtime Modules | [MODULES.md](./MODULES.md) |
|
|
90
|
+
| Building a Module package | [THIRD_PARTY_MODULES.md](./THIRD_PARTY_MODULES.md) |
|
|
91
|
+
| Signals and the Core Runtime Controller | [SIGNALS.md](./SIGNALS.md) |
|
|
92
|
+
| Next.js Site integration | [NEXT_INTEGRATION.md](./NEXT_INTEGRATION.md) |
|
|
93
|
+
| Static rendering of Public pages | [STATIC_RENDERING.md](./STATIC_RENDERING.md) |
|
|
94
|
+
| Shell | [SHELL.md](./SHELL.md) |
|
|
95
|
+
| Layouts and Regions | [LAYOUTING.md](./LAYOUTING.md) |
|
|
96
|
+
| Theme | [THEME.md](./THEME.md) |
|
|
97
|
+
| Widgets and Controls | [components/widgets/README.md](./components/widgets/README.md) |
|
|
98
|
+
| Forms | [FORMS.md](./FORMS.md) |
|
|
99
|
+
| Tables, Trees, Collections | [TABLES.md](./TABLES.md), [TREES.md](./TREES.md), [COLLECTIONS.md](./COLLECTIONS.md) |
|
|
100
|
+
| Overlays | [OVERLAYS.md](./OVERLAYS.md) |
|
|
101
|
+
| Conversation surfaces | [THREADS.md](./THREADS.md) |
|
|
102
|
+
| Builder | [BUILDER.md](./BUILDER.md) |
|
|
103
|
+
| Settings | [SETTINGS.md](./SETTINGS.md) |
|
|
104
|
+
| Access and visibility | [ACCESS.md](./ACCESS.md) |
|
|
105
|
+
| Authentication | [AUTHENTICATION.md](./AUTHENTICATION.md) |
|
|
106
|
+
| References and Page paths | [REFERENCES.md](./REFERENCES.md) |
|
|
107
|
+
| Translations | [TRANSLATIONS.md](./TRANSLATIONS.md) |
|
|
108
|
+
| Gateway caches | [gateway/CACHES.md](./gateway/CACHES.md) |
|
|
109
|
+
| Designs (not contracts) | [design/](./design/README.md) |
|
|
110
|
+
| Open work | [TODOS.md](./TODOS.md) |
|
|
111
|
+
| Rules for contributors and agents | [AGENTS.md](./AGENTS.md) |
|
|
112
|
+
|
|
113
|
+
## Stability
|
|
114
|
+
|
|
115
|
+
`@phis/ui` is pre-v1 (`0.x`). Any release may change a contract, an export, or a stored shape without a
|
|
116
|
+
compatibility layer or migration path; callers and stored data are updated together with the package.
|
|
117
|
+
Pin an exact version and upgrade `@phis/ui`, `phis`, and installed Module packages together.
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
Apache-2.0. See [LICENSE](./LICENSE) and [NOTICE](./NOTICE).
|