@vectoriox/iox-ui 5.12.1 → 5.13.0

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.
@@ -621,7 +621,7 @@ class CardComponent {
621
621
  <h2>{{ title }}</h2>
622
622
  <p>{{ description }}</p>
623
623
  </div>
624
- `, isInline: true, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:var(--iox-card-media-gap, .75rem)}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 var(--iox-card-title-gap, .5rem) 0;font-size:var(--iox-card-title-size, 1.2rem)}\n", "p{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
624
+ `, isInline: true, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:.75rem}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 .5rem;font-size:1.2rem}\n", "p{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
625
625
  }
626
626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CardComponent, decorators: [{
627
627
  type: Component,
@@ -633,7 +633,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
633
633
  <h2>{{ title }}</h2>
634
634
  <p>{{ description }}</p>
635
635
  </div>
636
- `, standalone: false, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:var(--iox-card-media-gap, .75rem)}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 var(--iox-card-title-gap, .5rem) 0;font-size:var(--iox-card-title-size, 1.2rem)}\n", "p{margin:0}\n"] }]
636
+ `, standalone: false, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:.75rem}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 .5rem;font-size:1.2rem}\n", "p{margin:0}\n"] }]
637
637
  }], propDecorators: { title: [{
638
638
  type: Input
639
639
  }], image: [{
@@ -748,7 +748,7 @@ class BuilderLinkComponent {
748
748
  }
749
749
  }
750
750
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderLinkComponent, deps: [{ token: IS_PREVIEW, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
751
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderLinkComponent, isStandalone: false, selector: "a[iox-link]", inputs: { nodeId: "nodeId", label: "label", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target", style: "style" }, host: { listeners: { "click": "onLinkClick($event)" }, properties: { "attr.href": "isPreview ? resolvedHref : null", "attr.target": "isPreview ? target : null", "style.pointer-events": "isPreview ? null : 'none'", "class": "'builder-link iox-node-' + nodeId" } }, ngImport: i0, template: `{{ label }}`, isInline: true, styles: [":host{display:inline;cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderLinkComponent, isStandalone: false, selector: "a[iox-link]", inputs: { nodeId: "nodeId", label: "label", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target", style: "style" }, host: { listeners: { "click": "onLinkClick($event)" }, properties: { "attr.href": "isPreview ? resolvedHref : null", "attr.target": "isPreview ? target : null", "style.pointer-events": "isPreview ? null : 'none'", "class": "'builder-link iox-node-' + nodeId" } }, ngImport: i0, template: `{{ label }}`, isInline: true, styles: [":host{display:inline;cursor:pointer}:host:where(:not(.iox-es)){color:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
752
752
  }
753
753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderLinkComponent, decorators: [{
754
754
  type: Component,
@@ -758,7 +758,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
758
758
  '[style.pointer-events]': "isPreview ? null : 'none'",
759
759
  '[class]': "'builder-link iox-node-' + nodeId",
760
760
  '(click)': 'onLinkClick($event)',
761
- }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline;cursor:pointer}\n"] }]
761
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline;cursor:pointer}:host:where(:not(.iox-es)){color:inherit}\n"] }]
762
762
  }], ctorParameters: () => [{ type: undefined, decorators: [{
763
763
  type: Optional
764
764
  }, {
@@ -835,7 +835,7 @@ class BuilderButtonComponent {
835
835
  this.events.emit('elementselect', { node: this.node, componentRef: null });
836
836
  }
837
837
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderButtonComponent, deps: [{ token: IOX_BUILDER_EVENTS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
838
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderButtonComponent, isStandalone: false, selector: "a[iox-button]", inputs: { label: "label", link: "link", variant: "variant", nodeId: "nodeId", node: "node" }, host: { listeners: { "dblclick": "startEdit($event)", "blur": "commitEdit($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.href": "link", "class": "'builder-btn variant-' + variant + ' iox-node-' + nodeId", "attr.contenteditable": "editing ? 'true' : null" } }, ngImport: i0, template: `{{ label }}`, isInline: true, styles: [":host{display:inline-block;padding:var(--iox-button-pad, .6rem 1.5rem);border-radius:var(--iox-button-radius, 6px);font-size:var(--iox-button-size, .9rem);text-decoration:none;cursor:pointer;text-align:center;transition:opacity var(--iox-dur-fast, .15s)}:host.variant-primary{background:var(--iox-button-primary-bg, #cb9090);color:var(--iox-button-primary-ink, #fff);border:var(--iox-button-border-width, 1px) solid var(--iox-button-primary-border, #cb9090)}:host.variant-outlined{background:var(--iox-button-secondary-bg, transparent);color:var(--iox-button-secondary-ink, #cb9090);border:var(--iox-button-border-width, 1px) solid var(--iox-button-secondary-border, #cb9090)}:host.variant-text{background:transparent;color:var(--iox-button-ghost-ink, #cb9090);border:var(--iox-button-border-width, 1px) solid transparent}:host[contenteditable]{outline:2px solid #cb9090;cursor:text}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
838
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderButtonComponent, isStandalone: false, selector: "a[iox-button]", inputs: { label: "label", link: "link", variant: "variant", nodeId: "nodeId", node: "node" }, host: { listeners: { "dblclick": "startEdit($event)", "blur": "commitEdit($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.href": "link", "class": "'builder-btn variant-' + variant + ' iox-node-' + nodeId", "attr.contenteditable": "editing ? 'true' : null" } }, ngImport: i0, template: `{{ label }}`, isInline: true, styles: [":host{display:inline-block;cursor:pointer;text-align:center}:host:where(:not(.iox-es)){padding:.6rem 1.5rem;border-radius:6px;font-size:.9rem;text-decoration:none;transition:opacity .15s}:host.variant-primary:where(:not(.iox-es)){background:#cb9090;color:#fff;border:1px solid #cb9090}:host.variant-outlined:where(:not(.iox-es)){background:transparent;color:#cb9090;border:1px solid #cb9090}:host.variant-text:where(:not(.iox-es)){background:transparent;color:#cb9090;border:1px solid transparent}:host[contenteditable]{outline:2px solid #cb9090;cursor:text}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
839
839
  }
840
840
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderButtonComponent, decorators: [{
841
841
  type: Component,
@@ -846,7 +846,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
846
846
  '(dblclick)': 'startEdit($event)',
847
847
  '(blur)': 'commitEdit($event)',
848
848
  '(keydown)': 'onKeyDown($event)',
849
- }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;padding:var(--iox-button-pad, .6rem 1.5rem);border-radius:var(--iox-button-radius, 6px);font-size:var(--iox-button-size, .9rem);text-decoration:none;cursor:pointer;text-align:center;transition:opacity var(--iox-dur-fast, .15s)}:host.variant-primary{background:var(--iox-button-primary-bg, #cb9090);color:var(--iox-button-primary-ink, #fff);border:var(--iox-button-border-width, 1px) solid var(--iox-button-primary-border, #cb9090)}:host.variant-outlined{background:var(--iox-button-secondary-bg, transparent);color:var(--iox-button-secondary-ink, #cb9090);border:var(--iox-button-border-width, 1px) solid var(--iox-button-secondary-border, #cb9090)}:host.variant-text{background:transparent;color:var(--iox-button-ghost-ink, #cb9090);border:var(--iox-button-border-width, 1px) solid transparent}:host[contenteditable]{outline:2px solid #cb9090;cursor:text}\n"] }]
849
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;cursor:pointer;text-align:center}:host:where(:not(.iox-es)){padding:.6rem 1.5rem;border-radius:6px;font-size:.9rem;text-decoration:none;transition:opacity .15s}:host.variant-primary:where(:not(.iox-es)){background:#cb9090;color:#fff;border:1px solid #cb9090}:host.variant-outlined:where(:not(.iox-es)){background:transparent;color:#cb9090;border:1px solid #cb9090}:host.variant-text:where(:not(.iox-es)){background:transparent;color:#cb9090;border:1px solid transparent}:host[contenteditable]{outline:2px solid #cb9090;cursor:text}\n"] }]
850
850
  }], ctorParameters: () => [{ type: undefined, decorators: [{
851
851
  type: Optional
852
852
  }, {
@@ -1317,6 +1317,38 @@ function buildFns(funs, src) {
1317
1317
  .join(' ');
1318
1318
  }
1319
1319
  // ─── Public API ───────────────────────────────────────────────────────────────
1320
+ /** True when the whole-value `backdropFilter` trait is SET — it then wins over the composed
1321
+ * backdrop* controls (`none` / empty is its unset value). The Style panel hides those controls on
1322
+ * exactly this condition, so what the panel shows live is what the compiler emits. */
1323
+ function isWholeBackdropSet(value) {
1324
+ return typeof value === 'string' && value.trim() !== '' && value.trim() !== 'none';
1325
+ }
1326
+ /** The part controls are 0–3 factor sliders: `140%` reads as `1.4`. */
1327
+ const asFactor = (arg) => arg.endsWith('%') ? String(Math.round(parseFloat(arg) * 100) / 10000) : arg;
1328
+ const BACKDROP_FN = /^([a-z-]+)\(([^()]*)\)$/;
1329
+ /**
1330
+ * The inverse of the backdrop composition: a resolved whole value (`blur(16px) saturate(1.4)`) →
1331
+ * the composed traits, every one of the group present (its default when absent; `140%` → `1.4` for
1332
+ * the factor sliders), so Detach can hand
1333
+ * a token's look back to the part controls. `none` / empty → all defaults. A value using anything
1334
+ * the group cannot express (another function, a `var()`, a percentage-free form it cannot read)
1335
+ * → null: the caller keeps it whole rather than silently dropping part of the look.
1336
+ */
1337
+ function decomposeBackdropFilter(value) {
1338
+ const out = Object.fromEntries(BACKDROP_FUNS.map(([trait, , def]) => [trait, def]));
1339
+ const text = (value ?? '').trim();
1340
+ if (!isWholeBackdropSet(text))
1341
+ return out;
1342
+ const parts = text.split(/\s+(?![^(]*\))/);
1343
+ for (const part of parts) {
1344
+ const m = BACKDROP_FN.exec(part);
1345
+ const fun = m && BACKDROP_FUNS.find(([, fn]) => fn === m[1]);
1346
+ if (!m || !fun || m[2].trim() === '' || m[2].includes('var('))
1347
+ return null;
1348
+ out[fun[0]] = fun[1] === 'blur' ? m[2].trim() : asFactor(m[2].trim());
1349
+ }
1350
+ return out;
1351
+ }
1320
1352
  /**
1321
1353
  * Strip virtual trait keys from `raw` and emit their composed CSS equivalents.
1322
1354
  *
@@ -1348,7 +1380,7 @@ function composeVirtualTraits(raw, base = raw) {
1348
1380
  // default `none` means unset, so a legacy node's composed blur still applies. The -webkit-
1349
1381
  // twin rides along for Safari (design-system plan T3).
1350
1382
  const whole = raw[BACKDROP_WHOLE_KEY] ?? base[BACKDROP_WHOLE_KEY];
1351
- const wholeSet = typeof whole === 'string' && whole.trim() !== '' && whole.trim() !== 'none';
1383
+ const wholeSet = isWholeBackdropSet(whole);
1352
1384
  const backdropStr = buildFns(BACKDROP_FUNS, merged(BACKDROP_FUNS));
1353
1385
  if (wholeSet)
1354
1386
  result[BACKDROP_WHOLE_KEY] = whole;
@@ -2851,7 +2883,7 @@ class ClientGalleryComponent {
2851
2883
  [ngStyle]="slideStyle(i)"></div>
2852
2884
  <div class="iox-gallery__overlay"></div>
2853
2885
  </div>
2854
- `, isInline: true, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:var(--iox-gallery-filter, brightness(1.35));-webkit-mask-image:var(--iox-gallery-mask, radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 80%, rgba(0,0,0,.1) 95%, rgba(0,0,0,0) 100%));mask-image:var(--iox-gallery-mask, radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 80%, rgba(0,0,0,.1) 95%, rgba(0,0,0,0) 100%))}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:var(--iox-gallery-overlay, linear-gradient(to bottom, rgba(0,0,0,.5) 0%, rgba(0,0,0,.15) 20%, rgba(0,0,0,.15) 80%, rgba(0,0,0,.5) 100%))}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2886
+ `, isInline: true, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:brightness(1.35);-webkit-mask-image:radial-gradient(circle at 50% 50%,rgba(0,0,0,1) 80%,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle at 50% 50%,#000 80%,#0000001a 95%,#0000)}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(to bottom,#00000080,#00000026 20% 80%,#00000080)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2855
2887
  }
2856
2888
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ClientGalleryComponent, decorators: [{
2857
2889
  type: Component,
@@ -2863,7 +2895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
2863
2895
  [ngStyle]="slideStyle(i)"></div>
2864
2896
  <div class="iox-gallery__overlay"></div>
2865
2897
  </div>
2866
- `, standalone: false, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:var(--iox-gallery-filter, brightness(1.35));-webkit-mask-image:var(--iox-gallery-mask, radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 80%, rgba(0,0,0,.1) 95%, rgba(0,0,0,0) 100%));mask-image:var(--iox-gallery-mask, radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 80%, rgba(0,0,0,.1) 95%, rgba(0,0,0,0) 100%))}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:var(--iox-gallery-overlay, linear-gradient(to bottom, rgba(0,0,0,.5) 0%, rgba(0,0,0,.15) 20%, rgba(0,0,0,.15) 80%, rgba(0,0,0,.5) 100%))}\n"] }]
2898
+ `, standalone: false, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:brightness(1.35);-webkit-mask-image:radial-gradient(circle at 50% 50%,rgba(0,0,0,1) 80%,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle at 50% 50%,#000 80%,#0000001a 95%,#0000)}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(to bottom,#00000080,#00000026 20% 80%,#00000080)}\n"] }]
2867
2899
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2868
2900
  type: Inject,
2869
2901
  args: [PLATFORM_ID]
@@ -4815,6 +4847,16 @@ const NOOP_INITIAL_VALUES = {
4815
4847
  const SUPPRESSED_STYLE_PROPS_BY_TYPE = {
4816
4848
  // An icon's line box is structurally forced to 1 — see the Icon branch of renderDefaultDeclarations.
4817
4849
  Icon: ['lineHeight'],
4850
+ // A Dialog is PLACED by its renderer, never positioned by its node rule: the live twin is a
4851
+ // top-layer <dialog> centred by `inset: 0; margin: auto` (the engine's zero-specificity reset),
4852
+ // the canvas twin a grid stage. Every node serialises the Spacing/Position traits, so a stored
4853
+ // `margin: 0px` (0,1,0) beat the reset and every dialog — the consent banner too — opened in the
4854
+ // top-left corner of the live site (DS2 verification). Placement is the `placement` trait's job.
4855
+ Dialog: [
4856
+ 'position', 'inset', 'top', 'right', 'bottom', 'left',
4857
+ 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft',
4858
+ 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'marginInline', 'marginInlineStart', 'marginInlineEnd',
4859
+ ],
4818
4860
  };
4819
4861
  /** Remove the style props whose value a type's render-default always overrides. Returns the map
4820
4862
  * unchanged (same reference) when the type suppresses nothing. */
@@ -4889,11 +4931,18 @@ function hasHoverState(stateStyles) {
4889
4931
  }
4890
4932
  /**
4891
4933
  * The base-rule transition a hovering node gets when it declares none of its own, so a hover
4892
- * animates instead of snapping. Token-driven with today's literal as the fallback (T6), so an
4893
- * unseeded org renders `all 0.2s ease` byte-identically. ONE copy for the builder canvas, the style
4894
- * panel and the engine — it was hand-written in three places.
4934
+ * animates instead of snapping. ONE copy for the builder canvas, the style panel and the engine.
4935
+ *
4936
+ * Two values, chosen by the element-style MARKER (§3b-bis): a node wearing an element style takes
4937
+ * the motion tokens; a node without one (saved before DS2, not adopted) keeps the pre-DS2 literal
4938
+ * byte-for-byte — seeding an org's tokens must never change how a legacy page hovers.
4895
4939
  */
4896
- const HOVER_DEFAULT_TRANSITION = 'all var(--iox-dur-fast, 0.2s) var(--iox-ease-standard, ease)';
4940
+ const HOVER_DEFAULT_TRANSITION = 'all var(--iox-dur-fast) var(--iox-ease-standard)';
4941
+ const LEGACY_HOVER_TRANSITION = 'all 0.2s ease';
4942
+ /** The default hover transition for a node that wears `elementStyle` (or none). */
4943
+ function defaultHoverTransition(elementStyle) {
4944
+ return elementStyle ? HOVER_DEFAULT_TRANSITION : LEGACY_HOVER_TRANSITION;
4945
+ }
4897
4946
  /** True when the RAW style map already yields a transition (an explicit one, or the composed
4898
4947
  * transitionDuration/TimingFunction an element style writes). */
4899
4948
  function hasOwnTransition(styleProps) {
@@ -4903,9 +4952,9 @@ function hasOwnTransition(styleProps) {
4903
4952
  return composeVirtualTraits(sp)['transition'] !== undefined;
4904
4953
  }
4905
4954
  /** `styleProps` plus the default hover transition when the node hovers and sets none itself. */
4906
- function withDefaultHoverTransition(styleProps, stateStyles) {
4955
+ function withDefaultHoverTransition(styleProps, stateStyles, elementStyle) {
4907
4956
  return hasHoverState(stateStyles) && !hasOwnTransition(styleProps)
4908
- ? { ...styleProps, transition: HOVER_DEFAULT_TRANSITION }
4957
+ ? { ...styleProps, transition: defaultHoverTransition(elementStyle) }
4909
4958
  : styleProps;
4910
4959
  }
4911
4960
  /**
@@ -4933,8 +4982,9 @@ const DEFAULT_WIDTH_BY_TYPE = {
4933
4982
  * @param type Node type (registry key).
4934
4983
  * @param styleProps The node's persisted styleProps.
4935
4984
  * @param hasHoverState Whether the node has a non-empty hover / parent-hover state.
4985
+ * @param elementStyle The element style the node wears — picks the default hover transition.
4936
4986
  */
4937
- function renderDefaultDeclarations(type, styleProps, hasHoverState) {
4987
+ function renderDefaultDeclarations(type, styleProps, hasHoverState, elementStyle) {
4938
4988
  const sp = styleProps ?? {};
4939
4989
  const out = [];
4940
4990
  const isOutOfFlow = sp['position'] === 'fixed' || sp['position'] === 'absolute';
@@ -4966,7 +5016,7 @@ function renderDefaultDeclarations(type, styleProps, hasHoverState) {
4966
5016
  // when the node composes its own (an element style's transitionDuration) — appended after the
4967
5017
  // node's declarations, it would otherwise beat them in the engine only.
4968
5018
  if (hasHoverState && !hasOwnTransition(sp)) {
4969
- out.push(`transition: ${HOVER_DEFAULT_TRANSITION}`);
5019
+ out.push(`transition: ${defaultHoverTransition(elementStyle)}`);
4970
5020
  }
4971
5021
  // Image defaults reapplied when unset (the config defaults aren't always persisted). height:auto
4972
5022
  // is only a DEFAULT — when the user sets an explicit height (e.g. 100%) it must WIN, so guard it
@@ -6991,5 +7041,5 @@ function effectiveTransitionId(anim) {
6991
7041
  * Generated bundle index. Do not edit.
6992
7042
  */
6993
7043
 
6994
- export { AOSService, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ContainerComponent, ContextStore, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DeclarationContext, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HOVER_DEFAULT_TRANSITION, HOVER_STATES, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, LinkedContainerComponent, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, RESERVED_ALIAS_PREFIX, STATE_PSEUDO_CLASS, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_RESPONSIVE_TRAITS, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, activeActions, applyBindingPipes, applyFeel, breakpointDef, breakpointForWidth, breakpointQueryFor, buildDataSourceFilter, buildPartSelector, buildRelatedFilter, buildSwiperBreakpoints, buildTargetedStateSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, collectContextSlotKeys, collectReferencedAliases, compileDeclarations, compilePageStyle, composeVirtualTraits, computeRelative, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, dataSourcePlanToRequest, declaredInputNames, defaultMessageResolver, deriveSeoFromContent, describeSeoFields, effectiveTransitionId, excludeSelf, feelFor, getByPath, getSeoValue, hasHoverState, hasOwnTransition, initialSlotValues, isActionEnabled, isContextAction, isInputOverriddenAt, isOverriddenAt, isReservedAlias, isValidSlotKey, legacyEnterToTransition, matchRouteParams, mediaQueryFor, mergeSwiperBreakpoints, nearestCommonAncestorId, nodeCssId, nodeUsesContext, normalizeCollectionResult, normalizeGalleryImage, normalizeIconClass, parentBreakpoint, parseUrlList, partClassName, planDataSource, planResponsiveRules, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resetSeoField, resolveBoundValue, resolveContextValue, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolvePageTransition, resolvePath, resolveRelativeInto, resolveRepeaterItems, resolveSeo, resolveSiblings, resolveSingleItemId, resolveStateStyles, resolveStyleProps, resolveValueChain, rewriteViewportUnits, safeSetInput, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, stateNamesIn, statePseudoClass, stripSuppressedProps, variableAliases, variableItemsFrom, withContextSlots, withDefaultHoverTransition, wrapInBreakpointQuery, wrapInMediaQuery };
7044
+ export { AOSService, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ContainerComponent, ContextStore, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DeclarationContext, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HOVER_DEFAULT_TRANSITION, HOVER_STATES, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, LEGACY_HOVER_TRANSITION, LinkedContainerComponent, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, RESERVED_ALIAS_PREFIX, STATE_PSEUDO_CLASS, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_RESPONSIVE_TRAITS, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, activeActions, applyBindingPipes, applyFeel, breakpointDef, breakpointForWidth, breakpointQueryFor, buildDataSourceFilter, buildPartSelector, buildRelatedFilter, buildSwiperBreakpoints, buildTargetedStateSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, collectContextSlotKeys, collectReferencedAliases, compileDeclarations, compilePageStyle, composeVirtualTraits, computeRelative, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, dataSourcePlanToRequest, declaredInputNames, decomposeBackdropFilter, defaultHoverTransition, defaultMessageResolver, deriveSeoFromContent, describeSeoFields, effectiveTransitionId, excludeSelf, feelFor, getByPath, getSeoValue, hasHoverState, hasOwnTransition, initialSlotValues, isActionEnabled, isContextAction, isInputOverriddenAt, isOverriddenAt, isReservedAlias, isValidSlotKey, isWholeBackdropSet, legacyEnterToTransition, matchRouteParams, mediaQueryFor, mergeSwiperBreakpoints, nearestCommonAncestorId, nodeCssId, nodeUsesContext, normalizeCollectionResult, normalizeGalleryImage, normalizeIconClass, parentBreakpoint, parseUrlList, partClassName, planDataSource, planResponsiveRules, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resetSeoField, resolveBoundValue, resolveContextValue, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolvePageTransition, resolvePath, resolveRelativeInto, resolveRepeaterItems, resolveSeo, resolveSiblings, resolveSingleItemId, resolveStateStyles, resolveStyleProps, resolveValueChain, rewriteViewportUnits, safeSetInput, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, stateNamesIn, statePseudoClass, stripSuppressedProps, variableAliases, variableItemsFrom, withContextSlots, withDefaultHoverTransition, wrapInBreakpointQuery, wrapInMediaQuery };
6995
7045
  //# sourceMappingURL=vectoriox-iox-ui.mjs.map