@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
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/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# xfooter - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xheader](./xheader.md), [xtheme](./xtheme.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-footer>` is a customizable footer component with logo, sticky option, and
|
|
8
|
+
state integration. It is useful for branding and navigation at the end of a
|
|
9
|
+
page.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Optional logo (`src` attribute)
|
|
16
|
+
- Sticky behavior (stays at the bottom)
|
|
17
|
+
- State integration through xstate
|
|
18
|
+
- Theming through CSS custom properties
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<x-footer src="logo.svg" logo-size="48" sticky></x-footer>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Attributes
|
|
31
|
+
|
|
32
|
+
| Attribute | Type | Description |
|
|
33
|
+
|-----------|------|-------------|
|
|
34
|
+
| `src` | String | logo URL |
|
|
35
|
+
| `logo-size` | String | logo size, for example 48, 64px |
|
|
36
|
+
| `sticky` | Boolean | footer stays at the bottom |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Events
|
|
41
|
+
|
|
42
|
+
| Event | Description |
|
|
43
|
+
|-------|-------------|
|
|
44
|
+
| - | - |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
- **Set logo dynamically:** `element.setAttribute('src', 'logo.svg')`
|
|
51
|
+
- **Enable sticky:** `element.setAttribute('sticky', '')`
|
|
52
|
+
- **State integration:** automatic through xstate
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Example: Dynamic JS
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
const footer = document.createElement('x-footer');
|
|
60
|
+
footer.setAttribute('src', 'logo.svg');
|
|
61
|
+
document.body.appendChild(footer);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Styling and Theming
|
|
67
|
+
|
|
68
|
+
```css
|
|
69
|
+
x-footer {
|
|
70
|
+
--header-bg: #222;
|
|
71
|
+
--header-fg: #fff;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Accessibility
|
|
78
|
+
|
|
79
|
+
- Semantic HTML, ARIA
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
*Last updated: July 16, 2025*
|
|
84
|
+
|
|
85
|
+
## Layout Display Media UX Profile
|
|
86
|
+
|
|
87
|
+
Starting with `WP-E11-12`, `x-footer` exposes the profile
|
|
88
|
+
`xtend.component.layout-display-media-ux-profile.v1`. The component can be
|
|
89
|
+
mounted visibly as an RMT shell footer and uses the state key
|
|
90
|
+
`xfooter-state-<id>`.
|
|
91
|
+
|
|
92
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
93
|
+
- Schedule: `component.visible.mount`
|
|
94
|
+
- Events: `footer-ready`, `theme-applied`, `logo-loaded`
|
|
95
|
+
- Snapshot: `snapshot()`
|
|
96
|
+
- CSS parts: `root`, `title`, `logo`, `nav`, `extra`
|
|
97
|
+
|
|
98
|
+
## ECH-WP-07 Token Table and signatureDesign
|
|
99
|
+
|
|
100
|
+
`signatureDesign`: calm enterprise footer with precise navigation,
|
|
101
|
+
logo-safe media area, and subtle signature depth. The default design remains
|
|
102
|
+
polished, but can be fully overridden by corporate themes.
|
|
103
|
+
|
|
104
|
+
| Token | Purpose |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `--xtend-layout-surface` | footer surface |
|
|
107
|
+
| `--xtend-layout-text` | text and link color |
|
|
108
|
+
| `--xtend-layout-border-color` | footer and link edge |
|
|
109
|
+
| `--xtend-layout-radius` | footer and link radius |
|
|
110
|
+
| `--xtend-layout-elevation` | footer shadow |
|
|
111
|
+
| `--xtend-layout-spacing` | footer padding |
|
|
112
|
+
| `--xtend-layout-gap` | title, nav, and content spacing |
|
|
113
|
+
| `--xtend-layout-font-family` | footer typography |
|
|
114
|
+
| `--xtend-layout-font-size` | footer font size |
|
|
115
|
+
| `--xtend-layout-media-radius` | logo radius |
|
|
116
|
+
| `--xtend-layout-focus-ring` | link focus |
|
|
117
|
+
| `--xtend-layout-grid-min` | responsive footer cell width |
|
|
118
|
+
| `--xtend-layout-content-max` | footer max width |
|
|
119
|
+
|
|
120
|
+
## ECH-WP-07 External Theme
|
|
121
|
+
|
|
122
|
+
```css
|
|
123
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-footer {
|
|
124
|
+
--xtend-layout-surface: #f8f4ef;
|
|
125
|
+
--xtend-layout-text: #1e2420;
|
|
126
|
+
--xtend-layout-border-color: rgba(30, 36, 32, 0.2);
|
|
127
|
+
--xtend-layout-radius: 0.25rem;
|
|
128
|
+
--xtend-layout-elevation: 0 8px 24px rgba(30, 36, 32, 0.1);
|
|
129
|
+
--xtend-layout-spacing: 1.15rem;
|
|
130
|
+
--xtend-layout-gap: 0.85rem;
|
|
131
|
+
--xtend-layout-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
132
|
+
--xtend-layout-font-size: 0.95rem;
|
|
133
|
+
--xtend-layout-media-radius: 0.15rem;
|
|
134
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
135
|
+
--xtend-layout-grid-min: minmax(11rem, 1fr);
|
|
136
|
+
--xtend-layout-content-max: 72rem;
|
|
137
|
+
}
|
|
138
|
+
```
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# xform - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xinput](./xinput.md), [xselect](./xselect.md), [xcheckbox](./xcheckbox.md), [xradio](./xradio.md), [xtextarea](./xtextarea.md), [xcalendar](./xcalendar.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-form>` is a flexible form component that wraps arbitrary content and
|
|
8
|
+
supports state integration and theming.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Flexible layout for forms
|
|
15
|
+
- Slot for arbitrary content
|
|
16
|
+
- State integration through xstate
|
|
17
|
+
- Aggregation of `x-input`, `x-slider`, `x-calendar`, `x-select`,
|
|
18
|
+
`x-checkbox`, `x-radio`, and `x-textarea`
|
|
19
|
+
- Theming through CSS custom properties
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<x-form>
|
|
27
|
+
<input type="text" />
|
|
28
|
+
<x-button>Submit</x-button>
|
|
29
|
+
</x-form>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Attributes
|
|
35
|
+
|
|
36
|
+
| Attribute | Type | Description |
|
|
37
|
+
|-----------|------|-------------|
|
|
38
|
+
| - | - | - |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Events
|
|
43
|
+
|
|
44
|
+
| Event | Description |
|
|
45
|
+
|-------|-------------|
|
|
46
|
+
| `submit` | emitted on submit |
|
|
47
|
+
| `invalid` | emitted when child validation fails |
|
|
48
|
+
| `reset` | emitted after form reset |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## API
|
|
53
|
+
|
|
54
|
+
- **Submit form by JS:** `element.submit()`
|
|
55
|
+
- **Read form data:** `element.getFormData()`
|
|
56
|
+
- **State integration:** automatic through xstate
|
|
57
|
+
|
|
58
|
+
## State and Validation Contract from ER-WP-33
|
|
59
|
+
|
|
60
|
+
`<x-form>` collects values from `x-input`, `x-slider`, `x-calendar`,
|
|
61
|
+
`x-select`, `x-checkbox`, `x-radio`, `x-textarea`, and `x-writer`, mirrors them
|
|
62
|
+
to `xform-data-<id>`, and updates that key on `input-changed`,
|
|
63
|
+
`select-changed`, `checkbox-changed`, `radio-changed`, `textarea-changed`,
|
|
64
|
+
`date-select`, and `writer:change`. Checkboxes provide boolean values; radio
|
|
65
|
+
groups provide the value of the active control. The Shadow DOM contains
|
|
66
|
+
`role="form"`, a `role="status"` region for submit/reset feedback, and a
|
|
67
|
+
`role="alert"` region for validation errors.
|
|
68
|
+
|
|
69
|
+
## Form Controls UX from WP-E11-08
|
|
70
|
+
|
|
71
|
+
`<x-form>` exposes `xtendFormControlUxProfile` with
|
|
72
|
+
`xtend.component.form-control-ux-profile.v1`. The profile describes the form
|
|
73
|
+
host, `submit`, `invalid`, `reset`, `xform-data-<id>`, validation aggregation,
|
|
74
|
+
Fabric lane `user-blocking`, and RMT shell authoring.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Example: Dynamic JS
|
|
79
|
+
|
|
80
|
+
```js
|
|
81
|
+
const form = document.createElement('x-form');
|
|
82
|
+
form.innerHTML = '<input type="text" />';
|
|
83
|
+
document.body.appendChild(form);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Styling and Theming
|
|
89
|
+
|
|
90
|
+
```css
|
|
91
|
+
x-form {
|
|
92
|
+
--form-gap: 2em;
|
|
93
|
+
--form-border: 2px solid #007bff;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Accessibility
|
|
100
|
+
|
|
101
|
+
- Semantic HTML, ARIA
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
*Last updated: July 16, 2025*
|
|
106
|
+
|
|
107
|
+
## ECH-WP-08 Form Theme/A11y Hardening
|
|
108
|
+
|
|
109
|
+
`signatureDesign`: enterprise form host with polished surface composition,
|
|
110
|
+
aggregated status regions, and density-safe rhythm for nested controls.
|
|
111
|
+
|
|
112
|
+
| Token | Purpose |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| `--xtend-form-text` | form text color |
|
|
115
|
+
| `--xtend-form-surface` | form surface |
|
|
116
|
+
| `--xtend-form-control-surface` | child control surface |
|
|
117
|
+
| `--xtend-form-control-text` | child control text |
|
|
118
|
+
| `--xtend-form-label-text` | label cascade |
|
|
119
|
+
| `--xtend-form-helper-text` | helper cascade |
|
|
120
|
+
| `--xtend-form-error-text` | error cascade |
|
|
121
|
+
| `--xtend-form-error-surface` | error cascade surface |
|
|
122
|
+
| `--xtend-form-error-border` | form and error edge |
|
|
123
|
+
| `--xtend-form-focus-ring` | focus cascade |
|
|
124
|
+
| `--xtend-form-radius` | form and control radius |
|
|
125
|
+
| `--xtend-form-gap` | form and control spacing |
|
|
126
|
+
| `--xtend-form-font-family` | form typography |
|
|
127
|
+
| `--xtend-form-control-font-size` | control font |
|
|
128
|
+
| `--xtend-form-helper-font-size` | helper/error font for child controls |
|
|
129
|
+
| `--xtend-form-icon-color` | child-control icon accent |
|
|
130
|
+
|
|
131
|
+
Density profiles: `comfortable`, `compact`, `dense`. `busy`, `disabled`, and
|
|
132
|
+
invalid state are mirrored on the form host as surface state and through ARIA.
|
|
133
|
+
|
|
134
|
+
```css
|
|
135
|
+
[data-xtend-form-theme="enterprise-foreign"] x-form {
|
|
136
|
+
--xtend-form-surface: #fffaf2;
|
|
137
|
+
--xtend-form-control-surface: #fbf8f2;
|
|
138
|
+
--xtend-form-text: #16231f;
|
|
139
|
+
--xtend-form-label-text: #22312c;
|
|
140
|
+
--xtend-form-helper-text: #596861;
|
|
141
|
+
--xtend-form-error-text: #7d231c;
|
|
142
|
+
--xtend-form-error-border: #a64036;
|
|
143
|
+
--xtend-form-focus-ring: 3px solid #8f4f2a;
|
|
144
|
+
--xtend-form-radius: 0.45rem;
|
|
145
|
+
--xtend-form-gap: 0.8rem;
|
|
146
|
+
}
|
|
147
|
+
```
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
# xheader - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xfooter](./xfooter.md), [xtheme](./xtheme.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-header>` is a versatile, accessible header component for branding, navigation and flexible app-shell layouts. It supports logos, titles, search, actions/utility and navigation slots, theming, state integration and several menu presentation modes for enterprise app shells.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Optional logo (`src` attribute)
|
|
13
|
+
- Slot system for title, search, actions, legacy utility and navigation
|
|
14
|
+
- Sticky header
|
|
15
|
+
- State integration via xstate
|
|
16
|
+
- Theming via CSS custom properties; fully themeable
|
|
17
|
+
- **Responsive behavior:** header content runs through a slot grid. Search and actions wrap predictably on small displays; navigation uses the configured menu presentation mode.
|
|
18
|
+
- **Slot alignment:** brand, actions and menu trigger remain in a fixed top row on narrow viewports. Search is placed below, which prevents action buttons from being displaced.
|
|
19
|
+
- **Menu presentation modes:** `drawer`, `side-panel`, `popover`, `fullscreen` and `inline-main` cover shell, app and portal navigation.
|
|
20
|
+
- **Full-width drawer:** the default `drawer` still renders as a fixed overlay across the available page width and does not extend the document scroll area.
|
|
21
|
+
- **Overflow-safe navigation:** direct `x-link` entries and complex `[data-menu-shell]` menus remain inside their menu-surface containers.
|
|
22
|
+
- **Burger menu:** animated button; color can be controlled through theme tokens
|
|
23
|
+
- **Accessibility:** landmark roles, ARIA, keyboard navigation and focus management
|
|
24
|
+
- **Events:** menu opened/closed, logo loaded
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<x-header src="logo.svg" logo-size="40">
|
|
32
|
+
<span slot="title">My App</span>
|
|
33
|
+
<x-form slot="search">...</x-form>
|
|
34
|
+
<button slot="actions">Theme</button>
|
|
35
|
+
<x-link slot="nav" href="/docs">Docs</x-link>
|
|
36
|
+
</x-header>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Note:** `utility` remains available as a compatibility alias. New apps should use `search` for search controls and `actions` for buttons, toggles or status controls.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Menu Presentation Modes
|
|
44
|
+
|
|
45
|
+
`menu-mode` controls how navigation becomes visible. Without the new attribute, `drawer` remains active and keeps the previous full-width drawer behavior compatible.
|
|
46
|
+
|
|
47
|
+
| Mode | Behavior | A11y behavior |
|
|
48
|
+
|------|----------|---------------|
|
|
49
|
+
| `drawer` | Fixed overlay below the header, full-width by default | Navigation, Escape, outside click, focus return |
|
|
50
|
+
| `side-panel` | Side panel via `menu-placement="start"` or `end` | optionally modal via `menu-modal`, then focus trap and backdrop |
|
|
51
|
+
| `popover` | Compact menu near the trigger | non-modal, Escape and outside click |
|
|
52
|
+
| `fullscreen` | Full-screen navigation | modal, backdrop, focus trap, Escape and focus return |
|
|
53
|
+
| `inline-main` | Menu in the header document flow | no overlay trap, clean navigation landmark |
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<x-header
|
|
57
|
+
menu-mode="side-panel"
|
|
58
|
+
menu-placement="end"
|
|
59
|
+
menu-modal
|
|
60
|
+
menu-width="min(32rem, 92vw)"
|
|
61
|
+
menu-max-height="calc(100dvh - 2rem)"
|
|
62
|
+
menu-align="stretch">
|
|
63
|
+
<span slot="title">Enterprise Shell</span>
|
|
64
|
+
<x-link slot="nav" href="/workbench">Workbench</x-link>
|
|
65
|
+
</x-header>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`menu-open` can be set declaratively. Programmatically, `toggleMenu(true | false, { source })` remains the stable API. `snapshot()` returns `menuMode`, `menuPlacement`, `menuModal`, `menuBreakpoint`, `menuWidth`, `menuMaxHeight` and `menuAlign`; `drawerMode: 'fixed-full-width-overlay'` remains as a legacy alias.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Responsive Slot Logic
|
|
73
|
+
- Desktop: brand, search, actions and menu button share a stable grid row.
|
|
74
|
+
- Tablet: search occupies its own grid row so input fields do not clip against actions.
|
|
75
|
+
- Mobile: brand, actions and menu button remain in the first row. Search occupies the second row. Navigation uses the configured menu presentation mode.
|
|
76
|
+
- The drawer is positioned as a `fixed` overlay. This keeps the app shell stable and prevents route changes from an open navigation state to a shorter page from creating extra document height.
|
|
77
|
+
- Slotted navigation uses `max-width: 100%`, `min-width: 0`, `box-sizing: border-box` and `overflow-wrap: anywhere` so long menu items do not overflow app-shell containers.
|
|
78
|
+
- `header-layout-changed` is emitted when the header enters its compact state.
|
|
79
|
+
|
|
80
|
+
## Slot Alignment
|
|
81
|
+
|
|
82
|
+
`x-header` uses the `fixed-responsive-slot-grid` alignment by default.
|
|
83
|
+
|
|
84
|
+
| Viewport | Slot mapping |
|
|
85
|
+
|----------|--------------|
|
|
86
|
+
| Desktop | `brand search actions trigger` |
|
|
87
|
+
| Tablet | `brand actions trigger` + `search search search` |
|
|
88
|
+
| Mobile | `brand actions trigger` + `search search search` |
|
|
89
|
+
|
|
90
|
+
Corporate designs can override this mapping through CSS custom properties without forking the component:
|
|
91
|
+
|
|
92
|
+
```css
|
|
93
|
+
x-header {
|
|
94
|
+
--header-slot-template-areas: "brand search actions trigger";
|
|
95
|
+
--header-tablet-slot-template-areas: "brand actions trigger" "search search search";
|
|
96
|
+
--header-mobile-slot-template-areas: "brand actions trigger" "search search search";
|
|
97
|
+
--header-mobile-actions-justify: flex-end;
|
|
98
|
+
--header-mobile-actions-wrap: nowrap;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Slots
|
|
105
|
+
| Name | Description |
|
|
106
|
+
|------|-------------|
|
|
107
|
+
| `title` | Title/branding area |
|
|
108
|
+
| `search` | Search form or filter input |
|
|
109
|
+
| `actions` | Buttons, theme toggles and status actions |
|
|
110
|
+
| `utility` | Compatible alias for actions |
|
|
111
|
+
| `nav` | Navigation entries, such as links or menus |
|
|
112
|
+
| `logo` | Optional custom logo element |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Attributes
|
|
117
|
+
| Attribute | Type | Description |
|
|
118
|
+
|-----------|------|-------------|
|
|
119
|
+
| `src` | String | Logo URL |
|
|
120
|
+
| `logo-size` | String | Logo size, for example 40 or 64px |
|
|
121
|
+
| `sticky` | Boolean | Keeps the header fixed at the top |
|
|
122
|
+
| `shadow` | Boolean | Enables shadow |
|
|
123
|
+
| `menu-mode` | `drawer`, `side-panel`, `popover`, `fullscreen`, `inline-main` | Menu presentation mode |
|
|
124
|
+
| `menu-placement` | `start`, `end`, `top`, `bottom` | preferred position |
|
|
125
|
+
| `menu-modal` | Boolean | Modal behavior with backdrop and focus trap |
|
|
126
|
+
| `menu-open` | Boolean | Opens the menu declaratively |
|
|
127
|
+
| `menu-breakpoint` | String | Preset (`sm`, `md`, `lg`, `xl`) or CSS length |
|
|
128
|
+
| `menu-width` | String | Width for panel/popover |
|
|
129
|
+
| `menu-max-height` | String | Height limit for the menu surface |
|
|
130
|
+
| `menu-align` | `start`, `center`, `end`, `stretch` | Alignment inside the menu surface |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Events
|
|
135
|
+
| Event | Description |
|
|
136
|
+
|-------|-------------|
|
|
137
|
+
| `header-layout-changed` | Fired on responsive layout changes |
|
|
138
|
+
| `menu-before-open` | Cancelable event before opening |
|
|
139
|
+
| `menu-before-close` | Cancelable event before closing |
|
|
140
|
+
| `menu-opened` | Fired with snapshot when the menu opens |
|
|
141
|
+
| `menu-closed` | Fired with snapshot when the menu closes |
|
|
142
|
+
| `menu-mode-changed` | Fired when `menu-mode` changes |
|
|
143
|
+
| `menu-placement-changed` | Fired when `menu-placement` changes |
|
|
144
|
+
| `logo-loaded` | Fired when the logo has loaded |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## API
|
|
149
|
+
- **Set logo dynamically:** `element.setAttribute('src', 'logo.svg')`
|
|
150
|
+
- **Control menu directly:** `header.toggleMenu(false, { source: 'router' })`
|
|
151
|
+
- **State integration:** automatic via xstate (`xheader-state-<id>`, for example open/close menu)
|
|
152
|
+
- **Open menu programmatically:**
|
|
153
|
+
```js
|
|
154
|
+
xstate.set('xheader-state-<id>', { menuOpen: true });
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Example: Dynamic JS
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
const header = document.createElement('x-header');
|
|
163
|
+
header.setAttribute('src', 'logo.svg');
|
|
164
|
+
document.body.appendChild(header);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Styling & Theming
|
|
170
|
+
|
|
171
|
+
```css
|
|
172
|
+
x-header {
|
|
173
|
+
--xtend-header-surface: #fff;
|
|
174
|
+
--xtend-header-text: #222;
|
|
175
|
+
--xtend-header-border-color: #d9dde5;
|
|
176
|
+
--xtend-header-menu-surface: #fff;
|
|
177
|
+
--xtend-header-menu-width: min(30rem, 92vw);
|
|
178
|
+
--xtend-header-menu-max-height: min(72dvh, 820px);
|
|
179
|
+
--xtend-header-menu-backdrop: rgba(15, 23, 42, 0.45);
|
|
180
|
+
--header-bg: var(--xtend-header-surface);
|
|
181
|
+
--header-fg: var(--xtend-header-text);
|
|
182
|
+
--header-title-color: #222; /* title in light mode */
|
|
183
|
+
--burger-color: #222; /* burger button strokes in light mode */
|
|
184
|
+
--header-menu-bg: var(--xtend-header-menu-surface);
|
|
185
|
+
--header-mobile-slot-template-areas: "brand actions trigger" "search search search";
|
|
186
|
+
--header-drawer-inline-offset: 1rem;
|
|
187
|
+
--header-drawer-content-max: none;
|
|
188
|
+
}
|
|
189
|
+
x-header[theme="dark"] {
|
|
190
|
+
--header-bg: #222;
|
|
191
|
+
--header-fg: #fff;
|
|
192
|
+
--header-title-color: #fff; /* title in dark mode */
|
|
193
|
+
--burger-color: #fff; /* burger button strokes in dark mode */
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Accessibility
|
|
200
|
+
- Semantic HTML and landmark roles (`role="banner"`)
|
|
201
|
+
- ARIA attributes for menu, burger button and navigation
|
|
202
|
+
- Keyboard navigation with Tab and Escape
|
|
203
|
+
- Focus management in overlays; `fullscreen` and `menu-modal` use focus trap, backdrop and focus return
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Changelog
|
|
208
|
+
- **2025-07-18:** Modernization, theme variables for title and burger, events, accessibility, API and documentation updated
|
|
209
|
+
- **up to 07/2025:** Various bug fixes and responsive improvements
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
*Last updated: July 18, 2025*
|
|
214
|
+
|
|
215
|
+
## Layout Display Media UX Profile
|
|
216
|
+
|
|
217
|
+
As of `WP-E11-12`, `x-header` provides the `xtend.component.layout-display-media-ux-profile.v1` profile. The component is RMT-schedulable as a docs/app-shell header and uses the state key `xheader-state-<id>`.
|
|
218
|
+
|
|
219
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
220
|
+
- Schedule: `component.visible.mount`
|
|
221
|
+
- Events: `header-ready`, `menu-before-open`, `menu-before-close`, `menu-opened`, `menu-closed`, `menu-mode-changed`, `menu-placement-changed`
|
|
222
|
+
- Snapshot: `snapshot()`
|
|
223
|
+
- CSS parts: `root`, `brand`, `title`, `logo`, `search`, `actions`, `utility`, `trigger`, `trigger-icon`, `menu`, `menu-surface`, `menu-content`, `nav`, `backdrop`
|
|
224
|
+
- Legacy CSS parts: `drawer` and `drawer-surface` remain aliases for `menu` and `menu-surface`.
|
|
225
|
+
|
|
226
|
+
## ECH-WP-07 Token Table and signatureDesign
|
|
227
|
+
|
|
228
|
+
`signatureDesign`: precise enterprise app shell with calm surface hierarchy, dense slot rhythm, high-quality menu surface and brand-neutral premium feel. The default design should feel distinctive without forcing a single-brand look.
|
|
229
|
+
|
|
230
|
+
| Token | Purpose |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `--xtend-layout-surface` | Shell and menu surface |
|
|
233
|
+
| `--xtend-layout-text` | Header, brand and navigation color |
|
|
234
|
+
| `--xtend-layout-border-color` | Header, trigger and menu edges |
|
|
235
|
+
| `--xtend-layout-radius` | Header and menu radius |
|
|
236
|
+
| `--xtend-layout-elevation` | Header and menu shadow |
|
|
237
|
+
| `--xtend-layout-spacing` | Header padding |
|
|
238
|
+
| `--xtend-layout-gap` | Slot and menu spacing |
|
|
239
|
+
| `--xtend-layout-font-family` | Shell typography |
|
|
240
|
+
| `--xtend-layout-font-size` | Brand/navigation typography |
|
|
241
|
+
| `--xtend-layout-media-radius` | Logo and media radius |
|
|
242
|
+
| `--xtend-layout-focus-ring` | Keyboard focus |
|
|
243
|
+
| `--xtend-layout-grid-min` | Slot-grid lower bound |
|
|
244
|
+
| `--xtend-layout-content-max` | Menu width and content boundary |
|
|
245
|
+
|
|
246
|
+
## ECH-WP-07 Foreign Theme
|
|
247
|
+
|
|
248
|
+
```css
|
|
249
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-header {
|
|
250
|
+
--xtend-layout-surface: #f6f2ea;
|
|
251
|
+
--xtend-layout-text: #17231f;
|
|
252
|
+
--xtend-layout-border-color: rgba(23, 35, 31, 0.22);
|
|
253
|
+
--xtend-layout-radius: 0.35rem;
|
|
254
|
+
--xtend-layout-elevation: 0 14px 34px rgba(23, 35, 31, 0.14);
|
|
255
|
+
--xtend-layout-spacing: 0.9rem;
|
|
256
|
+
--xtend-layout-gap: 0.7rem;
|
|
257
|
+
--xtend-layout-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
258
|
+
--xtend-layout-font-size: 1rem;
|
|
259
|
+
--xtend-layout-media-radius: 0.2rem;
|
|
260
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
261
|
+
--xtend-layout-grid-min: minmax(0, 1fr);
|
|
262
|
+
--xtend-layout-content-max: 24rem;
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## ECH-WP-09 Token Table and Navigation States
|
|
267
|
+
|
|
268
|
+
`signatureDesign`: `x-header` combines a high-quality enterprise app shell with visibly stable navigation. Active/current/selected, hover, focus and disabled states apply to slotted `nav` entries in `drawer`, `side-panel`, `popover`, `fullscreen` and `inline-main`.
|
|
269
|
+
|
|
270
|
+
| Token | Purpose |
|
|
271
|
+
| --- | --- |
|
|
272
|
+
| `--xtend-nav-surface` | Menu and nav surface |
|
|
273
|
+
| `--xtend-nav-text` | Nav text |
|
|
274
|
+
| `--xtend-nav-border-color` | Menu and nav edge |
|
|
275
|
+
| `--xtend-nav-radius` | Nav radius |
|
|
276
|
+
| `--xtend-nav-gap` | Spacing inside the menu |
|
|
277
|
+
| `--xtend-nav-font-family` | Navigation typography |
|
|
278
|
+
| `--xtend-nav-font-size` | Navigation text size |
|
|
279
|
+
| `--xtend-nav-active-surface` | Active/current/selected surface |
|
|
280
|
+
| `--xtend-nav-active-text` | Active/current/selected text |
|
|
281
|
+
| `--xtend-nav-current-indicator` | Non-color-only current indicator |
|
|
282
|
+
| `--xtend-nav-hover-surface` | Hover surface |
|
|
283
|
+
| `--xtend-nav-focus-ring` | Keyboard focus |
|
|
284
|
+
| `--xtend-nav-disabled-opacity` | Disabled dimming |
|
|
285
|
+
|
|
286
|
+
## ECH-WP-09 Keyboard Behavior
|
|
287
|
+
|
|
288
|
+
The menu trigger is an icon control with `part="trigger-icon control icon"`. Overlay modes support Escape, outside click, focus return and, with `menu-modal`, focus trap. Slotted navigation can carry `aria-current="page"`, `aria-selected="true"`, `active`, `disabled` or `aria-disabled="true"`. Nested navigation must mark disclosure icons as icon controls, for example `part="disclosure-icon control icon"`.
|
|
289
|
+
|
|
290
|
+
## ECH-WP-09 Foreign Theme
|
|
291
|
+
|
|
292
|
+
```css
|
|
293
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-header {
|
|
294
|
+
--xtend-nav-surface: #f7f4ee;
|
|
295
|
+
--xtend-nav-text: #17231f;
|
|
296
|
+
--xtend-nav-border-color: rgba(23, 35, 31, 0.22);
|
|
297
|
+
--xtend-nav-radius: 0.35rem;
|
|
298
|
+
--xtend-nav-gap: 0.45rem;
|
|
299
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
300
|
+
--xtend-nav-font-size: 0.98rem;
|
|
301
|
+
--xtend-nav-active-surface: #173f35;
|
|
302
|
+
--xtend-nav-active-text: #fffaf0;
|
|
303
|
+
--xtend-nav-current-indicator: #b56b35;
|
|
304
|
+
--xtend-nav-hover-surface: rgba(181, 107, 53, 0.14);
|
|
305
|
+
--xtend-nav-focus-ring: 3px solid #b56b35;
|
|
306
|
+
--xtend-nav-disabled-opacity: 0.44;
|
|
307
|
+
}
|
|
308
|
+
```
|