@lmvz-ds/components 0.28.0 → 0.29.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 (122) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/assets/icons/chevron-down.svg +1 -1
  3. package/cjs/{ds.constants-CN0zFjB7.js → ds.constants-JXqgKnXL.js} +3 -0
  4. package/cjs/index.cjs.js +2 -1
  5. package/cjs/lmvz-button-group.cjs.entry.js +1 -1
  6. package/cjs/lmvz-button_2.cjs.entry.js +1 -1
  7. package/cjs/lmvz-card.cjs.entry.js +1 -1
  8. package/cjs/lmvz-checkbox.cjs.entry.js +1 -1
  9. package/cjs/lmvz-chip.cjs.entry.js +2 -2
  10. package/cjs/lmvz-components.cjs.js +1 -1
  11. package/cjs/lmvz-input.cjs.entry.js +1 -1
  12. package/cjs/lmvz-menuitem.cjs.entry.js +1 -1
  13. package/cjs/lmvz-message.cjs.entry.js +1 -1
  14. package/cjs/lmvz-modal.cjs.entry.js +1 -1
  15. package/cjs/lmvz-radio.cjs.entry.js +2 -2
  16. package/cjs/lmvz-select.cjs.entry.js +4 -4
  17. package/cjs/lmvz-snackbar.cjs.entry.js +2 -2
  18. package/cjs/lmvz-spinner.cjs.entry.js +1 -1
  19. package/cjs/lmvz-tab.cjs.entry.js +2 -2
  20. package/cjs/lmvz-tabs.cjs.entry.js +1 -1
  21. package/cjs/lmvz-toggle.cjs.entry.js +3 -3
  22. package/cjs/loader.cjs.js +1 -1
  23. package/collection/api/ds.constants.js +1 -0
  24. package/collection/assets/icons/chevron-down.svg +1 -1
  25. package/collection/components/lmvz-button/lmvz-button.css +5 -8
  26. package/collection/components/lmvz-button-group/lmvz-button-group.css +1 -2
  27. package/collection/components/lmvz-card/lmvz-card.css +8 -14
  28. package/collection/components/lmvz-checkbox/lmvz-checkbox.css +5 -8
  29. package/collection/components/lmvz-chip/lmvz-chip.css +2 -4
  30. package/collection/components/lmvz-input/lmvz-input.css +2 -2
  31. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +1 -2
  32. package/collection/components/lmvz-message/lmvz-message.css +1 -2
  33. package/collection/components/lmvz-modal/lmvz-modal.css +2 -4
  34. package/collection/components/lmvz-radio/lmvz-radio.css +2 -4
  35. package/collection/components/lmvz-select/lmvz-select.css +64 -20
  36. package/collection/components/lmvz-select/lmvz-select.js +53 -2
  37. package/collection/components/lmvz-snackbar/lmvz-snackbar.css +1 -2
  38. package/collection/components/lmvz-snackbar/lmvz-snackbar.js +1 -1
  39. package/collection/components/lmvz-spinner/lmvz-spinner.js +1 -1
  40. package/collection/components/lmvz-tab/lmvz-tab.css +3 -4
  41. package/collection/components/lmvz-tab/lmvz-tab.js +1 -1
  42. package/collection/components/lmvz-tabs/lmvz-tabs.js +1 -1
  43. package/collection/components/lmvz-toggle/lmvz-toggle.css +1 -2
  44. package/collection/components/lmvz-toggle/lmvz-toggle.js +1 -1
  45. package/collection/index.js +1 -1
  46. package/collection/integration/header-integration/header-integration.js +1 -1
  47. package/collection/styles/fragments/_focus-within.css +2 -2
  48. package/components/index.js +1 -1
  49. package/components/lmvz-button-group.js +1 -1
  50. package/components/lmvz-button.js +1 -1
  51. package/components/lmvz-card.js +1 -1
  52. package/components/lmvz-checkbox.js +1 -1
  53. package/components/lmvz-chip.js +1 -1
  54. package/components/lmvz-input.js +1 -1
  55. package/components/lmvz-menuitem.js +1 -1
  56. package/components/lmvz-message.js +1 -1
  57. package/components/lmvz-modal.js +1 -1
  58. package/components/lmvz-radio.js +1 -1
  59. package/components/lmvz-select.js +1 -1
  60. package/components/lmvz-snackbar.js +1 -1
  61. package/components/lmvz-spinner.js +1 -1
  62. package/components/lmvz-tab.js +1 -1
  63. package/components/lmvz-tabs.js +1 -1
  64. package/components/lmvz-toggle.js +1 -1
  65. package/components/p-BxPuC-EQ.js +1 -0
  66. package/components/p-DBZE-Jyu.js +1 -0
  67. package/esm/{ds.constants-BTa7u4To.js → ds.constants-DWePb-zu.js} +3 -1
  68. package/esm/index.js +1 -1
  69. package/esm/lmvz-button-group.entry.js +1 -1
  70. package/esm/lmvz-button_2.entry.js +1 -1
  71. package/esm/lmvz-card.entry.js +1 -1
  72. package/esm/lmvz-checkbox.entry.js +1 -1
  73. package/esm/lmvz-chip.entry.js +2 -2
  74. package/esm/lmvz-components.js +1 -1
  75. package/esm/lmvz-input.entry.js +1 -1
  76. package/esm/lmvz-menuitem.entry.js +1 -1
  77. package/esm/lmvz-message.entry.js +1 -1
  78. package/esm/lmvz-modal.entry.js +1 -1
  79. package/esm/lmvz-radio.entry.js +2 -2
  80. package/esm/lmvz-select.entry.js +4 -4
  81. package/esm/lmvz-snackbar.entry.js +2 -2
  82. package/esm/lmvz-spinner.entry.js +1 -1
  83. package/esm/lmvz-tab.entry.js +2 -2
  84. package/esm/lmvz-tabs.entry.js +1 -1
  85. package/esm/lmvz-toggle.entry.js +3 -3
  86. package/esm/loader.js +1 -1
  87. package/hydrate/index.js +27 -25
  88. package/hydrate/index.mjs +27 -25
  89. package/lmvz-components/index.esm.js +1 -1
  90. package/lmvz-components/lmvz-components.esm.js +1 -1
  91. package/lmvz-components/{p-877d0f3e.entry.js → p-087853c3.entry.js} +1 -1
  92. package/lmvz-components/{p-85b0b718.entry.js → p-2981a238.entry.js} +1 -1
  93. package/lmvz-components/p-35b5efdc.entry.js +1 -0
  94. package/lmvz-components/p-3b3e532f.entry.js +1 -1
  95. package/lmvz-components/{p-fdb8de66.entry.js → p-4484ab62.entry.js} +1 -1
  96. package/lmvz-components/p-4ba3f830.entry.js +1 -0
  97. package/lmvz-components/{p-98e3e85a.entry.js → p-5fcc6f84.entry.js} +1 -1
  98. package/lmvz-components/{p-84edbe53.entry.js → p-7e9938e7.entry.js} +1 -1
  99. package/lmvz-components/{p-02e8e45a.entry.js → p-7fd7e04c.entry.js} +1 -1
  100. package/lmvz-components/{p-e3ce44a3.entry.js → p-83ab106c.entry.js} +1 -1
  101. package/lmvz-components/p-87d207e7.entry.js +1 -0
  102. package/lmvz-components/p-912776f8.entry.js +1 -0
  103. package/lmvz-components/p-DWePb-zu.js +1 -0
  104. package/lmvz-components/{p-d53f8afe.entry.js → p-af4e26da.entry.js} +1 -1
  105. package/lmvz-components/{p-80c6ec27.entry.js → p-ca497e57.entry.js} +1 -1
  106. package/lmvz-components/{p-8fc25ee2.entry.js → p-d8b55d55.entry.js} +1 -1
  107. package/lmvz-components/{p-44fea470.entry.js → p-f030f6f6.entry.js} +1 -1
  108. package/lmvz-components/p-fe7999d4.entry.js +1 -0
  109. package/manifest.json +81 -2
  110. package/package.json +1 -1
  111. package/types/api/ds.constants.d.ts +4 -0
  112. package/types/components/lmvz-select/lmvz-select.d.ts +3 -0
  113. package/types/components.d.ts +28 -0
  114. package/types/index.d.ts +1 -1
  115. package/components/p-C0f2nNPZ.js +0 -1
  116. package/components/p-DGlgVBPj.js +0 -1
  117. package/lmvz-components/p-4dc44520.entry.js +0 -1
  118. package/lmvz-components/p-5c951888.entry.js +0 -1
  119. package/lmvz-components/p-6a1c3088.entry.js +0 -1
  120. package/lmvz-components/p-BTa7u4To.js +0 -1
  121. package/lmvz-components/p-a4077c9f.entry.js +0 -1
  122. package/lmvz-components/p-e672c0fa.entry.js +0 -1
@@ -6,9 +6,9 @@ var component = require('./component-C7cavwmZ.js');
6
6
  var reactiveControllerHost = require('./reactive-controller-host-B_lZtcA6.js');
7
7
  require('./aria-loader-BRo2FTGh.js');
8
8
 
9
- const lmvzToggleCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('RouterBook-Regular'), local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'); font-weight: 400; } @font-face { font-family: Router; src: local('RouterMedium-Regular'), local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'); font-weight: 500; } @font-face { font-family: Router; src: local('RouterBold-Regular'), local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'); font-weight: 700; } } .sc-lmvz-toggle-h { display: inline-flex; align-items: center; gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); 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; background-color: transparent; user-select: none; } .sc-lmvz-toggle-h:not([disabled]):hover { background-color: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } [checked].sc-lmvz-toggle-h { background-color: var(--lmvz-semantic-color-status-active, #f6fbfe); } [disabled][checked].sc-lmvz-toggle-h { background-color: var(--lmvz-semantic-color-status-active, #f6fbfe); } [disabled].sc-lmvz-toggle-h { cursor: not-allowed; opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; } .track.sc-lmvz-toggle { position: relative; flex-shrink: 0; width: var(--lmvz-global-s32, 32px); height: var(--lmvz-global-s20, 20px); border-radius: var(--lmvz-semantic-border-radius-round, 999px); background-color: var(--lmvz-semantic-color-surface-input-primary, #ffffff); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); } .sc-lmvz-toggle-h:not([disabled]):hover .track.sc-lmvz-toggle { border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } [checked].sc-lmvz-toggle-h .track.sc-lmvz-toggle { border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } input.sc-lmvz-toggle { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; margin: 0; cursor: inherit; } .thumb.sc-lmvz-toggle { position: absolute; width: var(--lmvz-global-s13, 13px); height: var(--lmvz-global-s13, 13px); border-radius: 50%; background-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454); top: 50%; transform: translateY(-50%); left: var(--lmvz-global-s4, 4px); transition: left 0.2s ease, background-color 0.2s ease; pointer-events: none; } [checked].sc-lmvz-toggle-h .thumb.sc-lmvz-toggle { left: calc(var(--lmvz-global-s4, 4px) + var(--lmvz-global-s11, 11px)); background-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } label.sc-lmvz-toggle { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); color: var(--lmvz-semantic-color-on-surface-primary, #000000); cursor: pointer; }`;
9
+ const lmvzToggleCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('RouterBook-Regular'), local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'); font-weight: 400; } @font-face { font-family: Router; src: local('RouterMedium-Regular'), local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'); font-weight: 500; } @font-face { font-family: Router; src: local('RouterBold-Regular'), local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'); font-weight: 700; } } .sc-lmvz-toggle-h { display: inline-flex; align-items: center; gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); 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; background-color: transparent; user-select: none; } .sc-lmvz-toggle-h:not([disabled]):hover { background-color: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } [checked].sc-lmvz-toggle-h { background-color: var(--lmvz-semantic-color-status-active, #f6fbfe); } [disabled][checked].sc-lmvz-toggle-h { background-color: var(--lmvz-semantic-color-status-active, #f6fbfe); } [disabled].sc-lmvz-toggle-h { cursor: not-allowed; opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; } .track.sc-lmvz-toggle { position: relative; flex-shrink: 0; width: var(--lmvz-global-s32, 32px); height: var(--lmvz-global-s20, 20px); border-radius: var(--lmvz-semantic-border-radius-round, 999px); background-color: var(--lmvz-semantic-color-surface-input-primary, #ffffff); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); } .sc-lmvz-toggle-h:not([disabled]):hover .track.sc-lmvz-toggle { border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } [checked].sc-lmvz-toggle-h .track.sc-lmvz-toggle { border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } input.sc-lmvz-toggle { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; margin: 0; cursor: inherit; } .thumb.sc-lmvz-toggle { position: absolute; width: var(--lmvz-global-s13, 13px); height: var(--lmvz-global-s13, 13px); border-radius: 50%; background-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454); top: 50%; transform: translateY(-50%); left: var(--lmvz-global-s4, 4px); transition: left 0.2s ease, background-color 0.2s ease; pointer-events: none; } [checked].sc-lmvz-toggle-h .thumb.sc-lmvz-toggle { left: calc(var(--lmvz-global-s4, 4px) + var(--lmvz-global-s11, 11px)); background-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } label.sc-lmvz-toggle { font: var(--lmvz-typography-body-md); color: var(--lmvz-semantic-color-on-surface-primary, #000000); cursor: pointer; }`;
10
10
 
11
- const focusWithinCss = () => `.sc-lmvz-toggle-h:focus-within{outline:var(--lmvz-ds-outline, 1px solid #0e7ab4);outline-offset:var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem))}@media (forced-colors: active){.sc-lmvz-toggle-h:focus-within{outline-color:Highlight;box-shadow:none}}`;
11
+ const focusWithinCss = () => `.sc-lmvz-toggle-h:focus-within{outline:var(--lmvz-ds-outline);outline-offset:var(--lmvz-ds-outline-offset)}@media (forced-colors: active){.sc-lmvz-toggle-h:focus-within{outline-color:Highlight;box-shadow:none}}`;
12
12
 
13
13
  let toggleIdCounter = 0;
14
14
  const LmvzToggle = class extends reactiveControllerHost.ReactiveControllerHost {
@@ -82,7 +82,7 @@ const LmvzToggle = class extends reactiveControllerHost.ReactiveControllerHost {
82
82
  this.lmvzChange.emit(newChecked);
83
83
  };
84
84
  render() {
85
- return (index.h(index.Host, { key: '3bd8418b3c9161719d419d35f60d26843fb3110f' }, index.h("span", { key: '883a64fb80480e06bb175e626f8224aa6048b8f4', class: "track" }, index.h("input", { key: '21438217a82ab5049e341c7524de71429bd8c8c4', 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 }), index.h("span", { key: 'b652891bdd0462ac419e2e909a2e3a3e61d60993', class: "thumb", "aria-hidden": "true" })), index.h("label", { key: '3d934082c2b1fff11c057e62f5fbd9c9361ce5d4', htmlFor: this.toggleId }, this.label)));
85
+ return (index.h(index.Host, { key: '0b0266a50b2307a13c635ee1a2c1b7e44cacccb4' }, index.h("span", { key: 'e8cf4c4e35e013627bb6eeb4b7bae46060c3a846', class: "track" }, index.h("input", { key: '6dc43e819aa89c5b6394c3d2eed0e8852213766a', 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 }), index.h("span", { key: '7e57a501ebcb9f560d0a03c35dbaa7744933246b', class: "thumb", "aria-hidden": "true" })), index.h("label", { key: '0e8d733132e72593048ce3eb1f8c2049f3420b2a', htmlFor: this.toggleId }, this.label)));
86
86
  }
87
87
  static get formAssociated() { return true; }
88
88
  static get watchers() { return {
package/cjs/loader.cjs.js CHANGED
@@ -6,7 +6,7 @@ var appGlobals = require('./app-globals-V2Kpy_OQ.js');
6
6
  const defineCustomElements = async (win, options) => {
7
7
  if (typeof window === 'undefined') return undefined;
8
8
  await appGlobals.globalScripts();
9
- return index.bootstrapLazy([["lmvz-modal.cjs",[[769,"lmvz-modal",{"open":[1540],"closeLabel":[1,"close-label"],"hasHeader":[32]},[[0,"submit","handleFormDialogSubmit"]],{"open":[{"handleOpenChange":0}]}]]],["lmvz-message.cjs",[[769,"lmvz-message",{"type":[513],"live":[1],"leadingIcon":[4,"leading-icon"],"dismissible":[4],"closeLabel":[1,"close-label"],"actionLabel":[1,"action-label"]}]]],["lmvz-snackbar.cjs",[[513,"lmvz-snackbar",{"status":[1537],"message":[1025],"duration":[1026],"priority":[1025],"actionLabel":[1025,"action-label"],"animationClass":[32],"show":[64],"hide":[64]},null,{"status":[{"onStatusChange":0}]}]]],["lmvz-header_2.cjs",[[769,"lmvz-header",{"role":[2561],"lmvzActiveNav":[1,"lmvz-active-nav"]},null,{"lmvzActiveNav":[{"handleActiveNavChange":0}]}],[774,"lmvz-menuitem",{"role":[2561],"ti":[2562,"tabindex"]}]]],["lmvz-action.cjs",[[257,"lmvz-action"]]],["lmvz-card.cjs",[[774,"lmvz-card",{"cardTitle":[1,"card-title"],"imageUrl":[1,"image-url"],"description":[1],"primaryActionLabel":[1,"primary-action-label"]}]]],["lmvz-checkbox.cjs",[[578,"lmvz-checkbox",{"label":[1],"checked":[1540],"value":[1],"name":[1],"disabled":[516],"required":[516],"error":[516],"errorMessage":[1,"error-message"],"helperText":[1,"helper-text"],"form":[1],"autofocus":[4],"checkedState":[32],"focusInput":[64],"checkValidity":[64],"reportValidity":[64]},null,{"checked":[{"handleCheckedChange":0}]}]]],["lmvz-chip.cjs",[[769,"lmvz-chip",{"type":[1537],"size":[1537]},null,{"type":[{"normalizeType":0}],"size":[{"normalizeSize":0}]}]]],["lmvz-input.cjs",[[838,"lmvz-input",{"value":[1025],"label":[1],"helperText":[1,"helper-text"],"placeholder":[1],"disabled":[516],"readonly":[516],"required":[516],"name":[1],"type":[1],"errorMessage":[1,"error-message"],"autocomplete":[1],"inputmode":[1],"autocorrect":[1],"autocapitalize":[1],"spellcheck":[4],"autofocus":[4],"minlength":[2],"maxlength":[2],"pattern":[1],"min":[8],"max":[8],"step":[8],"form":[1],"size":[513],"error":[6660],"nativeError":[32],"setValue":[64],"focusInput":[64],"blurInput":[64],"select":[64],"checkValidity":[64],"reportValidity":[64],"getInputElement":[64]},null,{"value":[{"handleValueChange":0}],"disabled":[{"handleDisabledChange":0}]}]]],["lmvz-menuitem.cjs",[[774,"lmvz-menuitem",{"role":[2561],"ti":[2562,"tabindex"]}]]],["lmvz-radio.cjs",[[578,"lmvz-radio",{"label":[1],"checked":[1540],"value":[1],"name":[1],"disabled":[516],"required":[516],"error":[516],"helperText":[1,"helper-text"],"form":[513],"autofocus":[4],"focusInput":[64],"checkValidity":[64],"reportValidity":[64]},[[0,"keydown","handleKeydown"]],{"checked":[{"handleCheckedChange":0}],"value":[{"handleValueChange":0}],"label":[{"handleLabelChange":0}]}]]],["lmvz-select.cjs",[[774,"lmvz-select",{"value":[1025],"label":[1],"helperText":[1,"helper-text"],"disabled":[516],"required":[516],"name":[1],"selectedLabel":[32]},null,{"value":[{"handleValueChange":0}]}]]],["lmvz-spinner.cjs",[[513,"lmvz-spinner",{"size":[513],"ariaLabel":[513,"aria-label"]}]]],["lmvz-tab.cjs",[[785,"lmvz-tab",{"value":[513],"disabled":[516],"selected":[516],"vertical":[516]}]]],["lmvz-tabs.cjs",[[769,"lmvz-tabs",{"value":[1537],"orientation":[1537],"resolvedValue":[32],"activateTab":[64],"getTabElements":[64],"setTabPanelIds":[64]},null,{"value":[{"handleValueChange":0}],"orientation":[{"handleOrientationChange":0}]}]]],["lmvz-toggle.cjs",[[578,"lmvz-toggle",{"label":[1],"checked":[1540],"disabled":[516],"required":[516],"name":[1],"value":[1],"form":[1],"focusToggle":[64],"blurToggle":[64],"checkValidity":[64],"reportValidity":[64],"getInputElement":[64]},null,{"checked":[{"handleCheckedChange":0}],"disabled":[{"handleDisabledChange":0}]}]]],["lmvz-button-group.cjs",[[257,"lmvz-button-group",{"primaryEnabledAction":[2064],"hasActions":[2052,"has-actions"]}]]],["lmvz-button_2.cjs",[[785,"lmvz-button",{"ti":[2562,"tabindex"],"scale":[513],"variant":[513],"disabled":[516],"type":[1],"form":[1],"formMethod":[1,"form-method"],"name":[1],"value":[1]}],[514,"lmvz-icon",{"icon":[513],"weight":[513],"size":[513],"iconset":[513],"ariaLabel":[513,"aria-label"],"iconData":[32],"visible":[32]},null,{"icon":[{"loadIconPathData":0}],"iconset":[{"loadIconPathData":0}]}]]]], options);
9
+ return index.bootstrapLazy([["lmvz-modal.cjs",[[769,"lmvz-modal",{"open":[1540],"closeLabel":[1,"close-label"],"hasHeader":[32]},[[0,"submit","handleFormDialogSubmit"]],{"open":[{"handleOpenChange":0}]}]]],["lmvz-message.cjs",[[769,"lmvz-message",{"type":[513],"live":[1],"leadingIcon":[4,"leading-icon"],"dismissible":[4],"closeLabel":[1,"close-label"],"actionLabel":[1,"action-label"]}]]],["lmvz-snackbar.cjs",[[513,"lmvz-snackbar",{"status":[1537],"message":[1025],"duration":[1026],"priority":[1025],"actionLabel":[1025,"action-label"],"animationClass":[32],"show":[64],"hide":[64]},null,{"status":[{"onStatusChange":0}]}]]],["lmvz-header_2.cjs",[[769,"lmvz-header",{"role":[2561],"lmvzActiveNav":[1,"lmvz-active-nav"]},null,{"lmvzActiveNav":[{"handleActiveNavChange":0}]}],[774,"lmvz-menuitem",{"role":[2561],"ti":[2562,"tabindex"]}]]],["lmvz-action.cjs",[[257,"lmvz-action"]]],["lmvz-card.cjs",[[774,"lmvz-card",{"cardTitle":[1,"card-title"],"imageUrl":[1,"image-url"],"description":[1],"primaryActionLabel":[1,"primary-action-label"]}]]],["lmvz-checkbox.cjs",[[578,"lmvz-checkbox",{"label":[1],"checked":[1540],"value":[1],"name":[1],"disabled":[516],"required":[516],"error":[516],"errorMessage":[1,"error-message"],"helperText":[1,"helper-text"],"form":[1],"autofocus":[4],"checkedState":[32],"focusInput":[64],"checkValidity":[64],"reportValidity":[64]},null,{"checked":[{"handleCheckedChange":0}]}]]],["lmvz-chip.cjs",[[769,"lmvz-chip",{"type":[1537],"size":[1537]},null,{"type":[{"normalizeType":0}],"size":[{"normalizeSize":0}]}]]],["lmvz-input.cjs",[[838,"lmvz-input",{"value":[1025],"label":[1],"helperText":[1,"helper-text"],"placeholder":[1],"disabled":[516],"readonly":[516],"required":[516],"name":[1],"type":[1],"errorMessage":[1,"error-message"],"autocomplete":[1],"inputmode":[1],"autocorrect":[1],"autocapitalize":[1],"spellcheck":[4],"autofocus":[4],"minlength":[2],"maxlength":[2],"pattern":[1],"min":[8],"max":[8],"step":[8],"form":[1],"size":[513],"error":[6660],"nativeError":[32],"setValue":[64],"focusInput":[64],"blurInput":[64],"select":[64],"checkValidity":[64],"reportValidity":[64],"getInputElement":[64]},null,{"value":[{"handleValueChange":0}],"disabled":[{"handleDisabledChange":0}]}]]],["lmvz-menuitem.cjs",[[774,"lmvz-menuitem",{"role":[2561],"ti":[2562,"tabindex"]}]]],["lmvz-radio.cjs",[[578,"lmvz-radio",{"label":[1],"checked":[1540],"value":[1],"name":[1],"disabled":[516],"required":[516],"error":[516],"helperText":[1,"helper-text"],"form":[513],"autofocus":[4],"focusInput":[64],"checkValidity":[64],"reportValidity":[64]},[[0,"keydown","handleKeydown"]],{"checked":[{"handleCheckedChange":0}],"value":[{"handleValueChange":0}],"label":[{"handleLabelChange":0}]}]]],["lmvz-select.cjs",[[774,"lmvz-select",{"value":[1025],"label":[1],"helperText":[1,"helper-text"],"disabled":[516],"required":[516],"name":[1],"size":[513],"highlighted":[516],"selectedLabel":[32]},null,{"value":[{"handleValueChange":0}]}]]],["lmvz-spinner.cjs",[[513,"lmvz-spinner",{"size":[513],"ariaLabel":[513,"aria-label"]}]]],["lmvz-tab.cjs",[[785,"lmvz-tab",{"value":[513],"disabled":[516],"selected":[516],"vertical":[516]}]]],["lmvz-tabs.cjs",[[769,"lmvz-tabs",{"value":[1537],"orientation":[1537],"resolvedValue":[32],"activateTab":[64],"getTabElements":[64],"setTabPanelIds":[64]},null,{"value":[{"handleValueChange":0}],"orientation":[{"handleOrientationChange":0}]}]]],["lmvz-toggle.cjs",[[578,"lmvz-toggle",{"label":[1],"checked":[1540],"disabled":[516],"required":[516],"name":[1],"value":[1],"form":[1],"focusToggle":[64],"blurToggle":[64],"checkValidity":[64],"reportValidity":[64],"getInputElement":[64]},null,{"checked":[{"handleCheckedChange":0}],"disabled":[{"handleDisabledChange":0}]}]]],["lmvz-button-group.cjs",[[257,"lmvz-button-group",{"primaryEnabledAction":[2064],"hasActions":[2052,"has-actions"]}]]],["lmvz-button_2.cjs",[[785,"lmvz-button",{"ti":[2562,"tabindex"],"scale":[513],"variant":[513],"disabled":[516],"type":[1],"form":[1],"formMethod":[1,"form-method"],"name":[1],"value":[1]}],[514,"lmvz-icon",{"icon":[513],"weight":[513],"size":[513],"iconset":[513],"ariaLabel":[513,"aria-label"],"iconData":[32],"visible":[32]},null,{"icon":[{"loadIconPathData":0}],"iconset":[{"loadIconPathData":0}]}]]]], options);
10
10
  };
11
11
 
12
12
  exports.setNonce = index.setNonce;
@@ -4,6 +4,7 @@ export const sizes = ['xs', 'sm', 'md', 'lg'];
4
4
  export const textSizes = [...sizes, 'xl'];
5
5
  export const inputTypes = ['text', 'email', 'password', 'tel', 'url', 'search', 'number'];
6
6
  export const inputSizes = ['sm', 'md', 'lg'];
7
+ export const selectSizes = scaleValues;
7
8
  export const iconSizes = [...sizes, 'inherit'];
8
9
  export const iconWeights = ['thin', 'medium', 'bold'];
9
10
  export const chipTypes = ['active', 'warning', 'success', 'error', 'neutral'];
@@ -1,3 +1,3 @@
1
1
  <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M20.3334 8.66663L12.0001 17L3.66675 8.66663" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
2
+ <path d="M20.3334 8.66663L12.0001 17L3.66675 8.66663" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/>
3
3
  </svg>
@@ -66,8 +66,7 @@ h6 {
66
66
  --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
67
67
  --lmvz-button-gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
68
68
  --lmvz-button-min-height: var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem));
69
- --lmvz-button-font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
70
- Router);
69
+ --lmvz-button-font: var(--lmvz-typography-body-md-strong);
71
70
  --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px);
72
71
  --lmvz-button-border-width: 0;
73
72
  --lmvz-button-border-color: transparent;
@@ -102,8 +101,8 @@ button > * {
102
101
  }
103
102
 
104
103
  button:focus-visible {
105
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
106
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
104
+ outline: var(--lmvz-ds-outline);
105
+ outline-offset: var(--lmvz-ds-outline-offset);
107
106
  }
108
107
 
109
108
  button:is([disabled], .disabled) {
@@ -178,8 +177,7 @@ button.small {
178
177
  --lmvz-button-padding-block: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
179
178
  --lmvz-button-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
180
179
  --lmvz-button-min-height: var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem));
181
- --lmvz-button-font: var(--lmvz-typography-body-sm-strong, 500 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
182
- Router);
180
+ --lmvz-button-font: var(--lmvz-typography-body-sm-strong);
183
181
  }
184
182
 
185
183
  button.large {
@@ -187,8 +185,7 @@ button.large {
187
185
  --lmvz-button-padding-block: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
188
186
  --lmvz-button-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
189
187
  --lmvz-button-min-height: var(--lmvz-component-input-size-lg, clamp(2.75rem, 2.69rem + 0.26vw, 3rem));
190
- --lmvz-button-font: var(--lmvz-typography-body-lg-strong, 500 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.5
191
- Router);
188
+ --lmvz-button-font: var(--lmvz-typography-body-lg-strong);
192
189
  }
193
190
 
194
191
 
@@ -2,8 +2,7 @@
2
2
  display: flex;
3
3
  justify-content: flex-end;
4
4
  gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
5
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
6
- Router);
5
+ font: var(--lmvz-typography-body-md);
7
6
 
8
7
  /* TODO(LDHCID-135): Action wrapping threshold remains an assumption and currently follows intrinsic content width */
9
8
  flex-wrap: wrap;
@@ -67,8 +67,7 @@ h6 {
67
67
  --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
68
68
  --lmvz-button-gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
69
69
  --lmvz-button-min-height: var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem));
70
- --lmvz-button-font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
71
- Router);
70
+ --lmvz-button-font: var(--lmvz-typography-body-md-strong);
72
71
  --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px);
73
72
  --lmvz-button-border-width: 0;
74
73
  --lmvz-button-border-color: transparent;
@@ -103,8 +102,8 @@ button > * {
103
102
  }
104
103
 
105
104
  button:focus-visible {
106
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
107
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
105
+ outline: var(--lmvz-ds-outline);
106
+ outline-offset: var(--lmvz-ds-outline-offset);
108
107
  }
109
108
 
110
109
  button:is([disabled], .disabled) {
@@ -179,8 +178,7 @@ button.small {
179
178
  --lmvz-button-padding-block: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
180
179
  --lmvz-button-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
181
180
  --lmvz-button-min-height: var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem));
182
- --lmvz-button-font: var(--lmvz-typography-body-sm-strong, 500 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
183
- Router);
181
+ --lmvz-button-font: var(--lmvz-typography-body-sm-strong);
184
182
  }
185
183
 
186
184
  button.large {
@@ -188,8 +186,7 @@ button.large {
188
186
  --lmvz-button-padding-block: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
189
187
  --lmvz-button-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
190
188
  --lmvz-button-min-height: var(--lmvz-component-input-size-lg, clamp(2.75rem, 2.69rem + 0.26vw, 3rem));
191
- --lmvz-button-font: var(--lmvz-typography-body-lg-strong, 500 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.5
192
- Router);
189
+ --lmvz-button-font: var(--lmvz-typography-body-lg-strong);
193
190
  }
194
191
 
195
192
 
@@ -205,8 +202,7 @@ button.large {
205
202
  }
206
203
  * {
207
204
  color: var(--lmvz-semantic-color-on-surface-primary, #000000);
208
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
209
- Router);
205
+ font: var(--lmvz-typography-body-md);
210
206
  }
211
207
  .top {
212
208
  display: flex;
@@ -233,8 +229,7 @@ button.large {
233
229
 
234
230
  padding-bottom: var(--lmvz-global-s4, 4px);
235
231
  overflow-wrap: break-word;
236
- font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.4
237
- Router);
232
+ font: var(--lmvz-typography-heading-2xl);
238
233
  }
239
234
  .description {
240
235
  display: flex;
@@ -243,8 +238,7 @@ button.large {
243
238
  align-items: flex-start;
244
239
  align-self: stretch;
245
240
  white-space: pre-line;
246
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
247
- Router);
241
+ font: var(--lmvz-typography-body-md);
248
242
  }
249
243
  .image-wrapper {
250
244
  aspect-ratio: 4 / 3;
@@ -118,22 +118,19 @@ input {
118
118
  cursor: pointer;
119
119
  }
120
120
  label {
121
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
122
- Router);
121
+ font: var(--lmvz-typography-body-md);
123
122
  color: var(--checkbox-label-color);
124
123
  transition: color var(--checkbox-duration) var(--checkbox-easing);
125
124
  cursor: pointer;
126
125
  }
127
126
  .helper-text {
128
- font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
129
- Router);
127
+ font: var(--lmvz-typography-body-sm);
130
128
  /* font-weight: 400 per DS token standard (body-sm). Note: lmvz-input.css [role='status'] incorrectly uses font-weight: 500 — DS inconsistency, see lmvz-input.css line ~153 */
131
129
  color: var(--checkbox-helper-color);
132
130
  margin-block-start: 2px;
133
131
  }
134
132
  .error-text {
135
- font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
136
- Router);
133
+ font: var(--lmvz-typography-body-sm);
137
134
  color: var(--checkbox-error-color);
138
135
  display: block;
139
136
  margin-block-start: 4px;
@@ -179,8 +176,8 @@ label {
179
176
  }
180
177
  }
181
178
  :host(:focus-within) .pill {
182
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
183
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
179
+ outline: var(--lmvz-ds-outline);
180
+ outline-offset: var(--lmvz-ds-outline-offset);
184
181
  }
185
182
  /* Forced Colors / Windows High Contrast */
186
183
  @media (forced-colors: active) {
@@ -7,8 +7,7 @@
7
7
  padding-inline: var(--lmvz-dimension-8-10, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
8
8
  border: 1px solid var(--lmvz-chip-border-color);
9
9
  border-radius: var(--lmvz-semantic-border-radius-round, 999px);
10
- font: var(--lmvz-typography-body-xs-strong, 500 clamp(0.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.5
11
- Router);
10
+ font: var(--lmvz-typography-body-xs-strong);
12
11
  background-color: var(--lmvz-chip-background-color);
13
12
  color: var(--lmvz-chip-foreground-color);
14
13
 
@@ -34,8 +33,7 @@
34
33
  :host([size='small']) {
35
34
  padding-block: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem));
36
35
  padding-inline: var(--lmvz-dimension-6-8, clamp(0.38rem, 0.34rem + 0.13vw, 0.5rem));
37
- font: var(--lmvz-typography-body-2xs-strong, 500 clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem) / 1.5
38
- Router);
36
+ font: var(--lmvz-typography-body-2xs-strong);
39
37
  gap: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem));
40
38
  }
41
39
 
@@ -109,8 +109,8 @@
109
109
  }
110
110
  .input-container:focus-within .input-wrapper {
111
111
  border-color: var(--input-border-color-focus);
112
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
113
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
112
+ outline: var(--lmvz-ds-outline);
113
+ outline-offset: var(--lmvz-ds-outline-offset);
114
114
  }
115
115
  /* Error State */
116
116
  :host([error]) .input-wrapper {
@@ -44,8 +44,7 @@
44
44
  justify-content: center;
45
45
  gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
46
46
  border-radius: var(--lmvz-semantic-border-radius-lg, 14px);
47
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
48
- Router);
47
+ font: var(--lmvz-typography-body-md);
49
48
  padding: var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)) var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
50
49
  cursor: pointer;
51
50
 
@@ -10,8 +10,7 @@
10
10
  border: var(--lmvz-semantic-border-width-default, 1px) solid;
11
11
  border-radius: var(--lmvz-semantic-border-radius-md, 6px);
12
12
 
13
- font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
14
- Router);
13
+ font: var(--lmvz-typography-body-md-strong);
15
14
  }
16
15
 
17
16
  /* neutral maps to status-active tokens to preserve Figma's "neutral" naming convention;
@@ -109,15 +109,13 @@ dialog::backdrop {
109
109
  }
110
110
  .title {
111
111
  min-inline-size: 0;
112
- font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.5
113
- Router);
112
+ font: var(--lmvz-typography-heading-lg);
114
113
  }
115
114
  .has-title .title {
116
115
  flex: 1 1 auto;
117
116
  }
118
117
  .body {
119
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
120
- Router);
118
+ font: var(--lmvz-typography-body-md);
121
119
  flex: 1;
122
120
  overflow: scroll;
123
121
  /* min-block-size: clamp(8rem, 40vw, 60vh); */
@@ -110,16 +110,14 @@ input {
110
110
  min-width: 0;
111
111
  }
112
112
  label {
113
- font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
114
- Router);
113
+ font: var(--lmvz-typography-body-md);
115
114
  color: var(--radio-label-color);
116
115
  cursor: pointer;
117
116
  transition: color var(--radio-duration) var(--radio-easing);
118
117
  }
119
118
  .helper-text {
120
119
  display: block;
121
- font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
122
- Router);
120
+ font: var(--lmvz-typography-body-sm);
123
121
  color: var(--radio-helper-color);
124
122
  margin-block-start: 2px;
125
123
  }
@@ -46,16 +46,17 @@
46
46
 
47
47
  padding-top: var(--lmvz-internal-select-floating-label-top-offset);
48
48
 
49
- /* Component variable mapping */
50
49
  --lmvz-select-radius: var(--lmvz-component-input-radius-default, 999px);
51
- --lmvz-select-bg: var(--lmvz-semantic-color-int-secondary, #f0f0f0);
52
- --lmvz-select-bg-hover: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0);
53
- --lmvz-select-text-color: var(--lmvz-semantic-color-int-on-secondary, #000000);
50
+ --lmvz-select-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff);
51
+ --lmvz-select-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0);
52
+ --lmvz-select-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7);
53
+ --lmvz-select-border-width: var(--lmvz-semantic-border-width-default, 1px);
54
+ --lmvz-select-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000);
54
55
  --lmvz-select-label-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000);
55
- --lmvz-select-padding-x: var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
56
- --lmvz-select-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
57
- --lmvz-select-height: 40px;
58
- --lmvz-select-label-font-size: var(--lmvz-component-component-typography-body-sm-font-size, 0.75rem);
56
+ --lmvz-select-padding-x: var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem));
57
+ --lmvz-select-gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
58
+ --lmvz-select-height: var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem));
59
+ --lmvz-select-label-font-size: var(--lmvz-component-body-xs-font-size, clamp(0.63rem, 0.61rem + 0.06vw, 0.69rem));
59
60
  --lmvz-select-label-top-offset: calc(var(--lmvz-internal-select-floating-label-top-offset) * -1);
60
61
  --lmvz-select-label-minimized-padding-x: 4px;
61
62
  --lmvz-select-disabled-opacity: var(--lmvz-component-input-disabled-opacity, 40%);
@@ -116,39 +117,56 @@ div[aria-hidden] {
116
117
  padding: 0 var(--lmvz-select-padding-x);
117
118
  border-radius: var(--lmvz-select-radius);
118
119
  background-color: var(--lmvz-select-bg);
120
+ border: var(--lmvz-select-border-width) solid var(--lmvz-select-border-color);
121
+ box-sizing: border-box;
119
122
  cursor: pointer;
120
123
  position: relative;
121
124
  z-index: 1;
122
- transition: background-color 0.15s ease;
125
+ transition: border-color 0.15s ease;
123
126
  }
124
- :host(:not([disabled])) .select-wrapper:hover div[aria-hidden] {
125
- background-color: var(--lmvz-select-bg-hover);
127
+ :host(:not([disabled], [highlighted])) .select-wrapper:hover div[aria-hidden] {
128
+ border-color: var(--lmvz-select-border-color-hover);
129
+ }
130
+ :host([highlighted]) div[aria-hidden] {
131
+ background-color: var(--lmvz-semantic-color-status-active-alternate, #0f8acc);
132
+ border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
133
+ color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
134
+ }
135
+ :host([highlighted]) div[aria-hidden] > span:first-child {
136
+ color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
137
+ }
138
+ :host([highlighted]) label.floating-label {
139
+ background-color: var(--lmvz-semantic-color-status-active-alternate, #0f8acc);
140
+ color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
126
141
  }
127
142
  .select-wrapper:focus-within div[aria-hidden] {
128
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
129
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
143
+ outline: var(--lmvz-ds-outline);
144
+ outline-offset: var(--lmvz-ds-outline-offset);
130
145
  }
131
146
  div[aria-hidden] > span:first-child {
132
147
  flex: 1 0 0;
133
- font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
134
- Router);
148
+ font: var(--lmvz-typography-body-md-strong);
135
149
  color: var(--lmvz-select-text-color);
136
150
  overflow: hidden;
137
151
  text-overflow: ellipsis;
138
152
  white-space: nowrap;
139
153
  }
154
+ /* Active-selected text color: when a value is selected (not applicable in highlighted state) */
155
+ :host(:not([highlighted])) .select-wrapper.has-value div[aria-hidden] > span:first-child {
156
+ color: var(--lmvz-semantic-color-int-on-secondary-active, #000000);
157
+ }
140
158
  div[aria-hidden] > span:last-child {
141
159
  flex-shrink: 0;
142
160
  display: flex;
143
161
  align-items: center;
144
162
  justify-content: center;
145
163
  }
146
- img {
147
- display: block;
148
- width: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
149
- height: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
164
+ div[aria-hidden] svg {
165
+ width: var(--lmvz-component-icon-size-2xs, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
166
+ height: var(--lmvz-component-icon-size-2xs, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
167
+ flex-shrink: 0;
150
168
  }
151
- /* Native select absolutely covers the trigger, invisible, intercepts clicks */
169
+ /* Native select absolutely covers the trigger, invisible, intercepts clicks */
152
170
  select {
153
171
  appearance: none;
154
172
  position: absolute;
@@ -175,3 +193,29 @@ select {
175
193
  color: var(--lmvz-select-helper-color);
176
194
  line-height: normal;
177
195
  }
196
+ :host([size='small']) {
197
+ --lmvz-select-height: var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem));
198
+ --lmvz-select-padding-x: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
199
+ --lmvz-select-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
200
+ --lmvz-select-label-font-size: var(--lmvz-component-body-2xs-font-size, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
201
+ }
202
+ :host([size='small']) div[aria-hidden] > span:first-child {
203
+ font-size: var(--lmvz-component-body-sm-font-size, clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem));
204
+ }
205
+ :host([size='small']) div[aria-hidden] svg {
206
+ width: var(--lmvz-component-icon-size-4xs, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
207
+ height: var(--lmvz-component-icon-size-4xs, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
208
+ }
209
+ :host([size='large']) {
210
+ --lmvz-select-height: var(--lmvz-component-input-size-lg, clamp(2.75rem, 2.69rem + 0.26vw, 3rem));
211
+ --lmvz-select-padding-x: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
212
+ --lmvz-select-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
213
+ --lmvz-select-label-font-size: var(--lmvz-component-body-sm-font-size, clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem));
214
+ }
215
+ :host([size='large']) div[aria-hidden] > span:first-child {
216
+ font-size: var(--lmvz-component-body-lg-font-size, clamp(1rem, 0.97rem + 0.13vw, 1.13rem));
217
+ }
218
+ :host([size='large']) div[aria-hidden] svg {
219
+ width: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
220
+ height: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
221
+ }
@@ -1,5 +1,4 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import chevronDownSvg from "../../assets/icons/chevron-down.svg";
3
2
  import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
4
3
  import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
5
4
  let selectIdCounter = 0;
@@ -21,6 +20,8 @@ export class LmvzSelect extends ReactiveControllerHost {
21
20
  disabled = false;
22
21
  required = false;
23
22
  name;
23
+ size = 'default';
24
+ highlighted = false;
24
25
  selectedLabel = '';
25
26
  get hasValue() {
26
27
  return Boolean(this.value);
@@ -50,7 +51,7 @@ export class LmvzSelect extends ReactiveControllerHost {
50
51
  render() {
51
52
  const hasValue = this.hasValue;
52
53
  const shouldShowLabel = hasValue;
53
- return (h(Host, { key: 'ea378aacdaae4df8eaecb3e906815d3d97b0b7b3' }, h("div", { key: '28d99d298556ca10233fcf7ebe159328989924bd', class: "select-wrapper" }, h("label", { key: '05e4969c87d11387a80c76731fb9e4f862554211', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && h("span", { key: '4d1e5afd375b43a14e1b34214139fde45178b0ce', "aria-hidden": "true" }, " *")), h("div", { key: '93ba4ccbf77a17caaddeec5aa2d7576062dc47dd', "aria-hidden": "true" }, h("span", { key: '0c7054456cc775823dc3c118709e9dff72acbcb8' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && h("span", { key: '1c8a75e56c0ca0187809e3c298a7e23304428dff', "aria-hidden": "true" }, " *")), h("span", { key: '1e696fd7a1203c1705e579c4425ccdd5d9e621a7' }, h("img", { key: 'c5723c1a240c360c50d02ff1b66c0bebb4337788', src: chevronDownSvg, alt: "" }))), h("select", { key: 'e50855b52dd997b6496ff8d0de23b2240843f742', 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 && h("option", { key: '9044ee2e697c8e41e25acd019dabbf9dd2e54d3d', value: "", disabled: true, selected: true, hidden: true }), h("slot", { key: '87e0c5c64015c3920d33f4c316c1cf7ed94be4f0' }))), this.helperText && h("div", { key: '745e3512848019291c06bd7f0dcc230f63d960c1', role: "status" }, this.helperText)));
54
+ return (h(Host, { key: 'ce6cbd48640762e2d2c41f939c2bd0d400ada7a6', "data-highlighted": String(this.highlighted) }, h("div", { key: 'b89edad5195bfe39e1a236e67cd03ea61d20556e', class: hasValue ? 'select-wrapper has-value' : 'select-wrapper' }, h("label", { key: '29b4b78a8dd6e67107c6ae3bcfbf105f5f70de32', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && h("span", { key: '0a6f4af49a0e842470b6babace9201a995dc625d', "aria-hidden": "true" }, " *")), h("div", { key: '277e73e2cc7aca046c66c6516e48cbcdec86b544', "aria-hidden": "true" }, h("span", { key: '763dbccfb4624f4996fb7f412e8792a1cc006f34' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && h("span", { key: '1881c6bdbb577aed043fb19069398ca096c4cbc9', "aria-hidden": "true" }, " *")), h("span", { key: 'bcb3202de388bccb82882af748c7275327bb615b' }, h("svg", { key: '6a06e9eacb4c1e726b06b26243541c99f8b4ca1f', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" }, h("path", { key: '4984bd9b193183b03ab4858b4e8bea1ec3d2f471', d: "M20.3334 8.66663L12.0001 17L3.66675 8.66663", stroke: "currentColor", "stroke-width": "1.75", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("select", { key: '24b57f7ad6a3f2c010485ecd0e7aa4749d204320', 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 && h("option", { key: '8fc22471bb91bb1ec62bc49ec2c07bf3abb39b5c', value: "", disabled: true, selected: true, hidden: true }), h("slot", { key: '5273b6fae866178fa7c334c7d12d228634f65279' }))), this.helperText && h("div", { key: 'd3b93cac08ca5e74f335d6d867ac587036810482', role: "status" }, this.helperText)));
54
55
  }
55
56
  static get is() { return "lmvz-select"; }
56
57
  static get encapsulation() { return "scoped"; }
@@ -187,6 +188,56 @@ export class LmvzSelect extends ReactiveControllerHost {
187
188
  "setter": false,
188
189
  "reflect": false,
189
190
  "attribute": "name"
191
+ },
192
+ "size": {
193
+ "type": "string",
194
+ "mutable": false,
195
+ "complexType": {
196
+ "original": "Select.Size",
197
+ "resolved": "\"default\" | \"large\" | \"small\"",
198
+ "references": {
199
+ "Select": {
200
+ "location": "import",
201
+ "path": "../../api",
202
+ "id": "src/api/index.d.ts::Select",
203
+ "referenceLocation": "Select"
204
+ }
205
+ }
206
+ },
207
+ "required": false,
208
+ "optional": false,
209
+ "docs": {
210
+ "tags": [],
211
+ "text": "Visual size variant of the select field.\n- `small` \u2014 compact height\n- `default` \u2014 standard height (default)\n- `large` \u2014 increased height"
212
+ },
213
+ "getter": false,
214
+ "setter": false,
215
+ "reflect": true,
216
+ "attribute": "size",
217
+ "defaultValue": "'default'"
218
+ },
219
+ "highlighted": {
220
+ "type": "boolean",
221
+ "mutable": false,
222
+ "complexType": {
223
+ "original": "boolean",
224
+ "resolved": "boolean",
225
+ "references": {}
226
+ },
227
+ "required": false,
228
+ "optional": false,
229
+ "docs": {
230
+ "tags": [{
231
+ "name": "default",
232
+ "text": "false"
233
+ }],
234
+ "text": "Whether the select has an active filter or selection that should be visually\ndistinguished (e.g. a filter chip is applied).\n\nWhen `true`:\n- The host attribute `highlighted` is present (CSS: `:host([highlighted])`).\n- The host attribute `data-highlighted=\"true\"` is set for assistive-technology\n consumers that observe data attributes. When `false`, `data-highlighted` is\n set to `\"false\"`.\n\nNote: `aria-pressed` and `aria-selected` are intentionally not used here.\n`aria-pressed` is reserved for toggle-button roles; `aria-selected` is\nreserved for option/listbox roles. The `data-highlighted` attribute provides\nthe accessible contract without conflicting with native `<select>` semantics."
235
+ },
236
+ "getter": false,
237
+ "setter": false,
238
+ "reflect": true,
239
+ "attribute": "highlighted",
240
+ "defaultValue": "false"
190
241
  }
191
242
  };
192
243
  }
@@ -17,8 +17,7 @@
17
17
  gap: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
18
18
 
19
19
  pointer-events: auto;
20
- font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
21
- Router);
20
+ font: var(--lmvz-typography-body-md-strong);
22
21
 
23
22
  /* this will be picked up by lmvz-icon as well */
24
23
  --lmvz-component-color: var(--lmvz-semantic-color-status-on-success, #37867c);
@@ -58,7 +58,7 @@ export class LmvzSnackbar {
58
58
  this.el.dispatchEvent(new CustomEvent('lmvzAction', { bubbles: false, composed: false }));
59
59
  };
60
60
  render() {
61
- return (h(Host, { key: 'd4b4af1831aebd6bb9fdc67bedf43d7d4dd0d785', class: this.animationClass }, h("lmvz-icon", { key: '388f9d6f6aa968e74fa080c21f1b33562332293c', icon: STATUS_SVG[this.status], size: "md", weight: "bold" }), h("span", { key: 'a00168060f23ac8b42b82d4ff2960d488b9cdc4b', class: "message" }, this.message), this.actionLabel && (h("lmvz-button", { key: '95ce1c5d98244490725ac797d95a54527a908f1e', variant: "tertiary", scale: "small", onLmvzActivation: this.handleActionClick }, this.actionLabel))));
61
+ return (h(Host, { key: '4018b33b7d4263c1e138217d5181231e3562a2ad', class: this.animationClass }, h("lmvz-icon", { key: '351f90e1fd9eb7b4f5e864bccd46a643cd158bf1', icon: STATUS_SVG[this.status], size: "md", weight: "bold" }), h("span", { key: 'fea43a01e328c7922d563e73256d7c3012b49fd9', class: "message" }, this.message), this.actionLabel && (h("lmvz-button", { key: '5ef8589a379ccbcfaf42197227dc95ba51c225fe', variant: "tertiary", scale: "small", onLmvzActivation: this.handleActionClick }, this.actionLabel))));
62
62
  }
63
63
  static get is() { return "lmvz-snackbar"; }
64
64
  static get encapsulation() { return "shadow"; }
@@ -4,7 +4,7 @@ export class LmvzSpinner {
4
4
  ariaLabel;
5
5
  render() {
6
6
  const hasLabel = !!this.ariaLabel?.trim();
7
- return (h(Host, { key: '858398ba87b2d2d6fd0f44c742183a770c233597', role: hasLabel ? 'status' : undefined, "aria-label": hasLabel ? this.ariaLabel : undefined, "aria-hidden": hasLabel ? undefined : 'true' }, h("svg", { key: '5fb5c26c17efaaa69300f1c019e0d25a566b53d9', part: "indicator", viewBox: "0 0 16 16", "aria-hidden": "true" }, h("circle", { key: '82747f014363570ccf25cfdaba5eac052d1efdf7', pathLength: "100", cx: "8", cy: "8", r: "6" }))));
7
+ return (h(Host, { key: 'c788616cdce6548fe228671cb78dfcd98740c42b', role: hasLabel ? 'status' : undefined, "aria-label": hasLabel ? this.ariaLabel : undefined, "aria-hidden": hasLabel ? undefined : 'true' }, h("svg", { key: '01d2fd9a20454ae051f63fc3403e4b1679db2697', part: "indicator", viewBox: "0 0 16 16", "aria-hidden": "true" }, h("circle", { key: '1bc55615f8fc46b26031d4dc24a24b6e79ca8b98', pathLength: "100", cx: "8", cy: "8", r: "6" }))));
8
8
  }
9
9
  static get is() { return "lmvz-spinner"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -51,8 +51,7 @@ button {
51
51
  background: var(--lmvz-tab-background);
52
52
  color: var(--lmvz-tab-color);
53
53
 
54
- font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
55
- Router);
54
+ font: var(--lmvz-typography-body-md-strong);
56
55
  cursor: pointer;
57
56
  white-space: nowrap;
58
57
  transition:
@@ -60,8 +59,8 @@ button {
60
59
  color 0.15s ease;
61
60
  }
62
61
  button:focus-visible {
63
- outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
64
- outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
62
+ outline: var(--lmvz-ds-outline);
63
+ outline-offset: var(--lmvz-ds-outline-offset);
65
64
  z-index: 1;
66
65
  }
67
66
  button:disabled {
@@ -14,7 +14,7 @@ export class LmvzTab {
14
14
  this.el.dispatchEvent(new CustomEvent('lmvzTabReady', { bubbles: true, composed: false }));
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: 'f773de6715166e8a321dc7c35f4f7c3e02f7f127' }, h("button", { key: '1c58f672e04956295292bb9becfd72e90ce36e6b', part: "button", role: "tab", disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: 0 }, h("slot", { key: '9381aeccc14ca81b963f9509f78ca0de420f0596', name: "media", ref: (el) => (this.mediaSlotEl = el), onSlotchange: this.handleMediaSlotChange }), h("span", { key: '289feb2180a5b190bc080804841d0a8f84d9ef2d', class: "label" }, h("slot", { key: 'df79c890e156883b37d6fbf34f4fbb957e33402c' })), h("span", { key: '54d091a18674ffd78e14f5a0da1dc648ffe91e13', "aria-hidden": "true", part: "indicator", class: "indicator" }))));
17
+ return (h(Host, { key: '1232c42d1e4b0a22710076dcd021e910e9b71c3c' }, h("button", { key: 'a5d85b761836038a93b102052ff9b09cab04bd7f', part: "button", role: "tab", disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: 0 }, h("slot", { key: 'ce429f5e6d05ed4ef506276231aa0a54cd9f050f', name: "media", ref: (el) => (this.mediaSlotEl = el), onSlotchange: this.handleMediaSlotChange }), h("span", { key: '637e0da61c21950b0b1c8d5622315c8921007fdb', class: "label" }, h("slot", { key: '1c035b6763d0fa894d9dadb1407b87ca3e2f0da5' })), h("span", { key: '88c6e4d8fe990e6b722664641d23310748afd7c0', "aria-hidden": "true", part: "indicator", class: "indicator" }))));
18
18
  }
19
19
  static get is() { return "lmvz-tab"; }
20
20
  static get encapsulation() { return "shadow"; }