@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,118 @@
|
|
|
1
|
+
# xspinner - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xtoast](./xtoast.md), [xalert](./xalert.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-spinner>` is an animated, accessible loading indicator for asynchronous
|
|
8
|
+
processes, loading states, and feedback. It is flexible, themeable, and
|
|
9
|
+
supports multiple variants, overlay mode, state integration, and accessibility
|
|
10
|
+
integration.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- Animated loading indicator (circle, dots)
|
|
17
|
+
- Size, color, speed, and type through attributes
|
|
18
|
+
- Overlay mode (centered, translucent)
|
|
19
|
+
- Slot for custom content
|
|
20
|
+
- State integration through xstate
|
|
21
|
+
- Events for pause/resume
|
|
22
|
+
- Theming through CSS custom properties and XTheme
|
|
23
|
+
- Accessibility: ARIA, `aria-busy`, `aria-label`, `aria-valuetext`
|
|
24
|
+
- `prefers-reduced-motion` support
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<x-spinner size="32" color="#C70039" speed="0.7s" type="dots"></x-spinner>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Attributes
|
|
37
|
+
|
|
38
|
+
| Attribute | Type | Description |
|
|
39
|
+
|-----------|------|-------------|
|
|
40
|
+
| `size` | String | spinner size, for example 32, 48, 64 |
|
|
41
|
+
| `color` | String | color as CSS color value, for example #007bff |
|
|
42
|
+
| `speed` | String | animation duration, for example 1s, 0.7s |
|
|
43
|
+
| `type` | String | `circle` (default), `dots` |
|
|
44
|
+
| `paused` | Boolean | pauses animation |
|
|
45
|
+
| `overlay` | Boolean | shows spinner as page overlay |
|
|
46
|
+
| `aria-label` | String | accessible text for screen readers |
|
|
47
|
+
| `aria-busy` | String | ARIA state (`true`/`false`) |
|
|
48
|
+
| `aria-valuetext` | String | progress text for screen readers |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Events
|
|
53
|
+
|
|
54
|
+
| Event | Description |
|
|
55
|
+
|-------|-------------|
|
|
56
|
+
| `spinner-started` | emitted when inserted |
|
|
57
|
+
| `spinner-stopped` | emitted when removed |
|
|
58
|
+
| `paused` | animation was paused |
|
|
59
|
+
| `resumed` | animation was resumed |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## API
|
|
64
|
+
|
|
65
|
+
- **Set size:** `element.setAttribute('size', '48')`
|
|
66
|
+
- **Change type:** `element.setAttribute('type', 'dots')`
|
|
67
|
+
- **Pause/resume:** `element.setAttribute('paused', '')` /
|
|
68
|
+
`element.removeAttribute('paused')`
|
|
69
|
+
- **Imperative pause/resume:** `element.pause()` / `element.resume()`
|
|
70
|
+
- **Snapshot:** `element.snapshot()`
|
|
71
|
+
- **Enable overlay:** `element.setAttribute('overlay', '')`
|
|
72
|
+
- **State integration:** `xstate.set('xspinner-paused-'+element.id, true)`
|
|
73
|
+
|
|
74
|
+
## Feedback Status UX from WP-E11-09
|
|
75
|
+
|
|
76
|
+
`<x-spinner>` exposes `xtendFeedbackStatusUxProfile` with
|
|
77
|
+
`xtend.component.feedback-status-ux-profile.v1`. The profile describes the
|
|
78
|
+
spinner as busy status with `spinner-started`, `spinner-stopped`, `paused`,
|
|
79
|
+
`resumed`, `xspinner-paused-<id>`, `component.visible.mount`, Fabric lane
|
|
80
|
+
`feedback`, a11y lane `a11y`, and RMT shell authoring.
|
|
81
|
+
|
|
82
|
+
The component reports pause/resume through events with `source: 'x-spinner'`
|
|
83
|
+
and `stateKey`. Animations are reduced-motion safe; busy state and
|
|
84
|
+
`aria-valuetext` remain available to screen readers even without visible
|
|
85
|
+
motion.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Example: Dynamic JS
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
const spinner = document.createElement('x-spinner');
|
|
93
|
+
spinner.setAttribute('size', '48');
|
|
94
|
+
spinner.setAttribute('type', 'dots');
|
|
95
|
+
document.body.appendChild(spinner);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Styling and Theming
|
|
101
|
+
|
|
102
|
+
```css
|
|
103
|
+
x-spinner {
|
|
104
|
+
--spinner-color: #007bff;
|
|
105
|
+
--spinner-size: 40px;
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Accessibility
|
|
112
|
+
|
|
113
|
+
- ARIA role, `aria-busy`, `aria-label`, `aria-valuetext`
|
|
114
|
+
- respects `prefers-reduced-motion`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
*Last updated: July 18, 2025*
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# xstate - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xalert](./xalert.md), [xtoast](./xtoast.md), [xbutton](./xbutton.md), [xtheme](./xtheme.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`xstate` is the central state management module for XTend components. It
|
|
8
|
+
supports global and local state, subscriptions, and reactive updates.
|
|
9
|
+
|
|
10
|
+
Since `WP-E12-08`, `xstate` is explicitly documented as a non-visual
|
|
11
|
+
**boundary probe**. The module is not reinterpreted as a Custom Element.
|
|
12
|
+
Instead, it provides a gateable adapter, typing, and lifecycle surface for
|
|
13
|
+
XTend UI, Fabric, and XTendRMT.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
- Global and component-based state management
|
|
20
|
+
- Subscriptions for state changes with key filters
|
|
21
|
+
- Reactive updates for components
|
|
22
|
+
- Path updates, batch updates, and storage helpers
|
|
23
|
+
- Compatibility facade for `on/off`
|
|
24
|
+
- Lifecycle events for state operations
|
|
25
|
+
- Fabric-compatible diagnostics snapshots
|
|
26
|
+
- RMT State Scheduler Adapter without kernel coupling
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import { xstate } from 'components/xstate.js';
|
|
34
|
+
|
|
35
|
+
xstate.set('key', 'value');
|
|
36
|
+
const value = xstate.get('key');
|
|
37
|
+
const unsubscribe = xstate.subscribe((key, value, allData) => { ... }, 'key');
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## API
|
|
43
|
+
|
|
44
|
+
| Method | Description |
|
|
45
|
+
|--------|-------------|
|
|
46
|
+
| `get(key)` | returns the value for a key |
|
|
47
|
+
| `set(key, val)` | sets a value and notifies listeners |
|
|
48
|
+
| `subscribe(fn, keyFilter?)` | canonical subscription contract with optional key filter |
|
|
49
|
+
| `remove(key)` | removes a key from state |
|
|
50
|
+
| `getPath(path)` | reads nested values through dot notation |
|
|
51
|
+
| `setPath(path, value)` | writes nested values through dot notation |
|
|
52
|
+
| `batchUpdate(updates)` | applies multiple updates in one step |
|
|
53
|
+
| `saveToStorage(type?, key?)` | persists state to local or session storage |
|
|
54
|
+
| `loadFromStorage(type?, key?)` | loads state from browser storage |
|
|
55
|
+
| `on(key, fn)` | legacy compatibility for key-based listeners |
|
|
56
|
+
| `off(key, fn)` | removes a listener registered through `on` |
|
|
57
|
+
| `subscribeLifecycle(fn)` | subscribes to lifecycle/diagnostics events from the state boundary |
|
|
58
|
+
| `snapshot()` | returns a stable state snapshot for tests and adapters |
|
|
59
|
+
| `snapshotDiagnostics()` | returns Fabric-compatible diagnostics |
|
|
60
|
+
| `createRmtStateAdapter(options?)` | creates a host-neutral RMT state adapter |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Example: Use State in a Component
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
xstate.set('user', { name: 'Konni' });
|
|
68
|
+
const unsubscribe = xstate.subscribe((key, value) => {
|
|
69
|
+
if (key === 'user') {
|
|
70
|
+
// React to changes
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Canonical Recommendation
|
|
76
|
+
|
|
77
|
+
- New core implementations should use `subscribe(fn, keyFilter)`.
|
|
78
|
+
- `on/off` remain allowed as a compatibility facade, but they are not the
|
|
79
|
+
canonical contract.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Boundary Probe Contract
|
|
84
|
+
|
|
85
|
+
`xstate` is not a visual element. Component catalog hardening therefore checks
|
|
86
|
+
it as an infrastructure boundary:
|
|
87
|
+
|
|
88
|
+
- Boundary Schema: `xtend.state.boundary-probe.v1`
|
|
89
|
+
- Snapshot Schema: `xtend.state.snapshot.v1`
|
|
90
|
+
- Lifecycle Schema: `xtend.state.lifecycle-event.v1`
|
|
91
|
+
- Diagnostics Schema: `xtend.fabric.state-diagnostics.v1`
|
|
92
|
+
- RMT Compatibility Schema: `xtend.rmt.state-scheduler-compatibility.v1`
|
|
93
|
+
- Kernel Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
94
|
+
|
|
95
|
+
```js
|
|
96
|
+
import { xstate } from '/components/xstate.js';
|
|
97
|
+
|
|
98
|
+
const unsubscribeLifecycle = xstate.subscribeLifecycle((event, diagnostics) => {
|
|
99
|
+
console.log(event.type, diagnostics.operationCounts);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
xstate.set('rmt.bridge.ready', true);
|
|
103
|
+
|
|
104
|
+
const snapshot = xstate.snapshot();
|
|
105
|
+
const diagnostics = xstate.snapshotDiagnostics();
|
|
106
|
+
|
|
107
|
+
unsubscribeLifecycle();
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## RMT State Scheduler Compatibility
|
|
111
|
+
|
|
112
|
+
RMT must not import `xstate` directly. An XTend host can intentionally create
|
|
113
|
+
an adapter and pass it to the State/Scheduler/Diagnostics Bridge:
|
|
114
|
+
|
|
115
|
+
```js
|
|
116
|
+
const stateAdapter = xstate.createRmtStateAdapter({
|
|
117
|
+
schedulerId: 'docs.app.shell'
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
stateAdapter.set('rmt.scheduler.lastEndpoint', {
|
|
121
|
+
id: 'docs.header.search',
|
|
122
|
+
lane: 'user-blocking'
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
stateAdapter.snapshot();
|
|
126
|
+
stateAdapter.diagnostics();
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
XTendRMT therefore remains framework-agnostic. `xstate` is an optional host
|
|
130
|
+
capability and not a kernel dependency.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## XTendRMT Bridge State
|
|
135
|
+
|
|
136
|
+
XTendRMT uses `xstate` optionally as a host-state mirror. The
|
|
137
|
+
State/Scheduler/Diagnostics Bridge writes into `xstate` only when a host passes
|
|
138
|
+
a compatible target. Without `xstate`, an in-memory state handle remains
|
|
139
|
+
active.
|
|
140
|
+
|
|
141
|
+
Current bridge keys:
|
|
142
|
+
|
|
143
|
+
- `rmt.bridge.ready`
|
|
144
|
+
- `rmt.scheduler.lastEndpoint`
|
|
145
|
+
- `rmt.adapter.lastResult`
|
|
146
|
+
- `rmt.diagnostics.last`
|
|
147
|
+
- `rmt.route.<id>.lastResult`
|
|
148
|
+
- `rmt.component.<id>.lastResult`
|
|
149
|
+
|
|
150
|
+
The implementation lives in `createRmtStateSchedulerDiagnosticsBridge`; details
|
|
151
|
+
are in [XTendRMT Runtime Bridge](../xtendrmt-runtime-bridge.md).
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Notes
|
|
156
|
+
|
|
157
|
+
- Used by almost all XTend components
|
|
158
|
+
- Can also be used for custom purposes
|
|
159
|
+
- In XTend Core, `xstate` is the first bootstrap base module
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
*Last updated: May 7, 2026*
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# xstatus - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xalert](./xalert.md), [xtoast](./xtoast.md), [xprogress](./xprogress.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-status>` is a Fabric- and RMT-capable status control from `WP-E10-10`. It
|
|
8
|
+
renders scheduler, validation, and system feedback as a live region and stays
|
|
9
|
+
small enough to be used in RMT shells as a feedback building block.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<x-status id="route-status" type="warning" state="validating" message="Validation is running" dismissible busy>
|
|
15
|
+
<span slot="label">Scheduler status</span>
|
|
16
|
+
</x-status>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Attributes
|
|
20
|
+
|
|
21
|
+
| Attribute | Type | Description |
|
|
22
|
+
|-----------|------|-------------|
|
|
23
|
+
| `type` | String | `info`, `success`, `warning`, or `error` |
|
|
24
|
+
| `state` | String | domain status key |
|
|
25
|
+
| `message` | String | visible message |
|
|
26
|
+
| `dismissible` | Boolean | shows close action |
|
|
27
|
+
| `busy` | Boolean | sets `aria-busy` |
|
|
28
|
+
| `polite` | Boolean | forces polite live region |
|
|
29
|
+
| `label` | String | label without slot |
|
|
30
|
+
|
|
31
|
+
## Events
|
|
32
|
+
|
|
33
|
+
| Event | Detail |
|
|
34
|
+
|-------|--------|
|
|
35
|
+
| `status-changed` | `{ type, status, message, busy, source: 'x-status' }` |
|
|
36
|
+
| `status-dismissed` | `{ type, status, message, busy, source: 'x-status' }` |
|
|
37
|
+
|
|
38
|
+
## API
|
|
39
|
+
|
|
40
|
+
- `element.state`
|
|
41
|
+
- `element.setStatus(nextState)`
|
|
42
|
+
- `element.announce(message?)`
|
|
43
|
+
- `element.dismiss()`
|
|
44
|
+
|
|
45
|
+
## State, RMT, and Fabric
|
|
46
|
+
|
|
47
|
+
`<x-status>` writes to `xstatus-state-<id>`. RMT can schedule status updates to
|
|
48
|
+
`feedback.status.update` through `xtend.rmt.component-contract.v1` without
|
|
49
|
+
importing XTend internally. The kernel boundary remains
|
|
50
|
+
`no-rmt-kernel-import-of-xtend-types`; the UI component is the adapter outward.
|
|
51
|
+
|
|
52
|
+
## A11y and Performance
|
|
53
|
+
|
|
54
|
+
The control uses `role="status"` for polite messages and `role=alert` for
|
|
55
|
+
critical warning/error paths. `scheduler-feedback`, `status-update`, and
|
|
56
|
+
`validation-feedback` are documented as screen reader signals. The performance
|
|
57
|
+
profile is `xtend.performance.component-profile.v1` with
|
|
58
|
+
`budgetClass: 'feedback-small'`, `lane: 'feedback'`, and
|
|
59
|
+
`hydrationPolicy: 'visible'`.
|
|
60
|
+
|
|
61
|
+
## Feedback Status UX from WP-E11-09
|
|
62
|
+
|
|
63
|
+
`<x-status>` exposes `xtendFeedbackStatusUxProfile` with
|
|
64
|
+
`xtend.component.feedback-status-ux-profile.v1`. The profile connects
|
|
65
|
+
`status-changed`, `status-dismissed`, `xstatus-state-<id>`,
|
|
66
|
+
`feedback.status.update`, Fabric lane `feedback`, a11y lane `a11y`, and RMT
|
|
67
|
+
shell authoring.
|
|
68
|
+
|
|
69
|
+
The component is the shared inline status for forms, schedulers, route feedback,
|
|
70
|
+
and diagnostics. It avoids color-only communication, remains forced-colors
|
|
71
|
+
safe, and can be explicitly updated as a live region with `announce()`.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# xsummary - XTend Component
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`<x-summary>` is an expandable disclosure component for compact detail areas.
|
|
6
|
+
It uses native `<details>`/`<summary>` semantics, mirrors its open state into
|
|
7
|
+
`xstate`, and works well for FAQ blocks, technical details, inline help, or
|
|
8
|
+
dashboard summaries.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```html
|
|
13
|
+
<x-summary id="billing-details" type="info" open>
|
|
14
|
+
<span slot="title">Billing details</span>
|
|
15
|
+
<p>All invoice items are grouped by project and time period.</p>
|
|
16
|
+
</x-summary>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Attributes
|
|
20
|
+
|
|
21
|
+
| Attribute | Type | Description |
|
|
22
|
+
|-----------|------|-------------|
|
|
23
|
+
| `open` | boolean | opens the detail area |
|
|
24
|
+
| `type` | string | visual variant: `info`, `success`, `warning`, `danger` |
|
|
25
|
+
|
|
26
|
+
## Slots
|
|
27
|
+
|
|
28
|
+
| Slot | Description |
|
|
29
|
+
|------|-------------|
|
|
30
|
+
| `title` | content of the clickable summary header |
|
|
31
|
+
| default | expandable content |
|
|
32
|
+
|
|
33
|
+
## Events
|
|
34
|
+
|
|
35
|
+
| Event | Description |
|
|
36
|
+
|-------|-------------|
|
|
37
|
+
| `open` | emitted when opening |
|
|
38
|
+
| `close` | emitted when closing |
|
|
39
|
+
|
|
40
|
+
The event detail contains:
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
{
|
|
44
|
+
open: true
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## State Contract
|
|
49
|
+
|
|
50
|
+
The instance uses a compatible `xstate` key:
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
xsummary-open-<id>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If no `id` is set, the component creates a stable runtime ID for the current
|
|
57
|
+
instance. External state changes on the key can open or close the component.
|
|
58
|
+
|
|
59
|
+
Synchronization is reentrant-safe: attributes, native `<details>` state, and
|
|
60
|
+
`xstate` are reconciled through one central open-state routine. Unchanged values
|
|
61
|
+
are not published to `xstate` again, so external state updates do not trigger a
|
|
62
|
+
recursive `open()`/`close()` loop.
|
|
63
|
+
|
|
64
|
+
## A11y
|
|
65
|
+
|
|
66
|
+
- The native `<summary>` remains the primary keyboard and screen reader surface.
|
|
67
|
+
- `Enter` and `Space` toggle the state.
|
|
68
|
+
- `aria-expanded` is synchronized with the current open state.
|
|
69
|
+
- The summary header is focusable and has a visible focus state.
|
|
70
|
+
|
|
71
|
+
## Notes
|
|
72
|
+
|
|
73
|
+
- `x-summary` is an interactive display component and has been
|
|
74
|
+
component-suite-gated since `ER-WP-33`.
|
|
75
|
+
- The Catalog Coverage Matrix now lists the component as `contract-gated`.
|
|
76
|
+
- Further contract hardening for performance, browser regression, and
|
|
77
|
+
long-tail coverage follows in `ER-WP-35`; public types and event details have
|
|
78
|
+
existed since `ER-WP-34`.
|
|
79
|
+
|
|
80
|
+
## Layout Display Media UX Profile
|
|
81
|
+
|
|
82
|
+
Starting with `WP-E11-12`, `x-summary` exposes the profile
|
|
83
|
+
`xtend.component.layout-display-media-ux-profile.v1`. The component remains a
|
|
84
|
+
disclosure display shell and uses the state key `xsummary-open-<id>`.
|
|
85
|
+
|
|
86
|
+
- Profile getter: `xtendLayoutDisplayMediaUxProfile`
|
|
87
|
+
- Schedule: `component.visible.mount`
|
|
88
|
+
- Events: `open`, `close`
|
|
89
|
+
- Snapshot: `snapshot()`
|
|
90
|
+
- CSS parts: `container`, `summary`, `content`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# xsurfacemanager - XTend Component
|
|
2
|
+
|
|
3
|
+
`x-surface-manager` is the app-shell surface root for multi-window interfaces.
|
|
4
|
+
The component instantiates `xtend.surface.controller.v1`, registers slotted
|
|
5
|
+
`x-surface-window`, `x-side-panel`, and compatible overlay elements, and
|
|
6
|
+
mirrors layout, focus, and lifecycle changes as `xtend.surface.snapshot.v1`.
|
|
7
|
+
|
|
8
|
+
## Attributes
|
|
9
|
+
|
|
10
|
+
- `manager-id`: stable manager ID for surface records
|
|
11
|
+
- `state-key`: xstate registry key, defaults to `xtend.surface.registry`
|
|
12
|
+
- `layout`: layout profile for the surface zone
|
|
13
|
+
- `restore-key`: future persistence key for layout restore
|
|
14
|
+
- `route-aware`: marks route-bound surface management
|
|
15
|
+
- `modal-policy`: policy for future modal surface stacks
|
|
16
|
+
|
|
17
|
+
## Slots
|
|
18
|
+
|
|
19
|
+
- `windows`: freely positioned windows
|
|
20
|
+
- `panels`: `x-side-panel` surfaces with docked, pinned, overlay, or collapsed modes
|
|
21
|
+
- `overlays`: optional overlay bridge for `x-modal`, `x-dialog`, and `x-drawer`
|
|
22
|
+
- `default`: simple Light DOM fallbacks
|
|
23
|
+
|
|
24
|
+
## API
|
|
25
|
+
|
|
26
|
+
`registerSurface(surface)`, `openSurface(id)`, `closeSurface(id)`,
|
|
27
|
+
`focusSurface(id)`, `updateSurface(id, patch)`, `moveSurface(id, bounds)`,
|
|
28
|
+
`resizeSurface(id, bounds)`, `minimizeSurface(id)`, `maximizeSurface(id)`,
|
|
29
|
+
`restoreSurface(id)`, `pinSurface(id)`, `collapseSurface(id)`,
|
|
30
|
+
`expandSurface(id)`, `dockSurface(id)`, and `snapshot()` delegate to the
|
|
31
|
+
Surface Controller.
|
|
32
|
+
|
|
33
|
+
Events: `surface-manager-ready`, `surface-registered`, `surface-opened`,
|
|
34
|
+
`surface-closed`, `surface-focused`, `surface-updated`,
|
|
35
|
+
`surface-layout-changed`, `surface-window-command`, `surface-panel-command`,
|
|
36
|
+
and `surface-overlay-command`.
|
|
37
|
+
|
|
38
|
+
RMT: `xtend.rmt.component-contract.v1`, `xtend.surface.manager.v1`,
|
|
39
|
+
`xtend.surface.controller.v1`, `xtend.surface.overlay-stack-bridge.v1`,
|
|
40
|
+
`surface.visible.render`, `surface.user-blocking.open`,
|
|
41
|
+
`surface.user-blocking.close`, `surface.transition.layout`,
|
|
42
|
+
`surface.diagnostics.snapshot`.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# xsurfacewindow - XTend Component
|
|
2
|
+
|
|
3
|
+
`x-surface-window` is XTend's first visible WindowManager surface. It registers
|
|
4
|
+
with an enclosing `x-surface-manager`, provides window chrome, actions, bounds,
|
|
5
|
+
and a content slot, and mirrors controller snapshots into attributes and CSS
|
|
6
|
+
variables.
|
|
7
|
+
|
|
8
|
+
## Attributes
|
|
9
|
+
|
|
10
|
+
- `surface-id`: stable surface ID
|
|
11
|
+
- `label`: accessible name and window title
|
|
12
|
+
- `open`, `active`, `minimized`, `maximized`
|
|
13
|
+
- `draggable`, `resizable`, `modal`
|
|
14
|
+
- `initial-x`, `initial-y`, `initial-width`, `initial-height`
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
`toSurfaceRecord(managerId)` creates an `xtend.surface.record.v1` for the
|
|
19
|
+
manager. `applySurfaceSnapshot(record)` updates visible state, bounds, and
|
|
20
|
+
z-order.
|
|
21
|
+
|
|
22
|
+
Commands: `openWindow()`, `closeWindow(reason)`, `focusWindow()`,
|
|
23
|
+
`minimizeWindow()`, `maximizeWindow()`, and `restoreWindow()`.
|
|
24
|
+
|
|
25
|
+
The element emits `surface-window-command` with `open`, `close`, `focus`,
|
|
26
|
+
`move`, `resize`, `minimize`, `maximize`, `restore`, or `update`. The manager
|
|
27
|
+
translates these commands into controller operations.
|
|
28
|
+
|
|
29
|
+
RMT: `xtend.rmt.component-contract.v1`, `xtend.surface.record.v1`,
|
|
30
|
+
`surface.user-blocking.open`, `surface.user-blocking.close`,
|
|
31
|
+
`surface.transition.layout`, `surface.diagnostics.snapshot`.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# xtabs - XTend Component
|
|
2
|
+
|
|
3
|
+
> **See also:** [xsection](./xsection.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`<x-tabs>` is a component for tab navigation and structured content. It
|
|
8
|
+
supports dynamic tabs, theming, and state integration.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Dynamic tab navigation
|
|
15
|
+
- Slot for tab content
|
|
16
|
+
- State integration through xstate
|
|
17
|
+
- Theming through CSS custom properties
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<x-tabs selected="0">
|
|
25
|
+
<x-tab name="Tab 1">Content 1</x-tab>
|
|
26
|
+
<x-tab name="Tab 2">Content 2</x-tab>
|
|
27
|
+
</x-tabs>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Attributes
|
|
33
|
+
|
|
34
|
+
| Attribute | Type | Description |
|
|
35
|
+
|-----------|------|-------------|
|
|
36
|
+
| - | - | - |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Events
|
|
41
|
+
|
|
42
|
+
| Event | Description |
|
|
43
|
+
|-------|-------------|
|
|
44
|
+
| `tab-selected` | tab change with `{ index }`, `bubbles: true`, `composed: true` |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
- **Insert tabs through slot**
|
|
51
|
+
- **State integration:** automatic through xstate
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Example: Dynamic JS
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
const tabs = document.createElement('x-tabs');
|
|
59
|
+
tabs.innerHTML = '<div slot="tab" label="A">A</div>';
|
|
60
|
+
document.body.appendChild(tabs);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Styling and Theming
|
|
66
|
+
|
|
67
|
+
```css
|
|
68
|
+
x-tabs {
|
|
69
|
+
--tab-active-bg: #007bff;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Accessibility
|
|
76
|
+
|
|
77
|
+
`x-tabs` renders a `role="tablist"` header, creates `role="tab"` for every
|
|
78
|
+
button, and connects buttons and panels through `aria-controls` and
|
|
79
|
+
`aria-labelledby`.
|
|
80
|
+
|
|
81
|
+
Keyboard navigation uses roving `tabindex`:
|
|
82
|
+
|
|
83
|
+
| Key | Behavior |
|
|
84
|
+
|-----|----------|
|
|
85
|
+
| `ArrowRight` | next tab |
|
|
86
|
+
| `ArrowLeft` | previous tab |
|
|
87
|
+
| `Home` | first tab |
|
|
88
|
+
| `End` | last tab |
|
|
89
|
+
| `Enter` / `Space` | activate focused tab |
|
|
90
|
+
|
|
91
|
+
Active panels carry `role="tabpanel"` and `aria-hidden="false"`; inactive
|
|
92
|
+
panels are removed from visible navigation with `hidden` and
|
|
93
|
+
`aria-hidden="true"`.
|
|
94
|
+
|
|
95
|
+
## Performance Profile from WP-E12-02
|
|
96
|
+
|
|
97
|
+
`x-tabs` has an explicit `xtendScaffoldPerformanceProfile` under
|
|
98
|
+
`xtend.performance.component-profile.v1`.
|
|
99
|
+
|
|
100
|
+
| Field | Value |
|
|
101
|
+
|-------|-------|
|
|
102
|
+
| Budget class | `critical` |
|
|
103
|
+
| Lane | `user-blocking` |
|
|
104
|
+
| Hydration policy | `visible` |
|
|
105
|
+
| Tab switch budget | `16 ms` |
|
|
106
|
+
| Keyboard budget | `16 ms` |
|
|
107
|
+
| Render update budget | `28 ms` |
|
|
108
|
+
|
|
109
|
+
RMT shells can schedule `x-tabs` through `ui.user-blocking.tabs`,
|
|
110
|
+
`route.transition.tab`, `component.visible.hydrate`, and `diagnostics.snapshot`.
|
|
111
|
+
The RMT kernel remains framework-agnostic; XTend-specific data lives in the
|
|
112
|
+
component adapter metadata profile.
|
|
113
|
+
|
|
114
|
+
The runtime provides `getPerformanceBudget()` and `snapshotPerformance()`.
|
|
115
|
+
`snapshotPerformance()` returns local measurement points for hydration, render,
|
|
116
|
+
tab switch, and keyboard interactions so Fabric or a later reporter can consume
|
|
117
|
+
the data.
|
|
118
|
+
|
|
119
|
+
## Component-Level Contract from ER-WP-33
|
|
120
|
+
|
|
121
|
+
- `selected` determines the active tab index.
|
|
122
|
+
- `text-color` synchronizes the text color in the tab header.
|
|
123
|
+
- `tab-selected` is emitted after a tab change with `{ index }`.
|
|
124
|
+
- `xtabs-selected` is the canonical `xstate` key for external tab changes.
|
|
125
|
+
- Keyboard navigation includes `ArrowRight`, `ArrowLeft`, `Home`, `End`,
|
|
126
|
+
`Enter`, and `Space`.
|
|
127
|
+
- `data-rmt-schedule="ui.user-blocking.tabs"` and
|
|
128
|
+
`data-xtend-lane="user-blocking"` form the fixture line for RMT/Fabric
|
|
129
|
+
scheduling.
|
|
130
|
+
- `snapshotPerformance()` makes the WP-E12-02 runtime budget testable.
|
|
131
|
+
- Since `WP-E12-03`, browser smoke and theme matrix explicitly cover `x-tabs`
|
|
132
|
+
keyboard, ARIA, and theme shell journeys.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
*Last updated: May 7, 2026*
|
|
137
|
+
|
|
138
|
+
## ECH-WP-09 Token Table and Navigation States
|
|
139
|
+
|
|
140
|
+
`signatureDesign`: `x-tabs` creates an independent enterprise tab navigation
|
|
141
|
+
with visible selected rail, wrap-safe labels, and fully replaceable typography.
|
|
142
|
+
Active/current/selected, hover, focus, and disabled states are themeable through
|
|
143
|
+
shared navigation tokens.
|
|
144
|
+
|
|
145
|
+
| Token | Purpose |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| `--xtend-nav-surface` | tablist surface |
|
|
148
|
+
| `--xtend-nav-text` | tab text |
|
|
149
|
+
| `--xtend-nav-border-color` | tab and tablist edges |
|
|
150
|
+
| `--xtend-nav-radius` | tab radius |
|
|
151
|
+
| `--xtend-nav-gap` | spacing between tabs |
|
|
152
|
+
| `--xtend-nav-font-family` | tab typography |
|
|
153
|
+
| `--xtend-nav-font-size` | tab text size |
|
|
154
|
+
| `--xtend-nav-active-surface` | selected surface |
|
|
155
|
+
| `--xtend-nav-active-text` | selected text |
|
|
156
|
+
| `--xtend-nav-current-indicator` | non-color-only selected indicator |
|
|
157
|
+
| `--xtend-nav-hover-surface` | hover surface |
|
|
158
|
+
| `--xtend-nav-focus-ring` | keyboard focus |
|
|
159
|
+
| `--xtend-nav-disabled-opacity` | disabled dimming |
|
|
160
|
+
|
|
161
|
+
## ECH-WP-09 Keyboard Behavior
|
|
162
|
+
|
|
163
|
+
`ArrowRight`, `ArrowLeft`, `Home`, `End`, `Enter`, and `Space` remain the
|
|
164
|
+
binding keys. Disabled tabs are not focusable or activatable.
|
|
165
|
+
Active/current/selected is mirrored through `aria-selected="true"` on the tab
|
|
166
|
+
and `role="tabpanel"` on the panel; route tabs may additionally carry
|
|
167
|
+
`aria-current="page"` through host logic.
|
|
168
|
+
|
|
169
|
+
## ECH-WP-09 External Theme
|
|
170
|
+
|
|
171
|
+
```css
|
|
172
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-tabs {
|
|
173
|
+
--xtend-nav-surface: #f3f0e8;
|
|
174
|
+
--xtend-nav-text: #202520;
|
|
175
|
+
--xtend-nav-border-color: rgba(32, 37, 32, 0.24);
|
|
176
|
+
--xtend-nav-radius: 0.35rem;
|
|
177
|
+
--xtend-nav-gap: 0.4rem;
|
|
178
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
179
|
+
--xtend-nav-font-size: 0.95rem;
|
|
180
|
+
--xtend-nav-active-surface: #243c34;
|
|
181
|
+
--xtend-nav-active-text: #fff9ed;
|
|
182
|
+
--xtend-nav-current-indicator: #a65f2d;
|
|
183
|
+
--xtend-nav-hover-surface: rgba(166, 95, 45, 0.14);
|
|
184
|
+
--xtend-nav-focus-ring: 3px solid #a65f2d;
|
|
185
|
+
--xtend-nav-disabled-opacity: 0.42;
|
|
186
|
+
}
|
|
187
|
+
```
|