@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,161 @@
|
|
|
1
|
+
# xutils - XTend Utility Module
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`x-utils` is a manifest-managed utility module, not its own Custom Element
|
|
6
|
+
surface. The module exports `XUtils` and additionally exposes `window.XUtils`
|
|
7
|
+
in the browser. It collects small DOM, event, a11y, format, and low-code
|
|
8
|
+
helpers for XTend components and demos.
|
|
9
|
+
|
|
10
|
+
## Import
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
import { XUtils } from './components/xutils.js';
|
|
14
|
+
|
|
15
|
+
const button = XUtils.create('button', {
|
|
16
|
+
textContent: 'Save'
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
In the browser, after loading the module:
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
window.XUtils.find('[data-action="save"]');
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## DOM and Event API
|
|
27
|
+
|
|
28
|
+
| Method | Description |
|
|
29
|
+
|--------|-------------|
|
|
30
|
+
| `find(selector, root?)` | returns the first matching element |
|
|
31
|
+
| `findAll(selector, root?)` | returns all matching elements as an array |
|
|
32
|
+
| `create(tag, props?)` | creates an element and assigns properties |
|
|
33
|
+
| `on(el, type, handler, opts?)` | registers a listener and returns a cleanup function |
|
|
34
|
+
| `delegate(root, selector, type, handler)` | delegates events within a container |
|
|
35
|
+
|
|
36
|
+
## A11y and UI Helpers
|
|
37
|
+
|
|
38
|
+
| Method | Description |
|
|
39
|
+
|--------|-------------|
|
|
40
|
+
| `setAria(el, attrs)` | sets `aria-*` attributes from an object |
|
|
41
|
+
| `focusTrap(container)` | focuses the first focusable element in the container |
|
|
42
|
+
| `fadeIn(el, duration?)` | simple opacity animation |
|
|
43
|
+
| `fadeOut(el, duration?)` | simple opacity animation |
|
|
44
|
+
| `resolveUiEffects(input?)` | normalizes opt-in UI effects from body attribute, loader option, or RMT |
|
|
45
|
+
| `prepareUiEffects(input?)` | prepares an opt-in UI effect, for example body fade |
|
|
46
|
+
| `releaseUiEffects(input?)` | releases a prepared UI effect |
|
|
47
|
+
| `isMobile()` | checks the local mobile breakpoint |
|
|
48
|
+
|
|
49
|
+
## Format and Data Helpers
|
|
50
|
+
|
|
51
|
+
| Method | Description |
|
|
52
|
+
|--------|-------------|
|
|
53
|
+
| `hexToRgb(hex)` | converts hex colors to RGB values |
|
|
54
|
+
| `contrastColor(hex)` | returns black or white as contrast color |
|
|
55
|
+
| `formatDate(date, locale?)` | formats a date |
|
|
56
|
+
| `formatNumber(num, locale?)` | formats a number |
|
|
57
|
+
| `uniqueId(prefix?)` | creates a simple runtime ID |
|
|
58
|
+
| `deepClone(obj)` | creates a JSON-based copy |
|
|
59
|
+
|
|
60
|
+
## XTemplate Recipes
|
|
61
|
+
|
|
62
|
+
`XUtils.XTemplate` contains small low-code recipes for simple DOM fragments:
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
const card = XUtils.XTemplate.card({
|
|
66
|
+
title: 'Status',
|
|
67
|
+
content: 'All systems ready'
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const action = XUtils.XTemplate.button({
|
|
71
|
+
label: 'Refresh',
|
|
72
|
+
onClick: () => window.location.reload()
|
|
73
|
+
});
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Current recipes:
|
|
77
|
+
|
|
78
|
+
| Recipe | Description |
|
|
79
|
+
|--------|-------------|
|
|
80
|
+
| `card(opts)` | creates a simple card structure |
|
|
81
|
+
| `button(opts)` | creates a button |
|
|
82
|
+
| `modal(opts)` | creates a simple modal structure |
|
|
83
|
+
|
|
84
|
+
## Contract
|
|
85
|
+
|
|
86
|
+
- `x-utils` exists as a manifest entry, but remains a utility module.
|
|
87
|
+
- It does not register `customElements.define()`.
|
|
88
|
+
- `docs/components/xutils.md` is the canonical docs slug for the source
|
|
89
|
+
basename `xutils.js`.
|
|
90
|
+
- Runtime tag and manifest key remain `x-utils` for the Catalog Matrix.
|
|
91
|
+
|
|
92
|
+
## Utility Boundary Contract
|
|
93
|
+
|
|
94
|
+
Since `WP-E12-09`, `x-utils` is gateable as a non-visual utility boundary:
|
|
95
|
+
|
|
96
|
+
- Utility Schema: `xtend.utility.module-contract.v1`
|
|
97
|
+
- Import Policy Schema: `xtend.utility.import-policy.v1`
|
|
98
|
+
- Import Policy Result Schema: `xtend.utility.import-policy-result.v1`
|
|
99
|
+
- Boundary Probe Schema: `xtend.utility.boundary-probe.v1`
|
|
100
|
+
- Kernel Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
101
|
+
|
|
102
|
+
The runtime provides three explicit contract APIs:
|
|
103
|
+
|
|
104
|
+
| Method | Description |
|
|
105
|
+
|--------|-------------|
|
|
106
|
+
| `getUtilityContract()` | returns categories, exports, globals, and methods of the utility surface |
|
|
107
|
+
| `snapshotUtilityContract()` | returns a stable boundary snapshot for fixtures and catalog gates |
|
|
108
|
+
| `assertLocalImport(specifier)` | checks whether an import specifier is local and policy-compliant |
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
const local = XUtils.assertLocalImport('/components/xbutton.js');
|
|
112
|
+
const blocked = XUtils.assertLocalImport('https://cdn.ccs-networks.de/xtend/components/xstate.js');
|
|
113
|
+
|
|
114
|
+
console.log(local.allowed); // true
|
|
115
|
+
console.log(blocked.allowed); // false
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
`assertLocalImport()` also dispatches `xutils:import-policy-check` in the
|
|
119
|
+
browser. The event is intended for test, Fabric, and security harnesses; the
|
|
120
|
+
RMT kernel still does not import `x-utils`.
|
|
121
|
+
|
|
122
|
+
## UI Effects Boundary
|
|
123
|
+
|
|
124
|
+
Since `xtend.utility.ui-effects.v1`, `x-utils` encapsulates opt-in effects that
|
|
125
|
+
can influence the app shell. The global loader no longer hides the body by
|
|
126
|
+
default. Fade-in must be explicitly enabled:
|
|
127
|
+
|
|
128
|
+
```html
|
|
129
|
+
<body xt-ui-effects="fade-in">
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
RMT hosts can describe the same effect as a non-visual intent:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"id": "app.ui-effects",
|
|
137
|
+
"kind": "ui_effects",
|
|
138
|
+
"tag": "ui-effects",
|
|
139
|
+
"props": {
|
|
140
|
+
"effect": "fade-in"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The host side remains the place of execution. RMT describes only the intent;
|
|
146
|
+
`XUtils.prepareUiEffects()` and `XUtils.releaseUiEffects()` set the DOM
|
|
147
|
+
attributes `data-xt-ui-effects`, `data-xt-ui-effects-state`, and
|
|
148
|
+
`data-xt-ui-effects-ready`. For environments without RMT, the body attribute is
|
|
149
|
+
enough. For shell-first apps that want no effect, no attribute is needed, or
|
|
150
|
+
`xt-ui-effects="none"` can be set explicitly.
|
|
151
|
+
|
|
152
|
+
## Notes
|
|
153
|
+
|
|
154
|
+
- New components should prefer their own component APIs and XTend-Fabric gates
|
|
155
|
+
for productive UI contracts.
|
|
156
|
+
- `x-utils` remains a small helper-module path for existing code, demos, and
|
|
157
|
+
simple DOM work.
|
|
158
|
+
- Suite, fixture, and utility typing have existed since `WP-E12-09`.
|
|
159
|
+
- Since `WP-E13-05`, `x-utils` is classified as `closed-as-utility-boundary`.
|
|
160
|
+
A separate visual performance profile is not an open RC1 task for this
|
|
161
|
+
utility boundary.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# xwriter - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xcode](./xcode.md), [xinput](./xinput.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-writer>` is a component for rich-text editing and simple WYSIWYG editors.
|
|
8
|
+
It supports formatting, theming, state integration, autosave, export, and API
|
|
9
|
+
integration.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Rich-text editing (bold, italic, lists, links, colors, sizes)
|
|
16
|
+
- State integration through xstate
|
|
17
|
+
- Theming through CSS custom properties
|
|
18
|
+
- Autosave (local or API)
|
|
19
|
+
- Export as Markdown/HTML
|
|
20
|
+
- Drag and drop for images/text
|
|
21
|
+
- API integration (save to server)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<x-writer></x-writer>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Attributes
|
|
34
|
+
|
|
35
|
+
| Attribute | Type | Description |
|
|
36
|
+
|-----------|------|-------------|
|
|
37
|
+
| `value` | String | initial text content (property, not attribute) |
|
|
38
|
+
| `api` | String | API endpoint for saving, for example `/api/save` or `local` for LocalStorage |
|
|
39
|
+
| `method` | String | HTTP method for API (default: `POST`) |
|
|
40
|
+
| `autosave` | Number | autosave interval in ms, for example `10000` for 10s |
|
|
41
|
+
| `storage-key` | String | key for LocalStorage (default: `xwriter-content`) |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Events
|
|
46
|
+
|
|
47
|
+
| Event | Description |
|
|
48
|
+
|-------|-------------|
|
|
49
|
+
| `writer:change` | emitted on text change, detail: `{html, markdown, plain}` |
|
|
50
|
+
| `writer:save` | after save (local/API), detail: `{status, response}` |
|
|
51
|
+
| `writer:autosave` | after autosave |
|
|
52
|
+
| `writer:export` | after export, detail: `{filename, success}` |
|
|
53
|
+
| `writer:error` | on errors, detail: `{error}` |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## API
|
|
58
|
+
|
|
59
|
+
- **Set/read text:** `element.value = 'Text'` (property, not attribute)
|
|
60
|
+
- **State integration:** automatic through xstate
|
|
61
|
+
- **Save:**
|
|
62
|
+
- Local: `<x-writer api="local"></x-writer>`
|
|
63
|
+
- API: `<x-writer api="/api/save" method="POST"></x-writer>`
|
|
64
|
+
- **Export:** through export button (Markdown/HTML)
|
|
65
|
+
|
|
66
|
+
## Form Controls UX from WP-E11-08
|
|
67
|
+
|
|
68
|
+
`<x-writer>` exposes `xtendFormControlUxProfile` with
|
|
69
|
+
`xtend.component.form-control-ux-profile.v1`. The profile describes rich text
|
|
70
|
+
as a form-control-adjacent UX surface with `writer:change`, `writer:error`,
|
|
71
|
+
`xwriter-content`, `component.idle.hydrate`, Fabric lane `idle`, and RMT shell
|
|
72
|
+
authoring. `x-form` can consume `writer:change` and aggregate the value into
|
|
73
|
+
`xform-data-<id>`.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Example: Dynamic JS
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
const writer = document.createElement('x-writer');
|
|
81
|
+
writer.value = 'Hello world!';
|
|
82
|
+
document.body.appendChild(writer);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Styling and Theming
|
|
88
|
+
|
|
89
|
+
```css
|
|
90
|
+
x-writer {
|
|
91
|
+
--writer-bg: #fff;
|
|
92
|
+
--writer-color: #222;
|
|
93
|
+
/* See CSS for more custom properties */
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Accessibility
|
|
100
|
+
|
|
101
|
+
- Semantic HTML, ARIA
|
|
102
|
+
- Keyboard operation
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
*Last updated: July 16, 2025*
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Component Development with XTend
|
|
2
|
+
|
|
3
|
+
XTend components are reusable Web Components. In RMT-first apps they are not
|
|
4
|
+
the app architecture itself: RMT describes the shell, state, actions, events,
|
|
5
|
+
surfaces, and scheduling; XTend Components materialize the visible UI.
|
|
6
|
+
|
|
7
|
+
See also [x-router](./components/xrouter.md), [x-link](./components/xlink.md),
|
|
8
|
+
and the [RMT vNext Authoring Guide](./rmt-vnext-authoring.md).
|
|
9
|
+
|
|
10
|
+
## Core Principles
|
|
11
|
+
|
|
12
|
+
- Every visual component is an ES module and is loaded through the manifest.
|
|
13
|
+
- The manifest key is the canonical runtime and catalog name.
|
|
14
|
+
- For Custom Elements, the tag name matches the manifest key, for example
|
|
15
|
+
`x-button`, `x-input`, `x-summary`.
|
|
16
|
+
- Existing source files follow the module basename without the hyphen, for
|
|
17
|
+
example `xbutton.js` for `x-button`.
|
|
18
|
+
- Components remain independent, configurable, and host-neutral.
|
|
19
|
+
- RMT can reference, mount, hydrate, and connect components to events, but it
|
|
20
|
+
does not import them into the kernel.
|
|
21
|
+
|
|
22
|
+
## Role in RMT-Authored Apps
|
|
23
|
+
|
|
24
|
+
| Layer | Responsibility |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| RMT vNext | describes app shell, surfaces, state, actions, events, and lanes |
|
|
27
|
+
| XTend Component | renders UI and encapsulates Shadow DOM, attributes, properties, and events |
|
|
28
|
+
| Host Adapter | connects RMT records to real Custom Elements and browser DOM |
|
|
29
|
+
| Fabric | runs hydration, render, user-blocking, and idle work as fibers |
|
|
30
|
+
|
|
31
|
+
An RMT surface can, for example, declare `component x-cards`. The host adapter
|
|
32
|
+
loads `x-cards` through the manifest, mounts the Custom Element, and wires event
|
|
33
|
+
payloads into RMT actions.
|
|
34
|
+
|
|
35
|
+
The RMT vNext Component Capability Registry makes this adapter path generic. It
|
|
36
|
+
reads the manifest, Component Contracts, `xtendRmtMetadata`,
|
|
37
|
+
`observedAttributes`, events, slots, parts, form association, accessibility
|
|
38
|
+
profiles, and performance profiles, then exposes capabilities for every public
|
|
39
|
+
manifest component. New components remain normal Web Components; RMT
|
|
40
|
+
compatibility depends on stable public contracts instead of host monkeypatching.
|
|
41
|
+
|
|
42
|
+
## Component Structure
|
|
43
|
+
|
|
44
|
+
A typical component contains:
|
|
45
|
+
|
|
46
|
+
- a class that extends `HTMLElement` or a local base class
|
|
47
|
+
- Shadow DOM or controlled Light DOM
|
|
48
|
+
- styles through CSS custom properties, parts, or local Shadow DOM rules
|
|
49
|
+
- attributes and properties for configuration
|
|
50
|
+
- custom events for communication
|
|
51
|
+
- registration through `customElements.define(...)`
|
|
52
|
+
|
|
53
|
+
### Minimal Example
|
|
54
|
+
|
|
55
|
+
```js
|
|
56
|
+
class XButton extends HTMLElement {
|
|
57
|
+
constructor() {
|
|
58
|
+
super();
|
|
59
|
+
this.attachShadow({ mode: 'open' });
|
|
60
|
+
this.shadowRoot.innerHTML = `
|
|
61
|
+
<button part="button"><slot></slot></button>
|
|
62
|
+
<style>
|
|
63
|
+
:host { display: inline-flex; }
|
|
64
|
+
button { padding: 0.5rem 0.75rem; }
|
|
65
|
+
</style>
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
customElements.define('x-button', XButton);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Naming Rules
|
|
74
|
+
|
|
75
|
+
| Layer | Rule | Example |
|
|
76
|
+
| --- | --- | --- |
|
|
77
|
+
| Manifest key | canonical runtime and catalog name | `x-summary` |
|
|
78
|
+
| Custom Element tag | identical to the manifest key | `<x-summary>` |
|
|
79
|
+
| Source file | module basename from the manifest path | `xsummary.js` |
|
|
80
|
+
| Component docs | source basename plus `.md` | `docs/components/xsummary.md` |
|
|
81
|
+
| Docs menu slug | `components-` plus source basename | `components-xsummary` |
|
|
82
|
+
|
|
83
|
+
Exceptions stay intentionally small: `xstate` is a platform state module,
|
|
84
|
+
`x-utils` is a utility module without a Custom Element, and `x-theme` provides
|
|
85
|
+
the theme facade.
|
|
86
|
+
|
|
87
|
+
## Best Practices
|
|
88
|
+
|
|
89
|
+
- Use Shadow DOM, parts, and CSS custom properties for encapsulation and
|
|
90
|
+
theming.
|
|
91
|
+
- Keep attributes, properties, and events stable and documented.
|
|
92
|
+
- Dispatch events with clear `detail` payloads so RMT actions can consume them
|
|
93
|
+
safely.
|
|
94
|
+
- Avoid global DOM assumptions in components; app structure belongs in RMT.
|
|
95
|
+
- Use `x-icon` for local icons, icon packs, and controlled URL sources.
|
|
96
|
+
- Plan hydration deliberately: visible UI belongs in visible lanes, less urgent
|
|
97
|
+
work belongs in idle or lazy paths.
|
|
98
|
+
|
|
99
|
+
## Example with Attribute and Event
|
|
100
|
+
|
|
101
|
+
```js
|
|
102
|
+
class XCounterButton extends HTMLElement {
|
|
103
|
+
static get observedAttributes() {
|
|
104
|
+
return ['value'];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
constructor() {
|
|
108
|
+
super();
|
|
109
|
+
this.attachShadow({ mode: 'open' });
|
|
110
|
+
this.shadowRoot.innerHTML = `
|
|
111
|
+
<button part="button" type="button"></button>
|
|
112
|
+
`;
|
|
113
|
+
this.shadowRoot.querySelector('button').addEventListener('click', () => {
|
|
114
|
+
const value = Number(this.getAttribute('value') || 0) + 1;
|
|
115
|
+
this.setAttribute('value', String(value));
|
|
116
|
+
this.dispatchEvent(new CustomEvent('counter-change', {
|
|
117
|
+
bubbles: true,
|
|
118
|
+
detail: { value }
|
|
119
|
+
}));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
attributeChangedCallback() {
|
|
124
|
+
const button = this.shadowRoot && this.shadowRoot.querySelector('button');
|
|
125
|
+
if (button) button.textContent = `Counter ${this.getAttribute('value') || 0}`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
customElements.define('x-counter-button', XCounterButton);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
In RMT, this event can be bound to an action as
|
|
133
|
+
`on counter-change -> action ...`.
|
|
134
|
+
|
|
135
|
+
## Testing and Debugging
|
|
136
|
+
|
|
137
|
+
- Components can be tested directly in HTML.
|
|
138
|
+
- Use `xtend-loader.js` and the local dev server for manual tests.
|
|
139
|
+
- Use RMT surfaces when you want to test component behavior in the app
|
|
140
|
+
lifecycle.
|
|
141
|
+
- For API and typing questions, see [Public Component Types](./public-component-types.md).
|
|
142
|
+
|
|
143
|
+
## Related Topics
|
|
144
|
+
|
|
145
|
+
- [Manifest Format](./manifest.md)
|
|
146
|
+
- [XTend Loader](./xtend-loader.md)
|
|
147
|
+
- [RMT vNext Authoring Guide](./rmt-vnext-authoring.md)
|
|
148
|
+
- [RMT vNext Component Primitives and XTend UI](./rmt-vnext-component-primitives.md)
|
|
149
|
+
- [Component Platform](./component-platform.md)
|
|
150
|
+
- [Component UX Authoring](./component-ux-authoring.md)
|
|
151
|
+
- [API Integration](./api.md)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Conditional Network Evidence CI
|
|
2
|
+
|
|
3
|
+
Contract: `xtend.epic13.conditional-network-evidence-ci.v1`
|
|
4
|
+
|
|
5
|
+
Status: `accepted-conditional-network-evidence-ci`
|
|
6
|
+
|
|
7
|
+
Workpackage: `DPF-WP-03-conditional-network-evidence-ci`
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
This package productizes audit and SBOM evidence for CI and release owners. The local gate remains network-free; the CI job can run `npm audit --audit-level=moderate` and `npm sbom --sbom-format=cyclonedx --json`, or write an owner deferral in the `xtend.epic13.conditional-network-deferral.v1` format when network access is unavailable.
|
|
12
|
+
|
|
13
|
+
## Local Gate
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node scripts/run_xtend_tests.js epic13-conditional-network-evidence-ci --json
|
|
17
|
+
npm run test:epic13-conditional-network-evidence-ci
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Capture
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run conditional-network:evidence
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Without `XTEND_CONDITIONAL_NETWORK_EXECUTE=1`, the capture writes local deferral artifacts. In CI, `.github/workflows/xtend-default-gates.yml` sets `XTEND_CONDITIONAL_NETWORK_EXECUTE=1`, installs workspace links via `npm ci --ignore-scripts --no-audit --fund=false`, uses `XTEND_CONDITIONAL_NETWORK_USE_NPX_NPM10=1` for stable SBOM output and uploads the artifacts:
|
|
27
|
+
|
|
28
|
+
- `.xtend-test-results/xtend-npm-audit-report.json`
|
|
29
|
+
- `.xtend-test-results/xtend-npm-sbom.json`
|
|
30
|
+
- `.xtend-test-results/xtend-conditional-network-evidence-report.json`
|
|
31
|
+
|
|
32
|
+
## Boundaries
|
|
33
|
+
|
|
34
|
+
Dependency upgrades, vulnerability fixes and public publish are not included. Publish remains blocked by `private-until-release-owner-acceptance` until audit/SBOM has been executed or accepted as deferred by the owner.
|
|
35
|
+
|
|
36
|
+
The separate GitHub Actions job `npm-publish-next` runs through `workflow_dispatch` with `publish_to_npm=true` or after `release: published` and allows no deferrals: it sets `XTEND_CONDITIONAL_NETWORK_ALLOW_DEFERRAL=0`, repeats `release:report`, pack and audit/SBOM evidence, and then runs `npm publish --tag next --provenance --access public`.
|
|
37
|
+
|
|
38
|
+
The next step is `DPF-WP-04-visual-pixel-evidence-storage`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Conditional Network Evidence
|
|
2
|
+
|
|
3
|
+
`xtend.epic13.conditional-network-evidence.v1` describes how RC1 handles network gates without blocking local development.
|
|
4
|
+
|
|
5
|
+
Local gate:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node scripts/run_xtend_tests.js epic13-conditional-network-evidence --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
or:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run test:epic13-conditional-network-evidence
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
| Command | Artifact |
|
|
20
|
+
|---------|----------|
|
|
21
|
+
| `npm audit --audit-level=moderate` | `.xtend-test-results/xtend-npm-audit-report.json` |
|
|
22
|
+
| `npm sbom --sbom-format=cyclonedx --json` | `.xtend-test-results/xtend-npm-sbom.json` |
|
|
23
|
+
|
|
24
|
+
The aggregated report is stored at `.xtend-test-results/xtend-conditional-network-evidence-report.json`.
|
|
25
|
+
|
|
26
|
+
## Local Behavior
|
|
27
|
+
|
|
28
|
+
The local gate does not automatically execute the network commands. Instead, it verifies that XTend has a stable evidence/deferral format for offline, sandbox and CI environments.
|
|
29
|
+
|
|
30
|
+
As of `DPF-WP-03`, [Conditional Network Evidence CI](./conditional-network-evidence-ci.md) productizes the CI job and capture command `npm run conditional-network:evidence` under `xtend.epic13.conditional-network-evidence-ci.v1`. The job can execute the audit/SBOM commands or place owner deferrals in the same artifact paths.
|
|
31
|
+
|
|
32
|
+
Default reason for local deferrals:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
network-restricted-local-default
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Other allowed reasons:
|
|
39
|
+
|
|
40
|
+
- `sandbox-network-unavailable`
|
|
41
|
+
- `registry-auth-unavailable`
|
|
42
|
+
- `owner-approved-offline-run`
|
|
43
|
+
|
|
44
|
+
## Publish Boundary
|
|
45
|
+
|
|
46
|
+
`private-until-release-owner-acceptance` remains active. Deferred network evidence is a review signal, but not a publish approval.
|
|
47
|
+
|
|
48
|
+
`WP-E13-04` is complete. [Package Export Lock](./package-export-lock.md) describes how `npm run pack:dry-run` and the export surface are locked for RC1. `WP-E13-05` is complete; `WP-E13-06` completed the [Hydration Performance Closure](./hydration-performance-closure.md). `WP-E13-07` prepared the [PROD Browser CSP Smokes](./prod-browser-csp-smokes.md). `WP-E13-08` normalized [Visual Owner Artifacts](./visual-owner-artifacts.md). `WP-E13-09` can now start.
|
|
49
|
+
|
|
50
|
+
Further reading: [Release Owner Acceptance](./release-owner-acceptance.md).
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# XTend Core Migration Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This guide summarizes the production Core standards from Epic 01. It serves as a migration aid for legacy call sites and as a reference for new XTend Core changes.
|
|
6
|
+
|
|
7
|
+
## Verification
|
|
8
|
+
|
|
9
|
+
The current Core contract can be verified automatically:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
node scripts/verify_xtend_core_contracts.js
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Runtime Standards
|
|
16
|
+
|
|
17
|
+
- `window.XTend.compliance` provides the checklist, contract overview and theme tokens.
|
|
18
|
+
- central design tokens are registered per theme through `xtheme` and mirrored onto `document.documentElement`.
|
|
19
|
+
- overlay and feedback components respect `prefers-reduced-motion`, focus standards and canonical XTend state keys.
|
|
20
|
+
|
|
21
|
+
## RMT Templating Migration Starting with Epic 04
|
|
22
|
+
|
|
23
|
+
RMT templating is additive and opt-in. Existing XTend apps, classic HTML/JS integrations and existing Web Component usage remain valid. An app only uses XTendRMT when it deliberately registers an `.rmt` document, an RMT root handshake, a template record or a host adapter.
|
|
24
|
+
|
|
25
|
+
The binding migration note is in `development/XTendRMT-Migrations-und-Framework-Agnostik-Leitplanken.md`.
|
|
26
|
+
The current product overview is in `docs/xtendrmt-overview.md`. The production native authoring model starting with Epic 05 is in `docs/xtendrmt-native-authoring.md`; the App DSL reference is in `docs/xtendrmt-app-dsl.md`; Runtime Bridge and adapters are described in `docs/xtendrmt-runtime-bridge.md`. The migration from metadata paths to top-level domains is in `docs/xtendrmt-migration-guide.md`.
|
|
27
|
+
|
|
28
|
+
| Starting Point | Migration Path |
|
|
29
|
+
|----------------|----------------|
|
|
30
|
+
| XTend-only app | keep running unchanged; activate RMT only for new roots or template pilots |
|
|
31
|
+
| XTend with XRouter | prepare route records, production adapter execution in Epic 05 |
|
|
32
|
+
| XTend next to React/Vue | use RMT as scheduler or template transport, keep host adapters separate |
|
|
33
|
+
| Vanilla or custom host | declare custom scheduler endpoints, assume no XTend capabilities |
|
|
34
|
+
| Legacy demo | classify and verify, do not silently turn it into the RMT product contract |
|
|
35
|
+
|
|
36
|
+
Review rules for RMT-compatible changes:
|
|
37
|
+
|
|
38
|
+
- no XTend runtime imports in the RMT kernel
|
|
39
|
+
- no forced migration for existing apps
|
|
40
|
+
- no new XTend template language beside RMT
|
|
41
|
+
- `kernelVisible: false` for XTend-specific adapter data
|
|
42
|
+
- use production bridge factories instead of private demo bridge logic
|
|
43
|
+
- historical scaffold artifacts with `bridgeRuntime: reserved-for-Epic-05` remain readable as the Epic 04 handoff, but are no longer the operative bridge status
|
|
44
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` and `node scripts/run_xtend_tests.js references --json` as minimum gates
|
|
45
|
+
|
|
46
|
+
## Native RMT Routes and Components Starting with Epic 05
|
|
47
|
+
|
|
48
|
+
New App DSL documents should keep operative routing, component and scheduling data in native top-level domains:
|
|
49
|
+
|
|
50
|
+
- `manifest.metadata.routes -> routes`
|
|
51
|
+
- `manifest.metadata.components -> components`
|
|
52
|
+
- `manifest.metadata.schedules -> schedules`
|
|
53
|
+
- `xtend.xrouter` remains the router adapter
|
|
54
|
+
- `xtend.component` remains the component adapter
|
|
55
|
+
- `rmt.state-scheduler-diagnostics` remains the bridge adapter
|
|
56
|
+
|
|
57
|
+
`manifest.metadata` remains valid for description, handoff and historical demo notes, but should not carry new operative route or component bridges. Template-only documents remain compatible.
|
|
58
|
+
|
|
59
|
+
Production execution uses:
|
|
60
|
+
|
|
61
|
+
- `createRmtFormat().normalizeDocument(...)`
|
|
62
|
+
- `createRmtFormat().createRuntimeRegistries(...)`
|
|
63
|
+
- `createRmtXRouterAdapter(...)`
|
|
64
|
+
- `createRmtXtendComponentAdapter(...)`
|
|
65
|
+
- `createRmtStateSchedulerDiagnosticsBridge(...)`
|
|
66
|
+
|
|
67
|
+
The Docs App itself remains Parsedown-based, but now renders its app shell shell-first from RMT. The scheduling and shell path has been described as the official pilot since `ER-WP-40` in `docs/xtendrmt-parsedown-scheduling.md` and `docs/xtendrmt-parsedown-docs.rmt`.
|
|
68
|
+
|
|
69
|
+
## Legacy to Canonical
|
|
70
|
+
|
|
71
|
+
| Area | Legacy | Canonical | Status |
|
|
72
|
+
|------|--------|-----------|--------|
|
|
73
|
+
| Dialog Open | `dialog-open-<id>` | `xtend.component.x-dialog.<id>.open` | Legacy remains compatible |
|
|
74
|
+
| Dialog Open | `xdialog-open-<id>` | `xtend.component.x-dialog.<id>.open` | Legacy remains compatible |
|
|
75
|
+
| Modal Open | `modal-open-<id>` | `xtend.component.x-modal.<id>.open` | Legacy remains compatible |
|
|
76
|
+
| Theme Current | `theme` | `xtend.theme.current` | both are mirrored |
|
|
77
|
+
| Theme List | `themes` | `xtend.theme.available` | both are mirrored |
|
|
78
|
+
| Router Last Navigation | `router-navigated` | `xtend.router.lastNavigated` | both are mirrored |
|
|
79
|
+
| Alert State | `xalert-state-<id>` | `xtend.component.x-alert.<id>` | Legacy remains compatible |
|
|
80
|
+
|
|
81
|
+
## What New Core Changes Must Consider
|
|
82
|
+
|
|
83
|
+
- new UI flows need an explicit `xstate` twin
|
|
84
|
+
- docs, API, type definitions and runtime must use the same contract
|
|
85
|
+
- new components or larger Core changes must run against the compliance checklist and the verification script
|
|
86
|
+
|
|
87
|
+
## Design Tokens
|
|
88
|
+
|
|
89
|
+
The central tokens come from `xtheme` and can be adjusted per theme:
|
|
90
|
+
|
|
91
|
+
- `--xtend-color-primary`
|
|
92
|
+
- `--xtend-color-primary-dark`
|
|
93
|
+
- `--xtend-color-accent`
|
|
94
|
+
- `--xtend-glass-bg`
|
|
95
|
+
- `--xtend-glass-blur`
|
|
96
|
+
- `--xtend-shadow`
|
|
97
|
+
- `--xtend-border`
|
|
98
|
+
- `--xtend-radius`
|
|
99
|
+
- `--xtend-font-family`
|
|
100
|
+
- `--xtend-focus-outline`
|
|
101
|
+
- `--xtend-surface`
|
|
102
|
+
- `--xtend-surface-muted`
|
|
103
|
+
- `--xtend-text`
|
|
104
|
+
- `--xtend-overlay-bg`
|
|
105
|
+
|
|
106
|
+
## Notes for Existing Integrations
|
|
107
|
+
|
|
108
|
+
- Existing legacy open flags for dialog and modal do not have to be removed immediately, but should no longer be introduced in new code.
|
|
109
|
+
- New API-near integrations should prefer `window.XTend.*` over unnamespaced helpers.
|
|
110
|
+
- For Core reviews, the checklist in `development/XTend-Core-Compliance-Checklist.md` is the operative source.
|