@descope/web-components-ui 3.22.2 → 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.
Files changed (39) hide show
  1. package/dist/cjs/index.cjs.js +1035 -593
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +1380 -937
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/67.js +1 -1
  6. package/dist/umd/67.js.map +1 -1
  7. package/dist/umd/8961.js +1 -1
  8. package/dist/umd/8961.js.map +1 -1
  9. package/dist/umd/9365.js +1 -1
  10. package/dist/umd/9365.js.map +1 -1
  11. package/dist/umd/9582.js +1 -1
  12. package/dist/umd/9582.js.map +1 -1
  13. package/dist/umd/DescopeDev.js +1 -1
  14. package/dist/umd/DescopeDev.js.map +1 -1
  15. package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js +1 -1
  16. package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js.map +1 -1
  17. package/dist/umd/descope-active-sessions.js +3 -0
  18. package/dist/umd/descope-active-sessions.js.LICENSE.txt +5 -0
  19. package/dist/umd/descope-active-sessions.js.map +1 -0
  20. package/dist/umd/descope-alert-index-js.js +1 -1
  21. package/dist/umd/descope-alert-index-js.js.map +1 -1
  22. package/dist/umd/descope-enriched-text.js +1 -1
  23. package/dist/umd/descope-enriched-text.js.map +1 -1
  24. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
  25. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js.map +1 -1
  26. package/dist/umd/descope-new-password-index-js.js +1 -1
  27. package/dist/umd/descope-new-password-index-js.js.map +1 -1
  28. package/dist/umd/descope-password-index-js.js +1 -1
  29. package/dist/umd/descope-password-index-js.js.map +1 -1
  30. package/dist/umd/descope-tooltip.js +1 -1
  31. package/dist/umd/descope-tooltip.js.map +1 -1
  32. package/dist/umd/index.js +1 -1
  33. package/dist/umd/index.js.map +1 -1
  34. package/package.json +43 -42
  35. package/src/components/descope-password/PasswordClass.js +14 -3
  36. package/src/helpers/componentHelpers.js +34 -0
  37. package/src/mixins/createStyleMixin/index.js +11 -2
  38. package/src/mixins/portalMixin.js +35 -36
  39. package/src/theme/components/index.js +2 -0
@@ -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;
@@ -3957,6 +4027,13 @@ class EnrichedText extends createBaseClass$1({
3957
4027
  e.stopPropagation();
3958
4028
  }
3959
4029
  });
4030
+
4031
+ // The SDK submits the form (and prevents link activation) on any Enter that reaches the flow root
4032
+ this.contentNode?.addEventListener('keydown', (e) => {
4033
+ if (e.key === 'Enter' && e.target instanceof HTMLAnchorElement) {
4034
+ e.stopPropagation();
4035
+ }
4036
+ });
3960
4037
  }
3961
4038
 
3962
4039
  static get observedAttributes() {
@@ -4132,12 +4209,12 @@ const EnrichedTextClass = compose(
4132
4209
  componentNameValidationMixin$1,
4133
4210
  )(EnrichedText);
4134
4211
 
4135
- const componentName$1o = getComponentName('link');
4212
+ const componentName$1p = getComponentName('link');
4136
4213
 
4137
4214
  const observedAttrs$8 = ['href', 'readonly'];
4138
4215
 
4139
4216
  class RawLink extends createBaseClass$1({
4140
- componentName: componentName$1o,
4217
+ componentName: componentName$1p,
4141
4218
  baseSelector: ':host a',
4142
4219
  }) {
4143
4220
  static get observedAttributes() {
@@ -4212,12 +4289,12 @@ const selectors$3 = {
4212
4289
  text: { selector: () => TextClass.componentName },
4213
4290
  };
4214
4291
 
4215
- 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;
4216
4293
 
4217
4294
  const LinkClass = compose(
4218
4295
  createStyleMixin$1({
4219
4296
  mappings: {
4220
- hostWidth: { ...host$C, property: 'width' },
4297
+ hostWidth: { ...host$D, property: 'width' },
4221
4298
  hostDirection: { ...text$2, property: 'direction' },
4222
4299
  textAlign: wrapper$1,
4223
4300
  textDecoration: {
@@ -4238,31 +4315,31 @@ const LinkClass = compose(
4238
4315
  )(RawLink);
4239
4316
 
4240
4317
  const globalRefs$I = getThemeRefs$1(globals);
4241
- const vars$19 = LinkClass.cssVarList;
4318
+ const vars$1a = LinkClass.cssVarList;
4242
4319
 
4243
4320
  const link$1 = {
4244
- [vars$19.hostDirection]: globalRefs$I.direction,
4245
- [vars$19.cursor]: 'pointer',
4321
+ [vars$1a.hostDirection]: globalRefs$I.direction,
4322
+ [vars$1a.cursor]: 'pointer',
4246
4323
 
4247
- [vars$19.textColor]: globalRefs$I.colors.primary.main,
4324
+ [vars$1a.textColor]: globalRefs$I.colors.primary.main,
4248
4325
 
4249
4326
  textAlign: {
4250
- right: { [vars$19.textAlign]: 'right' },
4251
- left: { [vars$19.textAlign]: 'left' },
4252
- center: { [vars$19.textAlign]: 'center' },
4327
+ right: { [vars$1a.textAlign]: 'right' },
4328
+ left: { [vars$1a.textAlign]: 'left' },
4329
+ center: { [vars$1a.textAlign]: 'center' },
4253
4330
  },
4254
4331
 
4255
4332
  _fullWidth: {
4256
- [vars$19.hostWidth]: '100%',
4333
+ [vars$1a.hostWidth]: '100%',
4257
4334
  },
4258
4335
 
4259
4336
  _hover: {
4260
- [vars$19.textDecoration]: 'underline',
4337
+ [vars$1a.textDecoration]: 'underline',
4261
4338
  },
4262
4339
 
4263
4340
  mode: {
4264
4341
  secondary: {
4265
- [vars$19.textColor]: globalRefs$I.colors.secondary.main,
4342
+ [vars$1a.textColor]: globalRefs$I.colors.secondary.main,
4266
4343
  },
4267
4344
  },
4268
4345
  };
@@ -4270,37 +4347,37 @@ const link$1 = {
4270
4347
  var link$2 = /*#__PURE__*/Object.freeze({
4271
4348
  __proto__: null,
4272
4349
  default: link$1,
4273
- vars: vars$19
4350
+ vars: vars$1a
4274
4351
  });
4275
4352
 
4276
4353
  const globalRefs$H = getThemeRefs$1(globals);
4277
- const vars$18 = EnrichedTextClass.cssVarList;
4354
+ const vars$19 = EnrichedTextClass.cssVarList;
4278
4355
 
4279
4356
  const enrichedText = {
4280
- [vars$18.hostDirection]: globalRefs$H.direction,
4281
- [vars$18.hostWidth]: useVar$1(vars$1a.hostWidth),
4357
+ [vars$19.hostDirection]: globalRefs$H.direction,
4358
+ [vars$19.hostWidth]: useVar$1(vars$1b.hostWidth),
4282
4359
 
4283
- [vars$18.textLineHeight]: useVar$1(vars$1a.textLineHeight),
4284
- [vars$18.textColor]: useVar$1(vars$1a.textColor),
4285
- [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),
4286
4363
 
4287
- [vars$18.fontSize]: useVar$1(vars$1a.fontSize),
4288
- [vars$18.fontWeight]: useVar$1(vars$1a.fontWeight),
4289
- [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),
4290
4367
 
4291
- [vars$18.linkColor]: useVar$1(vars$19.textColor),
4292
- [vars$18.linkTextDecoration]: 'none',
4293
- [vars$18.linkHoverTextDecoration]: 'underline',
4368
+ [vars$19.linkColor]: useVar$1(vars$1a.textColor),
4369
+ [vars$19.linkTextDecoration]: 'none',
4370
+ [vars$19.linkHoverTextDecoration]: 'underline',
4294
4371
 
4295
- [vars$18.fontWeightBold]: '900',
4296
- [vars$18.minWidth]: '0.25em',
4297
- [vars$18.minHeight]: '1.35em',
4372
+ [vars$19.fontWeightBold]: '900',
4373
+ [vars$19.minWidth]: '0.25em',
4374
+ [vars$19.minHeight]: '1.35em',
4298
4375
 
4299
- [vars$18.hostDisplay]: 'inline-block',
4376
+ [vars$19.hostDisplay]: 'inline-block',
4300
4377
 
4301
4378
  _empty: {
4302
4379
  _hideWhenEmpty: {
4303
- [vars$18.hostDisplay]: 'none',
4380
+ [vars$19.hostDisplay]: 'none',
4304
4381
  },
4305
4382
  },
4306
4383
  };
@@ -4308,10 +4385,10 @@ const enrichedText = {
4308
4385
  var enrichedText$1 = /*#__PURE__*/Object.freeze({
4309
4386
  __proto__: null,
4310
4387
  default: enrichedText,
4311
- vars: vars$18
4388
+ vars: vars$19
4312
4389
  });
4313
4390
 
4314
- const componentName$1n = getComponentName('combo-box');
4391
+ const componentName$1o = getComponentName('combo-box');
4315
4392
 
4316
4393
  const ComboBoxMixin = (superclass) =>
4317
4394
  class ComboBoxMixinClass extends superclass {
@@ -4698,7 +4775,7 @@ const ComboBoxMixin = (superclass) =>
4698
4775
  };
4699
4776
 
4700
4777
  const {
4701
- host: host$B,
4778
+ host: host$C,
4702
4779
  inputField: inputField$6,
4703
4780
  inputElement: inputElement$3,
4704
4781
  placeholder: placeholder$3,
@@ -4730,10 +4807,10 @@ const {
4730
4807
  const ComboBoxClass = compose(
4731
4808
  createStyleMixin$1({
4732
4809
  mappings: {
4733
- hostWidth: { ...host$B, property: 'width' },
4734
- hostDirection: { ...host$B, property: 'direction' },
4810
+ hostWidth: { ...host$C, property: 'width' },
4811
+ hostDirection: { ...host$C, property: 'direction' },
4735
4812
  // we apply font-size also on the host so we can set its width with em
4736
- fontSize: [{}, host$B],
4813
+ fontSize: [{}, host$C],
4737
4814
  fontFamily: [label$9, placeholder$3, inputField$6, helperText$a, errorMessage$d],
4738
4815
  labelFontSize: { ...label$9, property: 'font-size' },
4739
4816
  labelFontWeight: { ...label$9, property: 'font-weight' },
@@ -5008,12 +5085,12 @@ const ComboBoxClass = compose(
5008
5085
  'loading',
5009
5086
  'style',
5010
5087
  ],
5011
- componentName: componentName$1n,
5088
+ componentName: componentName$1o,
5012
5089
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
5013
5090
  }),
5014
5091
  );
5015
5092
 
5016
- const componentName$1m = getComponentName('input-wrapper');
5093
+ const componentName$1n = getComponentName('input-wrapper');
5017
5094
  const globalRefs$G = getThemeRefs$1(globals);
5018
5095
 
5019
5096
  const [theme$2, refs$1] = createHelperVars$1(
@@ -5143,120 +5220,120 @@ const [theme$2, refs$1] = createHelperVars$1(
5143
5220
  inputTextSecurity: 'disc',
5144
5221
  },
5145
5222
  },
5146
- componentName$1m,
5223
+ componentName$1n,
5147
5224
  );
5148
5225
 
5149
5226
  const globalRefs$F = getThemeRefs$1(globals);
5150
- const vars$17 = ComboBoxClass.cssVarList;
5151
-
5152
- const comboBox = {
5153
- [vars$17.hostWidth]: refs$1.width,
5154
- [vars$17.hostDirection]: refs$1.direction,
5155
- [vars$17.fontSize]: refs$1.fontSize,
5156
- [vars$17.fontFamily]: refs$1.fontFamily,
5157
- [vars$17.labelFontSize]: refs$1.labelFontSize,
5158
- [vars$17.labelFontWeight]: refs$1.labelFontWeight,
5159
- [vars$17.inputValueFontWeight]: refs$1.inputValueFontWeight,
5160
- [vars$17.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
5161
- [vars$17.helperTextFontWeight]: refs$1.helperTextFontWeight,
5162
- [vars$17.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
5163
- [vars$17.labelTextColor]: refs$1.labelTextColor,
5164
- [vars$17.errorMessageTextColor]: refs$1.errorMessageTextColor,
5165
- [vars$17.inputBorderColor]: refs$1.borderColor,
5166
- [vars$17.inputBorderWidth]: refs$1.borderWidth,
5167
- [vars$17.inputBorderStyle]: refs$1.borderStyle,
5168
- [vars$17.inputBorderRadius]: refs$1.borderRadius,
5169
- [vars$17.inputOutlineColor]: refs$1.outlineColor,
5170
- [vars$17.inputOutlineOffset]: refs$1.outlineOffset,
5171
- [vars$17.inputOutlineWidth]: refs$1.outlineWidth,
5172
- [vars$17.inputOutlineStyle]: refs$1.outlineStyle,
5173
- [vars$17.labelRequiredIndicator]: refs$1.requiredIndicator,
5174
- [vars$17.inputValueTextColor]: refs$1.valueTextColor,
5175
- [vars$17.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
5176
- [vars$17.inputBackgroundColor]: refs$1.backgroundColor,
5177
- [vars$17.inputHorizontalPadding]: refs$1.horizontalPadding,
5178
- [vars$17.inputHeight]: refs$1.inputHeight,
5179
- [vars$17.inputDropdownButtonColor]: globalRefs$F.colors.surface.dark,
5180
- [vars$17.inputDropdownButtonCursor]: 'pointer',
5181
- [vars$17.inputDropdownButtonSize]: refs$1.toggleButtonSize,
5182
- [vars$17.inputDropdownButtonOffset]: globalRefs$F.spacing.xs,
5183
- [vars$17.overlayItemPaddingInlineStart]: globalRefs$F.spacing.xs,
5184
- [vars$17.overlayItemPaddingInlineEnd]: globalRefs$F.spacing.lg,
5185
- [vars$17.labelPosition]: refs$1.labelPosition,
5186
- [vars$17.labelTopPosition]: refs$1.labelTopPosition,
5187
- [vars$17.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
5188
- [vars$17.inputTransformY]: refs$1.inputTransformY,
5189
- [vars$17.inputTransition]: refs$1.inputTransition,
5190
- [vars$17.marginInlineStart]: refs$1.marginInlineStart,
5191
- [vars$17.placeholderOpacity]: refs$1.placeholderOpacity,
5192
- [vars$17.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
5193
- [vars$17.valueInputHeight]: refs$1.valueInputHeight,
5194
- [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,
5195
5272
 
5196
5273
  // error message icon
5197
- [vars$17.errorMessageIcon]: refs$1.errorMessageIcon,
5198
- [vars$17.errorMessageIconSize]: refs$1.errorMessageIconSize,
5199
- [vars$17.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
5200
- [vars$17.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
5201
- [vars$17.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
5202
- [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,
5203
5280
 
5204
5281
  _readonly: {
5205
- [vars$17.inputDropdownButtonCursor]: 'default',
5282
+ [vars$18.inputDropdownButtonCursor]: 'default',
5206
5283
  },
5207
5284
 
5208
5285
  // Overlay theme exposed via the component:
5209
- [vars$17.overlayFontSize]: refs$1.fontSize,
5210
- [vars$17.overlayFontFamily]: refs$1.fontFamily,
5211
- [vars$17.overlayCursor]: 'pointer',
5212
- [vars$17.overlayItemBoxShadow]: 'none',
5213
- [vars$17.overlayBackground]: refs$1.backgroundColor,
5214
- [vars$17.overlayTextColor]: refs$1.valueTextColor,
5215
- [vars$17.overlayCheckmarkDisplay]: 'initial',
5216
- [vars$17.overlaySelectedItemBackground]: 'initial',
5217
- [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]:
5218
5295
  globalRefs$F.colors.primary.highlight,
5219
- [vars$17.overlaySelectedItemFocusBackground]:
5296
+ [vars$18.overlaySelectedItemFocusBackground]:
5220
5297
  globalRefs$F.colors.primary.highlight,
5221
- [vars$17.overlayItemHoverBackground]: globalRefs$F.colors.primary.highlight,
5222
- [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,
5223
5300
 
5224
5301
  // Overlay direct theme:
5225
- [vars$17.overlay.margin]: '0',
5302
+ [vars$18.overlay.margin]: '0',
5226
5303
 
5227
- [vars$17.overlay.contentHeight]: '100%',
5228
- [vars$17.overlay.contentOpacity]: '1',
5229
- [vars$17.overlay.scrollerMinHeight]: '1px',
5304
+ [vars$18.overlay.contentHeight]: '100%',
5305
+ [vars$18.overlay.contentOpacity]: '1',
5306
+ [vars$18.overlay.scrollerMinHeight]: '1px',
5230
5307
  _loading: {
5231
- [vars$17.overlay.loaderTop]: '50%',
5232
- [vars$17.overlay.loaderLeft]: '50%',
5233
- [vars$17.overlay.loaderRight]: 'auto',
5308
+ [vars$18.overlay.loaderTop]: '50%',
5309
+ [vars$18.overlay.loaderLeft]: '50%',
5310
+ [vars$18.overlay.loaderRight]: 'auto',
5234
5311
  // Margin has to be negative to center the loader, "transform" can't be used because the animation uses it
5235
5312
  // Margin has to be half of the width/height of the loader to center it
5236
- [vars$17.overlay.loaderMargin]: '-15px 0 0 -15px',
5237
- [vars$17.overlay.loaderWidth]: '30px',
5238
- [vars$17.overlay.loaderHeight]: '30px',
5239
- [vars$17.overlay.loaderBorder]: '2px solid transparent',
5240
- [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]:
5241
5318
  `${globalRefs$F.colors.primary.highlight} ${globalRefs$F.colors.primary.highlight} ${globalRefs$F.colors.primary.main} ${globalRefs$F.colors.primary.main}`,
5242
- [vars$17.overlay.loaderBorderRadius]: '50%',
5243
- [vars$17.overlay.contentHeight]: '100px',
5244
- [vars$17.overlay.scrollerMinHeight]: '100px',
5245
- [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',
5246
5323
  },
5247
5324
  };
5248
5325
 
5249
- var comboBox$1 = /*#__PURE__*/Object.freeze({
5326
+ var comboBox$2 = /*#__PURE__*/Object.freeze({
5250
5327
  __proto__: null,
5251
- comboBox: comboBox,
5252
- default: comboBox,
5253
- vars: vars$17
5328
+ comboBox: comboBox$1,
5329
+ default: comboBox$1,
5330
+ vars: vars$18
5254
5331
  });
5255
5332
 
5256
- const componentName$1l = getComponentName('badge');
5333
+ const componentName$1m = getComponentName('badge');
5257
5334
 
5258
5335
  class RawBadge extends createBaseClass$1({
5259
- componentName: componentName$1l,
5336
+ componentName: componentName$1m,
5260
5337
  baseSelector: ':host > div',
5261
5338
  }) {
5262
5339
  static get observedAttributes() {
@@ -5352,46 +5429,46 @@ const [helperTheme$6, helperRefs$6] = createHelperVars$1(
5352
5429
  {
5353
5430
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
5354
5431
  },
5355
- componentName$1l,
5432
+ componentName$1m,
5356
5433
  );
5357
5434
 
5358
5435
  const { shadowColor: shadowColor$8 } = helperRefs$6;
5359
5436
 
5360
- const vars$16 = BadgeClass.cssVarList;
5437
+ const vars$17 = BadgeClass.cssVarList;
5361
5438
 
5362
5439
  const badge$2 = {
5363
5440
  ...helperTheme$6,
5364
5441
 
5365
- [vars$16.hostWidth]: 'fit-content',
5366
- [vars$16.hostDirection]: globalRefs$E.direction,
5442
+ [vars$17.hostWidth]: 'fit-content',
5443
+ [vars$17.hostDirection]: globalRefs$E.direction,
5367
5444
 
5368
- [vars$16.textAlign]: 'center',
5445
+ [vars$17.textAlign]: 'center',
5369
5446
 
5370
- [vars$16.fontFamily]: globalRefs$E.fonts.font1.family,
5371
- [vars$16.fontWeight]: '400',
5447
+ [vars$17.fontFamily]: globalRefs$E.fonts.font1.family,
5448
+ [vars$17.fontWeight]: '400',
5372
5449
 
5373
- [vars$16.verticalPadding]: '0.25em',
5374
- [vars$16.horizontalPadding]: '0.5em',
5450
+ [vars$17.verticalPadding]: '0.25em',
5451
+ [vars$17.horizontalPadding]: '0.5em',
5375
5452
 
5376
- [vars$16.borderWidth]: globalRefs$E.border.xs,
5377
- [vars$16.borderRadius]: globalRefs$E.radius.xs,
5378
- [vars$16.borderColor]: 'transparent',
5379
- [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',
5380
5457
 
5381
5458
  _fullWidth: {
5382
- [vars$16.hostWidth]: '100%',
5459
+ [vars$17.hostWidth]: '100%',
5383
5460
  },
5384
5461
 
5385
5462
  size: {
5386
- xs: { [vars$16.fontSize]: '12px' },
5387
- sm: { [vars$16.fontSize]: '14px' },
5388
- md: { [vars$16.fontSize]: '16px' },
5389
- 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' },
5390
5467
  },
5391
5468
 
5392
5469
  variant: {
5393
5470
  contained: {
5394
- [vars$16.backgroundColor]: globalRefs$E.colors.surface.main,
5471
+ [vars$17.backgroundColor]: globalRefs$E.colors.surface.main,
5395
5472
  },
5396
5473
  },
5397
5474
 
@@ -5410,58 +5487,58 @@ const badge$2 = {
5410
5487
  // },
5411
5488
 
5412
5489
  _shrinkToIndicator: {
5413
- [vars$16.hostWidth]: '13px',
5414
- [vars$16.hostHeight]: '13px',
5415
- [vars$16.borderRadius]: '50%',
5416
- [vars$16.fontSize]: '0',
5417
- [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',
5418
5495
  },
5419
5496
 
5420
5497
  mode: {
5421
5498
  default: {
5422
- [vars$16.textColor]: globalRefs$E.colors.surface.dark,
5499
+ [vars$17.textColor]: globalRefs$E.colors.surface.dark,
5423
5500
  _bordered: {
5424
- [vars$16.borderColor]: globalRefs$E.colors.surface.light,
5501
+ [vars$17.borderColor]: globalRefs$E.colors.surface.light,
5425
5502
  },
5426
5503
  },
5427
5504
  primary: {
5428
- [vars$16.textColor]: globalRefs$E.colors.primary.main,
5505
+ [vars$17.textColor]: globalRefs$E.colors.primary.main,
5429
5506
  _bordered: {
5430
- [vars$16.borderColor]: globalRefs$E.colors.primary.light,
5507
+ [vars$17.borderColor]: globalRefs$E.colors.primary.light,
5431
5508
  },
5432
5509
  },
5433
5510
  secondary: {
5434
- [vars$16.textColor]: globalRefs$E.colors.secondary.main,
5511
+ [vars$17.textColor]: globalRefs$E.colors.secondary.main,
5435
5512
  _bordered: {
5436
- [vars$16.borderColor]: globalRefs$E.colors.secondary.light,
5513
+ [vars$17.borderColor]: globalRefs$E.colors.secondary.light,
5437
5514
  },
5438
5515
  },
5439
5516
  error: {
5440
- [vars$16.textColor]: globalRefs$E.colors.error.main,
5517
+ [vars$17.textColor]: globalRefs$E.colors.error.main,
5441
5518
  _bordered: {
5442
- [vars$16.borderColor]: globalRefs$E.colors.error.light,
5519
+ [vars$17.borderColor]: globalRefs$E.colors.error.light,
5443
5520
  },
5444
5521
  },
5445
5522
  success: {
5446
- [vars$16.textColor]: globalRefs$E.colors.success.main,
5523
+ [vars$17.textColor]: globalRefs$E.colors.success.main,
5447
5524
  _bordered: {
5448
- [vars$16.borderColor]: globalRefs$E.colors.success.light,
5525
+ [vars$17.borderColor]: globalRefs$E.colors.success.light,
5449
5526
  },
5450
5527
  },
5451
5528
  },
5452
5529
 
5453
5530
  shadow: {
5454
5531
  sm: {
5455
- [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}`,
5456
5533
  },
5457
5534
  md: {
5458
- [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}`,
5459
5536
  },
5460
5537
  lg: {
5461
- [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}`,
5462
5539
  },
5463
5540
  xl: {
5464
- [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}`,
5465
5542
  },
5466
5543
  },
5467
5544
  };
@@ -5469,12 +5546,12 @@ const badge$2 = {
5469
5546
  var badge$3 = /*#__PURE__*/Object.freeze({
5470
5547
  __proto__: null,
5471
5548
  default: badge$2,
5472
- vars: vars$16
5549
+ vars: vars$17
5473
5550
  });
5474
5551
 
5475
- const componentName$1k = getComponentName('avatar');
5552
+ const componentName$1l = getComponentName('avatar');
5476
5553
  class RawAvatar extends createBaseClass$1({
5477
- componentName: componentName$1k,
5554
+ componentName: componentName$1l,
5478
5555
  baseSelector: ':host > .wrapper',
5479
5556
  }) {
5480
5557
  constructor() {
@@ -5552,7 +5629,7 @@ class RawAvatar extends createBaseClass$1({
5552
5629
  }
5553
5630
  }
5554
5631
 
5555
- const { host: host$A, editableBadge, avatar: avatar$2 } = {
5632
+ const { host: host$B, editableBadge, avatar: avatar$2 } = {
5556
5633
  host: { selector: () => ':host' },
5557
5634
  editableBadge: { selector: '> .editableBadge' },
5558
5635
  avatar: { selector: 'vaadin-avatar' },
@@ -5562,12 +5639,12 @@ const AvatarClass = compose(
5562
5639
  createStyleMixin$1({
5563
5640
  mappings: {
5564
5641
  hostWidth: [
5565
- { ...host$A, property: 'width' },
5566
- { ...host$A, property: 'min-width' },
5642
+ { ...host$B, property: 'width' },
5643
+ { ...host$B, property: 'min-width' },
5567
5644
  ],
5568
- hostHeight: { ...host$A, property: 'height' },
5569
- cursor: [avatar$2, host$A],
5570
- hostDirection: { ...host$A, property: 'direction' },
5645
+ hostHeight: { ...host$B, property: 'height' },
5646
+ cursor: [avatar$2, host$B],
5647
+ hostDirection: { ...host$B, property: 'direction' },
5571
5648
  avatarTextColor: { ...avatar$2, property: 'color' },
5572
5649
  avatarBackgroundColor: { ...avatar$2, property: 'background-color' },
5573
5650
  editableIconColor: { ...editableBadge, property: 'color' },
@@ -5625,39 +5702,39 @@ const avatar = {
5625
5702
  },
5626
5703
  };
5627
5704
 
5628
- const vars$15 = {
5705
+ const vars$16 = {
5629
5706
  ...compVars$8,
5630
5707
  };
5631
5708
 
5632
5709
  var avatar$1 = /*#__PURE__*/Object.freeze({
5633
5710
  __proto__: null,
5634
5711
  default: avatar,
5635
- vars: vars$15
5712
+ vars: vars$16
5636
5713
  });
5637
5714
 
5638
- const vars$14 = IconClass.cssVarList;
5715
+ const vars$15 = IconClass.cssVarList;
5639
5716
 
5640
5717
  const icon$3 = {};
5641
5718
 
5642
5719
  var icon$4 = /*#__PURE__*/Object.freeze({
5643
5720
  __proto__: null,
5644
5721
  default: icon$3,
5645
- vars: vars$14
5722
+ vars: vars$15
5646
5723
  });
5647
5724
 
5648
- const vars$13 = ImageClass.cssVarList;
5725
+ const vars$14 = ImageClass.cssVarList;
5649
5726
 
5650
5727
  const image = {};
5651
5728
 
5652
5729
  var image$1 = /*#__PURE__*/Object.freeze({
5653
5730
  __proto__: null,
5654
5731
  default: image,
5655
- vars: vars$13
5732
+ vars: vars$14
5656
5733
  });
5657
5734
 
5658
- const componentName$1j = getComponentName('list-item');
5735
+ const componentName$1k = getComponentName('list-item');
5659
5736
 
5660
- const customMixin$f = (superclass) =>
5737
+ const customMixin$g = (superclass) =>
5661
5738
  class ListItemMixinClass extends superclass {
5662
5739
  constructor() {
5663
5740
  super();
@@ -5710,14 +5787,14 @@ const ListItemClass = compose(
5710
5787
  }),
5711
5788
  draggableMixin$1,
5712
5789
  componentNameValidationMixin$1,
5713
- customMixin$f,
5790
+ customMixin$g,
5714
5791
  activeableMixin,
5715
- )(createBaseClass$1({ componentName: componentName$1j, baseSelector: 'slot' }));
5792
+ )(createBaseClass$1({ componentName: componentName$1k, baseSelector: 'slot' }));
5716
5793
 
5717
- const componentName$1i = getComponentName('list');
5794
+ const componentName$1j = getComponentName('list');
5718
5795
 
5719
5796
  class RawList extends createBaseClass$1({
5720
- componentName: componentName$1i,
5797
+ componentName: componentName$1j,
5721
5798
  baseSelector: '.wrapper',
5722
5799
  }) {
5723
5800
  static get observedAttributes() {
@@ -5899,7 +5976,7 @@ const ListClass = compose(
5899
5976
  componentNameValidationMixin$1,
5900
5977
  )(RawList);
5901
5978
 
5902
- const componentName$1h = getComponentName('apps-list');
5979
+ const componentName$1i = getComponentName('apps-list');
5903
5980
 
5904
5981
  const itemRenderer$6 = ({ name, icon, url }, _, ref) => `
5905
5982
  <a ${url ? `href="${url}" title="${url}"` : ''} ${ref.openInSameWindow ? '' : 'target="_blank"'}>
@@ -5919,7 +5996,7 @@ const itemRenderer$6 = ({ name, icon, url }, _, ref) => `
5919
5996
  </a>
5920
5997
  `;
5921
5998
 
5922
- const customMixin$e = (superclass) =>
5999
+ const customMixin$f = (superclass) =>
5923
6000
  class AppsListMixinClass extends superclass {
5924
6001
  // size controls both item logo size and font size
5925
6002
  get size() {
@@ -6025,13 +6102,13 @@ const AppsListClass = compose(
6025
6102
  }),
6026
6103
  draggableMixin$1,
6027
6104
  componentNameValidationMixin$1,
6028
- customMixin$e,
6105
+ customMixin$f,
6029
6106
  )(
6030
6107
  createProxy$1({
6031
6108
  slots: ['empty-state'],
6032
6109
  wrappedEleName: 'descope-list',
6033
6110
  excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
6034
- componentName: componentName$1h,
6111
+ componentName: componentName$1i,
6035
6112
  style: () => `
6036
6113
  :host {
6037
6114
  width: 100%;
@@ -6066,60 +6143,60 @@ const AppsListClass = compose(
6066
6143
  }),
6067
6144
  );
6068
6145
 
6069
- const vars$12 = AppsListClass.cssVarList;
6146
+ const vars$13 = AppsListClass.cssVarList;
6070
6147
  const globalRefs$C = getThemeRefs$1(globals);
6071
6148
 
6072
6149
  const defaultHeight = '400px';
6073
6150
 
6074
6151
  const appsList = {
6075
- [vars$12.itemsTextAlign]: 'start',
6076
- [vars$12.hostDirection]: globalRefs$C.direction,
6077
- [vars$12.maxHeight]: defaultHeight,
6078
- [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,
6079
6156
 
6080
6157
  _empty: {
6081
- [vars$12.minHeight]: defaultHeight,
6158
+ [vars$13.minHeight]: defaultHeight,
6082
6159
  },
6083
6160
 
6084
6161
  size: {
6085
6162
  xs: {
6086
- [vars$12.itemsFontSize]: '14px',
6087
- [vars$12.itemsFontWeight]: 'normal',
6163
+ [vars$13.itemsFontSize]: '14px',
6164
+ [vars$13.itemsFontWeight]: 'normal',
6088
6165
  },
6089
6166
  sm: {
6090
- [vars$12.itemsFontSize]: '14px',
6091
- [vars$12.itemsFontWeight]: 'normal',
6167
+ [vars$13.itemsFontSize]: '14px',
6168
+ [vars$13.itemsFontWeight]: 'normal',
6092
6169
  },
6093
6170
  md: {
6094
- [vars$12.itemsFontSize]: '16px',
6095
- [vars$12.itemsFontWeight]: 'normal',
6171
+ [vars$13.itemsFontSize]: '16px',
6172
+ [vars$13.itemsFontWeight]: 'normal',
6096
6173
  },
6097
6174
  lg: {
6098
- [vars$12.itemsFontSize]: '20px',
6099
- [vars$12.itemsFontWeight]: 'normal',
6175
+ [vars$13.itemsFontSize]: '20px',
6176
+ [vars$13.itemsFontWeight]: 'normal',
6100
6177
  },
6101
6178
  },
6102
6179
 
6103
6180
  itemPadding: {
6104
6181
  xs: {
6105
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.xs,
6106
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.xs,
6182
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.xs,
6183
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.xs,
6107
6184
  },
6108
6185
  sm: {
6109
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.sm,
6110
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.sm,
6186
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.sm,
6187
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.sm,
6111
6188
  },
6112
6189
  md: {
6113
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.md,
6114
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.md,
6190
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.md,
6191
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.md,
6115
6192
  },
6116
6193
  lg: {
6117
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.lg,
6118
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.lg,
6194
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.lg,
6195
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.lg,
6119
6196
  },
6120
6197
  xl: {
6121
- [vars$12.itemVerticalPadding]: globalRefs$C.spacing.xl,
6122
- [vars$12.itemHorizontalPadding]: globalRefs$C.spacing.xl,
6198
+ [vars$13.itemVerticalPadding]: globalRefs$C.spacing.xl,
6199
+ [vars$13.itemHorizontalPadding]: globalRefs$C.spacing.xl,
6123
6200
  },
6124
6201
  },
6125
6202
  };
@@ -6127,7 +6204,7 @@ const appsList = {
6127
6204
  var appsList$1 = /*#__PURE__*/Object.freeze({
6128
6205
  __proto__: null,
6129
6206
  default: appsList,
6130
- vars: vars$12
6207
+ vars: vars$13
6131
6208
  });
6132
6209
 
6133
6210
  const globalRefs$B = getThemeRefs$1(globals);
@@ -6136,7 +6213,7 @@ const compVars$7 = ListClass.cssVarList;
6136
6213
 
6137
6214
  const [helperTheme$5, helperRefs$5, helperVars$5] = createHelperVars$1(
6138
6215
  { shadowColor: '#00000020' },
6139
- componentName$1i,
6216
+ componentName$1j,
6140
6217
  );
6141
6218
 
6142
6219
  const { shadowColor: shadowColor$7 } = helperRefs$5;
@@ -6197,7 +6274,7 @@ const list = {
6197
6274
  },
6198
6275
  };
6199
6276
 
6200
- const vars$11 = {
6277
+ const vars$12 = {
6201
6278
  ...compVars$7,
6202
6279
  ...helperVars$5,
6203
6280
  };
@@ -6205,53 +6282,53 @@ const vars$11 = {
6205
6282
  var list$1 = /*#__PURE__*/Object.freeze({
6206
6283
  __proto__: null,
6207
6284
  default: list,
6208
- vars: vars$11
6285
+ vars: vars$12
6209
6286
  });
6210
6287
 
6211
6288
  const globalRefs$A = getThemeRefs$1(globals);
6212
6289
 
6213
- const vars$10 = ListItemClass.cssVarList;
6290
+ const vars$11 = ListItemClass.cssVarList;
6214
6291
 
6215
6292
  const listItem = {
6216
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.main,
6217
- [vars$10.verticalPadding]: globalRefs$A.spacing.lg,
6218
- [vars$10.horizontalPadding]: globalRefs$A.spacing.lg,
6219
- [vars$10.gap]: globalRefs$A.spacing.md,
6220
- [vars$10.borderStyle]: 'solid',
6221
- [vars$10.borderWidth]: globalRefs$A.border.xs,
6222
- [vars$10.borderColor]: globalRefs$A.colors.surface.main,
6223
- [vars$10.borderRadius]: globalRefs$A.radius.sm,
6224
- [vars$10.cursor]: 'pointer',
6225
- [vars$10.alignItems]: 'center',
6226
- [vars$10.flexDirection]: 'row',
6227
- [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',
6228
6305
 
6229
6306
  variant: {
6230
6307
  tile: {
6231
- [vars$10.alignItems]: 'flex-start',
6232
- [vars$10.flexDirection]: 'column',
6233
- [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,
6234
6311
  },
6235
6312
  },
6236
6313
 
6237
6314
  _hover: {
6238
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.highlight,
6315
+ [vars$11.backgroundColor]: globalRefs$A.colors.surface.highlight,
6239
6316
  },
6240
6317
 
6241
6318
  _active: {
6242
- [vars$10.backgroundColor]: globalRefs$A.colors.surface.main,
6243
- [vars$10.borderColor]: globalRefs$A.colors.primary.light,
6244
- [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}`,
6245
6322
  },
6246
6323
  };
6247
6324
 
6248
6325
  var listItem$1 = /*#__PURE__*/Object.freeze({
6249
6326
  __proto__: null,
6250
6327
  default: listItem,
6251
- vars: vars$10
6328
+ vars: vars$11
6252
6329
  });
6253
6330
 
6254
- const componentName$1g = getComponentName('multi-select-combo-box');
6331
+ const componentName$1h = getComponentName('multi-select-combo-box');
6255
6332
 
6256
6333
  const multiSelectComboBoxMixin = (superclass) =>
6257
6334
  class MultiSelectComboBoxMixinClass extends superclass {
@@ -6359,9 +6436,35 @@ const multiSelectComboBoxMixin = (superclass) =>
6359
6436
  );
6360
6437
  }
6361
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
+
6362
6457
  renderItems() {
6363
6458
  const template = this.getItemsTemplate();
6364
- 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 = '';
6365
6468
  }
6366
6469
 
6367
6470
  updateSelectedItems() {
@@ -6630,7 +6733,7 @@ const multiSelectComboBoxMixin = (superclass) =>
6630
6733
  };
6631
6734
 
6632
6735
  const {
6633
- host: host$z,
6736
+ host: host$A,
6634
6737
  inputField: inputField$5,
6635
6738
  inputElement: inputElement$2,
6636
6739
  placeholder: placeholder$2,
@@ -6670,9 +6773,9 @@ const {
6670
6773
  const MultiSelectComboBoxClass = compose(
6671
6774
  createStyleMixin$1({
6672
6775
  mappings: {
6673
- hostWidth: { ...host$z, property: 'width' },
6674
- hostDirection: { ...host$z, property: 'direction' },
6675
- fontSize: [{}, host$z],
6776
+ hostWidth: { ...host$A, property: 'width' },
6777
+ hostDirection: { ...host$A, property: 'direction' },
6778
+ fontSize: [{}, host$A],
6676
6779
  chipFontSize: { ...chipLabel, property: 'font-size' },
6677
6780
  fontFamily: [
6678
6781
  label$8,
@@ -6914,13 +7017,13 @@ const MultiSelectComboBoxClass = compose(
6914
7017
 
6915
7018
  `,
6916
7019
  excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],
6917
- componentName: componentName$1g,
7020
+ componentName: componentName$1h,
6918
7021
  includeForwardProps: ['items', 'renderer', 'selectedItems'],
6919
7022
  }),
6920
7023
  );
6921
7024
 
6922
- const componentName$1f = getComponentName('multi-line-mappings');
6923
- 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 });
6924
7027
 
6925
7028
  const parseJSON = (value, fallback, source = 'unknown') => {
6926
7029
  if (typeof value !== 'string' || !value?.trim()) {
@@ -7627,7 +7730,7 @@ class RawMultiLineMappingsClass extends BaseClass$9 {
7627
7730
  }
7628
7731
  }
7629
7732
 
7630
- const host$y = { selector: () => ':host' };
7733
+ const host$z = { selector: () => ':host' };
7631
7734
  const rows = { selector: '.rows' };
7632
7735
  const row = { selector: '.row' };
7633
7736
  const addAction = { selector: '.add-action' };
@@ -7635,9 +7738,9 @@ const addAction = { selector: '.add-action' };
7635
7738
  const MultiLineMappingsClass = compose(
7636
7739
  createStyleMixin$1({
7637
7740
  mappings: {
7638
- hostWidth: { ...host$y, property: 'width' },
7741
+ hostWidth: { ...host$z, property: 'width' },
7639
7742
  hostDirection: [
7640
- { ...host$y, property: 'direction' },
7743
+ { ...host$z, property: 'direction' },
7641
7744
  {
7642
7745
  selector: MultiSelectComboBoxClass.componentName,
7643
7746
  property: MultiSelectComboBoxClass.cssVarList.hostDirection,
@@ -7658,128 +7761,128 @@ const MultiLineMappingsClass = compose(
7658
7761
  draggableMixin$1,
7659
7762
  )(RawMultiLineMappingsClass);
7660
7763
 
7661
- const vars$$ = MultiLineMappingsClass.cssVarList;
7764
+ const vars$10 = MultiLineMappingsClass.cssVarList;
7662
7765
 
7663
7766
  const multiLineMappings = {
7664
- [vars$$.hostDirection]: refs$1.direction,
7767
+ [vars$10.hostDirection]: refs$1.direction,
7665
7768
 
7666
- [vars$$.rowsGap]: globals.spacing.sm,
7667
- [vars$$.rowGap]: globals.spacing.sm,
7668
- [vars$$.rowAlignItems]: 'flex-end',
7669
- [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',
7670
7773
 
7671
- [vars$$.addActionJustifyContent]: 'flex-start',
7672
- [vars$$.addActionMarginTop]: globals.spacing.xs,
7774
+ [vars$10.addActionJustifyContent]: 'flex-start',
7775
+ [vars$10.addActionMarginTop]: globals.spacing.xs,
7673
7776
 
7674
7777
  _fullWidth: {
7675
- [vars$$.hostWidth]: '100%',
7778
+ [vars$10.hostWidth]: '100%',
7676
7779
  },
7677
7780
  };
7678
7781
 
7679
7782
  var multiLineMappings$1 = /*#__PURE__*/Object.freeze({
7680
7783
  __proto__: null,
7681
7784
  default: multiLineMappings,
7682
- vars: vars$$
7785
+ vars: vars$10
7683
7786
  });
7684
7787
 
7685
7788
  const globalRefs$z = getThemeRefs$1(globals);
7686
- const vars$_ = MultiSelectComboBoxClass.cssVarList;
7789
+ const vars$$ = MultiSelectComboBoxClass.cssVarList;
7687
7790
 
7688
7791
  const multiSelectComboBox = {
7689
- [vars$_.hostWidth]: refs$1.width,
7690
- [vars$_.hostDirection]: refs$1.direction,
7691
- [vars$_.fontSize]: refs$1.fontSize,
7692
- [vars$_.fontFamily]: refs$1.fontFamily,
7693
- [vars$_.labelFontSize]: refs$1.labelFontSize,
7694
- [vars$_.labelFontWeight]: refs$1.labelFontWeight,
7695
- [vars$_.inputValueFontWeight]: refs$1.inputValueFontWeight,
7696
- [vars$_.inputPlaceholderFontWeight]: refs$1.inputPlaceholderFontWeight,
7697
- [vars$_.helperTextFontWeight]: refs$1.helperTextFontWeight,
7698
- [vars$_.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
7699
- [vars$_.labelTextColor]: refs$1.labelTextColor,
7700
- [vars$_.errorMessageTextColor]: refs$1.errorMessageTextColor,
7701
- [vars$_.inputBorderColor]: refs$1.borderColor,
7702
- [vars$_.inputBorderWidth]: refs$1.borderWidth,
7703
- [vars$_.inputBorderStyle]: refs$1.borderStyle,
7704
- [vars$_.inputBorderRadius]: refs$1.borderRadius,
7705
- [vars$_.inputOutlineColor]: refs$1.outlineColor,
7706
- [vars$_.inputOutlineOffset]: refs$1.outlineOffset,
7707
- [vars$_.inputOutlineWidth]: refs$1.outlineWidth,
7708
- [vars$_.inputOutlineStyle]: refs$1.outlineStyle,
7709
- [vars$_.labelRequiredIndicator]: refs$1.requiredIndicator,
7710
- [vars$_.inputValueTextColor]: refs$1.valueTextColor,
7711
- [vars$_.inputPlaceholderTextColor]: refs$1.placeholderTextColor,
7712
- [vars$_.inputBackgroundColor]: refs$1.backgroundColor,
7713
- [vars$_.inputHorizontalPadding]: refs$1.horizontalPadding,
7714
- [vars$_.inputVerticalPadding]: refs$1.verticalPadding,
7715
- [vars$_.inputHeight]: refs$1.inputHeight,
7716
- [vars$_.inputDropdownButtonColor]: globalRefs$z.colors.surface.dark,
7717
- [vars$_.inputDropdownButtonCursor]: 'pointer',
7718
- [vars$_.inputDropdownButtonSize]: refs$1.toggleButtonSize,
7719
- [vars$_.inputDropdownButtonOffset]: globalRefs$z.spacing.xs,
7720
- [vars$_.overlayItemPaddingInlineStart]: globalRefs$z.spacing.xs,
7721
- [vars$_.overlayItemPaddingInlineEnd]: globalRefs$z.spacing.lg,
7722
- [vars$_.chipFontSize]: refs$1.chipFontSize,
7723
- [vars$_.chipTextColor]: globalRefs$z.colors.surface.contrast,
7724
- [vars$_.chipBackgroundColor]: globalRefs$z.colors.surface.light,
7725
- [vars$_.labelPosition]: refs$1.labelPosition,
7726
- [vars$_.labelTopPosition]: refs$1.labelTopPosition,
7727
- [vars$_.labelLeftPosition]: refs$1.labelLeftPosition,
7728
- [vars$_.labelHorizontalPosition]: refs$1.labelHorizontalPosition,
7729
- [vars$_.inputTransformY]: refs$1.inputTransformY,
7730
- [vars$_.inputTransition]: refs$1.inputTransition,
7731
- [vars$_.marginInlineStart]: refs$1.marginInlineStart,
7732
- [vars$_.placeholderOpacity]: refs$1.placeholderOpacity,
7733
- [vars$_.inputVerticalAlignment]: refs$1.inputVerticalAlignment,
7734
-
7735
- [vars$_.errorMessageIcon]: refs$1.errorMessageIcon,
7736
- [vars$_.errorMessageIconSize]: refs$1.errorMessageIconSize,
7737
- [vars$_.errorMessageIconPadding]: refs$1.errorMessageIconPadding,
7738
- [vars$_.errorMessageIconRepeat]: refs$1.errorMessageIconRepeat,
7739
- [vars$_.errorMessageIconPosition]: refs$1.errorMessageIconPosition,
7740
- [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,
7741
7844
 
7742
7845
  labelType: {
7743
7846
  floating: {
7744
- [vars$_.inputHorizontalPadding]: '0.25em',
7847
+ [vars$$.inputHorizontalPadding]: '0.25em',
7745
7848
  _hasValue: {
7746
- [vars$_.inputHorizontalPadding]: '0.45em',
7849
+ [vars$$.inputHorizontalPadding]: '0.45em',
7747
7850
  },
7748
7851
  },
7749
7852
  },
7750
7853
 
7751
7854
  _readonly: {
7752
- [vars$_.inputDropdownButtonCursor]: 'default',
7855
+ [vars$$.inputDropdownButtonCursor]: 'default',
7753
7856
  },
7754
7857
 
7755
- [vars$_.overlayFontSize]: refs$1.fontSize,
7756
- [vars$_.overlayFontFamily]: refs$1.fontFamily,
7757
- [vars$_.overlayCursor]: 'pointer',
7758
- [vars$_.overlayItemBoxShadow]: 'none',
7759
- [vars$_.overlayBackground]: refs$1.backgroundColor,
7760
- [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,
7761
7864
 
7762
- [vars$_.overlay.minHeight]: '400px',
7763
- [vars$_.overlay.margin]: '0',
7865
+ [vars$$.overlay.minHeight]: '400px',
7866
+ [vars$$.overlay.margin]: '0',
7764
7867
  };
7765
7868
 
7766
7869
  var multiSelectComboBox$1 = /*#__PURE__*/Object.freeze({
7767
7870
  __proto__: null,
7768
7871
  default: multiSelectComboBox,
7769
7872
  multiSelectComboBox: multiSelectComboBox,
7770
- vars: vars$_
7873
+ vars: vars$$
7771
7874
  });
7772
7875
 
7773
- const componentName$1e = getComponentName('autocomplete-field-internal');
7876
+ const componentName$1f = getComponentName('autocomplete-field-internal');
7774
7877
 
7775
7878
  createBaseInputClass$1({
7776
- componentName: componentName$1e,
7879
+ componentName: componentName$1f,
7777
7880
  baseSelector: '',
7778
7881
  });
7779
7882
 
7780
- const componentName$1d = getComponentName('autocomplete-field');
7883
+ const componentName$1e = getComponentName('autocomplete-field');
7781
7884
 
7782
- const customMixin$d = (superclass) =>
7885
+ const customMixin$e = (superclass) =>
7783
7886
  class AutocompleteFieldMixinClass extends superclass {
7784
7887
  get defaultValue() {
7785
7888
  return this.getAttribute('default-value');
@@ -7798,15 +7901,15 @@ const customMixin$d = (superclass) =>
7798
7901
  const template = document.createElement('template');
7799
7902
 
7800
7903
  template.innerHTML = `
7801
- <${componentName$1e}
7904
+ <${componentName$1f}
7802
7905
  tabindex="-1"
7803
- ></${componentName$1e}>
7906
+ ></${componentName$1f}>
7804
7907
  `;
7805
7908
 
7806
7909
  this.baseElement.appendChild(template.content.cloneNode(true));
7807
7910
 
7808
7911
  this.inputElement = this.shadowRoot.querySelector(
7809
- componentName$1e,
7912
+ componentName$1f,
7810
7913
  );
7811
7914
 
7812
7915
  forwardAttrs(this, this.inputElement, {
@@ -7846,7 +7949,7 @@ const customMixin$d = (superclass) =>
7846
7949
  }
7847
7950
  };
7848
7951
 
7849
- const { host: host$x } = {
7952
+ const { host: host$y } = {
7850
7953
  host: { selector: () => ':host' },
7851
7954
  };
7852
7955
 
@@ -7856,9 +7959,9 @@ const AutocompleteFieldClass = compose(
7856
7959
  }),
7857
7960
  createStyleMixin$1({
7858
7961
  mappings: {
7859
- hostWidth: { ...host$x, property: 'width' },
7860
- hostDirection: { ...host$x, property: 'direction' },
7861
- fontSize: { ...host$x },
7962
+ hostWidth: { ...host$y, property: 'width' },
7963
+ hostDirection: { ...host$y, property: 'direction' },
7964
+ fontSize: { ...host$y },
7862
7965
  checkmarkDisplay: {
7863
7966
  selector: ComboBoxClass.componentName,
7864
7967
  property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,
@@ -7896,7 +7999,7 @@ const AutocompleteFieldClass = compose(
7896
7999
  proxyParentValidation: true,
7897
8000
  }),
7898
8001
  componentNameValidationMixin$1,
7899
- customMixin$d,
8002
+ customMixin$e,
7900
8003
  )(
7901
8004
  createProxy$1({
7902
8005
  slots: [],
@@ -7925,34 +8028,34 @@ const AutocompleteFieldClass = compose(
7925
8028
  }
7926
8029
  `,
7927
8030
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
7928
- componentName: componentName$1d,
8031
+ componentName: componentName$1e,
7929
8032
  }),
7930
8033
  );
7931
8034
 
7932
- const vars$Z = AutocompleteFieldClass.cssVarList;
8035
+ const vars$_ = AutocompleteFieldClass.cssVarList;
7933
8036
  const globalRefs$y = getThemeRefs$1(globals);
7934
8037
 
7935
8038
  const autocompleteField = {
7936
- [vars$Z.hostWidth]: refs$1.width,
7937
- [vars$Z.hostDirection]: refs$1.direction,
7938
- [vars$Z.fontSize]: refs$1.fontSize,
7939
- [vars$Z.checkmarkDisplay]: 'none',
7940
- [vars$Z.itemPaddingInlineStart]: globalRefs$y.spacing.lg,
7941
- [vars$Z.itemPaddingInlineEnd]: globalRefs$y.spacing.lg,
7942
- [vars$Z.selectedItemBackground]: globalRefs$y.colors.primary.light,
7943
- [vars$Z.selectedItemHoverBackground]: globalRefs$y.colors.primary.light,
7944
- [vars$Z.selectedItemFocusBackground]: globalRefs$y.colors.primary.light,
7945
- [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,
7946
8049
 
7947
8050
  _fullWidth: {
7948
- [vars$Z.hostWidth]: '100%',
8051
+ [vars$_.hostWidth]: '100%',
7949
8052
  },
7950
8053
  };
7951
8054
 
7952
8055
  var autocompleteField$1 = /*#__PURE__*/Object.freeze({
7953
8056
  __proto__: null,
7954
8057
  default: autocompleteField,
7955
- vars: vars$Z
8058
+ vars: vars$_
7956
8059
  });
7957
8060
 
7958
8061
  const initGoogleMapsLoader = (apiKey) => {
@@ -8179,7 +8282,7 @@ class RadarConnector extends createBaseConnectorClass() {
8179
8282
  }
8180
8283
  }
8181
8284
 
8182
- const componentName$1c = getComponentName('address-field-internal');
8285
+ const componentName$1d = getComponentName('address-field-internal');
8183
8286
 
8184
8287
  const GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';
8185
8288
  const RADAR_CONNECTOR_TEMPLATE = 'radar';
@@ -8190,7 +8293,7 @@ const CONNECTOR_CLASSES = {
8190
8293
  };
8191
8294
 
8192
8295
  const BaseInputClass$8 = createBaseInputClass$1({
8193
- componentName: componentName$1c,
8296
+ componentName: componentName$1d,
8194
8297
  baseSelector: '',
8195
8298
  });
8196
8299
  const initConnectorAttrs = ['public-api-key'];
@@ -8297,9 +8400,9 @@ compose(
8297
8400
  connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),
8298
8401
  )(RawAddressFieldInternal);
8299
8402
 
8300
- const componentName$1b = getComponentName('address-field');
8403
+ const componentName$1c = getComponentName('address-field');
8301
8404
 
8302
- const customMixin$c = (superclass) =>
8405
+ const customMixin$d = (superclass) =>
8303
8406
  class AddressFieldMixinClass extends superclass {
8304
8407
  get defaultValue() {
8305
8408
  return this.getAttribute('default-value');
@@ -8326,15 +8429,15 @@ const customMixin$c = (superclass) =>
8326
8429
  const template = document.createElement('template');
8327
8430
 
8328
8431
  template.innerHTML = `
8329
- <${componentName$1c}
8432
+ <${componentName$1d}
8330
8433
  tabindex="-1"
8331
- ></${componentName$1c}>
8434
+ ></${componentName$1d}>
8332
8435
  `;
8333
8436
 
8334
8437
  this.baseElement.appendChild(template.content.cloneNode(true));
8335
8438
 
8336
8439
  this.inputElement = this.shadowRoot.querySelector(
8337
- componentName$1c,
8440
+ componentName$1d,
8338
8441
  );
8339
8442
 
8340
8443
  forwardAttrs(this, this.inputElement, {
@@ -8375,7 +8478,7 @@ const customMixin$c = (superclass) =>
8375
8478
  }
8376
8479
  };
8377
8480
 
8378
- const { host: host$w } = {
8481
+ const { host: host$x } = {
8379
8482
  host: { selector: () => ':host' },
8380
8483
  };
8381
8484
 
@@ -8385,8 +8488,8 @@ const AddressFieldClass = compose(
8385
8488
  }),
8386
8489
  createStyleMixin$1({
8387
8490
  mappings: {
8388
- hostWidth: { ...host$w, property: 'width' },
8389
- hostDirection: { ...host$w, property: 'direction' },
8491
+ hostWidth: { ...host$x, property: 'width' },
8492
+ hostDirection: { ...host$x, property: 'direction' },
8390
8493
  },
8391
8494
  }),
8392
8495
  draggableMixin$1,
@@ -8396,7 +8499,7 @@ const AddressFieldClass = compose(
8396
8499
  proxyParentValidation: true,
8397
8500
  }),
8398
8501
  componentNameValidationMixin$1,
8399
- customMixin$c,
8502
+ customMixin$d,
8400
8503
  )(
8401
8504
  createProxy$1({
8402
8505
  slots: [],
@@ -8412,7 +8515,7 @@ const AddressFieldClass = compose(
8412
8515
  width: 100%;
8413
8516
  }
8414
8517
 
8415
- ${componentName$1c} {
8518
+ ${componentName$1d} {
8416
8519
  display: inline-block;
8417
8520
  box-sizing: border-box;
8418
8521
  user-select: none;
@@ -8420,30 +8523,30 @@ const AddressFieldClass = compose(
8420
8523
  max-width: 100%;
8421
8524
  }
8422
8525
 
8423
- ${componentName$1c} ::slotted {
8526
+ ${componentName$1d} ::slotted {
8424
8527
  padding: 0;
8425
8528
  }
8426
8529
  `,
8427
8530
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
8428
- componentName: componentName$1b,
8531
+ componentName: componentName$1c,
8429
8532
  }),
8430
8533
  );
8431
8534
 
8432
- const vars$Y = AddressFieldClass.cssVarList;
8535
+ const vars$Z = AddressFieldClass.cssVarList;
8433
8536
 
8434
8537
  const addressField = {
8435
- [vars$Y.hostWidth]: refs$1.width,
8436
- [vars$Y.hostDirection]: refs$1.direction,
8538
+ [vars$Z.hostWidth]: refs$1.width,
8539
+ [vars$Z.hostDirection]: refs$1.direction,
8437
8540
 
8438
8541
  _fullWidth: {
8439
- [vars$Y.hostWidth]: '100%',
8542
+ [vars$Z.hostWidth]: '100%',
8440
8543
  },
8441
8544
  };
8442
8545
 
8443
8546
  var addressField$1 = /*#__PURE__*/Object.freeze({
8444
8547
  __proto__: null,
8445
8548
  default: addressField,
8446
- vars: vars$Y
8549
+ vars: vars$Z
8447
8550
  });
8448
8551
 
8449
8552
  var clockIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgdmlld0JveD0iMCAwIDEwNCAxMDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC4zMzM0IDAuMzMzMjUyQzIyLjgzMzQgMC4zMzMyNTIgMC4zMzMzNzQgMjIuODMzMyAwLjMzMzM3NCA1MC4zMzMzQzAuMzMzMzc0IDc3LjgzMzMgMjIuODMzNCAxMDAuMzMzIDUwLjMzMzQgMTAwLjMzM0M3Ny44MzM0IDEwMC4zMzMgMTAwLjMzMyA3Ny44MzMzIDEwMC4zMzMgNTAuMzMzM0MxMDAuMzMzIDIyLjgzMzMgNzcuODMzNCAwLjMzMzI1MiA1MC4zMzM0IDAuMzMzMjUyWk01MC4zMzM0IDg3LjgzMzNDMjkuNzA4NCA4Ny44MzMzIDEyLjgzMzQgNzAuOTU4MyAxMi44MzM0IDUwLjMzMzNDMTIuODMzNCAyOS43MDgzIDI5LjcwODQgMTIuODMzMyA1MC4zMzM0IDEyLjgzMzNDNzAuOTU4NCAxMi44MzMzIDg3LjgzMzQgMjkuNzA4MyA4Ny44MzM0IDUwLjMzMzNDODcuODMzNCA3MC45NTgzIDcwLjk1ODQgODcuODMzMyA1MC4zMzM0IDg3LjgzMzNaIiBmaWxsPSIjMTgxQTFDIi8+CjxwYXRoIGQ9Ik01MC4zMzI4IDE5LjA4MzNINDQuMDgyOFY1Ni41ODMySDc1LjMzMjhWNTAuMzMzMkg1MC4zMzI4VjE5LjA4MzNaIiBmaWxsPSIjMTgxQTFDIi8+Cjwvc3ZnPgo=";
@@ -8465,12 +8568,12 @@ const formatTime = (ms = 0) => {
8465
8568
  return timeParts.join(':');
8466
8569
  };
8467
8570
 
8468
- const componentName$1a = getComponentName('timer');
8571
+ const componentName$1b = getComponentName('timer');
8469
8572
 
8470
8573
  const observedAttributes$5 = ['seconds', 'hide-icon', 'paused'];
8471
8574
 
8472
8575
  const BaseClass$8 = createBaseClass$1({
8473
- componentName: componentName$1a,
8576
+ componentName: componentName$1b,
8474
8577
  baseSelector: ':host > .wrapper',
8475
8578
  });
8476
8579
 
@@ -8623,7 +8726,7 @@ class RawTimer extends BaseClass$8 {
8623
8726
  }
8624
8727
  }
8625
8728
 
8626
- const { host: host$v, icon: icon$2, timer: timer$2 } = {
8729
+ const { host: host$w, icon: icon$2, timer: timer$2 } = {
8627
8730
  host: { selector: () => ':host' },
8628
8731
  icon: { selector: () => '.icon' },
8629
8732
  timer: { selector: () => '.timer' },
@@ -8644,8 +8747,8 @@ const TimerClass = compose(
8644
8747
  textColor: { ...timer$2, property: 'color' },
8645
8748
  gap: {},
8646
8749
  textAlign: { property: 'justify-content' },
8647
- hostWidth: { ...host$v, property: 'width' },
8648
- hostDirection: { ...host$v, property: 'direction' },
8750
+ hostWidth: { ...host$w, property: 'width' },
8751
+ hostDirection: { ...host$w, property: 'direction' },
8649
8752
  iconColor: { ...icon$2, property: IconClass.cssVarList.fill },
8650
8753
  },
8651
8754
  }),
@@ -8654,44 +8757,44 @@ const TimerClass = compose(
8654
8757
  )(RawTimer);
8655
8758
 
8656
8759
  const globalRefs$x = getThemeRefs$1(globals);
8657
- const vars$X = TimerClass.cssVarList;
8760
+ const vars$Y = TimerClass.cssVarList;
8658
8761
 
8659
8762
  const timer = {
8660
- [vars$X.hostDirection]: globalRefs$x.direction,
8661
- [vars$X.gap]: '0.25em',
8662
- [vars$X.fontFamily]: globalRefs$x.fonts.font1.family,
8663
- [vars$X.minHeight]: '1.5em',
8664
- [vars$X.lineHeight]: '1em',
8665
- [vars$X.fontWeight]: globalRefs$x.fonts.font1.fontWeight,
8666
- [vars$X.textColor]: globalRefs$x.colors.surface.contrast,
8667
- [vars$X.iconColor]: globalRefs$x.colors.surface.contrast,
8668
- [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',
8669
8772
 
8670
8773
  size: {
8671
- xs: { [vars$X.fontSize]: '12px' },
8672
- sm: { [vars$X.fontSize]: '14px' },
8673
- md: { [vars$X.fontSize]: '16px' },
8674
- 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' },
8675
8778
  },
8676
8779
 
8677
8780
  textAlign: {
8678
- right: { [vars$X.textAlign]: 'right' },
8679
- left: { [vars$X.textAlign]: 'left' },
8680
- center: { [vars$X.textAlign]: 'center' },
8781
+ right: { [vars$Y.textAlign]: 'right' },
8782
+ left: { [vars$Y.textAlign]: 'left' },
8783
+ center: { [vars$Y.textAlign]: 'center' },
8681
8784
  },
8682
8785
 
8683
8786
  _fullWidth: {
8684
- [vars$X.hostWidth]: '100%',
8787
+ [vars$Y.hostWidth]: '100%',
8685
8788
  },
8686
8789
  };
8687
8790
 
8688
8791
  var timer$1 = /*#__PURE__*/Object.freeze({
8689
8792
  __proto__: null,
8690
8793
  default: timer,
8691
- vars: vars$X
8794
+ vars: vars$Y
8692
8795
  });
8693
8796
 
8694
- const componentName$19 = getComponentName('timer-button');
8797
+ const componentName$1a = getComponentName('timer-button');
8695
8798
 
8696
8799
  const buttonAttrs = [
8697
8800
  'button-variant',
@@ -8722,7 +8825,7 @@ const mapTimerAttrs = {
8722
8825
  };
8723
8826
 
8724
8827
  const BaseClass$7 = createBaseClass$1({
8725
- componentName: componentName$19,
8828
+ componentName: componentName$1a,
8726
8829
  baseSelector: ':host > div',
8727
8830
  });
8728
8831
 
@@ -8874,7 +8977,7 @@ class RawTimerButton extends BaseClass$7 {
8874
8977
  }
8875
8978
 
8876
8979
  const {
8877
- host: host$u,
8980
+ host: host$v,
8878
8981
  nestedTimer,
8879
8982
  nestedButton,
8880
8983
  timerInsideNotReversed,
@@ -8899,8 +9002,8 @@ const TimerButtonClass = compose(
8899
9002
  mappings: {
8900
9003
  gap: {},
8901
9004
  flexDirection: {},
8902
- hostWidth: { ...host$u, property: 'width' },
8903
- hostDirection: { ...host$u, property: 'direction' },
9005
+ hostWidth: { ...host$v, property: 'width' },
9006
+ hostDirection: { ...host$v, property: 'direction' },
8904
9007
  timerTextColor: {
8905
9008
  ...nestedTimer,
8906
9009
  property: TimerClass.cssVarList.textColor,
@@ -8932,40 +9035,40 @@ const TimerButtonClass = compose(
8932
9035
  )(RawTimerButton);
8933
9036
 
8934
9037
  const globalRefs$w = getThemeRefs$1(globals);
8935
- const vars$W = TimerButtonClass.cssVarList;
9038
+ const vars$X = TimerButtonClass.cssVarList;
8936
9039
 
8937
9040
  const timerButton = {
8938
- [vars$W.gap]: globalRefs$w.spacing.sm,
8939
- [vars$W.flexDirection]: 'column',
9041
+ [vars$X.gap]: globalRefs$w.spacing.sm,
9042
+ [vars$X.flexDirection]: 'column',
8940
9043
 
8941
9044
  _horizontal: {
8942
- [vars$W.flexDirection]: 'row',
9045
+ [vars$X.flexDirection]: 'row',
8943
9046
  timerPosition: {
8944
9047
  end: {
8945
- [vars$W.flexDirection]: 'row-reverse',
9048
+ [vars$X.flexDirection]: 'row-reverse',
8946
9049
  },
8947
9050
  },
8948
9051
  },
8949
9052
 
8950
9053
  timerPosition: {
8951
9054
  end: {
8952
- [vars$W.flexDirection]: 'column-reverse',
9055
+ [vars$X.flexDirection]: 'column-reverse',
8953
9056
  },
8954
9057
  },
8955
9058
 
8956
9059
  _fullWidth: {
8957
- [vars$W.hostWidth]: '100%',
9060
+ [vars$X.hostWidth]: '100%',
8958
9061
  },
8959
9062
 
8960
9063
  _timerInside: {
8961
- [vars$W.timerTextColor]: 'currentColor',
8962
- [vars$W.timerIconColor]: 'currentColor',
8963
- [vars$W.timerHostWidth]: 'auto',
8964
- [vars$W.buttonLabelSpacing]: '0',
8965
- [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})`,
8966
9069
  timerPosition: {
8967
9070
  end: {
8968
- [vars$W.timerInsideGapStart]: `var(${vars$W.gap})`,
9071
+ [vars$X.timerInsideGapStart]: `var(${vars$X.gap})`,
8969
9072
  },
8970
9073
  },
8971
9074
  },
@@ -8974,12 +9077,12 @@ const timerButton = {
8974
9077
  var timerButton$1 = /*#__PURE__*/Object.freeze({
8975
9078
  __proto__: null,
8976
9079
  default: timerButton,
8977
- vars: vars$W
9080
+ vars: vars$X
8978
9081
  });
8979
9082
 
8980
- const componentName$18 = getComponentName('password-strength');
9083
+ const componentName$19 = getComponentName('password-strength');
8981
9084
  class RawPasswordStrength extends createBaseClass$1({
8982
- componentName: componentName$18,
9085
+ componentName: componentName$19,
8983
9086
  baseSelector: ':host > .wrapper',
8984
9087
  }) {
8985
9088
  static get observedAttributes() {
@@ -9093,7 +9196,7 @@ class RawPasswordStrength extends createBaseClass$1({
9093
9196
  }
9094
9197
  }
9095
9198
 
9096
- const { host: host$t, bar, filledBar, barsContainer, text: text$1 } = {
9199
+ const { host: host$u, bar, filledBar, barsContainer, text: text$1 } = {
9097
9200
  host: { selector: () => ':host' },
9098
9201
  bar: { selector: ' .bar' },
9099
9202
  barsContainer: { selector: ' .bars-container' },
@@ -9106,11 +9209,11 @@ const PasswordStrengthClass = compose(
9106
9209
  createStyleMixin$1({
9107
9210
  mappings: {
9108
9211
  hostWidth: [
9109
- { ...host$t, property: 'width' },
9110
- { ...host$t, property: 'min-width' },
9212
+ { ...host$u, property: 'width' },
9213
+ { ...host$u, property: 'min-width' },
9111
9214
  ],
9112
- hostDirection: { ...host$t, property: 'direction' },
9113
- hostMinWidth: { ...host$t, property: 'min-width' },
9215
+ hostDirection: { ...host$u, property: 'direction' },
9216
+ hostMinWidth: { ...host$u, property: 'min-width' },
9114
9217
  barHeight: { ...bar, property: 'height' },
9115
9218
  barBorderRadius: { ...bar, property: 'border-radius' },
9116
9219
  emptyBarColor: { ...bar, property: 'background-color' },
@@ -9170,22 +9273,22 @@ const passwordStrength = {
9170
9273
  }
9171
9274
  };
9172
9275
 
9173
- const vars$V = {
9276
+ const vars$W = {
9174
9277
  ...compVars$6,
9175
9278
  };
9176
9279
 
9177
9280
  var passwordStrength$1 = /*#__PURE__*/Object.freeze({
9178
9281
  __proto__: null,
9179
9282
  default: passwordStrength,
9180
- vars: vars$V
9283
+ vars: vars$W
9181
9284
  });
9182
9285
 
9183
9286
  var chevronIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik02Ljc4MDcgMTQuNzI3MkM2LjM0MTYgMTUuMTIwOSA1LjY2NjYgMTUuMDg0MSA1LjI3MjggMTQuNjQ1MUM0Ljg3OTEgMTQuMjA2IDQuOTE1OSAxMy41MzA5IDUuMzU0OSAxMy4xMzcyQzUuMzU0OSAxMy4xMzcyIDEwLjk1NDMgNy45OTc4IDExLjM2IDcuNjM0QzExLjc2NTcgNy4yNzAyIDEyLjIzOTIgNy4yNzAyIDEyLjY0NDggNy42MzRMMTguNjQ1MSAxMy4xMzcyQzE5LjA4NDEgMTMuNTMwOSAxOS4xMjA5IDE0LjIwNiAxOC43MjcyIDE0LjY0NTFDMTguMzMzNCAxNS4wODQxIDE3LjY1ODQgMTUuMTIwOSAxNy4yMTkzIDE0LjcyNzJMMTIgOS44NjMyTDYuNzgwNyAxNC43MjcyWiIvPgo8L3N2Zz4K";
9184
9287
 
9185
- const componentName$17 = getComponentName('collapsible-container');
9288
+ const componentName$18 = getComponentName('collapsible-container');
9186
9289
 
9187
9290
  class RawCollapsibleContainer extends createBaseClass$1({
9188
- componentName: componentName$17,
9291
+ componentName: componentName$18,
9189
9292
  baseSelector: 'slot',
9190
9293
  }) {
9191
9294
  static get observedAttributes() {
@@ -9436,7 +9539,7 @@ const [helperTheme$4, helperRefs$4, helperVars$4] = createHelperVars$1(
9436
9539
  {
9437
9540
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
9438
9541
  },
9439
- componentName$17,
9542
+ componentName$18,
9440
9543
  );
9441
9544
 
9442
9545
  const { shadowColor: shadowColor$6 } = helperRefs$4;
@@ -9537,7 +9640,7 @@ const collapsibleContainer = {
9537
9640
  },
9538
9641
  };
9539
9642
 
9540
- const vars$U = {
9643
+ const vars$V = {
9541
9644
  ...compVars$5,
9542
9645
  ...helperVars$4,
9543
9646
  };
@@ -9545,10 +9648,10 @@ const vars$U = {
9545
9648
  var collapsibleContainer$1 = /*#__PURE__*/Object.freeze({
9546
9649
  __proto__: null,
9547
9650
  default: collapsibleContainer,
9548
- vars: vars$U
9651
+ vars: vars$V
9549
9652
  });
9550
9653
 
9551
- const componentName$16 = getComponentName('recovery-codes');
9654
+ const componentName$17 = getComponentName('recovery-codes');
9552
9655
 
9553
9656
  const NO_ACTION = 'none';
9554
9657
  const DEFAULT_ERROR_MESSAGE =
@@ -9590,7 +9693,7 @@ const itemRenderer$5 = ({ value }, _, ref) => {
9590
9693
  };
9591
9694
 
9592
9695
  class RawRecoveryCodes extends createBaseClass$1({
9593
- componentName: componentName$16,
9696
+ componentName: componentName$17,
9594
9697
  baseSelector: ':host > div',
9595
9698
  }) {
9596
9699
  static get observedAttributes() {
@@ -10003,60 +10106,388 @@ const RecoveryCodesClass = compose(
10003
10106
  )(RawRecoveryCodes);
10004
10107
 
10005
10108
  const globalRefs$t = getThemeRefs$1(globals);
10006
- const vars$T = RecoveryCodesClass.cssVarList;
10109
+ const vars$U = RecoveryCodesClass.cssVarList;
10007
10110
  const textVars$6 = TextClass.cssVarList;
10008
10111
 
10009
10112
  const recoveryCodes = {
10010
- [vars$T.hostMinWidth]: '190px',
10011
- [vars$T.hostDirection]: globalRefs$t.direction,
10012
- [vars$T.iconColor]: useVar$1(textVars$6.textColor),
10013
- [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),
10014
10117
  // gap between the codes and the icon column
10015
- [vars$T.iconGap]: '8px',
10118
+ [vars$U.iconGap]: '8px',
10016
10119
  // gap between the stacked copy and download icons
10017
- [vars$T.iconStackGap]: '16px',
10120
+ [vars$U.iconStackGap]: '16px',
10018
10121
  // gap between the copy and download buttons (buttons variant)
10019
- [vars$T.buttonsGap]: '8px',
10122
+ [vars$U.buttonsGap]: '8px',
10020
10123
  // gap between the codes, the error message and the buttons
10021
- [vars$T.sectionsGap]: '8px',
10022
- [vars$T.bulletGap]: '0.35em',
10124
+ [vars$U.sectionsGap]: '8px',
10125
+ [vars$U.bulletGap]: '0.35em',
10023
10126
 
10024
10127
  // no padding by default so the current look is unchanged; the editor overrides per instance
10025
- [vars$T.verticalPadding]: '0',
10026
- [vars$T.horizontalPadding]: '0',
10128
+ [vars$U.verticalPadding]: '0',
10129
+ [vars$U.horizontalPadding]: '0',
10027
10130
 
10028
10131
  // error ring is transparent until the component is marked invalid (see _invalid below).
10029
10132
  // message color/font + border come from the shared input-wrapper tokens, so customizing
10030
10133
  // inputs in the console updates the recovery-codes error styling from the same place.
10031
- [vars$T.errorBorderColor]: 'transparent',
10032
- [vars$T.errorBorderWidth]: refs$1.borderWidth,
10033
- [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,
10034
10137
  // local default; can later map to the input-wrapper border style if it exposes one
10035
- [vars$T.boxBorderStyle]: 'solid',
10036
- [vars$T.errorMessageColor]: refs$1.errorMessageTextColor,
10037
- [vars$T.errorMessageFontSize]: refs$1.errorMessageFontSize,
10038
- [vars$T.errorMessageFontWeight]: refs$1.errorMessageFontWeight,
10039
- [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,
10040
10143
 
10041
10144
  textAlign: {
10042
- right: { [vars$T.textAlign]: 'flex-end' },
10043
- left: { [vars$T.textAlign]: 'flex-start' },
10044
- 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' },
10045
10148
  },
10046
10149
 
10047
10150
  _fullWidth: {
10048
- [vars$T.hostWidth]: '100%',
10151
+ [vars$U.hostWidth]: '100%',
10049
10152
  },
10050
10153
 
10051
10154
  // reflected `invalid` attribute (set by the component on a failed submit)
10052
10155
  _invalid: {
10053
- [vars$T.errorBorderColor]: refs$1.errorMessageTextColor,
10156
+ [vars$U.errorBorderColor]: refs$1.errorMessageTextColor,
10054
10157
  },
10055
10158
  };
10056
10159
 
10057
10160
  var recoveryCodes$1 = /*#__PURE__*/Object.freeze({
10058
10161
  __proto__: null,
10059
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,
10060
10491
  vars: vars$T
10061
10492
  });
10062
10493
 
@@ -17874,7 +18305,7 @@ const createClassSelectorSpecifier = (className, numOfRepeats) =>
17874
18305
  const STYLE_OVERRIDE_ATTR_PREFIX = 'st';
17875
18306
 
17876
18307
  const createStyleMixin =
17877
- ({ mappings = {}, componentNameOverride = '' }) =>
18308
+ ({ mappings = {}, componentNameOverride = '', style = '' }) =>
17878
18309
  (superclass) => {
17879
18310
  const componentName = componentNameOverride || superclass.componentName;
17880
18311
 
@@ -17996,6 +18427,14 @@ const createStyleMixin =
17996
18427
  }
17997
18428
  }
17998
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
+
17999
18438
  #addClassName(className) {
18000
18439
  (this.#rootElement.classList || this.#rootElement.host.classList).add(className);
18001
18440
  }
@@ -18008,6 +18447,7 @@ const createStyleMixin =
18008
18447
  this.#addClassName(componentName);
18009
18448
 
18010
18449
  this.#createMappingStyle();
18450
+ this.#createStaticStyle();
18011
18451
  this.#createComponentTheme();
18012
18452
  this.#createOverridesStyle();
18013
18453
 
@@ -18751,40 +19191,26 @@ const composedProxyInputMixin = (proxyInputMixinConfig) =>
18751
19191
  // because of that, we are adding this separator that is also used as a differentiator
18752
19192
  const DISPLAY_NAME_SEPARATOR = '_';
18753
19193
 
18754
- const withWaitForShadowRoot = (getRootElementFn) => async (that) => {
18755
- const ele = await getRootElementFn(that);
18756
-
18757
- return new Promise((res) => {
18758
- const MAX_RETRIES = 20;
18759
- let counter = 0;
18760
-
18761
- const check = () => {
18762
- if (counter > MAX_RETRIES) {
18763
- // eslint-disable-next-line no-console
18764
- console.error('could not get shadow root for element', ele);
18765
- res(ele);
18766
- return;
18767
- }
18768
-
18769
- counter++;
18770
-
18771
- if (!ele?.shadowRoot) {
18772
- setTimeout(check);
18773
- } else {
18774
- res(ele.shadowRoot);
18775
- }
18776
- };
18777
- check();
18778
- });
18779
- };
18780
-
18781
19194
  const portalMixin =
18782
- ({ 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
+ }) =>
18783
19207
  (superclass) => {
19208
+
18784
19209
  const eleDisplayName = name;
18785
19210
 
18786
19211
  const BaseClass = createStyleMixin({
18787
19212
  mappings,
19213
+ style,
18788
19214
  })(superclass);
18789
19215
 
18790
19216
  return class PortalMixinClass extends BaseClass {
@@ -18810,7 +19236,7 @@ const portalMixin =
18810
19236
  }
18811
19237
  };
18812
19238
 
18813
- const getPortalElement = withWaitForShadowRoot(getRootElement);
19239
+ const getPortalElement = waitForShadowRoot$1(getRootElement);
18814
19240
 
18815
19241
  super({
18816
19242
  getRootElement: getPortalElement,
@@ -18841,9 +19267,12 @@ const portalMixin =
18841
19267
  // Initialize portal element lookup here (deferred from constructor for React compatibility)
18842
19268
  this.#portalEle = this.#getPortalElement();
18843
19269
  const portalEle = await this.#portalEle;
18844
- forwardAttrs$1(this, portalEle, {
18845
- [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
18846
- });
19270
+ if (forward !== false) {
19271
+ const { attributes = [], include = true } = forward;
19272
+ forwardAttrs$1(this, portalEle, {
19273
+ [include ? 'includeAttrs' : 'excludeAttrs']: attributes,
19274
+ });
19275
+ }
18847
19276
 
18848
19277
  this.#handleHoverAttribute();
18849
19278
  }
@@ -19274,6 +19703,19 @@ const customMixin$9 = (superclass) =>
19274
19703
  this.baseElement._setFocused = this.setFocus.bind(this);
19275
19704
 
19276
19705
  this.initExternalInput();
19706
+ this.stopRevealButtonEnterPropagation();
19707
+ }
19708
+
19709
+ // Vaadin toggles visibility on Enter keydown but lets the event bubble,
19710
+ // and the SDK submits the form on any Enter that reaches the flow root.
19711
+ stopRevealButtonEnterPropagation() {
19712
+ this.revealButton.addEventListener('keydown', (e) => {
19713
+ if (e.key === 'Enter') e.stopPropagation();
19714
+ });
19715
+ }
19716
+
19717
+ get revealButton() {
19718
+ return this.baseElement.querySelector('vaadin-password-field-button');
19277
19719
  }
19278
19720
 
19279
19721
  initExternalInput() {
@@ -19329,9 +19771,7 @@ const customMixin$9 = (superclass) =>
19329
19771
  handlePasswordVisibility(externalInput) {
19330
19772
  // disable vaadin's `__boundRevealButtonMouseDown` mouse-down event lisetener
19331
19773
  const origBoundRevealButtonMouseDown = this.baseElement.__boundRevealButtonMouseDown;
19332
- this.baseElement
19333
- .querySelector('vaadin-password-field-button')
19334
- .removeEventListener('mousedown', origBoundRevealButtonMouseDown);
19774
+ this.revealButton.removeEventListener('mousedown', origBoundRevealButtonMouseDown);
19335
19775
 
19336
19776
  // disable vaadin's `_passwordVisibleChanged` observer
19337
19777
  this.baseElement._passwordVisibleChanged = () => {};
@@ -31731,7 +32171,7 @@ const alert = {
31731
32171
  [vars$2.horizontalPadding]: '0',
31732
32172
  [vars$2.verticalPadding]: '0',
31733
32173
  [vars$2.gap]: `0.5em`,
31734
- [vars$2.fontSize]: useVar(vars$1a.fontSize),
32174
+ [vars$2.fontSize]: useVar(vars$1b.fontSize),
31735
32175
 
31736
32176
  mode: {
31737
32177
  error: {
@@ -31974,7 +32414,7 @@ const components = {
31974
32414
  passcode: passcode$1,
31975
32415
  loaderRadial: loaderRadial$1,
31976
32416
  loaderLinear: loaderLinear$1,
31977
- comboBox: comboBox$1,
32417
+ comboBox: comboBox$2,
31978
32418
  phoneField: phoneField$1,
31979
32419
  phoneInputBoxField: phoneInputBoxField$1,
31980
32420
  newPassword: newPassword$1,
@@ -32021,6 +32461,7 @@ const components = {
32021
32461
  passwordStrength: passwordStrength$1,
32022
32462
  collapsibleContainer: collapsibleContainer$1,
32023
32463
  recoveryCodes: recoveryCodes$1,
32464
+ activeSessions: activeSessions$1,
32024
32465
  hcaptcha: hcaptcha$1,
32025
32466
  outboundApps: outboundApps$1,
32026
32467
  outboundAppButton: outboundAppButton$1,
@@ -32042,7 +32483,7 @@ const vars = Object.keys(components).reduce(
32042
32483
  );
32043
32484
 
32044
32485
  const defaultTheme = { globals: globals$1, components: theme };
32045
- const themeVars = { globals: vars$1c, components: vars };
32486
+ const themeVars = { globals: vars$1d, components: vars };
32046
32487
 
32047
32488
  const colors = {
32048
32489
  surface: {
@@ -32844,6 +33285,7 @@ var calcScore = /*#__PURE__*/Object.freeze({
32844
33285
  options: options
32845
33286
  });
32846
33287
 
33288
+ exports.ActiveSessionsClass = ActiveSessionsClass;
32847
33289
  exports.AddressFieldClass = AddressFieldClass;
32848
33290
  exports.AlertClass = AlertClass;
32849
33291
  exports.AnchoredClass = AnchoredClass;