@ccslabs/xtend 0.1.0-rc.1
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 +65 -0
- package/LICENSE +201 -0
- package/README.md +184 -0
- package/a11y/motion-contrast-policy.d.ts +32 -0
- package/a11y/motion-contrast-policy.js +261 -0
- package/a11y/runtime-a11y-contract.d.ts +44 -0
- package/a11y/runtime-a11y-contract.js +385 -0
- package/a11y/screenreader-signals.d.ts +32 -0
- package/a11y/screenreader-signals.js +372 -0
- package/api.d.ts +168 -0
- package/api.js +864 -0
- package/catalog/catalog-public-types.d.ts +66 -0
- package/catalog/component-catalog-coverage.d.ts +20 -0
- package/catalog/component-catalog-coverage.js +377 -0
- package/catalog/component-long-tail-migration.d.ts +18 -0
- package/catalog/component-long-tail-migration.js +305 -0
- package/catalog/component-regression-priority.d.ts +20 -0
- package/catalog/component-regression-priority.js +305 -0
- package/catalog/enterprise-component-flex-release-handoff.d.ts +32 -0
- package/catalog/enterprise-component-flex-release-handoff.js +437 -0
- package/catalog/enterprise-component-style-audit.d.ts +22 -0
- package/catalog/enterprise-component-style-audit.js +353 -0
- package/catalog/enterprise-form-control-theme-a11y.d.ts +19 -0
- package/catalog/enterprise-form-control-theme-a11y.js +220 -0
- package/catalog/enterprise-icon-control-audit.d.ts +21 -0
- package/catalog/enterprise-icon-control-audit.js +258 -0
- package/catalog/enterprise-layout-display-media-tokenization.d.ts +20 -0
- package/catalog/enterprise-layout-display-media-tokenization.js +237 -0
- package/catalog/enterprise-navigation-routing-state-hardening.d.ts +20 -0
- package/catalog/enterprise-navigation-routing-state-hardening.js +255 -0
- package/catalog/enterprise-overlay-mode-token-parity.d.ts +15 -0
- package/catalog/enterprise-overlay-mode-token-parity.js +178 -0
- package/catalog/enterprise-third-party-authoring-guide.d.ts +23 -0
- package/catalog/enterprise-third-party-authoring-guide.js +310 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.d.ts +31 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.js +357 -0
- package/catalog/epic10-existing-component-metadata.d.ts +25 -0
- package/catalog/epic10-existing-component-metadata.js +534 -0
- package/catalog/epic10-p0-component-wave.d.ts +28 -0
- package/catalog/epic10-p0-component-wave.js +688 -0
- package/catalog/epic10-platform-gates.d.ts +31 -0
- package/catalog/epic10-platform-gates.js +425 -0
- package/catalog/epic10-release-handoff.d.ts +30 -0
- package/catalog/epic10-release-handoff.js +195 -0
- package/catalog/epic11-enterprise-ux-handoff.d.ts +29 -0
- package/catalog/epic11-enterprise-ux-handoff.js +403 -0
- package/catalog/epic12-docs-adoption.d.ts +29 -0
- package/catalog/epic12-docs-adoption.js +183 -0
- package/catalog/epic12-rc0-gate-matrix.d.ts +36 -0
- package/catalog/epic12-rc0-gate-matrix.js +439 -0
- package/catalog/epic12-rc0-handoff.d.ts +30 -0
- package/catalog/epic12-rc0-handoff.js +385 -0
- package/catalog/epic13-conditional-network-evidence-ci.d.ts +35 -0
- package/catalog/epic13-conditional-network-evidence-ci.js +278 -0
- package/catalog/epic13-conditional-network-evidence.d.ts +34 -0
- package/catalog/epic13-conditional-network-evidence.js +280 -0
- package/catalog/epic13-docs-rmt-production-hardening.d.ts +39 -0
- package/catalog/epic13-docs-rmt-production-hardening.js +286 -0
- package/catalog/epic13-hydration-performance-closure.d.ts +33 -0
- package/catalog/epic13-hydration-performance-closure.js +234 -0
- package/catalog/epic13-known-residual-triage.d.ts +32 -0
- package/catalog/epic13-known-residual-triage.js +339 -0
- package/catalog/epic13-package-export-lock.d.ts +41 -0
- package/catalog/epic13-package-export-lock.js +604 -0
- package/catalog/epic13-prod-browser-csp-smoke.d.ts +35 -0
- package/catalog/epic13-prod-browser-csp-smoke.js +218 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.d.ts +36 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.js +418 -0
- package/catalog/epic13-rc1-migration-notes.d.ts +36 -0
- package/catalog/epic13-rc1-migration-notes.js +271 -0
- package/catalog/epic13-rc1-readiness.d.ts +33 -0
- package/catalog/epic13-rc1-readiness.js +487 -0
- package/catalog/epic13-release-owner-acceptance.d.ts +33 -0
- package/catalog/epic13-release-owner-acceptance.js +354 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.d.ts +36 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.js +253 -0
- package/catalog/epic13-rmt-production-readiness.d.ts +35 -0
- package/catalog/epic13-rmt-production-readiness.js +314 -0
- package/catalog/epic13-trusted-dom-boundary.d.ts +36 -0
- package/catalog/epic13-trusted-dom-boundary.js +230 -0
- package/catalog/epic13-visual-owner-artifact.d.ts +35 -0
- package/catalog/epic13-visual-owner-artifact.js +233 -0
- package/catalog/epic14-lsp-handoff.d.ts +28 -0
- package/catalog/epic14-lsp-handoff.js +312 -0
- package/catalog/epic14-rmt-tooling.d.ts +33 -0
- package/catalog/epic14-rmt-tooling.js +282 -0
- package/catalog/surface-manager-adapter-runtime.d.ts +37 -0
- package/catalog/surface-manager-adapter-runtime.js +203 -0
- package/catalog/surface-manager-browser-lab.d.ts +39 -0
- package/catalog/surface-manager-browser-lab.js +225 -0
- package/catalog/surface-manager-controller.d.ts +43 -0
- package/catalog/surface-manager-controller.js +290 -0
- package/catalog/surface-manager-layout-engines.d.ts +32 -0
- package/catalog/surface-manager-layout-engines.js +161 -0
- package/catalog/surface-manager-lazy-loading.d.ts +35 -0
- package/catalog/surface-manager-lazy-loading.js +173 -0
- package/catalog/surface-manager-materialization.d.ts +37 -0
- package/catalog/surface-manager-materialization.js +202 -0
- package/catalog/surface-manager-native-rmt-surfaces.d.ts +48 -0
- package/catalog/surface-manager-native-rmt-surfaces.js +325 -0
- package/catalog/surface-manager-overlay-bridge.d.ts +42 -0
- package/catalog/surface-manager-overlay-bridge.js +247 -0
- package/catalog/surface-manager-persistence.d.ts +37 -0
- package/catalog/surface-manager-persistence.js +178 -0
- package/catalog/surface-manager-quality-gates.d.ts +48 -0
- package/catalog/surface-manager-quality-gates.js +324 -0
- package/catalog/surface-manager-release-handoff.d.ts +47 -0
- package/catalog/surface-manager-release-handoff.js +274 -0
- package/catalog/surface-manager-remote-policy.d.ts +34 -0
- package/catalog/surface-manager-remote-policy.js +199 -0
- package/catalog/surface-manager-rmt-authoring.d.ts +44 -0
- package/catalog/surface-manager-rmt-authoring.js +368 -0
- package/catalog/surface-manager-route-lifecycle.d.ts +32 -0
- package/catalog/surface-manager-route-lifecycle.js +162 -0
- package/catalog/surface-manager-runtime-release-handoff.d.ts +36 -0
- package/catalog/surface-manager-runtime-release-handoff.js +245 -0
- package/catalog/surface-manager-side-panel-runtime.d.ts +46 -0
- package/catalog/surface-manager-side-panel-runtime.js +307 -0
- package/catalog/surface-manager-stack-policy.d.ts +32 -0
- package/catalog/surface-manager-stack-policy.js +169 -0
- package/catalog/surface-manager-window-runtime.d.ts +45 -0
- package/catalog/surface-manager-window-runtime.js +285 -0
- package/catalog/surface-manager-workbench-fixture.d.ts +50 -0
- package/catalog/surface-manager-workbench-fixture.js +315 -0
- package/catalog/type-exports-api.js +236 -0
- package/catalog/type-exports-builder.js +405 -0
- package/catalog/type-exports-catalog.js +394 -0
- package/catalog/type-exports-loader.js +266 -0
- package/catalog/type-exports-policy.js +461 -0
- package/catalog/type-exports-rmt.js +407 -0
- package/catalog/type-exports-vendor.js +365 -0
- package/catalog/type-exports.js +574 -0
- package/components/icon-packs/core.js +154 -0
- package/components/icon-packs/lucide.js +136 -0
- package/components/manifest.json +44 -0
- package/components/prism.d.ts +73 -0
- package/components/prism.js +300 -0
- package/components/turndown.d.ts +34 -0
- package/components/turndown.js +107 -0
- package/components/x-rmt-lifecycle-demo-build.d.ts +78 -0
- package/components/x-rmt-lifecycle-demo-build.js +1175 -0
- package/components/x-rmt-lifecycle-demo.d.ts +83 -0
- package/components/x-rmt-lifecycle-demo.js +1175 -0
- package/components/xalert.d.ts +42 -0
- package/components/xalert.js +538 -0
- package/components/xbutton.d.ts +127 -0
- package/components/xbutton.js +612 -0
- package/components/xcalendar.d.ts +39 -0
- package/components/xcalendar.js +338 -0
- package/components/xcards.d.ts +34 -0
- package/components/xcards.js +253 -0
- package/components/xcheckbox.d.ts +48 -0
- package/components/xcheckbox.js +448 -0
- package/components/xcode.d.ts +35 -0
- package/components/xcode.js +370 -0
- package/components/xdialog.d.ts +48 -0
- package/components/xdialog.js +763 -0
- package/components/xdrawer.d.ts +61 -0
- package/components/xdrawer.js +654 -0
- package/components/xfooter.d.ts +41 -0
- package/components/xfooter.js +351 -0
- package/components/xform.d.ts +43 -0
- package/components/xform.js +456 -0
- package/components/xheader.d.ts +68 -0
- package/components/xheader.js +1253 -0
- package/components/xhero.d.ts +42 -0
- package/components/xhero.js +475 -0
- package/components/xicon.d.ts +146 -0
- package/components/xicon.js +688 -0
- package/components/xinput.d.ts +37 -0
- package/components/xinput.js +444 -0
- package/components/xlightbox.d.ts +48 -0
- package/components/xlightbox.js +571 -0
- package/components/xlink.d.ts +63 -0
- package/components/xlink.js +565 -0
- package/components/xmasonry.d.ts +35 -0
- package/components/xmasonry.js +666 -0
- package/components/xmenu.d.ts +118 -0
- package/components/xmenu.js +1005 -0
- package/components/xmodal.d.ts +64 -0
- package/components/xmodal.js +831 -0
- package/components/xplayer.d.ts +57 -0
- package/components/xplayer.js +1748 -0
- package/components/xpopover.d.ts +54 -0
- package/components/xpopover.js +466 -0
- package/components/xprogress.d.ts +40 -0
- package/components/xprogress.js +345 -0
- package/components/xradio.d.ts +50 -0
- package/components/xradio.js +474 -0
- package/components/xrouter.d.ts +244 -0
- package/components/xrouter.js +1841 -0
- package/components/xsection.d.ts +34 -0
- package/components/xsection.js +253 -0
- package/components/xselect.d.ts +46 -0
- package/components/xselect.js +463 -0
- package/components/xsidepanel.d.ts +56 -0
- package/components/xsidepanel.js +728 -0
- package/components/xspinner.d.ts +38 -0
- package/components/xspinner.js +388 -0
- package/components/xstate.d.ts +137 -0
- package/components/xstate.js +493 -0
- package/components/xstatus.d.ts +41 -0
- package/components/xstatus.js +381 -0
- package/components/xsummary.d.ts +43 -0
- package/components/xsummary.js +293 -0
- package/components/xsurfacemanager-controller.d.ts +130 -0
- package/components/xsurfacemanager-controller.js +699 -0
- package/components/xsurfacemanager.d.ts +452 -0
- package/components/xsurfacemanager.js +3775 -0
- package/components/xsurfaceoverlay-bridge.d.ts +43 -0
- package/components/xsurfaceoverlay-bridge.js +238 -0
- package/components/xsurfacewindow.d.ts +50 -0
- package/components/xsurfacewindow.js +576 -0
- package/components/xtabs.d.ts +73 -0
- package/components/xtabs.js +611 -0
- package/components/xtend-public-types.d.ts +208 -0
- package/components/xtextarea.d.ts +46 -0
- package/components/xtextarea.js +451 -0
- package/components/xtheme.d.ts +253 -0
- package/components/xtheme.js +1438 -0
- package/components/xtoast.d.ts +39 -0
- package/components/xtoast.js +389 -0
- package/components/xtooltip.d.ts +53 -0
- package/components/xtooltip.js +432 -0
- package/components/xtype.d.ts +42 -0
- package/components/xtype.js +244 -0
- package/components/xutils.d.ts +164 -0
- package/components/xutils.js +496 -0
- package/components/xwriter.d.ts +67 -0
- package/components/xwriter.js +854 -0
- package/design-tokens/themes/enterprise-light.json +40 -0
- package/design-tokens/themes/xtend-signature.json +126 -0
- package/design-tokens/xtend-design-tokens.d.ts +95 -0
- package/design-tokens/xtend-design-tokens.js +395 -0
- package/design-tokens/xtheme-token-alias-layer.d.ts +84 -0
- package/design-tokens/xtheme-token-alias-layer.js +423 -0
- package/docs/.htaccess +51 -0
- package/docs/README.md +340 -0
- package/docs/XTend-ADR.md +221 -0
- package/docs/a11y-keyboard-smokes.md +62 -0
- package/docs/about.md +18 -0
- package/docs/api.md +157 -0
- package/docs/best-practices.md +76 -0
- package/docs/component-catalog-coverage.md +58 -0
- package/docs/component-lab.md +103 -0
- package/docs/component-long-tail-migration.md +41 -0
- package/docs/component-platform.md +159 -0
- package/docs/component-ux-app-authoring.md +130 -0
- package/docs/component-ux-authoring.md +96 -0
- package/docs/component-ux-gates.md +45 -0
- package/docs/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/components/xalert.md +81 -0
- package/docs/components/xbutton.md +103 -0
- package/docs/components/xcalendar.md +82 -0
- package/docs/components/xcards.md +128 -0
- package/docs/components/xcheckbox.md +102 -0
- package/docs/components/xcode.md +126 -0
- package/docs/components/xdialog.md +92 -0
- package/docs/components/xdrawer.md +84 -0
- package/docs/components/xfooter.md +126 -0
- package/docs/components/xform.md +128 -0
- package/docs/components/xheader.md +308 -0
- package/docs/components/xhero.md +142 -0
- package/docs/components/xicon.md +125 -0
- package/docs/components/xinput.md +129 -0
- package/docs/components/xlightbox.md +98 -0
- package/docs/components/xlink.md +109 -0
- package/docs/components/xmasonry.md +124 -0
- package/docs/components/xmenu.md +158 -0
- package/docs/components/xmodal.md +82 -0
- package/docs/components/xplayer.md +104 -0
- package/docs/components/xpopover.md +67 -0
- package/docs/components/xprogress.md +56 -0
- package/docs/components/xradio.md +103 -0
- package/docs/components/xrouter.md +260 -0
- package/docs/components/xsection.md +125 -0
- package/docs/components/xselect.md +105 -0
- package/docs/components/xsidepanel.md +30 -0
- package/docs/components/xspinner.md +102 -0
- package/docs/components/xstate.md +148 -0
- package/docs/components/xstatus.md +55 -0
- package/docs/components/xsummary.md +78 -0
- package/docs/components/xsurfacemanager.md +27 -0
- package/docs/components/xsurfacewindow.md +21 -0
- package/docs/components/xtabs.md +160 -0
- package/docs/components/xtextarea.md +98 -0
- package/docs/components/xtheme.md +167 -0
- package/docs/components/xtoast.md +62 -0
- package/docs/components/xtooltip.md +66 -0
- package/docs/components/xtype.md +82 -0
- package/docs/components/xutils.md +144 -0
- package/docs/components/xwriter.md +94 -0
- package/docs/components.md +117 -0
- package/docs/conditional-network-evidence-ci.md +38 -0
- package/docs/conditional-network-evidence.md +50 -0
- package/docs/core-migration-guide.md +110 -0
- package/docs/design-tokens.md +116 -0
- package/docs/docs-rmt-production-hardening.md +31 -0
- package/docs/enterprise-adoption.md +411 -0
- package/docs/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/epic10-platform-gates.md +62 -0
- package/docs/epic10-release-handoff.md +81 -0
- package/docs/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/epic12-rc0-handoff.md +61 -0
- package/docs/existing-component-metadata.md +67 -0
- package/docs/hydration-performance-closure.md +34 -0
- package/docs/hydration-policies.md +71 -0
- package/docs/index.php +1625 -0
- package/docs/known-residual-triage.md +22 -0
- package/docs/manifest-import-policy.md +79 -0
- package/docs/manifest.md +106 -0
- package/docs/menu.json +1190 -0
- package/docs/motion-contrast.md +67 -0
- package/docs/package-export-lock.md +44 -0
- package/docs/performance-measurements.md +106 -0
- package/docs/performance-regression.md +89 -0
- package/docs/performance.md +94 -0
- package/docs/previews/README.md +17 -0
- package/docs/prod-browser-csp-smokes.md +40 -0
- package/docs/public-component-types.md +79 -0
- package/docs/quick-start-guide.md +152 -0
- package/docs/rc0-adoption-guide.md +102 -0
- package/docs/rc0-gate-matrix.md +58 -0
- package/docs/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/rc1-migration-notes.md +69 -0
- package/docs/rc1-readiness.md +46 -0
- package/docs/release-owner-acceptance.md +56 -0
- package/docs/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/rmt-dsl-authoring-polish.md +122 -0
- package/docs/rmt-first-demo-app.md +77 -0
- package/docs/rmt-first-xtend-apps.md +105 -0
- package/docs/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/rmt-language-server.md +177 -0
- package/docs/rmt-lifecycle-demo.md +25 -0
- package/docs/rmt-linter.md +140 -0
- package/docs/rmt-production-readiness.md +63 -0
- package/docs/rmt-tooling-release-gates.md +77 -0
- package/docs/rmt-vnext-authoring.md +60 -0
- package/docs/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/rmt-vnext-migration-notes.md +62 -0
- package/docs/rmt-vnext-release-handoff.md +69 -0
- package/docs/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/screenreader-signals.md +56 -0
- package/docs/supply-chain-gates.md +100 -0
- package/docs/surface-manager-authoring-guide.md +94 -0
- package/docs/surface-manager-browser-lab.md +45 -0
- package/docs/surface-manager-component-lab.md +43 -0
- package/docs/surface-manager-controller.md +66 -0
- package/docs/surface-manager-layout-engines.md +32 -0
- package/docs/surface-manager-lazy-hydration.md +63 -0
- package/docs/surface-manager-migration-guide.md +94 -0
- package/docs/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/surface-manager-overlay-bridge.md +53 -0
- package/docs/surface-manager-persistence.md +30 -0
- package/docs/surface-manager-quality-gates.md +51 -0
- package/docs/surface-manager-release-handoff.md +68 -0
- package/docs/surface-manager-remote-policy.md +54 -0
- package/docs/surface-manager-rmt-authoring.md +86 -0
- package/docs/surface-manager-route-lifecycle.md +59 -0
- package/docs/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/surface-manager-side-panel-runtime.md +36 -0
- package/docs/surface-manager-stack-policy.md +39 -0
- package/docs/surface-manager-window-runtime.md +47 -0
- package/docs/surface-manager-workbench-fixture.md +43 -0
- package/docs/third-party-design-authoring.md +406 -0
- package/docs/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/trusted-dom-sanitizing.md +110 -0
- package/docs/type-exports.md +61 -0
- package/docs/typescript-components.md +63 -0
- package/docs/utils/fabric-runtime.js +650 -0
- package/docs/utils/pageloader.js +2823 -0
- package/docs/utils/parsedown.php +298 -0
- package/docs/visual-browser-regression.md +83 -0
- package/docs/visual-owner-artifacts.md +46 -0
- package/docs/visual-snapshot-automation.md +87 -0
- package/docs/xtend-api-types.md +55 -0
- package/docs/xtend-builder-types.md +55 -0
- package/docs/xtend-catalog-types.md +44 -0
- package/docs/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/xtend-fabric.md +474 -0
- package/docs/xtend-loader-types.md +58 -0
- package/docs/xtend-loader.md +265 -0
- package/docs/xtend-policy-types.md +38 -0
- package/docs/xtend-rmt-types.md +39 -0
- package/docs/xtend-vendor-types.md +36 -0
- package/docs/xtendrmt-app-dsl.md +269 -0
- package/docs/xtendrmt-migration-guide.md +235 -0
- package/docs/xtendrmt-native-authoring.md +337 -0
- package/docs/xtendrmt-overview.md +89 -0
- package/docs/xtendrmt-parsedown-docs.rmt +956 -0
- package/docs/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/xtendrmt-runtime-bridge.md +155 -0
- package/fabric/hydration-policy.d.ts +27 -0
- package/fabric/hydration-policy.js +306 -0
- package/fabric/package.json +58 -0
- package/fabric/rmt-lane-mapping.d.ts +47 -0
- package/fabric/rmt-lane-mapping.js +504 -0
- package/fabric/xtend-fabric.d.ts +81 -0
- package/fabric/xtend-fabric.js +2669 -0
- package/fabric/xtend-policy-public-types.d.ts +135 -0
- package/package.json +8225 -0
- package/security/README.md +54 -0
- package/security/manifest-import-policy.d.ts +43 -0
- package/security/manifest-import-policy.js +260 -0
- package/security/supply-chain-gate-policy.d.ts +45 -0
- package/security/supply-chain-gate-policy.js +249 -0
- package/security/trusted-dom-policy.d.ts +36 -0
- package/security/trusted-dom-policy.js +316 -0
- package/tools/package.json +77 -0
- package/tools/rmt-editor/vscode/README.md +33 -0
- package/tools/rmt-editor/vscode/extension.d.ts +9 -0
- package/tools/rmt-editor/vscode/extension.js +55 -0
- package/tools/rmt-editor/vscode/language-configuration.json +28 -0
- package/tools/rmt-editor/vscode/package.json +83 -0
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +13 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/code-actions.d.ts +15 -0
- package/tools/rmt-language/code-actions.js +566 -0
- package/tools/rmt-language/completions.d.ts +22 -0
- package/tools/rmt-language/completions.js +475 -0
- package/tools/rmt-language/definitions.d.ts +13 -0
- package/tools/rmt-language/definitions.js +212 -0
- package/tools/rmt-language/diagnostics.d.ts +23 -0
- package/tools/rmt-language/diagnostics.js +486 -0
- package/tools/rmt-language/format-adapter.d.ts +16 -0
- package/tools/rmt-language/format-adapter.js +270 -0
- package/tools/rmt-language/hover.d.ts +12 -0
- package/tools/rmt-language/hover.js +326 -0
- package/tools/rmt-language/kernel-escalation.d.ts +122 -0
- package/tools/rmt-language/kernel-escalation.js +427 -0
- package/tools/rmt-language/kernel-panic-monitor.d.ts +176 -0
- package/tools/rmt-language/kernel-panic-monitor.js +674 -0
- package/tools/rmt-language/kernel-policy-parity.d.ts +142 -0
- package/tools/rmt-language/kernel-policy-parity.js +629 -0
- package/tools/rmt-language/kernel-recovery.d.ts +173 -0
- package/tools/rmt-language/kernel-recovery.js +666 -0
- package/tools/rmt-language/kernel-scheduler-failure.d.ts +136 -0
- package/tools/rmt-language/kernel-scheduler-failure.js +486 -0
- package/tools/rmt-language/kernel-security-regression.d.ts +154 -0
- package/tools/rmt-language/kernel-security-regression.js +465 -0
- package/tools/rmt-language/kernel-trust-authority.d.ts +120 -0
- package/tools/rmt-language/kernel-trust-authority.js +549 -0
- package/tools/rmt-language/parser.d.ts +14 -0
- package/tools/rmt-language/parser.js +111 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +179 -0
- package/tools/rmt-language/rules/boundary-policy.js +81 -0
- package/tools/rmt-language/rules/document-policy.js +65 -0
- package/tools/rmt-language/rules/index.js +29 -0
- package/tools/rmt-language/rules/route-policy.js +81 -0
- package/tools/rmt-language/rules/scheduler-policy.js +66 -0
- package/tools/rmt-language/rules/template-policy.js +130 -0
- package/tools/rmt-language/semantic-graph.d.ts +18 -0
- package/tools/rmt-language/semantic-graph.js +827 -0
- package/tools/rmt-language/snippets/README.md +17 -0
- package/tools/rmt-language/snippets/index.d.ts +17 -0
- package/tools/rmt-language/snippets/index.js +417 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-language/source-model.d.ts +14 -0
- package/tools/rmt-language/source-model.js +731 -0
- package/tools/rmt-language/symbols.d.ts +13 -0
- package/tools/rmt-language/symbols.js +183 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +28 -0
- package/tools/rmt-language/vnext-compatibility.js +675 -0
- package/tools/rmt-language/vnext-compiler.d.ts +17 -0
- package/tools/rmt-language/vnext-compiler.js +716 -0
- package/tools/rmt-language/vnext-composition.d.ts +30 -0
- package/tools/rmt-language/vnext-composition.js +595 -0
- package/tools/rmt-language/vnext-conditions.d.ts +25 -0
- package/tools/rmt-language/vnext-conditions.js +474 -0
- package/tools/rmt-language/vnext-cross-surface-events.d.ts +30 -0
- package/tools/rmt-language/vnext-cross-surface-events.js +607 -0
- package/tools/rmt-language/vnext-degradation.d.ts +23 -0
- package/tools/rmt-language/vnext-degradation.js +428 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.d.ts +28 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.js +487 -0
- package/tools/rmt-language/vnext-enterprise-registry.d.ts +21 -0
- package/tools/rmt-language/vnext-enterprise-registry.js +495 -0
- package/tools/rmt-language/vnext-enterprise-release.d.ts +44 -0
- package/tools/rmt-language/vnext-enterprise-release.js +472 -0
- package/tools/rmt-language/vnext-event-governance.d.ts +29 -0
- package/tools/rmt-language/vnext-event-governance.js +488 -0
- package/tools/rmt-language/vnext-events.d.ts +44 -0
- package/tools/rmt-language/vnext-events.js +680 -0
- package/tools/rmt-language/vnext-import-resolver.d.ts +28 -0
- package/tools/rmt-language/vnext-import-resolver.js +642 -0
- package/tools/rmt-language/vnext-lifecycle.d.ts +22 -0
- package/tools/rmt-language/vnext-lifecycle.js +404 -0
- package/tools/rmt-language/vnext-parser.d.ts +21 -0
- package/tools/rmt-language/vnext-parser.js +1391 -0
- package/tools/rmt-language/vnext-regression.d.ts +25 -0
- package/tools/rmt-language/vnext-regression.js +394 -0
- package/tools/rmt-language/vnext-release.d.ts +29 -0
- package/tools/rmt-language/vnext-release.js +293 -0
- package/tools/rmt-language/vnext-remote-compatibility.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-compatibility.js +892 -0
- package/tools/rmt-language/vnext-remote-compiler.d.ts +14 -0
- package/tools/rmt-language/vnext-remote-compiler.js +520 -0
- package/tools/rmt-language/vnext-remote-manifest.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-manifest.js +538 -0
- package/tools/rmt-language/vnext-remote-security.d.ts +27 -0
- package/tools/rmt-language/vnext-remote-security.js +380 -0
- package/tools/rmt-language/vnext-remote-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-remote-tooling.js +805 -0
- package/tools/rmt-language/vnext-scheduler.d.ts +24 -0
- package/tools/rmt-language/vnext-scheduler.js +469 -0
- package/tools/rmt-language/vnext-security.d.ts +28 -0
- package/tools/rmt-language/vnext-security.js +597 -0
- package/tools/rmt-language/vnext-streaming.d.ts +28 -0
- package/tools/rmt-language/vnext-streaming.js +593 -0
- package/tools/rmt-language/vnext-surfaces.d.ts +24 -0
- package/tools/rmt-language/vnext-surfaces.js +406 -0
- package/tools/rmt-language/vnext-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-tooling.js +728 -0
- package/tools/rmt-language-server/protocol.d.ts +22 -0
- package/tools/rmt-language-server/protocol.js +352 -0
- package/tools/rmt-language-server/server.d.ts +15 -0
- package/tools/rmt-language-server/server.js +622 -0
- package/tools/rmt-linter/cli.d.ts +14 -0
- package/tools/rmt-linter/cli.js +450 -0
- package/tools/rmt-linter/reporter.d.ts +16 -0
- package/tools/rmt-linter/reporter.js +472 -0
- package/xtend-builder/README.md +83 -0
- package/xtend-builder/a11y/README.md +42 -0
- package/xtend-builder/a11y/component-a11y-profile.d.ts +14 -0
- package/xtend-builder/a11y/component-a11y-profile.js +314 -0
- package/xtend-builder/blueprints/README.md +105 -0
- package/xtend-builder/blueprints/component-blueprint.contract.d.ts +16 -0
- package/xtend-builder/blueprints/component-blueprint.contract.js +343 -0
- package/xtend-builder/builder-public-types.d.ts +234 -0
- package/xtend-builder/extensions/README.md +26 -0
- package/xtend-builder/extensions/component-extension-points.d.ts +11 -0
- package/xtend-builder/extensions/component-extension-points.js +277 -0
- package/xtend-builder/generators/README.md +149 -0
- package/xtend-builder/generators/component-files.d.ts +5 -0
- package/xtend-builder/generators/component-files.js +769 -0
- package/xtend-builder/generators/component-plan.d.ts +4 -0
- package/xtend-builder/generators/component-plan.js +104 -0
- package/xtend-builder/generators/registry.d.ts +6 -0
- package/xtend-builder/generators/registry.js +118 -0
- package/xtend-builder/generators/rmt-build.js +738 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +922 -0
- package/xtend-builder/lib/cli.d.ts +9 -0
- package/xtend-builder/lib/cli.js +543 -0
- package/xtend-builder/lib/layout.d.ts +6 -0
- package/xtend-builder/lib/layout.js +153 -0
- package/xtend-builder/lib/package-resolver.js +25 -0
- package/xtend-builder/package.json +90 -0
- package/xtend-builder/performance/README.md +31 -0
- package/xtend-builder/performance/component-performance-profile.d.ts +11 -0
- package/xtend-builder/performance/component-performance-profile.js +347 -0
- package/xtend-builder/performance/component-ux-performance-contract.d.ts +27 -0
- package/xtend-builder/performance/component-ux-performance-contract.js +424 -0
- package/xtend-builder/preview/README.md +61 -0
- package/xtend-builder/preview/component-lab-ux-inspector.d.ts +20 -0
- package/xtend-builder/preview/component-lab-ux-inspector.js +448 -0
- package/xtend-builder/preview/component-lab.d.ts +14 -0
- package/xtend-builder/preview/component-lab.js +278 -0
- package/xtend-builder/preview/component-preview.d.ts +5 -0
- package/xtend-builder/preview/component-preview.js +160 -0
- package/xtend-builder/scaffold.config.d.ts +4 -0
- package/xtend-builder/scaffold.config.js +2056 -0
- package/xtend-builder/scaffold.d.ts +3 -0
- package/xtend-builder/scaffold.js +11 -0
- package/xtend-builder/templates/README.md +33 -0
- package/xtend-builder/templates/component/a11y.template.ts +11 -0
- package/xtend-builder/templates/component/component-suite.template.d.ts +2 -0
- package/xtend-builder/templates/component/component-suite.template.js +108 -0
- package/xtend-builder/templates/component/contract.template.ts +10 -0
- package/xtend-builder/templates/component/demo-plan.template.md +73 -0
- package/xtend-builder/templates/component/docs.template.md +301 -0
- package/xtend-builder/templates/component/fixture-data.template.ts +28 -0
- package/xtend-builder/templates/component/fixture.template.html +37 -0
- package/xtend-builder/templates/component/manifest-plan.template.json +22 -0
- package/xtend-builder/templates/component/performance.template.ts +13 -0
- package/xtend-builder/templates/component/rmt.template.ts +12 -0
- package/xtend-builder/templates/component/source.template.d.ts +2 -0
- package/xtend-builder/templates/component/source.template.js +137 -0
- package/xtend-builder/templates/component/source.template.ts +110 -0
- package/xtend-builder/templates/component/types.template.d.ts +423 -0
- package/xtend-builder/templates/loader.d.ts +4 -0
- package/xtend-builder/templates/loader.js +51 -0
- package/xtend-builder/templates/registry.d.ts +6 -0
- package/xtend-builder/templates/registry.js +119 -0
- package/xtend-builder/typing/README.md +130 -0
- package/xtend-builder/typing/component-contract-v2.d.ts +15 -0
- package/xtend-builder/typing/component-contract-v2.js +248 -0
- package/xtend-builder/typing/component-network-contract.d.ts +22 -0
- package/xtend-builder/typing/component-network-contract.js +478 -0
- package/xtend-builder/typing/component-shell-contract.d.ts +21 -0
- package/xtend-builder/typing/component-shell-contract.js +312 -0
- package/xtend-builder/typing/component-styling-contract.d.ts +22 -0
- package/xtend-builder/typing/component-styling-contract.js +301 -0
- package/xtend-builder/typing/component-types.d.ts +10 -0
- package/xtend-builder/typing/component-types.js +551 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.d.ts +20 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.js +332 -0
- package/xtend-builder/typing/feedback-status-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/feedback-status-ux-contract.js +347 -0
- package/xtend-builder/typing/form-controls-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/form-controls-ux-contract.js +357 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.js +420 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.d.ts +17 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.js +297 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.js +383 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.d.ts +27 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.js +419 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.d.ts +26 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.js +315 -0
- package/xtend-builder/utils/README.md +8 -0
- package/xtend-builder/utils/naming.d.ts +7 -0
- package/xtend-builder/utils/naming.js +36 -0
- package/xtend-builder/utils/validation.d.ts +5 -0
- package/xtend-builder/utils/validation.js +95 -0
- package/xtend-builder/wiring/README.md +46 -0
- package/xtend-builder/wiring/features.d.ts +5 -0
- package/xtend-builder/wiring/features.js +165 -0
- package/xtend-builder/wiring/hydration.d.ts +4 -0
- package/xtend-builder/wiring/hydration.js +44 -0
- package/xtend-builder/wiring/manifest.d.ts +5 -0
- package/xtend-builder/wiring/manifest.js +48 -0
- package/xtend-builder/workflows/README.md +47 -0
- package/xtend-builder/workflows/developer-workflow.d.ts +6 -0
- package/xtend-builder/workflows/developer-workflow.js +125 -0
- package/xtend-builder/writing/manifest-patcher.d.ts +49 -0
- package/xtend-builder/writing/manifest-patcher.js +391 -0
- package/xtend-builder/writing/write-plan.d.ts +148 -0
- package/xtend-builder/writing/write-plan.js +646 -0
- package/xtend-dev.d.ts +23 -0
- package/xtend-dev.js +4 -0
- package/xtend-loader.d.ts +201 -0
- package/xtend-loader.js +1704 -0
- package/xtend.css +402 -0
- package/xtendrmt/package.json +64 -0
- package/xtendrmt/rmt-core.d.ts +4452 -0
- package/xtendrmt/rmt-core.esm.js +25793 -0
- package/xtendrmt/rmt-first-demo-app.js +265 -0
- package/xtendrmt/rmt-first-demo-app.rmt +737 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +493 -0
- package/xtendrmt/rmt-lifecycle-demo.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt +35 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +153 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +202 -0
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +187 -0
- package/xtendrmt/rmt-manifest.json +548 -0
- package/xtendrmt/rmt-runtime.browser.js +26183 -0
- package/xtendrmt/rmt-runtime.esm.js +26214 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +849 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt +50 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +1069 -0
- package/xtendrmt/rmt-vnext-reference-demo.rmt +50 -0
- package/xtendrmt/rmt.schema.json +3145 -0
- package/xtendrmt/surface-workbench.js +316 -0
- package/xtendrmt/surface-workbench.rmt +762 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +1187 -0
- package/xtendrmt/xtendrmt-bestcase-demo.js +1728 -0
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +57 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# xspinner – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xtoast](./xtoast.md), [xalert](./xalert.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`<x-spinner>` ist eine animierte, barrierearme Ladeanzeige für asynchrone Prozesse, Ladezustände und Feedback. Sie ist vielseitig, themable und unterstützt verschiedene Varianten, Overlay-Modus sowie State- und Accessibility-Integration.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Animierte Ladeanzeige (Kreis, Dots)
|
|
13
|
+
- Größe, Farbe, Geschwindigkeit, Typ per Attribut
|
|
14
|
+
- Overlay-Modus (zentriert, halbtransparent)
|
|
15
|
+
- Slot für eigenen Inhalt
|
|
16
|
+
- State-Integration via xstate
|
|
17
|
+
- Events für Pause/Resume
|
|
18
|
+
- Theming via CSS Custom Properties & XTheme
|
|
19
|
+
- Accessibility: ARIA, aria-busy, aria-label, aria-valuetext
|
|
20
|
+
- prefers-reduced-motion Support
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Verwendung
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<x-spinner size="32" color="#C70039" speed="0.7s" type="dots"></x-spinner>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Attribute
|
|
33
|
+
| Attribut | Typ | Beschreibung |
|
|
34
|
+
|-----------------|---------|---------------------------------------------------|
|
|
35
|
+
| `size` | String | Größe des Spinners (z.B. 32, 48, 64) |
|
|
36
|
+
| `color` | String | Farbe (CSS-Farbwert, z.B. #007bff) |
|
|
37
|
+
| `speed` | String | Animationsdauer (z.B. 1s, 0.7s) |
|
|
38
|
+
| `type` | String | "circle" (Standard), "dots" |
|
|
39
|
+
| `paused` | Boolean | Animation pausieren |
|
|
40
|
+
| `overlay` | Boolean | Spinner als Overlay über die Seite |
|
|
41
|
+
| `aria-label` | String | Zugänglicher Text für Screenreader |
|
|
42
|
+
| `aria-busy` | String | ARIA-Status (true/false) |
|
|
43
|
+
| `aria-valuetext`| String | Fortschrittstext für Screenreader |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Events
|
|
48
|
+
| Event | Beschreibung |
|
|
49
|
+
|---------------|-------------------------------------|
|
|
50
|
+
| `spinner-started` | Wird beim Einfügen ausgelöst |
|
|
51
|
+
| `spinner-stopped` | Wird beim Entfernen ausgelöst |
|
|
52
|
+
| `paused` | Animation wurde pausiert |
|
|
53
|
+
| `resumed` | Animation wurde fortgesetzt |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## API
|
|
58
|
+
- **Größe setzen:** `element.setAttribute('size', '48')`
|
|
59
|
+
- **Typ ändern:** `element.setAttribute('type', 'dots')`
|
|
60
|
+
- **Pause/Resume:** `element.setAttribute('paused', '')` / `element.removeAttribute('paused')`
|
|
61
|
+
- **Imperative Pause/Resume:** `element.pause()` / `element.resume()`
|
|
62
|
+
- **Snapshot:** `element.snapshot()`
|
|
63
|
+
- **Overlay aktivieren:** `element.setAttribute('overlay', '')`
|
|
64
|
+
- **State-Integration:** `xstate.set('xspinner-paused-'+element.id, true)`
|
|
65
|
+
|
|
66
|
+
## Feedback Status UX ab WP-E11-09
|
|
67
|
+
|
|
68
|
+
`<x-spinner>` stellt `xtendFeedbackStatusUxProfile` mit `xtend.component.feedback-status-ux-profile.v1` bereit. Das Profil beschreibt Spinner als Busy-Status mit `spinner-started`, `spinner-stopped`, `paused`, `resumed`, `xspinner-paused-<id>`, `component.visible.mount`, Fabric-Lane `feedback`, A11y-Lane `a11y` und RMT Shell Authoring.
|
|
69
|
+
|
|
70
|
+
Die Komponente meldet Pause/Resume ueber Events mit `source: 'x-spinner'` und `stateKey`. Animationen sind reduced-motion-safe; Busy-Status und `aria-valuetext` bleiben fuer Screenreader auch ohne sichtbare Bewegung erhalten.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Beispiel: Dynamisch per JS
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
const spinner = document.createElement('x-spinner');
|
|
78
|
+
spinner.setAttribute('size', '48');
|
|
79
|
+
spinner.setAttribute('type', 'dots');
|
|
80
|
+
document.body.appendChild(spinner);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Styling & Theming
|
|
86
|
+
|
|
87
|
+
```css
|
|
88
|
+
x-spinner {
|
|
89
|
+
--spinner-color: #007bff;
|
|
90
|
+
--spinner-size: 40px;
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Accessibility
|
|
97
|
+
- ARIA-Rolle, aria-busy, aria-label, aria-valuetext
|
|
98
|
+
- prefers-reduced-motion wird beachtet
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
*Letzte Aktualisierung: 18. Juli 2025*
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# xstate – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xalert](./xalert.md), [xtoast](./xtoast.md), [xbutton](./xbutton.md), [xtheme](./xtheme.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`xstate` ist das zentrale State-Management-Modul für XTend-Komponenten. Es ermöglicht globale und lokale Zustände, Abonnements und reaktive Updates.
|
|
8
|
+
|
|
9
|
+
Seit `WP-E12-08` ist `xstate` ausdruecklich als nicht-visuelle **Boundary-Probe** dokumentiert. Das Modul wird nicht zu einem Custom Element umgedeutet. Es stellt stattdessen eine gatebare Adapter-, Typing- und Lifecycle-Oberflaeche fuer XTend UI, Fabric und XTendRMT bereit.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
- Globales und komponentenbasiertes State-Management
|
|
15
|
+
- Abonnements für State-Änderungen mit Key-Filter
|
|
16
|
+
- Reaktive Updates für Komponenten
|
|
17
|
+
- Pfad-Updates, Batch-Updates und Storage-Helfer
|
|
18
|
+
- Kompatibilitäts-Fassade für `on/off`
|
|
19
|
+
- Lifecycle Events fuer State-Operationen
|
|
20
|
+
- Fabric-kompatible Diagnostics Snapshots
|
|
21
|
+
- RMT State Scheduler Adapter ohne Kernel-Kopplung
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Verwendung
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
import { xstate } from 'components/xstate.js';
|
|
29
|
+
|
|
30
|
+
xstate.set('key', 'value');
|
|
31
|
+
const value = xstate.get('key');
|
|
32
|
+
const unsubscribe = xstate.subscribe((key, value, allData) => { ... }, 'key');
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## API
|
|
38
|
+
| Methode | Beschreibung |
|
|
39
|
+
|---------|--------------|
|
|
40
|
+
| `get(key)` | Gibt den Wert für einen Schlüssel zurück |
|
|
41
|
+
| `set(key, val)` | Setzt einen Wert und benachrichtigt Listener |
|
|
42
|
+
| `subscribe(fn, keyFilter?)` | Kanonischer Subscription-Contract mit optionalem Key-Filter |
|
|
43
|
+
| `remove(key)` | Entfernt einen Schlüssel aus dem State |
|
|
44
|
+
| `getPath(path)` | Liest verschachtelte Werte über Dot-Notation |
|
|
45
|
+
| `setPath(path, value)` | Schreibt verschachtelte Werte über Dot-Notation |
|
|
46
|
+
| `batchUpdate(updates)` | Führt mehrere Updates in einem Schritt aus |
|
|
47
|
+
| `saveToStorage(type?, key?)` | Persistiert den State in Local- oder Session-Storage |
|
|
48
|
+
| `loadFromStorage(type?, key?)` | Lädt den State aus Browser-Storage |
|
|
49
|
+
| `on(key, fn)` | Legacy-Kompatibilität für key-basierte Listener |
|
|
50
|
+
| `off(key, fn)` | Entfernt einen per `on` registrierten Listener |
|
|
51
|
+
| `subscribeLifecycle(fn)` | Abonniert Lifecycle-/Diagnostics-Events der State-Boundary |
|
|
52
|
+
| `snapshot()` | Liefert einen stabilen State-Snapshot fuer Tests und Adapter |
|
|
53
|
+
| `snapshotDiagnostics()` | Liefert Fabric-kompatible Diagnostics |
|
|
54
|
+
| `createRmtStateAdapter(options?)` | Erstellt einen host-neutralen RMT State Adapter |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Beispiel: State in Komponente nutzen
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
xstate.set('user', { name: 'Konni' });
|
|
62
|
+
const unsubscribe = xstate.subscribe((key, value) => {
|
|
63
|
+
if (key === 'user') {
|
|
64
|
+
// Reagiere auf Änderungen
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Kanonische Empfehlung
|
|
70
|
+
|
|
71
|
+
- Neue Core-Implementierungen sollen `subscribe(fn, keyFilter)` verwenden.
|
|
72
|
+
- `on/off` bleiben als Kompatibilitäts-Fassade erlaubt, sind aber nicht der kanonische Contract.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Boundary-Probe Contract
|
|
77
|
+
|
|
78
|
+
`xstate` ist kein visuelles Element. Die Component-Catalog-Haertung prueft es deshalb als Infrastruktur-Boundary:
|
|
79
|
+
|
|
80
|
+
- Boundary Schema: `xtend.state.boundary-probe.v1`
|
|
81
|
+
- Snapshot Schema: `xtend.state.snapshot.v1`
|
|
82
|
+
- Lifecycle Schema: `xtend.state.lifecycle-event.v1`
|
|
83
|
+
- Diagnostics Schema: `xtend.fabric.state-diagnostics.v1`
|
|
84
|
+
- RMT Compatibility Schema: `xtend.rmt.state-scheduler-compatibility.v1`
|
|
85
|
+
- Kernel Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
86
|
+
|
|
87
|
+
```js
|
|
88
|
+
import { xstate } from '/components/xstate.js';
|
|
89
|
+
|
|
90
|
+
const unsubscribeLifecycle = xstate.subscribeLifecycle((event, diagnostics) => {
|
|
91
|
+
console.log(event.type, diagnostics.operationCounts);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
xstate.set('rmt.bridge.ready', true);
|
|
95
|
+
|
|
96
|
+
const snapshot = xstate.snapshot();
|
|
97
|
+
const diagnostics = xstate.snapshotDiagnostics();
|
|
98
|
+
|
|
99
|
+
unsubscribeLifecycle();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## RMT State Scheduler Compatibility
|
|
103
|
+
|
|
104
|
+
RMT darf `xstate` nicht direkt importieren. Ein XTend Host kann aber bewusst einen Adapter erzeugen und an die State-/Scheduler-/Diagnostics-Bridge uebergeben:
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
const stateAdapter = xstate.createRmtStateAdapter({
|
|
108
|
+
schedulerId: 'docs.app.shell'
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
stateAdapter.set('rmt.scheduler.lastEndpoint', {
|
|
112
|
+
id: 'docs.header.search',
|
|
113
|
+
lane: 'user-blocking'
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
stateAdapter.snapshot();
|
|
117
|
+
stateAdapter.diagnostics();
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Damit bleibt XTendRMT framework-agnostisch. `xstate` ist eine optionale Host-Capability und keine Kernel-Abhaengigkeit.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## XTendRMT Bridge State
|
|
125
|
+
|
|
126
|
+
XTendRMT nutzt `xstate` optional als Host-State-Spiegel. Die State-/Scheduler-/Diagnostics Bridge schreibt nur dann in `xstate`, wenn ein Host ihr ein kompatibles Ziel uebergibt. Ohne `xstate` bleibt ein in-memory State Handle aktiv.
|
|
127
|
+
|
|
128
|
+
Aktuelle Bridge-Keys:
|
|
129
|
+
|
|
130
|
+
- `rmt.bridge.ready`
|
|
131
|
+
- `rmt.scheduler.lastEndpoint`
|
|
132
|
+
- `rmt.adapter.lastResult`
|
|
133
|
+
- `rmt.diagnostics.last`
|
|
134
|
+
- `rmt.route.<id>.lastResult`
|
|
135
|
+
- `rmt.component.<id>.lastResult`
|
|
136
|
+
|
|
137
|
+
Die Implementierung liegt in `createRmtStateSchedulerDiagnosticsBridge`; Details stehen in [XTendRMT Runtime Bridge](../xtendrmt-runtime-bridge.md).
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Hinweise
|
|
142
|
+
- Wird von fast allen XTend-Komponenten genutzt
|
|
143
|
+
- Kann auch für eigene Zwecke verwendet werden
|
|
144
|
+
- Im XTend-Core ist `xstate` das erste Bootstrap-Basismodul
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
*Letzte Aktualisierung: 7. Mai 2026*
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# xstatus - XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xalert](./xalert.md), [xtoast](./xtoast.md), [xprogress](./xprogress.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Uebersicht
|
|
6
|
+
|
|
7
|
+
`<x-status>` ist ein Fabric- und RMT-faehiges Status-Control aus `WP-E10-10`. Es stellt Scheduler-, Validierungs- und Systemrueckmeldungen als Live Region dar und bleibt bewusst klein genug, um in RMT-Shells als Feedback-Baustein genutzt zu werden.
|
|
8
|
+
|
|
9
|
+
## Verwendung
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<x-status id="route-status" type="warning" state="validating" message="Validation is running" dismissible busy>
|
|
13
|
+
<span slot="label">Scheduler status</span>
|
|
14
|
+
</x-status>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Attribute
|
|
18
|
+
|
|
19
|
+
| Attribut | Typ | Beschreibung |
|
|
20
|
+
|----------|-----|--------------|
|
|
21
|
+
| `type` | String | `info`, `success`, `warning` oder `error` |
|
|
22
|
+
| `state` | String | fachlicher Status-Key |
|
|
23
|
+
| `message` | String | sichtbare Meldung |
|
|
24
|
+
| `dismissible` | Boolean | zeigt Schliessen-Aktion |
|
|
25
|
+
| `busy` | Boolean | setzt `aria-busy` |
|
|
26
|
+
| `polite` | Boolean | erzwingt polite Live Region |
|
|
27
|
+
| `label` | String | Label ohne Slot |
|
|
28
|
+
|
|
29
|
+
## Events
|
|
30
|
+
|
|
31
|
+
| Event | Detail |
|
|
32
|
+
|-------|--------|
|
|
33
|
+
| `status-changed` | `{ type, status, message, busy, source: 'x-status' }` |
|
|
34
|
+
| `status-dismissed` | `{ type, status, message, busy, source: 'x-status' }` |
|
|
35
|
+
|
|
36
|
+
## API
|
|
37
|
+
|
|
38
|
+
- `element.state`
|
|
39
|
+
- `element.setStatus(nextState)`
|
|
40
|
+
- `element.announce(message?)`
|
|
41
|
+
- `element.dismiss()`
|
|
42
|
+
|
|
43
|
+
## State, RMT und Fabric
|
|
44
|
+
|
|
45
|
+
`<x-status>` schreibt nach `xstatus-state-<id>`. RMT kann ueber `xtend.rmt.component-contract.v1` Status-Updates auf `feedback.status.update` schedulen, ohne XTend intern zu importieren. Der Kernel Boundary bleibt `no-rmt-kernel-import-of-xtend-types`; die UI-Komponente ist der Adapter nach aussen.
|
|
46
|
+
|
|
47
|
+
## A11y und Performance
|
|
48
|
+
|
|
49
|
+
Das Control nutzt `role="status"` fuer polite Meldungen und `role=alert` fuer kritische Warn-/Fehlerpfade. `scheduler-feedback`, `status-update` und `validation-feedback` sind als Screenreader-Signale dokumentiert. Das Performance-Profil ist `xtend.performance.component-profile.v1` mit `budgetClass: 'feedback-small'`, `lane: 'feedback'` und `hydrationPolicy: 'visible'`.
|
|
50
|
+
|
|
51
|
+
## Feedback Status UX ab WP-E11-09
|
|
52
|
+
|
|
53
|
+
`<x-status>` stellt `xtendFeedbackStatusUxProfile` mit `xtend.component.feedback-status-ux-profile.v1` bereit. Das Profil verbindet `status-changed`, `status-dismissed`, `xstatus-state-<id>`, `feedback.status.update`, Fabric-Lane `feedback`, A11y-Lane `a11y` und RMT Shell Authoring.
|
|
54
|
+
|
|
55
|
+
Die Komponente ist der gemeinsame Inline-Status fuer Forms, Scheduler, Route-Feedback und Diagnostics. Sie vermeidet reine Farbkommunikation, bleibt forced-colors-safe und kann per `announce()` explizit als Live-Region aktualisiert werden.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# xsummary - XTend Komponente
|
|
2
|
+
|
|
3
|
+
## Uebersicht
|
|
4
|
+
|
|
5
|
+
`<x-summary>` ist eine ausklappbare Disclosure-Komponente fuer kompakte Detailbereiche. Sie nutzt native `<details>`/`<summary>` Semantik, spiegelt ihren Open-State in `xstate` und eignet sich fuer FAQ-Bloecke, technische Details, Inline-Hilfen oder Dashboard-Zusammenfassungen.
|
|
6
|
+
|
|
7
|
+
## Verwendung
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<x-summary id="billing-details" type="info" open>
|
|
11
|
+
<span slot="title">Abrechnungsdetails</span>
|
|
12
|
+
<p>Alle Rechnungspositionen werden nach Projekt und Zeitraum gruppiert.</p>
|
|
13
|
+
</x-summary>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Attribute
|
|
17
|
+
|
|
18
|
+
| Attribut | Typ | Beschreibung |
|
|
19
|
+
|----------|-----|--------------|
|
|
20
|
+
| `open` | boolean | oeffnet den Detailbereich |
|
|
21
|
+
| `type` | string | visuelle Variante: `info`, `success`, `warning`, `danger` |
|
|
22
|
+
|
|
23
|
+
## Slots
|
|
24
|
+
|
|
25
|
+
| Slot | Beschreibung |
|
|
26
|
+
|------|--------------|
|
|
27
|
+
| `title` | Inhalt des klickbaren Summary-Kopfs |
|
|
28
|
+
| default | ausklappbarer Inhalt |
|
|
29
|
+
|
|
30
|
+
## Events
|
|
31
|
+
|
|
32
|
+
| Event | Beschreibung |
|
|
33
|
+
|-------|--------------|
|
|
34
|
+
| `open` | wird beim Oeffnen ausgelöst |
|
|
35
|
+
| `close` | wird beim Schliessen ausgeloest |
|
|
36
|
+
|
|
37
|
+
Das Event-Detail enthaelt:
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
{
|
|
41
|
+
open: true
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## State-Contract
|
|
46
|
+
|
|
47
|
+
Die Instanz nutzt einen kompatiblen `xstate`-Key:
|
|
48
|
+
|
|
49
|
+
```js
|
|
50
|
+
xsummary-open-<id>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Wenn keine `id` gesetzt ist, erzeugt die Komponente eine stabile Runtime-ID fuer die aktuelle Instanz. Externe State-Aenderungen auf den Key koennen die Komponente oeffnen oder schliessen.
|
|
54
|
+
|
|
55
|
+
Die Synchronisierung ist reentrant-sicher: Attribute, nativer `<details>`-State und `xstate` werden ueber eine zentrale Open-State-Routine abgeglichen. Unveraenderte Werte werden nicht erneut in `xstate` publiziert, damit externe State-Updates keine rekursive `open()`/`close()`-Schleife ausloesen.
|
|
56
|
+
|
|
57
|
+
## A11y
|
|
58
|
+
|
|
59
|
+
- Das native `<summary>` bleibt die primaere Tastatur- und Screenreader-Oberflaeche.
|
|
60
|
+
- `Enter` und `Space` toggeln den Zustand.
|
|
61
|
+
- `aria-expanded` wird mit dem aktuellen Open-State synchronisiert.
|
|
62
|
+
- Der Summary-Kopf ist fokussierbar und besitzt einen sichtbaren Fokuszustand.
|
|
63
|
+
|
|
64
|
+
## Hinweise
|
|
65
|
+
|
|
66
|
+
- `x-summary` ist eine interaktive Display-Komponente und seit `ER-WP-33` component-suite-gated.
|
|
67
|
+
- Die Catalog Coverage Matrix fuehrt die Komponente nun als `contract-gated`.
|
|
68
|
+
- Weitere Contract-Haertung fuer Performance, Browser-Regression und Long-Tail-Abdeckung folgt in `ER-WP-35`; Public Types und Event Details sind seit `ER-WP-34` vorhanden.
|
|
69
|
+
|
|
70
|
+
## Layout Display Media UX Profil
|
|
71
|
+
|
|
72
|
+
`x-summary` stellt ab `WP-E11-12` das Profil `xtend.component.layout-display-media-ux-profile.v1` bereit. Die Komponente bleibt Disclosure-Display-Shell und nutzt den State-Key `xsummary-open-<id>`.
|
|
73
|
+
|
|
74
|
+
- Profil-Getter: `xtendLayoutDisplayMediaUxProfile`
|
|
75
|
+
- Schedule: `component.visible.mount`
|
|
76
|
+
- Events: `open`, `close`
|
|
77
|
+
- Snapshot: `snapshot()`
|
|
78
|
+
- CSS Parts: `container`, `summary`, `content`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# xsurfacemanager - XTend Komponente
|
|
2
|
+
|
|
3
|
+
`x-surface-manager` ist die App-Shell-Surface-Wurzel fuer Multi Window Oberflaechen. Die Komponente instanziiert den `xtend.surface.controller.v1`, registriert slotted `x-surface-window`, `x-side-panel` und kompatible Overlay-Elemente und spiegelt Layout-, Fokus- und Lifecycle-Aenderungen als `xtend.surface.snapshot.v1`.
|
|
4
|
+
|
|
5
|
+
## Attribute
|
|
6
|
+
|
|
7
|
+
- `manager-id`: stabile Manager-ID fuer Surface Records
|
|
8
|
+
- `state-key`: xstate Registry-Key, standardmaessig `xtend.surface.registry`
|
|
9
|
+
- `layout`: Layout-Profil fuer die Surface-Zone
|
|
10
|
+
- `restore-key`: spaeterer Persistence-Key fuer Layout-Restore
|
|
11
|
+
- `route-aware`: markiert Route-gebundene Surface-Verwaltung
|
|
12
|
+
- `modal-policy`: Policy fuer spaetere modale Surface-Stacks
|
|
13
|
+
|
|
14
|
+
## Slots
|
|
15
|
+
|
|
16
|
+
- `windows`: frei positionierbare Windows
|
|
17
|
+
- `panels`: `x-side-panel` Surfaces mit Docked/Pinned/Overlay/Collapsed Modes
|
|
18
|
+
- `overlays`: optionale Overlay-Bridge fuer `x-modal`, `x-dialog` und `x-drawer`
|
|
19
|
+
- `default`: einfache Light-DOM-Fallbacks
|
|
20
|
+
|
|
21
|
+
## API
|
|
22
|
+
|
|
23
|
+
`registerSurface(surface)`, `openSurface(id)`, `closeSurface(id)`, `focusSurface(id)`, `updateSurface(id, patch)`, `moveSurface(id, bounds)`, `resizeSurface(id, bounds)`, `minimizeSurface(id)`, `maximizeSurface(id)`, `restoreSurface(id)`, `pinSurface(id)`, `collapseSurface(id)`, `expandSurface(id)`, `dockSurface(id)` und `snapshot()` delegieren auf den Surface Controller.
|
|
24
|
+
|
|
25
|
+
Events: `surface-manager-ready`, `surface-registered`, `surface-opened`, `surface-closed`, `surface-focused`, `surface-updated`, `surface-layout-changed`, `surface-window-command`, `surface-panel-command` und `surface-overlay-command`.
|
|
26
|
+
|
|
27
|
+
RMT: `xtend.rmt.component-contract.v1`, `xtend.surface.manager.v1`, `xtend.surface.controller.v1`, `xtend.surface.overlay-stack-bridge.v1`, `surface.visible.render`, `surface.user-blocking.open`, `surface.user-blocking.close`, `surface.transition.layout`, `surface.diagnostics.snapshot`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# xsurfacewindow - XTend Komponente
|
|
2
|
+
|
|
3
|
+
`x-surface-window` ist die erste sichtbare WindowManager-Surface fuer XTend. Sie registriert sich bei einem umgebenden `x-surface-manager`, stellt Window-Chrome, Aktionen, Bounds und Content-Slot bereit und spiegelt Controller-Snapshots in Attribute und CSS-Variablen.
|
|
4
|
+
|
|
5
|
+
## Attribute
|
|
6
|
+
|
|
7
|
+
- `surface-id`: stabile Surface-ID
|
|
8
|
+
- `label`: Accessible Name und Window-Titel
|
|
9
|
+
- `open`, `active`, `minimized`, `maximized`
|
|
10
|
+
- `draggable`, `resizable`, `modal`
|
|
11
|
+
- `initial-x`, `initial-y`, `initial-width`, `initial-height`
|
|
12
|
+
|
|
13
|
+
## API
|
|
14
|
+
|
|
15
|
+
`toSurfaceRecord(managerId)` erzeugt ein `xtend.surface.record.v1` fuer den Manager. `applySurfaceSnapshot(record)` aktualisiert sichtbaren Status, Bounds und z-Order.
|
|
16
|
+
|
|
17
|
+
Commands: `openWindow()`, `closeWindow(reason)`, `focusWindow()`, `minimizeWindow()`, `maximizeWindow()` und `restoreWindow()`.
|
|
18
|
+
|
|
19
|
+
Das Element sendet `surface-window-command` mit `open`, `close`, `focus`, `move`, `resize`, `minimize`, `maximize`, `restore` oder `update`. Der Manager uebersetzt diese Commands in Controller-Operationen.
|
|
20
|
+
|
|
21
|
+
RMT: `xtend.rmt.component-contract.v1`, `xtend.surface.record.v1`, `surface.user-blocking.open`, `surface.user-blocking.close`, `surface.transition.layout`, `surface.diagnostics.snapshot`.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# xtabs – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xsection](./xsection.md), [xstate](./xstate.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`<x-tabs>` ist eine Komponente für Tab-Navigation und strukturierte Inhalte. Sie unterstützt dynamische Tabs, Theming und State-Integration.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Dynamische Tab-Navigation
|
|
13
|
+
- Slot für Tab-Inhalte
|
|
14
|
+
- State-Integration via xstate
|
|
15
|
+
- Theming via CSS Custom Properties
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Verwendung
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<x-tabs selected="0">
|
|
23
|
+
<x-tab name="Tab 1">Inhalt 1</x-tab>
|
|
24
|
+
<x-tab name="Tab 2">Inhalt 2</x-tab>
|
|
25
|
+
</x-tabs>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Attribute
|
|
31
|
+
| Attribut | Typ | Beschreibung |
|
|
32
|
+
|-------------|---------|-------------------------------------|
|
|
33
|
+
| – | – | – |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Events
|
|
38
|
+
| Event | Beschreibung |
|
|
39
|
+
|---------------|-------------------------------------|
|
|
40
|
+
| `tab-selected` | Tab-Wechsel mit `{ index }`, `bubbles: true`, `composed: true` |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## API
|
|
45
|
+
- **Tabs per Slot einfügen**
|
|
46
|
+
- **State-Integration:** Automatisch via xstate
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Beispiel: Dynamisch per JS
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
const tabs = document.createElement('x-tabs');
|
|
54
|
+
tabs.innerHTML = '<div slot="tab" label="A">A</div>';
|
|
55
|
+
document.body.appendChild(tabs);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Styling & Theming
|
|
61
|
+
|
|
62
|
+
```css
|
|
63
|
+
x-tabs {
|
|
64
|
+
--tab-active-bg: #007bff;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Accessibility
|
|
71
|
+
|
|
72
|
+
`x-tabs` rendert einen `role="tablist"` Header, erzeugt pro Button `role="tab"` und verbindet Buttons und Panels ueber `aria-controls` sowie `aria-labelledby`.
|
|
73
|
+
|
|
74
|
+
Die Keyboard-Navigation nutzt roving `tabindex`:
|
|
75
|
+
|
|
76
|
+
| Taste | Verhalten |
|
|
77
|
+
|-------|-----------|
|
|
78
|
+
| `ArrowRight` | naechster Tab |
|
|
79
|
+
| `ArrowLeft` | vorheriger Tab |
|
|
80
|
+
| `Home` | erster Tab |
|
|
81
|
+
| `End` | letzter Tab |
|
|
82
|
+
| `Enter` / `Space` | fokussierten Tab aktivieren |
|
|
83
|
+
|
|
84
|
+
Aktive Panels tragen `role="tabpanel"` und `aria-hidden="false"`; inaktive Panels werden mit `hidden` und `aria-hidden="true"` aus der sichtbaren Navigation genommen.
|
|
85
|
+
|
|
86
|
+
## Performance-Profil ab WP-E12-02
|
|
87
|
+
|
|
88
|
+
`x-tabs` besitzt ein explizites `xtendScaffoldPerformanceProfile` unter `xtend.performance.component-profile.v1`.
|
|
89
|
+
|
|
90
|
+
| Feld | Wert |
|
|
91
|
+
|------|------|
|
|
92
|
+
| Budget-Klasse | `critical` |
|
|
93
|
+
| Lane | `user-blocking` |
|
|
94
|
+
| Hydration Policy | `visible` |
|
|
95
|
+
| Tab-Switch Budget | `16 ms` |
|
|
96
|
+
| Keyboard Budget | `16 ms` |
|
|
97
|
+
| Render Update Budget | `28 ms` |
|
|
98
|
+
|
|
99
|
+
RMT-Shells koennen `x-tabs` ueber `ui.user-blocking.tabs`, `route.transition.tab`, `component.visible.hydrate` und `diagnostics.snapshot` schedulen. Der RMT-Kernel bleibt dabei framework-agnostisch; die XTend-spezifischen Daten liegen im Component-Adapter-Metadatenprofil.
|
|
100
|
+
|
|
101
|
+
Die Runtime stellt `getPerformanceBudget()` und `snapshotPerformance()` bereit. `snapshotPerformance()` liefert lokale Messpunkte fuer Hydration, Render, Tab-Switch und Keyboard-Interaktionen, damit Fabric oder ein spaeterer Reporter die Daten aufnehmen kann.
|
|
102
|
+
|
|
103
|
+
## Component-Level-Contract ab ER-WP-33
|
|
104
|
+
|
|
105
|
+
- `selected` bestimmt den aktiven Tab-Index.
|
|
106
|
+
- `text-color` synchronisiert die Textfarbe in den Tab-Header.
|
|
107
|
+
- `tab-selected` wird nach einem Tabwechsel mit `{ index }` emittiert.
|
|
108
|
+
- `xtabs-selected` ist der kanonische `xstate`-Key fuer externe Tabwechsel.
|
|
109
|
+
- Keyboard-Navigation umfasst `ArrowRight`, `ArrowLeft`, `Home`, `End`, `Enter` und `Space`.
|
|
110
|
+
- `data-rmt-schedule="ui.user-blocking.tabs"` und `data-xtend-lane="user-blocking"` bilden die Fixture-Linie fuer RMT/Fabric-Scheduling.
|
|
111
|
+
- `snapshotPerformance()` macht das WP-E12-02 Runtime-Budget testbar.
|
|
112
|
+
- Seit `WP-E12-03` sind Browser-Smoke und Theme-Matrix explizit auf `x-tabs` Keyboard-, ARIA- und Theme-Shell-Journeys erweitert.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
*Letzte Aktualisierung: 7. Mai 2026*
|
|
117
|
+
|
|
118
|
+
## ECH-WP-09 Token-Tabelle und Navigation States
|
|
119
|
+
|
|
120
|
+
`signatureDesign`: `x-tabs` erzeugt eine eigenstaendige Enterprise-Tabnavigation mit sichtbarer Selected-Schiene, wrap-sicheren Labels und frei austauschbarer Typografie. Active/Current/Selected, Hover, Focus und Disabled sind ueber gemeinsame Navigationstokens themebar.
|
|
121
|
+
|
|
122
|
+
| Token | Zweck |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| `--xtend-nav-surface` | Tablist-Surface |
|
|
125
|
+
| `--xtend-nav-text` | Tab-Text |
|
|
126
|
+
| `--xtend-nav-border-color` | Tab- und Tablist-Kanten |
|
|
127
|
+
| `--xtend-nav-radius` | Tab-Radius |
|
|
128
|
+
| `--xtend-nav-gap` | Abstand zwischen Tabs |
|
|
129
|
+
| `--xtend-nav-font-family` | Tab-Typografie |
|
|
130
|
+
| `--xtend-nav-font-size` | Tab-Textgroesse |
|
|
131
|
+
| `--xtend-nav-active-surface` | Selected-Flaeche |
|
|
132
|
+
| `--xtend-nav-active-text` | Selected-Text |
|
|
133
|
+
| `--xtend-nav-current-indicator` | nicht farb-only Selected-Indikator |
|
|
134
|
+
| `--xtend-nav-hover-surface` | Hover-Flaeche |
|
|
135
|
+
| `--xtend-nav-focus-ring` | Tastaturfokus |
|
|
136
|
+
| `--xtend-nav-disabled-opacity` | Disabled-Dimmung |
|
|
137
|
+
|
|
138
|
+
## ECH-WP-09 Keyboard-Verhalten
|
|
139
|
+
|
|
140
|
+
`ArrowRight`, `ArrowLeft`, `Home`, `End`, `Enter` und `Space` bleiben die verbindlichen Tasten. Disabled Tabs werden nicht fokussiert oder aktiviert. Active/Current/Selected wird ueber `aria-selected="true"` am Tab und `role="tabpanel"` am Panel gespiegelt; Route-Tabs koennen zusaetzlich `aria-current="page"` durch Host-Logik tragen.
|
|
141
|
+
|
|
142
|
+
## ECH-WP-09 Fremdtheme
|
|
143
|
+
|
|
144
|
+
```css
|
|
145
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-tabs {
|
|
146
|
+
--xtend-nav-surface: #f3f0e8;
|
|
147
|
+
--xtend-nav-text: #202520;
|
|
148
|
+
--xtend-nav-border-color: rgba(32, 37, 32, 0.24);
|
|
149
|
+
--xtend-nav-radius: 0.35rem;
|
|
150
|
+
--xtend-nav-gap: 0.4rem;
|
|
151
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
152
|
+
--xtend-nav-font-size: 0.95rem;
|
|
153
|
+
--xtend-nav-active-surface: #243c34;
|
|
154
|
+
--xtend-nav-active-text: #fff9ed;
|
|
155
|
+
--xtend-nav-current-indicator: #a65f2d;
|
|
156
|
+
--xtend-nav-hover-surface: rgba(166, 95, 45, 0.14);
|
|
157
|
+
--xtend-nav-focus-ring: 3px solid #a65f2d;
|
|
158
|
+
--xtend-nav-disabled-opacity: 0.42;
|
|
159
|
+
}
|
|
160
|
+
```
|