@descope/web-components-ui 3.22.3 → 3.23.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.
@@ -143,6 +143,40 @@ const syncAttrs$1 = (ele1, ele2, options) => {
143
143
  observeAttributes$1(ele2, createSyncAttrsCb$1(ele2, ele1), options);
144
144
  };
145
145
 
146
+ // A custom element has no shadow root on the first tick, so anything reaching into one has to
147
+ // wait for it. Takes a function rather than the element, because the element itself is often not
148
+ // there yet either.
149
+ //
150
+ // On giving up it resolves the element it was given, not a shadow root. `portalMixin` relies on
151
+ // that to carry on with something usable, so a caller that cannot use the element must check what
152
+ // it got back.
153
+ const waitForShadowRoot$1 = (getRootElementFn) => async (that) => {
154
+ const ele = await getRootElementFn(that);
155
+
156
+ return new Promise((res) => {
157
+ const MAX_RETRIES = 20;
158
+ let counter = 0;
159
+
160
+ const check = () => {
161
+ if (counter > MAX_RETRIES) {
162
+ // eslint-disable-next-line no-console
163
+ console.error('could not get shadow root for element', ele);
164
+ res(ele);
165
+ return;
166
+ }
167
+
168
+ counter++;
169
+
170
+ if (!ele?.shadowRoot) {
171
+ setTimeout(check);
172
+ } else {
173
+ res(ele.shadowRoot);
174
+ }
175
+ };
176
+ check();
177
+ });
178
+ };
179
+
146
180
  const getComponentName$1 = (name) => kebabCaseJoin$1(DESCOPE_PREFIX$1, name);
147
181
 
148
182
  const getCssVarName$1 = (...args) => `--${kebabCaseJoin$1(...args)}`;
@@ -303,6 +337,39 @@ const syncAttrs = (ele1, ele2, options) => {
303
337
  observeAttributes(ele2, createSyncAttrsCb(ele2, ele1), options);
304
338
  };
305
339
 
340
+ // A custom element has no shadow root on the first tick, so anything reaching into one has to
341
+ // wait for it. Takes a function rather than the element, because the element itself is often not
342
+ // there yet either.
343
+ //
344
+ // On giving up it resolves the element it was given, not a shadow root. `portalMixin` relies on
345
+ // that to carry on with something usable, so a caller that cannot use the element must check what
346
+ // it got back.
347
+ const waitForShadowRoot = (getRootElementFn) => async (that) => {
348
+ const ele = await getRootElementFn(that);
349
+
350
+ return new Promise((res) => {
351
+ const MAX_RETRIES = 20;
352
+ let counter = 0;
353
+
354
+ const check = () => {
355
+ if (counter > MAX_RETRIES) {
356
+ console.error('could not get shadow root for element', ele);
357
+ res(ele);
358
+ return;
359
+ }
360
+
361
+ counter++;
362
+
363
+ if (!ele?.shadowRoot) {
364
+ setTimeout(check);
365
+ } else {
366
+ res(ele.shadowRoot);
367
+ }
368
+ };
369
+ check();
370
+ });
371
+ };
372
+
306
373
  const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);
307
374
 
308
375
  const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;
@@ -1371,7 +1438,7 @@ const globals$1 = {
1371
1438
  fonts: fonts$1,
1372
1439
  direction: direction$1,
1373
1440
  };
1374
- const vars$1c = getThemeVars(globals$1);
1441
+ const vars$1d = getThemeVars(globals$1);
1375
1442
 
1376
1443
  const direction = 'ltr';
1377
1444
 
@@ -1675,7 +1742,7 @@ const createClassSelectorSpecifier$1 = (className, numOfRepeats) => `.${classNam
1675
1742
  const STYLE_OVERRIDE_ATTR_PREFIX$1 = 'st';
1676
1743
 
1677
1744
  const createStyleMixin$1 =
1678
- ({ mappings = {}, componentNameOverride = '' }) =>
1745
+ ({ mappings = {}, componentNameOverride = '', style = '' }) =>
1679
1746
  (superclass) => {
1680
1747
  const componentName = componentNameOverride || superclass.componentName;
1681
1748
 
@@ -1729,7 +1796,7 @@ const createStyleMixin$1 =
1729
1796
  );
1730
1797
  }
1731
1798
 
1732
- // eslint-disable-next-line class-methods-use-this
1799
+
1733
1800
  get #componentTheme() {
1734
1801
  return componentsThemeManager.currentTheme?.[componentName] || '';
1735
1802
  }
@@ -1765,6 +1832,7 @@ const createStyleMixin$1 =
1765
1832
  if (elementId) {
1766
1833
  // basically this is enough to make the selector more specific
1767
1834
  // but just in case there is no id, we will also add the class multiple times
1835
+ // eslint-disable-next-line no-undef
1768
1836
  classSpecifier += `#${CSS.escape(elementId)}`;
1769
1837
  }
1770
1838
 
@@ -1812,6 +1880,14 @@ const createStyleMixin$1 =
1812
1880
  }
1813
1881
  }
1814
1882
 
1883
+ // Rules the component needs wherever this mixin writes, which for a portal is a shadow root
1884
+ // it does not own. Prepended after the mapping rules so those still win: the mapping is the
1885
+ // themeable half, this is the structure underneath it.
1886
+ #createStaticStyle() {
1887
+ const css = isFunction(style) ? style() : style;
1888
+ if (css) injectStyle(css, this.#rootElement, { prepend: true });
1889
+ }
1890
+
1815
1891
  #addClassName(className) {
1816
1892
  (
1817
1893
  this.#rootElement?.classList ||
@@ -1829,6 +1905,7 @@ const createStyleMixin$1 =
1829
1905
  this.#addClassName(componentName);
1830
1906
 
1831
1907
  this.#createMappingStyle();
1908
+ this.#createStaticStyle();
1832
1909
  this.#createComponentTheme();
1833
1910
  this.#createOverridesStyle();
1834
1911
 
@@ -2781,46 +2858,31 @@ const DISPLAY_NAME_SEPARATOR$1 = '_';
2781
2858
 
2782
2859
  const sanitizeSelector = (selector) => selector.replace(/[^\w\s]/gi, '');
2783
2860
 
2784
- const withWaitForShadowRoot$1 = (getRootElementFn) => async (that) => {
2785
- const ele = await getRootElementFn(that);
2786
-
2787
- return new Promise((res) => {
2788
- const MAX_RETRIES = 20;
2789
- let counter = 0;
2790
-
2791
- const check = () => {
2792
- if (counter > MAX_RETRIES) {
2793
- // eslint-disable-next-line no-console
2794
- console.error('could not get shadow root for element', ele);
2795
- res(ele);
2796
- return;
2797
- }
2798
-
2799
- counter++;
2800
-
2801
- if (!ele?.shadowRoot) {
2802
- setTimeout(check);
2803
- } else {
2804
- res(ele.shadowRoot);
2805
- return;
2806
- }
2807
- };
2808
- check();
2809
- });
2810
- };
2811
-
2812
2861
  const portalMixin$1 =
2813
2862
  ({
2814
2863
  name,
2815
2864
  selector,
2816
2865
  mappings = {},
2817
- forward: { attributes = [], include = true } = {},
2866
+ // Static css for the portal's own root, for rules that should not become themeable knobs.
2867
+ style = '',
2868
+ // `false` forwards nothing to the portal element. It needs its own value because an empty
2869
+ // `attributes` list already means "no filter", so it forwards everything rather than nothing.
2870
+ // Forwarding is wrong for a portal whose element is not a copy of the host, where attributes
2871
+ // like `data` or `label` would land somewhere that does not expect them.
2872
+ forward = {},
2818
2873
  }) =>
2819
2874
  (superclass) => {
2875
+ // A function selector has no text to derive a name from, and an empty one would quietly
2876
+ // produce empty css var names, so say so instead.
2877
+ if (isFunction(selector) && !name) {
2878
+ throw new Error('portalMixin: a function selector requires a name');
2879
+ }
2880
+
2820
2881
  const eleDisplayName = name || sanitizeSelector(selector);
2821
2882
 
2822
2883
  const BaseClass = createStyleMixin$1({
2823
2884
  mappings,
2885
+ style,
2824
2886
  })(superclass);
2825
2887
 
2826
2888
  return class PortalMixinClass extends BaseClass {
@@ -2853,13 +2915,18 @@ const portalMixin$1 =
2853
2915
 
2854
2916
  // in case we have a selector, we should first wait for the base element shadow root
2855
2917
  // and then look for the internal element
2856
- const baseEleShadowRoot = await withWaitForShadowRoot$1(() => baseEle)(
2918
+ const baseEleShadowRoot = await waitForShadowRoot(() => baseEle)(
2857
2919
  that,
2858
2920
  );
2859
- return baseEleShadowRoot.querySelector(selector);
2921
+
2922
+ // a string selector only reaches inside that one shadow root. a portal that sits deeper
2923
+ // takes a function instead, which receives the root and may await its own way down.
2924
+ return isFunction(selector)
2925
+ ? selector(baseEleShadowRoot)
2926
+ : baseEleShadowRoot.querySelector(selector);
2860
2927
  };
2861
2928
 
2862
- const getPortalElement = withWaitForShadowRoot$1(getRootElement);
2929
+ const getPortalElement = waitForShadowRoot(getRootElement);
2863
2930
 
2864
2931
  super({
2865
2932
  getRootElement: getPortalElement,
@@ -2894,9 +2961,12 @@ const portalMixin$1 =
2894
2961
  // Initialize portal element lookup here (deferred from constructor for React compatibility)
2895
2962
  this.#portalEle = this.#getPortalElement();
2896
2963
  const portalEle = await this.#portalEle;
2897
- forwardAttrs(this, portalEle, {
2898
- [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
2899
- });
2964
+ if (forward !== false) {
2965
+ const { attributes = [], include = true } = forward;
2966
+ forwardAttrs(this, portalEle, {
2967
+ [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
2968
+ });
2969
+ }
2900
2970
 
2901
2971
  this.#handleHoverAttribute();
2902
2972
  }
@@ -3221,12 +3291,12 @@ const createImage = async (src, altText) => {
3221
3291
  }
3222
3292
  };
3223
3293
 
3224
- const componentName$1t = getComponentName('image');
3294
+ const componentName$1u = getComponentName('image');
3225
3295
 
3226
3296
  const srcAttrs = ['src', 'src-dark'];
3227
3297
 
3228
3298
  class RawImage extends createBaseClass$1({
3229
- componentName: componentName$1t,
3299
+ componentName: componentName$1u,
3230
3300
  baseSelector: 'slot',
3231
3301
  }) {
3232
3302
  static get observedAttributes() {
@@ -3354,7 +3424,7 @@ const ImageClass = compose(
3354
3424
  componentNameValidationMixin$1,
3355
3425
  )(RawImage);
3356
3426
 
3357
- const componentName$1s = getComponentName('icon');
3427
+ const componentName$1t = getComponentName('icon');
3358
3428
 
3359
3429
  const IconClass = compose(
3360
3430
  createStyleMixin$1({
@@ -3379,7 +3449,7 @@ const IconClass = compose(
3379
3449
  }
3380
3450
  `,
3381
3451
  excludeAttrsSync: ['tabindex', 'class', 'style', 'st-height', 'st-width'],
3382
- componentName: componentName$1s,
3452
+ componentName: componentName$1t,
3383
3453
  }),
3384
3454
  );
3385
3455
 
@@ -3394,7 +3464,7 @@ const clickableMixin = (superclass) =>
3394
3464
  }
3395
3465
  };
3396
3466
 
3397
- const componentName$1r = getComponentName('button');
3467
+ const componentName$1s = getComponentName('button');
3398
3468
 
3399
3469
  const resetStyles = `
3400
3470
  :host {
@@ -3432,7 +3502,7 @@ const iconStyles = `
3432
3502
 
3433
3503
  const editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;
3434
3504
 
3435
- const { host: host$E, label: label$a, slottedIcon } = {
3505
+ const { host: host$F, label: label$a, slottedIcon } = {
3436
3506
  host: { selector: () => ':host' },
3437
3507
  label: { selector: '::part(label)' },
3438
3508
  slottedIcon: { selector: () => '::slotted(descope-icon)' },
@@ -3445,9 +3515,9 @@ const ButtonClass = compose(
3445
3515
  createStyleMixin$1({
3446
3516
  mappings: {
3447
3517
  hostWidth: { property: 'width' },
3448
- hostMaxWidth: { ...host$E, property: 'max-width' },
3518
+ hostMaxWidth: { ...host$F, property: 'max-width' },
3449
3519
  hostHeight: { property: 'height' },
3450
- hostDirection: { ...host$E, property: 'direction' },
3520
+ hostDirection: { ...host$F, property: 'direction' },
3451
3521
  fontSize: {},
3452
3522
  fontFamily: {},
3453
3523
  fontWeight: {},
@@ -3516,7 +3586,7 @@ const ButtonClass = compose(
3516
3586
  }
3517
3587
  `,
3518
3588
  excludeAttrsSync: ['tabindex', 'class', 'style'],
3519
- componentName: componentName$1r,
3589
+ componentName: componentName$1s,
3520
3590
  }),
3521
3591
  );
3522
3592
 
@@ -3566,7 +3636,7 @@ const mode = {
3566
3636
 
3567
3637
  const [helperTheme$7, helperRefs$7, helperVars$6] = createHelperVars$1(
3568
3638
  { mode },
3569
- componentName$1r,
3639
+ componentName$1s,
3570
3640
  );
3571
3641
 
3572
3642
  const button = {
@@ -3686,7 +3756,7 @@ const button = {
3686
3756
  },
3687
3757
  };
3688
3758
 
3689
- const vars$1b = {
3759
+ const vars$1c = {
3690
3760
  ...compVars$9,
3691
3761
  ...helperVars$6,
3692
3762
  };
@@ -3694,13 +3764,13 @@ const vars$1b = {
3694
3764
  var button$1 = /*#__PURE__*/Object.freeze({
3695
3765
  __proto__: null,
3696
3766
  default: button,
3697
- vars: vars$1b
3767
+ vars: vars$1c
3698
3768
  });
3699
3769
 
3700
- const componentName$1q = getComponentName('text');
3770
+ const componentName$1r = getComponentName('text');
3701
3771
 
3702
3772
  class RawText extends createBaseClass$1({
3703
- componentName: componentName$1q,
3773
+ componentName: componentName$1r,
3704
3774
  baseSelector: ':host > slot',
3705
3775
  }) {
3706
3776
  constructor() {
@@ -3739,15 +3809,15 @@ class RawText extends createBaseClass$1({
3739
3809
  }
3740
3810
  }
3741
3811
 
3742
- const { host: host$D } = {
3812
+ const { host: host$E } = {
3743
3813
  host: { selector: () => ':host' },
3744
3814
  };
3745
3815
 
3746
3816
  const TextClass = compose(
3747
3817
  createStyleMixin$1({
3748
3818
  mappings: {
3749
- hostWidth: { ...host$D, property: 'width' },
3750
- hostDirection: { ...host$D, property: 'direction' },
3819
+ hostWidth: { ...host$E, property: 'width' },
3820
+ hostDirection: { ...host$E, property: 'direction' },
3751
3821
  fontSize: {},
3752
3822
  textColor: [{ property: 'color' }],
3753
3823
  textLineHeight: { property: 'line-height' },
@@ -3769,106 +3839,106 @@ const TextClass = compose(
3769
3839
  )(RawText);
3770
3840
 
3771
3841
  const globalRefs$J = getThemeRefs$1(globals);
3772
- const vars$1a = TextClass.cssVarList;
3842
+ const vars$1b = TextClass.cssVarList;
3773
3843
 
3774
3844
  const text$3 = {
3775
- [vars$1a.hostDirection]: globalRefs$J.direction,
3776
- [vars$1a.textLineHeight]: '1.35em',
3777
- [vars$1a.textAlign]: 'start',
3778
- [vars$1a.textColor]: globalRefs$J.colors.surface.dark,
3845
+ [vars$1b.hostDirection]: globalRefs$J.direction,
3846
+ [vars$1b.textLineHeight]: '1.35em',
3847
+ [vars$1b.textAlign]: 'start',
3848
+ [vars$1b.textColor]: globalRefs$J.colors.surface.dark,
3779
3849
 
3780
3850
  variant: {
3781
3851
  h1: {
3782
- [vars$1a.fontSize]: globalRefs$J.typography.h1.size,
3783
- [vars$1a.fontWeight]: globalRefs$J.typography.h1.weight,
3784
- [vars$1a.fontFamily]: globalRefs$J.typography.h1.font,
3852
+ [vars$1b.fontSize]: globalRefs$J.typography.h1.size,
3853
+ [vars$1b.fontWeight]: globalRefs$J.typography.h1.weight,
3854
+ [vars$1b.fontFamily]: globalRefs$J.typography.h1.font,
3785
3855
  },
3786
3856
  h2: {
3787
- [vars$1a.fontSize]: globalRefs$J.typography.h2.size,
3788
- [vars$1a.fontWeight]: globalRefs$J.typography.h2.weight,
3789
- [vars$1a.fontFamily]: globalRefs$J.typography.h2.font,
3857
+ [vars$1b.fontSize]: globalRefs$J.typography.h2.size,
3858
+ [vars$1b.fontWeight]: globalRefs$J.typography.h2.weight,
3859
+ [vars$1b.fontFamily]: globalRefs$J.typography.h2.font,
3790
3860
  },
3791
3861
  h3: {
3792
- [vars$1a.fontSize]: globalRefs$J.typography.h3.size,
3793
- [vars$1a.fontWeight]: globalRefs$J.typography.h3.weight,
3794
- [vars$1a.fontFamily]: globalRefs$J.typography.h3.font,
3862
+ [vars$1b.fontSize]: globalRefs$J.typography.h3.size,
3863
+ [vars$1b.fontWeight]: globalRefs$J.typography.h3.weight,
3864
+ [vars$1b.fontFamily]: globalRefs$J.typography.h3.font,
3795
3865
  },
3796
3866
  subtitle1: {
3797
- [vars$1a.fontSize]: globalRefs$J.typography.subtitle1.size,
3798
- [vars$1a.fontWeight]: globalRefs$J.typography.subtitle1.weight,
3799
- [vars$1a.fontFamily]: globalRefs$J.typography.subtitle1.font,
3867
+ [vars$1b.fontSize]: globalRefs$J.typography.subtitle1.size,
3868
+ [vars$1b.fontWeight]: globalRefs$J.typography.subtitle1.weight,
3869
+ [vars$1b.fontFamily]: globalRefs$J.typography.subtitle1.font,
3800
3870
  },
3801
3871
  subtitle2: {
3802
- [vars$1a.fontSize]: globalRefs$J.typography.subtitle2.size,
3803
- [vars$1a.fontWeight]: globalRefs$J.typography.subtitle2.weight,
3804
- [vars$1a.fontFamily]: globalRefs$J.typography.subtitle2.font,
3872
+ [vars$1b.fontSize]: globalRefs$J.typography.subtitle2.size,
3873
+ [vars$1b.fontWeight]: globalRefs$J.typography.subtitle2.weight,
3874
+ [vars$1b.fontFamily]: globalRefs$J.typography.subtitle2.font,
3805
3875
  },
3806
3876
  body1: {
3807
- [vars$1a.fontSize]: globalRefs$J.typography.body1.size,
3808
- [vars$1a.fontWeight]: globalRefs$J.typography.body1.weight,
3809
- [vars$1a.fontFamily]: globalRefs$J.typography.body1.font,
3877
+ [vars$1b.fontSize]: globalRefs$J.typography.body1.size,
3878
+ [vars$1b.fontWeight]: globalRefs$J.typography.body1.weight,
3879
+ [vars$1b.fontFamily]: globalRefs$J.typography.body1.font,
3810
3880
  },
3811
3881
  body2: {
3812
- [vars$1a.fontSize]: globalRefs$J.typography.body2.size,
3813
- [vars$1a.fontWeight]: globalRefs$J.typography.body2.weight,
3814
- [vars$1a.fontFamily]: globalRefs$J.typography.body2.font,
3882
+ [vars$1b.fontSize]: globalRefs$J.typography.body2.size,
3883
+ [vars$1b.fontWeight]: globalRefs$J.typography.body2.weight,
3884
+ [vars$1b.fontFamily]: globalRefs$J.typography.body2.font,
3815
3885
  },
3816
3886
  },
3817
3887
 
3818
3888
  mode: {
3819
3889
  primary: {
3820
- [vars$1a.textColor]: globalRefs$J.colors.surface.contrast,
3890
+ [vars$1b.textColor]: globalRefs$J.colors.surface.contrast,
3821
3891
  },
3822
3892
  secondary: {
3823
- [vars$1a.textColor]: globalRefs$J.colors.surface.dark,
3893
+ [vars$1b.textColor]: globalRefs$J.colors.surface.dark,
3824
3894
  },
3825
3895
  error: {
3826
- [vars$1a.textColor]: globalRefs$J.colors.error.main,
3896
+ [vars$1b.textColor]: globalRefs$J.colors.error.main,
3827
3897
  },
3828
3898
  'error-dark': {
3829
- [vars$1a.textColor]: globalRefs$J.colors.error.dark,
3899
+ [vars$1b.textColor]: globalRefs$J.colors.error.dark,
3830
3900
  },
3831
3901
  success: {
3832
- [vars$1a.textColor]: globalRefs$J.colors.success.main,
3902
+ [vars$1b.textColor]: globalRefs$J.colors.success.main,
3833
3903
  },
3834
3904
  'success-dark': {
3835
- [vars$1a.textColor]: globalRefs$J.colors.success.dark,
3905
+ [vars$1b.textColor]: globalRefs$J.colors.success.dark,
3836
3906
  },
3837
3907
  warning: {
3838
- [vars$1a.textColor]: globalRefs$J.colors.warning.main,
3908
+ [vars$1b.textColor]: globalRefs$J.colors.warning.main,
3839
3909
  },
3840
3910
  'warning-dark': {
3841
- [vars$1a.textColor]: globalRefs$J.colors.warning.dark,
3911
+ [vars$1b.textColor]: globalRefs$J.colors.warning.dark,
3842
3912
  },
3843
3913
  },
3844
3914
 
3845
3915
  textAlign: {
3846
- right: { [vars$1a.textAlign]: 'right' },
3847
- left: { [vars$1a.textAlign]: 'left' },
3848
- center: { [vars$1a.textAlign]: 'center' },
3916
+ right: { [vars$1b.textAlign]: 'right' },
3917
+ left: { [vars$1b.textAlign]: 'left' },
3918
+ center: { [vars$1b.textAlign]: 'center' },
3849
3919
  },
3850
3920
 
3851
3921
  _fullWidth: {
3852
- [vars$1a.hostWidth]: '100%',
3922
+ [vars$1b.hostWidth]: '100%',
3853
3923
  },
3854
3924
 
3855
3925
  _italic: {
3856
- [vars$1a.fontStyle]: 'italic',
3926
+ [vars$1b.fontStyle]: 'italic',
3857
3927
  },
3858
3928
 
3859
3929
  _uppercase: {
3860
- [vars$1a.textTransform]: 'uppercase',
3930
+ [vars$1b.textTransform]: 'uppercase',
3861
3931
  },
3862
3932
 
3863
3933
  _lowercase: {
3864
- [vars$1a.textTransform]: 'lowercase',
3934
+ [vars$1b.textTransform]: 'lowercase',
3865
3935
  },
3866
3936
  };
3867
3937
 
3868
3938
  var text$4 = /*#__PURE__*/Object.freeze({
3869
3939
  __proto__: null,
3870
3940
  default: text$3,
3871
- vars: vars$1a
3941
+ vars: vars$1b
3872
3942
  });
3873
3943
 
3874
3944
  const disableRules = [
@@ -3892,10 +3962,10 @@ const decodeHTML = (html) => {
3892
3962
  return textArea.value;
3893
3963
  };
3894
3964
 
3895
- const componentName$1p = getComponentName('enriched-text');
3965
+ const componentName$1q = getComponentName('enriched-text');
3896
3966
 
3897
3967
  class EnrichedText extends createBaseClass$1({
3898
- componentName: componentName$1p,
3968
+ componentName: componentName$1q,
3899
3969
  baseSelector: ':host > div',
3900
3970
  }) {
3901
3971
  #origLinkRenderer;
@@ -4139,12 +4209,12 @@ const EnrichedTextClass = compose(
4139
4209
  componentNameValidationMixin$1,
4140
4210
  )(EnrichedText);
4141
4211
 
4142
- const componentName$1o = getComponentName('link');
4212
+ const componentName$1p = getComponentName('link');
4143
4213
 
4144
4214
  const observedAttrs$8 = ['href', 'readonly'];
4145
4215
 
4146
4216
  class RawLink extends createBaseClass$1({
4147
- componentName: componentName$1o,
4217
+ componentName: componentName$1p,
4148
4218
  baseSelector: ':host a',
4149
4219
  }) {
4150
4220
  static get observedAttributes() {
@@ -4219,12 +4289,12 @@ const selectors$3 = {
4219
4289
  text: { selector: () => TextClass.componentName },
4220
4290
  };
4221
4291
 
4222
- const { anchor, text: text$2, host: host$C, wrapper: wrapper$1, link: link$3 } = selectors$3;
4292
+ const { anchor, text: text$2, host: host$D, wrapper: wrapper$1, link: link$3 } = selectors$3;
4223
4293
 
4224
4294
  const LinkClass = compose(
4225
4295
  createStyleMixin$1({
4226
4296
  mappings: {
4227
- hostWidth: { ...host$C, property: 'width' },
4297
+ hostWidth: { ...host$D, property: 'width' },
4228
4298
  hostDirection: { ...text$2, property: 'direction' },
4229
4299
  textAlign: wrapper$1,
4230
4300
  textDecoration: {
@@ -4245,31 +4315,31 @@ const LinkClass = compose(
4245
4315
  )(RawLink);
4246
4316
 
4247
4317
  const globalRefs$I = getThemeRefs$1(globals);
4248
- const vars$19 = LinkClass.cssVarList;
4318
+ const vars$1a = LinkClass.cssVarList;
4249
4319
 
4250
4320
  const link$1 = {
4251
- [vars$19.hostDirection]: globalRefs$I.direction,
4252
- [vars$19.cursor]: 'pointer',
4321
+ [vars$1a.hostDirection]: globalRefs$I.direction,
4322
+ [vars$1a.cursor]: 'pointer',
4253
4323
 
4254
- [vars$19.textColor]: globalRefs$I.colors.primary.main,
4324
+ [vars$1a.textColor]: globalRefs$I.colors.primary.main,
4255
4325
 
4256
4326
  textAlign: {
4257
- right: { [vars$19.textAlign]: 'right' },
4258
- left: { [vars$19.textAlign]: 'left' },
4259
- center: { [vars$19.textAlign]: 'center' },
4327
+ right: { [vars$1a.textAlign]: 'right' },
4328
+ left: { [vars$1a.textAlign]: 'left' },
4329
+ center: { [vars$1a.textAlign]: 'center' },
4260
4330
  },
4261
4331
 
4262
4332
  _fullWidth: {
4263
- [vars$19.hostWidth]: '100%',
4333
+ [vars$1a.hostWidth]: '100%',
4264
4334
  },
4265
4335
 
4266
4336
  _hover: {
4267
- [vars$19.textDecoration]: 'underline',
4337
+ [vars$1a.textDecoration]: 'underline',
4268
4338
  },
4269
4339
 
4270
4340
  mode: {
4271
4341
  secondary: {
4272
- [vars$19.textColor]: globalRefs$I.colors.secondary.main,
4342
+ [vars$1a.textColor]: globalRefs$I.colors.secondary.main,
4273
4343
  },
4274
4344
  },
4275
4345
  };
@@ -4277,37 +4347,37 @@ const link$1 = {
4277
4347
  var link$2 = /*#__PURE__*/Object.freeze({
4278
4348
  __proto__: null,
4279
4349
  default: link$1,
4280
- vars: vars$19
4350
+ vars: vars$1a
4281
4351
  });
4282
4352
 
4283
4353
  const globalRefs$H = getThemeRefs$1(globals);
4284
- const vars$18 = EnrichedTextClass.cssVarList;
4354
+ const vars$19 = EnrichedTextClass.cssVarList;
4285
4355
 
4286
4356
  const enrichedText = {
4287
- [vars$18.hostDirection]: globalRefs$H.direction,
4288
- [vars$18.hostWidth]: useVar$1(vars$1a.hostWidth),
4357
+ [vars$19.hostDirection]: globalRefs$H.direction,
4358
+ [vars$19.hostWidth]: useVar$1(vars$1b.hostWidth),
4289
4359
 
4290
- [vars$18.textLineHeight]: useVar$1(vars$1a.textLineHeight),
4291
- [vars$18.textColor]: useVar$1(vars$1a.textColor),
4292
- [vars$18.textAlign]: useVar$1(vars$1a.textAlign),
4360
+ [vars$19.textLineHeight]: useVar$1(vars$1b.textLineHeight),
4361
+ [vars$19.textColor]: useVar$1(vars$1b.textColor),
4362
+ [vars$19.textAlign]: useVar$1(vars$1b.textAlign),
4293
4363
 
4294
- [vars$18.fontSize]: useVar$1(vars$1a.fontSize),
4295
- [vars$18.fontWeight]: useVar$1(vars$1a.fontWeight),
4296
- [vars$18.fontFamily]: useVar$1(vars$1a.fontFamily),
4364
+ [vars$19.fontSize]: useVar$1(vars$1b.fontSize),
4365
+ [vars$19.fontWeight]: useVar$1(vars$1b.fontWeight),
4366
+ [vars$19.fontFamily]: useVar$1(vars$1b.fontFamily),
4297
4367
 
4298
- [vars$18.linkColor]: useVar$1(vars$19.textColor),
4299
- [vars$18.linkTextDecoration]: 'none',
4300
- [vars$18.linkHoverTextDecoration]: 'underline',
4368
+ [vars$19.linkColor]: useVar$1(vars$1a.textColor),
4369
+ [vars$19.linkTextDecoration]: 'none',
4370
+ [vars$19.linkHoverTextDecoration]: 'underline',
4301
4371
 
4302
- [vars$18.fontWeightBold]: '900',
4303
- [vars$18.minWidth]: '0.25em',
4304
- [vars$18.minHeight]: '1.35em',
4372
+ [vars$19.fontWeightBold]: '900',
4373
+ [vars$19.minWidth]: '0.25em',
4374
+ [vars$19.minHeight]: '1.35em',
4305
4375
 
4306
- [vars$18.hostDisplay]: 'inline-block',
4376
+ [vars$19.hostDisplay]: 'inline-block',
4307
4377
 
4308
4378
  _empty: {
4309
4379
  _hideWhenEmpty: {
4310
- [vars$18.hostDisplay]: 'none',
4380
+ [vars$19.hostDisplay]: 'none',
4311
4381
  },
4312
4382
  },
4313
4383
  };
@@ -4315,10 +4385,10 @@ const enrichedText = {
4315
4385
  var enrichedText$1 = /*#__PURE__*/Object.freeze({
4316
4386
  __proto__: null,
4317
4387
  default: enrichedText,
4318
- vars: vars$18
4388
+ vars: vars$19
4319
4389
  });
4320
4390
 
4321
- const componentName$1n = getComponentName('combo-box');
4391
+ const componentName$1o = getComponentName('combo-box');
4322
4392
 
4323
4393
  const ComboBoxMixin = (superclass) =>
4324
4394
  class ComboBoxMixinClass extends superclass {
@@ -4705,7 +4775,7 @@ const ComboBoxMixin = (superclass) =>
4705
4775
  };
4706
4776
 
4707
4777
  const {
4708
- host: host$B,
4778
+ host: host$C,
4709
4779
  inputField: inputField$6,
4710
4780
  inputElement: inputElement$3,
4711
4781
  placeholder: placeholder$3,
@@ -4737,10 +4807,10 @@ const {
4737
4807
  const ComboBoxClass = compose(
4738
4808
  createStyleMixin$1({
4739
4809
  mappings: {
4740
- hostWidth: { ...host$B, property: 'width' },
4741
- hostDirection: { ...host$B, property: 'direction' },
4810
+ hostWidth: { ...host$C, property: 'width' },
4811
+ hostDirection: { ...host$C, property: 'direction' },
4742
4812
  // we apply font-size also on the host so we can set its width with em
4743
- fontSize: [{}, host$B],
4813
+ fontSize: [{}, host$C],
4744
4814
  fontFamily: [label$9, placeholder$3, inputField$6, helperText$a, errorMessage$d],
4745
4815
  labelFontSize: { ...label$9, property: 'font-size' },
4746
4816
  labelFontWeight: { ...label$9, property: 'font-weight' },
@@ -5015,12 +5085,12 @@ const ComboBoxClass = compose(
5015
5085
  'loading',
5016
5086
  'style',
5017
5087
  ],
5018
- componentName: componentName$1n,
5088
+ componentName: componentName$1o,
5019
5089
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
5020
5090
  }),
5021
5091
  );
5022
5092
 
5023
- const componentName$1m = getComponentName('input-wrapper');
5093
+ const componentName$1n = getComponentName('input-wrapper');
5024
5094
  const globalRefs$G = getThemeRefs$1(globals);
5025
5095
 
5026
5096
  const [theme$2, refs$1] = createHelperVars$1(
@@ -5150,120 +5220,120 @@ const [theme$2, refs$1] = createHelperVars$1(
5150
5220
  inputTextSecurity: 'disc',
5151
5221
  },
5152
5222
  },
5153
- componentName$1m,
5223
+ componentName$1n,
5154
5224
  );
5155
5225
 
5156
5226
  const globalRefs$F = getThemeRefs$1(globals);
5157
- const vars$17 = ComboBoxClass.cssVarList;
5158
-
5159
- const comboBox = {
5160
- [vars$17.hostWidth]: refs$1.width,
5161
- [vars$17.hostDirection]: refs$1.direction,
5162
- [vars$17.fontSize]: refs$1.fontSize,
5163
- [vars$17.fontFamily]: refs$1.fontFamily,
5164
- [vars$17.labelFontSize]: refs$1.labelFontSize,
5165
- [vars$17.labelFontWeight]: refs$1.labelFontWeight,
5166
- [vars$17.inputValueFontWeight]: refs$1.inputValueFontWeight,
5167
- [vars$17.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
5168
- [vars$17.helperTextFontWeight]: refs$1.helperTextFontWeight,
5169
- [vars$17.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
5170
- [vars$17.labelTextColor]: refs$1.labelTextColor,
5171
- [vars$17.errorMessageTextColor]: refs$1.errorMessageTextColor,
5172
- [vars$17.inputBorderColor]: refs$1.borderColor,
5173
- [vars$17.inputBorderWidth]: refs$1.borderWidth,
5174
- [vars$17.inputBorderStyle]: refs$1.borderStyle,
5175
- [vars$17.inputBorderRadius]: refs$1.borderRadius,
5176
- [vars$17.inputOutlineColor]: refs$1.outlineColor,
5177
- [vars$17.inputOutlineOffset]: refs$1.outlineOffset,
5178
- [vars$17.inputOutlineWidth]: refs$1.outlineWidth,
5179
- [vars$17.inputOutlineStyle]: refs$1.outlineStyle,
5180
- [vars$17.labelRequiredIndicator]: refs$1.requiredIndicator,
5181
- [vars$17.inputValueTextColor]: refs$1.valueTextColor,
5182
- [vars$17.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
5183
- [vars$17.inputBackgroundColor]: refs$1.backgroundColor,
5184
- [vars$17.inputHorizontalPadding]: refs$1.horizontalPadding,
5185
- [vars$17.inputHeight]: refs$1.inputHeight,
5186
- [vars$17.inputDropdownButtonColor]: globalRefs$F.colors.surface.dark,
5187
- [vars$17.inputDropdownButtonCursor]: 'pointer',
5188
- [vars$17.inputDropdownButtonSize]: refs$1.toggleButtonSize,
5189
- [vars$17.inputDropdownButtonOffset]: globalRefs$F.spacing.xs,
5190
- [vars$17.overlayItemPaddingInlineStart]: globalRefs$F.spacing.xs,
5191
- [vars$17.overlayItemPaddingInlineEnd]: globalRefs$F.spacing.lg,
5192
- [vars$17.labelPosition]: refs$1.labelPosition,
5193
- [vars$17.labelTopPosition]: refs$1.labelTopPosition,
5194
- [vars$17.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
5195
- [vars$17.inputTransformY]: refs$1.inputTransformY,
5196
- [vars$17.inputTransition]: refs$1.inputTransition,
5197
- [vars$17.marginInlineStart]: refs$1.marginInlineStart,
5198
- [vars$17.placeholderOpacity]: refs$1.placeholderOpacity,
5199
- [vars$17.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
5200
- [vars$17.valueInputHeight]: refs$1.valueInputHeight,
5201
- [vars$17.valueInputMarginBottom]: refs$1.valueInputMarginBottom,
5227
+ const vars$18 = ComboBoxClass.cssVarList;
5228
+
5229
+ const comboBox$1 = {
5230
+ [vars$18.hostWidth]: refs$1.width,
5231
+ [vars$18.hostDirection]: refs$1.direction,
5232
+ [vars$18.fontSize]: refs$1.fontSize,
5233
+ [vars$18.fontFamily]: refs$1.fontFamily,
5234
+ [vars$18.labelFontSize]: refs$1.labelFontSize,
5235
+ [vars$18.labelFontWeight]: refs$1.labelFontWeight,
5236
+ [vars$18.inputValueFontWeight]: refs$1.inputValueFontWeight,
5237
+ [vars$18.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
5238
+ [vars$18.helperTextFontWeight]: refs$1.helperTextFontWeight,
5239
+ [vars$18.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
5240
+ [vars$18.labelTextColor]: refs$1.labelTextColor,
5241
+ [vars$18.errorMessageTextColor]: refs$1.errorMessageTextColor,
5242
+ [vars$18.inputBorderColor]: refs$1.borderColor,
5243
+ [vars$18.inputBorderWidth]: refs$1.borderWidth,
5244
+ [vars$18.inputBorderStyle]: refs$1.borderStyle,
5245
+ [vars$18.inputBorderRadius]: refs$1.borderRadius,
5246
+ [vars$18.inputOutlineColor]: refs$1.outlineColor,
5247
+ [vars$18.inputOutlineOffset]: refs$1.outlineOffset,
5248
+ [vars$18.inputOutlineWidth]: refs$1.outlineWidth,
5249
+ [vars$18.inputOutlineStyle]: refs$1.outlineStyle,
5250
+ [vars$18.labelRequiredIndicator]: refs$1.requiredIndicator,
5251
+ [vars$18.inputValueTextColor]: refs$1.valueTextColor,
5252
+ [vars$18.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
5253
+ [vars$18.inputBackgroundColor]: refs$1.backgroundColor,
5254
+ [vars$18.inputHorizontalPadding]: refs$1.horizontalPadding,
5255
+ [vars$18.inputHeight]: refs$1.inputHeight,
5256
+ [vars$18.inputDropdownButtonColor]: globalRefs$F.colors.surface.dark,
5257
+ [vars$18.inputDropdownButtonCursor]: 'pointer',
5258
+ [vars$18.inputDropdownButtonSize]: refs$1.toggleButtonSize,
5259
+ [vars$18.inputDropdownButtonOffset]: globalRefs$F.spacing.xs,
5260
+ [vars$18.overlayItemPaddingInlineStart]: globalRefs$F.spacing.xs,
5261
+ [vars$18.overlayItemPaddingInlineEnd]: globalRefs$F.spacing.lg,
5262
+ [vars$18.labelPosition]: refs$1.labelPosition,
5263
+ [vars$18.labelTopPosition]: refs$1.labelTopPosition,
5264
+ [vars$18.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
5265
+ [vars$18.inputTransformY]: refs$1.inputTransformY,
5266
+ [vars$18.inputTransition]: refs$1.inputTransition,
5267
+ [vars$18.marginInlineStart]: refs$1.marginInlineStart,
5268
+ [vars$18.placeholderOpacity]: refs$1.placeholderOpacity,
5269
+ [vars$18.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
5270
+ [vars$18.valueInputHeight]: refs$1.valueInputHeight,
5271
+ [vars$18.valueInputMarginBottom]: refs$1.valueInputMarginBottom,
5202
5272
 
5203
5273
  // error message icon
5204
- [vars$17.errorMessageIcon]: refs$1.errorMessageIcon,
5205
- [vars$17.errorMessageIconSize]: refs$1.errorMessageIconSize,
5206
- [vars$17.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
5207
- [vars$17.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
5208
- [vars$17.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
5209
- [vars$17.errorMessageFontSize]: refs$1.errorMessageFontSize,
5274
+ [vars$18.errorMessageIcon]: refs$1.errorMessageIcon,
5275
+ [vars$18.errorMessageIconSize]: refs$1.errorMessageIconSize,
5276
+ [vars$18.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
5277
+ [vars$18.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
5278
+ [vars$18.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
5279
+ [vars$18.errorMessageFontSize]: refs$1.errorMessageFontSize,
5210
5280
 
5211
5281
  _readonly: {
5212
- [vars$17.inputDropdownButtonCursor]: 'default',
5282
+ [vars$18.inputDropdownButtonCursor]: 'default',
5213
5283
  },
5214
5284
 
5215
5285
  // Overlay theme exposed via the component:
5216
- [vars$17.overlayFontSize]: refs$1.fontSize,
5217
- [vars$17.overlayFontFamily]: refs$1.fontFamily,
5218
- [vars$17.overlayCursor]: 'pointer',
5219
- [vars$17.overlayItemBoxShadow]: 'none',
5220
- [vars$17.overlayBackground]: refs$1.backgroundColor,
5221
- [vars$17.overlayTextColor]: refs$1.valueTextColor,
5222
- [vars$17.overlayCheckmarkDisplay]: 'initial',
5223
- [vars$17.overlaySelectedItemBackground]: 'initial',
5224
- [vars$17.overlaySelectedItemHoverBackground]:
5286
+ [vars$18.overlayFontSize]: refs$1.fontSize,
5287
+ [vars$18.overlayFontFamily]: refs$1.fontFamily,
5288
+ [vars$18.overlayCursor]: 'pointer',
5289
+ [vars$18.overlayItemBoxShadow]: 'none',
5290
+ [vars$18.overlayBackground]: refs$1.backgroundColor,
5291
+ [vars$18.overlayTextColor]: refs$1.valueTextColor,
5292
+ [vars$18.overlayCheckmarkDisplay]: 'initial',
5293
+ [vars$18.overlaySelectedItemBackground]: 'initial',
5294
+ [vars$18.overlaySelectedItemHoverBackground]:
5225
5295
  globalRefs$F.colors.primary.highlight,
5226
- [vars$17.overlaySelectedItemFocusBackground]:
5296
+ [vars$18.overlaySelectedItemFocusBackground]:
5227
5297
  globalRefs$F.colors.primary.highlight,
5228
- [vars$17.overlayItemHoverBackground]: globalRefs$F.colors.primary.highlight,
5229
- [vars$17.overlayItemFocusBackground]: globalRefs$F.colors.primary.highlight,
5298
+ [vars$18.overlayItemHoverBackground]: globalRefs$F.colors.primary.highlight,
5299
+ [vars$18.overlayItemFocusBackground]: globalRefs$F.colors.primary.highlight,
5230
5300
 
5231
5301
  // Overlay direct theme:
5232
- [vars$17.overlay.margin]: '0',
5302
+ [vars$18.overlay.margin]: '0',
5233
5303
 
5234
- [vars$17.overlay.contentHeight]: '100%',
5235
- [vars$17.overlay.contentOpacity]: '1',
5236
- [vars$17.overlay.scrollerMinHeight]: '1px',
5304
+ [vars$18.overlay.contentHeight]: '100%',
5305
+ [vars$18.overlay.contentOpacity]: '1',
5306
+ [vars$18.overlay.scrollerMinHeight]: '1px',
5237
5307
  _loading: {
5238
- [vars$17.overlay.loaderTop]: '50%',
5239
- [vars$17.overlay.loaderLeft]: '50%',
5240
- [vars$17.overlay.loaderRight]: 'auto',
5308
+ [vars$18.overlay.loaderTop]: '50%',
5309
+ [vars$18.overlay.loaderLeft]: '50%',
5310
+ [vars$18.overlay.loaderRight]: 'auto',
5241
5311
  // Margin has to be negative to center the loader, "transform" can't be used because the animation uses it
5242
5312
  // Margin has to be half of the width/height of the loader to center it
5243
- [vars$17.overlay.loaderMargin]: '-15px 0 0 -15px',
5244
- [vars$17.overlay.loaderWidth]: '30px',
5245
- [vars$17.overlay.loaderHeight]: '30px',
5246
- [vars$17.overlay.loaderBorder]: '2px solid transparent',
5247
- [vars$17.overlay.loaderBorderColor]:
5313
+ [vars$18.overlay.loaderMargin]: '-15px 0 0 -15px',
5314
+ [vars$18.overlay.loaderWidth]: '30px',
5315
+ [vars$18.overlay.loaderHeight]: '30px',
5316
+ [vars$18.overlay.loaderBorder]: '2px solid transparent',
5317
+ [vars$18.overlay.loaderBorderColor]:
5248
5318
  `${globalRefs$F.colors.primary.highlight} ${globalRefs$F.colors.primary.highlight} ${globalRefs$F.colors.primary.main} ${globalRefs$F.colors.primary.main}`,
5249
- [vars$17.overlay.loaderBorderRadius]: '50%',
5250
- [vars$17.overlay.contentHeight]: '100px',
5251
- [vars$17.overlay.scrollerMinHeight]: '100px',
5252
- [vars$17.overlay.contentOpacity]: '0',
5319
+ [vars$18.overlay.loaderBorderRadius]: '50%',
5320
+ [vars$18.overlay.contentHeight]: '100px',
5321
+ [vars$18.overlay.scrollerMinHeight]: '100px',
5322
+ [vars$18.overlay.contentOpacity]: '0',
5253
5323
  },
5254
5324
  };
5255
5325
 
5256
- var comboBox$1 = /*#__PURE__*/Object.freeze({
5326
+ var comboBox$2 = /*#__PURE__*/Object.freeze({
5257
5327
  __proto__: null,
5258
- comboBox: comboBox,
5259
- default: comboBox,
5260
- vars: vars$17
5328
+ comboBox: comboBox$1,
5329
+ default: comboBox$1,
5330
+ vars: vars$18
5261
5331
  });
5262
5332
 
5263
- const componentName$1l = getComponentName('badge');
5333
+ const componentName$1m = getComponentName('badge');
5264
5334
 
5265
5335
  class RawBadge extends createBaseClass$1({
5266
- componentName: componentName$1l,
5336
+ componentName: componentName$1m,
5267
5337
  baseSelector: ':host > div',
5268
5338
  }) {
5269
5339
  static get observedAttributes() {
@@ -5359,46 +5429,46 @@ const [helperTheme$6, helperRefs$6] = createHelperVars$1(
5359
5429
  {
5360
5430
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
5361
5431
  },
5362
- componentName$1l,
5432
+ componentName$1m,
5363
5433
  );
5364
5434
 
5365
5435
  const { shadowColor: shadowColor$8 } = helperRefs$6;
5366
5436
 
5367
- const vars$16 = BadgeClass.cssVarList;
5437
+ const vars$17 = BadgeClass.cssVarList;
5368
5438
 
5369
5439
  const badge$2 = {
5370
5440
  ...helperTheme$6,
5371
5441
 
5372
- [vars$16.hostWidth]: 'fit-content',
5373
- [vars$16.hostDirection]: globalRefs$E.direction,
5442
+ [vars$17.hostWidth]: 'fit-content',
5443
+ [vars$17.hostDirection]: globalRefs$E.direction,
5374
5444
 
5375
- [vars$16.textAlign]: 'center',
5445
+ [vars$17.textAlign]: 'center',
5376
5446
 
5377
- [vars$16.fontFamily]: globalRefs$E.fonts.font1.family,
5378
- [vars$16.fontWeight]: '400',
5447
+ [vars$17.fontFamily]: globalRefs$E.fonts.font1.family,
5448
+ [vars$17.fontWeight]: '400',
5379
5449
 
5380
- [vars$16.verticalPadding]: '0.25em',
5381
- [vars$16.horizontalPadding]: '0.5em',
5450
+ [vars$17.verticalPadding]: '0.25em',
5451
+ [vars$17.horizontalPadding]: '0.5em',
5382
5452
 
5383
- [vars$16.borderWidth]: globalRefs$E.border.xs,
5384
- [vars$16.borderRadius]: globalRefs$E.radius.xs,
5385
- [vars$16.borderColor]: 'transparent',
5386
- [vars$16.borderStyle]: 'solid',
5453
+ [vars$17.borderWidth]: globalRefs$E.border.xs,
5454
+ [vars$17.borderRadius]: globalRefs$E.radius.xs,
5455
+ [vars$17.borderColor]: 'transparent',
5456
+ [vars$17.borderStyle]: 'solid',
5387
5457
 
5388
5458
  _fullWidth: {
5389
- [vars$16.hostWidth]: '100%',
5459
+ [vars$17.hostWidth]: '100%',
5390
5460
  },
5391
5461
 
5392
5462
  size: {
5393
- xs: { [vars$16.fontSize]: '12px' },
5394
- sm: { [vars$16.fontSize]: '14px' },
5395
- md: { [vars$16.fontSize]: '16px' },
5396
- lg: { [vars$16.fontSize]: '18px' },
5463
+ xs: { [vars$17.fontSize]: '12px' },
5464
+ sm: { [vars$17.fontSize]: '14px' },
5465
+ md: { [vars$17.fontSize]: '16px' },
5466
+ lg: { [vars$17.fontSize]: '18px' },
5397
5467
  },
5398
5468
 
5399
5469
  variant: {
5400
5470
  contained: {
5401
- [vars$16.backgroundColor]: globalRefs$E.colors.surface.main,
5471
+ [vars$17.backgroundColor]: globalRefs$E.colors.surface.main,
5402
5472
  },
5403
5473
  },
5404
5474
 
@@ -5417,58 +5487,58 @@ const badge$2 = {
5417
5487
  // },
5418
5488
 
5419
5489
  _shrinkToIndicator: {
5420
- [vars$16.hostWidth]: '13px',
5421
- [vars$16.hostHeight]: '13px',
5422
- [vars$16.borderRadius]: '50%',
5423
- [vars$16.fontSize]: '0',
5424
- [vars$16.textIndent]: '-9999px',
5490
+ [vars$17.hostWidth]: '13px',
5491
+ [vars$17.hostHeight]: '13px',
5492
+ [vars$17.borderRadius]: '50%',
5493
+ [vars$17.fontSize]: '0',
5494
+ [vars$17.textIndent]: '-9999px',
5425
5495
  },
5426
5496
 
5427
5497
  mode: {
5428
5498
  default: {
5429
- [vars$16.textColor]: globalRefs$E.colors.surface.dark,
5499
+ [vars$17.textColor]: globalRefs$E.colors.surface.dark,
5430
5500
  _bordered: {
5431
- [vars$16.borderColor]: globalRefs$E.colors.surface.light,
5501
+ [vars$17.borderColor]: globalRefs$E.colors.surface.light,
5432
5502
  },
5433
5503
  },
5434
5504
  primary: {
5435
- [vars$16.textColor]: globalRefs$E.colors.primary.main,
5505
+ [vars$17.textColor]: globalRefs$E.colors.primary.main,
5436
5506
  _bordered: {
5437
- [vars$16.borderColor]: globalRefs$E.colors.primary.light,
5507
+ [vars$17.borderColor]: globalRefs$E.colors.primary.light,
5438
5508
  },
5439
5509
  },
5440
5510
  secondary: {
5441
- [vars$16.textColor]: globalRefs$E.colors.secondary.main,
5511
+ [vars$17.textColor]: globalRefs$E.colors.secondary.main,
5442
5512
  _bordered: {
5443
- [vars$16.borderColor]: globalRefs$E.colors.secondary.light,
5513
+ [vars$17.borderColor]: globalRefs$E.colors.secondary.light,
5444
5514
  },
5445
5515
  },
5446
5516
  error: {
5447
- [vars$16.textColor]: globalRefs$E.colors.error.main,
5517
+ [vars$17.textColor]: globalRefs$E.colors.error.main,
5448
5518
  _bordered: {
5449
- [vars$16.borderColor]: globalRefs$E.colors.error.light,
5519
+ [vars$17.borderColor]: globalRefs$E.colors.error.light,
5450
5520
  },
5451
5521
  },
5452
5522
  success: {
5453
- [vars$16.textColor]: globalRefs$E.colors.success.main,
5523
+ [vars$17.textColor]: globalRefs$E.colors.success.main,
5454
5524
  _bordered: {
5455
- [vars$16.borderColor]: globalRefs$E.colors.success.light,
5525
+ [vars$17.borderColor]: globalRefs$E.colors.success.light,
5456
5526
  },
5457
5527
  },
5458
5528
  },
5459
5529
 
5460
5530
  shadow: {
5461
5531
  sm: {
5462
- [vars$16.boxShadow]: `${globalRefs$E.shadow.wide.sm} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.sm} ${shadowColor$8}`,
5532
+ [vars$17.boxShadow]: `${globalRefs$E.shadow.wide.sm} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.sm} ${shadowColor$8}`,
5463
5533
  },
5464
5534
  md: {
5465
- [vars$16.boxShadow]: `${globalRefs$E.shadow.wide.md} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.md} ${shadowColor$8}`,
5535
+ [vars$17.boxShadow]: `${globalRefs$E.shadow.wide.md} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.md} ${shadowColor$8}`,
5466
5536
  },
5467
5537
  lg: {
5468
- [vars$16.boxShadow]: `${globalRefs$E.shadow.wide.lg} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.lg} ${shadowColor$8}`,
5538
+ [vars$17.boxShadow]: `${globalRefs$E.shadow.wide.lg} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.lg} ${shadowColor$8}`,
5469
5539
  },
5470
5540
  xl: {
5471
- [vars$16.boxShadow]: `${globalRefs$E.shadow.wide.xl} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.xl} ${shadowColor$8}`,
5541
+ [vars$17.boxShadow]: `${globalRefs$E.shadow.wide.xl} ${shadowColor$8}, ${globalRefs$E.shadow.narrow.xl} ${shadowColor$8}`,
5472
5542
  },
5473
5543
  },
5474
5544
  };
@@ -5476,12 +5546,12 @@ const badge$2 = {
5476
5546
  var badge$3 = /*#__PURE__*/Object.freeze({
5477
5547
  __proto__: null,
5478
5548
  default: badge$2,
5479
- vars: vars$16
5549
+ vars: vars$17
5480
5550
  });
5481
5551
 
5482
- const componentName$1k = getComponentName('avatar');
5552
+ const componentName$1l = getComponentName('avatar');
5483
5553
  class RawAvatar extends createBaseClass$1({
5484
- componentName: componentName$1k,
5554
+ componentName: componentName$1l,
5485
5555
  baseSelector: ':host > .wrapper',
5486
5556
  }) {
5487
5557
  constructor() {
@@ -5559,7 +5629,7 @@ class RawAvatar extends createBaseClass$1({
5559
5629
  }
5560
5630
  }
5561
5631
 
5562
- const { host: host$A, editableBadge, avatar: avatar$2 } = {
5632
+ const { host: host$B, editableBadge, avatar: avatar$2 } = {
5563
5633
  host: { selector: () => ':host' },
5564
5634
  editableBadge: { selector: '> .editableBadge' },
5565
5635
  avatar: { selector: 'vaadin-avatar' },
@@ -5569,12 +5639,12 @@ const AvatarClass = compose(
5569
5639
  createStyleMixin$1({
5570
5640
  mappings: {
5571
5641
  hostWidth: [
5572
- { ...host$A, property: 'width' },
5573
- { ...host$A, property: 'min-width' },
5642
+ { ...host$B, property: 'width' },
5643
+ { ...host$B, property: 'min-width' },
5574
5644
  ],
5575
- hostHeight: { ...host$A, property: 'height' },
5576
- cursor: [avatar$2, host$A],
5577
- hostDirection: { ...host$A, property: 'direction' },
5645
+ hostHeight: { ...host$B, property: 'height' },
5646
+ cursor: [avatar$2, host$B],
5647
+ hostDirection: { ...host$B, property: 'direction' },
5578
5648
  avatarTextColor: { ...avatar$2, property: 'color' },
5579
5649
  avatarBackgroundColor: { ...avatar$2, property: 'background-color' },
5580
5650
  editableIconColor: { ...editableBadge, property: 'color' },
@@ -5632,39 +5702,39 @@ const avatar = {
5632
5702
  },
5633
5703
  };
5634
5704
 
5635
- const vars$15 = {
5705
+ const vars$16 = {
5636
5706
  ...compVars$8,
5637
5707
  };
5638
5708
 
5639
5709
  var avatar$1 = /*#__PURE__*/Object.freeze({
5640
5710
  __proto__: null,
5641
5711
  default: avatar,
5642
- vars: vars$15
5712
+ vars: vars$16
5643
5713
  });
5644
5714
 
5645
- const vars$14 = IconClass.cssVarList;
5715
+ const vars$15 = IconClass.cssVarList;
5646
5716
 
5647
5717
  const icon$3 = {};
5648
5718
 
5649
5719
  var icon$4 = /*#__PURE__*/Object.freeze({
5650
5720
  __proto__: null,
5651
5721
  default: icon$3,
5652
- vars: vars$14
5722
+ vars: vars$15
5653
5723
  });
5654
5724
 
5655
- const vars$13 = ImageClass.cssVarList;
5725
+ const vars$14 = ImageClass.cssVarList;
5656
5726
 
5657
5727
  const image = {};
5658
5728
 
5659
5729
  var image$1 = /*#__PURE__*/Object.freeze({
5660
5730
  __proto__: null,
5661
5731
  default: image,
5662
- vars: vars$13
5732
+ vars: vars$14
5663
5733
  });
5664
5734
 
5665
- const componentName$1j = getComponentName('list-item');
5735
+ const componentName$1k = getComponentName('list-item');
5666
5736
 
5667
- const customMixin$f = (superclass) =>
5737
+ const customMixin$g = (superclass) =>
5668
5738
  class ListItemMixinClass extends superclass {
5669
5739
  constructor() {
5670
5740
  super();
@@ -5717,14 +5787,14 @@ const ListItemClass = compose(
5717
5787
  }),
5718
5788
  draggableMixin$1,
5719
5789
  componentNameValidationMixin$1,
5720
- customMixin$f,
5790
+ customMixin$g,
5721
5791
  activeableMixin,
5722
- )(createBaseClass$1({ componentName: componentName$1j, baseSelector: 'slot' }));
5792
+ )(createBaseClass$1({ componentName: componentName$1k, baseSelector: 'slot' }));
5723
5793
 
5724
- const componentName$1i = getComponentName('list');
5794
+ const componentName$1j = getComponentName('list');
5725
5795
 
5726
5796
  class RawList extends createBaseClass$1({
5727
- componentName: componentName$1i,
5797
+ componentName: componentName$1j,
5728
5798
  baseSelector: '.wrapper',
5729
5799
  }) {
5730
5800
  static get observedAttributes() {
@@ -5906,7 +5976,7 @@ const ListClass = compose(
5906
5976
  componentNameValidationMixin$1,
5907
5977
  )(RawList);
5908
5978
 
5909
- const componentName$1h = getComponentName('apps-list');
5979
+ const componentName$1i = getComponentName('apps-list');
5910
5980
 
5911
5981
  const itemRenderer$6 = ({ name, icon, url }, _, ref) => `
5912
5982
  <a ${url ? `href="${url}" title="${url}"` : ''} ${ref.openInSameWindow ? '' : 'target="_blank"'}>
@@ -5926,7 +5996,7 @@ const itemRenderer$6 = ({ name, icon, url }, _, ref) => `
5926
5996
  </a>
5927
5997
  `;
5928
5998
 
5929
- const customMixin$e = (superclass) =>
5999
+ const customMixin$f = (superclass) =>
5930
6000
  class AppsListMixinClass extends superclass {
5931
6001
  // size controls both item logo size and font size
5932
6002
  get size() {
@@ -6032,13 +6102,13 @@ const AppsListClass = compose(
6032
6102
  }),
6033
6103
  draggableMixin$1,
6034
6104
  componentNameValidationMixin$1,
6035
- customMixin$e,
6105
+ customMixin$f,
6036
6106
  )(
6037
6107
  createProxy$1({
6038
6108
  slots: ['empty-state'],
6039
6109
  wrappedEleName: 'descope-list',
6040
6110
  excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
6041
- componentName: componentName$1h,
6111
+ componentName: componentName$1i,
6042
6112
  style: () => `
6043
6113
  :host {
6044
6114
  width: 100%;
@@ -6073,60 +6143,60 @@ const AppsListClass = compose(
6073
6143
  }),
6074
6144
  );
6075
6145
 
6076
- const vars$12 = AppsListClass.cssVarList;
6146
+ const vars$13 = AppsListClass.cssVarList;
6077
6147
  const globalRefs$C = getThemeRefs$1(globals);
6078
6148
 
6079
6149
  const defaultHeight = '400px';
6080
6150
 
6081
6151
  const appsList = {
6082
- [vars$12.itemsTextAlign]: 'start',
6083
- [vars$12.hostDirection]: globalRefs$C.direction,
6084
- [vars$12.maxHeight]: defaultHeight,
6085
- [vars$12.itemHoverBackgroundColor]: globalRefs$C.colors.surface.highlight,
6152
+ [vars$13.itemsTextAlign]: 'start',
6153
+ [vars$13.hostDirection]: globalRefs$C.direction,
6154
+ [vars$13.maxHeight]: defaultHeight,
6155
+ [vars$13.itemHoverBackgroundColor]: globalRefs$C.colors.surface.highlight,
6086
6156
 
6087
6157
  _empty: {
6088
- [vars$12.minHeight]: defaultHeight,
6158
+ [vars$13.minHeight]: defaultHeight,
6089
6159
  },
6090
6160
 
6091
6161
  size: {
6092
6162
  xs: {
6093
- [vars$12.itemsFontSize]: '14px',
6094
- [vars$12.itemsFontWeight]: 'normal',
6163
+ [vars$13.itemsFontSize]: '14px',
6164
+ [vars$13.itemsFontWeight]: 'normal',
6095
6165
  },
6096
6166
  sm: {
6097
- [vars$12.itemsFontSize]: '14px',
6098
- [vars$12.itemsFontWeight]: 'normal',
6167
+ [vars$13.itemsFontSize]: '14px',
6168
+ [vars$13.itemsFontWeight]: 'normal',
6099
6169
  },
6100
6170
  md: {
6101
- [vars$12.itemsFontSize]: '16px',
6102
- [vars$12.itemsFontWeight]: 'normal',
6171
+ [vars$13.itemsFontSize]: '16px',
6172
+ [vars$13.itemsFontWeight]: 'normal',
6103
6173
  },
6104
6174
  lg: {
6105
- [vars$12.itemsFontSize]: '20px',
6106
- [vars$12.itemsFontWeight]: 'normal',
6175
+ [vars$13.itemsFontSize]: '20px',
6176
+ [vars$13.itemsFontWeight]: 'normal',
6107
6177
  },
6108
6178
  },
6109
6179
 
6110
6180
  itemPadding: {
6111
6181
  xs: {
6112
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.xs,
6113
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.xs,
6182
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.xs,
6183
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.xs,
6114
6184
  },
6115
6185
  sm: {
6116
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.sm,
6117
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.sm,
6186
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.sm,
6187
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.sm,
6118
6188
  },
6119
6189
  md: {
6120
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.md,
6121
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.md,
6190
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.md,
6191
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.md,
6122
6192
  },
6123
6193
  lg: {
6124
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.lg,
6125
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.lg,
6194
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.lg,
6195
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.lg,
6126
6196
  },
6127
6197
  xl: {
6128
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.xl,
6129
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.xl,
6198
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.xl,
6199
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.xl,
6130
6200
  },
6131
6201
  },
6132
6202
  };
@@ -6134,7 +6204,7 @@ const appsList = {
6134
6204
  var appsList$1 = /*#__PURE__*/Object.freeze({
6135
6205
  __proto__: null,
6136
6206
  default: appsList,
6137
- vars: vars$12
6207
+ vars: vars$13
6138
6208
  });
6139
6209
 
6140
6210
  const globalRefs$B = getThemeRefs$1(globals);
@@ -6143,7 +6213,7 @@ const compVars$7 = ListClass.cssVarList;
6143
6213
 
6144
6214
  const [helperTheme$5, helperRefs$5, helperVars$5] = createHelperVars$1(
6145
6215
  { shadowColor: '#00000020' },
6146
- componentName$1i,
6216
+ componentName$1j,
6147
6217
  );
6148
6218
 
6149
6219
  const { shadowColor: shadowColor$7 } = helperRefs$5;
@@ -6204,7 +6274,7 @@ const list = {
6204
6274
  },
6205
6275
  };
6206
6276
 
6207
- const vars$11 = {
6277
+ const vars$12 = {
6208
6278
  ...compVars$7,
6209
6279
  ...helperVars$5,
6210
6280
  };
@@ -6212,53 +6282,53 @@ const vars$11 = {
6212
6282
  var list$1 = /*#__PURE__*/Object.freeze({
6213
6283
  __proto__: null,
6214
6284
  default: list,
6215
- vars: vars$11
6285
+ vars: vars$12
6216
6286
  });
6217
6287
 
6218
6288
  const globalRefs$A = getThemeRefs$1(globals);
6219
6289
 
6220
- const vars$10 = ListItemClass.cssVarList;
6290
+ const vars$11 = ListItemClass.cssVarList;
6221
6291
 
6222
6292
  const listItem = {
6223
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.main,
6224
- [vars$10.verticalPadding]: globalRefs$A.spacing.lg,
6225
- [vars$10.horizontalPadding]: globalRefs$A.spacing.lg,
6226
- [vars$10.gap]: globalRefs$A.spacing.md,
6227
- [vars$10.borderStyle]: 'solid',
6228
- [vars$10.borderWidth]: globalRefs$A.border.xs,
6229
- [vars$10.borderColor]: globalRefs$A.colors.surface.main,
6230
- [vars$10.borderRadius]: globalRefs$A.radius.sm,
6231
- [vars$10.cursor]: 'pointer',
6232
- [vars$10.alignItems]: 'center',
6233
- [vars$10.flexDirection]: 'row',
6234
- [vars$10.transition]: 'border-color 0.2s, background-color 0.2s',
6293
+ [vars$11.backgroundColor]: globalRefs$A.colors.surface.main,
6294
+ [vars$11.verticalPadding]: globalRefs$A.spacing.lg,
6295
+ [vars$11.horizontalPadding]: globalRefs$A.spacing.lg,
6296
+ [vars$11.gap]: globalRefs$A.spacing.md,
6297
+ [vars$11.borderStyle]: 'solid',
6298
+ [vars$11.borderWidth]: globalRefs$A.border.xs,
6299
+ [vars$11.borderColor]: globalRefs$A.colors.surface.main,
6300
+ [vars$11.borderRadius]: globalRefs$A.radius.sm,
6301
+ [vars$11.cursor]: 'pointer',
6302
+ [vars$11.alignItems]: 'center',
6303
+ [vars$11.flexDirection]: 'row',
6304
+ [vars$11.transition]: 'border-color 0.2s, background-color 0.2s',
6235
6305
 
6236
6306
  variant: {
6237
6307
  tile: {
6238
- [vars$10.alignItems]: 'flex-start',
6239
- [vars$10.flexDirection]: 'column',
6240
- [vars$10.borderColor]: globalRefs$A.colors.surface.light,
6308
+ [vars$11.alignItems]: 'flex-start',
6309
+ [vars$11.flexDirection]: 'column',
6310
+ [vars$11.borderColor]: globalRefs$A.colors.surface.light,
6241
6311
  },
6242
6312
  },
6243
6313
 
6244
6314
  _hover: {
6245
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.highlight,
6315
+ [vars$11.backgroundColor]: globalRefs$A.colors.surface.highlight,
6246
6316
  },
6247
6317
 
6248
6318
  _active: {
6249
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.main,
6250
- [vars$10.borderColor]: globalRefs$A.colors.primary.light,
6251
- [vars$10.outline]: `1px solid ${globalRefs$A.colors.primary.light}`,
6319
+ [vars$11.backgroundColor]: globalRefs$A.colors.surface.main,
6320
+ [vars$11.borderColor]: globalRefs$A.colors.primary.light,
6321
+ [vars$11.outline]: `1px solid ${globalRefs$A.colors.primary.light}`,
6252
6322
  },
6253
6323
  };
6254
6324
 
6255
6325
  var listItem$1 = /*#__PURE__*/Object.freeze({
6256
6326
  __proto__: null,
6257
6327
  default: listItem,
6258
- vars: vars$10
6328
+ vars: vars$11
6259
6329
  });
6260
6330
 
6261
- const componentName$1g = getComponentName('multi-select-combo-box');
6331
+ const componentName$1h = getComponentName('multi-select-combo-box');
6262
6332
 
6263
6333
  const multiSelectComboBoxMixin = (superclass) =>
6264
6334
  class MultiSelectComboBoxMixinClass extends superclass {
@@ -6366,9 +6436,35 @@ const multiSelectComboBoxMixin = (superclass) =>
6366
6436
  );
6367
6437
  }
6368
6438
 
6439
+ // Whether `data` is what this combo box builds its items from. Items can instead be given as
6440
+ // light DOM children (see the observeChildren call in init), and those are the consumer's to
6441
+ // manage - so an absent, empty or unparseable `data` attribute means "not my items".
6442
+ #hasDataSource() {
6443
+ if (this.#data) return true;
6444
+
6445
+ const dataAttr = this.getAttribute('data');
6446
+ if (!dataAttr) return false;
6447
+
6448
+ try {
6449
+ return Array.isArray(JSON.parse(dataAttr));
6450
+ } catch {
6451
+ // Already reported by the `data` getter, and a broken attribute is no reason to throw
6452
+ // away items that are on screen.
6453
+ return false;
6454
+ }
6455
+ }
6456
+
6369
6457
  renderItems() {
6370
6458
  const template = this.getItemsTemplate();
6371
- if (template) this.innerHTML = template;
6459
+ if (template) {
6460
+ this.innerHTML = template;
6461
+ return;
6462
+ }
6463
+
6464
+ // An empty list has to empty the dropdown. Without this the previous items stayed on screen
6465
+ // after the data said there were none, so a picker refreshed with nothing left would still
6466
+ // offer the old rows.
6467
+ if (this.#hasDataSource()) this.innerHTML = '';
6372
6468
  }
6373
6469
 
6374
6470
  updateSelectedItems() {
@@ -6637,7 +6733,7 @@ const multiSelectComboBoxMixin = (superclass) =>
6637
6733
  };
6638
6734
 
6639
6735
  const {
6640
- host: host$z,
6736
+ host: host$A,
6641
6737
  inputField: inputField$5,
6642
6738
  inputElement: inputElement$2,
6643
6739
  placeholder: placeholder$2,
@@ -6677,9 +6773,9 @@ const {
6677
6773
  const MultiSelectComboBoxClass = compose(
6678
6774
  createStyleMixin$1({
6679
6775
  mappings: {
6680
- hostWidth: { ...host$z, property: 'width' },
6681
- hostDirection: { ...host$z, property: 'direction' },
6682
- fontSize: [{}, host$z],
6776
+ hostWidth: { ...host$A, property: 'width' },
6777
+ hostDirection: { ...host$A, property: 'direction' },
6778
+ fontSize: [{}, host$A],
6683
6779
  chipFontSize: { ...chipLabel, property: 'font-size' },
6684
6780
  fontFamily: [
6685
6781
  label$8,
@@ -6921,13 +7017,13 @@ const MultiSelectComboBoxClass = compose(
6921
7017
 
6922
7018
  `,
6923
7019
  excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],
6924
- componentName: componentName$1g,
7020
+ componentName: componentName$1h,
6925
7021
  includeForwardProps: ['items', 'renderer', 'selectedItems'],
6926
7022
  }),
6927
7023
  );
6928
7024
 
6929
- const componentName$1f = getComponentName('multi-line-mappings');
6930
- const BaseClass$9 = createBaseClass$1({ componentName: componentName$1f });
7025
+ const componentName$1g = getComponentName('multi-line-mappings');
7026
+ const BaseClass$9 = createBaseClass$1({ componentName: componentName$1g });
6931
7027
 
6932
7028
  const parseJSON = (value, fallback, source = 'unknown') => {
6933
7029
  if (typeof value !== 'string' || !value?.trim()) {
@@ -7634,7 +7730,7 @@ class RawMultiLineMappingsClass extends BaseClass$9 {
7634
7730
  }
7635
7731
  }
7636
7732
 
7637
- const host$y = { selector: () => ':host' };
7733
+ const host$z = { selector: () => ':host' };
7638
7734
  const rows = { selector: '.rows' };
7639
7735
  const row = { selector: '.row' };
7640
7736
  const addAction = { selector: '.add-action' };
@@ -7642,9 +7738,9 @@ const addAction = { selector: '.add-action' };
7642
7738
  const MultiLineMappingsClass = compose(
7643
7739
  createStyleMixin$1({
7644
7740
  mappings: {
7645
- hostWidth: { ...host$y, property: 'width' },
7741
+ hostWidth: { ...host$z, property: 'width' },
7646
7742
  hostDirection: [
7647
- { ...host$y, property: 'direction' },
7743
+ { ...host$z, property: 'direction' },
7648
7744
  {
7649
7745
  selector: MultiSelectComboBoxClass.componentName,
7650
7746
  property: MultiSelectComboBoxClass.cssVarList.hostDirection,
@@ -7665,128 +7761,128 @@ const MultiLineMappingsClass = compose(
7665
7761
  draggableMixin$1,
7666
7762
  )(RawMultiLineMappingsClass);
7667
7763
 
7668
- const vars$$ = MultiLineMappingsClass.cssVarList;
7764
+ const vars$10 = MultiLineMappingsClass.cssVarList;
7669
7765
 
7670
7766
  const multiLineMappings = {
7671
- [vars$$.hostDirection]: refs$1.direction,
7767
+ [vars$10.hostDirection]: refs$1.direction,
7672
7768
 
7673
- [vars$$.rowsGap]: globals.spacing.sm,
7674
- [vars$$.rowGap]: globals.spacing.sm,
7675
- [vars$$.rowAlignItems]: 'flex-end',
7676
- [vars$$.rowWrap]: 'nowrap',
7769
+ [vars$10.rowsGap]: globals.spacing.sm,
7770
+ [vars$10.rowGap]: globals.spacing.sm,
7771
+ [vars$10.rowAlignItems]: 'flex-end',
7772
+ [vars$10.rowWrap]: 'nowrap',
7677
7773
 
7678
- [vars$$.addActionJustifyContent]: 'flex-start',
7679
- [vars$$.addActionMarginTop]: globals.spacing.xs,
7774
+ [vars$10.addActionJustifyContent]: 'flex-start',
7775
+ [vars$10.addActionMarginTop]: globals.spacing.xs,
7680
7776
 
7681
7777
  _fullWidth: {
7682
- [vars$$.hostWidth]: '100%',
7778
+ [vars$10.hostWidth]: '100%',
7683
7779
  },
7684
7780
  };
7685
7781
 
7686
7782
  var multiLineMappings$1 = /*#__PURE__*/Object.freeze({
7687
7783
  __proto__: null,
7688
7784
  default: multiLineMappings,
7689
- vars: vars$$
7785
+ vars: vars$10
7690
7786
  });
7691
7787
 
7692
7788
  const globalRefs$z = getThemeRefs$1(globals);
7693
- const vars$_ = MultiSelectComboBoxClass.cssVarList;
7789
+ const vars$$ = MultiSelectComboBoxClass.cssVarList;
7694
7790
 
7695
7791
  const multiSelectComboBox = {
7696
- [vars$_.hostWidth]: refs$1.width,
7697
- [vars$_.hostDirection]: refs$1.direction,
7698
- [vars$_.fontSize]: refs$1.fontSize,
7699
- [vars$_.fontFamily]: refs$1.fontFamily,
7700
- [vars$_.labelFontSize]: refs$1.labelFontSize,
7701
- [vars$_.labelFontWeight]: refs$1.labelFontWeight,
7702
- [vars$_.inputValueFontWeight]: refs$1.inputValueFontWeight,
7703
- [vars$_.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
7704
- [vars$_.helperTextFontWeight]: refs$1.helperTextFontWeight,
7705
- [vars$_.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
7706
- [vars$_.labelTextColor]: refs$1.labelTextColor,
7707
- [vars$_.errorMessageTextColor]: refs$1.errorMessageTextColor,
7708
- [vars$_.inputBorderColor]: refs$1.borderColor,
7709
- [vars$_.inputBorderWidth]: refs$1.borderWidth,
7710
- [vars$_.inputBorderStyle]: refs$1.borderStyle,
7711
- [vars$_.inputBorderRadius]: refs$1.borderRadius,
7712
- [vars$_.inputOutlineColor]: refs$1.outlineColor,
7713
- [vars$_.inputOutlineOffset]: refs$1.outlineOffset,
7714
- [vars$_.inputOutlineWidth]: refs$1.outlineWidth,
7715
- [vars$_.inputOutlineStyle]: refs$1.outlineStyle,
7716
- [vars$_.labelRequiredIndicator]: refs$1.requiredIndicator,
7717
- [vars$_.inputValueTextColor]: refs$1.valueTextColor,
7718
- [vars$_.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
7719
- [vars$_.inputBackgroundColor]: refs$1.backgroundColor,
7720
- [vars$_.inputHorizontalPadding]: refs$1.horizontalPadding,
7721
- [vars$_.inputVerticalPadding]: refs$1.verticalPadding,
7722
- [vars$_.inputHeight]: refs$1.inputHeight,
7723
- [vars$_.inputDropdownButtonColor]: globalRefs$z.colors.surface.dark,
7724
- [vars$_.inputDropdownButtonCursor]: 'pointer',
7725
- [vars$_.inputDropdownButtonSize]: refs$1.toggleButtonSize,
7726
- [vars$_.inputDropdownButtonOffset]: globalRefs$z.spacing.xs,
7727
- [vars$_.overlayItemPaddingInlineStart]: globalRefs$z.spacing.xs,
7728
- [vars$_.overlayItemPaddingInlineEnd]: globalRefs$z.spacing.lg,
7729
- [vars$_.chipFontSize]: refs$1.chipFontSize,
7730
- [vars$_.chipTextColor]: globalRefs$z.colors.surface.contrast,
7731
- [vars$_.chipBackgroundColor]: globalRefs$z.colors.surface.light,
7732
- [vars$_.labelPosition]: refs$1.labelPosition,
7733
- [vars$_.labelTopPosition]: refs$1.labelTopPosition,
7734
- [vars$_.labelLeftPosition]: refs$1.labelLeftPosition,
7735
- [vars$_.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
7736
- [vars$_.inputTransformY]: refs$1.inputTransformY,
7737
- [vars$_.inputTransition]: refs$1.inputTransition,
7738
- [vars$_.marginInlineStart]: refs$1.marginInlineStart,
7739
- [vars$_.placeholderOpacity]: refs$1.placeholderOpacity,
7740
- [vars$_.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
7741
-
7742
- [vars$_.errorMessageIcon]: refs$1.errorMessageIcon,
7743
- [vars$_.errorMessageIconSize]: refs$1.errorMessageIconSize,
7744
- [vars$_.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
7745
- [vars$_.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
7746
- [vars$_.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
7747
- [vars$_.errorMessageFontSize]: refs$1.errorMessageFontSize,
7792
+ [vars$$.hostWidth]: refs$1.width,
7793
+ [vars$$.hostDirection]: refs$1.direction,
7794
+ [vars$$.fontSize]: refs$1.fontSize,
7795
+ [vars$$.fontFamily]: refs$1.fontFamily,
7796
+ [vars$$.labelFontSize]: refs$1.labelFontSize,
7797
+ [vars$$.labelFontWeight]: refs$1.labelFontWeight,
7798
+ [vars$$.inputValueFontWeight]: refs$1.inputValueFontWeight,
7799
+ [vars$$.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
7800
+ [vars$$.helperTextFontWeight]: refs$1.helperTextFontWeight,
7801
+ [vars$$.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
7802
+ [vars$$.labelTextColor]: refs$1.labelTextColor,
7803
+ [vars$$.errorMessageTextColor]: refs$1.errorMessageTextColor,
7804
+ [vars$$.inputBorderColor]: refs$1.borderColor,
7805
+ [vars$$.inputBorderWidth]: refs$1.borderWidth,
7806
+ [vars$$.inputBorderStyle]: refs$1.borderStyle,
7807
+ [vars$$.inputBorderRadius]: refs$1.borderRadius,
7808
+ [vars$$.inputOutlineColor]: refs$1.outlineColor,
7809
+ [vars$$.inputOutlineOffset]: refs$1.outlineOffset,
7810
+ [vars$$.inputOutlineWidth]: refs$1.outlineWidth,
7811
+ [vars$$.inputOutlineStyle]: refs$1.outlineStyle,
7812
+ [vars$$.labelRequiredIndicator]: refs$1.requiredIndicator,
7813
+ [vars$$.inputValueTextColor]: refs$1.valueTextColor,
7814
+ [vars$$.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
7815
+ [vars$$.inputBackgroundColor]: refs$1.backgroundColor,
7816
+ [vars$$.inputHorizontalPadding]: refs$1.horizontalPadding,
7817
+ [vars$$.inputVerticalPadding]: refs$1.verticalPadding,
7818
+ [vars$$.inputHeight]: refs$1.inputHeight,
7819
+ [vars$$.inputDropdownButtonColor]: globalRefs$z.colors.surface.dark,
7820
+ [vars$$.inputDropdownButtonCursor]: 'pointer',
7821
+ [vars$$.inputDropdownButtonSize]: refs$1.toggleButtonSize,
7822
+ [vars$$.inputDropdownButtonOffset]: globalRefs$z.spacing.xs,
7823
+ [vars$$.overlayItemPaddingInlineStart]: globalRefs$z.spacing.xs,
7824
+ [vars$$.overlayItemPaddingInlineEnd]: globalRefs$z.spacing.lg,
7825
+ [vars$$.chipFontSize]: refs$1.chipFontSize,
7826
+ [vars$$.chipTextColor]: globalRefs$z.colors.surface.contrast,
7827
+ [vars$$.chipBackgroundColor]: globalRefs$z.colors.surface.light,
7828
+ [vars$$.labelPosition]: refs$1.labelPosition,
7829
+ [vars$$.labelTopPosition]: refs$1.labelTopPosition,
7830
+ [vars$$.labelLeftPosition]: refs$1.labelLeftPosition,
7831
+ [vars$$.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
7832
+ [vars$$.inputTransformY]: refs$1.inputTransformY,
7833
+ [vars$$.inputTransition]: refs$1.inputTransition,
7834
+ [vars$$.marginInlineStart]: refs$1.marginInlineStart,
7835
+ [vars$$.placeholderOpacity]: refs$1.placeholderOpacity,
7836
+ [vars$$.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
7837
+
7838
+ [vars$$.errorMessageIcon]: refs$1.errorMessageIcon,
7839
+ [vars$$.errorMessageIconSize]: refs$1.errorMessageIconSize,
7840
+ [vars$$.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
7841
+ [vars$$.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
7842
+ [vars$$.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
7843
+ [vars$$.errorMessageFontSize]: refs$1.errorMessageFontSize,
7748
7844
 
7749
7845
  labelType: {
7750
7846
  floating: {
7751
- [vars$_.inputHorizontalPadding]: '0.25em',
7847
+ [vars$$.inputHorizontalPadding]: '0.25em',
7752
7848
  _hasValue: {
7753
- [vars$_.inputHorizontalPadding]: '0.45em',
7849
+ [vars$$.inputHorizontalPadding]: '0.45em',
7754
7850
  },
7755
7851
  },
7756
7852
  },
7757
7853
 
7758
7854
  _readonly: {
7759
- [vars$_.inputDropdownButtonCursor]: 'default',
7855
+ [vars$$.inputDropdownButtonCursor]: 'default',
7760
7856
  },
7761
7857
 
7762
- [vars$_.overlayFontSize]: refs$1.fontSize,
7763
- [vars$_.overlayFontFamily]: refs$1.fontFamily,
7764
- [vars$_.overlayCursor]: 'pointer',
7765
- [vars$_.overlayItemBoxShadow]: 'none',
7766
- [vars$_.overlayBackground]: refs$1.backgroundColor,
7767
- [vars$_.overlayTextColor]: refs$1.valueTextColor,
7858
+ [vars$$.overlayFontSize]: refs$1.fontSize,
7859
+ [vars$$.overlayFontFamily]: refs$1.fontFamily,
7860
+ [vars$$.overlayCursor]: 'pointer',
7861
+ [vars$$.overlayItemBoxShadow]: 'none',
7862
+ [vars$$.overlayBackground]: refs$1.backgroundColor,
7863
+ [vars$$.overlayTextColor]: refs$1.valueTextColor,
7768
7864
 
7769
- [vars$_.overlay.minHeight]: '400px',
7770
- [vars$_.overlay.margin]: '0',
7865
+ [vars$$.overlay.minHeight]: '400px',
7866
+ [vars$$.overlay.margin]: '0',
7771
7867
  };
7772
7868
 
7773
7869
  var multiSelectComboBox$1 = /*#__PURE__*/Object.freeze({
7774
7870
  __proto__: null,
7775
7871
  default: multiSelectComboBox,
7776
7872
  multiSelectComboBox: multiSelectComboBox,
7777
- vars: vars$_
7873
+ vars: vars$$
7778
7874
  });
7779
7875
 
7780
- const componentName$1e = getComponentName('autocomplete-field-internal');
7876
+ const componentName$1f = getComponentName('autocomplete-field-internal');
7781
7877
 
7782
7878
  createBaseInputClass$1({
7783
- componentName: componentName$1e,
7879
+ componentName: componentName$1f,
7784
7880
  baseSelector: '',
7785
7881
  });
7786
7882
 
7787
- const componentName$1d = getComponentName('autocomplete-field');
7883
+ const componentName$1e = getComponentName('autocomplete-field');
7788
7884
 
7789
- const customMixin$d = (superclass) =>
7885
+ const customMixin$e = (superclass) =>
7790
7886
  class AutocompleteFieldMixinClass extends superclass {
7791
7887
  get defaultValue() {
7792
7888
  return this.getAttribute('default-value');
@@ -7805,15 +7901,15 @@ const customMixin$d = (superclass) =>
7805
7901
  const template = document.createElement('template');
7806
7902
 
7807
7903
  template.innerHTML = `
7808
- <${componentName$1e}
7904
+ <${componentName$1f}
7809
7905
  tabindex="-1"
7810
- ></${componentName$1e}>
7906
+ ></${componentName$1f}>
7811
7907
  `;
7812
7908
 
7813
7909
  this.baseElement.appendChild(template.content.cloneNode(true));
7814
7910
 
7815
7911
  this.inputElement = this.shadowRoot.querySelector(
7816
- componentName$1e,
7912
+ componentName$1f,
7817
7913
  );
7818
7914
 
7819
7915
  forwardAttrs(this, this.inputElement, {
@@ -7853,7 +7949,7 @@ const customMixin$d = (superclass) =>
7853
7949
  }
7854
7950
  };
7855
7951
 
7856
- const { host: host$x } = {
7952
+ const { host: host$y } = {
7857
7953
  host: { selector: () => ':host' },
7858
7954
  };
7859
7955
 
@@ -7863,9 +7959,9 @@ const AutocompleteFieldClass = compose(
7863
7959
  }),
7864
7960
  createStyleMixin$1({
7865
7961
  mappings: {
7866
- hostWidth: { ...host$x, property: 'width' },
7867
- hostDirection: { ...host$x, property: 'direction' },
7868
- fontSize: { ...host$x },
7962
+ hostWidth: { ...host$y, property: 'width' },
7963
+ hostDirection: { ...host$y, property: 'direction' },
7964
+ fontSize: { ...host$y },
7869
7965
  checkmarkDisplay: {
7870
7966
  selector: ComboBoxClass.componentName,
7871
7967
  property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,
@@ -7903,7 +7999,7 @@ const AutocompleteFieldClass = compose(
7903
7999
  proxyParentValidation: true,
7904
8000
  }),
7905
8001
  componentNameValidationMixin$1,
7906
- customMixin$d,
8002
+ customMixin$e,
7907
8003
  )(
7908
8004
  createProxy$1({
7909
8005
  slots: [],
@@ -7932,34 +8028,34 @@ const AutocompleteFieldClass = compose(
7932
8028
  }
7933
8029
  `,
7934
8030
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
7935
- componentName: componentName$1d,
8031
+ componentName: componentName$1e,
7936
8032
  }),
7937
8033
  );
7938
8034
 
7939
- const vars$Z = AutocompleteFieldClass.cssVarList;
8035
+ const vars$_ = AutocompleteFieldClass.cssVarList;
7940
8036
  const globalRefs$y = getThemeRefs$1(globals);
7941
8037
 
7942
8038
  const autocompleteField = {
7943
- [vars$Z.hostWidth]: refs$1.width,
7944
- [vars$Z.hostDirection]: refs$1.direction,
7945
- [vars$Z.fontSize]: refs$1.fontSize,
7946
- [vars$Z.checkmarkDisplay]: 'none',
7947
- [vars$Z.itemPaddingInlineStart]: globalRefs$y.spacing.lg,
7948
- [vars$Z.itemPaddingInlineEnd]: globalRefs$y.spacing.lg,
7949
- [vars$Z.selectedItemBackground]: globalRefs$y.colors.primary.light,
7950
- [vars$Z.selectedItemHoverBackground]: globalRefs$y.colors.primary.light,
7951
- [vars$Z.selectedItemFocusBackground]: globalRefs$y.colors.primary.light,
7952
- [vars$Z.itemHoverBackground]: globalRefs$y.colors.primary.highlight,
8039
+ [vars$_.hostWidth]: refs$1.width,
8040
+ [vars$_.hostDirection]: refs$1.direction,
8041
+ [vars$_.fontSize]: refs$1.fontSize,
8042
+ [vars$_.checkmarkDisplay]: 'none',
8043
+ [vars$_.itemPaddingInlineStart]: globalRefs$y.spacing.lg,
8044
+ [vars$_.itemPaddingInlineEnd]: globalRefs$y.spacing.lg,
8045
+ [vars$_.selectedItemBackground]: globalRefs$y.colors.primary.light,
8046
+ [vars$_.selectedItemHoverBackground]: globalRefs$y.colors.primary.light,
8047
+ [vars$_.selectedItemFocusBackground]: globalRefs$y.colors.primary.light,
8048
+ [vars$_.itemHoverBackground]: globalRefs$y.colors.primary.highlight,
7953
8049
 
7954
8050
  _fullWidth: {
7955
- [vars$Z.hostWidth]: '100%',
8051
+ [vars$_.hostWidth]: '100%',
7956
8052
  },
7957
8053
  };
7958
8054
 
7959
8055
  var autocompleteField$1 = /*#__PURE__*/Object.freeze({
7960
8056
  __proto__: null,
7961
8057
  default: autocompleteField,
7962
- vars: vars$Z
8058
+ vars: vars$_
7963
8059
  });
7964
8060
 
7965
8061
  const initGoogleMapsLoader = (apiKey) => {
@@ -8186,7 +8282,7 @@ class RadarConnector extends createBaseConnectorClass() {
8186
8282
  }
8187
8283
  }
8188
8284
 
8189
- const componentName$1c = getComponentName('address-field-internal');
8285
+ const componentName$1d = getComponentName('address-field-internal');
8190
8286
 
8191
8287
  const GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';
8192
8288
  const RADAR_CONNECTOR_TEMPLATE = 'radar';
@@ -8197,7 +8293,7 @@ const CONNECTOR_CLASSES = {
8197
8293
  };
8198
8294
 
8199
8295
  const BaseInputClass$8 = createBaseInputClass$1({
8200
- componentName: componentName$1c,
8296
+ componentName: componentName$1d,
8201
8297
  baseSelector: '',
8202
8298
  });
8203
8299
  const initConnectorAttrs = ['public-api-key'];
@@ -8304,9 +8400,9 @@ compose(
8304
8400
  connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),
8305
8401
  )(RawAddressFieldInternal);
8306
8402
 
8307
- const componentName$1b = getComponentName('address-field');
8403
+ const componentName$1c = getComponentName('address-field');
8308
8404
 
8309
- const customMixin$c = (superclass) =>
8405
+ const customMixin$d = (superclass) =>
8310
8406
  class AddressFieldMixinClass extends superclass {
8311
8407
  get defaultValue() {
8312
8408
  return this.getAttribute('default-value');
@@ -8333,15 +8429,15 @@ const customMixin$c = (superclass) =>
8333
8429
  const template = document.createElement('template');
8334
8430
 
8335
8431
  template.innerHTML = `
8336
- <${componentName$1c}
8432
+ <${componentName$1d}
8337
8433
  tabindex="-1"
8338
- ></${componentName$1c}>
8434
+ ></${componentName$1d}>
8339
8435
  `;
8340
8436
 
8341
8437
  this.baseElement.appendChild(template.content.cloneNode(true));
8342
8438
 
8343
8439
  this.inputElement = this.shadowRoot.querySelector(
8344
- componentName$1c,
8440
+ componentName$1d,
8345
8441
  );
8346
8442
 
8347
8443
  forwardAttrs(this, this.inputElement, {
@@ -8382,7 +8478,7 @@ const customMixin$c = (superclass) =>
8382
8478
  }
8383
8479
  };
8384
8480
 
8385
- const { host: host$w } = {
8481
+ const { host: host$x } = {
8386
8482
  host: { selector: () => ':host' },
8387
8483
  };
8388
8484
 
@@ -8392,8 +8488,8 @@ const AddressFieldClass = compose(
8392
8488
  }),
8393
8489
  createStyleMixin$1({
8394
8490
  mappings: {
8395
- hostWidth: { ...host$w, property: 'width' },
8396
- hostDirection: { ...host$w, property: 'direction' },
8491
+ hostWidth: { ...host$x, property: 'width' },
8492
+ hostDirection: { ...host$x, property: 'direction' },
8397
8493
  },
8398
8494
  }),
8399
8495
  draggableMixin$1,
@@ -8403,7 +8499,7 @@ const AddressFieldClass = compose(
8403
8499
  proxyParentValidation: true,
8404
8500
  }),
8405
8501
  componentNameValidationMixin$1,
8406
- customMixin$c,
8502
+ customMixin$d,
8407
8503
  )(
8408
8504
  createProxy$1({
8409
8505
  slots: [],
@@ -8419,7 +8515,7 @@ const AddressFieldClass = compose(
8419
8515
  width: 100%;
8420
8516
  }
8421
8517
 
8422
- ${componentName$1c} {
8518
+ ${componentName$1d} {
8423
8519
  display: inline-block;
8424
8520
  box-sizing: border-box;
8425
8521
  user-select: none;
@@ -8427,30 +8523,30 @@ const AddressFieldClass = compose(
8427
8523
  max-width: 100%;
8428
8524
  }
8429
8525
 
8430
- ${componentName$1c} ::slotted {
8526
+ ${componentName$1d} ::slotted {
8431
8527
  padding: 0;
8432
8528
  }
8433
8529
  `,
8434
8530
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
8435
- componentName: componentName$1b,
8531
+ componentName: componentName$1c,
8436
8532
  }),
8437
8533
  );
8438
8534
 
8439
- const vars$Y = AddressFieldClass.cssVarList;
8535
+ const vars$Z = AddressFieldClass.cssVarList;
8440
8536
 
8441
8537
  const addressField = {
8442
- [vars$Y.hostWidth]: refs$1.width,
8443
- [vars$Y.hostDirection]: refs$1.direction,
8538
+ [vars$Z.hostWidth]: refs$1.width,
8539
+ [vars$Z.hostDirection]: refs$1.direction,
8444
8540
 
8445
8541
  _fullWidth: {
8446
- [vars$Y.hostWidth]: '100%',
8542
+ [vars$Z.hostWidth]: '100%',
8447
8543
  },
8448
8544
  };
8449
8545
 
8450
8546
  var addressField$1 = /*#__PURE__*/Object.freeze({
8451
8547
  __proto__: null,
8452
8548
  default: addressField,
8453
- vars: vars$Y
8549
+ vars: vars$Z
8454
8550
  });
8455
8551
 
8456
8552
  var clockIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgdmlld0JveD0iMCAwIDEwNCAxMDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC4zMzM0IDAuMzMzMjUyQzIyLjgzMzQgMC4zMzMyNTIgMC4zMzMzNzQgMjIuODMzMyAwLjMzMzM3NCA1MC4zMzMzQzAuMzMzMzc0IDc3LjgzMzMgMjIuODMzNCAxMDAuMzMzIDUwLjMzMzQgMTAwLjMzM0M3Ny44MzM0IDEwMC4zMzMgMTAwLjMzMyA3Ny44MzMzIDEwMC4zMzMgNTAuMzMzM0MxMDAuMzMzIDIyLjgzMzMgNzcuODMzNCAwLjMzMzI1MiA1MC4zMzM0IDAuMzMzMjUyWk01MC4zMzM0IDg3LjgzMzNDMjkuNzA4NCA4Ny44MzMzIDEyLjgzMzQgNzAuOTU4MyAxMi44MzM0IDUwLjMzMzNDMTIuODMzNCAyOS43MDgzIDI5LjcwODQgMTIuODMzMyA1MC4zMzM0IDEyLjgzMzNDNzAuOTU4NCAxMi44MzMzIDg3LjgzMzQgMjkuNzA4MyA4Ny44MzM0IDUwLjMzMzNDODcuODMzNCA3MC45NTgzIDcwLjk1ODQgODcuODMzMyA1MC4zMzM0IDg3LjgzMzNaIiBmaWxsPSIjMTgxQTFDIi8+CjxwYXRoIGQ9Ik01MC4zMzI4IDE5LjA4MzNINDQuMDgyOFY1Ni41ODMySDc1LjMzMjhWNTAuMzMzMkg1MC4zMzI4VjE5LjA4MzNaIiBmaWxsPSIjMTgxQTFDIi8+Cjwvc3ZnPgo=";
@@ -8472,12 +8568,12 @@ const formatTime = (ms = 0) => {
8472
8568
  return timeParts.join(':');
8473
8569
  };
8474
8570
 
8475
- const componentName$1a = getComponentName('timer');
8571
+ const componentName$1b = getComponentName('timer');
8476
8572
 
8477
8573
  const observedAttributes$5 = ['seconds', 'hide-icon', 'paused'];
8478
8574
 
8479
8575
  const BaseClass$8 = createBaseClass$1({
8480
- componentName: componentName$1a,
8576
+ componentName: componentName$1b,
8481
8577
  baseSelector: ':host > .wrapper',
8482
8578
  });
8483
8579
 
@@ -8630,7 +8726,7 @@ class RawTimer extends BaseClass$8 {
8630
8726
  }
8631
8727
  }
8632
8728
 
8633
- const { host: host$v, icon: icon$2, timer: timer$2 } = {
8729
+ const { host: host$w, icon: icon$2, timer: timer$2 } = {
8634
8730
  host: { selector: () => ':host' },
8635
8731
  icon: { selector: () => '.icon' },
8636
8732
  timer: { selector: () => '.timer' },
@@ -8651,8 +8747,8 @@ const TimerClass = compose(
8651
8747
  textColor: { ...timer$2, property: 'color' },
8652
8748
  gap: {},
8653
8749
  textAlign: { property: 'justify-content' },
8654
- hostWidth: { ...host$v, property: 'width' },
8655
- hostDirection: { ...host$v, property: 'direction' },
8750
+ hostWidth: { ...host$w, property: 'width' },
8751
+ hostDirection: { ...host$w, property: 'direction' },
8656
8752
  iconColor: { ...icon$2, property: IconClass.cssVarList.fill },
8657
8753
  },
8658
8754
  }),
@@ -8661,44 +8757,44 @@ const TimerClass = compose(
8661
8757
  )(RawTimer);
8662
8758
 
8663
8759
  const globalRefs$x = getThemeRefs$1(globals);
8664
- const vars$X = TimerClass.cssVarList;
8760
+ const vars$Y = TimerClass.cssVarList;
8665
8761
 
8666
8762
  const timer = {
8667
- [vars$X.hostDirection]: globalRefs$x.direction,
8668
- [vars$X.gap]: '0.25em',
8669
- [vars$X.fontFamily]: globalRefs$x.fonts.font1.family,
8670
- [vars$X.minHeight]: '1.5em',
8671
- [vars$X.lineHeight]: '1em',
8672
- [vars$X.fontWeight]: globalRefs$x.fonts.font1.fontWeight,
8673
- [vars$X.textColor]: globalRefs$x.colors.surface.contrast,
8674
- [vars$X.iconColor]: globalRefs$x.colors.surface.contrast,
8675
- [vars$X.iconSize]: '1em',
8763
+ [vars$Y.hostDirection]: globalRefs$x.direction,
8764
+ [vars$Y.gap]: '0.25em',
8765
+ [vars$Y.fontFamily]: globalRefs$x.fonts.font1.family,
8766
+ [vars$Y.minHeight]: '1.5em',
8767
+ [vars$Y.lineHeight]: '1em',
8768
+ [vars$Y.fontWeight]: globalRefs$x.fonts.font1.fontWeight,
8769
+ [vars$Y.textColor]: globalRefs$x.colors.surface.contrast,
8770
+ [vars$Y.iconColor]: globalRefs$x.colors.surface.contrast,
8771
+ [vars$Y.iconSize]: '1em',
8676
8772
 
8677
8773
  size: {
8678
- xs: { [vars$X.fontSize]: '12px' },
8679
- sm: { [vars$X.fontSize]: '14px' },
8680
- md: { [vars$X.fontSize]: '16px' },
8681
- lg: { [vars$X.fontSize]: '18px' },
8774
+ xs: { [vars$Y.fontSize]: '12px' },
8775
+ sm: { [vars$Y.fontSize]: '14px' },
8776
+ md: { [vars$Y.fontSize]: '16px' },
8777
+ lg: { [vars$Y.fontSize]: '18px' },
8682
8778
  },
8683
8779
 
8684
8780
  textAlign: {
8685
- right: { [vars$X.textAlign]: 'right' },
8686
- left: { [vars$X.textAlign]: 'left' },
8687
- center: { [vars$X.textAlign]: 'center' },
8781
+ right: { [vars$Y.textAlign]: 'right' },
8782
+ left: { [vars$Y.textAlign]: 'left' },
8783
+ center: { [vars$Y.textAlign]: 'center' },
8688
8784
  },
8689
8785
 
8690
8786
  _fullWidth: {
8691
- [vars$X.hostWidth]: '100%',
8787
+ [vars$Y.hostWidth]: '100%',
8692
8788
  },
8693
8789
  };
8694
8790
 
8695
8791
  var timer$1 = /*#__PURE__*/Object.freeze({
8696
8792
  __proto__: null,
8697
8793
  default: timer,
8698
- vars: vars$X
8794
+ vars: vars$Y
8699
8795
  });
8700
8796
 
8701
- const componentName$19 = getComponentName('timer-button');
8797
+ const componentName$1a = getComponentName('timer-button');
8702
8798
 
8703
8799
  const buttonAttrs = [
8704
8800
  'button-variant',
@@ -8729,7 +8825,7 @@ const mapTimerAttrs = {
8729
8825
  };
8730
8826
 
8731
8827
  const BaseClass$7 = createBaseClass$1({
8732
- componentName: componentName$19,
8828
+ componentName: componentName$1a,
8733
8829
  baseSelector: ':host > div',
8734
8830
  });
8735
8831
 
@@ -8881,7 +8977,7 @@ class RawTimerButton extends BaseClass$7 {
8881
8977
  }
8882
8978
 
8883
8979
  const {
8884
- host: host$u,
8980
+ host: host$v,
8885
8981
  nestedTimer,
8886
8982
  nestedButton,
8887
8983
  timerInsideNotReversed,
@@ -8906,8 +9002,8 @@ const TimerButtonClass = compose(
8906
9002
  mappings: {
8907
9003
  gap: {},
8908
9004
  flexDirection: {},
8909
- hostWidth: { ...host$u, property: 'width' },
8910
- hostDirection: { ...host$u, property: 'direction' },
9005
+ hostWidth: { ...host$v, property: 'width' },
9006
+ hostDirection: { ...host$v, property: 'direction' },
8911
9007
  timerTextColor: {
8912
9008
  ...nestedTimer,
8913
9009
  property: TimerClass.cssVarList.textColor,
@@ -8939,40 +9035,40 @@ const TimerButtonClass = compose(
8939
9035
  )(RawTimerButton);
8940
9036
 
8941
9037
  const globalRefs$w = getThemeRefs$1(globals);
8942
- const vars$W = TimerButtonClass.cssVarList;
9038
+ const vars$X = TimerButtonClass.cssVarList;
8943
9039
 
8944
9040
  const timerButton = {
8945
- [vars$W.gap]: globalRefs$w.spacing.sm,
8946
- [vars$W.flexDirection]: 'column',
9041
+ [vars$X.gap]: globalRefs$w.spacing.sm,
9042
+ [vars$X.flexDirection]: 'column',
8947
9043
 
8948
9044
  _horizontal: {
8949
- [vars$W.flexDirection]: 'row',
9045
+ [vars$X.flexDirection]: 'row',
8950
9046
  timerPosition: {
8951
9047
  end: {
8952
- [vars$W.flexDirection]: 'row-reverse',
9048
+ [vars$X.flexDirection]: 'row-reverse',
8953
9049
  },
8954
9050
  },
8955
9051
  },
8956
9052
 
8957
9053
  timerPosition: {
8958
9054
  end: {
8959
- [vars$W.flexDirection]: 'column-reverse',
9055
+ [vars$X.flexDirection]: 'column-reverse',
8960
9056
  },
8961
9057
  },
8962
9058
 
8963
9059
  _fullWidth: {
8964
- [vars$W.hostWidth]: '100%',
9060
+ [vars$X.hostWidth]: '100%',
8965
9061
  },
8966
9062
 
8967
9063
  _timerInside: {
8968
- [vars$W.timerTextColor]: 'currentColor',
8969
- [vars$W.timerIconColor]: 'currentColor',
8970
- [vars$W.timerHostWidth]: 'auto',
8971
- [vars$W.buttonLabelSpacing]: '0',
8972
- [vars$W.timerInsideGapEnd]: `var(${vars$W.gap})`,
9064
+ [vars$X.timerTextColor]: 'currentColor',
9065
+ [vars$X.timerIconColor]: 'currentColor',
9066
+ [vars$X.timerHostWidth]: 'auto',
9067
+ [vars$X.buttonLabelSpacing]: '0',
9068
+ [vars$X.timerInsideGapEnd]: `var(${vars$X.gap})`,
8973
9069
  timerPosition: {
8974
9070
  end: {
8975
- [vars$W.timerInsideGapStart]: `var(${vars$W.gap})`,
9071
+ [vars$X.timerInsideGapStart]: `var(${vars$X.gap})`,
8976
9072
  },
8977
9073
  },
8978
9074
  },
@@ -8981,12 +9077,12 @@ const timerButton = {
8981
9077
  var timerButton$1 = /*#__PURE__*/Object.freeze({
8982
9078
  __proto__: null,
8983
9079
  default: timerButton,
8984
- vars: vars$W
9080
+ vars: vars$X
8985
9081
  });
8986
9082
 
8987
- const componentName$18 = getComponentName('password-strength');
9083
+ const componentName$19 = getComponentName('password-strength');
8988
9084
  class RawPasswordStrength extends createBaseClass$1({
8989
- componentName: componentName$18,
9085
+ componentName: componentName$19,
8990
9086
  baseSelector: ':host > .wrapper',
8991
9087
  }) {
8992
9088
  static get observedAttributes() {
@@ -9100,7 +9196,7 @@ class RawPasswordStrength extends createBaseClass$1({
9100
9196
  }
9101
9197
  }
9102
9198
 
9103
- const { host: host$t, bar, filledBar, barsContainer, text: text$1 } = {
9199
+ const { host: host$u, bar, filledBar, barsContainer, text: text$1 } = {
9104
9200
  host: { selector: () => ':host' },
9105
9201
  bar: { selector: ' .bar' },
9106
9202
  barsContainer: { selector: ' .bars-container' },
@@ -9113,11 +9209,11 @@ const PasswordStrengthClass = compose(
9113
9209
  createStyleMixin$1({
9114
9210
  mappings: {
9115
9211
  hostWidth: [
9116
- { ...host$t, property: 'width' },
9117
- { ...host$t, property: 'min-width' },
9212
+ { ...host$u, property: 'width' },
9213
+ { ...host$u, property: 'min-width' },
9118
9214
  ],
9119
- hostDirection: { ...host$t, property: 'direction' },
9120
- hostMinWidth: { ...host$t, property: 'min-width' },
9215
+ hostDirection: { ...host$u, property: 'direction' },
9216
+ hostMinWidth: { ...host$u, property: 'min-width' },
9121
9217
  barHeight: { ...bar, property: 'height' },
9122
9218
  barBorderRadius: { ...bar, property: 'border-radius' },
9123
9219
  emptyBarColor: { ...bar, property: 'background-color' },
@@ -9177,22 +9273,22 @@ const passwordStrength = {
9177
9273
  }
9178
9274
  };
9179
9275
 
9180
- const vars$V = {
9276
+ const vars$W = {
9181
9277
  ...compVars$6,
9182
9278
  };
9183
9279
 
9184
9280
  var passwordStrength$1 = /*#__PURE__*/Object.freeze({
9185
9281
  __proto__: null,
9186
9282
  default: passwordStrength,
9187
- vars: vars$V
9283
+ vars: vars$W
9188
9284
  });
9189
9285
 
9190
9286
  var chevronIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik02Ljc4MDcgMTQuNzI3MkM2LjM0MTYgMTUuMTIwOSA1LjY2NjYgMTUuMDg0MSA1LjI3MjggMTQuNjQ1MUM0Ljg3OTEgMTQuMjA2IDQuOTE1OSAxMy41MzA5IDUuMzU0OSAxMy4xMzcyQzUuMzU0OSAxMy4xMzcyIDEwLjk1NDMgNy45OTc4IDExLjM2IDcuNjM0QzExLjc2NTcgNy4yNzAyIDEyLjIzOTIgNy4yNzAyIDEyLjY0NDggNy42MzRMMTguNjQ1MSAxMy4xMzcyQzE5LjA4NDEgMTMuNTMwOSAxOS4xMjA5IDE0LjIwNiAxOC43MjcyIDE0LjY0NTFDMTguMzMzNCAxNS4wODQxIDE3LjY1ODQgMTUuMTIwOSAxNy4yMTkzIDE0LjcyNzJMMTIgOS44NjMyTDYuNzgwNyAxNC43MjcyWiIvPgo8L3N2Zz4K";
9191
9287
 
9192
- const componentName$17 = getComponentName('collapsible-container');
9288
+ const componentName$18 = getComponentName('collapsible-container');
9193
9289
 
9194
9290
  class RawCollapsibleContainer extends createBaseClass$1({
9195
- componentName: componentName$17,
9291
+ componentName: componentName$18,
9196
9292
  baseSelector: 'slot',
9197
9293
  }) {
9198
9294
  static get observedAttributes() {
@@ -9443,7 +9539,7 @@ const [helperTheme$4, helperRefs$4, helperVars$4] = createHelperVars$1(
9443
9539
  {
9444
9540
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
9445
9541
  },
9446
- componentName$17,
9542
+ componentName$18,
9447
9543
  );
9448
9544
 
9449
9545
  const { shadowColor: shadowColor$6 } = helperRefs$4;
@@ -9544,7 +9640,7 @@ const collapsibleContainer = {
9544
9640
  },
9545
9641
  };
9546
9642
 
9547
- const vars$U = {
9643
+ const vars$V = {
9548
9644
  ...compVars$5,
9549
9645
  ...helperVars$4,
9550
9646
  };
@@ -9552,10 +9648,10 @@ const vars$U = {
9552
9648
  var collapsibleContainer$1 = /*#__PURE__*/Object.freeze({
9553
9649
  __proto__: null,
9554
9650
  default: collapsibleContainer,
9555
- vars: vars$U
9651
+ vars: vars$V
9556
9652
  });
9557
9653
 
9558
- const componentName$16 = getComponentName('recovery-codes');
9654
+ const componentName$17 = getComponentName('recovery-codes');
9559
9655
 
9560
9656
  const NO_ACTION = 'none';
9561
9657
  const DEFAULT_ERROR_MESSAGE =
@@ -9597,7 +9693,7 @@ const itemRenderer$5 = ({ value }, _, ref) => {
9597
9693
  };
9598
9694
 
9599
9695
  class RawRecoveryCodes extends createBaseClass$1({
9600
- componentName: componentName$16,
9696
+ componentName: componentName$17,
9601
9697
  baseSelector: ':host > div',
9602
9698
  }) {
9603
9699
  static get observedAttributes() {
@@ -10010,60 +10106,388 @@ const RecoveryCodesClass = compose(
10010
10106
  )(RawRecoveryCodes);
10011
10107
 
10012
10108
  const globalRefs$t = getThemeRefs$1(globals);
10013
- const vars$T = RecoveryCodesClass.cssVarList;
10109
+ const vars$U = RecoveryCodesClass.cssVarList;
10014
10110
  const textVars$6 = TextClass.cssVarList;
10015
10111
 
10016
10112
  const recoveryCodes = {
10017
- [vars$T.hostMinWidth]: '190px',
10018
- [vars$T.hostDirection]: globalRefs$t.direction,
10019
- [vars$T.iconColor]: useVar$1(textVars$6.textColor),
10020
- [vars$T.iconSize]: useVar$1(textVars$6.fontSize),
10113
+ [vars$U.hostMinWidth]: '190px',
10114
+ [vars$U.hostDirection]: globalRefs$t.direction,
10115
+ [vars$U.iconColor]: useVar$1(textVars$6.textColor),
10116
+ [vars$U.iconSize]: useVar$1(textVars$6.fontSize),
10021
10117
  // gap between the codes and the icon column
10022
- [vars$T.iconGap]: '8px',
10118
+ [vars$U.iconGap]: '8px',
10023
10119
  // gap between the stacked copy and download icons
10024
- [vars$T.iconStackGap]: '16px',
10120
+ [vars$U.iconStackGap]: '16px',
10025
10121
  // gap between the copy and download buttons (buttons variant)
10026
- [vars$T.buttonsGap]: '8px',
10122
+ [vars$U.buttonsGap]: '8px',
10027
10123
  // gap between the codes, the error message and the buttons
10028
- [vars$T.sectionsGap]: '8px',
10029
- [vars$T.bulletGap]: '0.35em',
10124
+ [vars$U.sectionsGap]: '8px',
10125
+ [vars$U.bulletGap]: '0.35em',
10030
10126
 
10031
10127
  // no padding by default so the current look is unchanged; the editor overrides per instance
10032
- [vars$T.verticalPadding]: '0',
10033
- [vars$T.horizontalPadding]: '0',
10128
+ [vars$U.verticalPadding]: '0',
10129
+ [vars$U.horizontalPadding]: '0',
10034
10130
 
10035
10131
  // error ring is transparent until the component is marked invalid (see _invalid below).
10036
10132
  // message color/font + border come from the shared input-wrapper tokens, so customizing
10037
10133
  // inputs in the console updates the recovery-codes error styling from the same place.
10038
- [vars$T.errorBorderColor]: 'transparent',
10039
- [vars$T.errorBorderWidth]: refs$1.borderWidth,
10040
- [vars$T.boxBorderRadius]: refs$1.borderRadius,
10134
+ [vars$U.errorBorderColor]: 'transparent',
10135
+ [vars$U.errorBorderWidth]: refs$1.borderWidth,
10136
+ [vars$U.boxBorderRadius]: refs$1.borderRadius,
10041
10137
  // local default; can later map to the input-wrapper border style if it exposes one
10042
- [vars$T.boxBorderStyle]: 'solid',
10043
- [vars$T.errorMessageColor]: refs$1.errorMessageTextColor,
10044
- [vars$T.errorMessageFontSize]: refs$1.errorMessageFontSize,
10045
- [vars$T.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
10046
- [vars$T.errorMessageFontFamily]: refs$1.fontFamily,
10138
+ [vars$U.boxBorderStyle]: 'solid',
10139
+ [vars$U.errorMessageColor]: refs$1.errorMessageTextColor,
10140
+ [vars$U.errorMessageFontSize]: refs$1.errorMessageFontSize,
10141
+ [vars$U.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
10142
+ [vars$U.errorMessageFontFamily]: refs$1.fontFamily,
10047
10143
 
10048
10144
  textAlign: {
10049
- right: { [vars$T.textAlign]: 'flex-end' },
10050
- left: { [vars$T.textAlign]: 'flex-start' },
10051
- center: { [vars$T.textAlign]: 'center' },
10145
+ right: { [vars$U.textAlign]: 'flex-end' },
10146
+ left: { [vars$U.textAlign]: 'flex-start' },
10147
+ center: { [vars$U.textAlign]: 'center' },
10052
10148
  },
10053
10149
 
10054
10150
  _fullWidth: {
10055
- [vars$T.hostWidth]: '100%',
10151
+ [vars$U.hostWidth]: '100%',
10056
10152
  },
10057
10153
 
10058
10154
  // reflected `invalid` attribute (set by the component on a failed submit)
10059
10155
  _invalid: {
10060
- [vars$T.errorBorderColor]: refs$1.errorMessageTextColor,
10156
+ [vars$U.errorBorderColor]: refs$1.errorMessageTextColor,
10061
10157
  },
10062
10158
  };
10063
10159
 
10064
10160
  var recoveryCodes$1 = /*#__PURE__*/Object.freeze({
10065
10161
  __proto__: null,
10066
10162
  default: recoveryCodes,
10163
+ vars: vars$U
10164
+ });
10165
+
10166
+ var desktopDeviceIconLight$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4QzIxLjEgMTggMjEuOTkgMTcuMSAyMS45OSAxNkwyMiA2QzIyIDQuOSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxNkMyIDE3LjEgMi45IDE4IDQgMThIMFYyMEgyNFYxOEgyMFpNNCA2SDIwVjE2SDRWNloiIGZpbGw9IiM2MzZDNzQiLz4KPC9zdmc+Cg==";
10167
+
10168
+ var mobileDeviceIconLight$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDFIOEM2LjM0IDEgNSAyLjM0IDUgNFYyMEM1IDIxLjY2IDYuMzQgMjMgOCAyM0gxNkMxNy42NiAyMyAxOSAyMS42NiAxOSAyMFY0QzE5IDIuMzQgMTcuNjYgMSAxNiAxWk0xNyAxOEg3VjRIMTdWMThaTTE0IDIxSDEwVjIwSDE0VjIxWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K";
10169
+
10170
+ var tabletDeviceIconLight$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUyNTJfNzY4KSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iIzYzNkM3NCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUyNTJfNzY4Ij4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
10171
+
10172
+ var unknownDeviceIconLight$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNi41SDIyVjQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTcuNUgwVjIwLjVIMTRWMTcuNUg0VjYuNVpNMjMgOC41SDE3QzE2LjQ1IDguNSAxNiA4Ljk1IDE2IDkuNVYxOS41QzE2IDIwLjA1IDE2LjQ1IDIwLjUgMTcgMjAuNUgyM0MyMy41NSAyMC41IDI0IDIwLjA1IDI0IDE5LjVWOS41QzI0IDguOTUgMjMuNTUgOC41IDIzIDguNVpNMjIgMTcuNUgxOFYxMC41SDIyVjE3LjVaIiBmaWxsPSIjNjM2Qzc0Ii8+Cjwvc3ZnPgo=";
10173
+
10174
+ var desktopDeviceIconDark$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4LjVDMjEuMSAxOC41IDIxLjk5IDE3LjYgMjEuOTkgMTYuNUwyMiA2LjVDMjIgNS40IDIxLjEgNC41IDIwIDQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTYuNUMyIDE3LjYgMi45IDE4LjUgNCAxOC41SDBWMjAuNUgyNFYxOC41SDIwWk00IDYuNUgyMFYxNi41SDRWNi41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L3N2Zz4K";
10175
+
10176
+ var mobileDeviceIconDark$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDEuNUg4QzYuMzQgMS41IDUgMi44NCA1IDQuNVYyMC41QzUgMjIuMTYgNi4zNCAyMy41IDggMjMuNUgxNkMxNy42NiAyMy41IDE5IDIyLjE2IDE5IDIwLjVWNC41QzE5IDIuODQgMTcuNjYgMS41IDE2IDEuNVpNMTcgMTguNUg3VjQuNUgxN1YxOC41Wk0xNCAyMS41SDEwVjIwLjVIMTRWMjEuNVoiIGZpbGw9IiNGNEY1RjYiLz4KPC9zdmc+Cg==";
10177
+
10178
+ var tabletDeviceIconDark$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUzMDNfODYzKSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUzMDNfODYzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
10179
+
10180
+ var unknownDeviceIconDark$1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNkgyMlY0SDRDMi45IDQgMiA0LjkgMiA2VjE3SDBWMjBIMTRWMTdINFY2Wk0yMyA4SDE3QzE2LjQ1IDggMTYgOC40NSAxNiA5VjE5QzE2IDE5LjU1IDE2LjQ1IDIwIDE3IDIwSDIzQzIzLjU1IDIwIDI0IDE5LjU1IDI0IDE5VjlDMjQgOC40NSAyMy41NSA4IDIzIDhaTTIyIDE3SDE4VjEwSDIyVjE3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
10181
+
10182
+ // Same four device types userservice records. A session created before those columns existed
10183
+ // carries an empty type, so everything unrecognised falls back to the unknown icon rather than
10184
+ // rendering a broken image.
10185
+ const deviceIconMap$1 = {
10186
+ desktop: { light: desktopDeviceIconLight$1, dark: desktopDeviceIconDark$1 },
10187
+ mobile: { light: mobileDeviceIconLight$1, dark: mobileDeviceIconDark$1 },
10188
+ tablet: { light: tabletDeviceIconLight$1, dark: tabletDeviceIconDark$1 },
10189
+ unknown: { light: unknownDeviceIconLight$1, dark: unknownDeviceIconDark$1 },
10190
+ };
10191
+
10192
+ const getDeviceIcon$1 = (deviceType) => {
10193
+ const icon = deviceIconMap$1[deviceType] || deviceIconMap$1.unknown;
10194
+ return { iconSrc: icon.light, iconSrcDark: icon.dark };
10195
+ };
10196
+
10197
+ // "Tel Aviv, IL". Either half may be missing - geo lookup is best effort - so show whichever we
10198
+ // have, and nothing at all when we have neither.
10199
+ const formatLocation = ({ country, city }) =>
10200
+ [city, country].filter(Boolean).join(', ');
10201
+
10202
+ // The login time arrives as epoch SECONDS (userservice stores it that way and the flow passes it
10203
+ // through untouched), while Date wants milliseconds. Getting this wrong shows 1970.
10204
+ const SECONDS_TO_MS = 1000;
10205
+
10206
+ // Rendered in the viewer's own locale and timezone rather than a fixed order, so the same session
10207
+ // reads correctly for someone in Tel Aviv and someone in New York. The offset is spelled out
10208
+ // because the point of this list is telling two of your own sessions apart, and the hour is what
10209
+ // does that.
10210
+ const formatLastLogin = (loginTime) => {
10211
+ const seconds = parseInt(loginTime, 10);
10212
+ if (Number.isNaN(seconds) || seconds <= 0) return '';
10213
+
10214
+ const date = new Date(seconds * SECONDS_TO_MS);
10215
+ // Spelled out as individual components rather than dateStyle/timeStyle: Intl rejects mixing
10216
+ // those with timeZoneName, and the rejection is a throw, so the offset would be silently lost to
10217
+ // the fallback below.
10218
+ const parts = {
10219
+ year: 'numeric',
10220
+ month: '2-digit',
10221
+ day: '2-digit',
10222
+ hour: '2-digit',
10223
+ minute: '2-digit',
10224
+ };
10225
+ try {
10226
+ return date.toLocaleString(undefined, {
10227
+ ...parts,
10228
+ timeZoneName: 'shortOffset',
10229
+ });
10230
+ } catch {
10231
+ // `shortOffset` is not understood everywhere; the time matters more than the offset.
10232
+ return date.toLocaleString(undefined, parts);
10233
+ }
10234
+ };
10235
+
10236
+ const componentName$16 = getComponentName('active-sessions');
10237
+
10238
+ const comboBoxName = MultiSelectComboBoxClass.componentName;
10239
+
10240
+ // Structure only, handed to the portal mixin below, which writes it into the overlay root
10241
+ // alongside the themeable mappings. These are the rules no theme should change, and they have to
10242
+ // be a stylesheet because a `style` attribute would be dropped by the flow runtime's CSP.
10243
+ const OVERLAY_ITEM_STYLE = `
10244
+ .session {
10245
+ display: flex;
10246
+ flex-direction: column;
10247
+ }
10248
+ /* descope-text and its slot are both inline-blocks, which would leave a baseline gap under the
10249
+ title and widen the space to the location line. */
10250
+ .session .device descope-text,
10251
+ .session .device descope-text::part(text-wrapper) {
10252
+ display: block;
10253
+ }
10254
+ /* The flex row has to sit inside descope-text, not around it: descope-text slots its children,
10255
+ so a container outside would only ever see the slot as its single item. */
10256
+ .session .device-row {
10257
+ display: flex;
10258
+ align-items: center;
10259
+ }
10260
+ .session .device-icon {
10261
+ width: 1em;
10262
+ height: 1em;
10263
+ flex-shrink: 0;
10264
+ }
10265
+ `;
10266
+
10267
+ // None of the shadow roots down to the rows exists on the first tick. `waitForShadowRoot` is the
10268
+ // same wait `portalMixin` uses, and it resolves the element rather than a root when it gives up,
10269
+ // so anything that is not a shadow root means stop.
10270
+ const shadowRootOf = async (ele) => {
10271
+ if (!ele) return null;
10272
+ const root = await waitForShadowRoot(() => ele)();
10273
+ return root instanceof ShadowRoot ? root : null;
10274
+ };
10275
+
10276
+ // From the combo box's shadow root down to the element whose own root holds the rows.
10277
+ // the portal mixin takes it as its selector and writes both its mappings and the static css there.
10278
+ const findOverlayElement = async (comboBoxRoot) => {
10279
+ const vaadinRoot = await shadowRootOf(
10280
+ comboBoxRoot?.querySelector('vaadin-multi-select-combo-box'),
10281
+ );
10282
+ return vaadinRoot?.querySelector('vaadin-multi-select-combo-box-internal');
10283
+ };
10284
+
10285
+ // The row's shape, written once as markup so it reads like the thing it produces. Every value is
10286
+ // filled in afterwards with textContent and setAttribute: the combo box assigns the result to
10287
+ // innerHTML, and `deviceName` comes from a user agent the client controls, so interpolating it
10288
+ // into this string would be an HTML injection.
10289
+ // Built on first render rather than at import. This module is the `./class` entry, which has to
10290
+ // stay free of side effects so a server with no `document` can import the bundle.
10291
+ let rowTemplate;
10292
+ const getRowTemplate = () => {
10293
+ if (rowTemplate) return rowTemplate;
10294
+
10295
+ rowTemplate = document.createElement('template');
10296
+ rowTemplate.innerHTML = `
10297
+ <div class="session">
10298
+ <div class="device">
10299
+ <descope-text variant="body1" mode="primary" st-font-size="1em">
10300
+ <div class="device-row">
10301
+ <descope-icon class="device-icon" aria-hidden="true"></descope-icon>
10302
+ <span class="device-name"></span>
10303
+ </div>
10304
+ </descope-text>
10305
+ </div>
10306
+ <div class="location">
10307
+ <descope-text
10308
+ variant="body2"
10309
+ mode="secondary"
10310
+ st-font-size="0.875em"
10311
+ ></descope-text>
10312
+ </div>
10313
+ <div class="last-login">
10314
+ <descope-text
10315
+ variant="body2"
10316
+ mode="secondary"
10317
+ st-font-size="0.875em"
10318
+ ></descope-text>
10319
+ </div>
10320
+ </div>
10321
+ `;
10322
+
10323
+ return rowTemplate;
10324
+ };
10325
+
10326
+ const renderItem =
10327
+ (ref) =>
10328
+ ({ value, deviceName, deviceType, city, country, loginTime } = {}) => {
10329
+ const name = deviceName || ref.unknownDeviceLabel;
10330
+ const row = getRowTemplate().content.cloneNode(true).firstElementChild;
10331
+
10332
+ row.setAttribute('data-id', value ?? '');
10333
+ // The chip shows this once the row is picked.
10334
+ row.setAttribute('data-name', name);
10335
+
10336
+ row.querySelector('.device-name').textContent = name;
10337
+
10338
+ const { iconSrc, iconSrcDark } = getDeviceIcon$1(deviceType);
10339
+ const icon = row.querySelector('.device-icon');
10340
+ icon.setAttribute('src', iconSrc);
10341
+ icon.setAttribute('src-dark', iconSrcDark);
10342
+
10343
+ // Both detail lines are optional, and an empty one would still take up space, so the line is
10344
+ // removed rather than left blank.
10345
+ const fill = (selector, text) => {
10346
+ const ele = row.querySelector(selector);
10347
+ if (text) ele.firstElementChild.textContent = text;
10348
+ else ele.remove();
10349
+ };
10350
+
10351
+ fill('.location', formatLocation({ country, city }));
10352
+
10353
+ const lastLogin = formatLastLogin(loginTime);
10354
+ fill(
10355
+ '.last-login',
10356
+ lastLogin && ref.lastLoginLabel
10357
+ ? `${ref.lastLoginLabel} ${lastLogin}`
10358
+ : lastLogin,
10359
+ );
10360
+
10361
+ return row.outerHTML;
10362
+ };
10363
+
10364
+ const customMixin$c = (superclass) =>
10365
+ class ActiveSessionsMixinClass extends superclass {
10366
+ get lastLoginLabel() {
10367
+ return this.getAttribute('last-login-label') ?? 'Last login:';
10368
+ }
10369
+
10370
+ get unknownDeviceLabel() {
10371
+ return this.getAttribute('unknown-device-label') ?? 'Unknown device';
10372
+ }
10373
+
10374
+ init() {
10375
+ super.init?.();
10376
+
10377
+ this.inputElement = this.baseElement;
10378
+
10379
+ // Set before any `data` arrives, so the list is never painted with the stock one-line rows
10380
+ // first. The SDK sets `data` on a detached fragment, so that first paint is the real one.
10381
+ this.inputElement.renderItem = renderItem(this);
10382
+
10383
+ // The picker never invents a session, so a typed value must not become one.
10384
+ this.inputElement.setAttribute('allow-custom-value', 'false');
10385
+ this.inputElement.setAttribute('item-label-path', 'data-name');
10386
+ this.inputElement.setAttribute('item-value-path', 'data-id');
10387
+ }
10388
+ };
10389
+
10390
+ const host$t = { selector: () => ':host' };
10391
+ const comboBox = { selector: () => comboBoxName };
10392
+
10393
+ // Only the knobs that can actually reach their target. The dropdown row's themeable values are
10394
+ // mapped through the portal below, which writes its rules into the overlay root. Better a small
10395
+ // honest set of variables than knobs that silently do nothing.
10396
+ const ActiveSessionsClass = compose(
10397
+ createStyleMixin$1({
10398
+ mappings: {
10399
+ hostWidth: [
10400
+ { ...host$t, property: 'width' },
10401
+ {
10402
+ ...comboBox,
10403
+ property: MultiSelectComboBoxClass.cssVarList.hostWidth,
10404
+ },
10405
+ ],
10406
+ hostDirection: [
10407
+ { ...host$t, property: 'direction' },
10408
+ {
10409
+ ...comboBox,
10410
+ property: MultiSelectComboBoxClass.cssVarList.hostDirection,
10411
+ },
10412
+ ],
10413
+ },
10414
+ }),
10415
+ draggableMixin$1,
10416
+ // The rows are drawn four shadow roots down, deeper than a query string reaches, so the portal
10417
+ // is found with a function. This puts their themeable values through the normal mapping path:
10418
+ // the style mixin writes its rules into that same root. Nothing is forwarded, because the
10419
+ // element there is vaadin's internal, not a copy of this host, and attributes like `data` would
10420
+ // stop the list rendering.
10421
+ portalMixin$1({
10422
+ name: 'overlay',
10423
+ forward: false,
10424
+ selector: findOverlayElement,
10425
+ style: OVERLAY_ITEM_STYLE,
10426
+ mappings: {
10427
+ rowGap: { selector: '.session', property: 'gap' },
10428
+ deviceRowGap: { selector: '.device-row', property: 'gap' },
10429
+ },
10430
+ }),
10431
+ composedProxyInputMixin$1({
10432
+ proxyProps: ['value'],
10433
+ inputEvent: 'change',
10434
+ proxyParentValidation: true,
10435
+ }),
10436
+ componentNameValidationMixin$1,
10437
+ customMixin$c,
10438
+ )(
10439
+ createProxy$1({
10440
+ slots: [],
10441
+ // The combo box is wrapped directly. It draws its own label, so there is nothing for an outer
10442
+ // field element to add here, and its label follows the input theme instead of vaadin's.
10443
+ wrappedEleName: comboBoxName,
10444
+ style: () => `
10445
+ :host {
10446
+ display: inline-flex;
10447
+ max-width: 100%;
10448
+ }
10449
+ ${comboBoxName} {
10450
+ width: 100%;
10451
+ max-width: 100%;
10452
+ }
10453
+ `,
10454
+ // `name` stays on the host only: that is the element the SDK collects the value from, and a
10455
+ // second match would post the field twice. `error-message` deliberately does reach the combo
10456
+ // box, which is what draws the message under the field. Without it the field only turns red
10457
+ // and the browser's own bubble appears instead.
10458
+ // `class` must not sync: the wrapped element carries its own component classes, and syncing
10459
+ // is two way, so they would land on the host and push off `descope-active-sessions`. Every
10460
+ // theme rule is written as `:host(.descope-active-sessions...)`, so losing that class turns
10461
+ // off all of this component's theming, direction included. descope-apps-list excludes it for
10462
+ // the same reason.
10463
+ excludeAttrsSync: ['tabindex', 'style', 'name', 'class'],
10464
+ componentName: componentName$16,
10465
+ }),
10466
+ );
10467
+
10468
+ const vars$T = ActiveSessionsClass.cssVarList;
10469
+
10470
+ // The dropdown rows are styled by the stylesheet `ActiveSessionsClass` adopts into vaadin's
10471
+ // overlay root (`OVERLAY_ITEM_STYLE`), which no theme variable reaches. A `style` attribute would
10472
+ // not work there either, because the flow runtime's CSP drops it. What is left to theme here is
10473
+ // the field itself.
10474
+ const activeSessions = {
10475
+ [vars$T.hostWidth]: refs$1.width,
10476
+ [vars$T.hostDirection]: refs$1.direction,
10477
+
10478
+ // Spacing inside a dropdown row. These reach the row as custom properties, because the rows are
10479
+ // rendered inside vaadin's overlay where no selector from here applies.
10480
+ [vars$T.overlay.rowGap]: '0.125em',
10481
+ [vars$T.overlay.deviceRowGap]: '0.5em',
10482
+
10483
+ _fullWidth: {
10484
+ [vars$T.hostWidth]: '100%',
10485
+ },
10486
+ };
10487
+
10488
+ var activeSessions$1 = /*#__PURE__*/Object.freeze({
10489
+ __proto__: null,
10490
+ default: activeSessions,
10067
10491
  vars: vars$T
10068
10492
  });
10069
10493
 
@@ -17881,7 +18305,7 @@ const createClassSelectorSpecifier = (className, numOfRepeats) =>
17881
18305
  const STYLE_OVERRIDE_ATTR_PREFIX = 'st';
17882
18306
 
17883
18307
  const createStyleMixin =
17884
- ({ mappings = {}, componentNameOverride = '' }) =>
18308
+ ({ mappings = {}, componentNameOverride = '', style = '' }) =>
17885
18309
  (superclass) => {
17886
18310
  const componentName = componentNameOverride || superclass.componentName;
17887
18311
 
@@ -18003,6 +18427,14 @@ const createStyleMixin =
18003
18427
  }
18004
18428
  }
18005
18429
 
18430
+ // Rules the component needs wherever this mixin writes, which for a portal is a shadow root
18431
+ // it does not own. Prepended after the mapping rules so those still win: the mapping is the
18432
+ // themeable half, this is the structure underneath it.
18433
+ #createStaticStyle() {
18434
+ const css = isFunction$1(style) ? style() : style;
18435
+ if (css) injectStyle(css, this.#rootElement, { prepend: true });
18436
+ }
18437
+
18006
18438
  #addClassName(className) {
18007
18439
  (this.#rootElement.classList || this.#rootElement.host.classList).add(className);
18008
18440
  }
@@ -18015,6 +18447,7 @@ const createStyleMixin =
18015
18447
  this.#addClassName(componentName);
18016
18448
 
18017
18449
  this.#createMappingStyle();
18450
+ this.#createStaticStyle();
18018
18451
  this.#createComponentTheme();
18019
18452
  this.#createOverridesStyle();
18020
18453
 
@@ -18758,40 +19191,26 @@ const composedProxyInputMixin = (proxyInputMixinConfig) =>
18758
19191
  // because of that, we are adding this separator that is also used as a differentiator
18759
19192
  const DISPLAY_NAME_SEPARATOR = '_';
18760
19193
 
18761
- const withWaitForShadowRoot = (getRootElementFn) => async (that) => {
18762
- const ele = await getRootElementFn(that);
18763
-
18764
- return new Promise((res) => {
18765
- const MAX_RETRIES = 20;
18766
- let counter = 0;
18767
-
18768
- const check = () => {
18769
- if (counter > MAX_RETRIES) {
18770
- // eslint-disable-next-line no-console
18771
- console.error('could not get shadow root for element', ele);
18772
- res(ele);
18773
- return;
18774
- }
18775
-
18776
- counter++;
18777
-
18778
- if (!ele?.shadowRoot) {
18779
- setTimeout(check);
18780
- } else {
18781
- res(ele.shadowRoot);
18782
- }
18783
- };
18784
- check();
18785
- });
18786
- };
18787
-
18788
19194
  const portalMixin =
18789
- ({ name, selector, mappings = {}, forward: { attributes = [], include = true } = {} }) =>
19195
+ ({
19196
+ name,
19197
+ selector,
19198
+ mappings = {},
19199
+ // Static css for the portal's own root, for rules that should not become themeable knobs.
19200
+ style = '',
19201
+ // `false` forwards nothing to the portal element. It needs its own value because an empty
19202
+ // `attributes` list already means "no filter", so it forwards everything rather than nothing.
19203
+ // Forwarding is wrong for a portal whose element is not a copy of the host, where attributes
19204
+ // like `data` or `label` would land somewhere that does not expect them.
19205
+ forward = {},
19206
+ }) =>
18790
19207
  (superclass) => {
19208
+
18791
19209
  const eleDisplayName = name;
18792
19210
 
18793
19211
  const BaseClass = createStyleMixin({
18794
19212
  mappings,
19213
+ style,
18795
19214
  })(superclass);
18796
19215
 
18797
19216
  return class PortalMixinClass extends BaseClass {
@@ -18817,7 +19236,7 @@ const portalMixin =
18817
19236
  }
18818
19237
  };
18819
19238
 
18820
- const getPortalElement = withWaitForShadowRoot(getRootElement);
19239
+ const getPortalElement = waitForShadowRoot$1(getRootElement);
18821
19240
 
18822
19241
  super({
18823
19242
  getRootElement: getPortalElement,
@@ -18848,9 +19267,12 @@ const portalMixin =
18848
19267
  // Initialize portal element lookup here (deferred from constructor for React compatibility)
18849
19268
  this.#portalEle = this.#getPortalElement();
18850
19269
  const portalEle = await this.#portalEle;
18851
- forwardAttrs$1(this, portalEle, {
18852
- [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
18853
- });
19270
+ if (forward !== false) {
19271
+ const { attributes = [], include = true } = forward;
19272
+ forwardAttrs$1(this, portalEle, {
19273
+ [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
19274
+ });
19275
+ }
18854
19276
 
18855
19277
  this.#handleHoverAttribute();
18856
19278
  }
@@ -31749,7 +32171,7 @@ const alert = {
31749
32171
  [vars$2.horizontalPadding]: '0',
31750
32172
  [vars$2.verticalPadding]: '0',
31751
32173
  [vars$2.gap]: `0.5em`,
31752
- [vars$2.fontSize]: useVar(vars$1a.fontSize),
32174
+ [vars$2.fontSize]: useVar(vars$1b.fontSize),
31753
32175
 
31754
32176
  mode: {
31755
32177
  error: {
@@ -31992,7 +32414,7 @@ const components = {
31992
32414
  passcode: passcode$1,
31993
32415
  loaderRadial: loaderRadial$1,
31994
32416
  loaderLinear: loaderLinear$1,
31995
- comboBox: comboBox$1,
32417
+ comboBox: comboBox$2,
31996
32418
  phoneField: phoneField$1,
31997
32419
  phoneInputBoxField: phoneInputBoxField$1,
31998
32420
  newPassword: newPassword$1,
@@ -32039,6 +32461,7 @@ const components = {
32039
32461
  passwordStrength: passwordStrength$1,
32040
32462
  collapsibleContainer: collapsibleContainer$1,
32041
32463
  recoveryCodes: recoveryCodes$1,
32464
+ activeSessions: activeSessions$1,
32042
32465
  hcaptcha: hcaptcha$1,
32043
32466
  outboundApps: outboundApps$1,
32044
32467
  outboundAppButton: outboundAppButton$1,
@@ -32060,7 +32483,7 @@ const vars = Object.keys(components).reduce(
32060
32483
  );
32061
32484
 
32062
32485
  const defaultTheme = { globals: globals$1, components: theme };
32063
- const themeVars = { globals: vars$1c, components: vars };
32486
+ const themeVars = { globals: vars$1d, components: vars };
32064
32487
 
32065
32488
  const colors = {
32066
32489
  surface: {
@@ -32862,6 +33285,7 @@ var calcScore = /*#__PURE__*/Object.freeze({
32862
33285
  options: options
32863
33286
  });
32864
33287
 
33288
+ exports.ActiveSessionsClass = ActiveSessionsClass;
32865
33289
  exports.AddressFieldClass = AddressFieldClass;
32866
33290
  exports.AlertClass = AlertClass;
32867
33291
  exports.AnchoredClass = AnchoredClass;