@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,119 @@
|
|
|
1
|
+
# xradio - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xform](./xform.md), [xinput](./xinput.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-radio>` completes the TypeScript-first selection controls from
|
|
8
|
+
`WP-E10-09`. The component coordinates groups through `name`, supports keyboard
|
|
9
|
+
navigation, and provides RMT, Fabric, a11y, and performance metadata for
|
|
10
|
+
RMT-first apps.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<x-radio id="plan-starter" name="plan" value="starter">
|
|
16
|
+
<span slot="label">Starter</span>
|
|
17
|
+
</x-radio>
|
|
18
|
+
<x-radio id="plan-pro" name="plan" value="pro" checked>
|
|
19
|
+
<span slot="label">Pro</span>
|
|
20
|
+
</x-radio>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Attributes
|
|
24
|
+
|
|
25
|
+
| Attribute | Type | Description |
|
|
26
|
+
|-----------|------|-------------|
|
|
27
|
+
| `name` | String | group and form name |
|
|
28
|
+
| `value` | String | value of the radio control |
|
|
29
|
+
| `checked` | Boolean | current selected state |
|
|
30
|
+
| `required` | Boolean | activates validation |
|
|
31
|
+
| `disabled` | Boolean | disables the control |
|
|
32
|
+
| `label` | String | ARIA/text label without slot |
|
|
33
|
+
|
|
34
|
+
## Slots
|
|
35
|
+
|
|
36
|
+
| Slot | Purpose |
|
|
37
|
+
|------|---------|
|
|
38
|
+
| `label` | visible label |
|
|
39
|
+
| `hint` | additional helper text |
|
|
40
|
+
| `error` | validation error |
|
|
41
|
+
|
|
42
|
+
## Events
|
|
43
|
+
|
|
44
|
+
| Event | Detail |
|
|
45
|
+
|-------|--------|
|
|
46
|
+
| `radio-changed` | `{ checked, value, name, source: 'x-radio' }` |
|
|
47
|
+
| `radio-invalid` | `{ checked, value, name, message, source: 'x-radio' }` |
|
|
48
|
+
|
|
49
|
+
## API
|
|
50
|
+
|
|
51
|
+
- `element.checked`
|
|
52
|
+
- `element.value`
|
|
53
|
+
- `element.name`
|
|
54
|
+
- `element.check()`
|
|
55
|
+
- `element.checkValidity()`
|
|
56
|
+
- `element.reportValidity()`
|
|
57
|
+
- `element.validate()`
|
|
58
|
+
- `element.reset()`
|
|
59
|
+
- `element.focus()`
|
|
60
|
+
|
|
61
|
+
## State, RMT, and Fabric
|
|
62
|
+
|
|
63
|
+
`<x-radio>` writes individual state to `xradio-checked-<id>` and group value to
|
|
64
|
+
`xradio-value-<name>`. RMT metadata uses
|
|
65
|
+
`xtend.rmt.component-contract.v1`; RMT can template a radio group as a DOM
|
|
66
|
+
descriptor and schedule the UI through `xtend.component` without importing
|
|
67
|
+
XTend into the RMT kernel.
|
|
68
|
+
|
|
69
|
+
## A11y and Performance
|
|
70
|
+
|
|
71
|
+
The component uses `role="radio"`, `aria-checked`, `aria-describedby`, Space
|
|
72
|
+
activation, and arrow-key navigation within the group. The performance profile
|
|
73
|
+
is `xtend.performance.component-profile.v1` with
|
|
74
|
+
`budgetClass: 'interactive-small'`, `lane: 'user-blocking'`, and
|
|
75
|
+
`hydrationPolicy: 'visible'`.
|
|
76
|
+
|
|
77
|
+
## Form Controls UX from WP-E11-08
|
|
78
|
+
|
|
79
|
+
`<x-radio>` exposes `xtendFormControlUxProfile` with
|
|
80
|
+
`xtend.component.form-control-ux-profile.v1`. The profile connects label, hint,
|
|
81
|
+
error, `radio-changed`, `radio-invalid`, `xradio-value-<name>`,
|
|
82
|
+
`ui.user-blocking.input`, Fabric lane `user-blocking`, and RMT shell authoring.
|
|
83
|
+
|
|
84
|
+
## ECH-WP-08 Form Theme/A11y Hardening
|
|
85
|
+
|
|
86
|
+
`signatureDesign`: enterprise radio option with robust native focus handling,
|
|
87
|
+
group-safe validation, and separately themeable selection icon.
|
|
88
|
+
|
|
89
|
+
| Token | Purpose |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| `--xtend-form-text` | host text color |
|
|
92
|
+
| `--xtend-form-control-surface` | native control surface |
|
|
93
|
+
| `--xtend-form-control-text` | control text fallback |
|
|
94
|
+
| `--xtend-form-label-text` | label |
|
|
95
|
+
| `--xtend-form-helper-text` | helper |
|
|
96
|
+
| `--xtend-form-error-text` | error text |
|
|
97
|
+
| `--xtend-form-error-surface` | error surface |
|
|
98
|
+
| `--xtend-form-error-border` | error edge and marker |
|
|
99
|
+
| `--xtend-form-focus-ring` | focus outline |
|
|
100
|
+
| `--xtend-form-radius` | radio/error radius |
|
|
101
|
+
| `--xtend-form-gap` | label/helper spacing |
|
|
102
|
+
| `--xtend-form-font-family` | form typography |
|
|
103
|
+
| `--xtend-form-control-font-size` | label font |
|
|
104
|
+
| `--xtend-form-helper-font-size` | helper/error font |
|
|
105
|
+
| `--xtend-form-icon-color` | radio accent |
|
|
106
|
+
|
|
107
|
+
Density profiles: `comfortable`, `compact`, `dense`. Invalid state is not
|
|
108
|
+
color-only and is mirrored through `aria-invalid`.
|
|
109
|
+
|
|
110
|
+
```css
|
|
111
|
+
[data-xtend-form-theme="enterprise-foreign"] x-radio {
|
|
112
|
+
--xtend-form-icon-color: #8f4f2a;
|
|
113
|
+
--xtend-form-label-text: #22312c;
|
|
114
|
+
--xtend-form-helper-text: #596861;
|
|
115
|
+
--xtend-form-error-text: #7d231c;
|
|
116
|
+
--xtend-form-error-border: #a64036;
|
|
117
|
+
--xtend-form-focus-ring: 3px solid #8f4f2a;
|
|
118
|
+
}
|
|
119
|
+
```
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# xrouter - XTend Component
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`<x-router>` is the client-side router for XTend SPAs. It processes declarative `<x-route>` definitions, supports hash and history mode, and synchronizes navigation with `xstate`.
|
|
6
|
+
|
|
7
|
+
## Core Behavior
|
|
8
|
+
|
|
9
|
+
- only direct `<x-route>` children of `<x-router>` count as top-level routes
|
|
10
|
+
- nested routes are processed only through direct child routes of their parent route
|
|
11
|
+
- navigation can be triggered declaratively, through `x-link` or programmatically via `xstate.set('router-navigate', '/target')`
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
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
|
+
## Attributes
|
|
26
|
+
|
|
27
|
+
| Attribute | Type | Description |
|
|
28
|
+
|-----------|------|-------------|
|
|
29
|
+
| `mode` | string | `hash` or `history` |
|
|
30
|
+
| `routesrc` | string | optional JSON source for routes |
|
|
31
|
+
| `skeleton` | string | enables a native route skeleton fallback during import, definition and hydration |
|
|
32
|
+
| `skeleton-lines` | number | number of skeleton lines for the route fallback |
|
|
33
|
+
| `skeleton-min-height` | string | stable minimum height for the route fallback |
|
|
34
|
+
| `title-template` / `document-title-template` | string | global document-title template, for example `{{title}} | App` |
|
|
35
|
+
| `title-prefix` / `title-suffix` | string | simple prefix/suffix for route titles without a template |
|
|
36
|
+
| `default-title` | string | fallback when a route does not define a title |
|
|
37
|
+
|
|
38
|
+
## Document Title Rewrite and SEO Meta
|
|
39
|
+
|
|
40
|
+
After every successful route match, XRouter rewrites the browser title and the SEO meta tags `description` and `keywords`. This prevents an SPA from staying on its initial title, and RMT routes can provide title information without XTend-specific runtime imports.
|
|
41
|
+
|
|
42
|
+
Direct route attributes:
|
|
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 and SEO"
|
|
51
|
+
meta-description="Routing, page titles and RMT route metadata"
|
|
52
|
+
meta-keywords="xtend, xrouter, rmt">
|
|
53
|
+
</x-route>
|
|
54
|
+
</x-router>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
RMT can provide the same values through route records and `metadata`:
|
|
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": "Settings for the XTend RMT app",
|
|
69
|
+
"seo": {
|
|
70
|
+
"keywords": ["xtend", "rmt", "routing"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Supported template variables are `{{title}}`, `{{routeTitle}}`, `{{documentTitle}}`, `{{path}}`, `{{routeId}}`, `{{component}}`, `{{params.name}}`, `{{query.name}}` and `{{metadata.name}}`. For nested routes, the leaf route wins so deep links can define their own titles.
|
|
77
|
+
|
|
78
|
+
## Events
|
|
79
|
+
|
|
80
|
+
| Event | Description |
|
|
81
|
+
|-------|-------------|
|
|
82
|
+
| `xrouter-before-navigate` | cancelable, before programmatic router navigation |
|
|
83
|
+
| `route-changed` | emitted after successful navigation |
|
|
84
|
+
| `routechange` | legacy alias for `route-changed` |
|
|
85
|
+
| `xrouter-after-navigate` | legacy window event after rendering a route |
|
|
86
|
+
| `route-announced` | emitted after writing the route live region |
|
|
87
|
+
| `xrouter-skeleton-shown` / `xrouter-skeleton-hidden` | mark the native route-skeleton lifecycle |
|
|
88
|
+
| `xrouter-route-hydrated` | emitted after loader-based hydration of the rendered route subtree |
|
|
89
|
+
| `xrouter-title-updated` | emitted after writing `document.title` and SEO meta tags |
|
|
90
|
+
| `xrouter-scroll-boundary-normalized` | emitted when the router corrects a stale scroll position or a dead zone below the content area after a route change |
|
|
91
|
+
| `xrouter-navigation-overlays-closed` | emitted when the router closes open app-shell overlays such as `x-header` before rendering a route |
|
|
92
|
+
|
|
93
|
+
## XState Keys
|
|
94
|
+
|
|
95
|
+
- `router-navigate`: programmatic navigation input
|
|
96
|
+
- `router-navigated`: most recently triggered target path
|
|
97
|
+
- `router-current`: currently rendered route
|
|
98
|
+
- `router-rendered`: most recently rendered route
|
|
99
|
+
- `router-scroll-boundary`: legacy snapshot of the last scroll-boundary check
|
|
100
|
+
- `router-closed-navigation-overlays`: legacy snapshot of navigation overlays closed before route render
|
|
101
|
+
- `xtend.router.current`: canonical route context
|
|
102
|
+
- `xtend.router.announcement`: most recently announced route
|
|
103
|
+
- `xtend.router.documentMeta`: most recently set document title and SEO meta tags
|
|
104
|
+
- `xtend.router.skeleton`: current route-skeleton lifecycle
|
|
105
|
+
- `xtend.router.scrollBoundary`: canonical snapshot of the last scroll-boundary check
|
|
106
|
+
- `xtend.router.closedNavigationOverlays`: canonical snapshot of navigation overlays closed before route render
|
|
107
|
+
|
|
108
|
+
The canonical mirror paths are maintained as well:
|
|
109
|
+
|
|
110
|
+
- `xtend.router.lastNavigated`
|
|
111
|
+
- `xtend.router.current`
|
|
112
|
+
- `xtend.router.lastRendered`
|
|
113
|
+
|
|
114
|
+
## Route Detail
|
|
115
|
+
|
|
116
|
+
`route-changed` and `xrouter-after-navigate` provide a detail object with:
|
|
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
|
+
For nested routes, `component` is the leaf route; `params` are merged from the complete match chain.
|
|
138
|
+
|
|
139
|
+
## Skeleton and Lazy Hydration
|
|
140
|
+
|
|
141
|
+
XRouter can load route components shell-first:
|
|
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
|
+
If the component tag is not defined yet, XRouter first uses the route's explicit `import`. If no import is present, it delegates to `window.XTendLoader.ensureComponent(componentTag)`, so manifest components can be lazy-loaded natively through routes. After rendering, XRouter hydrates the route subtree through `window.XTendLoader.hydrateTree(...)`.
|
|
155
|
+
|
|
156
|
+
## Navigation Routing UX Profile
|
|
157
|
+
|
|
158
|
+
`<x-router>` provides `xtendNavigationRoutingUxProfile` with `xtend.component.navigation-routing-ux-profile.v1`. The profile describes `x-router` as a router outlet with `route-changed`, `route-announced`, `xrouter-before-navigate`, `xtend.router.current`, `route.visible.render`, `route.focus.restore`, `a11y.announce`, Fabric lane `transition` and RMT shell authoring.
|
|
159
|
+
|
|
160
|
+
After a successful render, the router focuses its outlet and writes a polite, atomic live region. This lets RMT and Fabric schedule route render, focus restore and screen-reader announcement separately, without requiring the RMT kernel to import XTend internals.
|
|
161
|
+
|
|
162
|
+
The new diagnostics details include `source: 'x-router'`, `stateKey` and `scheduleRef`, so `x-link`, feedback components and RMT schedulers can share the same route context.
|
|
163
|
+
|
|
164
|
+
## Scroll Boundary, Overlays and Dead-Zone Protection
|
|
165
|
+
|
|
166
|
+
Before every successful route render, `<x-router>` closes open navigation overlays that provide the stable component contract `isMenuOpen()` and `toggleMenu(false, options)`. This primarily stabilizes `x-header`: an open menu does not remain a layout factor from the previous page and does not create a dead zone when switching to a shorter route.
|
|
167
|
+
|
|
168
|
+
After rendering, `<x-router>` sets native scroll restoration to `manual`, scrolls to the top or the given `scroll-to` target, and re-checks document height in microtask, frame and settled-timeout phases. If the browser still holds a stale scroll position from the previous, taller route, or if the current position is beyond the new maximum scroll range, the router normalizes the position and writes a snapshot to `xtend.router.scrollBoundary`.
|
|
169
|
+
|
|
170
|
+
The snapshot follows `xtend.router.scroll-boundary.v1` and includes `path`, `phase`, `strategy`, `viewportHeight`, `scrollHeight`, `maxScrollTop`, `previousTop`, `normalizedTop`, `normalized` and `deadzoneDetected`. Fabric/RMT diagnostics can therefore make dead zones visible without app-specific scroll hacks.
|
|
171
|
+
|
|
172
|
+
## RMT / XTendRMT Adapter
|
|
173
|
+
|
|
174
|
+
Since Epic 05 / `WP-E05-10`, XRouter can consume native RMT routes through the adapter contract `xtend.rmt.xrouter-adapter.v1`.
|
|
175
|
+
|
|
176
|
+
```js
|
|
177
|
+
const adapter = window.xtend.rmt.createRmtXRouterAdapter({ routerElement });
|
|
178
|
+
adapter.registerRoutes(runtimeRegistry);
|
|
179
|
+
adapter.navigate({ routeId: 'home' }, { mapping });
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The stable adapter ID is `xtend.xrouter`. The adapter consumes `routeRegistry.byRouter["xtend.xrouter"]`, maps `RmtRouteRegistryEntry` to XRouter-compatible records and calls `registerRoutes(...)` or `navigate(...)` on the target router.
|
|
183
|
+
|
|
184
|
+
`<x-router>` provides:
|
|
185
|
+
|
|
186
|
+
- `registerRoutes(routes, options)`
|
|
187
|
+
- `navigate(to, options)`
|
|
188
|
+
- `reuse-component` as opt-in for InsularHydration for SPA routes whose target uses the same component tag and implements `updateRoute(context)` or `routeChangedCallback(context)`
|
|
189
|
+
|
|
190
|
+
RMT-relevant route data is preserved as attributes on `<x-route>`:
|
|
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
|
+
This keeps XRouter a productive adapter for RMT routes without giving it RMT kernel knowledge.
|
|
201
|
+
|
|
202
|
+
Further 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
|
+
## Notes
|
|
209
|
+
|
|
210
|
+
- `routesrc` is loaded before the first render.
|
|
211
|
+
- Lazy loading happens through the `import` attribute of each route.
|
|
212
|
+
- Guards (`before-enter`) and lifecycle hooks remain supported.
|
|
213
|
+
- With `reuse-component`, an app shell can keep its route component; XRouter then updates params, query and state and fires `xrouter-route-reused`.
|
|
214
|
+
- RMT schedule refs are forwarded to route details via `data-rmt-schedule`.
|
|
215
|
+
- Scroll-boundary normalization runs centrally in the router and should not be duplicated in app shells.
|
|
216
|
+
- Core router changes should be checked against `node scripts/verify_xtend_core_contracts.js`.
|
|
217
|
+
|
|
218
|
+
## ECH-WP-09 Token Table and Navigation States
|
|
219
|
+
|
|
220
|
+
`signatureDesign`: `x-router` is the calm route-outlet base for enterprise shells. The router itself delegates active/current/selected state to `x-link`, `x-menu`, `x-tabs` and `x-header`, but exposes the same navigation-state contract, route announcements and focus restore.
|
|
221
|
+
|
|
222
|
+
| Token | Purpose |
|
|
223
|
+
| --- | --- |
|
|
224
|
+
| `--xtend-nav-surface` | optional outlet/route surface |
|
|
225
|
+
| `--xtend-nav-text` | outlet text and inherited navigation color |
|
|
226
|
+
| `--xtend-nav-border-color` | shared navigation edge for route shells |
|
|
227
|
+
| `--xtend-nav-radius` | shared radius preset |
|
|
228
|
+
| `--xtend-nav-gap` | shared navigation spacing |
|
|
229
|
+
| `--xtend-nav-font-family` | inherited navigation typography |
|
|
230
|
+
| `--xtend-nav-font-size` | inherited navigation text size |
|
|
231
|
+
| `--xtend-nav-active-surface` | active/current/selected surface for connected navigation |
|
|
232
|
+
| `--xtend-nav-active-text` | active/current/selected text |
|
|
233
|
+
| `--xtend-nav-current-indicator` | non-color-only current indicator |
|
|
234
|
+
| `--xtend-nav-hover-surface` | hover surface for connected navigation |
|
|
235
|
+
| `--xtend-nav-focus-ring` | route focus and navigation focus |
|
|
236
|
+
| `--xtend-nav-disabled-opacity` | disabled dimming for connected navigation |
|
|
237
|
+
|
|
238
|
+
## ECH-WP-09 Keyboard Behavior
|
|
239
|
+
|
|
240
|
+
After rendering, the router focuses the outlet and emits `route-announced` through a polite live region. Link and menu keyboard behavior remains in the respective navigation elements; the router keeps the route context `xtend.router.current`, so active/current/selected can be synchronized through `aria-current="page"` and `aria-selected="true"`.
|
|
241
|
+
|
|
242
|
+
## ECH-WP-09 Foreign Theme
|
|
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
|
+
```
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# xsection - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xhero](./xhero.md), [xmasonry](./xmasonry.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-section>` is a flexible layout component for page sections, containers, and
|
|
8
|
+
structured areas. It supports slots, theming, and responsive design.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Container for arbitrary content
|
|
15
|
+
- Slots for flexible structure
|
|
16
|
+
- Theming through CSS custom properties
|
|
17
|
+
- Responsive design
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<x-section>
|
|
25
|
+
<h2>Section</h2>
|
|
26
|
+
<p>Content...</p>
|
|
27
|
+
</x-section>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Attributes
|
|
33
|
+
|
|
34
|
+
| Attribute | Type | Description |
|
|
35
|
+
|-----------|------|-------------|
|
|
36
|
+
| `variant` | String | layout variant, for example primary, secondary |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Events
|
|
41
|
+
|
|
42
|
+
| Event | Description |
|
|
43
|
+
|-------|-------------|
|
|
44
|
+
| - | - |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
- **Set variant:** `element.setAttribute('variant', 'primary')`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Example: Dynamic JS
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
const section = document.createElement('x-section');
|
|
58
|
+
section.setAttribute('variant', 'primary');
|
|
59
|
+
document.body.appendChild(section);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Styling and Theming
|
|
65
|
+
|
|
66
|
+
```css
|
|
67
|
+
x-section {
|
|
68
|
+
--section-bg: #f9f9f9;
|
|
69
|
+
--section-color: #222;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Accessibility
|
|
76
|
+
|
|
77
|
+
- Semantic HTML
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
*Last updated: July 16, 2025*
|
|
82
|
+
|
|
83
|
+
## Layout Display Media UX Profile
|
|
84
|
+
|
|
85
|
+
Starting with `WP-E11-12`, `x-section` exposes the profile
|
|
86
|
+
`xtend.component.layout-display-media-ux-profile.v1`. The component is suitable
|
|
87
|
+
as a shell-first layout surface for RMT and uses the state key
|
|
88
|
+
`xsection-state-<id>`.
|
|
89
|
+
|
|
90
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
91
|
+
- Schedule: `layout.measure`
|
|
92
|
+
- Event: `section-rendered`
|
|
93
|
+
- Snapshot: `snapshot()`
|
|
94
|
+
- CSS parts: `root`, `container`, `header`, `aside`, `content`, `footer`
|
|
95
|
+
|
|
96
|
+
## ECH-WP-07 Token Table and signatureDesign
|
|
97
|
+
|
|
98
|
+
`signatureDesign`: editorial enterprise section with controlled surface
|
|
99
|
+
hierarchy, optional edge, and overflow-safe content lanes. It can be plain,
|
|
100
|
+
framed, or a dense dashboard layout without requiring new attributes.
|
|
101
|
+
|
|
102
|
+
| Token | Purpose |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| `--xtend-layout-surface` | section surface |
|
|
105
|
+
| `--xtend-layout-text` | main text color |
|
|
106
|
+
| `--xtend-layout-border-color` | optional section edge |
|
|
107
|
+
| `--xtend-layout-radius` | section radius |
|
|
108
|
+
| `--xtend-layout-elevation` | optional section shadow |
|
|
109
|
+
| `--xtend-layout-spacing` | section and content padding |
|
|
110
|
+
| `--xtend-layout-gap` | slot spacing |
|
|
111
|
+
| `--xtend-layout-font-family` | section typography |
|
|
112
|
+
| `--xtend-layout-font-size` | content font size |
|
|
113
|
+
| `--xtend-layout-media-radius` | media radius for slotted content |
|
|
114
|
+
| `--xtend-layout-focus-ring` | focus inside the section |
|
|
115
|
+
| `--xtend-layout-grid-min` | responsive content base |
|
|
116
|
+
| `--xtend-layout-content-max` | section max width |
|
|
117
|
+
|
|
118
|
+
## ECH-WP-07 External Theme
|
|
119
|
+
|
|
120
|
+
```css
|
|
121
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-section {
|
|
122
|
+
--xtend-layout-surface: #fffaf2;
|
|
123
|
+
--xtend-layout-text: #1d2722;
|
|
124
|
+
--xtend-layout-border-color: rgba(29, 39, 34, 0.18);
|
|
125
|
+
--xtend-layout-radius: 0.4rem;
|
|
126
|
+
--xtend-layout-elevation: none;
|
|
127
|
+
--xtend-layout-spacing: 1.6rem;
|
|
128
|
+
--xtend-layout-gap: 1.2rem;
|
|
129
|
+
--xtend-layout-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
130
|
+
--xtend-layout-font-size: 1rem;
|
|
131
|
+
--xtend-layout-media-radius: 0.35rem;
|
|
132
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
133
|
+
--xtend-layout-grid-min: minmax(14rem, 1fr);
|
|
134
|
+
--xtend-layout-content-max: 76rem;
|
|
135
|
+
}
|
|
136
|
+
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# xselect - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xform](./xform.md), [xinput](./xinput.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-select>` is the TypeScript-first selection control from `WP-E10-09`. The
|
|
8
|
+
component wraps a native `select`, remains form-associated, writes its value to
|
|
9
|
+
`xstate`, and carries RMT, Fabric, a11y, and performance metadata without
|
|
10
|
+
embedding XTend in the RMT kernel.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<x-select id="plan-select" name="plan" value="pro" required>
|
|
16
|
+
<span slot="label">Plan</span>
|
|
17
|
+
<option value="starter">Starter</option>
|
|
18
|
+
<option value="pro">Pro</option>
|
|
19
|
+
<span slot="error">Please choose a plan.</span>
|
|
20
|
+
</x-select>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Attributes
|
|
24
|
+
|
|
25
|
+
| Attribute | Type | Description |
|
|
26
|
+
|-----------|------|-------------|
|
|
27
|
+
| `name` | String | form name |
|
|
28
|
+
| `value` | String | current value |
|
|
29
|
+
| `multiple` | Boolean | allows multiple selection |
|
|
30
|
+
| `required` | Boolean | activates native validation |
|
|
31
|
+
| `disabled` | Boolean | disables the control |
|
|
32
|
+
| `placeholder` | String | optional placeholder option |
|
|
33
|
+
| `label` | String | ARIA/text label without slot |
|
|
34
|
+
|
|
35
|
+
## Slots
|
|
36
|
+
|
|
37
|
+
| Slot | Purpose |
|
|
38
|
+
|------|---------|
|
|
39
|
+
| default | `option` elements for the native select |
|
|
40
|
+
| `label` | visible label |
|
|
41
|
+
| `hint` | additional helper text |
|
|
42
|
+
| `error` | validation error |
|
|
43
|
+
|
|
44
|
+
## Events
|
|
45
|
+
|
|
46
|
+
| Event | Detail |
|
|
47
|
+
|-------|--------|
|
|
48
|
+
| `select-changed` | `{ value, values, source: 'x-select' }` |
|
|
49
|
+
| `select-invalid` | `{ value, message, source: 'x-select' }` |
|
|
50
|
+
|
|
51
|
+
## API
|
|
52
|
+
|
|
53
|
+
- `element.value`
|
|
54
|
+
- `element.values`
|
|
55
|
+
- `element.checkValidity()`
|
|
56
|
+
- `element.reportValidity()`
|
|
57
|
+
- `element.validate()`
|
|
58
|
+
- `element.reset()`
|
|
59
|
+
- `element.focus()`
|
|
60
|
+
|
|
61
|
+
## State, RMT, and Fabric
|
|
62
|
+
|
|
63
|
+
`<x-select>` writes to `xselect-value-<id>` and reacts to external value
|
|
64
|
+
updates. RMT metadata uses `xtend.rmt.component-contract.v1`,
|
|
65
|
+
`adapter: 'xtend.component'`, and
|
|
66
|
+
`kernelBoundary: 'no-rmt-kernel-import-of-xtend-types'`. Shell-first templates
|
|
67
|
+
can schedule the component as a DOM descriptor while XTend remains the UI
|
|
68
|
+
surface.
|
|
69
|
+
|
|
70
|
+
## A11y and Performance
|
|
71
|
+
|
|
72
|
+
The control uses `role="combobox"`, `aria-describedby`, visible label/hint/error
|
|
73
|
+
slots, and an assertive error region. The performance profile is
|
|
74
|
+
`xtend.performance.component-profile.v1` with
|
|
75
|
+
`budgetClass: 'interactive-medium'`, `lane: 'user-blocking'`, and
|
|
76
|
+
`hydrationPolicy: 'visible'`.
|
|
77
|
+
|
|
78
|
+
## Form Controls UX from WP-E11-08
|
|
79
|
+
|
|
80
|
+
`<x-select>` exposes `xtendFormControlUxProfile` with
|
|
81
|
+
`xtend.component.form-control-ux-profile.v1`. The profile connects label, hint,
|
|
82
|
+
error, `select-changed`, `select-invalid`, `xselect-value-<id>`,
|
|
83
|
+
`ui.user-blocking.input`, Fabric lane `user-blocking`, and RMT shell authoring.
|
|
84
|
+
|
|
85
|
+
## ECH-WP-08 Form Theme/A11y Hardening
|
|
86
|
+
|
|
87
|
+
`signatureDesign`: enterprise select with clear native affordance,
|
|
88
|
+
non-color-only validation, and density-safe label/helper rhythm.
|
|
89
|
+
|
|
90
|
+
| Token | Purpose |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| `--xtend-form-text` | host text color |
|
|
93
|
+
| `--xtend-form-control-surface` | select surface |
|
|
94
|
+
| `--xtend-form-control-text` | select text |
|
|
95
|
+
| `--xtend-form-label-text` | label |
|
|
96
|
+
| `--xtend-form-helper-text` | helper |
|
|
97
|
+
| `--xtend-form-error-text` | error text |
|
|
98
|
+
| `--xtend-form-error-surface` | error surface |
|
|
99
|
+
| `--xtend-form-error-border` | error edge and marker |
|
|
100
|
+
| `--xtend-form-focus-ring` | focus outline |
|
|
101
|
+
| `--xtend-form-radius` | select and error radius |
|
|
102
|
+
| `--xtend-form-gap` | vertical rhythm |
|
|
103
|
+
| `--xtend-form-font-family` | form typography |
|
|
104
|
+
| `--xtend-form-control-font-size` | select font |
|
|
105
|
+
| `--xtend-form-helper-font-size` | helper/error font |
|
|
106
|
+
| `--xtend-form-icon-color` | native select affordance |
|
|
107
|
+
|
|
108
|
+
Density profiles: `comfortable`, `compact`, `dense`. Invalid, `disabled`,
|
|
109
|
+
`required`, and `busy` are mirrored visually and through ARIA.
|
|
110
|
+
|
|
111
|
+
```css
|
|
112
|
+
[data-xtend-form-theme="enterprise-foreign"] x-select {
|
|
113
|
+
--xtend-form-control-surface: #fbf8f2;
|
|
114
|
+
--xtend-form-control-text: #16231f;
|
|
115
|
+
--xtend-form-label-text: #22312c;
|
|
116
|
+
--xtend-form-helper-text: #596861;
|
|
117
|
+
--xtend-form-error-text: #7d231c;
|
|
118
|
+
--xtend-form-error-border: #a64036;
|
|
119
|
+
--xtend-form-focus-ring: 3px solid #8f4f2a;
|
|
120
|
+
--xtend-form-radius: 0.35rem;
|
|
121
|
+
}
|
|
122
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# xsidepanel - XTend Component
|
|
2
|
+
|
|
3
|
+
`x-side-panel` is XTend's app-shell-adjacent side-panel surface. It registers
|
|
4
|
+
with an enclosing `x-surface-manager`, uses the Surface Controller from
|
|
5
|
+
`WP-SM-02`, and mirrors snapshots into placement, mode, pinning, collapsed
|
|
6
|
+
state, size, and z-order.
|
|
7
|
+
|
|
8
|
+
## Attributes
|
|
9
|
+
|
|
10
|
+
- `surface-id`: stable surface ID
|
|
11
|
+
- `label`: accessible name and panel title
|
|
12
|
+
- `open`, `active`, `collapsed`, `pinned`
|
|
13
|
+
- `placement`: `left`, `right`, `bottom`, or `inline`
|
|
14
|
+
- `mode`: `docked`, `overlay`, `pinned`, `collapsed`, or `fullscreen`
|
|
15
|
+
- `responsive-mode`: default `fullscreen-under-720`
|
|
16
|
+
- `resizable`, `route-aware`, `modal`
|
|
17
|
+
- `initial-width`, `initial-height`
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
`toSurfaceRecord(managerId)` creates an `xtend.surface.record.v1` with
|
|
22
|
+
`type: "side-panel"`. `applySurfaceSnapshot(record)` updates visible state,
|
|
23
|
+
bounds, placement, mode, and a11y state.
|
|
24
|
+
|
|
25
|
+
Commands: `openPanel()`, `closePanel(reason)`, `focusPanel()`, `pinPanel()`,
|
|
26
|
+
`collapsePanel()`, `expandPanel(mode)`, `setPanelMode(mode, placement)`,
|
|
27
|
+
`resizePanel(bounds)`, and `restorePanel()`.
|
|
28
|
+
|
|
29
|
+
The element emits `surface-panel-command` with `open`, `close`, `focus`,
|
|
30
|
+
`resize`, `pin`, `unpin`, `collapse`, `expand`, `dock`, `restore`, or
|
|
31
|
+
`update`. The manager translates these commands into controller operations or
|
|
32
|
+
`updateSurface`.
|
|
33
|
+
|
|
34
|
+
RMT: `xtend.rmt.component-contract.v1`, `xtend.surface.record.v1`,
|
|
35
|
+
`surface.visible.render`, `surface.user-blocking.open`,
|
|
36
|
+
`surface.user-blocking.close`, `surface.transition.layout`,
|
|
37
|
+
`surface.diagnostics.snapshot`.
|
|
38
|
+
|
|
39
|
+
## ECH-WP-06 Overlay Parity
|
|
40
|
+
|
|
41
|
+
`x-side-panel` exposes `surface`, `backdrop`, `close`, and `content` as shared
|
|
42
|
+
overlay parts. The previous `scrim` part remains as an alias for `backdrop`.
|
|
43
|
+
Surface, text, border, elevation, backdrop, z-index, and focus ring use
|
|
44
|
+
`--xtend-overlay-*` and component-local `--side-panel-*` tokens.
|
|
45
|
+
|
|
46
|
+
`mode="docked"` and `mode="pinned"` remain non-modal and app-shell-adjacent.
|
|
47
|
+
`mode="overlay"` or `modal` activates the backdrop and overlay controls for
|
|
48
|
+
SurfaceManager orchestration.
|