@lmvz-ds/components 0.27.0 → 0.28.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 (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/{aria-validation-controller-BMV2tv9-.js → aria-validation-controller-Z4TtOp2l.js} +1 -1
  3. package/cjs/close-sm-CATLoxxd.js +5 -0
  4. package/cjs/{ds.constants-8fh6ItAF.js → ds.constants-CN0zFjB7.js} +4 -0
  5. package/cjs/{index-BCFBLj0e.js → index-TGsVZNDP.js} +26 -2
  6. package/cjs/index.cjs.js +3 -1
  7. package/cjs/lmvz-action.cjs.entry.js +1 -1
  8. package/cjs/lmvz-button-group.cjs.entry.js +1 -1
  9. package/cjs/lmvz-button_2.cjs.entry.js +2 -2
  10. package/cjs/lmvz-card.cjs.entry.js +1 -1
  11. package/cjs/lmvz-checkbox.cjs.entry.js +2 -2
  12. package/cjs/lmvz-chip.cjs.entry.js +3 -3
  13. package/cjs/lmvz-components.cjs.js +2 -2
  14. package/cjs/lmvz-header_2.cjs.entry.js +2 -2
  15. package/cjs/lmvz-input.cjs.entry.js +6 -5
  16. package/cjs/lmvz-menuitem.cjs.entry.js +2 -2
  17. package/cjs/lmvz-message.cjs.entry.js +78 -0
  18. package/cjs/lmvz-modal.cjs.entry.js +5 -6
  19. package/cjs/lmvz-radio.cjs.entry.js +3 -3
  20. package/cjs/lmvz-select.cjs.entry.js +4 -4
  21. package/cjs/lmvz-snackbar.cjs.entry.js +5 -8
  22. package/cjs/lmvz-spinner.cjs.entry.js +20 -0
  23. package/cjs/lmvz-tab.cjs.entry.js +2 -2
  24. package/cjs/lmvz-tabs.cjs.entry.js +2 -2
  25. package/cjs/lmvz-toggle.cjs.entry.js +3 -3
  26. package/cjs/loader.cjs.js +2 -2
  27. package/cjs/warning-WEX_ABWL.js +8 -0
  28. package/collection/api/ds.constants.js +2 -0
  29. package/collection/collection-manifest.json +2 -0
  30. package/collection/components/lmvz-input/lmvz-input.css +40 -25
  31. package/collection/components/lmvz-input/lmvz-input.js +33 -2
  32. package/collection/components/lmvz-message/lmvz-message.css +50 -0
  33. package/collection/components/lmvz-message/lmvz-message.js +240 -0
  34. package/collection/components/lmvz-message/public.js +1 -0
  35. package/collection/components/lmvz-modal/lmvz-modal.js +1 -1
  36. package/collection/components/lmvz-radio/lmvz-radio.js +1 -1
  37. package/collection/components/lmvz-select/lmvz-select.css +2 -4
  38. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  39. package/collection/components/lmvz-snackbar/lmvz-snackbar.js +1 -1
  40. package/collection/components/lmvz-spinner/lmvz-spinner.css +40 -0
  41. package/collection/components/lmvz-spinner/lmvz-spinner.js +64 -0
  42. package/collection/components/lmvz-tab/lmvz-tab.js +1 -1
  43. package/collection/components/lmvz-tabs/lmvz-tabs.js +1 -1
  44. package/collection/components/lmvz-toggle/lmvz-toggle.js +1 -1
  45. package/collection/index.js +3 -2
  46. package/collection/integration/header-integration/header-integration.js +1 -1
  47. package/components/index.d.ts +4 -0
  48. package/components/index.d.ts.bak +4 -0
  49. package/components/index.js +1 -1
  50. package/components/lmvz-action.js +1 -1
  51. package/components/lmvz-button-group.js +1 -1
  52. package/components/lmvz-button.js +1 -1
  53. package/components/lmvz-card.js +1 -1
  54. package/components/lmvz-checkbox.js +1 -1
  55. package/components/lmvz-chip.js +1 -1
  56. package/components/lmvz-header.js +1 -1
  57. package/components/lmvz-icon.js +1 -1
  58. package/components/lmvz-input.js +1 -1
  59. package/components/lmvz-menuitem.js +1 -1
  60. package/components/lmvz-message.d.ts +11 -0
  61. package/components/lmvz-message.d.ts.bak +11 -0
  62. package/components/lmvz-message.js +1 -0
  63. package/components/lmvz-modal.js +1 -1
  64. package/components/lmvz-radio.js +1 -1
  65. package/components/lmvz-select.js +1 -1
  66. package/components/lmvz-snackbar.js +1 -1
  67. package/components/lmvz-spinner.d.ts +11 -0
  68. package/components/lmvz-spinner.d.ts.bak +11 -0
  69. package/components/lmvz-spinner.js +1 -0
  70. package/components/lmvz-tab.js +1 -1
  71. package/components/lmvz-tabs.js +1 -1
  72. package/components/lmvz-toggle.js +1 -1
  73. package/components/p-BSV3KDWl.js +1 -0
  74. package/components/{p-2VdcUIrr.js → p-C0f2nNPZ.js} +1 -1
  75. package/components/{p-BJEQw1Sz.js → p-C8znmF2h.js} +1 -1
  76. package/components/{p-DjvbwRyl.js → p-CXakymyP.js} +1 -1
  77. package/components/{p-0P2Wb3pE.js → p-DAMVH-31.js} +1 -1
  78. package/components/p-DGg7OzDl.js +1 -0
  79. package/components/{p-Cs7RCOHZ.js → p-DGlgVBPj.js} +1 -1
  80. package/components/p-DsT_K3_I.js +1 -0
  81. package/esm/{aria-validation-controller-D-KO0Asb.js → aria-validation-controller-BnyUKeJ6.js} +1 -1
  82. package/esm/close-sm-BSV3KDWl.js +3 -0
  83. package/esm/{ds.constants-BOOwq5dE.js → ds.constants-BTa7u4To.js} +3 -1
  84. package/esm/{index-CKYszC64.js → index-BPeerEwm.js} +26 -2
  85. package/esm/index.js +1 -1
  86. package/esm/lmvz-action.entry.js +1 -1
  87. package/esm/lmvz-button-group.entry.js +1 -1
  88. package/esm/lmvz-button_2.entry.js +2 -2
  89. package/esm/lmvz-card.entry.js +1 -1
  90. package/esm/lmvz-checkbox.entry.js +2 -2
  91. package/esm/lmvz-chip.entry.js +3 -3
  92. package/esm/lmvz-components.js +3 -3
  93. package/esm/lmvz-header_2.entry.js +2 -2
  94. package/esm/lmvz-input.entry.js +6 -5
  95. package/esm/lmvz-menuitem.entry.js +2 -2
  96. package/esm/lmvz-message.entry.js +76 -0
  97. package/esm/lmvz-modal.entry.js +4 -5
  98. package/esm/lmvz-radio.entry.js +3 -3
  99. package/esm/lmvz-select.entry.js +4 -4
  100. package/esm/lmvz-snackbar.entry.js +3 -6
  101. package/esm/lmvz-spinner.entry.js +18 -0
  102. package/esm/lmvz-tab.entry.js +2 -2
  103. package/esm/lmvz-tabs.entry.js +2 -2
  104. package/esm/lmvz-toggle.entry.js +3 -3
  105. package/esm/loader.js +3 -3
  106. package/esm/warning-DsT_K3_I.js +5 -0
  107. package/hydrate/index.js +155 -18
  108. package/hydrate/index.mjs +155 -18
  109. package/lmvz-components/index.esm.js +1 -1
  110. package/lmvz-components/lmvz-components.esm.js +1 -1
  111. package/lmvz-components/{p-bd23eab3.entry.js → p-02e8e45a.entry.js} +1 -1
  112. package/lmvz-components/{p-c6228cee.entry.js → p-3b3e532f.entry.js} +1 -1
  113. package/lmvz-components/p-44fea470.entry.js +1 -0
  114. package/lmvz-components/p-45c3ccb6.entry.js +1 -0
  115. package/lmvz-components/{p-758dbb82.entry.js → p-4dc44520.entry.js} +1 -1
  116. package/lmvz-components/p-5c951888.entry.js +1 -0
  117. package/lmvz-components/{p-7b15cdce.entry.js → p-6a1c3088.entry.js} +1 -1
  118. package/lmvz-components/{p-bb46a884.entry.js → p-80c6ec27.entry.js} +1 -1
  119. package/lmvz-components/p-84edbe53.entry.js +1 -0
  120. package/lmvz-components/p-85b0b718.entry.js +1 -0
  121. package/lmvz-components/{p-43b463bf.entry.js → p-877d0f3e.entry.js} +1 -1
  122. package/lmvz-components/p-8fc25ee2.entry.js +1 -0
  123. package/lmvz-components/{p-8874ff19.entry.js → p-98e3e85a.entry.js} +1 -1
  124. package/lmvz-components/p-BPeerEwm.js +2 -0
  125. package/lmvz-components/p-BSV3KDWl.js +1 -0
  126. package/lmvz-components/p-BTa7u4To.js +1 -0
  127. package/lmvz-components/{p-hRb38wX6.js → p-CPOia2kT.js} +1 -1
  128. package/lmvz-components/p-DsT_K3_I.js +1 -0
  129. package/lmvz-components/{p-25f045b2.entry.js → p-a4077c9f.entry.js} +1 -1
  130. package/lmvz-components/{p-a5c921dc.entry.js → p-d53f8afe.entry.js} +1 -1
  131. package/lmvz-components/{p-6de9981f.entry.js → p-e3ce44a3.entry.js} +1 -1
  132. package/lmvz-components/{p-6484fbc6.entry.js → p-e672c0fa.entry.js} +1 -1
  133. package/lmvz-components/p-fdb8de66.entry.js +1 -0
  134. package/manifest.json +396 -2
  135. package/package.json +9 -1
  136. package/types/api/ds.constants.d.ts +6 -0
  137. package/types/components/lmvz-input/lmvz-input.d.ts +1 -0
  138. package/types/components/lmvz-message/lmvz-message.d.ts +20 -0
  139. package/types/components/lmvz-message/public.d.ts +1 -0
  140. package/types/components/lmvz-spinner/lmvz-spinner.d.ts +5 -0
  141. package/types/components.d.ts +119 -0
  142. package/types/index.d.ts +3 -2
  143. package/components/p-c7OzBK8f.js +0 -1
  144. package/lmvz-components/p-0a37e0f2.entry.js +0 -1
  145. package/lmvz-components/p-4bd71a3c.entry.js +0 -1
  146. package/lmvz-components/p-6988c3ea.entry.js +0 -1
  147. package/lmvz-components/p-BOOwq5dE.js +0 -1
  148. package/lmvz-components/p-CKYszC64.js +0 -2
  149. package/lmvz-components/p-da16ff58.entry.js +0 -1
  150. package/lmvz-components/p-fe607f10.entry.js +0 -1
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-TGsVZNDP.js');
4
+
5
+ const lmvzSpinnerCss = () => `:host{--spinner-size:1rem;display:inline-block;width:var(--spinner-size);height:var(--spinner-size)}:host([size='large']){--spinner-size:2rem;}svg{width:100%;height:100%;transform-origin:center;animation:lmvz-spinner-rotate var(--lmvz-global-duration-slow, 800ms) linear infinite;color:var(--lmvz-semantic-color-border-active, #0f8acc)}circle{fill:none;stroke:currentcolor;stroke-width:var(--lmvz-component-icon-border-width-strong, 1.5px);stroke-linecap:round;stroke-dasharray:75 25;vector-effect:non-scaling-stroke}@keyframes lmvz-spinner-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){svg{animation:none}}`;
6
+
7
+ const LmvzSpinner = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ }
11
+ size = 'small';
12
+ ariaLabel;
13
+ render() {
14
+ const hasLabel = !!this.ariaLabel?.trim();
15
+ return (index.h(index.Host, { key: '858398ba87b2d2d6fd0f44c742183a770c233597', role: hasLabel ? 'status' : undefined, "aria-label": hasLabel ? this.ariaLabel : undefined, "aria-hidden": hasLabel ? undefined : 'true' }, index.h("svg", { key: '5fb5c26c17efaaa69300f1c019e0d25a566b53d9', part: "indicator", viewBox: "0 0 16 16", "aria-hidden": "true" }, index.h("circle", { key: '82747f014363570ccf25cfdaba5eac052d1efdf7', pathLength: "100", cx: "8", cy: "8", r: "6" }))));
16
+ }
17
+ };
18
+ LmvzSpinner.style = lmvzSpinnerCss();
19
+
20
+ exports.lmvz_spinner = LmvzSpinner;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BCFBLj0e.js');
3
+ var index = require('./index-TGsVZNDP.js');
4
4
 
5
5
  const lmvzTabCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } } :host { display: inline-block; flex: none; } :host([disabled]) { cursor: not-allowed; pointer-events: none; } button { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); position: relative; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--lmvz-component-component-spacing-0-default, 4px); padding-top: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); padding-bottom: var(--lmvz-dimension-8-14, clamp(0.5rem, 0.41rem + 0.39vw, 0.88rem)); padding-inline: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); border: none; border-radius: var(--lmvz-semantic-border-radius-round, 999px); background: var(--lmvz-tab-background); color: var(--lmvz-tab-color); font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); cursor: pointer; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease; } button:focus-visible { outline: var(--lmvz-ds-outline, 1px solid #0e7ab4); outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)); z-index: 1; } button:disabled { opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; cursor: not-allowed; } button:hover { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-hover, #000000); } button:active { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-active, #000000); } :host([has-media]) { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); } :host([has-media]) button { padding-top: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); padding-bottom: var(--lmvz-dimension-12-14, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem)); padding-inline: var(--lmvz-dimension-40-48, clamp(2.5rem, 2.38rem + 0.52vw, 3rem)); border-radius: var(--lmvz-semantic-border-radius-lg, 14px); } :host([has-media]) button:hover { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000); } :host([has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000); } :host([selected]) button { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); --lmvz-tab-background: var(--lmvz-semantic-color-status-active, #f6fbfe); } :host([selected][has-media]) button:hover, :host([selected][has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } .indicator { --lmvz-tab-indicator-size: 4px; position: absolute; background: linear-gradient(to right, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); opacity: 0; transition: opacity 0.15s ease; inset-block-end: 0; inset-inline: 0; block-size: var(--lmvz-tab-indicator-size); border-start-start-radius: 0; border-start-end-radius: 0; border-end-start-radius: var(--lmvz-tab-indicator-size); border-end-end-radius: var(--lmvz-tab-indicator-size); } :host([selected][has-media]) .indicator { opacity: 1; } :host([vertical]) button { border-radius: var(--lmvz-semantic-border-radius-round, 999px); } :host([vertical]) .indicator { inset-block: 0; inset-inline: 0 auto; inline-size: var(--lmvz-tab-indicator-size); block-size: auto; border-radius: 0 var(--lmvz-tab-indicator-size) var(--lmvz-tab-indicator-size) 0; background: linear-gradient(to bottom, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); } ::slotted(*) { --lmvz-component-color: var(--lmvz-tab-color); } ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); } :host([has-media]) ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.44rem + 0.26vw, 1.75rem)); } .label { display: contents; } `;
6
6
 
@@ -22,7 +22,7 @@ const LmvzTab = class {
22
22
  this.el.dispatchEvent(new CustomEvent('lmvzTabReady', { bubbles: true, composed: false }));
23
23
  }
24
24
  render() {
25
- return (index.h(index.Host, { key: 'f02b0624ac752f25e3996071ab88be1364dd27c3' }, index.h("button", { key: '1666fea6a68c66d5bf88141660067a66e0164891', part: "button", role: "tab", disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: 0 }, index.h("slot", { key: '23d1ef98da2a72efa3a5ec1563298fc4c08da441', name: "media", ref: (el) => (this.mediaSlotEl = el), onSlotchange: this.handleMediaSlotChange }), index.h("span", { key: 'bd96765d2228817c621a2ad4fd4f3b05fcdb3a21', class: "label" }, index.h("slot", { key: 'ef51c25169a1d993797a86b89fa296218e264969' })), index.h("span", { key: '28dda1631d62325a29e285909ee3f1c0ea9da3ad', "aria-hidden": "true", part: "indicator", class: "indicator" }))));
25
+ return (index.h(index.Host, { key: 'f773de6715166e8a321dc7c35f4f7c3e02f7f127' }, index.h("button", { key: '1c58f672e04956295292bb9becfd72e90ce36e6b', part: "button", role: "tab", disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: 0 }, index.h("slot", { key: '9381aeccc14ca81b963f9509f78ca0de420f0596', name: "media", ref: (el) => (this.mediaSlotEl = el), onSlotchange: this.handleMediaSlotChange }), index.h("span", { key: '289feb2180a5b190bc080804841d0a8f84d9ef2d', class: "label" }, index.h("slot", { key: 'df79c890e156883b37d6fbf34f4fbb957e33402c' })), index.h("span", { key: '54d091a18674ffd78e14f5a0da1dc648ffe91e13', "aria-hidden": "true", part: "indicator", class: "indicator" }))));
26
26
  }
27
27
  static get delegatesFocus() { return true; }
28
28
  };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BCFBLj0e.js');
3
+ var index = require('./index-TGsVZNDP.js');
4
4
  var listKeyboardController = require('./list-keyboard-controller-CzZdPBeH.js');
5
5
  var reactiveControllerHost = require('./reactive-controller-host-B_lZtcA6.js');
6
6
  require('./component-C7cavwmZ.js');
@@ -240,7 +240,7 @@ const LmvzTabs = class extends reactiveControllerHost.ReactiveControllerHost {
240
240
  this.selectTab(value);
241
241
  };
242
242
  render() {
243
- return (index.h(index.Host, { key: '3a503531069e0d83be9bde0e9bc2e1747498baf2', onClick: this.handleTabClick, onKeydown: this.handleKeydown }, index.h("div", { key: '25a37d52ba6c8c1b46c1e624da13b918e9bd33d1', role: "tablist", "aria-orientation": this.orientation, class: "tablist" }, index.h("slot", { key: '00b4ba4cf88081d8cd4ee21976398646e4f19679', ref: (el) => (this.tabSlotEl = el) })), index.h("div", { key: '872aba20a4d26facafc71821f7fc88cf96b05a33', part: "panels-container", class: "panels-container" }, index.h("slot", { key: '7681c24945e7d50e95f749bd5c056704db120b11', name: "panels", ref: (el) => (this.panelSlotEl = el) }))));
243
+ return (index.h(index.Host, { key: 'f86adf9c3ce7bbe664d34ce8f408df89c719e3b8', onClick: this.handleTabClick, onKeydown: this.handleKeydown }, index.h("div", { key: '9188d39f972b77226221b33079d45c77b2b10583', role: "tablist", "aria-orientation": this.orientation, class: "tablist" }, index.h("slot", { key: 'a5ec2df3485181ec2eb62b6c479af169371b4006', ref: (el) => (this.tabSlotEl = el) })), index.h("div", { key: '9e57154ddcb069f58e5d457ab6cd275d5bacebd5', part: "panels-container", class: "panels-container" }, index.h("slot", { key: '84cada87d9a7c9f75a4bf16ce5e8437969aadbe9', name: "panels", ref: (el) => (this.panelSlotEl = el) }))));
244
244
  }
245
245
  static get watchers() { return {
246
246
  "value": [{
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BCFBLj0e.js');
4
- var ariaValidationController = require('./aria-validation-controller-BMV2tv9-.js');
3
+ var index = require('./index-TGsVZNDP.js');
4
+ var ariaValidationController = require('./aria-validation-controller-Z4TtOp2l.js');
5
5
  var component = require('./component-C7cavwmZ.js');
6
6
  var reactiveControllerHost = require('./reactive-controller-host-B_lZtcA6.js');
7
7
  require('./aria-loader-BRo2FTGh.js');
@@ -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: '452ea30df1191b45c606d7512982a0f743b7bf7a' }, index.h("span", { key: 'c538806b64de8bce70d0bc55c6a9eb279f4eff4c', class: "track" }, index.h("input", { key: 'afe04f4305744b3110092f9bfcbe8b4ee6f21c37', 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: 'e8089a6e8ee084b3f316c837cf3225017c33a15e', class: "thumb", "aria-hidden": "true" })), index.h("label", { key: '085055f461f4240df2eb2b4ea441a5e782240276', htmlFor: this.toggleId }, this.label)));
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)));
86
86
  }
87
87
  static get formAssociated() { return true; }
88
88
  static get watchers() { return {
package/cjs/loader.cjs.js CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BCFBLj0e.js');
3
+ var index = require('./index-TGsVZNDP.js');
4
4
  var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
5
 
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-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],"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-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],"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;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ const infoSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDJDNi40NzcxNSAyIDIgNi40NzcxNSAyIDEyQzIgMTcuNTIyOCA2LjQ3NzE1IDIyIDEyIDIyQzE3LjUyMjggMjIgMjIgMTcuNTIyOCAyMiAxMkMyMiA2LjQ3NzE1IDE3LjUyMjggMiAxMiAyWk0xMiA3QzExLjQ0NzcgNyAxMSA3LjQ0NzcyIDExIDhDMTEgOC41NTIyOCAxMS40NDc3IDkgMTIgOUMxMi41NTIzIDkgMTMgOC41NTIyOCAxMyA4QzEzIDcuNDQ3NzIgMTIuNTUyMyA3IDEyIDdaTTExIDExQzEwLjQ0NzcgMTEgMTAgMTEuNDQ3NyAxMCAxMkMxMCAxMi41NTIzIDEwLjQ0NzcgMTMgMTEgMTNWMTZDMTEgMTYuNTUyMyAxMS40NDc3IDE3IDEyIDE3SDEzQzEzLjU1MjMgMTcgMTQgMTYuNTUyMyAxNCAxNkMxNCAxNS40NDc3IDEzLjU1MjMgMTUgMTMgMTVWMTJDMTMgMTEuNDQ3NyAxMi41NTIzIDExIDEyIDExSDExWiIvPgo8L3N2Zz4K';
4
+
5
+ const warningSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjI4NjQgMy4wNDkzOEMxMS4wMzgwIDEuNjUwMjEgMTIuOTYyMCAxLjY1MDIxIDEzLjcxMzYgMy4wNDkzOEwyMi42NjY4IDE5LjI0OTRDMjMuNDAyNiAyMC42MTYxIDIyLjQ1ODggMjIuMjUwMCAyMC45NTMyIDIyLjI1MDBIMy4wNDY4MEMxLjU0MTIwIDIyLjI1MDAgMC41OTc0MTAgMjAuNjE2MSAxLjMzMzIwIDE5LjI0OTRMMTAuMjg2NCAzLjA0OTM4Wk0xMiA4QzExLjQ0NzcgOCAxMSA4LjQ0NzcyIDExIDlWMTRDMTEgMTQuNTUyMyAxMS40NDc3IDE1IDEyIDE1QzEyLjU1MjMgMTUgMTMgMTQuNTUyMyAxMyAxNFY5QzEzIDguNDQ3NzIgMTIuNTUyMyA4IDEyIDhaTTEyIDE2QzExLjQ0NzcgMTYgMTEgMTYuNDQ3NyAxMSAxN0MxMSAxNy41NTIzIDExLjQ0NzcgMTggMTIgMThDMTIuNTUyMyAxOCAxMyAxNy41NTIzIDEzIDE3QzEzIDE2LjQ0NzcgMTIuNTUyMyAxNiAxMiAxNloiLz4KPC9zdmc+Cg==';
6
+
7
+ exports.infoSvg = infoSvg;
8
+ exports.warningSvg = warningSvg;
@@ -3,10 +3,12 @@ export const scaleValues = ['small', 'default', 'large'];
3
3
  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
+ export const inputSizes = ['sm', 'md', 'lg'];
6
7
  export const iconSizes = [...sizes, 'inherit'];
7
8
  export const iconWeights = ['thin', 'medium', 'bold'];
8
9
  export const chipTypes = ['active', 'warning', 'success', 'error', 'neutral'];
9
10
  export const chipSizes = ['default', 'small'];
11
+ export const messageTypes = ['neutral', 'warning'];
10
12
  export const snackbarStatuses = ['success', 'warning', 'error'];
11
13
  export const snackbarPriorities = ['low', 'normal', 'high'];
12
14
  export const snackbarDismissReasons = ['timeout', 'manual', 'action', 'overridden', 'swallowed'];
@@ -10,10 +10,12 @@
10
10
  "components/lmvz-icon/lmvz-icon.js",
11
11
  "components/lmvz-input/lmvz-input.js",
12
12
  "components/lmvz-menuitem/lmvz-menuitem.js",
13
+ "components/lmvz-message/lmvz-message.js",
13
14
  "components/lmvz-modal/lmvz-modal.js",
14
15
  "components/lmvz-radio/lmvz-radio.js",
15
16
  "components/lmvz-select/lmvz-select.js",
16
17
  "components/lmvz-snackbar/lmvz-snackbar.js",
18
+ "components/lmvz-spinner/lmvz-spinner.js",
17
19
  "components/lmvz-tab/lmvz-tab.js",
18
20
  "components/lmvz-tabs/lmvz-tabs.js",
19
21
  "components/lmvz-toggle/lmvz-toggle.js",
@@ -45,24 +45,45 @@
45
45
  --input-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff);
46
46
  --input-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0);
47
47
  --input-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7);
48
- --input-border-color-focus: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
48
+ --input-border-color-focus: var(--lmvz-semantic-color-border-active, #0f8acc);
49
49
  --input-border-width: var(--lmvz-semantic-border-width-default, 1px);
50
- --input-height: 48px; /* From Figma input-size=48 */
51
- --input-padding-x: 16px;
50
+
51
+ /* Size defaults (md) */
52
+ --input-height: var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem));
53
+ --input-padding-x: var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem));
54
+ --input-gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
55
+ --input-font-size: var(--lmvz-component-body-md-font-size, clamp(0.88rem, 0.84rem + 0.13vw, 1rem));
52
56
 
53
57
  --label-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454);
54
58
  --input-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000);
55
59
  --helper-text-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454);
56
60
  --error-text-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
57
61
 
58
- --label-floating-scale: 0.85; /* 14px -> 12px approx */
59
- --label-minimized-top: -6px;
60
62
  --label-minimized-bg: var(--input-bg);
61
63
  --label-minimized-padding-x: 4px;
62
64
 
63
65
  /* Disabled state uses opacity token */
64
66
  --input-disabled-opacity: var(--lmvz-component-input-disabled-opacity, 40%);
65
67
  }
68
+ /* Size variants */
69
+ :host([size='sm']) {
70
+ --input-height: var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem));
71
+ --input-padding-x: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
72
+ --input-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
73
+ --input-font-size: var(--lmvz-component-body-sm-font-size, clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem));
74
+ }
75
+ :host([size='md']) {
76
+ --input-height: var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem));
77
+ --input-padding-x: var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem));
78
+ --input-gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
79
+ --input-font-size: var(--lmvz-component-body-md-font-size, clamp(0.88rem, 0.84rem + 0.13vw, 1rem));
80
+ }
81
+ :host([size='lg']) {
82
+ --input-height: var(--lmvz-component-input-size-lg, clamp(2.75rem, 2.69rem + 0.26vw, 3rem));
83
+ --input-padding-x: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
84
+ --input-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
85
+ --input-font-size: var(--lmvz-component-body-lg-font-size, clamp(1rem, 0.97rem + 0.13vw, 1.13rem));
86
+ }
66
87
  .input-container {
67
88
  display: flex;
68
89
  flex-direction: column;
@@ -79,7 +100,7 @@
79
100
  padding: 0 var(--input-padding-x);
80
101
  position: relative;
81
102
  transition: border-color 0.2s ease;
82
- gap: 8px; /* input-gap-x */
103
+ gap: var(--input-gap);
83
104
  }
84
105
  :host([disabled]) .input-wrapper {
85
106
  opacity: var(--input-disabled-opacity);
@@ -87,7 +108,7 @@
87
108
  pointer-events: none;
88
109
  }
89
110
  .input-container:focus-within .input-wrapper {
90
- /* border-color: var(--input-border-color-focus); */
111
+ border-color: var(--input-border-color-focus);
91
112
  outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
92
113
  outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
93
114
  }
@@ -95,10 +116,6 @@
95
116
  :host([error]) .input-wrapper {
96
117
  border-color: var(--error-text-color);
97
118
  }
98
- :host([error]):focus-within .input-wrapper {
99
- border-color: var(--error-text-color);
100
- outline-color: var(--error-text-color);
101
- }
102
119
  /* Hover State - Use CSS pseudo-selector instead of class */
103
120
  :host(:not([disabled])) .input-wrapper:hover {
104
121
  border-color: var(--input-border-color-hover);
@@ -116,26 +133,26 @@ label {
116
133
  top: 50%;
117
134
  transform: translateY(-50%);
118
135
  color: var(--label-color);
119
- font-size: 14px; /* body-md size from Figma */
120
- font-family: Router, sans-serif;
136
+ font-size: var(--input-font-size);
121
137
  font-weight: 400;
122
138
  pointer-events: none;
123
139
  transition: all 0.2s ease-out;
124
140
  background-color: transparent;
125
141
  padding: 0;
126
142
  margin: 0;
127
- line-height: normal;
143
+ line-height: 1.5;
128
144
  white-space: nowrap;
129
145
  }
130
146
  label.floating {
131
- top: 0; /* Align to top border area */
132
- transform: translateY(-50%) scale(0.85); /* Scale down */
147
+ top: 0.5em;
148
+ transform: translateY(-100%);
133
149
  transform-origin: left top;
150
+ font-size: var(--lmvz-component-body-2xs-font-size, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
134
151
  background-color: var(--label-minimized-bg);
135
152
  padding: 0 var(--label-minimized-padding-x);
136
153
  left: -2px; /* Adjust for padding/border visual alignment */
137
154
  color: var(--input-text-color); /* Darker when floating */
138
- font-weight: 500; /* Medium weight when minimized */
155
+ font-weight: 400;
139
156
  }
140
157
  .required-indicator {
141
158
  color: var(--error-text-color);
@@ -148,11 +165,11 @@ input {
148
165
  height: 100%;
149
166
  color: var(--input-text-color);
150
167
  font-family: inherit;
151
- font-size: 14px;
168
+ font-size: var(--input-font-size);
152
169
  outline: none;
153
170
  padding: 0;
154
171
  margin: 0;
155
- font-weight: 400; /* Regular weight */
172
+ font-weight: 400;
156
173
  }
157
174
  input::placeholder {
158
175
  color: var(--label-color);
@@ -162,19 +179,17 @@ div:empty {
162
179
  }
163
180
  [role='status'] {
164
181
  padding-top: 8px; /* space-gap-component-input-helper-text */
165
- padding-left: 12px; /* input-md-padding-x for helper text indent */
182
+ padding-left: var(--input-padding-x);
166
183
  font-size: 12px;
167
184
  color: var(--helper-text-color);
168
- font-family: Router, sans-serif;
169
- font-weight: 500; /* Medium weight */
185
+ font-weight: 400;
170
186
  }
171
187
  [role='alert'] {
172
188
  padding-top: 8px;
173
- padding-left: 12px;
189
+ padding-left: var(--input-padding-x);
174
190
  font-size: 12px;
175
191
  color: var(--error-text-color);
176
- font-family: Router, sans-serif;
177
- font-weight: 500;
192
+ font-weight: 400;
178
193
  }
179
194
  ::slotted(lmvz-button) {
180
195
  /* Minimize padding for (icon) buttons due to height constraints */
@@ -56,6 +56,7 @@ export class LmvzInput extends ReactiveControllerHost {
56
56
  max;
57
57
  step;
58
58
  form;
59
+ size = 'md';
59
60
  get error() {
60
61
  return this.errorFromProp || this.nativeError;
61
62
  }
@@ -150,9 +151,9 @@ export class LmvzInput extends ReactiveControllerHost {
150
151
  render() {
151
152
  const hasValue = Boolean(this.value);
152
153
  const shouldFloatLabel = hasValue || Boolean(this.placeholder);
153
- return (h("div", { key: 'b8c3aaccafb89725aaa157a72633c67ae8b4d58c', class: classNames('input-container', {
154
+ return (h("div", { key: '4be6846147fec950acad0c0cb8643bfa69233935', class: classNames('input-container', {
154
155
  'interaction-filled': hasValue,
155
- }) }, h("div", { key: '80261c486d3bfe61aa060d50e9a6774c961339a1', class: "input-wrapper" }, h("slot", { key: '6856dd64991251adc63d8064ed63e9cf7b1773a2', name: "before-input" }), h("div", { key: 'c975357079efef465c56fb50cbb404bd1cbe3fb1', class: "label-input-group" }, h("label", { key: '798417172f8411be97866edbffbd2bb98c308c69', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (h("span", { key: '9fd59f3d93c984304e6c8ae6531df82bc0057243', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), h("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 })), h("slot", { key: 'c774f03e704889b524f305c00d60c0902abdff5f', name: "after-input" })), h("div", { key: 'f513746541c71ce0d67c26eb220b54408fc3f136', id: this.helperId, role: "status" }, this.helperText || null), h("div", { key: '197683e55807bf100ca1543f5b84b14e910e721f', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
156
+ }) }, h("div", { key: 'ae9bf8ffd91b73a86c2ebd21af051efe26a1d5fd', class: "input-wrapper" }, h("slot", { key: '36b3f7d97a11296aeead44c4d8ab4f0f8edf62d1', name: "before-input" }), h("div", { key: '4320f461ffa908730cd898863f43644aa3677081', class: "label-input-group" }, h("label", { key: '1dd51cf16f064303fd9c5249cbe3a357c7515ddc', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (h("span", { key: '74bb8124b1126501201eb7c3361c6cf7f17dda5c', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), h("input", { key: '9cff77bea65c50331a6804d7039672bbe01e710c', 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 })), h("slot", { key: '689a3aa53e22f89173893adbc72eaf4953a2c7f6', name: "after-input" })), h("div", { key: 'd29b9ea209c138d0de09f71042f539a56ed4f9fa', id: this.helperId, role: "status" }, this.helperText || null), h("div", { key: '8be227367abadb0e001d9475f0793aed31dbb64a', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
156
157
  }
157
158
  static get is() { return "lmvz-input"; }
158
159
  static get encapsulation() { return "scoped"; }
@@ -663,6 +664,36 @@ export class LmvzInput extends ReactiveControllerHost {
663
664
  "reflect": false,
664
665
  "attribute": "form"
665
666
  },
667
+ "size": {
668
+ "type": "string",
669
+ "mutable": false,
670
+ "complexType": {
671
+ "original": "Input.Size",
672
+ "resolved": "\"lg\" | \"md\" | \"sm\"",
673
+ "references": {
674
+ "Input": {
675
+ "location": "import",
676
+ "path": "../../api",
677
+ "id": "src/api/index.d.ts::Input",
678
+ "referenceLocation": "Input"
679
+ }
680
+ }
681
+ },
682
+ "required": false,
683
+ "optional": false,
684
+ "docs": {
685
+ "tags": [{
686
+ "name": "default",
687
+ "text": "'md'"
688
+ }],
689
+ "text": "Size variant of the input"
690
+ },
691
+ "getter": false,
692
+ "setter": false,
693
+ "reflect": true,
694
+ "attribute": "size",
695
+ "defaultValue": "'md'"
696
+ },
666
697
  "error": {
667
698
  "type": "boolean",
668
699
  "mutable": false,
@@ -0,0 +1,50 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: flex-start;
5
+ width: 100%;
6
+
7
+ padding: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)) var(--lmvz-dimension-12-14, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
8
+ gap: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
9
+
10
+ border: var(--lmvz-semantic-border-width-default, 1px) solid;
11
+ border-radius: var(--lmvz-semantic-border-radius-md, 6px);
12
+
13
+ font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
14
+ Router);
15
+ }
16
+
17
+ /* neutral maps to status-active tokens to preserve Figma's "neutral" naming convention;
18
+ the design system token uses "active" for the neutral/informational status colour role */
19
+
20
+ :host([type='neutral']) {
21
+ background-color: var(--lmvz-semantic-color-status-active, #f6fbfe);
22
+ border-color: var(--lmvz-semantic-color-status-on-active-subtle, #c1e6fa);
23
+ color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
24
+ }
25
+
26
+ :host([type='warning']) {
27
+ background-color: var(--lmvz-semantic-color-status-warning, #fffbf0);
28
+ border-color: var(--lmvz-semantic-color-status-on-warning-subtle, #ffdf75);
29
+ color: var(--lmvz-semantic-color-status-on-warning, #7a5e00);
30
+ }
31
+
32
+ .leading-icon {
33
+ flex-shrink: 0;
34
+ display: flex;
35
+ align-items: flex-start;
36
+ /* 2px raw value — parity row TM-1: icon optical alignment offset; no token exists for
37
+ sub-4px micro-adjustments in the current token scale */
38
+ padding-top: 2px;
39
+ width: var(--lmvz-component-icon-size-md, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
40
+ height: var(--lmvz-component-icon-size-md, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
41
+ }
42
+
43
+ .leading-icon svg {
44
+ width: 100%;
45
+ height: 100%;
46
+ }
47
+
48
+ .message {
49
+ flex: 1;
50
+ }