@lmvz-ds/components 0.22.0 → 0.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 (104) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/{aria-loader-Cec1zR2g.js → aria-loader-BRo2FTGh.js} +1 -0
  3. package/cjs/index.cjs.js +1 -1
  4. package/cjs/lmvz-button_3.cjs.entry.js +375 -0
  5. package/cjs/lmvz-card.cjs.entry.js +2 -2
  6. package/cjs/lmvz-checkbox.cjs.entry.js +3 -3
  7. package/cjs/lmvz-chip.cjs.entry.js +3 -3
  8. package/cjs/lmvz-components.cjs.js +1 -1
  9. package/cjs/lmvz-header_2.cjs.entry.js +3 -3
  10. package/cjs/lmvz-input.cjs.entry.js +4 -4
  11. package/cjs/lmvz-menuitem.cjs.entry.js +3 -3
  12. package/cjs/lmvz-modal.cjs.entry.js +6 -109
  13. package/cjs/lmvz-select.cjs.entry.js +3 -3
  14. package/cjs/lmvz-toggle.cjs.entry.js +3 -3
  15. package/cjs/loader.cjs.js +1 -1
  16. package/cjs/{reactive-controller-host-DnSTWHCF.js → reactive-controller-host-BOFg4vL-.js} +1 -1
  17. package/collection/collection-manifest.json +1 -0
  18. package/collection/components/lmvz-button/lmvz-button.css +28 -17
  19. package/collection/components/lmvz-button/lmvz-button.js +6 -7
  20. package/collection/components/lmvz-button-group/lmvz-button-group.css +14 -0
  21. package/collection/components/lmvz-button-group/lmvz-button-group.js +216 -0
  22. package/collection/components/lmvz-card/lmvz-card.css +27 -16
  23. package/collection/components/lmvz-card/lmvz-card.js +1 -1
  24. package/collection/components/lmvz-checkbox/lmvz-checkbox.js +1 -1
  25. package/collection/components/lmvz-chip/lmvz-chip.js +1 -1
  26. package/collection/components/lmvz-header/lmvz-header.js +1 -1
  27. package/collection/components/lmvz-icon/lmvz-icon.js +1 -1
  28. package/collection/components/lmvz-input/lmvz-input.js +2 -2
  29. package/collection/components/lmvz-menuitem/lmvz-menuitem.js +1 -1
  30. package/collection/components/lmvz-modal/lmvz-modal.css +24 -30
  31. package/collection/components/lmvz-modal/lmvz-modal.js +4 -108
  32. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  33. package/collection/components/lmvz-toggle/lmvz-toggle.js +1 -1
  34. package/collection/integration/header-integration/header-integration.js +1 -1
  35. package/components/index.d.ts +2 -0
  36. package/components/index.d.ts.bak +2 -0
  37. package/components/index.js +1 -1
  38. package/components/lmvz-button-group.d.ts +11 -0
  39. package/components/lmvz-button-group.d.ts.bak +11 -0
  40. package/components/lmvz-button-group.js +1 -0
  41. package/components/lmvz-button.js +1 -1
  42. package/components/lmvz-card.js +1 -1
  43. package/components/lmvz-checkbox.js +1 -1
  44. package/components/lmvz-chip.js +1 -1
  45. package/components/lmvz-header.js +1 -1
  46. package/components/lmvz-icon.js +1 -1
  47. package/components/lmvz-input.js +1 -1
  48. package/components/lmvz-menuitem.js +1 -1
  49. package/components/lmvz-modal.js +1 -1
  50. package/components/lmvz-select.js +1 -1
  51. package/components/lmvz-toggle.js +1 -1
  52. package/components/p-CdDO7mQa.js +1 -0
  53. package/components/p-Cg2XX_J-.js +1 -0
  54. package/components/p-DSvYtVoD.js +1 -0
  55. package/components/p-K_EPq-vy.js +1 -0
  56. package/components/p-slgmfnHm.js +1 -0
  57. package/esm/{aria-loader-BVolm0lC.js → aria-loader-GfsGHZHY.js} +1 -1
  58. package/esm/index.js +1 -1
  59. package/esm/lmvz-button_3.entry.js +371 -0
  60. package/esm/lmvz-card.entry.js +2 -2
  61. package/esm/lmvz-checkbox.entry.js +3 -3
  62. package/esm/lmvz-chip.entry.js +3 -3
  63. package/esm/lmvz-components.js +1 -1
  64. package/esm/lmvz-header_2.entry.js +3 -3
  65. package/esm/lmvz-input.entry.js +4 -4
  66. package/esm/lmvz-menuitem.entry.js +3 -3
  67. package/esm/lmvz-modal.entry.js +6 -109
  68. package/esm/lmvz-select.entry.js +3 -3
  69. package/esm/lmvz-toggle.entry.js +3 -3
  70. package/esm/loader.js +1 -1
  71. package/esm/{reactive-controller-host-lF2kXM1x.js → reactive-controller-host-CroMsXdS.js} +1 -1
  72. package/hydrate/index.js +268 -184
  73. package/hydrate/index.mjs +268 -184
  74. package/lmvz-components/index.esm.js +1 -1
  75. package/lmvz-components/lmvz-components.esm.js +1 -1
  76. package/lmvz-components/p-05896617.entry.js +1 -0
  77. package/lmvz-components/{p-1b181e90.entry.js → p-267344a7.entry.js} +1 -1
  78. package/lmvz-components/{p-ea335543.entry.js → p-2b09b8bc.entry.js} +1 -1
  79. package/lmvz-components/p-3df92762.entry.js +1 -0
  80. package/lmvz-components/{p-f8ea0eb2.entry.js → p-5f550b9f.entry.js} +1 -1
  81. package/lmvz-components/p-8e43fabb.entry.js +1 -0
  82. package/lmvz-components/{p-DCTzMRMQ.js → p-BRl6zKXT.js} +1 -1
  83. package/lmvz-components/p-CdDO7mQa.js +1 -0
  84. package/lmvz-components/p-d1dacf7e.entry.js +1 -0
  85. package/lmvz-components/{p-d984e118.entry.js → p-f6d1d9df.entry.js} +1 -1
  86. package/lmvz-components/p-f7f32879.entry.js +1 -0
  87. package/lmvz-components/{p-08a08b63.entry.js → p-fa4e00cf.entry.js} +1 -1
  88. package/manifest.json +105 -11
  89. package/package.json +5 -1
  90. package/types/components/lmvz-button/lmvz-button.d.ts +1 -1
  91. package/types/components/lmvz-button-group/lmvz-button-group.d.ts +20 -0
  92. package/types/components/lmvz-modal/lmvz-modal.d.ts +1 -16
  93. package/types/components.d.ts +27 -3
  94. package/cjs/lmvz-button_2.cjs.entry.js +0 -198
  95. package/components/p-Boj0PCdB.js +0 -1
  96. package/components/p-Cc6dOWwS.js +0 -1
  97. package/components/p-DBc1BzQb.js +0 -1
  98. package/esm/lmvz-button_2.entry.js +0 -195
  99. package/lmvz-components/p-23fb2476.entry.js +0 -1
  100. package/lmvz-components/p-6bb145e4.entry.js +0 -1
  101. package/lmvz-components/p-7a310b1e.entry.js +0 -1
  102. package/lmvz-components/p-b7940687.entry.js +0 -1
  103. package/lmvz-components/p-db8306a5.entry.js +0 -1
  104. package/lmvz-components/p-dhVSUYqd.js +0 -1
package/hydrate/index.mjs CHANGED
@@ -5884,7 +5884,7 @@ class ReactiveControllerHost {
5884
5884
  }
5885
5885
  }
5886
5886
 
5887
- const lmvzButtonCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } :host { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: contents; } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } `;
5887
+ const lmvzButtonCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } } :host { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-secondary, #000000)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); } button.primary { --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); --lmvz-button-color: var(--lmvz-semantic-color-int-on-primary, #ffffff); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; } button.primary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.primary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: inline-block; } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } `;
5888
5888
 
5889
5889
  class LmvzButton extends ReactiveControllerHost {
5890
5890
  get el() { return getElement(this); }
@@ -5897,7 +5897,7 @@ class LmvzButton extends ReactiveControllerHost {
5897
5897
  return 0;
5898
5898
  }
5899
5899
  scale = 'default';
5900
- variant = 'secondary';
5900
+ variant;
5901
5901
  disabled = false;
5902
5902
  type = 'button';
5903
5903
  form;
@@ -5972,7 +5972,7 @@ class LmvzButton extends ReactiveControllerHost {
5972
5972
  };
5973
5973
  render() {
5974
5974
  this.renderHiddenButton();
5975
- return (hAsync(Host, { key: '6c44aa8a4b40927313461b5139e88066b855dca6', "aria-disabled": this.disabled ? 'true' : null }, hAsync("button", { key: '3696f0ad46a03fe9573571b46a56772def87bf53', ref: (e) => (this.validationEl = e), disabled: this.disabled, type: this.type, class: classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, hAsync("slot", { key: '3ecce9c6ae978b72b14a807d93248a4566a13f4b' }))));
5975
+ return (hAsync(Host, { key: '8196de85afc3878c6f38e582d7c031f5d19bcd36', "aria-disabled": this.disabled ? 'true' : null }, hAsync("button", { key: '226f2f4ddbf861a8aed66d72c1980aa713e667f3', ref: (e) => (this.validationEl = e), disabled: this.disabled, type: this.type, class: classNames(this.variant ?? 'secondary', { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, hAsync("slot", { key: '436ecc98fc7d7350c67d01d13e5fd4566a238b03' }))));
5976
5976
  }
5977
5977
  static get delegatesFocus() { return true; }
5978
5978
  static get style() { return lmvzButtonCss(); }
@@ -5996,69 +5996,22 @@ class LmvzButton extends ReactiveControllerHost {
5996
5996
  }; }
5997
5997
  }
5998
5998
 
5999
- function getLocationBase() {
6000
- return (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('@app-factory-entry.js', document.baseURI).href)) ?? window?.location?.origin ?? '';
6001
- }
6002
-
6003
- const relativeAssetsPath = '../../assets';
6004
- const createAssetUrlSafely = (file, pathFromAssetRoot) => {
6005
- const relativeAssetPath = joinPath(relativeAssetsPath, pathFromAssetRoot, file);
6006
- try {
6007
- return getAssetPath(relativeAssetPath);
6008
- }
6009
- catch {
6010
- console.warn(`Failed to create URL for asset "${file}" in path "${pathFromAssetRoot}".
6011
- Please provide an absolute URL in your app's 'setAssetPath(...)' configuration! Falling back to a relative URL, which may work in some environments but is not guaranteed to be correct.`);
6012
- return new URL(relativeAssetPath, getLocationBase());
6013
- }
6014
- };
6015
- function joinPath(...parts) {
6016
- return parts.filter(Boolean).join('/').replace('//', '/').replace('/./', '/');
5999
+ /**
6000
+ * Returns a function that delegates to the given predicate/filter and negates its result.
6001
+ * The returned function preserves the input function's types, arguments and timing.
6002
+ *
6003
+ * @param delegate - The predicate/filter function to negate.
6004
+ * @returns A function that returns the negated result.
6005
+ */
6006
+ function negate(delegate) {
6007
+ return (...args) => {
6008
+ const result = delegate(...args);
6009
+ return isPromise(result) ? result.then((res) => !res) : !result;
6010
+ };
6017
6011
  }
6018
6012
 
6019
- const lmvzCardCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } .sc-lmvz-card-h { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: flex; min-width: var(--lmvz-card-component-card-minwidth, 20.4375rem); max-width: var(--lmvz-card-component-card-maxwidth, 21.6875rem); flex-direction: column; align-items: flex-start; border-radius: var(--lmvz-semantic-border-radius-lg, 14px); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); background: var(--lmvz-semantic-color-surface-primary, #ffffff); } *.sc-lmvz-card { color: var(--lmvz-semantic-color-on-surface-primary, #000000); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .top.sc-lmvz-card { display: flex; padding: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); flex-direction: column; justify-content: center; align-items: center; align-self: stretch; } .bottom.sc-lmvz-card { display: flex; min-width: 150px; padding: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)); flex-direction: column; align-items: flex-start; align-self: stretch; } .title.sc-lmvz-card { margin: 0; display: flex; justify-content: center; align-items: center; align-self: stretch; padding-bottom: var(--lmvz-global-s4, 4px); overflow-wrap: break-word; font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.2 Router); } .description.sc-lmvz-card { display: flex; margin: 0; padding-bottom: var(--lmvz-component-body-sm-padding-bottom, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-items: flex-start; align-self: stretch; white-space: pre-line; font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .image-wrapper.sc-lmvz-card { aspect-ratio: 4 / 3; width: 100%; background-size: cover; background-position: center; flex: 1 0 0; align-self: stretch; border-radius: var(--lmvz-semantic-border-radius-md, 6px); } .actions.sc-lmvz-card { margin-top: var(--lmvz-component-form-wrapper-gap-y, clamp(1.13rem, 0.97rem + 0.65vw, 1.75rem)); display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-self: stretch; } button.primary.sc-lmvz-card, lmvz-button.primary.sc-lmvz-card { display: flex; justify-content: center; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); flex: 1 0 0; }`;
6020
-
6021
- class LmvzCard {
6022
- constructor(hostRef) {
6023
- registerInstance(this, hostRef);
6024
- this.primaryAction = createEvent(this, "primaryAction", 7);
6025
- }
6026
- cardTitle;
6027
- imageUrl;
6028
- description;
6029
- primaryActionLabel = '';
6030
- primaryAction;
6031
- get fallbackImage() {
6032
- return createAssetUrlSafely('card-placeholder.svg');
6033
- }
6034
- _onPrimaryClick() {
6035
- this.primaryAction.emit();
6036
- }
6037
- _onOverflowClick(event) {
6038
- console.log(event);
6039
- }
6040
- render() {
6041
- const imgStyle = {
6042
- backgroundImage: `url(${this.imageUrl ?? this.fallbackImage})`,
6043
- };
6044
- return (hAsync(Host, { key: '46c2832b4f90b9eb222749632bc7ad59cd645e10', role: "article" }, hAsync("div", { key: 'cc387fe96cff2dd04c24f75cf838a2bf6f438279', class: "top" }, hAsync("div", { key: 'f9a54a5f81378ef4265e1d74c36c78af002e8874', class: "image-wrapper", style: imgStyle }, hAsync("div", { key: '76daed00408f7ae9ee46977637ddcd3d4f846380', class: "chip-slot" }, hAsync("slot", { key: '6ad522ef7428166b876d0218ef8d801c4ef337f1', name: "chip" })))), hAsync("div", { key: '9c9799668ac199cfecbe10061e271d70d70e2d07', class: "bottom" }, hAsync("header", { key: '1bec743235bea5c7ab163225ffbd7bc6cf11f754' }, hAsync("h2", { key: '06f8e14153328bc5ca920e71e09d9343047c440c', class: "title" }, this.cardTitle)), hAsync("p", { key: '86b95db4e6464ca3236b4a03798013c3580819bf', class: "description" }, this.description), hAsync("div", { key: '553dc998d5318a4730196baa0b9baff3a0a3369f', class: "actions" }, hAsync("button", { key: '7532d01b46769198c23a1b1015c187fdefce146a', class: "primary", onClick: this._onPrimaryClick.bind(this), "data-testid": "primary" }, this.primaryActionLabel), hAsync("button", { key: '633d679ae59b1896aa2a06e04b4564569cf27a7d', class: "tertiary", "aria-label": "More actions", onClick: this._onOverflowClick }, hAsync("span", { key: 'b72c45f93d259502b9d7c5ffb19e292a53c60ec6', class: "icon-placeholder" }, "..."))))));
6045
- }
6046
- static get assetsDirs() { return ["../../assets"]; }
6047
- static get style() { return lmvzCardCss(); }
6048
- static get cmpMeta() { return {
6049
- "$flags$": 774,
6050
- "$tagName$": "lmvz-card",
6051
- "$members$": {
6052
- "cardTitle": [1, "card-title"],
6053
- "imageUrl": [1, "image-url"],
6054
- "description": [1],
6055
- "primaryActionLabel": [1, "primary-action-label"]
6056
- },
6057
- "$listeners$": undefined,
6058
- "$lazyBundleId$": "-",
6059
- "$attrsToReflect$": []
6060
- }; }
6061
- }
6013
+ const chipTypes = ['active', 'warning', 'success', 'error', 'neutral'];
6014
+ const chipSizes = ['default', 'small'];
6062
6015
 
6063
6016
  /**
6064
6017
  * Tests if a value is a `function`.
@@ -8210,6 +8163,243 @@ function toValidSvgStringWithFallback(value) {
8210
8163
  }
8211
8164
  }
8212
8165
 
8166
+ const lmvzButtonGroupCss = () => `:host{display:flex;justify-content:flex-end;gap:var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));font:var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router);flex-wrap:wrap}::slotted([hidden]){display:none !important}`;
8167
+
8168
+ class LmvzButtonGroup {
8169
+ constructor(hostRef) {
8170
+ registerInstance(this, hostRef);
8171
+ }
8172
+ actionsSlot;
8173
+ validationMessageCache = [];
8174
+ actionsStateObserver;
8175
+ get primaryEnabledAction() {
8176
+ return this.enabledButtons.find(isPrimaryAction) ?? this.enabledButtons[0];
8177
+ }
8178
+ get hasActions() {
8179
+ return this.assignedButtons.some((element) => isVisible(element) && isActionButton(element) && !isDisabledButton(element));
8180
+ }
8181
+ componentDidLoad() {
8182
+ this.handleActionsSlotChange();
8183
+ }
8184
+ disconnectedCallback() {
8185
+ this.actionsStateObserver?.disconnect();
8186
+ }
8187
+ get assignedElements() {
8188
+ return this.actionsSlot?.assignedElements({ flatten: true }) ?? [];
8189
+ }
8190
+ get assignedButtons() {
8191
+ return this.assignedElements.filter(isActionButton);
8192
+ }
8193
+ get visibleButtons() {
8194
+ return this.assignedButtons.filter(isVisible);
8195
+ }
8196
+ get enabledButtons() {
8197
+ return this.visibleButtons.filter(negate(isDisabledButton));
8198
+ }
8199
+ getActionValidationResult() {
8200
+ if (!this.visibleButtons.length) {
8201
+ return [];
8202
+ }
8203
+ const primaryActions = this.visibleButtons.filter(isPrimaryAction);
8204
+ const secondaryActions = this.visibleButtons.filter(isSecondaryAction);
8205
+ const issues = [];
8206
+ const order = this.visibleButtons.toReversed();
8207
+ if (primaryActions.length !== 1)
8208
+ issues.push('LmvzModal actions slot must contain exactly one primary action.');
8209
+ if (secondaryActions.length > 1)
8210
+ issues.push(`LmvzModal actions slot must contain at most one secondary action (received ${secondaryActions.length})`);
8211
+ if (primaryActions.length) {
8212
+ const primaryAction = primaryActions[0];
8213
+ const secondaryAction = secondaryActions[0];
8214
+ if (order.indexOf(primaryAction) !== 0)
8215
+ issues.push('Primary action must be the last focusable element in the actions slot (i.e. rightmost button).');
8216
+ if (secondaryAction && order.indexOf(secondaryAction) !== 1)
8217
+ issues.push('Secondary action must be the second-to-last focusable element in the actions slot (i.e. left of primary button).');
8218
+ }
8219
+ else if (secondaryActions.length) {
8220
+ const secondaryAction = secondaryActions[0];
8221
+ if (order.indexOf(secondaryAction) !== 0)
8222
+ issues.push('Secondary action must be the last focusable element in the actions slot when no primary action is present (i.e. rightmost button).');
8223
+ }
8224
+ return issues;
8225
+ }
8226
+ handleActionsSlotChange = () => {
8227
+ this.observeActionState();
8228
+ this.syncActionsState();
8229
+ };
8230
+ observeActionState() {
8231
+ if (typeof MutationObserver === 'undefined')
8232
+ return;
8233
+ this.actionsStateObserver?.disconnect();
8234
+ if (!this.assignedButtons.length)
8235
+ return;
8236
+ this.actionsStateObserver = new MutationObserver(() => {
8237
+ this.syncActionsState();
8238
+ });
8239
+ this.assignedButtons.forEach((element) => {
8240
+ this.actionsStateObserver?.observe(element, {
8241
+ attributes: true,
8242
+ attributeFilter: ['disabled', 'hidden', 'variant'],
8243
+ });
8244
+ });
8245
+ }
8246
+ syncActionsState() {
8247
+ const assignedElements = this.assignedElements;
8248
+ assignedElements.forEach((element) => {
8249
+ const isAllowedAction = ['LMVZ-BUTTON', 'BUTTON'].includes(element.tagName.toUpperCase());
8250
+ if (isAllowedAction)
8251
+ return;
8252
+ if (!element.hasAttribute('hidden')) {
8253
+ element.setAttribute('hidden', '');
8254
+ }
8255
+ if (element.getAttribute('aria-hidden') !== 'true') {
8256
+ element.setAttribute('aria-hidden', 'true');
8257
+ }
8258
+ });
8259
+ this.checkActions();
8260
+ const length = this.visibleButtons.length;
8261
+ for (let i = 0; i < length; i++) {
8262
+ const variant = i === length - 1 ? 'primary' : i === length - 2 ? 'secondary' : 'tertiary';
8263
+ const element = this.visibleButtons.at(i);
8264
+ if (!element)
8265
+ continue;
8266
+ if (isLmvzButton(element)) {
8267
+ if (!element.getAttribute('variant'))
8268
+ element.setAttribute('variant', variant);
8269
+ }
8270
+ else {
8271
+ element.classList.add(variant);
8272
+ }
8273
+ }
8274
+ this.focusPrimaryAction();
8275
+ }
8276
+ focusPrimaryAction() {
8277
+ const focusTarget = this.primaryEnabledAction;
8278
+ if (!focusTarget || typeof window === 'undefined')
8279
+ return;
8280
+ window.requestAnimationFrame(() => {
8281
+ if (canReceiveFocus(focusTarget)) {
8282
+ focusTarget.focus();
8283
+ }
8284
+ });
8285
+ }
8286
+ checkActions() {
8287
+ if (!isAriaValidationEnabled())
8288
+ return;
8289
+ const issues = this.getActionValidationResult();
8290
+ if (!issues.length) {
8291
+ return;
8292
+ }
8293
+ issues.forEach((issue) => {
8294
+ if (this.validationMessageCache.includes(issue))
8295
+ return;
8296
+ console.warn(issue);
8297
+ this.validationMessageCache.push(issue);
8298
+ });
8299
+ }
8300
+ render() {
8301
+ return (hAsync(Host, { key: '56b60821ecaa2301d13e78d621e873aa74cd170e' }, hAsync("slot", { key: 'e6a1422950fa5b0026356b7788a607a690116186', ref: (element) => (this.actionsSlot = element), onSlotchange: this.handleActionsSlotChange })));
8302
+ }
8303
+ static get style() { return lmvzButtonGroupCss(); }
8304
+ static get cmpMeta() { return {
8305
+ "$flags$": 265,
8306
+ "$tagName$": "lmvz-button-group",
8307
+ "$members$": {
8308
+ "primaryEnabledAction": [2064],
8309
+ "hasActions": [2052, "has-actions"]
8310
+ },
8311
+ "$listeners$": undefined,
8312
+ "$lazyBundleId$": "-",
8313
+ "$attrsToReflect$": []
8314
+ }; }
8315
+ }
8316
+ function isActionButton(element) {
8317
+ return ['LMVZ-BUTTON', 'BUTTON'].includes(element.tagName.toUpperCase());
8318
+ }
8319
+ function isLmvzButton(element) {
8320
+ return element?.tagName.toUpperCase() === 'LMVZ-BUTTON';
8321
+ }
8322
+ function isDisabledButton(element) {
8323
+ return element.hasAttribute('disabled') || element.disabled === true;
8324
+ }
8325
+ function isVisible(element) {
8326
+ return !element.hasAttribute('hidden');
8327
+ }
8328
+ function getActionVariant(element) {
8329
+ const variant = element.getAttribute('variant') ?? element.variant;
8330
+ return variant === 'primary' || variant === 'secondary' || variant === 'tertiary' ? variant : 'secondary';
8331
+ }
8332
+ function isPrimaryAction(element) {
8333
+ return getActionVariant(element) === 'primary';
8334
+ }
8335
+ function isSecondaryAction(element) {
8336
+ return getActionVariant(element) === 'secondary';
8337
+ }
8338
+
8339
+ function getLocationBase() {
8340
+ return (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('@app-factory-entry.js', document.baseURI).href)) ?? window?.location?.origin ?? '';
8341
+ }
8342
+
8343
+ const relativeAssetsPath = '../../assets';
8344
+ const createAssetUrlSafely = (file, pathFromAssetRoot) => {
8345
+ const relativeAssetPath = joinPath(relativeAssetsPath, pathFromAssetRoot, file);
8346
+ try {
8347
+ return getAssetPath(relativeAssetPath);
8348
+ }
8349
+ catch {
8350
+ console.warn(`Failed to create URL for asset "${file}" in path "${pathFromAssetRoot}".
8351
+ Please provide an absolute URL in your app's 'setAssetPath(...)' configuration! Falling back to a relative URL, which may work in some environments but is not guaranteed to be correct.`);
8352
+ return new URL(relativeAssetPath, getLocationBase());
8353
+ }
8354
+ };
8355
+ function joinPath(...parts) {
8356
+ return parts.filter(Boolean).join('/').replace('//', '/').replace('/./', '/');
8357
+ }
8358
+
8359
+ const lmvzCardCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } } .sc-lmvz-card-h { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-secondary, #000000)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); } button.primary { --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); --lmvz-button-color: var(--lmvz-semantic-color-int-on-primary, #ffffff); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; } button.primary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.primary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: flex; min-width: var(--lmvz-card-component-card-minwidth, 20.4375rem); max-width: var(--lmvz-card-component-card-maxwidth, 21.6875rem); flex-direction: column; align-items: flex-start; border-radius: var(--lmvz-semantic-border-radius-lg, 14px); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); background: var(--lmvz-semantic-color-surface-primary, #ffffff); } *.sc-lmvz-card { color: var(--lmvz-semantic-color-on-surface-primary, #000000); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .top.sc-lmvz-card { display: flex; padding: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); flex-direction: column; justify-content: center; align-items: center; align-self: stretch; } .bottom.sc-lmvz-card { display: flex; min-width: 150px; padding: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)); flex-direction: column; align-items: flex-start; align-self: stretch; } .title.sc-lmvz-card { margin: 0; display: flex; justify-content: center; align-items: center; align-self: stretch; padding-bottom: var(--lmvz-global-s4, 4px); overflow-wrap: break-word; font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.2 Router); } .description.sc-lmvz-card { display: flex; margin: 0; padding-bottom: var(--lmvz-component-body-sm-padding-bottom, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-items: flex-start; align-self: stretch; white-space: pre-line; font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .image-wrapper.sc-lmvz-card { aspect-ratio: 4 / 3; width: 100%; background-size: cover; background-position: center; flex: 1 0 0; align-self: stretch; border-radius: var(--lmvz-semantic-border-radius-md, 6px); } .actions.sc-lmvz-card { margin-top: var(--lmvz-component-form-wrapper-gap-y, clamp(1.13rem, 0.97rem + 0.65vw, 1.75rem)); display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-self: stretch; } button.primary.sc-lmvz-card, lmvz-button.primary.sc-lmvz-card { display: flex; justify-content: center; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); flex: 1 0 0; }`;
8360
+
8361
+ class LmvzCard {
8362
+ constructor(hostRef) {
8363
+ registerInstance(this, hostRef);
8364
+ this.primaryAction = createEvent(this, "primaryAction", 7);
8365
+ }
8366
+ cardTitle;
8367
+ imageUrl;
8368
+ description;
8369
+ primaryActionLabel = '';
8370
+ primaryAction;
8371
+ get fallbackImage() {
8372
+ return createAssetUrlSafely('card-placeholder.svg');
8373
+ }
8374
+ _onPrimaryClick() {
8375
+ this.primaryAction.emit();
8376
+ }
8377
+ _onOverflowClick(event) {
8378
+ console.log(event);
8379
+ }
8380
+ render() {
8381
+ const imgStyle = {
8382
+ backgroundImage: `url(${this.imageUrl ?? this.fallbackImage})`,
8383
+ };
8384
+ return (hAsync(Host, { key: '2d9ecdeed986f142fb7ff477b56dece59549bbc7', role: "article" }, hAsync("div", { key: '34fc9c3a1338b31ce73424e8c07c79a291ead85c', class: "top" }, hAsync("div", { key: '1756e6b26d7f42499753c36ed0fc13755fe32bfe', class: "image-wrapper", style: imgStyle }, hAsync("div", { key: 'cd8be8acc9e949092b6363024316d12d445a9fbc', class: "chip-slot" }, hAsync("slot", { key: '26389ab3b7031b948ff1701857e6028446662cf5', name: "chip" })))), hAsync("div", { key: '2fa61cd7bef437f15929ae39be7fa294e8778321', class: "bottom" }, hAsync("header", { key: 'b237ca025e42a29f528f827dc3c83b3b0f9267c0' }, hAsync("h2", { key: 'ffd0a509ba97acb75d4c15d0fd01eef08689a2a7', class: "title" }, this.cardTitle)), hAsync("p", { key: 'c40bd5d5f7e41a0cebc2f7f9e572ba98cc892cc1', class: "description" }, this.description), hAsync("div", { key: '7663f93b41ef1e798b464bd6ad75ca8a53c0667b', class: "actions" }, hAsync("button", { key: '3348e6700aa1571183558ab8fe4f73393c1cc943', class: "primary", onClick: this._onPrimaryClick.bind(this), "data-testid": "primary" }, this.primaryActionLabel), hAsync("button", { key: 'd3a12cdabbdd68c3b04e06984db44abd3bbd22ea', class: "tertiary", "aria-label": "More actions", onClick: this._onOverflowClick }, hAsync("span", { key: '80e31e6b691e18d1b42a2b4831349c3abf8e02b0', class: "icon-placeholder" }, "..."))))));
8385
+ }
8386
+ static get assetsDirs() { return ["../../assets"]; }
8387
+ static get style() { return lmvzCardCss(); }
8388
+ static get cmpMeta() { return {
8389
+ "$flags$": 774,
8390
+ "$tagName$": "lmvz-card",
8391
+ "$members$": {
8392
+ "cardTitle": [1, "card-title"],
8393
+ "imageUrl": [1, "image-url"],
8394
+ "description": [1],
8395
+ "primaryActionLabel": [1, "primary-action-label"]
8396
+ },
8397
+ "$listeners$": undefined,
8398
+ "$lazyBundleId$": "-",
8399
+ "$attrsToReflect$": []
8400
+ }; }
8401
+ }
8402
+
8213
8403
  const checkmarkSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiPgogICAgPHBhdGggZD0iTTMuNzUgMTIuNTYyNUw4LjgzMDc5IDE3LjYyNUwyMC40Mzc1IDYuMzc1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+';
8214
8404
 
8215
8405
  const lmvzCheckboxCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } .sc-lmvz-checkbox-h { display: inline-block; --checkbox-box-size: var(--lmvz-global-s18, 18px); --checkbox-border-radius: var(--lmvz-global-s4, 4px); --checkbox-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff); --checkbox-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); --checkbox-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7); --checkbox-border-color-checked: var(--lmvz-semantic-color-border-active, #0f8acc); --checkbox-border-color-error: var(--lmvz-semantic-color-status-on-danger, #e52a31); --checkbox-wrapper-bg-hover: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); --checkbox-wrapper-bg-checked: var(--lmvz-semantic-color-status-active, #f1f9fe); --checkbox-ripple-bg: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --checkbox-checkmark-color: var(--lmvz-semantic-color-border-active, #0f8acc); --checkbox-label-color: var(--lmvz-semantic-color-on-surface-primary, #000000); --checkbox-label-color-checked: var(--lmvz-semantic-color-status-on-active, #0e7ab4); --checkbox-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #7a7a7a); --checkbox-error-color: var(--lmvz-semantic-color-status-on-danger, #e52a31); --checkbox-focus-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); --checkbox-easing: var(--lmvz-global-easing-default, ease); --checkbox-duration: 0.2s; } .pill.sc-lmvz-checkbox { display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); padding-block: var(--lmvz-dimension-2-8, clamp(0.13rem, 0.03rem + 0.39vw, 0.5rem)); padding-inline: var(--lmvz-dimension-4-10, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); border-radius: var(--lmvz-semantic-border-radius-round, 999px); cursor: pointer; text-decoration: none; background-color: transparent; transition: background-color var(--checkbox-duration) var(--checkbox-easing); } input.sc-lmvz-checkbox { position: absolute; opacity: 0; width: var(--checkbox-box-size); height: var(--checkbox-box-size); margin: 0; cursor: pointer; z-index: 1; } .box.sc-lmvz-checkbox { display: flex; align-items: center; justify-content: center; width: var(--checkbox-box-size); height: var(--checkbox-box-size); background-color: var(--checkbox-bg); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--checkbox-border-color); border-radius: var(--checkbox-border-radius); color: var(--checkbox-checkmark-color); transition: border-color var(--checkbox-duration) var(--checkbox-easing), background-color var(--checkbox-duration) var(--checkbox-easing); pointer-events: none; flex-shrink: 0; } .indicator.sc-lmvz-checkbox { display: flex; align-items: center; justify-content: center; line-height: 0; } .content.sc-lmvz-checkbox { display: flex; flex-direction: column; overflow-wrap: break-word; min-width: 0; } label.sc-lmvz-checkbox { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); color: var(--checkbox-label-color); transition: color var(--checkbox-duration) var(--checkbox-easing); } .helper-text.sc-lmvz-checkbox { font: var(--lmvz-typography-body-sm, 400 clamp(0.75rem, 0.73rem + 0.06vw, 0.81rem) / 1.4 Router); color: var(--checkbox-helper-color); margin-block-start: 2px; } .error-text.sc-lmvz-checkbox { font: var(--lmvz-typography-body-sm, 400 clamp(0.75rem, 0.73rem + 0.06vw, 0.81rem) / 1.4 Router); color: var(--checkbox-error-color); display: block; margin-block-start: 4px; padding-inline: 10px; } @media (hover: hover) { .pill.sc-lmvz-checkbox:hover { background-color: var(--checkbox-wrapper-bg-hover); } .pill.sc-lmvz-checkbox:hover .box.sc-lmvz-checkbox { border-color: var(--checkbox-border-color-hover); } } [checked].sc-lmvz-checkbox-h .pill.sc-lmvz-checkbox { background-color: var(--checkbox-wrapper-bg-checked); } [checked].sc-lmvz-checkbox-h .box.sc-lmvz-checkbox { border-color: var(--checkbox-border-color-checked); } [checked].sc-lmvz-checkbox-h label.sc-lmvz-checkbox { color: var(--checkbox-label-color-checked); } [error].sc-lmvz-checkbox-h .box.sc-lmvz-checkbox { border-color: var(--checkbox-border-color-error); } [error].sc-lmvz-checkbox-h .helper-text.sc-lmvz-checkbox { color: var(--checkbox-error-color); } [disabled].sc-lmvz-checkbox-h { opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; } [disabled].sc-lmvz-checkbox-h .pill.sc-lmvz-checkbox { cursor: not-allowed; } [disabled].sc-lmvz-checkbox-h input.sc-lmvz-checkbox { cursor: not-allowed; } input.sc-lmvz-checkbox:focus-visible ~ .box.sc-lmvz-checkbox { outline: 2px solid var(--checkbox-focus-color); outline-offset: 2px; box-shadow: 0 var(--lmvz-semantic-shadow-l1-1-position-y, 2px) 0 var(--lmvz-semantic-shadow-l1-1-blur, 4px) var(--lmvz-semantic-color-shadow-l1-colored, rgba(175, 223, 249, 0.42)); } @media (forced-colors: active) { .box.sc-lmvz-checkbox { forced-color-adjust: auto; border-color: ButtonText; background-color: Field; } [checked].sc-lmvz-checkbox-h .box.sc-lmvz-checkbox { border-color: Highlight; background-color: Field; } .indicator.sc-lmvz-checkbox { color: ButtonText; } [checked].sc-lmvz-checkbox-h .indicator.sc-lmvz-checkbox { color: HighlightText; } input.sc-lmvz-checkbox:focus-visible ~ .box.sc-lmvz-checkbox { outline-color: Highlight; box-shadow: none; } }`;
@@ -8303,7 +8493,7 @@ class LmvzCheckbox extends ReactiveControllerHost {
8303
8493
  this.lmvzChange.emit(this.checked);
8304
8494
  };
8305
8495
  render() {
8306
- return (hAsync(Host, { key: '6014c885305bc9824f7a6d4f0ba8c642125f3a5b' }, hAsync("div", { key: 'cbc6de2b684acfb00b77a366e707d73de74a0b8a', class: "pill" }, hAsync("input", { key: '5b442512b6cab2e60a1d62fd40e4c868b1bf87ac', type: "checkbox", id: this.checkboxId, checked: this.checkedState, disabled: this.disabled, required: this.required, "aria-required": this.required ? 'true' : 'false', "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": this.ariaDescribedBy, "aria-errormessage": this.error && this.errorId ? this.errorId : undefined, ref: (el) => (this.nativeInput = el), onChange: this.handleChange, autoFocus: this.autofocus }), hAsync("span", { key: '09c534b7c5642c620129ea05a4468bd584c56ce7', class: "box", "aria-hidden": "true" }, this.checkedState && hAsync("span", { key: 'eaa49e1a60054f8efc62ade0446a4704f0bb46e9', class: "indicator", innerHTML: CHECKMARK_SVG })), hAsync("span", { key: '8fb836d71cbb3d4eadaf67284f5bb52906549275', class: "content" }, hAsync("label", { key: '8df862f11e9885158264908fdac6599f21ecba07', htmlFor: this.checkboxId }, this.label), this.helperText && (hAsync("span", { key: '1e45e6177774e937311cddacd1a3d3379c9c6af5', class: "helper-text", id: this.helperId, role: "status" }, this.helperText)))), this.errorMessage && (hAsync("span", { key: '83fc1f7cd6828973e52ef27604f12f94f41d7f4b', class: "error-text", id: this.errorId, role: "alert" }, this.errorMessage))));
8496
+ return (hAsync(Host, { key: '70201fa49465f1e29b98bb251ea254be0293b1df' }, hAsync("div", { key: 'dfeb788e3e2d9a8329e7798954c744eee616692e', class: "pill" }, hAsync("input", { key: '79fefaa297a5fbbb1b7f180c7cf4cccf8650a1f0', type: "checkbox", id: this.checkboxId, checked: this.checkedState, disabled: this.disabled, required: this.required, "aria-required": this.required ? 'true' : 'false', "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": this.ariaDescribedBy, "aria-errormessage": this.error && this.errorId ? this.errorId : undefined, ref: (el) => (this.nativeInput = el), onChange: this.handleChange, autoFocus: this.autofocus }), hAsync("span", { key: '8808a026274979678515b3e750065af38d62fff9', class: "box", "aria-hidden": "true" }, this.checkedState && hAsync("span", { key: '861c08fb2a5cc6f24d3ae0a9f28cb6d2f51beda4', class: "indicator", innerHTML: CHECKMARK_SVG })), hAsync("span", { key: '6dc36656d76bd3a6816553b4dcbdbea2c9bd2b0f', class: "content" }, hAsync("label", { key: 'c343c4261e2eb231925d0f3ca0a83f9f3cdd0b9b', htmlFor: this.checkboxId }, this.label), this.helperText && (hAsync("span", { key: '8473ed19adfe975b715a5e0b78c949c6b11de99e', class: "helper-text", id: this.helperId, role: "status" }, this.helperText)))), this.errorMessage && (hAsync("span", { key: 'e934cec1cc622908188cf9090e24988e5df45799', class: "error-text", id: this.errorId, role: "alert" }, this.errorMessage))));
8307
8497
  }
8308
8498
  static get formAssociated() { return true; }
8309
8499
  static get watchers() { return {
@@ -8351,9 +8541,6 @@ function debounce(func, wait) {
8351
8541
  };
8352
8542
  }
8353
8543
 
8354
- const chipTypes = ['active', 'warning', 'success', 'error', 'neutral'];
8355
- const chipSizes = ['default', 'small'];
8356
-
8357
8544
  const lmvzChipCss = () => `:host { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-neutral-subtle, #d4d4d4); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-neutral, #fcfcfc); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-neutral, #545454); padding-block: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)); padding-inline: var(--lmvz-dimension-8-10, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem)); border: 1px solid var(--lmvz-chip-border-color); border-radius: var(--lmvz-semantic-border-radius-round, 999px); font: var(--lmvz-typography-body-xs-strong, 500 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.4 Router); background-color: var(--lmvz-chip-background-color); color: var(--lmvz-chip-foreground-color); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)); box-sizing: border-box; max-width: 100%; overflow: hidden; white-space: nowrap; > .content-overflow-wrapper { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } :host([size='small']) { padding-block: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem)); padding-inline: var(--lmvz-dimension-6-8, clamp(0.38rem, 0.34rem + 0.13vw, 0.5rem)); font: var(--lmvz-typography-body-2xs-strong, 500 clamp(0.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.4 Router); gap: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem)); } ::slotted(*) { display: inline; white-space: inherit; } ::slotted(lmvz-icon) { --lmvz-component-color: var(--lmvz-chip-foreground-color); --lmvz-component-size: var(--lmvz-dimension-12-14, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem)); } :host([size='small']) ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); } :host([type='active']) { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-active-subtle, #c1e6fa); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-active, #f1f9fe); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } :host([type='warning']) { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-warning-subtle, #ffdf75); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-warning, #fffbf0); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-warning, #7a5e00); } :host([type='success']) { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-success-subtle, #a5dad3); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-success, #f1f9f8); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-success, #37867c); } :host([type='error']) { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-danger-subtle, #f7bfc2); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-danger, #fdf1f2); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-danger, #e52a31); } :host([type='neutral']) { --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-neutral-subtle, #d4d4d4); --lmvz-chip-background-color: var(--lmvz-semantic-color-status-neutral, #fcfcfc); --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-neutral, #545454); } `;
8358
8545
 
8359
8546
  class LmvzChip extends ReactiveControllerHost {
@@ -8402,7 +8589,7 @@ class LmvzChip extends ReactiveControllerHost {
8402
8589
  }
8403
8590
  }, 500);
8404
8591
  render() {
8405
- return (hAsync(Host, { key: '14ee006aff40f125aef2e9a461e68e25c6ed27d6', type: this.type, size: this.size }, hAsync("slot", { key: '3222c7f40b833f344aa233c13e2644d6e928bf4c', name: "before-text", ref: (el) => (this.beforeSlot = el), onSlotchange: () => this.checkContent() }), hAsync("span", { key: '4d1c9fa87ccda9387b945444e9ac6a50703a19e5', class: "content-overflow-wrapper" }, hAsync("slot", { key: '42866115b8a6c50e86663ed8934504240ee0e6fa', ref: (el) => (this.defaultSlot = el), onSlotchange: () => this.checkContent() })), hAsync("slot", { key: '890afa73be440ee7e7620a024744be08fee57b83', name: "after-text", ref: (el) => (this.afterSlot = el), onSlotchange: () => this.checkContent() })));
8592
+ return (hAsync(Host, { key: '70654d69189e77f9356853a921366083b2c4b969', type: this.type, size: this.size }, hAsync("slot", { key: 'c7e667b93166286fe68a812dd8eec82885e3fc5e', name: "before-text", ref: (el) => (this.beforeSlot = el), onSlotchange: () => this.checkContent() }), hAsync("span", { key: 'af38dd0429b42685a114e26175ce42d09f5fdcc1', class: "content-overflow-wrapper" }, hAsync("slot", { key: '924158498d65b9ac7c912b6b1a479016176e0b78', ref: (el) => (this.defaultSlot = el), onSlotchange: () => this.checkContent() })), hAsync("slot", { key: '9ff0394dbfb2131fafe513d0f2d8ce26c7781f20', name: "after-text", ref: (el) => (this.afterSlot = el), onSlotchange: () => this.checkContent() })));
8406
8593
  }
8407
8594
  static get watchers() { return {
8408
8595
  "type": [{
@@ -8558,7 +8745,7 @@ class LmvzHeader extends ReactiveControllerHost {
8558
8745
  }
8559
8746
  }
8560
8747
  render() {
8561
- return (hAsync(Host, { key: '87ecb9948039ea2f4b998bf35865e5839708a65c', onFocus: this.delegateFocus.bind(this) }, hAsync("div", { key: '4f1ae09b1a3e0a9c3eb12659b3952eef34cbd67b', class: "brand" }, hAsync("slot", { key: '99c03f87f0b3462d9b44835ba34ee05c75373b22', name: "brand" }, hAsync("img", { key: '1616ce8464c2e798a53bc7c879385e3882e4d32f', id: "fallback-logo-lmvz", src: logoSvg, alt: "Lehrmittelverlag Z\u00FCrich" }))), hAsync("nav", { key: 'ff7c56dbc9e80ba9a0757683069e1cba168abcb6', "aria-label": "Hauptnavigation" }, hAsync("div", { key: 'a3bb67d788b936422992b066431c73098ff2aa11', role: "menubar", class: "primary-menubar" }, hAsync("slot", { key: 'e85b93f943c6d97bd5a7fa6f75e4855785d09ec5', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), hAsync("div", { key: 'e9efcfc5d3a8cb991c255b32b205924dafb5aaf6', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, hAsync("slot", { key: '7314e6a72705d48b347fa30945b1d5513b87bfd3', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), hAsync("div", { key: 'aee503cddbf8964833934e594caf5faa6e073a02', class: "actions" }, hAsync("slot", { key: '5c1b15c0507ef24f67e37cd1652b4cc5ce4cc104', name: "actions" }))));
8748
+ return (hAsync(Host, { key: '323b7b13ef147f48e5f06537c7f27ab6e8a649ca', onFocus: this.delegateFocus.bind(this) }, hAsync("div", { key: '518434d55b7bfc5c1a8988f707984b8e2a41163c', class: "brand" }, hAsync("slot", { key: '1829a1ba10ba3a4e1a0e32564c534e960dc652d1', name: "brand" }, hAsync("img", { key: '485c217a7fc920646ec531cac9744a10f29dab4e', id: "fallback-logo-lmvz", src: logoSvg, alt: "Lehrmittelverlag Z\u00FCrich" }))), hAsync("nav", { key: 'df2cea9f42427c0bb51a498cc2627f0113a608a0', "aria-label": "Hauptnavigation" }, hAsync("div", { key: '93d6e0edc45c0032c5d3c93ea5f22e204fb0617e', role: "menubar", class: "primary-menubar" }, hAsync("slot", { key: '1b0238ca89023cc9a0ec4453e79a4597aaa92f2a', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), hAsync("div", { key: 'd7576b23a5f9268a106c98052a869825493e0485', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, hAsync("slot", { key: 'ada5f271c58350c44bb55c3bd976450214795f2b', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), hAsync("div", { key: 'db47039ebf932942210fd3f0920f9f86f9d2b09b', class: "actions" }, hAsync("slot", { key: '2d220a2946f26e69052d20dd4524e60fafbfe137', name: "actions" }))));
8562
8749
  }
8563
8750
  static get watchers() { return {
8564
8751
  "lmvzActiveNav": [{
@@ -8626,7 +8813,7 @@ class LmvzIcon extends ReactiveControllerHost {
8626
8813
  super.componentDidRender();
8627
8814
  }
8628
8815
  render() {
8629
- return hAsync(Host, { key: 'e76fe28500b3545b8917ecdad590da5bc04ed38f', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
8816
+ return hAsync(Host, { key: '03b4391d02a77409257bcda51c2b65ad9a9e0a0c', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
8630
8817
  }
8631
8818
  waitUntilVisible(callback, rootMargin = 50) {
8632
8819
  {
@@ -8819,9 +9006,9 @@ class LmvzInput extends ReactiveControllerHost {
8819
9006
  render() {
8820
9007
  const hasValue = Boolean(this.value);
8821
9008
  const shouldFloatLabel = hasValue || Boolean(this.placeholder);
8822
- return (hAsync("div", { key: '3cbfee5fccbb5efe1bfb9c6622653e11d4896615', class: classNames('input-container', {
9009
+ return (hAsync("div", { key: 'b8c3aaccafb89725aaa157a72633c67ae8b4d58c', class: classNames('input-container', {
8823
9010
  'interaction-filled': hasValue,
8824
- }) }, hAsync("div", { key: '2712b0d5eda0ca1d4da70f362047df07acf922a5', class: "input-wrapper" }, hAsync("slot", { key: '992bc86de6b3bdd3cdbac1c000d38a338e6e4474', name: "before-input" }), hAsync("div", { key: '35ace7d889667f5d09eea76dcba161f8711c9b1c', class: "label-input-group" }, hAsync("label", { key: '28520dddf331d35ba75283673aa81e0046628907', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (hAsync("span", { key: 'b91766b86b1bc68ce3dbb4b734ee4aa40fe0759b', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), hAsync("input", { key: 'ed7cd4b64091256df1c3b939c1e22d6082fe58b9', id: this.inputId, ref: (el) => (this.nativeInputElement = el), type: this.type, min: this.min, max: this.max, step: this.step, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, form: this.form, autocomplete: this.autocomplete, inputmode: this.inputmode, autocorrect: this.autocorrect, autocapitalize: this.autocapitalize, spellcheck: this.spellcheck, autofocus: this.autofocus, minlength: this.minlength, maxlength: this.maxlength, pattern: this.pattern, "aria-invalid": this.error ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false', "aria-describedby": this.describedBy, "aria-errormessage": this.errorId, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur })), hAsync("slot", { key: '1e42c305b8e554fadd7c50fbbb54ea234c734b0a', name: "after-input" })), hAsync("div", { key: '190a1a92971a717f3ef594615fbe4dd0c9a72493', id: this.helperId, role: "status" }, this.helperText || null), hAsync("div", { key: '4d07b45a51d3733caf09a1bbc56ae6f51411ecbc', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
9011
+ }) }, hAsync("div", { key: '80261c486d3bfe61aa060d50e9a6774c961339a1', class: "input-wrapper" }, hAsync("slot", { key: '6856dd64991251adc63d8064ed63e9cf7b1773a2', name: "before-input" }), hAsync("div", { key: 'c975357079efef465c56fb50cbb404bd1cbe3fb1', class: "label-input-group" }, hAsync("label", { key: '798417172f8411be97866edbffbd2bb98c308c69', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (hAsync("span", { key: '9fd59f3d93c984304e6c8ae6531df82bc0057243', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), hAsync("input", { key: 'a4e1133b4891c01044365eb3c97ee234c84c9bac', id: this.inputId, ref: (el) => (this.nativeInputElement = el), type: this.type, min: this.min, max: this.max, step: this.step, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, form: this.form, autocomplete: this.autocomplete, inputmode: this.inputmode, autocorrect: this.autocorrect, autocapitalize: this.autocapitalize, spellcheck: this.spellcheck, autofocus: this.autofocus, minlength: this.minlength, maxlength: this.maxlength, pattern: this.pattern, "aria-invalid": this.error ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false', "aria-describedby": this.describedBy, "aria-errormessage": this.errorId, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur })), hAsync("slot", { key: 'c774f03e704889b524f305c00d60c0902abdff5f', name: "after-input" })), hAsync("div", { key: 'f513746541c71ce0d67c26eb220b54408fc3f136', id: this.helperId, role: "status" }, this.helperText || null), hAsync("div", { key: '197683e55807bf100ca1543f5b84b14e910e721f', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
8825
9012
  }
8826
9013
  static get formAssociated() { return true; }
8827
9014
  static get watchers() { return {
@@ -8899,7 +9086,7 @@ class LmvzMenuItem extends ReactiveControllerHost {
8899
9086
  this.addController(new ElementActivationController(this));
8900
9087
  }
8901
9088
  render() {
8902
- return (hAsync(Host, { key: 'a87116fba2d35c612e590c6b4e12c03b60d1ef0e' }, hAsync("slot", { key: 'b302049db0b5818d4d7f90c043eb5c3caf48ca1b', ref: (e) => (this.validationSlot = e) })));
9089
+ return (hAsync(Host, { key: '3a722fe1fbacabd99ac5a5bd23537a1ff383fb95' }, hAsync("slot", { key: 'e475dd50bbd2f9f349edb61766a0b21c1fb1ae16', ref: (e) => (this.validationSlot = e) })));
8903
9090
  }
8904
9091
  static get style() { return lmvzMenuitemCss(); }
8905
9092
  static get cmpMeta() { return {
@@ -8917,7 +9104,7 @@ class LmvzMenuItem extends ReactiveControllerHost {
8917
9104
 
8918
9105
  const closeSmSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYgNkwxMiAxMk0xMiAxMkwxOCAxOE0xMiAxMkw2IDE4TTEyIDEyTDE4IDYiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==';
8919
9106
 
8920
- const lmvzModalCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } :host { display: contents; color: var(--lmvz-semantic-color-on-surface-primary, #000000); --lmvz-modal-shell-padding: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); --lmvz-modal-shell-gap: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); --lmvz-modal-actions-gap: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-modal-viewport-padding: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); --lmvz-modal-shell-max-width: 40rem; } dialog { border: none; padding: 0; background: transparent; color: var(--lmvz-semantic-color-on-surface-primary, #000000); } dialog::backdrop { background: rgba(0, 0, 0, 0.19); background: rgb(from var(--lmvz-semantic-color-int-primary, #000000) r g b / 0.19); } .modal-shell { display: flex; flex-direction: column; gap: var(--lmvz-modal-shell-gap); inline-size: min(calc(100vw - (2 * var(--lmvz-modal-viewport-padding))), var(--lmvz-modal-shell-max-width)); max-inline-size: 100%; padding: var(--lmvz-modal-shell-padding); border-radius: var(--lmvz-semantic-border-radius-lg, 14px); background: var(--lmvz-semantic-color-surface-primary, #ffffff); overflow: auto; } .header { display: flex; align-items: flex-start; justify-content: flex-end; gap: var(--lmvz-modal-shell-gap); } .title { min-inline-size: 0; font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.4 Router); } .has-title .title { flex: 1 1 auto; } .body { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--lmvz-modal-actions-gap); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .close-button { display: inline-flex; flex: none; } ::slotted([slot='actions'][hidden]) { display: none; } `;
9107
+ const lmvzModalCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } } :host { display: contents; --lmvz-modal-shell-gap: var(--lmvz-dimension-16-20, clamp(1rem, 0.94rem + 0.26vw, 1.25rem)); } dialog { border: none; padding: 0; background: transparent; } dialog::backdrop { background: rgba(0, 0, 0, 0.19); background: rgb(from var(--lmvz-semantic-color-int-primary, #000000) r g b / 0.29); } .modal-shell { position: relative; display: flex; flex-direction: column; inline-size: fit-content; max-inline-size: clamp(40rem, 100%, 80vw); gap: var(--lmvz-modal-shell-gap); padding-block: var(--lmvz-component-modal-padding-y, clamp(2.25rem, 2.19rem + 0.26vw, 2.5rem)); padding-inline: var(--lmvz-component-modal-padding-x, clamp(1.5rem, 1.14rem + 1.55vw, 3rem)); border-radius: var(--lmvz-component-modal-border-radius, 18px); background: var(--lmvz-semantic-color-surface-primary, #ffffff); overflow: auto; .close-button { position: absolute; top: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); right: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); } } @media (min-width: 768px) { .modal-shell { max-inline-size: 100vw; } } .header { display: flex; align-items: flex-start; justify-content: flex-end; gap: var(--lmvz-modal-shell-gap); } .title { min-inline-size: 0; font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.4 Router); } .has-title .title { flex: 1 1 auto; } .body { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } `;
8921
9108
 
8922
9109
  const closeIconSvg = toValidSvgStringWithFallback(closeSmSvg);
8923
9110
  let modalIdCounter = 0;
@@ -8926,16 +9113,13 @@ class LmvzModal extends ReactiveControllerHost {
8926
9113
  inheritedAriaAttributes = {};
8927
9114
  dialogEl;
8928
9115
  dialogStateObserver;
8929
- actionsStateObserver;
8930
9116
  headerSlot;
8931
- actionsSlot;
9117
+ buttonGroupEl;
8932
9118
  closeButtonEl;
8933
9119
  previouslyFocusedElement = null;
8934
9120
  wrappedDialogShowModal;
8935
- lastActionValidationMessage;
8936
9121
  pendingCloseReturnValue;
8937
9122
  dialogTitleId = `lmvz-modal-title-${modalIdCounter++}`;
8938
- hasActions = false;
8939
9123
  hasHeader = false;
8940
9124
  open = false;
8941
9125
  closeLabel = 'Schliessen';
@@ -8947,9 +9131,6 @@ class LmvzModal extends ReactiveControllerHost {
8947
9131
  get validationEl() {
8948
9132
  return this.dialogEl ?? this.el;
8949
9133
  }
8950
- get validationSlot() {
8951
- return this.actionsSlot;
8952
- }
8953
9134
  constructor(hostRef) {
8954
9135
  super();
8955
9136
  registerInstance(this, hostRef);
@@ -8980,13 +9161,11 @@ class LmvzModal extends ReactiveControllerHost {
8980
9161
  }
8981
9162
  componentDidLoad() {
8982
9163
  this.handleHeaderSlotChange();
8983
- this.handleActionsSlotChange();
8984
9164
  this.observeDialogState();
8985
9165
  this.syncDialogVisibility();
8986
9166
  super.componentDidLoad();
8987
9167
  }
8988
9168
  disconnectedCallback() {
8989
- this.actionsStateObserver?.disconnect();
8990
9169
  this.dialogStateObserver?.disconnect();
8991
9170
  super.disconnectedCallback();
8992
9171
  }
@@ -9018,43 +9197,6 @@ class LmvzModal extends ReactiveControllerHost {
9018
9197
  }
9019
9198
  return attributes;
9020
9199
  }
9021
- get actionButtons() {
9022
- return (this.actionsSlot?.assignedElements({ flatten: true }) ?? []).filter((element) => {
9023
- return this.isVisibleActionButton(element);
9024
- });
9025
- }
9026
- get enabledActionButtons() {
9027
- return this.actionButtons.filter((element) => {
9028
- return !this.isDisabledActionButton(element);
9029
- });
9030
- }
9031
- get assignedActionElements() {
9032
- return this.actionsSlot?.assignedElements({ flatten: true }) ?? [];
9033
- }
9034
- isDisabledActionButton(element) {
9035
- return element.hasAttribute('disabled') || element.disabled === true;
9036
- }
9037
- getActionVariant(element) {
9038
- const variant = element.getAttribute('variant') ?? element.variant;
9039
- return variant === 'primary' || variant === 'secondary' || variant === 'tertiary' ? variant : 'secondary';
9040
- }
9041
- getActionValidationResult() {
9042
- if (!this.actionButtons.length) {
9043
- return {};
9044
- }
9045
- const primaryActions = this.actionButtons.filter((element) => this.getActionVariant(element) === 'primary');
9046
- const secondaryActions = this.actionButtons.filter((element) => this.getActionVariant(element) === 'secondary');
9047
- const issues = [
9048
- primaryActions.length !== 1 ? `${primaryActions.length} primary action${primaryActions.length === 1 ? '' : 's'}` : undefined,
9049
- secondaryActions.length > 1 ? `${secondaryActions.length} secondary actions` : undefined,
9050
- ].filter((issue) => Boolean(issue));
9051
- return {
9052
- errorMessage: issues.length
9053
- ? `LmvzModal actions slot must contain exactly one primary action, at most one secondary action, and optional tertiary actions. Received ${issues.join(' and ')}.`
9054
- : undefined,
9055
- primaryAction: primaryActions[0],
9056
- };
9057
- }
9058
9200
  hasAssignedContent(slot) {
9059
9201
  return Boolean(slot?.assignedNodes({ flatten: true }).some((node) => {
9060
9202
  if (node.nodeType === Node.TEXT_NODE) {
@@ -9081,9 +9223,6 @@ class LmvzModal extends ReactiveControllerHost {
9081
9223
  attributeFilter: ['open'],
9082
9224
  });
9083
9225
  }
9084
- isVisibleActionButton(element) {
9085
- return element.tagName === 'LMVZ-BUTTON' && !element.hasAttribute('hidden');
9086
- }
9087
9226
  capturePreviouslyFocusedElement() {
9088
9227
  const dialog = this.dialogEl;
9089
9228
  const activeElement = getDeepActiveElement(document);
@@ -9136,10 +9275,7 @@ class LmvzModal extends ReactiveControllerHost {
9136
9275
  }
9137
9276
  }
9138
9277
  focusPrimaryAction() {
9139
- const primaryAction = this.enabledActionButtons.find((element) => {
9140
- return this.getActionVariant(element) === 'primary';
9141
- }) ?? this.enabledActionButtons[0];
9142
- const focusTarget = primaryAction ?? this.closeButtonEl;
9278
+ const focusTarget = this.buttonGroupEl?.primaryEnabledAction ?? this.closeButtonEl;
9143
9279
  if (!focusTarget || typeof window === 'undefined')
9144
9280
  return;
9145
9281
  window.requestAnimationFrame(() => {
@@ -9191,60 +9327,8 @@ class LmvzModal extends ReactiveControllerHost {
9191
9327
  handleHeaderSlotChange = () => {
9192
9328
  this.hasHeader = this.hasAssignedContent(this.headerSlot);
9193
9329
  };
9194
- observeActionState() {
9195
- if (typeof MutationObserver === 'undefined')
9196
- return;
9197
- this.actionsStateObserver?.disconnect();
9198
- if (!this.assignedActionElements.length)
9199
- return;
9200
- this.actionsStateObserver = new MutationObserver(() => {
9201
- this.syncActionsState();
9202
- });
9203
- this.assignedActionElements.forEach((element) => {
9204
- this.actionsStateObserver?.observe(element, {
9205
- attributes: true,
9206
- attributeFilter: ['disabled', 'hidden', 'variant'],
9207
- });
9208
- });
9209
- }
9210
- syncActionsState() {
9211
- const assignedElements = this.assignedActionElements;
9212
- assignedElements.forEach((element) => {
9213
- const isAllowedAction = ['LMVZ-BUTTON', 'BUTTON'].includes(element.tagName.toUpperCase());
9214
- if (isAllowedAction)
9215
- return;
9216
- if (!element.hasAttribute('hidden')) {
9217
- element.setAttribute('hidden', '');
9218
- }
9219
- if (element.getAttribute('aria-hidden') !== 'true') {
9220
- element.setAttribute('aria-hidden', 'true');
9221
- }
9222
- });
9223
- this.hasActions = assignedElements.some((element) => this.isVisibleActionButton(element));
9224
- this.checkActions();
9225
- if (this.open) {
9226
- this.focusPrimaryAction();
9227
- }
9228
- }
9229
- handleActionsSlotChange = () => {
9230
- this.syncActionsState();
9231
- this.observeActionState();
9232
- };
9233
- checkActions() {
9234
- if (!isAriaValidationEnabled())
9235
- return;
9236
- const { errorMessage } = this.getActionValidationResult();
9237
- if (!errorMessage) {
9238
- this.lastActionValidationMessage = undefined;
9239
- return;
9240
- }
9241
- if (this.lastActionValidationMessage === errorMessage)
9242
- return;
9243
- console.error(errorMessage);
9244
- this.lastActionValidationMessage = errorMessage;
9245
- }
9246
9330
  render() {
9247
- return (hAsync(Host, { key: 'f319dcb33aaa6426e568fba1bfb6c8c3927432cb' }, hAsync("dialog", { key: '1c5b1659b243a2af19ec5b41d19a2096b522671c', ref: (element) => (this.dialogEl = element), onCancel: this.handleDialogCancel, onClose: this.handleDialogClose, ...this.dialogAccessibilityAttributes }, hAsync("div", { key: '2d0260f11a75e28688a14b0263df0d00f8ba54b9', class: "modal-shell" }, hAsync("header", { key: 'd96739e3b0a7f2c04e46585ddf4e431c91a698ce', class: { header: true, 'has-title': this.hasHeader } }, hAsync("div", { key: 'f5202ac26195a3571e3767e0d3683c2bc960c2ec', class: "title", id: this.dialogTitleId, hidden: !this.hasHeader }, hAsync("slot", { key: '2568ee3465bc070e353e647c58735a34005907d7', name: "header", ref: (element) => (this.headerSlot = element), onSlotchange: this.handleHeaderSlotChange })), hAsync("lmvz-button", { key: '7978e838dc84ce83ee674aa111523b260d1861da', ref: (element) => (this.closeButtonEl = element), type: "button", class: "close-button", "aria-label": this.closeLabel, onClick: this.handleCloseButtonClick, variant: "tertiary" }, hAsync("lmvz-icon", { key: '9f235507acbf2ee42747bfc44302fcae47d9ba0e', icon: closeIconSvg }))), hAsync("div", { key: '7eeab9b2f0fd5d41c0218380436e2f092481813a', class: "body" }, hAsync("slot", { key: '8904e87fa438caf2b7f34c4025ff688d94f4dea2' })), hAsync("footer", { key: '0610abd150de228da893092e9f38721087144564', class: "actions", hidden: !this.hasActions }, hAsync("slot", { key: '0f5457cb2544602a3b980f90e7297ed700d62fee', name: "actions", ref: (element) => (this.actionsSlot = element), onSlotchange: this.handleActionsSlotChange }))))));
9331
+ return (hAsync(Host, { key: 'f014c692b82fae6dd96dffdbda4043aa9174004f' }, hAsync("dialog", { key: '8939eda4aba44f1b6c9e8983cacddba83f668692', ref: (element) => (this.dialogEl = element), onCancel: this.handleDialogCancel, onClose: this.handleDialogClose, ...this.dialogAccessibilityAttributes }, hAsync("div", { key: '93f43c5f7c258494c86f9604b7eeac0046f912d6', class: "modal-shell" }, hAsync("header", { key: '2e8177a5e0812007fede430533e6a0aa9b7bc0ea', class: { header: true, 'has-title': this.hasHeader } }, hAsync("div", { key: 'fb4b537386077b837758f4b61c45433ad6c747cc', class: "title", id: this.dialogTitleId, hidden: !this.hasHeader }, hAsync("slot", { key: '2507b2b7af3b18e859e87b7d682bdf189c4df53d', name: "header", ref: (element) => (this.headerSlot = element), onSlotchange: this.handleHeaderSlotChange })), hAsync("lmvz-button", { key: '5e4bcd8771babae9a9dc34fc908eb9210639a497', ref: (element) => (this.closeButtonEl = element), type: "button", class: "close-button", "aria-label": this.closeLabel, onClick: this.handleCloseButtonClick, variant: "tertiary" }, hAsync("lmvz-icon", { key: '32aada0eea679fd1610eb704ac02cca1f27168ff', icon: closeIconSvg }))), hAsync("div", { key: '1dc811f3edcd9ab1611483c90345483fee94b318', class: "body" }, hAsync("slot", { key: 'cf870234c54d659cdd85d1a736626707f65cca4a' })), hAsync("footer", { key: 'c2ed7badb41a09d1187af2221f33fc2a87bcb606', class: "actions", hidden: !this.buttonGroupEl?.hasActions }, hAsync("lmvz-button-group", { key: 'c4846b44ff94b0411d79d88b3bb8447dd2a5967a', ref: (element) => (this.buttonGroupEl = element) }, hAsync("slot", { key: '3aa5aa7b3a5d68c5c3c2da1739bee57316db07ff', name: "actions" })))))));
9248
9332
  }
9249
9333
  static get watchers() { return {
9250
9334
  "open": [{
@@ -9258,7 +9342,6 @@ class LmvzModal extends ReactiveControllerHost {
9258
9342
  "$members$": {
9259
9343
  "open": [1540],
9260
9344
  "closeLabel": [1, "close-label"],
9261
- "hasActions": [32],
9262
9345
  "hasHeader": [32]
9263
9346
  },
9264
9347
  "$listeners$": [[0, "submit", "handleFormDialogSubmit"]],
@@ -9321,7 +9404,7 @@ class LmvzSelect extends ReactiveControllerHost {
9321
9404
  render() {
9322
9405
  const hasValue = this.hasValue;
9323
9406
  const shouldShowLabel = hasValue;
9324
- return (hAsync(Host, { key: '4a78608686bd771615d1bd6f5c5df243b813f0a3' }, hAsync("div", { key: 'fc526485d7c1718c0044a8076151954fb0db680d', class: "select-wrapper" }, hAsync("label", { key: '16c68d944b626f06b36c458daa351b05f0d6de92', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && hAsync("span", { key: '06ea7ab990b1119c726d39620cda2f2f53d6342a', "aria-hidden": "true" }, " *")), hAsync("div", { key: '46e77a996cd17db6e882fdc0f5ac65fb90f71df5', "aria-hidden": "true" }, hAsync("span", { key: '6b1e9f849e7e876f704816de6f55128e3d462587' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && hAsync("span", { key: 'd90c6b965c594a45f6699aaca3bc85de38bf5584', "aria-hidden": "true" }, " *")), hAsync("span", { key: 'd91ce778422521a0b414aceb7161a871023730d9' }, hAsync("img", { key: '3e405cebf0c02d91448c9db412837f4af554c4b2', src: chevronDownSvg, alt: "" }))), hAsync("select", { key: 'b443a08e1436f75af572e102e8d43a9c3d031810', id: this.selectId, ref: (el) => (this.nativeSelectEl = el), name: this.name, disabled: this.disabled, required: this.required, "aria-label": this.label, onChange: this.handleChange }, !hasValue && hAsync("option", { key: '7125eccebfb3541522d0461adcf1e203514d8af6', value: "", disabled: true, selected: true, hidden: true }), hAsync("slot", { key: '80f7edf9e20b19ec8041d23b84752f2cd7c1a72e' }))), this.helperText && hAsync("div", { key: '49cdd7ce54b5bc9031db2ef9826891d6a4f666b1', role: "status" }, this.helperText)));
9407
+ return (hAsync(Host, { key: 'f4d3104f4022581e4661f2181eec5d56ac7027af' }, hAsync("div", { key: '1f8b1fdf7c6d8c65390298e0cd9dca24ef4903d7', class: "select-wrapper" }, hAsync("label", { key: 'ff7a2e509c637424387b38b163739183deda3cba', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && hAsync("span", { key: '7e3c03652d16dd1a20628d800ccae4221062d4b8', "aria-hidden": "true" }, " *")), hAsync("div", { key: 'a2ee01b6ddfa98565fc1c41c9b9391091d254daf', "aria-hidden": "true" }, hAsync("span", { key: 'c96a6960f693baca0ba48b44e569ad87c1bbc980' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && hAsync("span", { key: '4631b13509919f7bfd0e5a1287334cd3a8412e50', "aria-hidden": "true" }, " *")), hAsync("span", { key: '4781647ee3a6a780e4253b9f92738c4645e20578' }, hAsync("img", { key: 'c83dab75df9ff20ec40b63f45cbe8262d1c71d7d', src: chevronDownSvg, alt: "" }))), hAsync("select", { key: '035b19878300ac1f7b04b61157e39587782b44f7', id: this.selectId, ref: (el) => (this.nativeSelectEl = el), name: this.name, disabled: this.disabled, required: this.required, "aria-label": this.label, onChange: this.handleChange }, !hasValue && hAsync("option", { key: 'da76b299a1df9da8475e115b82d7e427cc659bfa', value: "", disabled: true, selected: true, hidden: true }), hAsync("slot", { key: '1a91b540bc8ab97723df24c9c77d2bd52d941c92' }))), this.helperText && hAsync("div", { key: '347fe4d805a58e03f2cb2ef427b0dba0b805e8be', role: "status" }, this.helperText)));
9325
9408
  }
9326
9409
  static get watchers() { return {
9327
9410
  "value": [{
@@ -9421,7 +9504,7 @@ class LmvzToggle extends ReactiveControllerHost {
9421
9504
  this.lmvzChange.emit(newChecked);
9422
9505
  };
9423
9506
  render() {
9424
- return (hAsync(Host, { key: '49a543437a842709b6a3bfb00c828a40b227bb57' }, hAsync("span", { key: '746292d49c58656336037f7b07a9aaee9dbc6ed1', class: "track" }, hAsync("input", { key: 'ae329571344b05d9af814fdc1cc792e1c600d807', type: "checkbox", role: "switch", id: this.toggleId, checked: this.checked, disabled: this.disabled, required: this.required, name: this.name, value: this.value, form: this.form, ref: (el) => (this.nativeInputElement = el), onChange: this.handleChange }), hAsync("span", { key: 'e5742029679333fcd66a25aeb3f8826dbb3a8956', class: "thumb", "aria-hidden": "true" })), hAsync("label", { key: '4cb92eb975b8c337162986011497afdeb188ed4f', htmlFor: this.toggleId }, this.label)));
9507
+ return (hAsync(Host, { key: 'b7d3c3d2ae30744669032797b2fefcd1e7fe0b61' }, hAsync("span", { key: '93dc128b588e19a5e322cb93efae33669375709a', class: "track" }, hAsync("input", { key: '80650720ac6276f7c8996e071d8104e98002e06e', type: "checkbox", role: "switch", id: this.toggleId, checked: this.checked, disabled: this.disabled, required: this.required, name: this.name, value: this.value, form: this.form, ref: (el) => (this.nativeInputElement = el), onChange: this.handleChange }), hAsync("span", { key: '59838c27a032d7a116faea67fa1dc75cf9ee92cd', class: "thumb", "aria-hidden": "true" })), hAsync("label", { key: '809057cf268adf05c8163a802a6020dca9b666b9', htmlFor: this.toggleId }, this.label)));
9425
9508
  }
9426
9509
  static get formAssociated() { return true; }
9427
9510
  static get watchers() { return {
@@ -9459,6 +9542,7 @@ class LmvzToggle extends ReactiveControllerHost {
9459
9542
  registerComponents([
9460
9543
  LmvzAction,
9461
9544
  LmvzButton,
9545
+ LmvzButtonGroup,
9462
9546
  LmvzCard,
9463
9547
  LmvzCheckbox,
9464
9548
  LmvzChip,