@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,136 @@
|
|
|
1
|
+
# xmasonry - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xcards](./xcards.md), [xsection](./xsection.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-masonry>` is a flexible grid layout for tile-like arrangements
|
|
8
|
+
(masonry layout). It is suitable for galleries, cards, and dynamic content.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Masonry layout (Pinterest style)
|
|
15
|
+
- Responsive design
|
|
16
|
+
- Theming through CSS custom properties
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<x-masonry>
|
|
24
|
+
<div>Item 1</div>
|
|
25
|
+
<div>Item 2</div>
|
|
26
|
+
</x-masonry>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Attributes
|
|
32
|
+
|
|
33
|
+
| Attribute | Type | Description |
|
|
34
|
+
|-----------|------|-------------|
|
|
35
|
+
| `columns` | Number | number of columns (default: 3) |
|
|
36
|
+
| `gap` | String | spacing between items (default: 1rem) |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Events
|
|
41
|
+
|
|
42
|
+
| Event | Description |
|
|
43
|
+
|-------|-------------|
|
|
44
|
+
| - | - |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
- **Set columns dynamically:** `element.setAttribute('columns', 4)`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Example: Dynamic JS
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
const masonry = document.createElement('x-masonry');
|
|
58
|
+
masonry.setAttribute('columns', 4);
|
|
59
|
+
document.body.appendChild(masonry);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Styling and Theming
|
|
65
|
+
|
|
66
|
+
```css
|
|
67
|
+
x-masonry {
|
|
68
|
+
--masonry-gap: 2rem;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Accessibility
|
|
75
|
+
|
|
76
|
+
- Semantic HTML
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
*Last updated: July 16, 2025*
|
|
81
|
+
|
|
82
|
+
## Layout Display Media UX Profile
|
|
83
|
+
|
|
84
|
+
Starting with `WP-E11-12`, `x-masonry` exposes the profile
|
|
85
|
+
`xtend.component.layout-display-media-ux-profile.v1`. The component can be
|
|
86
|
+
authored as a responsive layout grid with deterministic reflow scheduling and
|
|
87
|
+
uses the state key `xmasonry-state-<id>`.
|
|
88
|
+
|
|
89
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
90
|
+
- Schedule: `layout.reflow.commit`
|
|
91
|
+
- Event: `masonry-layout`
|
|
92
|
+
- Snapshot: `snapshot()`
|
|
93
|
+
- CSS parts: `root`, `grid`, `item`, `toggle`, `content`
|
|
94
|
+
|
|
95
|
+
## ECH-WP-07 Token Table and signatureDesign
|
|
96
|
+
|
|
97
|
+
`signatureDesign`: reorderable enterprise masonry with tactile depth,
|
|
98
|
+
icon-only toggle control, and themeable drag feedback. The component is suited
|
|
99
|
+
for galleries, dashboards, and knowledge layouts without text-character
|
|
100
|
+
controls.
|
|
101
|
+
|
|
102
|
+
| Token | Purpose |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| `--xtend-layout-surface` | masonry item surface |
|
|
105
|
+
| `--xtend-layout-text` | item text color |
|
|
106
|
+
| `--xtend-layout-border-color` | item and drop edges |
|
|
107
|
+
| `--xtend-layout-radius` | item radius |
|
|
108
|
+
| `--xtend-layout-elevation` | item and drag shadow |
|
|
109
|
+
| `--xtend-layout-spacing` | item padding |
|
|
110
|
+
| `--xtend-layout-gap` | grid spacing |
|
|
111
|
+
| `--xtend-layout-font-family` | masonry typography |
|
|
112
|
+
| `--xtend-layout-font-size` | item text size |
|
|
113
|
+
| `--xtend-layout-media-radius` | toggle/media radius |
|
|
114
|
+
| `--xtend-layout-focus-ring` | toggle focus |
|
|
115
|
+
| `--xtend-layout-grid-min` | grid lower bound |
|
|
116
|
+
| `--xtend-layout-content-max` | masonry max width |
|
|
117
|
+
|
|
118
|
+
## ECH-WP-07 External Theme
|
|
119
|
+
|
|
120
|
+
```css
|
|
121
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-masonry {
|
|
122
|
+
--xtend-layout-surface: #fbf7f1;
|
|
123
|
+
--xtend-layout-text: #1b2823;
|
|
124
|
+
--xtend-layout-border-color: rgba(27, 40, 35, 0.2);
|
|
125
|
+
--xtend-layout-radius: 0.35rem;
|
|
126
|
+
--xtend-layout-elevation: 0 10px 28px rgba(27, 40, 35, 0.12);
|
|
127
|
+
--xtend-layout-spacing: 1.25rem;
|
|
128
|
+
--xtend-layout-gap: 1rem;
|
|
129
|
+
--xtend-layout-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
130
|
+
--xtend-layout-font-size: 1rem;
|
|
131
|
+
--xtend-layout-media-radius: 999px;
|
|
132
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
133
|
+
--xtend-layout-grid-min: minmax(14rem, 1fr);
|
|
134
|
+
--xtend-layout-content-max: 72rem;
|
|
135
|
+
}
|
|
136
|
+
```
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# xmenu - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xlink](./xlink.md), [xrouter](./xrouter.md), [xheader](./xheader.md), [xfooter](./xfooter.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-menu>` is the enterprise navigation component for menubars, toolbars, and
|
|
8
|
+
app navigation. Since `WP-E12-07`, it has an explicit performance, RMT, Fabric,
|
|
9
|
+
and routing contract. RMT can declare menu entries as DOM descriptors; the
|
|
10
|
+
XTend host adapter handles hydration, keyboard navigation, active-state sync,
|
|
11
|
+
and XRouter compatibility.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Slotted entries for `a`, `button`, `x-link`, and `[role="menuitem"]`
|
|
16
|
+
- ARIA roles with `role="menubar"` and `role="menuitem"`
|
|
17
|
+
- Keyboard navigation with arrow keys, `Home`, `End`, `Enter`, and `Space`
|
|
18
|
+
- Roving `tabindex` and `aria-current="page"` for active entries
|
|
19
|
+
- `x-link` and `x-router` compatibility through `x-navigate` and
|
|
20
|
+
`router-navigate`
|
|
21
|
+
- `xtend.performance.component-profile.v1` with navigation and interaction
|
|
22
|
+
budgets
|
|
23
|
+
- Fabric-compatible events for navigation, keyboard, and performance
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<x-menu data-rmt-schedule="ui.user-blocking.navigation" data-xtend-lane="user-blocking">
|
|
29
|
+
<a href="/overview">Overview</a>
|
|
30
|
+
<x-link href="/settings">Settings</x-link>
|
|
31
|
+
<button type="button">Action</button>
|
|
32
|
+
</x-menu>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Events
|
|
36
|
+
|
|
37
|
+
| Event | Detail | Description |
|
|
38
|
+
|-------|--------|-------------|
|
|
39
|
+
| `menu-item-clicked` | `{ href, index, label, source, scheduleRef }` | emitted on click or keyboard activation of an entry |
|
|
40
|
+
| `menu-navigate` | `{ href, path, mode, scheduleRef }` | signals internal navigation to XRouter/RMT |
|
|
41
|
+
| `menu-keyboard-navigation` | `{ key, fromIndex, toIndex }` | measures roving-focus navigation |
|
|
42
|
+
| `menu-performance-measured` | `xtend.performance.measurement.v1` | Fabric/diagnostics measurement for hydration, slotchange, keyboard, and route activation |
|
|
43
|
+
|
|
44
|
+
## Runtime API
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
const menu = document.querySelector('x-menu');
|
|
48
|
+
|
|
49
|
+
menu.getPerformanceBudget();
|
|
50
|
+
menu.getInteractionBudget();
|
|
51
|
+
menu.snapshotPerformance();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`snapshotPerformance()` returns `xtend.component.performance-snapshot.v1` with
|
|
55
|
+
counters, budgets, and the latest measurement points.
|
|
56
|
+
|
|
57
|
+
## Performance Contract
|
|
58
|
+
|
|
59
|
+
`x-menu` uses:
|
|
60
|
+
|
|
61
|
+
- Schema: `xtend.performance.component-profile.v1`
|
|
62
|
+
- `componentRef`: `x-menu`
|
|
63
|
+
- Profile: `interactive`, `routing`
|
|
64
|
+
- Budget Class: `navigation-small`
|
|
65
|
+
- Lane: `user-blocking`
|
|
66
|
+
- Hydration Policy: `visible`
|
|
67
|
+
- critical measurements:
|
|
68
|
+
- `xtend.component.hydrate`
|
|
69
|
+
- `xtend.component.render`
|
|
70
|
+
- `xtend.component.slotchange`
|
|
71
|
+
- `xtend.interaction.keyboard`
|
|
72
|
+
- `xtend.route.navigate`
|
|
73
|
+
- `xtend.state.sync`
|
|
74
|
+
|
|
75
|
+
The interaction budget includes `keyboardBudgetMs`, `routeActivationBudgetMs`,
|
|
76
|
+
`touchTargetMinPx: 44`, `rovingTabindexRequired`, `xLinkCompatible`, and
|
|
77
|
+
`xRouterCompatible`.
|
|
78
|
+
|
|
79
|
+
## RMT and Fabric
|
|
80
|
+
|
|
81
|
+
The RMT contract stays host-neutral:
|
|
82
|
+
|
|
83
|
+
- Adapter: `xtend.component`
|
|
84
|
+
- Template Mode: `dom_descriptor`
|
|
85
|
+
- Event Binding Mode: `dom-event-to-rmt-command`
|
|
86
|
+
- Schedule Refs: `component.visible.hydrate`, `ui.user-blocking.navigation`,
|
|
87
|
+
`route.transition.navigate`, `diagnostics.snapshot`
|
|
88
|
+
- Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
89
|
+
|
|
90
|
+
Fabric can connect the component through `menu-performance-measured`,
|
|
91
|
+
`menu-keyboard-navigation`, `menu-navigate`, and `snapshotPerformance()`.
|
|
92
|
+
|
|
93
|
+
## State and Routing
|
|
94
|
+
|
|
95
|
+
- `xmenu-active` is the canonical `xstate` key for the active entry.
|
|
96
|
+
- `xmenu-state-<id>` contains the full local state including performance
|
|
97
|
+
snapshot.
|
|
98
|
+
- Internal links write `router-navigate` and emit `x-navigate`, so XRouter can
|
|
99
|
+
trigger hash and history mode.
|
|
100
|
+
- Active entries receive `aria-current="page"` and remain focusable in the
|
|
101
|
+
roving tabindex.
|
|
102
|
+
|
|
103
|
+
## Styling and Theming
|
|
104
|
+
|
|
105
|
+
```css
|
|
106
|
+
x-menu {
|
|
107
|
+
--xtend-menu-bg: rgba(40, 60, 120, 0.25);
|
|
108
|
+
--xtend-menu-color: #fff;
|
|
109
|
+
--xtend-menu-min-touch-target: 44px;
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Accessibility
|
|
114
|
+
|
|
115
|
+
- ARIA roles: `menubar` on the shell, `menuitem` on slotted items.
|
|
116
|
+
- Keyboard navigation: `ArrowRight`, `ArrowDown`, `ArrowLeft`, `ArrowUp`,
|
|
117
|
+
`Home`, `End`, `Enter`, `Space`.
|
|
118
|
+
- Focus visible and forced colors are supported without relying on motion.
|
|
119
|
+
- `prefers-reduced-motion` disables non-essential transitions.
|
|
120
|
+
|
|
121
|
+
## Component-Level Contract from WP-E12-07
|
|
122
|
+
|
|
123
|
+
- `xtendComponentContract`, `xtendRmtMetadata`,
|
|
124
|
+
`xtendComponentLifecycleTelemetry`, `xtendScaffoldA11yProfile`, and
|
|
125
|
+
`xtendScaffoldPerformanceProfile` exist in the runtime.
|
|
126
|
+
- `menu-item-clicked`, `menu-navigate`, `menu-keyboard-navigation`, and
|
|
127
|
+
`menu-performance-measured` form the public event surface.
|
|
128
|
+
- `snapshotPerformance()`, `getPerformanceBudget()`, and
|
|
129
|
+
`getInteractionBudget()` make the component testable for Fabric, RMT
|
|
130
|
+
adapters, and local gates.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
*Last updated: May 7, 2026*
|
|
135
|
+
|
|
136
|
+
## ECH-WP-09 Token Table and Navigation States
|
|
137
|
+
|
|
138
|
+
`signatureDesign`: `x-menu` uses a calm enterprise menu bar with clearly
|
|
139
|
+
visible active route, non-color-only current indicator, and replaceable
|
|
140
|
+
typography. Active/current/selected, hover, focus, and disabled states must
|
|
141
|
+
remain visible in external themes.
|
|
142
|
+
|
|
143
|
+
| Token | Purpose |
|
|
144
|
+
| --- | --- |
|
|
145
|
+
| `--xtend-nav-surface` | menu surface |
|
|
146
|
+
| `--xtend-nav-text` | menu and item text |
|
|
147
|
+
| `--xtend-nav-border-color` | menu edge |
|
|
148
|
+
| `--xtend-nav-radius` | menu and item radius |
|
|
149
|
+
| `--xtend-nav-gap` | spacing between navigation entries |
|
|
150
|
+
| `--xtend-nav-font-family` | navigation typography |
|
|
151
|
+
| `--xtend-nav-font-size` | navigation text size |
|
|
152
|
+
| `--xtend-nav-active-surface` | active/current/selected surface |
|
|
153
|
+
| `--xtend-nav-active-text` | active/current/selected text |
|
|
154
|
+
| `--xtend-nav-current-indicator` | non-color-only route indicator |
|
|
155
|
+
| `--xtend-nav-hover-surface` | hover surface |
|
|
156
|
+
| `--xtend-nav-focus-ring` | keyboard focus |
|
|
157
|
+
| `--xtend-nav-disabled-opacity` | disabled dimming |
|
|
158
|
+
|
|
159
|
+
## ECH-WP-09 Keyboard Behavior
|
|
160
|
+
|
|
161
|
+
`ArrowRight`, `ArrowDown`, `ArrowLeft`, `ArrowUp`, `Home`, `End`, `Enter`, and
|
|
162
|
+
`Space` remain gateable. Disabled items are not activated and are skipped by
|
|
163
|
+
roving focus. Nested menus may display disclosure controls only with icon
|
|
164
|
+
controls such as `part="disclosure-icon control icon"` or authorized `x-icon`
|
|
165
|
+
elements, not with text glyphs.
|
|
166
|
+
|
|
167
|
+
## ECH-WP-09 External Theme
|
|
168
|
+
|
|
169
|
+
```css
|
|
170
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-menu {
|
|
171
|
+
--xtend-nav-surface: #f7f4ee;
|
|
172
|
+
--xtend-nav-text: #19231f;
|
|
173
|
+
--xtend-nav-border-color: rgba(25, 35, 31, 0.24);
|
|
174
|
+
--xtend-nav-radius: 0.4rem;
|
|
175
|
+
--xtend-nav-gap: 0.35rem;
|
|
176
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
177
|
+
--xtend-nav-font-size: 0.96rem;
|
|
178
|
+
--xtend-nav-active-surface: #173f35;
|
|
179
|
+
--xtend-nav-active-text: #fffaf0;
|
|
180
|
+
--xtend-nav-current-indicator: #b56b35;
|
|
181
|
+
--xtend-nav-hover-surface: rgba(181, 107, 53, 0.14);
|
|
182
|
+
--xtend-nav-focus-ring: 3px solid #b56b35;
|
|
183
|
+
--xtend-nav-disabled-opacity: 0.44;
|
|
184
|
+
}
|
|
185
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# xmodal - XTend Component
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`<x-modal>` is XTend's state-driven modal component. It is mainly used through
|
|
6
|
+
`window.XModal.show()`, but can also be operated directly in the DOM with
|
|
7
|
+
attributes and slots.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-modal title="Notice" open>
|
|
13
|
+
<p>Modal content</p>
|
|
14
|
+
</x-modal>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Attributes
|
|
18
|
+
|
|
19
|
+
| Attribute | Type | Description |
|
|
20
|
+
|-----------|------|-------------|
|
|
21
|
+
| `open` | boolean | modal is open |
|
|
22
|
+
| `overlay` | boolean | shows an overlay backdrop |
|
|
23
|
+
| `title` | string | modal title |
|
|
24
|
+
| `content` | string | textual content |
|
|
25
|
+
| `actions` | string | JSON array for action buttons |
|
|
26
|
+
|
|
27
|
+
## Slots
|
|
28
|
+
|
|
29
|
+
| Slot | Description |
|
|
30
|
+
|------|-------------|
|
|
31
|
+
| default | main modal content |
|
|
32
|
+
| `actions` | optional action area |
|
|
33
|
+
|
|
34
|
+
## Events
|
|
35
|
+
|
|
36
|
+
| Event | Description |
|
|
37
|
+
|-------|-------------|
|
|
38
|
+
| `modal-opened` | after successful opening |
|
|
39
|
+
| `modal-closed` | after successful closing |
|
|
40
|
+
| `modal-action` | when a configured action is selected |
|
|
41
|
+
|
|
42
|
+
## API
|
|
43
|
+
|
|
44
|
+
- `element.open()`
|
|
45
|
+
- `element.close()`
|
|
46
|
+
|
|
47
|
+
Open state is routed through the same paths:
|
|
48
|
+
|
|
49
|
+
- `xtend.component.x-modal.<id>.open`
|
|
50
|
+
- `modal-open-<id>`
|
|
51
|
+
|
|
52
|
+
## Runtime Contract
|
|
53
|
+
|
|
54
|
+
- API-managed modals read title, content, and actions from
|
|
55
|
+
`xstate.get('ui').modals`.
|
|
56
|
+
- Escape, overlay click, and close button write open state back.
|
|
57
|
+
- API-managed modals remove themselves from `ui.modals` and the DOM after
|
|
58
|
+
closing.
|
|
59
|
+
- Directly embedded overlay modals are moved into a `document.body` portal layer
|
|
60
|
+
while `open`, so blur and overlay cover the full viewport.
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
|
|
64
|
+
- `modal-action` contains the selected action definition in event detail.
|
|
65
|
+
- `window.XModal.show()` is the preferred entry point for API-managed modals.
|
|
66
|
+
- Focus return to the last active element is part of the default behavior.
|
|
67
|
+
|
|
68
|
+
## Overlay Interaction UX Profile
|
|
69
|
+
|
|
70
|
+
Since `WP-E11-11`, `<x-modal>` declares the runtime profile
|
|
71
|
+
`xtend.component.overlay-interaction-ux-profile.v1` through
|
|
72
|
+
`xtendOverlayInteractionUxProfile`.
|
|
73
|
+
|
|
74
|
+
| Field | Value |
|
|
75
|
+
|-------|-------|
|
|
76
|
+
| Family | `modal-dialog` |
|
|
77
|
+
| State Key | `modal-open-<id>` |
|
|
78
|
+
| Schedule | `overlay.stack.open` |
|
|
79
|
+
| Commands | `open`, `close`, `focus-trap`, `apply-inert`, `lock-scroll`, `snapshot` |
|
|
80
|
+
|
|
81
|
+
The profile defines focus trap, focus return, Escape topmost rule, background
|
|
82
|
+
inert, balanced scroll lock, and a document-wide portal layer. RMT describes
|
|
83
|
+
these rules shell-first through `tests/fixtures/rmt-overlay-interaction-ux.rmt`;
|
|
84
|
+
the RMT kernel still imports no XTend types.
|
|
85
|
+
|
|
86
|
+
The portal layer is document-wide: when a modal with `overlay` is opened inside
|
|
87
|
+
nested app shells, XRouter routes, or transformed layout containers, the host is
|
|
88
|
+
temporarily parked under `document.body` and returned to its original position
|
|
89
|
+
after closing. Slot capability remains intact while overlay and blur are no
|
|
90
|
+
longer limited to the local `main` or route container.
|
|
91
|
+
|
|
92
|
+
## ECH-WP-06 Overlay Parity
|
|
93
|
+
|
|
94
|
+
`x-modal` exposes `surface`, `backdrop`, `close`, and `content` as shared
|
|
95
|
+
overlay parts. `overlay` remains as an alias for `backdrop`. Host themes can
|
|
96
|
+
control backdrop, surface, text, elevation, radius, z-index, action text, close
|
|
97
|
+
surface, and focus ring through `--xtend-overlay-*`, `--modal-*`, or
|
|
98
|
+
`--xmodal-*` tokens.
|
|
99
|
+
|
|
100
|
+
`x-modal` is modal: focus trap, background inert, scroll lock, Escape, and
|
|
101
|
+
focus return are part of the default path. A modal without `overlay` keeps the
|
|
102
|
+
surface parts but renders no visual backdrop.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# xplayer - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xlightbox](./xlightbox.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-player>` is a versatile media player component for audio and video. It
|
|
8
|
+
supports playlists, custom controls, theming, state integration, download,
|
|
9
|
+
media chooser, and fullscreen.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Audio/video playback
|
|
16
|
+
- Playlists and media controls
|
|
17
|
+
- Download button (optional)
|
|
18
|
+
- Media chooser (source selection)
|
|
19
|
+
- Poster image for videos
|
|
20
|
+
- Fullscreen mode
|
|
21
|
+
- State integration through xstate
|
|
22
|
+
- Theming through CSS custom properties
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<x-player src="song.mp3" type="audio"></x-player>
|
|
30
|
+
<x-player src="video.mp4" poster="cover.jpg" type="video" title="Demo Video" downloadable="true"></x-player>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Attributes
|
|
36
|
+
|
|
37
|
+
| Attribute | Type | Description |
|
|
38
|
+
|-----------|------|-------------|
|
|
39
|
+
| `src` | String | media URL (audio/video) |
|
|
40
|
+
| `poster` | String | preview image for video |
|
|
41
|
+
| `type` | String | media type (`audio` or `video`, default: `video`) |
|
|
42
|
+
| `media-chooser` | String | `true` for source selection dropdown |
|
|
43
|
+
| `downloadable` | String | `true` for download button |
|
|
44
|
+
| `autoplay` | Boolean | autoplay on load |
|
|
45
|
+
| `title` | String | title displayed in the player |
|
|
46
|
+
| `height` | String | height, for example `360` |
|
|
47
|
+
| `width` | String | width, for example `640` |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Events
|
|
52
|
+
|
|
53
|
+
| Event | Description |
|
|
54
|
+
|-------|-------------|
|
|
55
|
+
| `xplayer-play` | playback started, detail: `{ currentTime }` |
|
|
56
|
+
| `xplayer-pause` | playback paused, detail: `{ currentTime }` |
|
|
57
|
+
| `xplayer-mute` | mute changed, detail: `{ muted }` |
|
|
58
|
+
| `xplayer-volume` | volume changed, detail: `{ volume }` |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## API
|
|
63
|
+
|
|
64
|
+
- **Play:** `element.play()`
|
|
65
|
+
- **Pause:** `element.pause()`
|
|
66
|
+
- **State integration:** automatic through xstate
|
|
67
|
+
- **Fullscreen:** `element.requestFullscreen()`
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Example: Dynamic JS
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
const player = document.createElement('x-player');
|
|
75
|
+
player.setAttribute('src', 'song.mp3');
|
|
76
|
+
document.body.appendChild(player);
|
|
77
|
+
player.play();
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Styling and Theming
|
|
83
|
+
|
|
84
|
+
```css
|
|
85
|
+
x-player {
|
|
86
|
+
--primary-color: #4fc3f7;
|
|
87
|
+
--border-radius: 8px;
|
|
88
|
+
/* See CSS for more custom properties */
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Accessibility
|
|
95
|
+
|
|
96
|
+
- Semantic HTML, ARIA
|
|
97
|
+
- Keyboard operation
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
*Last updated: July 16, 2025*
|
|
102
|
+
|
|
103
|
+
## Layout Display Media UX Profile
|
|
104
|
+
|
|
105
|
+
Starting with `WP-E11-12`, `x-player` exposes the profile
|
|
106
|
+
`xtend.component.layout-display-media-ux-profile.v1`. Media can therefore be
|
|
107
|
+
rendered shell-first and scheduled only later through `media.lazy.load` or
|
|
108
|
+
`media.playback.user`. The state key is `xplayer-state-<id>`.
|
|
109
|
+
|
|
110
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
111
|
+
- Schedule: `media.lazy.load`
|
|
112
|
+
- Events: `xplayer-play`, `xplayer-pause`, `xplayer-fullscreen`, `xplayer-pip`
|
|
113
|
+
- Snapshot: `snapshot()`
|
|
114
|
+
- CSS parts: `root`, `media`, `controls`, `progress`, `overlay`
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# xpopover - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xtooltip](./xtooltip.md), [xdrawer](./xdrawer.md), [xdialog](./xdialog.md), [xmodal](./xmodal.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-popover>` is an interactive anchored overlay from `WP-E10-11`. It is useful
|
|
8
|
+
for filters, menus, toolbars, and contextual actions, can operate modally, and
|
|
9
|
+
remains describable as a Custom Element through RMT.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<x-popover id="filters" placement="bottom" modal label="Filter options">
|
|
15
|
+
<button slot="trigger" type="button">Open filters</button>
|
|
16
|
+
<p>Filter content can be mounted by RMT.</p>
|
|
17
|
+
<button slot="actions" type="button">Apply</button>
|
|
18
|
+
</x-popover>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Attributes
|
|
22
|
+
|
|
23
|
+
| Attribute | Type | Description |
|
|
24
|
+
|-----------|------|-------------|
|
|
25
|
+
| `open` | Boolean | opens the popover in controlled mode |
|
|
26
|
+
| `placement` | String | `top`, `right`, `bottom`, or `left` |
|
|
27
|
+
| `modal` | Boolean | activates focus trap and `aria-modal` |
|
|
28
|
+
| `anchor` | String | prepared anchor mapping for RMT authoring |
|
|
29
|
+
| `label` | String | accessible name for the dialog |
|
|
30
|
+
|
|
31
|
+
## Events
|
|
32
|
+
|
|
33
|
+
| Event | Detail |
|
|
34
|
+
|-------|--------|
|
|
35
|
+
| `popover-opened` | `{ id, open, source, placement, modal }` |
|
|
36
|
+
| `popover-closed` | `{ id, open, source, placement, modal }` |
|
|
37
|
+
|
|
38
|
+
## API
|
|
39
|
+
|
|
40
|
+
- `show()`
|
|
41
|
+
- `hide()`
|
|
42
|
+
- `toggle()`
|
|
43
|
+
|
|
44
|
+
## State, RMT, and Fabric
|
|
45
|
+
|
|
46
|
+
`<x-popover>` writes to `xpopover-open-<id>`. RMT uses
|
|
47
|
+
`xtend.rmt.component-contract.v1`, `dom_descriptor` templates, and can bind
|
|
48
|
+
events as `dom-event-to-rmt-command`. Interactive UIs use the `user-blocking`
|
|
49
|
+
lane; the kernel boundary remains `no-rmt-kernel-import-of-xtend-types`.
|
|
50
|
+
|
|
51
|
+
## A11y and Performance
|
|
52
|
+
|
|
53
|
+
The popover uses `role="dialog"`, `aria-expanded`, `aria-controls`, optional
|
|
54
|
+
`aria-modal`, and focus return. `Escape`, outside click, and `focus-return` are
|
|
55
|
+
required signals. The performance profile is
|
|
56
|
+
`xtend.performance.component-profile.v1` with `budgetClass: 'overlay-medium'`,
|
|
57
|
+
`lane: 'user-blocking'`, and `hydrationPolicy: 'visible'`.
|
|
58
|
+
|
|
59
|
+
## Overlay Interaction UX Profile
|
|
60
|
+
|
|
61
|
+
Since `WP-E11-11`, `<x-popover>` declares the runtime profile
|
|
62
|
+
`xtend.component.overlay-interaction-ux-profile.v1` through
|
|
63
|
+
`xtendOverlayInteractionUxProfile`.
|
|
64
|
+
|
|
65
|
+
| Field | Value |
|
|
66
|
+
|-------|-------|
|
|
67
|
+
| Family | `popover` |
|
|
68
|
+
| State Key | `xpopover-open-<id>` |
|
|
69
|
+
| Schedule | `overlay.position.update` |
|
|
70
|
+
| Commands | `show`, `hide`, `toggle`, `focus-trap`, `snapshot` |
|
|
71
|
+
|
|
72
|
+
The profile separates the lightweight anchor layer from optional modal
|
|
73
|
+
operation. Focus trap is activated only with `modal`; Escape closes the topmost
|
|
74
|
+
popover, and outside click remains documented as intentional dismissal
|
|
75
|
+
behavior.
|
|
76
|
+
|
|
77
|
+
## ECH-WP-06 Overlay Parity
|
|
78
|
+
|
|
79
|
+
`x-popover` exposes `surface`, `backdrop`, `close`, and `content` as shared
|
|
80
|
+
overlay parts. The backdrop is visible only with `modal`; the close button is
|
|
81
|
+
tokenized and can be adapted to corporate patterns through
|
|
82
|
+
`--popover-close-display` and `--xpopover-close-*`.
|
|
83
|
+
|
|
84
|
+
The default remains non-modal: no inert and no scroll lock. With `modal`, the
|
|
85
|
+
popover activates backdrop, focus trap, Escape, and focus return. Surface,
|
|
86
|
+
text, border, elevation, radius, backdrop, and z-index use
|
|
87
|
+
`--xtend-overlay-*`, `--popover-*`, or `--xpopover-*` tokens.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# xprogress - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xstatus](./xstatus.md), [xspinner](./xspinner.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-progress>` is the RMT-first progress control from `WP-E10-10`. It visualizes
|
|
8
|
+
determinate and indeterminate progress, reports progress events to
|
|
9
|
+
Fabric/telemetry, and can be used in shell-first RMT templates for hydration,
|
|
10
|
+
upload, route, or worker tasks.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<x-progress id="route-progress" value="64" max="100" status="Hydrating route" busy>
|
|
16
|
+
<span slot="label">Route hydration</span>
|
|
17
|
+
</x-progress>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Attributes
|
|
21
|
+
|
|
22
|
+
| Attribute | Type | Description |
|
|
23
|
+
|-----------|------|-------------|
|
|
24
|
+
| `value` | Number | current value |
|
|
25
|
+
| `max` | Number | maximum value |
|
|
26
|
+
| `label` | String | label without slot |
|
|
27
|
+
| `status` | String | status message for screen readers and UI |
|
|
28
|
+
| `indeterminate` | Boolean | activates indeterminate progress |
|
|
29
|
+
| `busy` | Boolean | sets `aria-busy` |
|
|
30
|
+
|
|
31
|
+
## Events
|
|
32
|
+
|
|
33
|
+
| Event | Detail |
|
|
34
|
+
|-------|--------|
|
|
35
|
+
| `progress-changed` | `{ value, max, percent, source: 'x-progress' }` |
|
|
36
|
+
| `progress-complete` | `{ value, max, percent: 100, source: 'x-progress' }` |
|
|
37
|
+
|
|
38
|
+
## API
|
|
39
|
+
|
|
40
|
+
- `element.value`
|
|
41
|
+
- `element.max`
|
|
42
|
+
- `element.percent`
|
|
43
|
+
- `element.setProgress(value)`
|
|
44
|
+
- `element.complete()`
|
|
45
|
+
- `element.reset()`
|
|
46
|
+
|
|
47
|
+
## State, RMT, and Fabric
|
|
48
|
+
|
|
49
|
+
`<x-progress>` writes to `xprogress-value-<id>` and is prepared for
|
|
50
|
+
`feedback.progress.update`. RMT metadata uses
|
|
51
|
+
`xtend.rmt.component-contract.v1`, `adapter: 'xtend.component'`, and
|
|
52
|
+
`kernelBoundary: 'no-rmt-kernel-import-of-xtend-types'`. RMT can therefore
|
|
53
|
+
treat progress as scheduled UI feedback while XTend renders the Web Component.
|
|
54
|
+
|
|
55
|
+
## A11y and Performance
|
|
56
|
+
|
|
57
|
+
The control uses `role="progressbar"`, `aria-valuenow`, `aria-valuemax`,
|
|
58
|
+
`aria-valuetext`, `aria-busy`, and a polite status region. The performance
|
|
59
|
+
profile is `xtend.performance.component-profile.v1` with
|
|
60
|
+
`budgetClass: 'feedback-small'`, `lane: 'background'`, and
|
|
61
|
+
`hydrationPolicy: 'visible'`.
|
|
62
|
+
|
|
63
|
+
## Feedback Status UX from WP-E11-09
|
|
64
|
+
|
|
65
|
+
`<x-progress>` exposes `xtendFeedbackStatusUxProfile` with
|
|
66
|
+
`xtend.component.feedback-status-ux-profile.v1`. The profile describes progress
|
|
67
|
+
as scheduled feedback with `progress-changed`, `progress-complete`,
|
|
68
|
+
`xprogress-value-<id>`, `feedback.progress.update`, Fabric lane `background`,
|
|
69
|
+
a11y lane `a11y`, and RMT shell authoring.
|
|
70
|
+
|
|
71
|
+
Determinate and indeterminate progress states must not be communicated only
|
|
72
|
+
through color or animation. `aria-valuetext`, the status region, and
|
|
73
|
+
reduced-motion rules therefore remain part of the public UX surface.
|