@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,221 @@
|
|
|
1
|
+
# XTend Architecture Decision Record
|
|
2
|
+
|
|
3
|
+
- Status: Accepted
|
|
4
|
+
- Date: May 8, 2026
|
|
5
|
+
- Contract: `xtend.docs.architecture-decision-record.v2`
|
|
6
|
+
- Type: product architecture baseline for XTend UI, XTend-Fabric and XTendRMT
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This ADR replaces the earlier architecture snapshot from the first epics. The old version still described a platform in transition: Core consolidation, loader rename, RMT fusion, test harness and component coverage were partly still target states at that time.
|
|
11
|
+
|
|
12
|
+
Today's decision describes the current architecture contract for XTend as an enterprise web framework:
|
|
13
|
+
|
|
14
|
+
- XTend UI is the Web Component and UI Builder product.
|
|
15
|
+
- XTendRMT is scheduler, runtime kernel, templating engine and native `.rmt` authoring language.
|
|
16
|
+
- XTend-Fabric is the host-near protection, telemetry, lane and reporter layer.
|
|
17
|
+
- The Docs App is an XTend app with an RMT-generated shell and Parsedown as a scheduled content component.
|
|
18
|
+
- RMT tooling, linter and language server are part of the authoring platform.
|
|
19
|
+
|
|
20
|
+
## Decision
|
|
21
|
+
|
|
22
|
+
XTend continues as a **manifest- and state-centered Web Components framework** with RMT-first app authoring, Fabric boundary and TypeScript-first Component Platform.
|
|
23
|
+
|
|
24
|
+
Documentation, manifest and runtime APIs must be maintained as one connected contract going forward.
|
|
25
|
+
|
|
26
|
+
The architecture deliberately separates five responsibilities:
|
|
27
|
+
|
|
28
|
+
| Layer | Responsibility | May know about | Must not do |
|
|
29
|
+
|-------|----------------|----------------|-------------|
|
|
30
|
+
| XTend UI | Custom Elements, shells, styling, a11y, UX and host components | Manifest, Loader, Component Contracts, Fabric Context | implement RMT kernel semantics |
|
|
31
|
+
| XTend Loader | local ESM imports, manifest policy, bootstrap, component loading | Manifest, Import Policy, Runtime API | force CDN fallbacks or silently load external sources |
|
|
32
|
+
| XTend-Fabric | error boundaries, telemetry, reporter adapters, fibers, lanes, backpressure | XTend Runtime, optional RMT Adapter Results | parse RMT documents or replace XTendRMT |
|
|
33
|
+
| XTendRMT | `.rmt` source, DSL domains, scheduling, templates, routes, diagnostics | neutral adapter records and host capabilities | directly import XTend, XRouter, DOM, React, Vue or `xstate` |
|
|
34
|
+
| Tooling | linter, LSP, snippets, reports, editor bridges | RMT Source Model, Parser, Rule Engine, Schema | maintain separate semantics beside the RMT language core |
|
|
35
|
+
|
|
36
|
+
## Architecture Principles
|
|
37
|
+
|
|
38
|
+
### 1. Native Web Standards Remain the Core
|
|
39
|
+
|
|
40
|
+
XTend is based on Custom Elements, Shadow DOM, slots, CSS Custom Properties and ES modules. Build and TypeScript artifacts must not hide this runtime behind a proprietary abstraction model.
|
|
41
|
+
|
|
42
|
+
Components remain real Web Components. Integrations for React, Vue or custom hosts are adapters or host conventions, not replacements for the native surface.
|
|
43
|
+
|
|
44
|
+
### 2. State-Centered UI
|
|
45
|
+
|
|
46
|
+
`xstate` remains the host-near state boundary for XTend UI. State is the observable truth for UI states, route mirrors, theme context, feedback, component states and diagnostics.
|
|
47
|
+
|
|
48
|
+
The **Digital Twin Principle** remains binding: relevant UI actions must write back into a traceable state, event or diagnostic record. Local flags may only be derived render caches.
|
|
49
|
+
|
|
50
|
+
### 3. RMT-First, but Framework-Agnostic
|
|
51
|
+
|
|
52
|
+
New app shells, routes, templates and scheduling policies should primarily be described in native `.rmt` documents. `.rmt.json` remains only an edge-case fallback for hosts without a suitable MIME type or for legacy paths.
|
|
53
|
+
|
|
54
|
+
RMT is still not an XTend submodule. XTend is a first-class host, but not a required host. The RMT kernel sees adapter records such as `xtend.component` or `xtend.xrouter`, but imports no XTend components and performs no DOM work itself.
|
|
55
|
+
|
|
56
|
+
### 4. Shell-First Rendering
|
|
57
|
+
|
|
58
|
+
App shells should render stably first. Content, Markdown, rich HTML, media and heavy components are scheduled or lazily loaded afterward.
|
|
59
|
+
|
|
60
|
+
The Docs App is the reference path: RMT creates the shell, Parsedown is a scheduled content component. Later content such as XPlayer tutorials or rich-content blocks can be added to the same scheduling structure.
|
|
61
|
+
|
|
62
|
+
### 5. Fabric as Safety and Telemetry Layer
|
|
63
|
+
|
|
64
|
+
XTend-Fabric is the global host safety layer for error boundaries, reporter adapters, telemetry, lane/fiber context, backpressure and quality signals.
|
|
65
|
+
|
|
66
|
+
Fabric may ingest RMT adapter results and scheduler signals, but it must not replace the RMT kernel. This keeps the boundary clear:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
RMT Kernel -> Adapter / Bridge Result -> XTend-Fabric -> XTend UI / Reporter
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 6. Performance by Design
|
|
73
|
+
|
|
74
|
+
Performance is not a later optimization step. Components must declare their hydration, visibility, idle, busy and measurement profiles. Loader, Fabric and RMT may use these profiles for scheduling and diagnostics.
|
|
75
|
+
|
|
76
|
+
The accepted baselines are:
|
|
77
|
+
|
|
78
|
+
- local ESM instead of CDN dependency
|
|
79
|
+
- manifest-based import policy
|
|
80
|
+
- lazy, idle and visible hydration policies
|
|
81
|
+
- performance regression gates
|
|
82
|
+
- component-level performance profiles
|
|
83
|
+
- shell-first rendering for initial app setup
|
|
84
|
+
|
|
85
|
+
### 7. A11y by Design
|
|
86
|
+
|
|
87
|
+
A11y is part of the Component Contract. New components must treat keyboard behavior, focus, ARIA, screen-reader signals, reduced motion, contrast and visible states as product surface.
|
|
88
|
+
|
|
89
|
+
RMT may describe a11y-relevant shell and component metadata. Concrete execution remains with XTend UI and the host adapters.
|
|
90
|
+
|
|
91
|
+
### 8. Tooling Is Part of the Product
|
|
92
|
+
|
|
93
|
+
RMT is not only a runtime format, but an authoring language. Therefore linter, AI-agent repair report, snippets, LSP, editor bridges and release gates belong to the platform.
|
|
94
|
+
|
|
95
|
+
The language server uses the same semantics as `xt rmt lint`; editor integrations must not maintain a second RMT rule world.
|
|
96
|
+
|
|
97
|
+
## System View
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
App / Host
|
|
101
|
+
|
|
|
102
|
+
| local ESM + manifest policy
|
|
103
|
+
v
|
|
104
|
+
XTend Loader
|
|
105
|
+
|
|
|
106
|
+
+-- XTend UI Components
|
|
107
|
+
| +-- x-router / x-link
|
|
108
|
+
| +-- x-header / x-menu / x-icon / x-hero / ...
|
|
109
|
+
| +-- form, feedback, overlay, media and layout components
|
|
110
|
+
|
|
|
111
|
+
+-- xstate / xtheme / api.js
|
|
112
|
+
|
|
|
113
|
+
+-- XTend-Fabric
|
|
114
|
+
|
|
|
115
|
+
+-- telemetry, fibers, lanes, reporter adapters
|
|
116
|
+
|
|
|
117
|
+
+-- optional RMT adapter results
|
|
118
|
+
|
|
119
|
+
XTendRMT
|
|
120
|
+
|
|
|
121
|
+
+-- .rmt source model
|
|
122
|
+
+-- templates, routes, components, schedules, adapters
|
|
123
|
+
+-- linter, language server, snippets, diagnostics
|
|
124
|
+
|
|
|
125
|
+
+-- host adapters: xtend.component, xtend.xrouter, docs.parsedown, custom hosts
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Runtime Decisions
|
|
129
|
+
|
|
130
|
+
### Loader and Manifest
|
|
131
|
+
|
|
132
|
+
The canonical loader is `xtend-loader.js`. It is local, ESM-based and manifest-driven. External CDNs are not the normal path. Manifest URLs and component imports are subject to the import policy.
|
|
133
|
+
|
|
134
|
+
### Components
|
|
135
|
+
|
|
136
|
+
Components follow Component Contract v2 and the Epic 11 UX shell line:
|
|
137
|
+
|
|
138
|
+
- TypeScript-first source when new components are created
|
|
139
|
+
- public types
|
|
140
|
+
- RMT metadata
|
|
141
|
+
- Fabric boundary
|
|
142
|
+
- a11y and performance profile
|
|
143
|
+
- component fixture
|
|
144
|
+
- component suite
|
|
145
|
+
- docs page
|
|
146
|
+
|
|
147
|
+
`x-icon` is the reference case for a framework-agnostic extension: internal Core icon pack, local Lucide extension, pack registry and RMT-compatible adapter without a CDN requirement.
|
|
148
|
+
|
|
149
|
+
### Routing
|
|
150
|
+
|
|
151
|
+
`x-router` remains the XTend UI routing component. RMT can declare routes and pass them to XRouter through the `xtend.xrouter` adapter. Page titles, route metadata and shell-near navigation may be described in RMT.
|
|
152
|
+
|
|
153
|
+
### Docs App
|
|
154
|
+
|
|
155
|
+
The Docs App is not only documentation, but a product example. It should show:
|
|
156
|
+
|
|
157
|
+
- shell-first rendering with RMT
|
|
158
|
+
- Parsedown as a scheduled content component
|
|
159
|
+
- stable navigation with `x-router`
|
|
160
|
+
- Quick Start, RMT Authoring, linter and LSP as the official developer journey
|
|
161
|
+
- no app-specific parallel logic when a missing capability belongs in XTend components
|
|
162
|
+
|
|
163
|
+
## Non-Goals
|
|
164
|
+
|
|
165
|
+
This decision explicitly does not mean:
|
|
166
|
+
|
|
167
|
+
- XTend becomes a React/Vue replacement with its own virtual DOM.
|
|
168
|
+
- RMT becomes bound to XTend.
|
|
169
|
+
- Fabric becomes the parser, router or scheduler kernel.
|
|
170
|
+
- `.rmt.json` is promoted as the preferred authoring format.
|
|
171
|
+
- Editor plugins may introduce their own RMT semantics.
|
|
172
|
+
- Components may treat a11y or performance as optional polish for later.
|
|
173
|
+
|
|
174
|
+
## Consequences
|
|
175
|
+
|
|
176
|
+
1. New architecture work must first be assigned to a layer: Loader, XTend UI, Fabric, RMT, Tooling or Docs.
|
|
177
|
+
2. When XTend-specific behavior is needed in RMT, an adapter contract is created, not a kernel special case.
|
|
178
|
+
3. When an app needs special logic, first check whether a generic Component, Fabric or RMT capability is missing.
|
|
179
|
+
4. New documentation must recommend native `.rmt` files. `.rmt.json` may only be described as a fallback.
|
|
180
|
+
5. Every new first-class component needs RMT, Fabric, a11y, performance, type and test coverage.
|
|
181
|
+
6. Release and reference gates remain part of the architecture contract.
|
|
182
|
+
|
|
183
|
+
## Binding Gates
|
|
184
|
+
|
|
185
|
+
The architecture baseline is protected by local gates:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
node scripts/run_xtend_tests.js architecture
|
|
189
|
+
node scripts/run_xtend_tests.js references --json
|
|
190
|
+
node scripts/run_xtend_tests.js rmt-compatibility --json
|
|
191
|
+
node scripts/run_xtend_tests.js epic14-lsp-handoff --json
|
|
192
|
+
npm run test:release:full:report
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
For focused work, the specialized gates remain authoritative:
|
|
196
|
+
|
|
197
|
+
| Area | Gate |
|
|
198
|
+
|------|------|
|
|
199
|
+
| Core architecture | `node scripts/run_xtend_tests.js architecture` |
|
|
200
|
+
| Component Catalog | `npm run test:catalog-coverage` |
|
|
201
|
+
| RMT Tooling | `npm run test:rmt-tooling` |
|
|
202
|
+
| LSP Handoff | `npm run test:epic14-lsp-handoff` |
|
|
203
|
+
| Docs references | `node scripts/run_xtend_tests.js references --json` |
|
|
204
|
+
|
|
205
|
+
## Accepted Follow-up Decisions
|
|
206
|
+
|
|
207
|
+
This ADR integrates the results of the previous individual decisions:
|
|
208
|
+
|
|
209
|
+
- Loader and local development: `xtend.loader.local-development.adr.v1`
|
|
210
|
+
- XTend-Fabric: `xtend.fabric.adr.v1`
|
|
211
|
+
- Security Trust Boundaries: `xtend.security.trust-boundaries.adr.v1`
|
|
212
|
+
- XTendRMT First-Class Fusion: `development/ADR-XTendRMT-First-Class-Fusion.md`
|
|
213
|
+
- RMT Tooling and LSP Handoff: `xtend.epic14.lsp-handoff.v1`
|
|
214
|
+
|
|
215
|
+
The individual ADRs remain valid as detail sources. This document is the current Docs App baseline for the overall picture.
|
|
216
|
+
|
|
217
|
+
## Conclusion
|
|
218
|
+
|
|
219
|
+
XTend is no longer a loose component package, but a connected platform made of Web Components, loader, state, Fabric, RMT and authoring tooling.
|
|
220
|
+
|
|
221
|
+
The most important product path is no longer just broadening the surface, but consistently maturing this platform: native `.rmt` authoring experience, better editor support, stable component shells, a11y, performance, security and traceable release gates.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# A11y Keyboard Smokes
|
|
2
|
+
|
|
3
|
+
Contract:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
xtend.docs.a11y-keyboard-smokes.v1
|
|
7
|
+
xtend.a11y.browser-keyboard-smoke.v1
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Starting with `ER-WP-24`, XTend verifies central accessibility interactions in
|
|
11
|
+
a browser-near way. The gate does not replace manual screen reader reviews, but
|
|
12
|
+
it prevents focus and keyboard paths from silently dropping out of core
|
|
13
|
+
components.
|
|
14
|
+
|
|
15
|
+
## Fixture
|
|
16
|
+
|
|
17
|
+
The self-checking browser fixture lives here:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
tests/browser/fixtures/a11y-focus-keyboard-smoke.html
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
It uses:
|
|
24
|
+
|
|
25
|
+
- `xtend-loader.js`
|
|
26
|
+
- `data-manifest="/tests/browser/fixtures/components/manifest.json"`
|
|
27
|
+
- local component modules
|
|
28
|
+
- `window.__xtendA11yKeyboardSmokeResult`
|
|
29
|
+
|
|
30
|
+
## Covered Paths
|
|
31
|
+
|
|
32
|
+
| Area | Component | Expectation |
|
|
33
|
+
|------|-----------|-------------|
|
|
34
|
+
| Routing | `x-link` + `x-router` | `Enter` and `Space` navigate, `aria-current` follows the route |
|
|
35
|
+
| Form | `x-input` + `x-form` | focus is delegated, input syncs `xstate` and form data |
|
|
36
|
+
| Tabs | `x-tabs` | `ArrowRight`, `ArrowLeft`, and `Enter` remain operable |
|
|
37
|
+
| Overlay | `x-modal` | initial focus, focus trap, `Escape`, and focus restore work |
|
|
38
|
+
|
|
39
|
+
`x-dialog` uses the same overlay contract and is checked source-side for focus
|
|
40
|
+
trap, `Escape`, and focus restore.
|
|
41
|
+
|
|
42
|
+
## Local Gates
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
node scripts/run_xtend_tests.js browser --json
|
|
46
|
+
node scripts/run_xtend_tests.js a11y-hydration --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Optionally, the browser smoke can be run with Safari WebDriver:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
XTEND_BROWSER_SMOKE_DRIVER=safari node scripts/run_xtend_tests.js browser
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The default run stays deterministic and does not require an external browser.
|
|
56
|
+
|
|
57
|
+
## Component Authors
|
|
58
|
+
|
|
59
|
+
New or modernized components should derive their a11y path from the profile:
|
|
60
|
+
|
|
61
|
+
- Routing and commands: `Enter`, optional `Space`, active ARIA state.
|
|
62
|
+
- Overlays: initial focus, focus trap, `Escape`, focus restore.
|
|
63
|
+
- Form controls: delegated focus, input events, state/form synchronization.
|
|
64
|
+
- Composite widgets: arrow keys and current ARIA state.
|
|
65
|
+
|
|
66
|
+
Scaffolded components receive an `xtend.a11y.profile.v1` starting with
|
|
67
|
+
`ER-WP-23`. ER-WP-24 provides the browser-near gate that such profiles can
|
|
68
|
+
later attach to component-by-component.
|
package/docs/en/about.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# About This Documentation Web App
|
|
2
|
+
|
|
3
|
+
This web application provides interactive documentation for the XTend Web
|
|
4
|
+
Framework and is built entirely on modern Web Components. It offers a modular,
|
|
5
|
+
fast, and developer-friendly interface for engineers and users.
|
|
6
|
+
|
|
7
|
+
## Open Source Projects Used
|
|
8
|
+
|
|
9
|
+
### Parsedown
|
|
10
|
+
|
|
11
|
+
This application uses **Parsedown** by Emanuil Rusev for Markdown processing.
|
|
12
|
+
|
|
13
|
+
> (c) Emanuil Rusev
|
|
14
|
+
> http://erusev.com
|
|
15
|
+
|
|
16
|
+
### XRouter PHP
|
|
17
|
+
|
|
18
|
+
Routing and server-side logic are based on a PHP implementation of XRouter,
|
|
19
|
+
developed by **CCS Networks**. The project is now available under the name
|
|
20
|
+
**xrouter.php**.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
Further information and credits are available in the respective component
|
|
25
|
+
documentation.
|
package/docs/en/api.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# XTend API
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`api.js` is the orchestration layer between the loader, core components, and
|
|
6
|
+
global helper APIs. It initializes the XTend APIs idempotently, hardens the
|
|
7
|
+
shared UI state, and loads API-relevant components from the manifest.
|
|
8
|
+
|
|
9
|
+
## Initialization
|
|
10
|
+
|
|
11
|
+
The loader imports `api.js` after loading the manifest and then calls
|
|
12
|
+
`initXTendAPI(manifest)`.
|
|
13
|
+
|
|
14
|
+
```js
|
|
15
|
+
const api = await import('./api.js');
|
|
16
|
+
await api.initXTendAPI(manifest);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Contract of `initXTendAPI(manifest)`
|
|
20
|
+
|
|
21
|
+
- initializes `ui` in `xstate` defensively and does not destroy existing UI
|
|
22
|
+
state on repeated calls
|
|
23
|
+
- provides theme state (`theme`, `themes`) only when it does not already exist
|
|
24
|
+
- loads API-relevant core modules through manifest URLs as ES modules
|
|
25
|
+
- rebinds the global helpers to the `window.XTend` namespace if the API is
|
|
26
|
+
initialized again
|
|
27
|
+
|
|
28
|
+
## Global APIs
|
|
29
|
+
|
|
30
|
+
After successful initialization, these APIs are available:
|
|
31
|
+
|
|
32
|
+
- `window.XTheme`
|
|
33
|
+
- `window.XToast`
|
|
34
|
+
- `window.XAlert`
|
|
35
|
+
- `window.XDialog`
|
|
36
|
+
- `window.XModal`
|
|
37
|
+
|
|
38
|
+
The APIs are also mirrored under `window.XTend`:
|
|
39
|
+
|
|
40
|
+
- `window.XTend.theme`
|
|
41
|
+
- `window.XTend.toast`
|
|
42
|
+
- `window.XTend.alert`
|
|
43
|
+
- `window.XTend.dialog`
|
|
44
|
+
- `window.XTend.modal`
|
|
45
|
+
- `window.XTend.compliance`
|
|
46
|
+
|
|
47
|
+
Legacy helpers remain available:
|
|
48
|
+
|
|
49
|
+
- `window.showToast`
|
|
50
|
+
- `window.showAlert`
|
|
51
|
+
- `window.showDialog`
|
|
52
|
+
- `window.showModal`
|
|
53
|
+
|
|
54
|
+
## Compliance API
|
|
55
|
+
|
|
56
|
+
`window.XTend.compliance` describes the productive core review contract.
|
|
57
|
+
Available methods:
|
|
58
|
+
|
|
59
|
+
- `getChecklist()`
|
|
60
|
+
- `getCoreContracts()`
|
|
61
|
+
- `getThemeTokens(themeName?)`
|
|
62
|
+
|
|
63
|
+
The runtime also mirrors this metadata into `xstate`:
|
|
64
|
+
|
|
65
|
+
- `xtend.compliance.version`
|
|
66
|
+
- `xtend.compliance.checklist`
|
|
67
|
+
- `xtend.compliance.contracts`
|
|
68
|
+
|
|
69
|
+
## UI State
|
|
70
|
+
|
|
71
|
+
The API manages the shared UI state under `xstate.get('ui')`.
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
{
|
|
75
|
+
toasts: [],
|
|
76
|
+
alerts: [],
|
|
77
|
+
dialogs: [],
|
|
78
|
+
modals: []
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The API updates this state incrementally. Re-initialization no longer resets
|
|
83
|
+
active UI entries.
|
|
84
|
+
|
|
85
|
+
## Theme API
|
|
86
|
+
|
|
87
|
+
`window.XTheme` is the public theme facade. Important methods:
|
|
88
|
+
|
|
89
|
+
- `getCurrentTheme()`
|
|
90
|
+
- `getAvailableThemes()`
|
|
91
|
+
- `setTheme(themeName)`
|
|
92
|
+
- `set(name, value)`
|
|
93
|
+
- `get(name)`
|
|
94
|
+
- `subscribe(fn)`
|
|
95
|
+
- `registerTheme(name, properties)`
|
|
96
|
+
- `loadExternalTheme(themeName, cssUrl)`
|
|
97
|
+
- `toggleDarkMode()`
|
|
98
|
+
|
|
99
|
+
`set(name, value)` is the compatibility facade:
|
|
100
|
+
|
|
101
|
+
- `set('dark')` switches to a theme
|
|
102
|
+
- `set('--primary-color', '#0e4e81')` sets a CSS variable for the current theme
|
|
103
|
+
|
|
104
|
+
## Dialog and Modal Flags
|
|
105
|
+
|
|
106
|
+
The API writes open state compatibly for existing call sites:
|
|
107
|
+
|
|
108
|
+
- Dialog: `dialog-open-<id>`, `xdialog-open-<id>`
|
|
109
|
+
- Modal: `modal-open-<id>`
|
|
110
|
+
|
|
111
|
+
The canonical target path from the contract matrix remains relevant for new
|
|
112
|
+
work:
|
|
113
|
+
|
|
114
|
+
- `xtend.component.x-dialog.<id>.open`
|
|
115
|
+
- `xtend.component.x-modal.<id>.open`
|
|
116
|
+
|
|
117
|
+
## XTendRMT Runtime API
|
|
118
|
+
|
|
119
|
+
XTendRMT is not part of `api.js`, but the public XTend developer docs include
|
|
120
|
+
the productive integration path. Runtime factories live in artifacts under
|
|
121
|
+
`xtendrmt/`:
|
|
122
|
+
|
|
123
|
+
- `createRmtFormat`
|
|
124
|
+
- `createRmtXRouterAdapter`
|
|
125
|
+
- `createRmtXtendComponentAdapter`
|
|
126
|
+
- `createRmtStateSchedulerDiagnosticsBridge`
|
|
127
|
+
|
|
128
|
+
ESM:
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
import {
|
|
132
|
+
createRmtFormat,
|
|
133
|
+
createRmtXRouterAdapter,
|
|
134
|
+
createRmtXtendComponentAdapter,
|
|
135
|
+
createRmtStateSchedulerDiagnosticsBridge
|
|
136
|
+
} from './xtendrmt/rmt-runtime.esm.js';
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Browser classic:
|
|
140
|
+
|
|
141
|
+
```html
|
|
142
|
+
<script src="/xtendrmt/rmt-runtime.browser.js"></script>
|
|
143
|
+
<script type="module">
|
|
144
|
+
const format = window.AppModules.createRmtFormat();
|
|
145
|
+
const rmt = window.xtend.rmt;
|
|
146
|
+
</script>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
RMT-adjacent XTend integrations should use these factories instead of private
|
|
150
|
+
demo bridges or direct kernel coupling. Details are in
|
|
151
|
+
[XTendRMT Runtime Bridge](./xtendrmt-runtime-bridge.md).
|
|
152
|
+
|
|
153
|
+
## Notes
|
|
154
|
+
|
|
155
|
+
- `api.js` is runtime orchestration, not a static component list.
|
|
156
|
+
- The API expects a consistent manifest and already available `xstate`
|
|
157
|
+
bootstrap infrastructure.
|
|
158
|
+
- Components should still preferably be used declaratively; the API is meant
|
|
159
|
+
for dynamic flows.
|
|
160
|
+
- After core changes, run `node scripts/verify_xtend_core_contracts.js`.
|
|
161
|
+
|
|
162
|
+
## Related Topics
|
|
163
|
+
|
|
164
|
+
- [Manifest Format](./manifest.md)
|
|
165
|
+
- [XTend Loader](./xtend-loader.md)
|
|
166
|
+
- [xrouter](./components/xrouter.md)
|
|
167
|
+
- [xlink](./components/xlink.md)
|
|
168
|
+
- [xtheme](./components/xtheme.md)
|
|
169
|
+
- [Core Migration Guide](./core-migration-guide.md)
|
|
170
|
+
- [XTendRMT Developer Overview](./xtendrmt-overview.md)
|
|
171
|
+
- [XTendRMT Runtime Bridge](./xtendrmt-runtime-bridge.md)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Best Practices for XTend
|
|
2
|
+
|
|
3
|
+
These recommendations help you build XTend projects that are robust,
|
|
4
|
+
performant, and maintainable for human developers and AI coding agents alike.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Component Usage
|
|
9
|
+
|
|
10
|
+
- **Prefer declarative usage:** Use XTend components directly in HTML whenever
|
|
11
|
+
possible, not only dynamically through JavaScript.
|
|
12
|
+
- **Lazy loading:** Build pages so components load only when needed
|
|
13
|
+
(viewport, user interaction).
|
|
14
|
+
- **Shadow DOM:** Use Shadow DOM for style encapsulation and conflict
|
|
15
|
+
prevention.
|
|
16
|
+
- **Slots and attributes:** Use slots and attributes for flexible, reusable
|
|
17
|
+
components.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## State Management
|
|
22
|
+
|
|
23
|
+
- **Use xstate:** Share global and local state through the central state
|
|
24
|
+
management module.
|
|
25
|
+
- **Subscriptions:** React to state changes with `xstate.subscribe` instead of
|
|
26
|
+
expensive DOM queries.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Theming and Styling
|
|
31
|
+
|
|
32
|
+
- **CSS custom properties:** Use variables for colors, spacing, and similar
|
|
33
|
+
values so design stays flexible.
|
|
34
|
+
- **Use xtheme:** Apply global styles and theme changes centrally through the
|
|
35
|
+
theme module.
|
|
36
|
+
- **Dark/light mode:** Support both modes and respect system preferences.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Accessibility
|
|
41
|
+
|
|
42
|
+
- **ARIA roles:** Use meaningful ARIA attributes and roles.
|
|
43
|
+
- **Keyboard navigation:** Ensure every interactive component is operable by
|
|
44
|
+
keyboard.
|
|
45
|
+
- **Focus management:** Dialogs, modals, and menus should place and restore
|
|
46
|
+
focus correctly.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Performance
|
|
51
|
+
|
|
52
|
+
- **Minimized manifest:** Remove unused components from the manifest for
|
|
53
|
+
production builds.
|
|
54
|
+
- **Small bundles:** Keep components modular and small to optimize load time.
|
|
55
|
+
- **IntersectionObserver:** Use lazy loading for large or rarely used
|
|
56
|
+
components.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Development and Maintenance
|
|
61
|
+
|
|
62
|
+
- **Documentation:** Every component should have its own current Markdown
|
|
63
|
+
documentation.
|
|
64
|
+
- **Naming conventions:** Keep the `x` prefix and use descriptive names.
|
|
65
|
+
- **Testing:** Test components in isolation and together.
|
|
66
|
+
- **Cross references:** Maintain cross-links in the docs for better orientation.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Testing Requirement for New Components
|
|
71
|
+
|
|
72
|
+
- **Choose a profile:** Assign every new or modernized component to a profile
|
|
73
|
+
from `development/XTend-Component-Level-Teststandard.md`.
|
|
74
|
+
- **Keep artifacts complete:** Component, docs, component suite, fixture, type
|
|
75
|
+
definition, and manifest entry are required unless an exception is explicitly
|
|
76
|
+
justified.
|
|
77
|
+
- **Use scaffold as the default path:** `XTend-Scaffold` must use the testing
|
|
78
|
+
requirement from `development/XTend-Testpflicht-und-Scaffold-Anschluss.md` as
|
|
79
|
+
its blueprint.
|
|
80
|
+
- **Run local gates:** Use at least `node scripts/run_xtend_tests.js components`,
|
|
81
|
+
`a11y-hydration`, `references`, and for RMT-compatible scaffold artifacts
|
|
82
|
+
`rmt-compatibility`; when core behavior is involved, also run `core`,
|
|
83
|
+
`architecture`, and `browser`.
|
|
84
|
+
- **No placeholder tests:** Test files without real assertions do not satisfy
|
|
85
|
+
the testing requirement.
|
|
86
|
+
|
|
87
|
+
## XTendRMT-Compatible Development
|
|
88
|
+
|
|
89
|
+
- **Prefer native domains:** New RMT-adjacent work uses `adapters`,
|
|
90
|
+
`components`, `routes`, `schedules`, and `templates` instead of operational
|
|
91
|
+
`manifest.metadata` blocks.
|
|
92
|
+
- **Keep the kernel boundary:** XTend, XRouter, DOM, `window.XTend`, and
|
|
93
|
+
`xstate` belong in adapters or host code, not in the RMT kernel.
|
|
94
|
+
- **Use productive factories:** Use `createRmtXRouterAdapter`,
|
|
95
|
+
`createRmtXtendComponentAdapter`, and
|
|
96
|
+
`createRmtStateSchedulerDiagnosticsBridge` instead of private demo bridge
|
|
97
|
+
logic.
|
|
98
|
+
- **Check multi-host behavior:** XTend is a first-class host, but not a required
|
|
99
|
+
host. A non-XTend path such as `vanilla.component` should be considered for
|
|
100
|
+
framework-adjacent changes.
|
|
101
|
+
- **Respect Trusted DOM:** RMT `dom_descriptor` is preferred. RMT
|
|
102
|
+
`html_fragment` and Parsedown HTML need
|
|
103
|
+
`xtend.security.sanitizing-boundary.v1`; raw `innerHTML` sinks do not belong
|
|
104
|
+
in components or adapters.
|
|
105
|
+
- **Respect the Docs App:** The official docs use Parsedown as parser host, but
|
|
106
|
+
render their shell shell-first through RMT. New docs convenience features
|
|
107
|
+
should use `docs/xtendrmt-parsedown-scheduling.md`, `docs.app.shell`, and the
|
|
108
|
+
existing RMT schedules instead of building a second SPA layer next to the host
|
|
109
|
+
adapter.
|
|
110
|
+
- **Run gates:** For RMT-adjacent changes, run at least
|
|
111
|
+
`node scripts/run_xtend_tests.js rmt-compatibility --json`,
|
|
112
|
+
`node scripts/run_xtend_tests.js references --json`, and, for browser paths,
|
|
113
|
+
`node scripts/run_xtend_tests.js browser --json`.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## AI Optimization
|
|
118
|
+
|
|
119
|
+
- **Consistent API:** Keep methods and attributes consistent and descriptive.
|
|
120
|
+
- **Example code:** Add concrete code examples to every doc.
|
|
121
|
+
- **Semantic structure:** Use clear headings, tables, and lists for AI parsing.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
*Last updated: May 5, 2026*
|