@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,82 @@
|
|
|
1
|
+
# xmodal - XTend Komponente
|
|
2
|
+
|
|
3
|
+
## Uebersicht
|
|
4
|
+
|
|
5
|
+
`<x-modal>` ist die state-getriebene Modal-Komponente fuer XTend. Sie wird vor allem ueber `window.XModal.show()` verwendet, kann aber auch direkt im DOM mit Attributen und Slots betrieben werden.
|
|
6
|
+
|
|
7
|
+
## Verwendung
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<x-modal title="Hinweis" open>
|
|
11
|
+
<p>Modal-Inhalt</p>
|
|
12
|
+
</x-modal>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Attribute
|
|
16
|
+
|
|
17
|
+
| Attribut | Typ | Beschreibung |
|
|
18
|
+
|----------|-----|--------------|
|
|
19
|
+
| `open` | boolean | Modal ist geoeffnet |
|
|
20
|
+
| `overlay` | boolean | zeigt einen Overlay-Hintergrund |
|
|
21
|
+
| `title` | string | Titel des Modals |
|
|
22
|
+
| `content` | string | textueller Inhalt |
|
|
23
|
+
| `actions` | string | JSON-Array fuer Action-Buttons |
|
|
24
|
+
|
|
25
|
+
## Slots
|
|
26
|
+
|
|
27
|
+
| Slot | Beschreibung |
|
|
28
|
+
|------|--------------|
|
|
29
|
+
| default | Hauptinhalt des Modals |
|
|
30
|
+
| `actions` | optionaler Action-Bereich |
|
|
31
|
+
|
|
32
|
+
## Events
|
|
33
|
+
|
|
34
|
+
| Event | Beschreibung |
|
|
35
|
+
|-------|--------------|
|
|
36
|
+
| `modal-opened` | nach erfolgreichem Oeffnen |
|
|
37
|
+
| `modal-closed` | nach erfolgreichem Schliessen |
|
|
38
|
+
| `modal-action` | wenn ein konfigurierte Action ausgewaehlt wird |
|
|
39
|
+
|
|
40
|
+
## API
|
|
41
|
+
|
|
42
|
+
- `element.open()`
|
|
43
|
+
- `element.close()`
|
|
44
|
+
|
|
45
|
+
Open-State wird ueber dieselben Pfade gefuehrt:
|
|
46
|
+
|
|
47
|
+
- `xtend.component.x-modal.<id>.open`
|
|
48
|
+
- `modal-open-<id>`
|
|
49
|
+
|
|
50
|
+
## Runtime-Contract
|
|
51
|
+
|
|
52
|
+
- API-gemanagte Modals lesen Titel, Inhalt und Aktionen aus `xstate.get('ui').modals`
|
|
53
|
+
- ESC, Overlay-Klick und Close-Button schreiben den Open-State zurueck
|
|
54
|
+
- API-gemanagte Modals entfernen sich nach dem Schliessen aus `ui.modals` und aus dem DOM
|
|
55
|
+
- direkt eingebettete Overlay-Modals werden waehrend `open` in eine `document.body` Portal-Schicht gehoben, damit Blur und Overlay den gesamten Viewport abdecken
|
|
56
|
+
|
|
57
|
+
## Hinweise
|
|
58
|
+
|
|
59
|
+
- `modal-action` enthaelt die ausgewaehlte Action-Definition im Event-Detail
|
|
60
|
+
- fuer API-gemanagte Modals ist `window.XModal.show()` der bevorzugte Einstieg
|
|
61
|
+
- der Focus-Ruecksprung zum zuletzt aktiven Element ist Teil des Standardverhaltens
|
|
62
|
+
|
|
63
|
+
## Overlay Interaction UX Profil
|
|
64
|
+
|
|
65
|
+
Seit `WP-E11-11` deklariert `<x-modal>` das Runtime-Profil `xtend.component.overlay-interaction-ux-profile.v1` ueber `xtendOverlayInteractionUxProfile`.
|
|
66
|
+
|
|
67
|
+
| Feld | Wert |
|
|
68
|
+
|------|------|
|
|
69
|
+
| Family | `modal-dialog` |
|
|
70
|
+
| State Key | `modal-open-<id>` |
|
|
71
|
+
| Schedule | `overlay.stack.open` |
|
|
72
|
+
| Commands | `open`, `close`, `focus-trap`, `apply-inert`, `lock-scroll`, `snapshot` |
|
|
73
|
+
|
|
74
|
+
Das Profil legt Focus Trap, Rueckfokus, Escape-Topmost-Regel, Background-Inert, balanced Scroll Lock und eine dokumentweite Portal-Schicht fest. RMT beschreibt diese Regeln shell-first ueber `tests/fixtures/rmt-overlay-interaction-ux.rmt`; der RMT-Kernel importiert weiterhin keine XTend-Typen.
|
|
75
|
+
|
|
76
|
+
Die Portal-Schicht ist dokumentweit: Wenn ein Modal mit `overlay` in verschachtelten App-Shells, XRouter-Routen oder transformierten Layout-Containern geoeffnet wird, wird der Host temporaer unter `document.body` geparkt und nach dem Schliessen an seine urspruengliche Position zurueckgesetzt. Dadurch bleibt die Slot-Faehigkeit erhalten, waehrend Overlay und Blur nicht auf den lokalen `main`- oder Route-Container begrenzt sind.
|
|
77
|
+
|
|
78
|
+
## ECH-WP-06 Overlay-Paritaet
|
|
79
|
+
|
|
80
|
+
`x-modal` expose `surface`, `backdrop`, `close` und `content` als gemeinsame Overlay-Parts. `overlay` bleibt als Alias fuer `backdrop` erhalten. Host-Themes koennen Backdrop, Surface, Text, Elevation, Radius, Z-Index, Action-Text, Close-Flaeche und Focus Ring ueber `--xtend-overlay-*`, `--modal-*` oder `--xmodal-*` Tokens steuern.
|
|
81
|
+
|
|
82
|
+
`x-modal` ist modal: Focus Trap, Background-Inert, Scroll Lock, Escape und Rueckfokus sind Teil des Standardpfads. Ein Modal ohne `overlay` behält die Surface-Parts, rendert aber keinen visuellen Backdrop.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# xplayer – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xlightbox](./xlightbox.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`<x-player>` ist eine vielseitige Media-Player-Komponente für Audio und Video. Sie unterstützt Playlists, Custom Controls, Theming, State-Integration, Download, Media-Chooser und Vollbild.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Wiedergabe von Audio/Video
|
|
13
|
+
- Playlists und Media-Controls
|
|
14
|
+
- Download-Button (optional)
|
|
15
|
+
- Media-Chooser (Quellenauswahl)
|
|
16
|
+
- Poster-Bild für Videos
|
|
17
|
+
- Vollbildmodus
|
|
18
|
+
- State-Integration via xstate
|
|
19
|
+
- Theming via CSS Custom Properties
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Verwendung
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<x-player src="song.mp3" type="audio"></x-player>
|
|
27
|
+
<x-player src="video.mp4" poster="cover.jpg" type="video" title="Demo Video" downloadable="true"></x-player>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Attribute
|
|
33
|
+
| Attribut | Typ | Beschreibung |
|
|
34
|
+
|------------------|---------|----------------------------------------------------------|
|
|
35
|
+
| `src` | String | Media-URL (Audio/Video) |
|
|
36
|
+
| `poster` | String | Vorschaubild für Video |
|
|
37
|
+
| `type` | String | Medientyp (`audio` oder `video`, Standard: `video`) |
|
|
38
|
+
| `media-chooser` | String | `true` für Quellenauswahl (Dropdown) |
|
|
39
|
+
| `downloadable` | String | `true` für Download-Button |
|
|
40
|
+
| `autoplay` | Boolean | Autoplay beim Laden |
|
|
41
|
+
| `title` | String | Titelanzeige im Player |
|
|
42
|
+
| `height` | String | Höhe (z.B. `360`) |
|
|
43
|
+
| `width` | String | Breite (z.B. `640`) |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Events
|
|
48
|
+
| Event | Beschreibung |
|
|
49
|
+
|-------------------|----------------------------------------------|
|
|
50
|
+
| `xplayer-play` | Wiedergabe gestartet, Detail: `{ currentTime }` |
|
|
51
|
+
| `xplayer-pause` | Wiedergabe pausiert, Detail: `{ currentTime }` |
|
|
52
|
+
| `xplayer-mute` | Stummschaltung geändert, Detail: `{ muted }` |
|
|
53
|
+
| `xplayer-volume` | Lautstärke geändert, Detail: `{ volume }` |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## API
|
|
58
|
+
- **Abspielen:** `element.play()`
|
|
59
|
+
- **Pausieren:** `element.pause()`
|
|
60
|
+
- **State-Integration:** Automatisch via xstate
|
|
61
|
+
- **Vollbild:** `element.requestFullscreen()`
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Beispiel: Dynamisch per JS
|
|
66
|
+
|
|
67
|
+
```js
|
|
68
|
+
const player = document.createElement('x-player');
|
|
69
|
+
player.setAttribute('src', 'song.mp3');
|
|
70
|
+
document.body.appendChild(player);
|
|
71
|
+
player.play();
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Styling & Theming
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
x-player {
|
|
80
|
+
--primary-color: #4fc3f7;
|
|
81
|
+
--border-radius: 8px;
|
|
82
|
+
/* Weitere Custom Properties siehe CSS */
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Accessibility
|
|
89
|
+
- Semantisches HTML, ARIA
|
|
90
|
+
- Tastaturbedienung
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
*Letzte Aktualisierung: 16. Juli 2025*
|
|
95
|
+
|
|
96
|
+
## Layout Display Media UX Profil
|
|
97
|
+
|
|
98
|
+
`x-player` stellt ab `WP-E11-12` das Profil `xtend.component.layout-display-media-ux-profile.v1` bereit. Media kann dadurch shell-first gerendert und erst ueber `media.lazy.load` bzw. `media.playback.user` geplant werden. Der State-Key lautet `xplayer-state-<id>`.
|
|
99
|
+
|
|
100
|
+
- Profil-Getter: `xtendLayoutDisplayMediaUxProfile`
|
|
101
|
+
- Schedule: `media.lazy.load`
|
|
102
|
+
- Events: `xplayer-play`, `xplayer-pause`, `xplayer-fullscreen`, `xplayer-pip`
|
|
103
|
+
- Snapshot: `snapshot()`
|
|
104
|
+
- CSS Parts: `root`, `media`, `controls`, `progress`, `overlay`
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# xpopover - XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xtooltip](./xtooltip.md), [xdrawer](./xdrawer.md), [xdialog](./xdialog.md), [xmodal](./xmodal.md)
|
|
4
|
+
|
|
5
|
+
## Uebersicht
|
|
6
|
+
|
|
7
|
+
`<x-popover>` ist ein interaktives, verankertes Overlay aus `WP-E10-11`. Es eignet sich fuer Filter, Menues, Toolbars und kontextuelle Aktionen, kann modal betrieben werden und bleibt als Custom Element ueber RMT beschreibbar.
|
|
8
|
+
|
|
9
|
+
## Verwendung
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-popover id="filters" placement="bottom" modal label="Filter options">
|
|
13
|
+
<button slot="trigger" type="button">Open filters</button>
|
|
14
|
+
<p>Filter content can be mounted by RMT.</p>
|
|
15
|
+
<button slot="actions" type="button">Apply</button>
|
|
16
|
+
</x-popover>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Attribute
|
|
20
|
+
|
|
21
|
+
| Attribut | Typ | Beschreibung |
|
|
22
|
+
|----------|-----|--------------|
|
|
23
|
+
| `open` | Boolean | oeffnet das Popover kontrolliert |
|
|
24
|
+
| `placement` | String | `top`, `right`, `bottom` oder `left` |
|
|
25
|
+
| `modal` | Boolean | aktiviert Focus Trap und `aria-modal` |
|
|
26
|
+
| `anchor` | String | vorbereitetes Anchor-Mapping fuer RMT Authoring |
|
|
27
|
+
| `label` | String | zugaenglicher Name fuer den Dialog |
|
|
28
|
+
|
|
29
|
+
## Events
|
|
30
|
+
|
|
31
|
+
| Event | Detail |
|
|
32
|
+
|-------|--------|
|
|
33
|
+
| `popover-opened` | `{ id, open, source, placement, modal }` |
|
|
34
|
+
| `popover-closed` | `{ id, open, source, placement, modal }` |
|
|
35
|
+
|
|
36
|
+
## API
|
|
37
|
+
|
|
38
|
+
- `show()`
|
|
39
|
+
- `hide()`
|
|
40
|
+
- `toggle()`
|
|
41
|
+
|
|
42
|
+
## State, RMT und Fabric
|
|
43
|
+
|
|
44
|
+
`<x-popover>` schreibt nach `xpopover-open-<id>`. RMT nutzt `xtend.rmt.component-contract.v1`, `dom_descriptor` Templates und kann Events als `dom-event-to-rmt-command` binden. Fuer interaktive UIs ist die Lane `user-blocking`; der Kernel Boundary bleibt `no-rmt-kernel-import-of-xtend-types`.
|
|
45
|
+
|
|
46
|
+
## A11y und Performance
|
|
47
|
+
|
|
48
|
+
Das Popover nutzt `role="dialog"`, `aria-expanded`, `aria-controls`, optional `aria-modal` und Focus Return. `Escape`, Outside Click und `focus-return` sind Pflichtsignale. Das Performance-Profil ist `xtend.performance.component-profile.v1` mit `budgetClass: 'overlay-medium'`, `lane: 'user-blocking'` und `hydrationPolicy: 'visible'`.
|
|
49
|
+
|
|
50
|
+
## Overlay Interaction UX Profil
|
|
51
|
+
|
|
52
|
+
Seit `WP-E11-11` deklariert `<x-popover>` das Runtime-Profil `xtend.component.overlay-interaction-ux-profile.v1` ueber `xtendOverlayInteractionUxProfile`.
|
|
53
|
+
|
|
54
|
+
| Feld | Wert |
|
|
55
|
+
|------|------|
|
|
56
|
+
| Family | `popover` |
|
|
57
|
+
| State Key | `xpopover-open-<id>` |
|
|
58
|
+
| Schedule | `overlay.position.update` |
|
|
59
|
+
| Commands | `show`, `hide`, `toggle`, `focus-trap`, `snapshot` |
|
|
60
|
+
|
|
61
|
+
Das Profil trennt die leichte Anchor-Schicht vom modal optionalen Betrieb. Focus Trap wird nur bei `modal` aktiviert, Escape schliesst das oberste Popover und Outside Click bleibt als bewusstes Dismiss-Verhalten dokumentiert.
|
|
62
|
+
|
|
63
|
+
## ECH-WP-06 Overlay-Paritaet
|
|
64
|
+
|
|
65
|
+
`x-popover` expose `surface`, `backdrop`, `close` und `content` als gemeinsame Overlay-Parts. Der Backdrop wird nur bei `modal` sichtbar; der Close-Button ist tokenisiert und kann ueber `--popover-close-display` sowie `--xpopover-close-*` an Corporate-Patterns angepasst werden.
|
|
66
|
+
|
|
67
|
+
Der Default bleibt nicht-modal: kein Inert und kein Scroll Lock. Mit `modal` aktiviert das Popover Backdrop, Focus Trap, Escape und Rueckfokus. Surface, Text, Border, Elevation, Radius, Backdrop und Z-Index laufen ueber `--xtend-overlay-*`, `--popover-*` oder `--xpopover-*` Tokens.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# xprogress - XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xstatus](./xstatus.md), [xspinner](./xspinner.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Uebersicht
|
|
6
|
+
|
|
7
|
+
`<x-progress>` ist das RMT-first Progress-Control aus `WP-E10-10`. Es visualisiert determinate und indeterminate Fortschritte, meldet Fortschrittsereignisse an Fabric/Telemetry und kann in Shell-first RMT-Templates fuer Hydration, Upload, Route- oder Worker-Aufgaben eingesetzt werden.
|
|
8
|
+
|
|
9
|
+
## Verwendung
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-progress id="route-progress" value="64" max="100" status="Hydrating route" busy>
|
|
13
|
+
<span slot="label">Route hydration</span>
|
|
14
|
+
</x-progress>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Attribute
|
|
18
|
+
|
|
19
|
+
| Attribut | Typ | Beschreibung |
|
|
20
|
+
|----------|-----|--------------|
|
|
21
|
+
| `value` | Number | aktueller Wert |
|
|
22
|
+
| `max` | Number | Maximalwert |
|
|
23
|
+
| `label` | String | Label ohne Slot |
|
|
24
|
+
| `status` | String | Statusmeldung fuer Screenreader und UI |
|
|
25
|
+
| `indeterminate` | Boolean | aktiviert unbestimmten Fortschritt |
|
|
26
|
+
| `busy` | Boolean | setzt `aria-busy` |
|
|
27
|
+
|
|
28
|
+
## Events
|
|
29
|
+
|
|
30
|
+
| Event | Detail |
|
|
31
|
+
|-------|--------|
|
|
32
|
+
| `progress-changed` | `{ value, max, percent, source: 'x-progress' }` |
|
|
33
|
+
| `progress-complete` | `{ value, max, percent: 100, source: 'x-progress' }` |
|
|
34
|
+
|
|
35
|
+
## API
|
|
36
|
+
|
|
37
|
+
- `element.value`
|
|
38
|
+
- `element.max`
|
|
39
|
+
- `element.percent`
|
|
40
|
+
- `element.setProgress(value)`
|
|
41
|
+
- `element.complete()`
|
|
42
|
+
- `element.reset()`
|
|
43
|
+
|
|
44
|
+
## State, RMT und Fabric
|
|
45
|
+
|
|
46
|
+
`<x-progress>` schreibt nach `xprogress-value-<id>` und ist fuer `feedback.progress.update` vorbereitet. Die RMT-Metadaten nutzen `xtend.rmt.component-contract.v1`, `adapter: 'xtend.component'` und `kernelBoundary: 'no-rmt-kernel-import-of-xtend-types'`. Dadurch kann RMT Progress als scheduled UI-Feedback behandeln, waehrend XTend die Web Component rendert.
|
|
47
|
+
|
|
48
|
+
## A11y und Performance
|
|
49
|
+
|
|
50
|
+
Das Control nutzt `role="progressbar"`, `aria-valuenow`, `aria-valuemax`, `aria-valuetext`, `aria-busy` und eine polite Statusregion. Das Performance-Profil ist `xtend.performance.component-profile.v1` mit `budgetClass: 'feedback-small'`, `lane: 'background'` und `hydrationPolicy: 'visible'`.
|
|
51
|
+
|
|
52
|
+
## Feedback Status UX ab WP-E11-09
|
|
53
|
+
|
|
54
|
+
`<x-progress>` stellt `xtendFeedbackStatusUxProfile` mit `xtend.component.feedback-status-ux-profile.v1` bereit. Das Profil beschreibt Progress als scheduled Feedback mit `progress-changed`, `progress-complete`, `xprogress-value-<id>`, `feedback.progress.update`, Fabric-Lane `background`, A11y-Lane `a11y` und RMT Shell Authoring.
|
|
55
|
+
|
|
56
|
+
Determinate und indeterminate Progress-Zustaende duerfen nicht nur ueber Farbe oder Animation vermittelt werden. `aria-valuetext`, die Statusregion und Reduced-Motion-Regeln bleiben deshalb Teil der Public UX-Oberflaeche.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# xradio – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xform](./xform.md), [xinput](./xinput.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Uebersicht
|
|
6
|
+
|
|
7
|
+
`<x-radio>` vervollstaendigt die TypeScript-first Selection Controls aus `WP-E10-09`. Die Komponente koordiniert Gruppen ueber `name`, unterstuetzt Keyboard-Navigation und liefert RMT-, Fabric-, A11y- und Performance-Metadaten fuer RMT-first Apps.
|
|
8
|
+
|
|
9
|
+
## Verwendung
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-radio id="plan-starter" name="plan" value="starter">
|
|
13
|
+
<span slot="label">Starter</span>
|
|
14
|
+
</x-radio>
|
|
15
|
+
<x-radio id="plan-pro" name="plan" value="pro" checked>
|
|
16
|
+
<span slot="label">Pro</span>
|
|
17
|
+
</x-radio>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Attribute
|
|
21
|
+
|
|
22
|
+
| Attribut | Typ | Beschreibung |
|
|
23
|
+
|----------|-----|--------------|
|
|
24
|
+
| `name` | String | Gruppen- und Formularname |
|
|
25
|
+
| `value` | String | Wert des Radio-Controls |
|
|
26
|
+
| `checked` | Boolean | aktueller Auswahlzustand |
|
|
27
|
+
| `required` | Boolean | aktiviert Validierung |
|
|
28
|
+
| `disabled` | Boolean | deaktiviert das Control |
|
|
29
|
+
| `label` | String | ARIA-/Textlabel ohne Slot |
|
|
30
|
+
|
|
31
|
+
## Slots
|
|
32
|
+
|
|
33
|
+
| Slot | Zweck |
|
|
34
|
+
|------|-------|
|
|
35
|
+
| `label` | sichtbares Label |
|
|
36
|
+
| `hint` | zusaetzlicher Hinweistext |
|
|
37
|
+
| `error` | Validierungsfehler |
|
|
38
|
+
|
|
39
|
+
## Events
|
|
40
|
+
|
|
41
|
+
| Event | Detail |
|
|
42
|
+
|-------|--------|
|
|
43
|
+
| `radio-changed` | `{ checked, value, name, source: 'x-radio' }` |
|
|
44
|
+
| `radio-invalid` | `{ checked, value, name, message, source: 'x-radio' }` |
|
|
45
|
+
|
|
46
|
+
## API
|
|
47
|
+
|
|
48
|
+
- `element.checked`
|
|
49
|
+
- `element.value`
|
|
50
|
+
- `element.name`
|
|
51
|
+
- `element.check()`
|
|
52
|
+
- `element.checkValidity()`
|
|
53
|
+
- `element.reportValidity()`
|
|
54
|
+
- `element.validate()`
|
|
55
|
+
- `element.reset()`
|
|
56
|
+
- `element.focus()`
|
|
57
|
+
|
|
58
|
+
## State, RMT und Fabric
|
|
59
|
+
|
|
60
|
+
`<x-radio>` schreibt den Einzelzustand nach `xradio-checked-<id>` und den Gruppenwert nach `xradio-value-<name>`. Die RMT-Metadaten nutzen `xtend.rmt.component-contract.v1`; RMT kann eine Radio-Gruppe als DOM-Descriptor templaten und die UI ueber `xtend.component` schedulen, ohne XTend in den RMT-Kernel zu importieren.
|
|
61
|
+
|
|
62
|
+
## A11y und Performance
|
|
63
|
+
|
|
64
|
+
Die Komponente nutzt `role="radio"`, `aria-checked`, `aria-describedby`, Space-Aktivierung sowie Arrow-Key-Navigation innerhalb der Gruppe. Das Performance-Profil ist `xtend.performance.component-profile.v1` mit `budgetClass: 'interactive-small'`, `lane: 'user-blocking'` und `hydrationPolicy: 'visible'`.
|
|
65
|
+
|
|
66
|
+
## Form Controls UX ab WP-E11-08
|
|
67
|
+
|
|
68
|
+
`<x-radio>` stellt `xtendFormControlUxProfile` mit `xtend.component.form-control-ux-profile.v1` bereit. Das Profil verbindet Label, Hint, Error, `radio-changed`, `radio-invalid`, `xradio-value-<name>`, `ui.user-blocking.input`, Fabric-Lane `user-blocking` und RMT Shell Authoring.
|
|
69
|
+
|
|
70
|
+
## ECH-WP-08 Form Theme/A11y Hardening
|
|
71
|
+
|
|
72
|
+
`signatureDesign`: Enterprise-Radio-Option mit robuster nativer Fokusfuehrung, gruppensicherer Validierung und separat themebarem Selection-Icon.
|
|
73
|
+
|
|
74
|
+
| Token | Zweck |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| `--xtend-form-text` | Host-Textfarbe |
|
|
77
|
+
| `--xtend-form-control-surface` | Native Control-Flaeche |
|
|
78
|
+
| `--xtend-form-control-text` | Control-Text-Fallback |
|
|
79
|
+
| `--xtend-form-label-text` | Label |
|
|
80
|
+
| `--xtend-form-helper-text` | Helper |
|
|
81
|
+
| `--xtend-form-error-text` | Fehlertext |
|
|
82
|
+
| `--xtend-form-error-surface` | Fehlerflaeche |
|
|
83
|
+
| `--xtend-form-error-border` | Fehlerkante und Marker |
|
|
84
|
+
| `--xtend-form-focus-ring` | Focus-Outline |
|
|
85
|
+
| `--xtend-form-radius` | Radio-/Error-Radius |
|
|
86
|
+
| `--xtend-form-gap` | Label-/Helper-Abstand |
|
|
87
|
+
| `--xtend-form-font-family` | Form-Typografie |
|
|
88
|
+
| `--xtend-form-control-font-size` | Label-Schrift |
|
|
89
|
+
| `--xtend-form-helper-font-size` | Helper/Error-Schrift |
|
|
90
|
+
| `--xtend-form-icon-color` | Radio-Akzent |
|
|
91
|
+
|
|
92
|
+
Density-Profile: `comfortable`, `compact`, `dense`. Invalid ist nicht farb-only und wird per `aria-invalid` gespiegelt.
|
|
93
|
+
|
|
94
|
+
```css
|
|
95
|
+
[data-xtend-form-theme="enterprise-foreign"] x-radio {
|
|
96
|
+
--xtend-form-icon-color: #8f4f2a;
|
|
97
|
+
--xtend-form-label-text: #22312c;
|
|
98
|
+
--xtend-form-helper-text: #596861;
|
|
99
|
+
--xtend-form-error-text: #7d231c;
|
|
100
|
+
--xtend-form-error-border: #a64036;
|
|
101
|
+
--xtend-form-focus-ring: 3px solid #8f4f2a;
|
|
102
|
+
}
|
|
103
|
+
```
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# xrouter - XTend Komponente
|
|
2
|
+
|
|
3
|
+
## Uebersicht
|
|
4
|
+
|
|
5
|
+
`<x-router>` ist der clientseitige Router fuer XTend-SPAs. Er verarbeitet deklarative `<x-route>`-Definitionen, unterstuetzt Hash- und History-Mode und synchronisiert Navigation mit `xstate`.
|
|
6
|
+
|
|
7
|
+
## Kernverhalten
|
|
8
|
+
|
|
9
|
+
- nur direkte `<x-route>`-Kinder von `<x-router>` gelten als Top-Level-Routen
|
|
10
|
+
- Nested Routes werden ausschliesslich ueber direkte Kind-Routen der jeweiligen Elternroute verarbeitet
|
|
11
|
+
- Navigation kann deklarativ, per `x-link` oder programmatisch ueber `xstate.set('router-navigate', '/ziel')` angestossen werden
|
|
12
|
+
|
|
13
|
+
## Verwendung
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<x-router mode="history">
|
|
17
|
+
<x-route path="/" component="x-home" import="/components/xhome.js" title="Home"></x-route>
|
|
18
|
+
<x-route path="/docs" component="x-docs" import="/components/xdocs.js" title="Docs">
|
|
19
|
+
<x-route path=":topic" component="x-doc-topic" import="/components/xdoctopic.js" title-template="{{params.topic}} | XTend Docs"></x-route>
|
|
20
|
+
</x-route>
|
|
21
|
+
<x-route path="*" component="x-notfound" import="/components/xnotfound.js"></x-route>
|
|
22
|
+
</x-router>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Attribute
|
|
26
|
+
|
|
27
|
+
| Attribut | Typ | Beschreibung |
|
|
28
|
+
|----------|-----|--------------|
|
|
29
|
+
| `mode` | string | `hash` oder `history` |
|
|
30
|
+
| `routesrc` | string | optionale JSON-Quelle fuer Routen |
|
|
31
|
+
| `skeleton` | string | aktiviert einen nativen Route-Skeleton-Fallback waehrend Import, Definition und Hydration |
|
|
32
|
+
| `skeleton-lines` | number | Anzahl der Skeleton-Zeilen fuer den Route-Fallback |
|
|
33
|
+
| `skeleton-min-height` | string | stabile Mindesthoehe des Route-Fallbacks |
|
|
34
|
+
| `title-template` / `document-title-template` | string | globales Template fuer den Dokumenttitel, z.B. `{{title}} | App` |
|
|
35
|
+
| `title-prefix` / `title-suffix` | string | einfacher Prefix/Suffix fuer Routentitel ohne Template |
|
|
36
|
+
| `default-title` | string | Fallback, wenn eine Route keinen Titel definiert |
|
|
37
|
+
|
|
38
|
+
## Document Title Rewrite und SEO Meta
|
|
39
|
+
|
|
40
|
+
XRouter schreibt nach jedem erfolgreichen Route-Match den Browser-Titel und die SEO-Metatags `description` und `keywords`. Dadurch bleibt eine SPA nicht auf dem Initialtitel stehen, und RMT-Routen koennen Titelinformationen ohne XTend-spezifische Runtime-Imports liefern.
|
|
41
|
+
|
|
42
|
+
Direkte Route-Attribute:
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<x-router mode="hash" document-title-template="{{title}} | XTend">
|
|
46
|
+
<x-route
|
|
47
|
+
path="/components/x-router"
|
|
48
|
+
component="x-doc-page"
|
|
49
|
+
title="XRouter"
|
|
50
|
+
document-title="XRouter Routing und SEO"
|
|
51
|
+
meta-description="Routing, Seitentitel und RMT Route Metadata"
|
|
52
|
+
meta-keywords="xtend, xrouter, rmt">
|
|
53
|
+
</x-route>
|
|
54
|
+
</x-router>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
RMT kann dieselben Werte ueber Route-Records und `metadata` liefern:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"id": "settings",
|
|
62
|
+
"path": "/settings",
|
|
63
|
+
"router": "xtend.xrouter",
|
|
64
|
+
"component": "page.settings",
|
|
65
|
+
"metadata": {
|
|
66
|
+
"title": "Settings",
|
|
67
|
+
"documentTitle": "Settings | XTend App",
|
|
68
|
+
"metaDescription": "Einstellungen der XTend RMT App",
|
|
69
|
+
"seo": {
|
|
70
|
+
"keywords": ["xtend", "rmt", "routing"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Unterstuetzte Template-Variablen sind `{{title}}`, `{{routeTitle}}`, `{{documentTitle}}`, `{{path}}`, `{{routeId}}`, `{{component}}`, `{{params.name}}`, `{{query.name}}` und `{{metadata.name}}`. Bei Nested Routes gewinnt die Leaf-Route, damit Deep Links eigene Titel bekommen.
|
|
77
|
+
|
|
78
|
+
## Events
|
|
79
|
+
|
|
80
|
+
| Event | Beschreibung |
|
|
81
|
+
|-------|--------------|
|
|
82
|
+
| `xrouter-before-navigate` | cancelable, vor programmatischer Router-Navigation |
|
|
83
|
+
| `route-changed` | wird nach erfolgreicher Navigation emittiert |
|
|
84
|
+
| `routechange` | Legacy-Alias zu `route-changed` |
|
|
85
|
+
| `xrouter-after-navigate` | Legacy-Window-Event nach dem Rendern einer Route |
|
|
86
|
+
| `route-announced` | wird nach dem Schreiben der Route-Live-Region emittiert |
|
|
87
|
+
| `xrouter-skeleton-shown` / `xrouter-skeleton-hidden` | markieren den nativen Route-Skeleton-Lifecycle |
|
|
88
|
+
| `xrouter-route-hydrated` | wird nach Loader-basierter Hydration des gerenderten Route-Subtrees emittiert |
|
|
89
|
+
| `xrouter-title-updated` | wird nach dem Schreiben von `document.title` und SEO-Metatags emittiert |
|
|
90
|
+
| `xrouter-scroll-boundary-normalized` | wird emittiert, wenn der Router nach einem Route-Wechsel eine stale Scrollposition oder eine Deadzone unterhalb des Contentbereichs korrigiert |
|
|
91
|
+
| `xrouter-navigation-overlays-closed` | wird emittiert, wenn der Router vor einem Route-Render offene App-Shell-Overlays wie `x-header` schliesst |
|
|
92
|
+
|
|
93
|
+
## XState-Keys
|
|
94
|
+
|
|
95
|
+
- `router-navigate`: programmatischer Navigationseingang
|
|
96
|
+
- `router-navigated`: zuletzt angestossener Zielpfad
|
|
97
|
+
- `router-current`: aktuell gerenderte Route
|
|
98
|
+
- `router-rendered`: zuletzt erfolgreich gerenderte Route
|
|
99
|
+
- `router-scroll-boundary`: Legacy-Snapshot der letzten Scroll-Boundary-Pruefung
|
|
100
|
+
- `router-closed-navigation-overlays`: Legacy-Snapshot der vor dem Route-Render geschlossenen Navigationsoverlays
|
|
101
|
+
- `xtend.router.current`: kanonischer Route Context
|
|
102
|
+
- `xtend.router.announcement`: zuletzt angekuendigte Route
|
|
103
|
+
- `xtend.router.documentMeta`: zuletzt gesetzter Dokumenttitel und SEO-Metatags
|
|
104
|
+
- `xtend.router.skeleton`: aktueller Route-Skeleton-Lifecycle
|
|
105
|
+
- `xtend.router.scrollBoundary`: kanonischer Snapshot der letzten Scroll-Boundary-Pruefung
|
|
106
|
+
- `xtend.router.closedNavigationOverlays`: kanonischer Snapshot der vor dem Route-Render geschlossenen Navigationsoverlays
|
|
107
|
+
|
|
108
|
+
Die kanonischen Spiegelpfade werden ebenfalls gepflegt:
|
|
109
|
+
|
|
110
|
+
- `xtend.router.lastNavigated`
|
|
111
|
+
- `xtend.router.current`
|
|
112
|
+
- `xtend.router.lastRendered`
|
|
113
|
+
|
|
114
|
+
## Route-Detail
|
|
115
|
+
|
|
116
|
+
`route-changed` und `xrouter-after-navigate` liefern ein Detailobjekt mit:
|
|
117
|
+
|
|
118
|
+
```js
|
|
119
|
+
{
|
|
120
|
+
path: '/docs/router',
|
|
121
|
+
routeId: 'docs-topic',
|
|
122
|
+
component: 'x-doc-topic',
|
|
123
|
+
params: { topic: 'router' },
|
|
124
|
+
query: {},
|
|
125
|
+
template: 'docs.topic.shell',
|
|
126
|
+
scheduleRef: 'route.visible.render',
|
|
127
|
+
title: 'Router',
|
|
128
|
+
documentTitle: 'Router | XTend Docs',
|
|
129
|
+
meta: {
|
|
130
|
+
schema: 'xtend.router.document-meta.v1',
|
|
131
|
+
scheduleRef: 'route.document.title.rewrite'
|
|
132
|
+
},
|
|
133
|
+
metadata: {}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Bei Nested Routes ist `component` die Leaf-Route; `params` werden aus der kompletten Match-Kette zusammengefuehrt.
|
|
138
|
+
|
|
139
|
+
## Skeleton und Lazy Hydration
|
|
140
|
+
|
|
141
|
+
XRouter kann Route-Komponenten shell-first laden:
|
|
142
|
+
|
|
143
|
+
```html
|
|
144
|
+
<x-router mode="hash" skeleton="article" skeleton-lines="8" skeleton-min-height="20rem">
|
|
145
|
+
<x-route
|
|
146
|
+
path="/docs"
|
|
147
|
+
component="xtend-doc-page"
|
|
148
|
+
import="/docs/utils/pageloader.js"
|
|
149
|
+
hydrate-schedule="docs.page.hydrate">
|
|
150
|
+
</x-route>
|
|
151
|
+
</x-router>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Wenn der Component-Tag noch nicht definiert ist, nutzt XRouter zuerst das explizite `import` der Route. Fehlt ein Import, delegiert er an `window.XTendLoader.ensureComponent(componentTag)`, sodass Manifest-Komponenten route-nativ lazy geladen werden koennen. Nach dem Rendern hydriert XRouter den Route-Subtree ueber `window.XTendLoader.hydrateTree(...)`.
|
|
155
|
+
|
|
156
|
+
## Navigation Routing UX Profil
|
|
157
|
+
|
|
158
|
+
`<x-router>` stellt `xtendNavigationRoutingUxProfile` mit `xtend.component.navigation-routing-ux-profile.v1` bereit. Das Profil beschreibt `x-router` als Router-Outlet mit `route-changed`, `route-announced`, `xrouter-before-navigate`, `xtend.router.current`, `route.visible.render`, `route.focus.restore`, `a11y.announce`, Fabric-Lane `transition` und RMT Shell Authoring.
|
|
159
|
+
|
|
160
|
+
Nach erfolgreichem Rendern fokussiert der Router sein Outlet und schreibt eine polite, atomare Live Region. Dadurch koennen RMT und Fabric Route-Render, Focus Restore und Screenreader-Announcement getrennt schedulen, ohne dass der RMT-Kernel XTend-Interna importiert.
|
|
161
|
+
|
|
162
|
+
Die neuen Diagnostics-Details enthalten `source: 'x-router'`, `stateKey` und `scheduleRef`, sodass `x-link`, Feedback-Komponenten und RMT-Scheduler denselben Route Context teilen koennen.
|
|
163
|
+
|
|
164
|
+
## Scroll Boundary, Overlays und Deadzone-Schutz
|
|
165
|
+
|
|
166
|
+
Vor jedem erfolgreichen Route-Render schliesst `<x-router>` offene Navigationsoverlays, die einen stabilen Komponentenvertrag fuer `isMenuOpen()` und `toggleMenu(false, options)` anbieten. Aktuell wird dadurch vor allem `x-header` stabilisiert: Ein geoeffnetes Menue bleibt kein Layoutfaktor der vorherigen Seite und erzeugt beim Wechsel auf eine kuerzere Route keine Deadzone.
|
|
167
|
+
|
|
168
|
+
Nach dem Render setzt `<x-router>` die native Scroll Restoration auf `manual`, scrollt zum Seitenanfang oder zum angegebenen `scroll-to`-Ziel und prueft die Dokumenthoehe in Microtask-, Frame- und Settled-Timeout-Phasen erneut. Wenn der Browser noch eine stale Scrollposition aus der vorherigen, laengeren Route haelt oder die aktuelle Position hinter dem neuen maximalen Scrollbereich liegt, normalisiert der Router die Position und schreibt einen Snapshot nach `xtend.router.scrollBoundary`.
|
|
169
|
+
|
|
170
|
+
Der Snapshot folgt `xtend.router.scroll-boundary.v1` und enthaelt unter anderem `path`, `phase`, `strategy`, `viewportHeight`, `scrollHeight`, `maxScrollTop`, `previousTop`, `normalizedTop`, `normalized` und `deadzoneDetected`. Dadurch koennen Fabric/RMT-Diagnostics Deadzones sichtbar machen, ohne App-spezifische Scroll-Hacks zu brauchen.
|
|
171
|
+
|
|
172
|
+
## RMT / XTendRMT Adapter
|
|
173
|
+
|
|
174
|
+
Seit Epic 05 / `WP-E05-10` kann XRouter native RMT Routes ueber den Adapter-Contract `xtend.rmt.xrouter-adapter.v1` konsumieren.
|
|
175
|
+
|
|
176
|
+
```js
|
|
177
|
+
const adapter = window.xtend.rmt.createRmtXRouterAdapter({ routerElement });
|
|
178
|
+
adapter.registerRoutes(runtimeRegistry);
|
|
179
|
+
adapter.navigate({ routeId: 'home' }, { mapping });
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Die stabile Adapter-ID ist `xtend.xrouter`. Der Adapter konsumiert `routeRegistry.byRouter["xtend.xrouter"]`, mappt `RmtRouteRegistryEntry` auf XRouter-kompatible Records und ruft am Zielrouter `registerRoutes(...)` bzw. `navigate(...)` auf.
|
|
183
|
+
|
|
184
|
+
`<x-router>` stellt dafuer bereit:
|
|
185
|
+
|
|
186
|
+
- `registerRoutes(routes, options)`
|
|
187
|
+
- `navigate(to, options)`
|
|
188
|
+
- `reuse-component` als opt-in fuer InsularHydration bei SPA-Routen, deren Ziel denselben Component-Tag nutzt und `updateRoute(context)` oder `routeChangedCallback(context)` implementiert
|
|
189
|
+
|
|
190
|
+
RMT-relevante Route-Daten werden als Attribute auf `<x-route>` erhalten:
|
|
191
|
+
|
|
192
|
+
- `data-rmt-route-id`
|
|
193
|
+
- `data-rmt-router`
|
|
194
|
+
- `data-rmt-template`
|
|
195
|
+
- `data-rmt-schedule`
|
|
196
|
+
- `data-rmt-params`
|
|
197
|
+
- `data-rmt-query`
|
|
198
|
+
- `data-rmt-metadata`
|
|
199
|
+
|
|
200
|
+
XRouter bleibt damit produktiver Adapter fuer RMT Routes, aber kein RMT-Kernelwissen.
|
|
201
|
+
|
|
202
|
+
Weitere Details:
|
|
203
|
+
|
|
204
|
+
- [XTendRMT App-DSL Reference](../xtendrmt-app-dsl.md)
|
|
205
|
+
- [XTendRMT Runtime Bridge](../xtendrmt-runtime-bridge.md)
|
|
206
|
+
- [XTendRMT Native Authoring Guide](../xtendrmt-native-authoring.md)
|
|
207
|
+
|
|
208
|
+
## Hinweise
|
|
209
|
+
|
|
210
|
+
- `routesrc` wird vor dem ersten Rendern geladen.
|
|
211
|
+
- Lazy Loading erfolgt ueber das `import`-Attribut der jeweiligen Route.
|
|
212
|
+
- Guards (`before-enter`) und Lifecycle-Hooks bleiben unterstuetzt.
|
|
213
|
+
- Mit `reuse-component` kann eine App-Shell ihre Route-Komponente behalten; XRouter aktualisiert dann Params, Query und State und feuert `xrouter-route-reused`.
|
|
214
|
+
- RMT-Schedule-Refs werden ueber `data-rmt-schedule` an Route-Details weitergereicht.
|
|
215
|
+
- Scroll-Boundary-Normalisierung laeuft zentral im Router und sollte nicht in App-Shells dupliziert werden.
|
|
216
|
+
- Router-Aenderungen im Core sollten gegen `node scripts/verify_xtend_core_contracts.js` geprueft werden.
|
|
217
|
+
|
|
218
|
+
## ECH-WP-09 Token-Tabelle und Navigation States
|
|
219
|
+
|
|
220
|
+
`signatureDesign`: `x-router` ist die ruhige Route-Outlet-Basis fuer Enterprise-Shells. Der Router selbst delegiert Active/Current/Selected an `x-link`, `x-menu`, `x-tabs` und `x-header`, stellt aber denselben Navigation-State-Contract, Route Announcements und Focus Restore bereit.
|
|
221
|
+
|
|
222
|
+
| Token | Zweck |
|
|
223
|
+
| --- | --- |
|
|
224
|
+
| `--xtend-nav-surface` | optionale Outlet-/Route-Surface |
|
|
225
|
+
| `--xtend-nav-text` | Outlet-Text und vererbte Navigationsfarbe |
|
|
226
|
+
| `--xtend-nav-border-color` | geteilte Navigationskante fuer Route-Shells |
|
|
227
|
+
| `--xtend-nav-radius` | geteilte Radius-Vorgabe |
|
|
228
|
+
| `--xtend-nav-gap` | geteilte Navigation-Abstaende |
|
|
229
|
+
| `--xtend-nav-font-family` | vererbte Navigationstypografie |
|
|
230
|
+
| `--xtend-nav-font-size` | vererbte Navigationstextgroesse |
|
|
231
|
+
| `--xtend-nav-active-surface` | Active/Current/Selected Flaeche fuer angeschlossene Navigation |
|
|
232
|
+
| `--xtend-nav-active-text` | Active/Current/Selected Text |
|
|
233
|
+
| `--xtend-nav-current-indicator` | nicht farb-only Current-Indikator |
|
|
234
|
+
| `--xtend-nav-hover-surface` | Hover-Flaeche fuer angeschlossene Navigation |
|
|
235
|
+
| `--xtend-nav-focus-ring` | Route-Focus und Navigation-Focus |
|
|
236
|
+
| `--xtend-nav-disabled-opacity` | Disabled-Dimmung fuer angeschlossene Navigation |
|
|
237
|
+
|
|
238
|
+
## ECH-WP-09 Keyboard-Verhalten
|
|
239
|
+
|
|
240
|
+
Der Router fokussiert nach dem Rendern das Outlet und emittiert `route-announced` ueber eine polite Live Region. Link- und Menue-Keyboard-Verhalten bleibt in den jeweiligen Navigationselementen; der Router haelt den Route Context `xtend.router.current`, sodass Active/Current/Selected per `aria-current="page"` und `aria-selected="true"` synchronisiert werden koennen.
|
|
241
|
+
|
|
242
|
+
## ECH-WP-09 Fremdtheme
|
|
243
|
+
|
|
244
|
+
```css
|
|
245
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-router {
|
|
246
|
+
--xtend-nav-surface: transparent;
|
|
247
|
+
--xtend-nav-text: #17231f;
|
|
248
|
+
--xtend-nav-border-color: rgba(23, 35, 31, 0.22);
|
|
249
|
+
--xtend-nav-radius: 0.35rem;
|
|
250
|
+
--xtend-nav-gap: 0.45rem;
|
|
251
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
252
|
+
--xtend-nav-font-size: 1rem;
|
|
253
|
+
--xtend-nav-active-surface: #173f35;
|
|
254
|
+
--xtend-nav-active-text: #fffaf0;
|
|
255
|
+
--xtend-nav-current-indicator: #b56b35;
|
|
256
|
+
--xtend-nav-hover-surface: rgba(181, 107, 53, 0.14);
|
|
257
|
+
--xtend-nav-focus-ring: 3px solid #b56b35;
|
|
258
|
+
--xtend-nav-disabled-opacity: 0.44;
|
|
259
|
+
}
|
|
260
|
+
```
|