@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,308 @@
|
|
|
1
|
+
# xheader – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xfooter](./xfooter.md), [xtheme](./xtheme.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`<x-header>` ist eine vielseitige, barrierearme Header-Komponente für Branding, Navigation und flexible Layouts. Sie unterstützt Logo, Titel, Search-, Actions-/Utility- und Navigationsslots, Theming, State-Integration und mehrere Menu Presentation Modes für Enterprise App-Shells.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Optionales Logo (src-Attribut)
|
|
13
|
+
- Slot-System für Titel, Suche, Actions, Legacy-Utility und Navigation
|
|
14
|
+
- Sticky-Header
|
|
15
|
+
- State-Integration via xstate
|
|
16
|
+
- Theming via CSS Custom Properties (voll themefähig)
|
|
17
|
+
- **Responsives Verhalten:** Header-Inhalte laufen über ein Slot-Grid. Suche und Actions umbrechen auf kleinen Displays kontrolliert, Navigation nutzt den konfigurierten Menu Presentation Mode.
|
|
18
|
+
- **Slot Alignment:** Brand, Actions und Menü-Trigger bleiben bei schmalen Viewports in einer festen Kopfzeile; Search liegt darunter und verhindert dadurch verschobene Action-Buttons.
|
|
19
|
+
- **Menu Presentation Modes:** `drawer`, `side-panel`, `popover`, `fullscreen` und `inline-main` decken Shell-, App- und Portal-Navigation ab.
|
|
20
|
+
- **Full-Width-Drawer:** Der Default `drawer` rendert weiterhin als fixed Overlay über die verfügbare Seitenbreite und verlängert den Dokument-Scrollbereich nicht.
|
|
21
|
+
- **Overflow-sichere Navigation:** Direkte `x-link`-Einträge und komplexe `[data-menu-shell]`-Menüs bleiben im Menü-Surface innerhalb ihrer Container.
|
|
22
|
+
- **Burger-Menü:** Animierter Button, Farbe per Theme steuerbar
|
|
23
|
+
- **Barrierefreiheit:** Landmark-Rollen, ARIA, Keyboard-Navigation, Fokus-Management
|
|
24
|
+
- **Events:** Menü geöffnet/geschlossen, Logo geladen
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Verwendung
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<x-header src="logo.svg" logo-size="40">
|
|
32
|
+
<span slot="title">Meine App</span>
|
|
33
|
+
<x-form slot="search">...</x-form>
|
|
34
|
+
<button slot="actions">Theme</button>
|
|
35
|
+
<x-link slot="nav" href="/docs">Docs</x-link>
|
|
36
|
+
</x-header>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Hinweis:** `utility` bleibt als kompatibler Alias erhalten. Neue Apps sollten `search` für Suche und `actions` für Buttons, Toggle oder Status verwenden.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Menu Presentation Modes
|
|
44
|
+
|
|
45
|
+
`menu-mode` steuert, wie die Navigation sichtbar wird. Ohne neues Attribut bleibt `drawer` aktiv und damit das bisherige Full-Width-Drawer-Verhalten kompatibel.
|
|
46
|
+
|
|
47
|
+
| Mode | Verhalten | A11y-Verhalten |
|
|
48
|
+
|------|-----------|----------------|
|
|
49
|
+
| `drawer` | Fixed Overlay unter dem Header, standardmäßig full-width | Navigation, Escape, Outside Click, Focus Return |
|
|
50
|
+
| `side-panel` | Seitliches Panel über `menu-placement="start"` oder `end` | optional modal per `menu-modal`, dann Focus Trap und Backdrop |
|
|
51
|
+
| `popover` | Kompaktes Menü nahe Trigger | nicht modal, Escape und Outside Click |
|
|
52
|
+
| `fullscreen` | Vollflächige Navigation | modal, Backdrop, Focus Trap, Escape und Focus Return |
|
|
53
|
+
| `inline-main` | Menü im Header-Dokumentfluss | keine Overlay-Falle, sauberer Navigation-Landmark |
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<x-header
|
|
57
|
+
menu-mode="side-panel"
|
|
58
|
+
menu-placement="end"
|
|
59
|
+
menu-modal
|
|
60
|
+
menu-width="min(32rem, 92vw)"
|
|
61
|
+
menu-max-height="calc(100dvh - 2rem)"
|
|
62
|
+
menu-align="stretch">
|
|
63
|
+
<span slot="title">Enterprise Shell</span>
|
|
64
|
+
<x-link slot="nav" href="/workbench">Workbench</x-link>
|
|
65
|
+
</x-header>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`menu-open` kann deklarativ gesetzt werden. Programmatisch bleibt `toggleMenu(true | false, { source })` die stabile API. `snapshot()` liefert `menuMode`, `menuPlacement`, `menuModal`, `menuBreakpoint`, `menuWidth`, `menuMaxHeight` und `menuAlign`; `drawerMode: 'fixed-full-width-overlay'` bleibt als Legacy-Alias erhalten.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Responsive Slot-Logik
|
|
73
|
+
- Desktop: Brand, Search, Actions und Menübutton stehen in einer stabilen Grid-Zeile.
|
|
74
|
+
- Tablet: Search belegt eine eigene Grid-Zeile, damit Eingabefelder nicht mit Actions clippen.
|
|
75
|
+
- Mobile: Brand, Actions und Menübutton bleiben in der ersten Zeile. Search belegt die zweite Zeile. Navigation nutzt den konfigurierten Menu Presentation Mode.
|
|
76
|
+
- Der Drawer wird als `fixed` Overlay positioniert. Dadurch bleibt die App-Shell stabil, und Route-Wechsel von geöffneter Navigation auf kurze Seiten erzeugen keine zusätzliche Dokumenthöhe.
|
|
77
|
+
- Slotted Navigation nutzt `max-width: 100%`, `min-width: 0`, `box-sizing: border-box` und `overflow-wrap: anywhere`, damit lange Menüpunkte nicht aus App-Shell-Containern herausragen.
|
|
78
|
+
- `header-layout-changed` wird emittiert, wenn der Header in den kompakten Zustand wechselt.
|
|
79
|
+
|
|
80
|
+
## Slot Alignment
|
|
81
|
+
|
|
82
|
+
`x-header` nutzt standardmäßig das Alignment `fixed-responsive-slot-grid`.
|
|
83
|
+
|
|
84
|
+
| Viewport | Slot-Mapping |
|
|
85
|
+
|----------|--------------|
|
|
86
|
+
| Desktop | `brand search actions trigger` |
|
|
87
|
+
| Tablet | `brand actions trigger` + `search search search` |
|
|
88
|
+
| Mobile | `brand actions trigger` + `search search search` |
|
|
89
|
+
|
|
90
|
+
Corporate Designs können dieses Mapping über CSS Custom Properties überschreiben, ohne die Komponente zu forken:
|
|
91
|
+
|
|
92
|
+
```css
|
|
93
|
+
x-header {
|
|
94
|
+
--header-slot-template-areas: "brand search actions trigger";
|
|
95
|
+
--header-tablet-slot-template-areas: "brand actions trigger" "search search search";
|
|
96
|
+
--header-mobile-slot-template-areas: "brand actions trigger" "search search search";
|
|
97
|
+
--header-mobile-actions-justify: flex-end;
|
|
98
|
+
--header-mobile-actions-wrap: nowrap;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Slots
|
|
105
|
+
| Name | Beschreibung |
|
|
106
|
+
|-----------|----------------------------------------------|
|
|
107
|
+
| `title` | Bereich für den Titel/Branding |
|
|
108
|
+
| `search` | Suchformular oder Filter-Eingabe |
|
|
109
|
+
| `actions` | Buttons, Theme Toggle, Status-Aktionen |
|
|
110
|
+
| `utility` | Kompatibler Alias für Actions |
|
|
111
|
+
| `nav` | Navigationseinträge (Links, Menüs) |
|
|
112
|
+
| `logo` | Optional: eigenes Logo-Element |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Attribute
|
|
117
|
+
| Attribut | Typ | Beschreibung |
|
|
118
|
+
|---------------|---------|-------------------------------------|
|
|
119
|
+
| `src` | String | Logo-URL |
|
|
120
|
+
| `logo-size` | String | Größe des Logos (z.B. 40, 64px) |
|
|
121
|
+
| `sticky` | Boolean | Header bleibt oben fixiert |
|
|
122
|
+
| `shadow` | Boolean | Schatten aktivieren |
|
|
123
|
+
| `menu-mode` | `drawer`, `side-panel`, `popover`, `fullscreen`, `inline-main` | Menu Presentation Mode |
|
|
124
|
+
| `menu-placement` | `start`, `end`, `top`, `bottom` | bevorzugte Position |
|
|
125
|
+
| `menu-modal` | Boolean | Modalität mit Backdrop und Focus Trap |
|
|
126
|
+
| `menu-open` | Boolean | Menü deklarativ öffnen |
|
|
127
|
+
| `menu-breakpoint` | String | Preset (`sm`, `md`, `lg`, `xl`) oder CSS Length |
|
|
128
|
+
| `menu-width` | String | Breite für Panel/Popover |
|
|
129
|
+
| `menu-max-height` | String | Höhenbegrenzung des Menü-Surfaces |
|
|
130
|
+
| `menu-align` | `start`, `center`, `end`, `stretch` | Ausrichtung im Menü-Surface |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Events
|
|
135
|
+
| Event | Beschreibung |
|
|
136
|
+
|---------------|-------------------------------------|
|
|
137
|
+
| `header-layout-changed` | Wird bei responsive Layoutwechseln ausgelöst |
|
|
138
|
+
| `menu-before-open` | Cancelable Event vor dem Öffnen |
|
|
139
|
+
| `menu-before-close` | Cancelable Event vor dem Schließen |
|
|
140
|
+
| `menu-opened` | Wird mit Snapshot ausgelöst, wenn Menü öffnet |
|
|
141
|
+
| `menu-closed` | Wird mit Snapshot ausgelöst, wenn Menü schließt |
|
|
142
|
+
| `menu-mode-changed` | Wird bei Wechsel von `menu-mode` ausgelöst |
|
|
143
|
+
| `menu-placement-changed` | Wird bei Wechsel von `menu-placement` ausgelöst |
|
|
144
|
+
| `logo-loaded` | Wird ausgelöst, wenn Logo geladen |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## API
|
|
149
|
+
- **Logo dynamisch setzen:** `element.setAttribute('src', 'logo.svg')`
|
|
150
|
+
- **Menü direkt steuern:** `header.toggleMenu(false, { source: 'router' })`
|
|
151
|
+
- **State-Integration:** Automatisch via xstate (`xheader-state-<id>`, z.B. Menü öffnen/schließen)
|
|
152
|
+
- **Menü programmatisch öffnen:**
|
|
153
|
+
```js
|
|
154
|
+
xstate.set('xheader-state-<id>', { menuOpen: true });
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Beispiel: Dynamisch per JS
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
const header = document.createElement('x-header');
|
|
163
|
+
header.setAttribute('src', 'logo.svg');
|
|
164
|
+
document.body.appendChild(header);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Styling & Theming
|
|
170
|
+
|
|
171
|
+
```css
|
|
172
|
+
x-header {
|
|
173
|
+
--xtend-header-surface: #fff;
|
|
174
|
+
--xtend-header-text: #222;
|
|
175
|
+
--xtend-header-border-color: #d9dde5;
|
|
176
|
+
--xtend-header-menu-surface: #fff;
|
|
177
|
+
--xtend-header-menu-width: min(30rem, 92vw);
|
|
178
|
+
--xtend-header-menu-max-height: min(72dvh, 820px);
|
|
179
|
+
--xtend-header-menu-backdrop: rgba(15, 23, 42, 0.45);
|
|
180
|
+
--header-bg: var(--xtend-header-surface);
|
|
181
|
+
--header-fg: var(--xtend-header-text);
|
|
182
|
+
--header-title-color: #222; /* Titel im Light Mode */
|
|
183
|
+
--burger-color: #222; /* Burger-Button-Striche im Light Mode */
|
|
184
|
+
--header-menu-bg: var(--xtend-header-menu-surface);
|
|
185
|
+
--header-mobile-slot-template-areas: "brand actions trigger" "search search search";
|
|
186
|
+
--header-drawer-inline-offset: 1rem;
|
|
187
|
+
--header-drawer-content-max: none;
|
|
188
|
+
}
|
|
189
|
+
x-header[theme="dark"] {
|
|
190
|
+
--header-bg: #222;
|
|
191
|
+
--header-fg: #fff;
|
|
192
|
+
--header-title-color: #fff; /* Titel im Dark Mode */
|
|
193
|
+
--burger-color: #fff; /* Burger-Button-Striche im Dark Mode */
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Accessibility
|
|
200
|
+
- Semantisches HTML, Landmark-Rollen (`role="banner"`)
|
|
201
|
+
- ARIA-Attribute für Menü, Burger-Button, Navigation
|
|
202
|
+
- Keyboard-Navigation (Tab, Escape)
|
|
203
|
+
- Fokus-Management im Overlay; `fullscreen` und `menu-modal` nutzen Focus Trap, Backdrop und Focus Return
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Changelog
|
|
208
|
+
- **18.07.2025:** Modernisierung, Theme-Variablen für Titel und Burger, Events, Accessibility, API, Doku aktualisiert
|
|
209
|
+
- **bis 07/2025:** Diverse Bugfixes, Responsive-Verbesserungen
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
*Letzte Aktualisierung: 18. Juli 2025*
|
|
214
|
+
|
|
215
|
+
## Layout Display Media UX Profil
|
|
216
|
+
|
|
217
|
+
`x-header` stellt ab `WP-E11-12` das Profil `xtend.component.layout-display-media-ux-profile.v1` bereit. Die Komponente ist als Docs-/App-Shell-Header RMT-schedulbar und nutzt den State-Key `xheader-state-<id>`.
|
|
218
|
+
|
|
219
|
+
- Profil-Getter: `xtendLayoutDisplayMediaUxProfile`
|
|
220
|
+
- Schedule: `component.visible.mount`
|
|
221
|
+
- Events: `header-ready`, `menu-before-open`, `menu-before-close`, `menu-opened`, `menu-closed`, `menu-mode-changed`, `menu-placement-changed`
|
|
222
|
+
- Snapshot: `snapshot()`
|
|
223
|
+
- CSS Parts: `root`, `brand`, `title`, `logo`, `search`, `actions`, `utility`, `trigger`, `trigger-icon`, `menu`, `menu-surface`, `menu-content`, `nav`, `backdrop`
|
|
224
|
+
- Legacy CSS Parts: `drawer` und `drawer-surface` bleiben als Alias für `menu` und `menu-surface` erhalten.
|
|
225
|
+
|
|
226
|
+
## ECH-WP-07 Token-Tabelle und signatureDesign
|
|
227
|
+
|
|
228
|
+
`signatureDesign`: Praezise Enterprise App-Shell mit ruhiger Flaechenhierarchie, dichter Slot-Rhythmik, hochwertigem Menue-Surface und brand-neutraler Premium-Wirkung. Das Default-Design soll eigenstaendig wirken, ohne eine One-Brand-Optik zu erzwingen.
|
|
229
|
+
|
|
230
|
+
| Token | Zweck |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `--xtend-layout-surface` | Shell- und Menueflaeche |
|
|
233
|
+
| `--xtend-layout-text` | Header-, Brand- und Navigationsfarbe |
|
|
234
|
+
| `--xtend-layout-border-color` | Header-, Trigger- und Menuekanten |
|
|
235
|
+
| `--xtend-layout-radius` | Header- und Menue-Radius |
|
|
236
|
+
| `--xtend-layout-elevation` | Header- und Menue-Schatten |
|
|
237
|
+
| `--xtend-layout-spacing` | Header-Padding |
|
|
238
|
+
| `--xtend-layout-gap` | Slot- und Menueabstand |
|
|
239
|
+
| `--xtend-layout-font-family` | Shell-Typografie |
|
|
240
|
+
| `--xtend-layout-font-size` | Brand-/Navigationstypografie |
|
|
241
|
+
| `--xtend-layout-media-radius` | Logo- und Medienradius |
|
|
242
|
+
| `--xtend-layout-focus-ring` | Tastaturfokus |
|
|
243
|
+
| `--xtend-layout-grid-min` | Slot-Grid-Untergrenze |
|
|
244
|
+
| `--xtend-layout-content-max` | Menuebreite und Content-Grenze |
|
|
245
|
+
|
|
246
|
+
## ECH-WP-07 Fremdtheme
|
|
247
|
+
|
|
248
|
+
```css
|
|
249
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-header {
|
|
250
|
+
--xtend-layout-surface: #f6f2ea;
|
|
251
|
+
--xtend-layout-text: #17231f;
|
|
252
|
+
--xtend-layout-border-color: rgba(23, 35, 31, 0.22);
|
|
253
|
+
--xtend-layout-radius: 0.35rem;
|
|
254
|
+
--xtend-layout-elevation: 0 14px 34px rgba(23, 35, 31, 0.14);
|
|
255
|
+
--xtend-layout-spacing: 0.9rem;
|
|
256
|
+
--xtend-layout-gap: 0.7rem;
|
|
257
|
+
--xtend-layout-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
258
|
+
--xtend-layout-font-size: 1rem;
|
|
259
|
+
--xtend-layout-media-radius: 0.2rem;
|
|
260
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
261
|
+
--xtend-layout-grid-min: minmax(0, 1fr);
|
|
262
|
+
--xtend-layout-content-max: 24rem;
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## ECH-WP-09 Token-Tabelle und Navigation States
|
|
267
|
+
|
|
268
|
+
`signatureDesign`: `x-header` verbindet eine hochwertige Enterprise-App-Shell mit sichtbar stabiler Navigation. Active/Current/Selected, Hover, Focus und Disabled gelten fuer slotted `nav`-Eintraege in `drawer`, `side-panel`, `popover`, `fullscreen` und `inline-main`.
|
|
269
|
+
|
|
270
|
+
| Token | Zweck |
|
|
271
|
+
| --- | --- |
|
|
272
|
+
| `--xtend-nav-surface` | Menue- und Nav-Surface |
|
|
273
|
+
| `--xtend-nav-text` | Nav-Text |
|
|
274
|
+
| `--xtend-nav-border-color` | Menue- und Nav-Kante |
|
|
275
|
+
| `--xtend-nav-radius` | Nav-Radius |
|
|
276
|
+
| `--xtend-nav-gap` | Abstand im Menue |
|
|
277
|
+
| `--xtend-nav-font-family` | Navigationstypografie |
|
|
278
|
+
| `--xtend-nav-font-size` | Navigationstextgroesse |
|
|
279
|
+
| `--xtend-nav-active-surface` | Active/Current/Selected Flaeche |
|
|
280
|
+
| `--xtend-nav-active-text` | Active/Current/Selected Text |
|
|
281
|
+
| `--xtend-nav-current-indicator` | nicht farb-only Current-Indikator |
|
|
282
|
+
| `--xtend-nav-hover-surface` | Hover-Flaeche |
|
|
283
|
+
| `--xtend-nav-focus-ring` | Tastaturfokus |
|
|
284
|
+
| `--xtend-nav-disabled-opacity` | Disabled-Dimmung |
|
|
285
|
+
|
|
286
|
+
## ECH-WP-09 Keyboard-Verhalten
|
|
287
|
+
|
|
288
|
+
Der Menue-Trigger ist ein Icon Control mit `part="trigger-icon control icon"`. Overlay-Modi unterstuetzen Escape, Outside Click, Focus Return und bei `menu-modal` Focus Trap. Slotted Navigation kann `aria-current="page"`, `aria-selected="true"`, `active`, `disabled` oder `aria-disabled="true"` tragen. Verschachtelte Navigation muss Disclosure Icons als Icon Controls, z.B. `part="disclosure-icon control icon"`, auszeichnen.
|
|
289
|
+
|
|
290
|
+
## ECH-WP-09 Fremdtheme
|
|
291
|
+
|
|
292
|
+
```css
|
|
293
|
+
[data-xtend-nav-theme="enterprise-foreign"] x-header {
|
|
294
|
+
--xtend-nav-surface: #f7f4ee;
|
|
295
|
+
--xtend-nav-text: #17231f;
|
|
296
|
+
--xtend-nav-border-color: rgba(23, 35, 31, 0.22);
|
|
297
|
+
--xtend-nav-radius: 0.35rem;
|
|
298
|
+
--xtend-nav-gap: 0.45rem;
|
|
299
|
+
--xtend-nav-font-family: "Aptos", "Segoe UI", sans-serif;
|
|
300
|
+
--xtend-nav-font-size: 0.98rem;
|
|
301
|
+
--xtend-nav-active-surface: #173f35;
|
|
302
|
+
--xtend-nav-active-text: #fffaf0;
|
|
303
|
+
--xtend-nav-current-indicator: #b56b35;
|
|
304
|
+
--xtend-nav-hover-surface: rgba(181, 107, 53, 0.14);
|
|
305
|
+
--xtend-nav-focus-ring: 3px solid #b56b35;
|
|
306
|
+
--xtend-nav-disabled-opacity: 0.44;
|
|
307
|
+
}
|
|
308
|
+
```
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# xhero – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xsection](./xsection.md), [xbutton](./xbutton.md)
|
|
4
|
+
|
|
5
|
+
## Übersicht
|
|
6
|
+
|
|
7
|
+
`<x-hero>` ist eine flexible Hero-Komponente für aufmerksamkeitsstarke Headerbereiche, Landingpages und Einstiege. Sie unterstützt Slots für Titel, Untertitel, Aktionen und Medien.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
- Flexibles Layout für Hero-Bereiche
|
|
13
|
+
- Slots für Titel, Text, Aktionen, Medien
|
|
14
|
+
- Theming via CSS Custom Properties
|
|
15
|
+
- Theme-Varianten über `background-light`, `background-dark`, `font-color-light`, `font-color-dark`, `overlay-light` und `overlay-dark`
|
|
16
|
+
- Responsive Design
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Verwendung
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<x-hero>
|
|
24
|
+
<h1 slot="title">Willkommen!</h1>
|
|
25
|
+
<p slot="subtitle">XTend macht Webentwicklung einfach.</p>
|
|
26
|
+
<x-button slot="action">Loslegen</x-button>
|
|
27
|
+
</x-hero>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Attribute
|
|
33
|
+
| Attribut | Typ | Beschreibung |
|
|
34
|
+
|----------|-----|--------------|
|
|
35
|
+
| `background` | String | Fester Hintergrund oder CSS-Variable |
|
|
36
|
+
| `background-light` | String | Hintergrund für helle Themes |
|
|
37
|
+
| `background-dark` | String | Hintergrund für dunkle Themes |
|
|
38
|
+
| `background-image` | String | Bildhintergrund |
|
|
39
|
+
| `overlay` | Boolean | Aktiviert Overlay-Fläche |
|
|
40
|
+
| `overlay-light` | String | Overlay-Farbe für helle Themes |
|
|
41
|
+
| `overlay-dark` | String | Overlay-Farbe für dunkle Themes |
|
|
42
|
+
| `font-color` | String | Feste Textfarbe |
|
|
43
|
+
| `font-color-light` | String | Textfarbe für helle Themes |
|
|
44
|
+
| `font-color-dark` | String | Textfarbe für dunkle Themes |
|
|
45
|
+
| `animate` | Boolean | Aktiviert Einstiegstransition mit Reduced-Motion-Fallback |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Events
|
|
50
|
+
| Event | Beschreibung |
|
|
51
|
+
|---------------|-------------------------------------|
|
|
52
|
+
| – | – |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## API
|
|
57
|
+
- **Inhalte per Slot einfügen**
|
|
58
|
+
- **State-Integration:** Optional via xstate
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Beispiel: Dynamisch per JS
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
const hero = document.createElement('x-hero');
|
|
66
|
+
hero.innerHTML = '<h1 slot="title">Hallo XTend!</h1>';
|
|
67
|
+
document.body.appendChild(hero);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Styling & Theming
|
|
73
|
+
|
|
74
|
+
```css
|
|
75
|
+
x-hero {
|
|
76
|
+
--hero-bg: #f5f5f5;
|
|
77
|
+
--hero-color: #222;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Viewport-Sicherheit
|
|
82
|
+
|
|
83
|
+
`x-hero` begrenzt Host, Root und Content auf `max-width: 100%` und nutzt auf schmalen Viewports keine innere `100vw`-Breite. Dadurch bleibt die Komponente auch in gepaddeten App-Shells oder Docs-Layouts innerhalb des sichtbaren Viewports.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Accessibility
|
|
88
|
+
- Semantisches HTML, ARIA
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
*Letzte Aktualisierung: 16. Juli 2025*
|
|
93
|
+
|
|
94
|
+
## Layout Display Media UX Profil
|
|
95
|
+
|
|
96
|
+
`x-hero` stellt ab `WP-E11-12` das Profil `xtend.component.layout-display-media-ux-profile.v1` bereit. Die Komponente bleibt Hero-/Display-Shell und kann in RMT mit `component.shell.render` zuerst gerendert werden. Der State-Key lautet `xhero-state-<id>`.
|
|
97
|
+
|
|
98
|
+
- Profil-Getter: `xtendLayoutDisplayMediaUxProfile`
|
|
99
|
+
- Schedule: `component.shell.render`
|
|
100
|
+
- Events: `hero-rendered`, `hero-animated`
|
|
101
|
+
- Snapshot: `snapshot()`
|
|
102
|
+
- CSS Parts: `root`, `overlay`, `content`, `scroll-button`
|
|
103
|
+
|
|
104
|
+
## ECH-WP-07 Token-Tabelle und signatureDesign
|
|
105
|
+
|
|
106
|
+
`signatureDesign`: Immersive Enterprise-Hero-Komposition mit editorialer Tiefe, medienfaehigem Surface und tokenisiertem Content-Block. Die Standardwirkung soll elegant und eigenstaendig sein, aber Bild-, App- und Corporate-Inszenierungen zulassen.
|
|
107
|
+
|
|
108
|
+
| Token | Zweck |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| `--xtend-layout-surface` | Hero- und Content-Flaeche |
|
|
111
|
+
| `--xtend-layout-text` | Hero-Textfarbe |
|
|
112
|
+
| `--xtend-layout-border-color` | Scroll-Control-Kante |
|
|
113
|
+
| `--xtend-layout-radius` | Hero-, Content- und Titelradius |
|
|
114
|
+
| `--xtend-layout-elevation` | Hero-, Content- und Titel-Schatten |
|
|
115
|
+
| `--xtend-layout-spacing` | Hero- und Content-Padding |
|
|
116
|
+
| `--xtend-layout-gap` | Kompositionsabstand fuer Theme-Autoren |
|
|
117
|
+
| `--xtend-layout-font-family` | Hero-Typografie |
|
|
118
|
+
| `--xtend-layout-font-size` | Control- und Content-Skalierung |
|
|
119
|
+
| `--xtend-layout-media-radius` | Bild-/Hero-Radius |
|
|
120
|
+
| `--xtend-layout-focus-ring` | Scroll-Control-Fokus |
|
|
121
|
+
| `--xtend-layout-grid-min` | Responsive Kompositionsbasis |
|
|
122
|
+
| `--xtend-layout-content-max` | Content-Breite |
|
|
123
|
+
|
|
124
|
+
## ECH-WP-07 Fremdtheme
|
|
125
|
+
|
|
126
|
+
```css
|
|
127
|
+
[data-xtend-layout-theme="enterprise-foreign"] x-hero {
|
|
128
|
+
--xtend-layout-surface: rgba(248, 244, 239, 0.88);
|
|
129
|
+
--xtend-layout-text: #15231d;
|
|
130
|
+
--xtend-layout-border-color: rgba(21, 35, 29, 0.22);
|
|
131
|
+
--xtend-layout-radius: 0.45rem;
|
|
132
|
+
--xtend-layout-elevation: 0 20px 60px rgba(21, 35, 29, 0.16);
|
|
133
|
+
--xtend-layout-spacing: 4rem 2rem;
|
|
134
|
+
--xtend-layout-gap: 1rem;
|
|
135
|
+
--xtend-layout-font-family: "Aptos Display", "Segoe UI", sans-serif;
|
|
136
|
+
--xtend-layout-font-size: 1.05rem;
|
|
137
|
+
--xtend-layout-media-radius: 0.65rem;
|
|
138
|
+
--xtend-layout-focus-ring: 3px solid #8f4f2a;
|
|
139
|
+
--xtend-layout-grid-min: minmax(0, 1fr);
|
|
140
|
+
--xtend-layout-content-max: 42rem;
|
|
141
|
+
}
|
|
142
|
+
```
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# xicon – XTend Komponente
|
|
2
|
+
|
|
3
|
+
> **Siehe auch:** [xbutton](./xbutton.md), [xtheme](./xtheme.md), [xrouter](./xrouter.md)
|
|
4
|
+
|
|
5
|
+
## Uebersicht
|
|
6
|
+
|
|
7
|
+
`<x-icon>` ist der universelle Ikonographie-Adapter fuer XTend Apps. Die Komponente rendert lokale Inline-SVG-Icons, registrierte Icon-Packs oder kontrollierte URL-Quellen und bleibt dabei framework-agnostisch, RMT-kompatibel und CDN-frei.
|
|
8
|
+
|
|
9
|
+
Das mitgelieferte `core` Pack deckt die wichtigsten XTend-UI-Symbole ab. Der lokale `lucide` Adapter dient als groesseres Superset, wird aus lokalen ESM-Artefakten geladen und vermeidet externe CDN-Abhaengigkeiten, FCP-Bremsen und Datenschutzprobleme.
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- lokales `core` Icon-Pack mit Basis-Icons fuer Shell, Docs, Status und Navigation
|
|
14
|
+
- lokaler `lucide` IconPack Adapter als Superset ohne Remote Runtime Import
|
|
15
|
+
- globale Registry `window.XTend.icons` fuer Custom Icon Packs und Corporate-Design-Sets
|
|
16
|
+
- direkte Quellen ueber `src` fuer SVG-Dateien aus Repo, App-Bundle oder CDN-Policies des Hosts
|
|
17
|
+
- rohe SVG-Pack-Eintraege werden vor dem Rendern auf erlaubte Knoten und Attribute reduziert
|
|
18
|
+
- A11y-Modus fuer dekorative und semantische Icons
|
|
19
|
+
- State-Integration ueber `xicon-state-<id>`
|
|
20
|
+
- RMT Shell Authoring ueber `xtend.rmt.component-contract.v1`
|
|
21
|
+
- Performance-Profil `xtend.performance.component-profile.v1` mit `display-micro` Budget
|
|
22
|
+
|
|
23
|
+
## Verwendung
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<x-icon name="search" label="Suche"></x-icon>
|
|
27
|
+
<x-icon name="gauge" pack="lucide" size="1.25rem" label="Performance"></x-icon>
|
|
28
|
+
<x-icon src="/assets/icons/company.svg" label="Corporate Icon"></x-icon>
|
|
29
|
+
<x-icon name="chevron-right" decorative></x-icon>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Attribute
|
|
33
|
+
|
|
34
|
+
| Attribut | Typ | Beschreibung |
|
|
35
|
+
|----------|-----|--------------|
|
|
36
|
+
| `name` | String | Icon-Name oder Alias aus der Registry |
|
|
37
|
+
| `pack` | String | optionales Icon-Pack, z.B. `core` oder `lucide` |
|
|
38
|
+
| `src` | String | kontrollierte URL-Quelle fuer ein Icon aus Repo, App-Bundle oder Host-Policy |
|
|
39
|
+
| `label` | String | zugänglicher Name fuer Screenreader |
|
|
40
|
+
| `size` | String | CSS-Groesse, z.B. `1em`, `20px`, `1.25rem` |
|
|
41
|
+
| `stroke-width` | String | Strichstaerke fuer Inline-SVG-Pfade |
|
|
42
|
+
| `color` | String | CSS-Farbwert; Standard ist `currentColor` |
|
|
43
|
+
| `decorative` | Boolean | setzt `aria-hidden` und entfernt semantische Bildrolle |
|
|
44
|
+
|
|
45
|
+
## Events
|
|
46
|
+
|
|
47
|
+
| Event | Beschreibung |
|
|
48
|
+
|-------|--------------|
|
|
49
|
+
| `icon-ready` | Icon wurde aus Pack oder `src` aufgeloest |
|
|
50
|
+
| `icon-missing` | Registry konnte `name`/`pack` nicht aufloesen |
|
|
51
|
+
| `icon-pack-registered` | ein Pack wurde in der globalen Registry registriert |
|
|
52
|
+
|
|
53
|
+
## API
|
|
54
|
+
|
|
55
|
+
| Methode | Zweck |
|
|
56
|
+
|---------|-------|
|
|
57
|
+
| `setIcon(name, options?)` | setzt Icon, Pack, Label oder `src` programmatisch |
|
|
58
|
+
| `registerPack(pack, options?)` | registriert ein Pack ueber die Komponente |
|
|
59
|
+
| `snapshot()` | liefert `xtend.component.x-icon.state.v1` inklusive Registry-Snapshot |
|
|
60
|
+
| `window.XTend.icons.register(pack, options?)` | globale Pack-Registrierung |
|
|
61
|
+
| `window.XTend.icons.resolve(name, options?)` | globale Aufloesung ohne Rendering |
|
|
62
|
+
| `window.XTend.icons.snapshot()` | Registry-Snapshot fuer Diagnostics |
|
|
63
|
+
|
|
64
|
+
## Custom Icon Packs
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
window.XTend.icons.register({
|
|
68
|
+
id: 'brand',
|
|
69
|
+
label: 'Corporate Design Icons',
|
|
70
|
+
cdnAllowed: false,
|
|
71
|
+
icons: {
|
|
72
|
+
product: {
|
|
73
|
+
aliases: ['logo-mark'],
|
|
74
|
+
nodes: [
|
|
75
|
+
{ tag: 'path', attrs: { d: 'M12 3 21 8v8l-9 5-9-5V8Z' } }
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Packs koennen eigene SVG-Node-Descriptoren, einzelne Path-Strings, inline SVG-Records oder URL-Records enthalten. Remote-Quellen sind nicht Default von XTend; sie muessen bewusst vom Host als `src` oder Pack-URL bereitgestellt werden.
|
|
83
|
+
|
|
84
|
+
## ECH-WP-04 Control-Regel
|
|
85
|
+
|
|
86
|
+
Keine Textglyphen als Controls: Close-, Menu-, Disclosure-, Status- und Action-Controls duerfen nicht ueber sichtbare Zeichen wie `x`, `×`, Pfeile oder Emoji gestaltet werden. Verwende `x-icon`, Inline-SVG oder eine tokenisierte CSS-Grafik.
|
|
87
|
+
|
|
88
|
+
Pflicht fuer Icon-Controls:
|
|
89
|
+
|
|
90
|
+
- Der Button hat einen zugaenglichen Namen, z.B. `aria-label`.
|
|
91
|
+
- Der Button exponiert einen stabilen Control-Part, z.B. `part="close control"`.
|
|
92
|
+
- Die Grafik exponiert einen Icon-Part, z.B. `part="control icon"` oder `part="close-icon control icon"`.
|
|
93
|
+
- Das Core-Pack enthaelt fuer Framework-Controls mindestens `close`, `menu`, `chevron-left`, `chevron-right`, `chevron-up`, `chevron-down`, `success`, `warning`, `error` und `info`.
|
|
94
|
+
- Eigene Icon Packs muessen lokale SVG-Node-Descriptoren oder sichere `src`-Quellen verwenden; CDN-Abhaengigkeiten sind keine XTend-Default-Basis.
|
|
95
|
+
|
|
96
|
+
## RMT und Fabric
|
|
97
|
+
|
|
98
|
+
`x-icon` deklariert `xtendRmtMetadata` mit `adapter: 'xtend.component'`, `templateMode: 'dom_descriptor'`, `shellAuthoring.attributes` und der Boundary `no-rmt-kernel-import-of-xtend-types`. RMT kann Icons dadurch in App Shells, Navigationen, Buttons oder Docs-Templates authoren, ohne den XTend-Kernel oder einen Icon-Vendor zu importieren.
|
|
99
|
+
|
|
100
|
+
Fabric konsumiert:
|
|
101
|
+
|
|
102
|
+
- `icon-ready`
|
|
103
|
+
- `icon-missing`
|
|
104
|
+
- `icon-pack-registered`
|
|
105
|
+
- State-Key `xicon-state-<id>`
|
|
106
|
+
- `snapshot()`
|
|
107
|
+
|
|
108
|
+
## Styling & Theming
|
|
109
|
+
|
|
110
|
+
```css
|
|
111
|
+
x-icon {
|
|
112
|
+
--xtend-icon-size: 1rem;
|
|
113
|
+
--xtend-icon-color: currentColor;
|
|
114
|
+
--xtend-icon-stroke-width: 2;
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Das Icon folgt `currentColor` und integriert sich dadurch in `x-theme`, `x-header`, `x-button`, `x-menu` und eigene Corporate-Design-Tokens. Im Forced-Colors-Modus bleibt die Komponente ueber Systemfarben lesbar.
|
|
119
|
+
|
|
120
|
+
## Accessibility
|
|
121
|
+
|
|
122
|
+
- mit `label` rendert der Host `role="img"` und `aria-label`
|
|
123
|
+
- ohne Label oder mit `decorative` rendert die Komponente `aria-hidden`
|
|
124
|
+
- URL-Icons erhalten ein leeres `alt`, wenn sie dekorativ sind
|
|
125
|
+
- `icon-missing` ist als diagnostisches Event verfuegbar, ohne Screenreader mit Fehlersignalen zu belasten
|