@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,115 @@
|
|
|
1
|
+
# xtextarea - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xform](./xform.md), [xinput](./xinput.md), [xselect](./xselect.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-textarea>` is the long-form input from `WP-E10-10`. The component wraps a
|
|
8
|
+
native `textarea`, is form-associated, writes its value to `xstate`, and brings
|
|
9
|
+
RMT, Fabric, a11y, and performance metadata.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<x-textarea id="notes" name="notes" maxlength="240" rows="5" required>
|
|
15
|
+
<span slot="label">Notes</span>
|
|
16
|
+
<span slot="hint">Keep the message concise.</span>
|
|
17
|
+
<span slot="error">A note is required.</span>
|
|
18
|
+
</x-textarea>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Attributes
|
|
22
|
+
|
|
23
|
+
| Attribute | Type | Description |
|
|
24
|
+
|-----------|------|-------------|
|
|
25
|
+
| `name` | String | form name |
|
|
26
|
+
| `value` | String | current text value |
|
|
27
|
+
| `placeholder` | String | placeholder text |
|
|
28
|
+
| `required` | Boolean | activates native validation |
|
|
29
|
+
| `disabled` | Boolean | disables the control |
|
|
30
|
+
| `readonly` | Boolean | makes the control read-only |
|
|
31
|
+
| `maxlength` | Number | maximum character count |
|
|
32
|
+
| `minlength` | Number | minimum character count |
|
|
33
|
+
| `rows` | Number | visible rows |
|
|
34
|
+
| `label` | String | label without slot |
|
|
35
|
+
|
|
36
|
+
## Events
|
|
37
|
+
|
|
38
|
+
| Event | Detail |
|
|
39
|
+
|-------|--------|
|
|
40
|
+
| `textarea-changed` | `{ value, length, maxLength, source: 'x-textarea' }` |
|
|
41
|
+
| `textarea-invalid` | `{ value, message, source: 'x-textarea' }` |
|
|
42
|
+
|
|
43
|
+
## API
|
|
44
|
+
|
|
45
|
+
- `element.value`
|
|
46
|
+
- `element.maxLength`
|
|
47
|
+
- `element.checkValidity()`
|
|
48
|
+
- `element.reportValidity()`
|
|
49
|
+
- `element.validate()`
|
|
50
|
+
- `element.reset()`
|
|
51
|
+
- `element.focus()`
|
|
52
|
+
|
|
53
|
+
## State, RMT, and Fabric
|
|
54
|
+
|
|
55
|
+
`<x-textarea>` writes to `xtextarea-value-<id>` and accepts external value
|
|
56
|
+
updates through the same key. RMT metadata uses
|
|
57
|
+
`xtend.rmt.component-contract.v1`, `adapter: 'xtend.component'`, and
|
|
58
|
+
`kernelBoundary: 'no-rmt-kernel-import-of-xtend-types'`. RMT can create the
|
|
59
|
+
control as a DOM descriptor and bind events such as `textarea-changed` to
|
|
60
|
+
scheduler commands.
|
|
61
|
+
|
|
62
|
+
## A11y and Performance
|
|
63
|
+
|
|
64
|
+
The control uses `role="textbox"` through the native textarea,
|
|
65
|
+
`aria-describedby`, a polite counter region with
|
|
66
|
+
`character-count-announcement`, and an assertive error region. The performance
|
|
67
|
+
profile is `xtend.performance.component-profile.v1` with
|
|
68
|
+
`budgetClass: 'interactive-medium'`, `lane: 'user-blocking'`, and
|
|
69
|
+
`hydrationPolicy: 'visible'`.
|
|
70
|
+
|
|
71
|
+
## Form Controls UX from WP-E11-08
|
|
72
|
+
|
|
73
|
+
`<x-textarea>` exposes `xtendFormControlUxProfile` with
|
|
74
|
+
`xtend.component.form-control-ux-profile.v1`. The profile connects label, hint,
|
|
75
|
+
error, `textarea-changed`, `textarea-invalid`, `xtextarea-value-<id>`,
|
|
76
|
+
`ui.user-blocking.input`, Fabric lane `user-blocking`, and RMT shell authoring.
|
|
77
|
+
|
|
78
|
+
## ECH-WP-08 Form Theme/A11y Hardening
|
|
79
|
+
|
|
80
|
+
`signatureDesign`: enterprise writing surface with calm surface quality, live
|
|
81
|
+
counter, and separately themeable helper/error roles.
|
|
82
|
+
|
|
83
|
+
| Token | Purpose |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `--xtend-form-text` | host text color |
|
|
86
|
+
| `--xtend-form-control-surface` | textarea surface |
|
|
87
|
+
| `--xtend-form-control-text` | textarea text |
|
|
88
|
+
| `--xtend-form-label-text` | label |
|
|
89
|
+
| `--xtend-form-helper-text` | helper and counter |
|
|
90
|
+
| `--xtend-form-error-text` | error text |
|
|
91
|
+
| `--xtend-form-error-surface` | error surface |
|
|
92
|
+
| `--xtend-form-error-border` | error edge and marker |
|
|
93
|
+
| `--xtend-form-focus-ring` | focus outline |
|
|
94
|
+
| `--xtend-form-radius` | textarea/error radius |
|
|
95
|
+
| `--xtend-form-gap` | meta and error spacing |
|
|
96
|
+
| `--xtend-form-font-family` | form typography |
|
|
97
|
+
| `--xtend-form-control-font-size` | textarea font |
|
|
98
|
+
| `--xtend-form-helper-font-size` | helper/error font |
|
|
99
|
+
| `--xtend-form-icon-color` | status/affordance fallback |
|
|
100
|
+
|
|
101
|
+
Density profiles: `comfortable`, `compact`, `dense`. Invalid/error state uses
|
|
102
|
+
edge, ring, and marker instead of color only.
|
|
103
|
+
|
|
104
|
+
```css
|
|
105
|
+
[data-xtend-form-theme="enterprise-foreign"] x-textarea {
|
|
106
|
+
--xtend-form-control-surface: #fbf8f2;
|
|
107
|
+
--xtend-form-control-text: #16231f;
|
|
108
|
+
--xtend-form-label-text: #22312c;
|
|
109
|
+
--xtend-form-helper-text: #596861;
|
|
110
|
+
--xtend-form-error-text: #7d231c;
|
|
111
|
+
--xtend-form-error-border: #a64036;
|
|
112
|
+
--xtend-form-focus-ring: 3px solid #8f4f2a;
|
|
113
|
+
--xtend-form-radius: 0.35rem;
|
|
114
|
+
}
|
|
115
|
+
```
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# xtheme - XTend Core Module
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`xtheme.js` is XTend's central theme management module. The runtime is exposed
|
|
6
|
+
under `window.XTend.theme`; `window.XTheme` remains as the public compatibility
|
|
7
|
+
facade.
|
|
8
|
+
|
|
9
|
+
## Public API
|
|
10
|
+
|
|
11
|
+
| Method | Description |
|
|
12
|
+
|--------|-------------|
|
|
13
|
+
| `getCurrentTheme()` | returns the active theme |
|
|
14
|
+
| `getAvailableThemes()` | returns all known themes |
|
|
15
|
+
| `setTheme(themeName)` | switches to a theme |
|
|
16
|
+
| `toggleDarkMode()` | switches between `light` and `dark` |
|
|
17
|
+
| `registerTheme(name, properties)` | registers or extends a theme |
|
|
18
|
+
| `loadExternalTheme(name, cssUrl)` | loads an external theme CSS |
|
|
19
|
+
| `removeExternalTheme(name)` | removes an external theme CSS |
|
|
20
|
+
| `set(name, value)` | compatibility facade for theme or CSS variable |
|
|
21
|
+
| `get(name)` | reads current theme or CSS variable |
|
|
22
|
+
| `subscribe(fn)` | registers a listener for theme changes |
|
|
23
|
+
| `getDesignTokens(themeName?)` | returns central XTend design tokens for a theme |
|
|
24
|
+
| `getDesignTokenContract()` | returns the productive contract `xtend.design-tokens.product-contract.v1` with theme packs, density packs, and CSS parts |
|
|
25
|
+
| `setDensity(density)` | sets the global density boundary to `compact`, `comfortable`, or `dense` |
|
|
26
|
+
| `getDensity()` | returns the active density |
|
|
27
|
+
| `getAvailableDensities()` | returns all supported density presets |
|
|
28
|
+
| `getThemeContext()` | returns propagated theme/density/preference context |
|
|
29
|
+
| `snapshotPerformance()` | returns the current performance/Fabric diagnostics snapshot |
|
|
30
|
+
| `getPerformanceProfile()` | returns the performance profile `xtend.performance.component-profile.v1` |
|
|
31
|
+
| `getRmtMetadata()` | returns RMT shell authoring metadata without RMT kernel coupling |
|
|
32
|
+
| `getComponentNetworkContext()` | returns the Component Network Provider Contract |
|
|
33
|
+
| `getA11yPreferences()` | returns reduced-motion, forced-colors, and color-scheme snapshot |
|
|
34
|
+
| `getMotionPreference()` | returns `default` or `reduced` |
|
|
35
|
+
| `getContrastPreference()` | returns `normal` or `forced-colors` |
|
|
36
|
+
| `getA11yProfile()` | returns the runtime a11y provider contract |
|
|
37
|
+
| `getMotionContrastPolicy()` | returns the motion/contrast policy for gates |
|
|
38
|
+
|
|
39
|
+
## `set(name, value)` Contract
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
window.XTend.theme.setTheme('dark');
|
|
43
|
+
window.XTend.theme.set('light');
|
|
44
|
+
window.XTend.theme.set('--primary-color', '#0e4e81');
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- `set('dark')` is an alias for `setTheme('dark')`
|
|
48
|
+
- `set('--primary-color', '#0e4e81')` writes a CSS variable into the current
|
|
49
|
+
theme
|
|
50
|
+
|
|
51
|
+
## Theme Lifecycle
|
|
52
|
+
|
|
53
|
+
- the active theme is mirrored to `data-theme` on `document.documentElement`
|
|
54
|
+
- density is mirrored to `data-xtend-density` on `document.documentElement`
|
|
55
|
+
- motion and contrast preferences are mirrored to `data-xtend-motion`,
|
|
56
|
+
`data-xtend-contrast`, and `data-xtend-forced-colors`
|
|
57
|
+
- `document.documentElement.style.colorScheme` follows the active theme
|
|
58
|
+
(`light`/`dark`)
|
|
59
|
+
- registered CSS variables are managed per theme and reapplied on switch
|
|
60
|
+
- externally loaded themes are cached and reapplied when activated later
|
|
61
|
+
- theme changes are synchronized through `xstate`:
|
|
62
|
+
- `theme`
|
|
63
|
+
- `themes`
|
|
64
|
+
- `xtend.theme.current`
|
|
65
|
+
- `xtend.theme.density`
|
|
66
|
+
- `xtend.theme.available`
|
|
67
|
+
- `xtend.theme.preferences`
|
|
68
|
+
- `xtend.theme.context`
|
|
69
|
+
- `xtend.theme.performanceProfile`
|
|
70
|
+
- `xtend.theme.performanceSnapshot`
|
|
71
|
+
- `xtend.theme.rmtMetadata`
|
|
72
|
+
- `xtend.theme.componentNetwork`
|
|
73
|
+
- `xtend.theme.prefersReducedMotion`
|
|
74
|
+
- `xtend.theme.forcedColors`
|
|
75
|
+
- `xtend.a11y.motion`
|
|
76
|
+
- `xtend.a11y.contrast`
|
|
77
|
+
|
|
78
|
+
## Central XTend Tokens
|
|
79
|
+
|
|
80
|
+
The default themes provide productive base tokens for core components,
|
|
81
|
+
including:
|
|
82
|
+
|
|
83
|
+
- `--xtend-color-primary`
|
|
84
|
+
- `--xtend-color-primary-dark`
|
|
85
|
+
- `--xtend-color-accent`
|
|
86
|
+
- `--xtend-glass-bg`
|
|
87
|
+
- `--xtend-glass-blur`
|
|
88
|
+
- `--xtend-shadow`
|
|
89
|
+
- `--xtend-border`
|
|
90
|
+
- `--xtend-radius`
|
|
91
|
+
- `--xtend-font-family`
|
|
92
|
+
- `--xtend-focus-outline`
|
|
93
|
+
- `--xtend-focus-outline-offset`
|
|
94
|
+
- `--xtend-surface`
|
|
95
|
+
- `--xtend-surface-muted`
|
|
96
|
+
- `--xtend-text`
|
|
97
|
+
- `--xtend-overlay-bg`
|
|
98
|
+
- `--xtend-motion-duration-fast`
|
|
99
|
+
- `--xtend-motion-duration-base`
|
|
100
|
+
- `--xtend-motion-scale`
|
|
101
|
+
- `--xtend-density-scale`
|
|
102
|
+
- `--xtend-density-spacing`
|
|
103
|
+
- `--xtend-control-height`
|
|
104
|
+
- `--xtend-font-scale`
|
|
105
|
+
|
|
106
|
+
Starting with `WP-E12-12`, these tokens are part of the product contract
|
|
107
|
+
`xtend.design-tokens.product-contract.v1`. `getDesignTokenContract()` returns
|
|
108
|
+
theme packs (`light`, `dark`, `high-contrast`, `forced-colors`), density packs
|
|
109
|
+
(`compact`, `comfortable`, `dense`), and stable CSS parts. The separate
|
|
110
|
+
developer documentation is [Design Tokens](../design-tokens.md).
|
|
111
|
+
|
|
112
|
+
## Performance Profile and Density Boundary
|
|
113
|
+
|
|
114
|
+
Since `WP-E12-05`, `x-theme` is the central theme, preference, and density
|
|
115
|
+
boundary for the component stack. The module has an explicit performance
|
|
116
|
+
profile:
|
|
117
|
+
|
|
118
|
+
- Schema: `xtend.performance.component-profile.v1`
|
|
119
|
+
- Lane: `user-blocking`
|
|
120
|
+
- Hydration Policy: `eager`
|
|
121
|
+
- Measurement points: `xtend.theme.initialize`, `xtend.theme.apply`,
|
|
122
|
+
`xtend.theme.propagate`, `xtend.theme.density`, and
|
|
123
|
+
`xtend.theme.external-css`
|
|
124
|
+
- Fabric Snapshot Path: `xtend.theme.performanceSnapshot`
|
|
125
|
+
|
|
126
|
+
Density is treated as provider context, not as a local component property.
|
|
127
|
+
`setDensity('compact')`, `setDensity('comfortable')`, and
|
|
128
|
+
`setDensity('dense')` set `data-xtend-density` and the tokens
|
|
129
|
+
`--xtend-density-scale`, `--xtend-density-spacing`,
|
|
130
|
+
`--xtend-control-height`, and `--xtend-font-scale`. `spacious` is no longer a
|
|
131
|
+
productive density name and is normalized to `comfortable` for old persisted
|
|
132
|
+
data.
|
|
133
|
+
|
|
134
|
+
The propagated context lives under `xtend.theme.context` and uses schema
|
|
135
|
+
`xtend.theme.context.v1`. It contains theme, density, a11y preferences, active
|
|
136
|
+
tokens, density tokens, RMT metadata, Fabric lane, and a `propagationVersion`.
|
|
137
|
+
|
|
138
|
+
## RMT and Component Network
|
|
139
|
+
|
|
140
|
+
`x-theme` provides RMT shell authoring metadata without embedding XTend in the
|
|
141
|
+
RMT kernel:
|
|
142
|
+
|
|
143
|
+
- RMT Schema: `xtend.rmt.component-contract.v1`
|
|
144
|
+
- Adapter: `xtend.theme-provider`
|
|
145
|
+
- Shell Authoring Schema: `xtend.rmt.shell-authoring.component.v1`
|
|
146
|
+
- Kernel Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
147
|
+
|
|
148
|
+
The Component Network Contract uses `xtend.component.network.v1`. Consumers
|
|
149
|
+
such as `xtend.component`, `xtend.xrouter`, `xtend.fabric-telemetry`, or
|
|
150
|
+
`rmt.shell-authoring` read the published context through events and `xstate`,
|
|
151
|
+
not through hard imports.
|
|
152
|
+
|
|
153
|
+
## Reduced Motion and Forced Colors
|
|
154
|
+
|
|
155
|
+
Since `WP-E12-04`, `x-theme` is the central a11y preference boundary for the
|
|
156
|
+
component stack. The module observes `prefers-reduced-motion: reduce`,
|
|
157
|
+
`forced-colors: active`, and `prefers-color-scheme: dark` without importing
|
|
158
|
+
XTendRMT or host frameworks.
|
|
159
|
+
|
|
160
|
+
- Reduced motion sets `data-xtend-motion="reduced"` and reduces central motion
|
|
161
|
+
tokens to `0ms`.
|
|
162
|
+
- Forced colors sets `data-xtend-contrast="forced-colors"` and
|
|
163
|
+
`data-xtend-forced-colors="active"`.
|
|
164
|
+
- Internal CSS rules use `forced-color-adjust: auto`, `Canvas`, `CanvasText`,
|
|
165
|
+
`Highlight`, and `HighlightText`.
|
|
166
|
+
- System preference changes fire `theme-preference-changed`.
|
|
167
|
+
- An invisible live region with `role="status"` and `aria-live="polite"`
|
|
168
|
+
announces theme and preference changes for screen readers.
|
|
169
|
+
- The policy exists as `xtend.a11y.motion-contrast-policy.v1` and is exposed
|
|
170
|
+
through `getMotionContrastPolicy()`.
|
|
171
|
+
|
|
172
|
+
## Events
|
|
173
|
+
|
|
174
|
+
| Event | Description |
|
|
175
|
+
|-------|-------------|
|
|
176
|
+
| `theme-initialized` | after theme manager initialization |
|
|
177
|
+
| `theme-changed` | after theme switch |
|
|
178
|
+
| `theme-variable-changed` | after a CSS variable change |
|
|
179
|
+
| `theme-preference-changed` | after reduced-motion, forced-colors, or system preference changes |
|
|
180
|
+
| `theme-a11y-announcement` | after screen reader announcement for theme or preference change |
|
|
181
|
+
| `theme-density-changed` | after density change |
|
|
182
|
+
| `theme-context-changed` | after propagation of a new theme context |
|
|
183
|
+
| `theme-performance-measured` | after local theme/density/propagation measurement |
|
|
184
|
+
|
|
185
|
+
## Example
|
|
186
|
+
|
|
187
|
+
```js
|
|
188
|
+
window.XTend.theme.setTheme('light');
|
|
189
|
+
window.XTend.theme.set('--body-bg', '#f9f9f9');
|
|
190
|
+
|
|
191
|
+
window.XTend.theme.registerTheme('dark', {
|
|
192
|
+
'--body-bg': '#181a1b',
|
|
193
|
+
'--text-color': '#fff'
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Notes
|
|
198
|
+
|
|
199
|
+
- `xtheme.js` is a core module, not a separate styling framework.
|
|
200
|
+
- The runtime is namespaced under `window.XTend.theme`; `window.XTheme` is only
|
|
201
|
+
the public compatibility facade.
|
|
202
|
+
- External theme CSS files remain available for later activations after their
|
|
203
|
+
first load.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# xtoast - XTend Component
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`<x-toast>` is the compact feedback component for temporary notices. Toasts are
|
|
6
|
+
non-blocking, short-lived, and are preferably created through `window.XToast`
|
|
7
|
+
in XTend Core.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-toast type="success" duration="3000">Saved</x-toast>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Attributes
|
|
16
|
+
|
|
17
|
+
| Attribute | Type | Description |
|
|
18
|
+
|-----------|------|-------------|
|
|
19
|
+
| `type` | string | `info`, `success`, `warning`, `error` |
|
|
20
|
+
| `duration` | number | duration in milliseconds, `0` disables auto-close |
|
|
21
|
+
|
|
22
|
+
## Events
|
|
23
|
+
|
|
24
|
+
| Event | Description |
|
|
25
|
+
|-------|-------------|
|
|
26
|
+
| `toast-shown` | after the toast is inserted |
|
|
27
|
+
| `toast-dismissed` | after the toast is closed |
|
|
28
|
+
|
|
29
|
+
Events provide:
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
{
|
|
33
|
+
id: 'toast-abc123',
|
|
34
|
+
message: 'Saved',
|
|
35
|
+
type: 'success',
|
|
36
|
+
duration: 3000,
|
|
37
|
+
reason: 'timeout'
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Runtime Contract
|
|
42
|
+
|
|
43
|
+
- API-managed toasts are aggregated in `xstate.get('ui').toasts`
|
|
44
|
+
- the component itself exposes lifecycle through events
|
|
45
|
+
- the hidden global helper path lives in `api.js`, no longer in the component
|
|
46
|
+
- the API toast stack uses `#xtoast-container` as a viewport-safe surface with
|
|
47
|
+
`width: min(24rem, calc(100vw - 2rem))`
|
|
48
|
+
|
|
49
|
+
## Layout
|
|
50
|
+
|
|
51
|
+
`window.XToast.show()` places API-managed toasts in a framework-owned stack.
|
|
52
|
+
This stack stays bottom-right in the viewport, uses safe-area spacing, and
|
|
53
|
+
stretches toasts within the available width instead of letting them overflow
|
|
54
|
+
past the right viewport edge.
|
|
55
|
+
|
|
56
|
+
Directly placed `<x-toast>` elements are container-friendly as well: the
|
|
57
|
+
component uses `max-width: 100%`, wraps long content, and reserves space for
|
|
58
|
+
the close button.
|
|
59
|
+
|
|
60
|
+
## Feedback Status UX from WP-E11-09
|
|
61
|
+
|
|
62
|
+
`<x-toast>` exposes `xtendFeedbackStatusUxProfile` with
|
|
63
|
+
`xtend.component.feedback-status-ux-profile.v1`. The profile describes
|
|
64
|
+
`x-toast` as a short-lived feedback shell with `toast-shown`,
|
|
65
|
+
`toast-dismissed`, `xtoast-state-<id>`, `a11y.announce`, Fabric lane `a11y`,
|
|
66
|
+
and RMT shell authoring.
|
|
67
|
+
|
|
68
|
+
Timeouts provide `reason: 'timeout'`; manual dismiss paths provide
|
|
69
|
+
`reason: 'button'` or `manual`. Event details include `source: 'x-toast'`,
|
|
70
|
+
`stateKey`, and `dismissed`, so status and diagnostics lanes can unambiguously
|
|
71
|
+
map toast lifecycles.
|
|
72
|
+
|
|
73
|
+
## Notes
|
|
74
|
+
|
|
75
|
+
- Toasts are semantically meant for short-lived, non-blocking notices.
|
|
76
|
+
- Use `x-alert` for messages that should remain visible longer or carry more
|
|
77
|
+
important content.
|
|
78
|
+
- `window.XToast.show()` is the preferred entry point for API-managed toasts.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# xtooltip - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xpopover](./xpopover.md), [xdrawer](./xdrawer.md), [xdialog](./xdialog.md), [xmodal](./xmodal.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-tooltip>` is the lightweight overlay help component from `WP-E10-11`. The
|
|
8
|
+
component connects to a target element through `aria-describedby`, opens on
|
|
9
|
+
hover or focus, and closes on blur, mouseleave, or `Escape`.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<button id="schedule-help">Inspect schedule</button>
|
|
15
|
+
<x-tooltip id="route-tooltip" for="schedule-help" placement="top" delay="20" label="Tooltip help">
|
|
16
|
+
Explains the scheduled action.
|
|
17
|
+
</x-tooltip>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Attributes
|
|
21
|
+
|
|
22
|
+
| Attribute | Type | Description |
|
|
23
|
+
|-----------|------|-------------|
|
|
24
|
+
| `for` | String | ID of the anchor element |
|
|
25
|
+
| `placement` | String | `top`, `right`, `bottom`, or `left` |
|
|
26
|
+
| `open` | Boolean | opens the tooltip in controlled mode |
|
|
27
|
+
| `delay` | Number | opening delay in milliseconds |
|
|
28
|
+
| `label` | String | accessible name for the tooltip |
|
|
29
|
+
|
|
30
|
+
## Events
|
|
31
|
+
|
|
32
|
+
| Event | Detail |
|
|
33
|
+
|-------|--------|
|
|
34
|
+
| `tooltip-opened` | `{ id, open, source, placement }` |
|
|
35
|
+
| `tooltip-closed` | `{ id, open, source, placement }` |
|
|
36
|
+
|
|
37
|
+
## API
|
|
38
|
+
|
|
39
|
+
- `show()`
|
|
40
|
+
- `hide()`
|
|
41
|
+
- `toggle()`
|
|
42
|
+
|
|
43
|
+
## State, RMT, and Fabric
|
|
44
|
+
|
|
45
|
+
`<x-tooltip>` writes to `xtooltip-open-<id>`. The RMT contract is
|
|
46
|
+
`xtend.rmt.component-contract.v1` and uses the schedules
|
|
47
|
+
`component.visible.mount`, `component.idle.hydrate`, and
|
|
48
|
+
`overlay.tooltip.position`. The kernel boundary remains
|
|
49
|
+
`no-rmt-kernel-import-of-xtend-types`.
|
|
50
|
+
|
|
51
|
+
## A11y and Performance
|
|
52
|
+
|
|
53
|
+
The component uses `role="tooltip"`, sets `aria-describedby` on the anchor, and
|
|
54
|
+
documents `dismiss-on-escape` as a screen reader signal. The performance
|
|
55
|
+
profile is `xtend.performance.component-profile.v1` with
|
|
56
|
+
`budgetClass: 'overlay-small'`, `lane: 'visible'`, and `hydrationPolicy:
|
|
57
|
+
'idle'`.
|
|
58
|
+
|
|
59
|
+
## Overlay Interaction UX Profile
|
|
60
|
+
|
|
61
|
+
Since `WP-E11-11`, `<x-tooltip>` declares the runtime profile
|
|
62
|
+
`xtend.component.overlay-interaction-ux-profile.v1` through
|
|
63
|
+
`xtendOverlayInteractionUxProfile`.
|
|
64
|
+
|
|
65
|
+
| Field | Value |
|
|
66
|
+
|-------|-------|
|
|
67
|
+
| Family | `tooltip` |
|
|
68
|
+
| State Key | `xtooltip-open-<id>` |
|
|
69
|
+
| Schedule | `overlay.position.update` |
|
|
70
|
+
| Commands | `show`, `hide`, `toggle`, `snapshot` |
|
|
71
|
+
|
|
72
|
+
The profile intentionally keeps tooltip overlays non-modal: no focus trap, no
|
|
73
|
+
inert, no scroll lock. RMT can schedule positioning and dismissal while the
|
|
74
|
+
host continues to manage `aria-describedby`, hover/focus, and Escape.
|
|
75
|
+
|
|
76
|
+
## ECH-WP-06 Overlay Parity
|
|
77
|
+
|
|
78
|
+
`x-tooltip` exposes `surface`, `backdrop`, `close`, and `content` as overlay
|
|
79
|
+
parts, with `backdrop` and `close` intentionally acting as non-interactive
|
|
80
|
+
sentinels for theme/part parity. The tooltip remains non-modal and
|
|
81
|
+
information-oriented.
|
|
82
|
+
|
|
83
|
+
Surface, text, elevation, radius, typography, and z-index use
|
|
84
|
+
`--xtend-overlay-*`, `--tooltip-*`, or `--xtooltip-*` tokens. Focus trap, inert,
|
|
85
|
+
and scroll lock do not apply to tooltips.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# xtype - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xwriter](./xwriter.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-type>` is a component for animated text effects such as typing animation.
|
|
8
|
+
It is suitable for hero areas, headings, and interactive UI elements.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Animated text effects (typing, loop)
|
|
15
|
+
- Customizable speed
|
|
16
|
+
- Theming through CSS custom properties
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<x-type text="XTend rocks!" speed="80"></x-type>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Attributes
|
|
29
|
+
|
|
30
|
+
| Attribute | Type | Description |
|
|
31
|
+
|-----------|------|-------------|
|
|
32
|
+
| `text` | String | text to display |
|
|
33
|
+
| `speed` | Number | speed in ms per character |
|
|
34
|
+
| `loop` | Boolean | endless loop |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Events
|
|
39
|
+
|
|
40
|
+
| Event | Description |
|
|
41
|
+
|-------|-------------|
|
|
42
|
+
| `done` | emitted after animation |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## API
|
|
47
|
+
|
|
48
|
+
- **Set text dynamically:** `element.setAttribute('text', 'Hello')`
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Example: Dynamic JS
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
const type = document.createElement('x-type');
|
|
56
|
+
type.setAttribute('text', 'Hello world!');
|
|
57
|
+
document.body.appendChild(type);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Styling and Theming
|
|
63
|
+
|
|
64
|
+
```css
|
|
65
|
+
x-type {
|
|
66
|
+
--type-color: #007bff;
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Accessibility
|
|
73
|
+
|
|
74
|
+
- Semantic HTML
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
*Last updated: July 16, 2025*
|
|
79
|
+
|
|
80
|
+
## Layout Display Media UX Profile
|
|
81
|
+
|
|
82
|
+
Starting with `WP-E11-12`, `x-type` exposes the profile
|
|
83
|
+
`xtend.component.layout-display-media-ux-profile.v1`. The component uses a
|
|
84
|
+
Shadow DOM shell for text and cursor, can be hydrated on idle, and writes its
|
|
85
|
+
current text to `xtype-current`.
|
|
86
|
+
|
|
87
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
88
|
+
- Schedule: `component.idle.hydrate`
|
|
89
|
+
- Events: `typing-started`, `typing-completed`, `text-erased`
|
|
90
|
+
- Snapshot: `snapshot()`
|
|
91
|
+
- CSS parts: `root`, `text`, `cursor`
|