@lmvz-ds/components 0.23.0 → 0.25.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 (116) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/{index-lW-SEvL7.js → index-BCFBLj0e.js} +1 -1
  3. package/cjs/lmvz-action.cjs.entry.js +1 -1
  4. package/cjs/lmvz-button_3.cjs.entry.js +5 -5
  5. package/cjs/lmvz-card.cjs.entry.js +2 -2
  6. package/cjs/lmvz-checkbox.cjs.entry.js +5 -5
  7. package/cjs/lmvz-chip.cjs.entry.js +3 -3
  8. package/cjs/lmvz-components.cjs.js +3 -3
  9. package/cjs/lmvz-header_2.cjs.entry.js +2 -2
  10. package/cjs/lmvz-input.cjs.entry.js +3 -3
  11. package/cjs/lmvz-menuitem.cjs.entry.js +3 -3
  12. package/cjs/lmvz-modal.cjs.entry.js +5 -5
  13. package/cjs/lmvz-radio.cjs.entry.js +334 -0
  14. package/cjs/lmvz-select.cjs.entry.js +4 -4
  15. package/cjs/lmvz-toggle.cjs.entry.js +7 -5
  16. package/cjs/loader.cjs.js +2 -2
  17. package/cjs/{reactive-controller-host-BOFg4vL-.js → reactive-controller-host-DrtMkMd7.js} +1 -1
  18. package/collection/collection-manifest.json +2 -1
  19. package/collection/components/lmvz-button/lmvz-button.css +35 -27
  20. package/collection/components/lmvz-button/lmvz-button.js +1 -1
  21. package/collection/components/lmvz-button-group/lmvz-button-group.css +1 -1
  22. package/collection/components/lmvz-card/lmvz-card.css +35 -27
  23. package/collection/components/lmvz-checkbox/lmvz-checkbox.css +20 -19
  24. package/collection/components/lmvz-checkbox/lmvz-checkbox.js +2 -2
  25. package/collection/components/lmvz-chip/lmvz-chip.css +3 -3
  26. package/collection/components/lmvz-input/lmvz-input.css +17 -17
  27. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +14 -10
  28. package/collection/components/lmvz-modal/lmvz-modal.css +40 -18
  29. package/collection/components/lmvz-modal/lmvz-modal.js +2 -2
  30. package/collection/components/lmvz-radio/lmvz-radio.css +182 -0
  31. package/collection/components/lmvz-radio/lmvz-radio.js +487 -0
  32. package/collection/components/lmvz-select/lmvz-select.css +15 -11
  33. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  34. package/collection/components/lmvz-toggle/lmvz-toggle.css +16 -17
  35. package/collection/components/lmvz-toggle/lmvz-toggle.js +3 -3
  36. package/collection/integration/header-integration/header-integration.js +1 -1
  37. package/collection/styles/fragments/_focus-within.css +13 -0
  38. package/collection/utils/radio/radio-group-controller.js +160 -0
  39. package/components/index.d.ts +2 -0
  40. package/components/index.d.ts.bak +2 -0
  41. package/components/index.js +1 -1
  42. package/components/lmvz-action.js +1 -1
  43. package/components/lmvz-button-group.js +1 -1
  44. package/components/lmvz-button.js +1 -1
  45. package/components/lmvz-card.js +1 -1
  46. package/components/lmvz-checkbox.js +1 -1
  47. package/components/lmvz-chip.js +1 -1
  48. package/components/lmvz-header.js +1 -1
  49. package/components/lmvz-icon.js +1 -1
  50. package/components/lmvz-input.js +1 -1
  51. package/components/lmvz-menuitem.js +1 -1
  52. package/components/lmvz-modal.js +1 -1
  53. package/components/lmvz-radio.d.ts +11 -0
  54. package/components/lmvz-radio.d.ts.bak +11 -0
  55. package/components/lmvz-radio.js +1 -0
  56. package/components/lmvz-select.js +1 -1
  57. package/components/lmvz-toggle.js +1 -1
  58. package/components/p-Bb-kEOmU.js +1 -0
  59. package/components/{p-Cg2XX_J-.js → p-CCcoDnH-.js} +1 -1
  60. package/components/{p-slgmfnHm.js → p-CNmHnJ1D.js} +1 -1
  61. package/components/p-vUYpZZoR.js +1 -0
  62. package/esm/{index-Aa_425iY.js → index-CKYszC64.js} +1 -1
  63. package/esm/lmvz-action.entry.js +1 -1
  64. package/esm/lmvz-button_3.entry.js +5 -5
  65. package/esm/lmvz-card.entry.js +2 -2
  66. package/esm/lmvz-checkbox.entry.js +5 -5
  67. package/esm/lmvz-chip.entry.js +3 -3
  68. package/esm/lmvz-components.js +4 -4
  69. package/esm/lmvz-header_2.entry.js +2 -2
  70. package/esm/lmvz-input.entry.js +3 -3
  71. package/esm/lmvz-menuitem.entry.js +3 -3
  72. package/esm/lmvz-modal.entry.js +5 -5
  73. package/esm/lmvz-radio.entry.js +332 -0
  74. package/esm/lmvz-select.entry.js +4 -4
  75. package/esm/lmvz-toggle.entry.js +7 -5
  76. package/esm/loader.js +3 -3
  77. package/esm/{reactive-controller-host-CroMsXdS.js → reactive-controller-host-ZrGf1F2-.js} +1 -1
  78. package/hydrate/index.js +372 -20
  79. package/hydrate/index.mjs +372 -20
  80. package/lmvz-components/lmvz-components.esm.js +1 -1
  81. package/lmvz-components/{p-d1dacf7e.entry.js → p-01aeca60.entry.js} +1 -1
  82. package/lmvz-components/p-0dced359.entry.js +1 -0
  83. package/lmvz-components/{p-f6d1d9df.entry.js → p-2044a9ac.entry.js} +1 -1
  84. package/lmvz-components/p-3c2adbb4.entry.js +1 -0
  85. package/lmvz-components/p-3df070b0.entry.js +1 -0
  86. package/lmvz-components/p-758078db.entry.js +1 -0
  87. package/lmvz-components/p-90f5a19d.entry.js +1 -0
  88. package/lmvz-components/{p-BRl6zKXT.js → p-CwX1wKkM.js} +1 -1
  89. package/lmvz-components/p-acfeae08.entry.js +1 -0
  90. package/lmvz-components/p-c01a6c70.entry.js +1 -0
  91. package/lmvz-components/p-e1eaa7a2.entry.js +1 -0
  92. package/lmvz-components/p-e23d0054.entry.js +1 -0
  93. package/lmvz-components/p-fe607f10.entry.js +1 -0
  94. package/manifest.json +416 -3
  95. package/package.json +5 -1
  96. package/types/components/lmvz-radio/lmvz-radio.d.ts +42 -0
  97. package/types/components.d.ts +176 -0
  98. package/types/stencil-public-runtime.d.ts +1 -0
  99. package/types/utils/radio/radio-group-controller.d.ts +26 -0
  100. package/assets/icons/checkmark.svg +0 -4
  101. package/assets/icons/close-sm.svg +0 -3
  102. package/collection/assets/icons/checkmark.svg +0 -4
  103. package/collection/assets/icons/close-sm.svg +0 -3
  104. package/components/p-DSvYtVoD.js +0 -1
  105. package/components/p-K_EPq-vy.js +0 -1
  106. package/lmvz-components/p-05896617.entry.js +0 -1
  107. package/lmvz-components/p-267344a7.entry.js +0 -1
  108. package/lmvz-components/p-2b09b8bc.entry.js +0 -1
  109. package/lmvz-components/p-3846ba08.entry.js +0 -1
  110. package/lmvz-components/p-3df92762.entry.js +0 -1
  111. package/lmvz-components/p-5f550b9f.entry.js +0 -1
  112. package/lmvz-components/p-8e43fabb.entry.js +0 -1
  113. package/lmvz-components/p-f7f32879.entry.js +0 -1
  114. package/lmvz-components/p-fa4e00cf.entry.js +0 -1
  115. /package/components/{p-CK8cAKcB.js → p-DYr7Jc0V.js} +0 -0
  116. /package/lmvz-components/{p-Aa_425iY.js → p-CKYszC64.js} +0 -0
@@ -5,31 +5,35 @@
5
5
  * Important: Always import this file _before_ layering your own styles!
6
6
  */
7
7
  @layer lmvz-ds.theme {
8
+ /**
9
+ * !CAUTION: Changes to this file have to be manually synced into `/packages/styles/src/no-transform/router-font.css`
10
+ */
11
+
8
12
  @font-face {
9
13
  font-family: Router;
10
14
  src:
15
+ local('RouterBook-Regular'),
11
16
  local('Router-Book'),
12
- url('/assets/fonts/Router-Book.woff') format('woff'),
13
- local('Router');
14
- font-weight: 400 normal;
17
+ url('/assets/fonts/Router-Book.woff') format('woff');
18
+ font-weight: 400;
15
19
  }
16
20
 
17
21
  @font-face {
18
22
  font-family: Router;
19
23
  src:
24
+ local('RouterMedium-Regular'),
20
25
  local('Router-Medium'),
21
- url('/assets/fonts/Router-Medium.woff') format('woff'),
22
- local('Router');
26
+ url('/assets/fonts/Router-Medium.woff') format('woff');
23
27
  font-weight: 500;
24
28
  }
25
29
 
26
30
  @font-face {
27
31
  font-family: Router;
28
32
  src:
33
+ local('RouterBold-Regular'),
29
34
  local('Router-Bold'),
30
- url('/assets/fonts/Router-Bold.woff') format('woff'),
31
- local('Router');
32
- font-weight: 700 bold;
35
+ url('/assets/fonts/Router-Bold.woff') format('woff');
36
+ font-weight: 700;
33
37
  }
34
38
 
35
39
  }
@@ -58,10 +62,11 @@ h6 {
58
62
  button {
59
63
  /* secondary styling is default, primary is explicit */
60
64
  --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-secondary, #000000));
61
- --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)));
62
- --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)));
63
- --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
64
- --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4
65
+ --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
66
+ --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
67
+ --lmvz-button-gap: var(--lmvz-component-input-gap-md, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
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.4
65
70
  Router);
66
71
  --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px);
67
72
  --lmvz-button-border-width: 0;
@@ -74,6 +79,7 @@ h6 {
74
79
  gap: var(--lmvz-button-gap);
75
80
  padding-block: var(--lmvz-button-padding-block);
76
81
  padding-inline: var(--lmvz-button-padding-inline);
82
+ min-height: var(--lmvz-button-min-height);
77
83
  border-radius: var(--lmvz-button-radius);
78
84
  border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color);
79
85
  background-color: var(--lmvz-button-background);
@@ -96,8 +102,8 @@ button > * {
96
102
  }
97
103
 
98
104
  button:focus-visible {
99
- outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4);
100
- outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
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));
101
107
  }
102
108
 
103
109
  button:is([disabled], .disabled) {
@@ -129,12 +135,10 @@ button.primary {
129
135
 
130
136
  button.primary:not([disabled], .disabled):hover {
131
137
  --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e);
132
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7);
133
138
  }
134
139
 
135
140
  button.primary:not([disabled], .disabled):active {
136
141
  --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454);
137
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
138
142
  }
139
143
 
140
144
  button.secondary {
@@ -146,40 +150,44 @@ button.secondary {
146
150
 
147
151
  button.secondary:not([disabled], .disabled):hover {
148
152
  --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0);
149
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7);
153
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary-hover, #000000);
150
154
  }
151
155
 
152
156
  button.secondary:not([disabled], .disabled):active {
153
157
  --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4);
154
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
158
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary-active, #000000);
155
159
  }
156
160
 
157
161
  button.tertiary {
158
162
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff);
159
- --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454);
163
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #000000);
160
164
  }
161
165
 
162
166
  button.tertiary:not([disabled], .disabled):hover {
163
167
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
168
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000);
164
169
  }
165
170
 
166
171
  button.tertiary:not([disabled], .disabled):active {
167
172
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0);
173
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000);
168
174
  }
169
175
 
170
176
  button.small {
171
- --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
172
- --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
173
- --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
174
- --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4
177
+ --lmvz-button-padding-inline: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
178
+ --lmvz-button-padding-block: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
179
+ --lmvz-button-gap: var(--lmvz-component-input-gap-sm, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
180
+ --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.4
175
182
  Router);
176
183
  }
177
184
 
178
185
  button.large {
179
- --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem));
180
- --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem));
181
- --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
182
- --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4
186
+ --lmvz-button-padding-inline: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
187
+ --lmvz-button-padding-block: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
188
+ --lmvz-button-gap: var(--lmvz-component-input-gap-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
189
+ --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.4
183
191
  Router);
184
192
  }
185
193
 
@@ -88,7 +88,7 @@ export class LmvzButton extends ReactiveControllerHost {
88
88
  };
89
89
  render() {
90
90
  this.renderHiddenButton();
91
- return (h(Host, { key: '8196de85afc3878c6f38e582d7c031f5d19bcd36', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: '226f2f4ddbf861a8aed66d72c1980aa713e667f3', ref: (e) => (this.validationEl = e), disabled: this.disabled, type: this.type, class: classNames(this.variant ?? 'secondary', { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: '436ecc98fc7d7350c67d01d13e5fd4566a238b03' }))));
91
+ return (h(Host, { key: '8196de85afc3878c6f38e582d7c031f5d19bcd36', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: '8d73f979fa227de22a03403a2a3938684911060a', ref: (e) => (this.validationEl = e), part: "button", disabled: this.disabled, type: this.type, class: classNames(this.variant ?? 'secondary', { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: '18e91a2f94ba0d7e5cf13150191003e2f0b2a03a' }))));
92
92
  }
93
93
  static get is() { return "lmvz-button"; }
94
94
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  :host {
2
2
  display: flex;
3
3
  justify-content: flex-end;
4
- gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
4
+ gap: var(--lmvz-component-input-gap-md, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
5
5
  font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4
6
6
  Router);
7
7
 
@@ -5,31 +5,35 @@
5
5
  * Important: Always import this file _before_ layering your own styles!
6
6
  */
7
7
  @layer lmvz-ds.theme {
8
+ /**
9
+ * !CAUTION: Changes to this file have to be manually synced into `/packages/styles/src/no-transform/router-font.css`
10
+ */
11
+
8
12
  @font-face {
9
13
  font-family: Router;
10
14
  src:
15
+ local('RouterBook-Regular'),
11
16
  local('Router-Book'),
12
- url('/assets/fonts/Router-Book.woff') format('woff'),
13
- local('Router');
14
- font-weight: 400 normal;
17
+ url('/assets/fonts/Router-Book.woff') format('woff');
18
+ font-weight: 400;
15
19
  }
16
20
 
17
21
  @font-face {
18
22
  font-family: Router;
19
23
  src:
24
+ local('RouterMedium-Regular'),
20
25
  local('Router-Medium'),
21
- url('/assets/fonts/Router-Medium.woff') format('woff'),
22
- local('Router');
26
+ url('/assets/fonts/Router-Medium.woff') format('woff');
23
27
  font-weight: 500;
24
28
  }
25
29
 
26
30
  @font-face {
27
31
  font-family: Router;
28
32
  src:
33
+ local('RouterBold-Regular'),
29
34
  local('Router-Bold'),
30
- url('/assets/fonts/Router-Bold.woff') format('woff'),
31
- local('Router');
32
- font-weight: 700 bold;
35
+ url('/assets/fonts/Router-Bold.woff') format('woff');
36
+ font-weight: 700;
33
37
  }
34
38
 
35
39
  }
@@ -59,10 +63,11 @@ h6 {
59
63
  button {
60
64
  /* secondary styling is default, primary is explicit */
61
65
  --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-secondary, #000000));
62
- --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)));
63
- --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)));
64
- --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
65
- --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4
66
+ --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
67
+ --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
68
+ --lmvz-button-gap: var(--lmvz-component-input-gap-md, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
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.4
66
71
  Router);
67
72
  --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px);
68
73
  --lmvz-button-border-width: 0;
@@ -75,6 +80,7 @@ h6 {
75
80
  gap: var(--lmvz-button-gap);
76
81
  padding-block: var(--lmvz-button-padding-block);
77
82
  padding-inline: var(--lmvz-button-padding-inline);
83
+ min-height: var(--lmvz-button-min-height);
78
84
  border-radius: var(--lmvz-button-radius);
79
85
  border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color);
80
86
  background-color: var(--lmvz-button-background);
@@ -97,8 +103,8 @@ button > * {
97
103
  }
98
104
 
99
105
  button:focus-visible {
100
- outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-on-active, #0e7ab4);
101
- outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
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));
102
108
  }
103
109
 
104
110
  button:is([disabled], .disabled) {
@@ -130,12 +136,10 @@ button.primary {
130
136
 
131
137
  button.primary:not([disabled], .disabled):hover {
132
138
  --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e);
133
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7);
134
139
  }
135
140
 
136
141
  button.primary:not([disabled], .disabled):active {
137
142
  --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454);
138
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
139
143
  }
140
144
 
141
145
  button.secondary {
@@ -147,40 +151,44 @@ button.secondary {
147
151
 
148
152
  button.secondary:not([disabled], .disabled):hover {
149
153
  --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0);
150
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7);
154
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary-hover, #000000);
151
155
  }
152
156
 
153
157
  button.secondary:not([disabled], .disabled):active {
154
158
  --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4);
155
- --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
159
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary-active, #000000);
156
160
  }
157
161
 
158
162
  button.tertiary {
159
163
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff);
160
- --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454);
164
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #000000);
161
165
  }
162
166
 
163
167
  button.tertiary:not([disabled], .disabled):hover {
164
168
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
169
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000);
165
170
  }
166
171
 
167
172
  button.tertiary:not([disabled], .disabled):active {
168
173
  --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0);
174
+ --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000);
169
175
  }
170
176
 
171
177
  button.small {
172
- --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
173
- --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
174
- --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
175
- --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4
178
+ --lmvz-button-padding-inline: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
179
+ --lmvz-button-padding-block: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
180
+ --lmvz-button-gap: var(--lmvz-component-input-gap-sm, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
181
+ --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.4
176
183
  Router);
177
184
  }
178
185
 
179
186
  button.large {
180
- --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem));
181
- --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem));
182
- --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
183
- --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4
187
+ --lmvz-button-padding-inline: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
188
+ --lmvz-button-padding-block: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
189
+ --lmvz-button-gap: var(--lmvz-component-input-gap-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
190
+ --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.4
184
192
  Router);
185
193
  }
186
194
 
@@ -5,31 +5,35 @@
5
5
  * Important: Always import this file _before_ layering your own styles!
6
6
  */
7
7
  @layer lmvz-ds.theme {
8
+ /**
9
+ * !CAUTION: Changes to this file have to be manually synced into `/packages/styles/src/no-transform/router-font.css`
10
+ */
11
+
8
12
  @font-face {
9
13
  font-family: Router;
10
14
  src:
15
+ local('RouterBook-Regular'),
11
16
  local('Router-Book'),
12
- url('/assets/fonts/Router-Book.woff') format('woff'),
13
- local('Router');
14
- font-weight: 400 normal;
17
+ url('/assets/fonts/Router-Book.woff') format('woff');
18
+ font-weight: 400;
15
19
  }
16
20
 
17
21
  @font-face {
18
22
  font-family: Router;
19
23
  src:
24
+ local('RouterMedium-Regular'),
20
25
  local('Router-Medium'),
21
- url('/assets/fonts/Router-Medium.woff') format('woff'),
22
- local('Router');
26
+ url('/assets/fonts/Router-Medium.woff') format('woff');
23
27
  font-weight: 500;
24
28
  }
25
29
 
26
30
  @font-face {
27
31
  font-family: Router;
28
32
  src:
33
+ local('RouterBold-Regular'),
29
34
  local('Router-Bold'),
30
- url('/assets/fonts/Router-Bold.woff') format('woff'),
31
- local('Router');
32
- font-weight: 700 bold;
35
+ url('/assets/fonts/Router-Bold.woff') format('woff');
36
+ font-weight: 700;
33
37
  }
34
38
 
35
39
  }
@@ -46,7 +50,7 @@
46
50
  --checkbox-border-color-error: var(--lmvz-semantic-color-status-on-danger, #e52a31);
47
51
 
48
52
  --checkbox-wrapper-bg-hover: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
49
- --checkbox-wrapper-bg-checked: var(--lmvz-semantic-color-status-active, #f1f9fe);
53
+ --checkbox-wrapper-bg-checked: var(--lmvz-semantic-color-status-active, #f6fbfe);
50
54
 
51
55
  --checkbox-ripple-bg: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0);
52
56
 
@@ -54,7 +58,7 @@
54
58
 
55
59
  --checkbox-label-color: var(--lmvz-semantic-color-on-surface-primary, #000000);
56
60
  --checkbox-label-color-checked: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
57
- --checkbox-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #7a7a7a);
61
+ --checkbox-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #545454);
58
62
  --checkbox-error-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
59
63
  --checkbox-focus-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
60
64
 
@@ -119,14 +123,14 @@ label {
119
123
  transition: color var(--checkbox-duration) var(--checkbox-easing);
120
124
  }
121
125
  .helper-text {
122
- font: var(--lmvz-typography-body-sm, 400 clamp(0.75rem, 0.73rem + 0.06vw, 0.81rem) / 1.4
126
+ font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.4
123
127
  Router);
124
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 */
125
129
  color: var(--checkbox-helper-color);
126
130
  margin-block-start: 2px;
127
131
  }
128
132
  .error-text {
129
- font: var(--lmvz-typography-body-sm, 400 clamp(0.75rem, 0.73rem + 0.06vw, 0.81rem) / 1.4
133
+ font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.4
130
134
  Router);
131
135
  color: var(--checkbox-error-color);
132
136
  display: block;
@@ -172,12 +176,9 @@ label {
172
176
  :host([disabled]) input {
173
177
  cursor: not-allowed;
174
178
  }
175
- /* Focus ring, applied via sibling combinator on the native input */
176
- input:focus-visible ~ .box {
177
- outline: 2px solid var(--checkbox-focus-color);
178
- outline-offset: 2px;
179
- /* box-shadow: 0 0 0 3px rgba(15, 138, 204, 0.2); TODO: no design token available for focus shadow color/spread */
180
- box-shadow: 0 var(--lmvz-semantic-shadow-l1-1-position-y, 2px) 0 var(--lmvz-semantic-shadow-l1-1-blur, 4px) var(--lmvz-semantic-color-shadow-l1-colored, rgba(175, 223, 249, 0.42));
179
+ :host(:focus-within) .pill {
180
+ outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
181
+ outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
181
182
  }
182
183
  /* Forced Colors / Windows High Contrast */
183
184
  @media (forced-colors: active) {
@@ -200,7 +201,7 @@ input:focus-visible ~ .box {
200
201
  color: HighlightText;
201
202
  }
202
203
 
203
- input:focus-visible ~ .box {
204
+ :host(:focus-within) .pill {
204
205
  outline-color: Highlight;
205
206
  box-shadow: none;
206
207
  }
@@ -1,6 +1,6 @@
1
+ import checkmark from "@lmvz-ds/icons/assets/checkmark.svg";
1
2
  import { toValidSvgStringWithFallback } from "@lmvz-ds/lib-ts/validation/svg.js";
2
3
  import { h, Host } from "@stencil/core";
3
- import checkmark from "../../assets/icons/checkmark.svg";
4
4
  import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
5
5
  import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
6
6
  const CHECKMARK_SVG = toValidSvgStringWithFallback(checkmark);
@@ -83,7 +83,7 @@ export class LmvzCheckbox extends ReactiveControllerHost {
83
83
  this.lmvzChange.emit(this.checked);
84
84
  };
85
85
  render() {
86
- return (h(Host, { key: '70201fa49465f1e29b98bb251ea254be0293b1df' }, h("div", { key: 'dfeb788e3e2d9a8329e7798954c744eee616692e', class: "pill" }, h("input", { key: '79fefaa297a5fbbb1b7f180c7cf4cccf8650a1f0', type: "checkbox", id: this.checkboxId, checked: this.checkedState, disabled: this.disabled, required: this.required, "aria-required": this.required ? 'true' : 'false', "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": this.ariaDescribedBy, "aria-errormessage": this.error && this.errorId ? this.errorId : undefined, ref: (el) => (this.nativeInput = el), onChange: this.handleChange, autoFocus: this.autofocus }), h("span", { key: '8808a026274979678515b3e750065af38d62fff9', class: "box", "aria-hidden": "true" }, this.checkedState && h("span", { key: '861c08fb2a5cc6f24d3ae0a9f28cb6d2f51beda4', class: "indicator", innerHTML: CHECKMARK_SVG })), h("span", { key: '6dc36656d76bd3a6816553b4dcbdbea2c9bd2b0f', class: "content" }, h("label", { key: 'c343c4261e2eb231925d0f3ca0a83f9f3cdd0b9b', htmlFor: this.checkboxId }, this.label), this.helperText && (h("span", { key: '8473ed19adfe975b715a5e0b78c949c6b11de99e', class: "helper-text", id: this.helperId, role: "status" }, this.helperText)))), this.errorMessage && (h("span", { key: 'e934cec1cc622908188cf9090e24988e5df45799', class: "error-text", id: this.errorId, role: "alert" }, this.errorMessage))));
86
+ return (h(Host, { key: '158efacac5c28a18003149d4acb0d1cf5385cef4' }, h("div", { key: '5deaf853f9c465b70b7e5472579c5d5212105c34', class: "pill" }, h("input", { key: '7e8da452d41cd48293569ec60dad0585ff3290f1', type: "checkbox", id: this.checkboxId, checked: this.checkedState, disabled: this.disabled, required: this.required, "aria-required": this.required ? 'true' : 'false', "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": this.ariaDescribedBy, "aria-errormessage": this.error && this.errorId ? this.errorId : undefined, ref: (el) => (this.nativeInput = el), onChange: this.handleChange, autoFocus: this.autofocus }), h("span", { key: 'd1ee72be8e3fc2b4e70ff64b70bfcec93f08f063', class: "box", "aria-hidden": "true" }, this.checkedState && h("span", { key: '73e123aa8c91e9098b4d8bbd48bbc7bae6c12383', class: "indicator", innerHTML: CHECKMARK_SVG })), h("span", { key: '2a161e6db9e792dca1fa24c1562bd0b79d62235b', class: "content" }, h("label", { key: 'fb38792095bf6da433867472d866d6700db45dac', htmlFor: this.checkboxId }, this.label), this.helperText && (h("span", { key: 'b8c16fc4782f67e1dca82329d081943a7d75a524', class: "helper-text", id: this.helperId, role: "status" }, this.helperText)))), this.errorMessage && (h("span", { key: '87d6940217d379777e26c578cff761dcfd96e79a', class: "error-text", id: this.errorId, role: "alert" }, this.errorMessage))));
87
87
  }
88
88
  static get is() { return "lmvz-checkbox"; }
89
89
  static get encapsulation() { return "scoped"; }
@@ -7,7 +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.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.4
10
+ font: var(--lmvz-typography-body-xs-strong, 500 clamp(0.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.4
11
11
  Router);
12
12
  background-color: var(--lmvz-chip-background-color);
13
13
  color: var(--lmvz-chip-foreground-color);
@@ -34,7 +34,7 @@
34
34
  :host([size='small']) {
35
35
  padding-block: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem));
36
36
  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.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.4
37
+ font: var(--lmvz-typography-body-2xs-strong, 500 clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem) / 1.4
38
38
  Router);
39
39
  gap: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem));
40
40
  }
@@ -57,7 +57,7 @@
57
57
 
58
58
  :host([type='active']) {
59
59
  --lmvz-chip-border-color: var(--lmvz-semantic-color-status-on-active-subtle, #c1e6fa);
60
- --lmvz-chip-background-color: var(--lmvz-semantic-color-status-active, #f1f9fe);
60
+ --lmvz-chip-background-color: var(--lmvz-semantic-color-status-active, #f6fbfe);
61
61
  --lmvz-chip-foreground-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
62
62
  }
63
63
 
@@ -5,31 +5,35 @@
5
5
  * Important: Always import this file _before_ layering your own styles!
6
6
  */
7
7
  @layer lmvz-ds.theme {
8
+ /**
9
+ * !CAUTION: Changes to this file have to be manually synced into `/packages/styles/src/no-transform/router-font.css`
10
+ */
11
+
8
12
  @font-face {
9
13
  font-family: Router;
10
14
  src:
15
+ local('RouterBook-Regular'),
11
16
  local('Router-Book'),
12
- url('/assets/fonts/Router-Book.woff') format('woff'),
13
- local('Router');
14
- font-weight: 400 normal;
17
+ url('/assets/fonts/Router-Book.woff') format('woff');
18
+ font-weight: 400;
15
19
  }
16
20
 
17
21
  @font-face {
18
22
  font-family: Router;
19
23
  src:
24
+ local('RouterMedium-Regular'),
20
25
  local('Router-Medium'),
21
- url('/assets/fonts/Router-Medium.woff') format('woff'),
22
- local('Router');
26
+ url('/assets/fonts/Router-Medium.woff') format('woff');
23
27
  font-weight: 500;
24
28
  }
25
29
 
26
30
  @font-face {
27
31
  font-family: Router;
28
32
  src:
33
+ local('RouterBold-Regular'),
29
34
  local('Router-Bold'),
30
- url('/assets/fonts/Router-Bold.woff') format('woff'),
31
- local('Router');
32
- font-weight: 700 bold;
35
+ url('/assets/fonts/Router-Bold.woff') format('woff');
36
+ font-weight: 700;
33
37
  }
34
38
 
35
39
  }
@@ -46,9 +50,9 @@
46
50
  --input-height: 48px; /* From Figma input-size=48 */
47
51
  --input-padding-x: 16px;
48
52
 
49
- --label-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a);
53
+ --label-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454);
50
54
  --input-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000);
51
- --helper-text-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a);
55
+ --helper-text-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454);
52
56
  --error-text-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
53
57
 
54
58
  --label-floating-scale: 0.85; /* 14px -> 12px approx */
@@ -83,13 +87,9 @@
83
87
  pointer-events: none;
84
88
  }
85
89
  .input-container:focus-within .input-wrapper {
86
- border-color: var(--input-border-color-focus);
87
- outline: 2px solid var(--input-border-color-focus);
88
- outline-offset: 2px;
89
- }
90
- /* Enhanced focus indicator for keyboard users */
91
- .input-container:has(input:focus-visible) .input-wrapper {
92
- box-shadow: 0 0 0 3px rgb(0 86 214 / 20%);
90
+ /* border-color: var(--input-border-color-focus); */
91
+ outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
92
+ outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
93
93
  }
94
94
  /* Error State */
95
95
  :host([error]) .input-wrapper {
@@ -5,31 +5,35 @@
5
5
  * Important: Always import this file _before_ layering your own styles!
6
6
  */
7
7
  @layer lmvz-ds.theme {
8
+ /**
9
+ * !CAUTION: Changes to this file have to be manually synced into `/packages/styles/src/no-transform/router-font.css`
10
+ */
11
+
8
12
  @font-face {
9
13
  font-family: Router;
10
14
  src:
15
+ local('RouterBook-Regular'),
11
16
  local('Router-Book'),
12
- url('/assets/fonts/Router-Book.woff') format('woff'),
13
- local('Router');
14
- font-weight: 400 normal;
17
+ url('/assets/fonts/Router-Book.woff') format('woff');
18
+ font-weight: 400;
15
19
  }
16
20
 
17
21
  @font-face {
18
22
  font-family: Router;
19
23
  src:
24
+ local('RouterMedium-Regular'),
20
25
  local('Router-Medium'),
21
- url('/assets/fonts/Router-Medium.woff') format('woff'),
22
- local('Router');
26
+ url('/assets/fonts/Router-Medium.woff') format('woff');
23
27
  font-weight: 500;
24
28
  }
25
29
 
26
30
  @font-face {
27
31
  font-family: Router;
28
32
  src:
33
+ local('RouterBold-Regular'),
29
34
  local('Router-Bold'),
30
- url('/assets/fonts/Router-Bold.woff') format('woff'),
31
- local('Router');
32
- font-weight: 700 bold;
35
+ url('/assets/fonts/Router-Bold.woff') format('woff');
36
+ font-weight: 700;
33
37
  }
34
38
 
35
39
  }
@@ -45,7 +49,7 @@
45
49
  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));
46
50
  cursor: pointer;
47
51
 
48
- --lmvz-menuitem-color: var(--lmvz-semantic-color-int-on-tertiary, #545454);
52
+ --lmvz-menuitem-color: var(--lmvz-semantic-color-int-on-tertiary, #000000);
49
53
  --lmvz-menuitem-background: var(--lmvz-semantic-color-int-tertiary, #ffffff);
50
54
 
51
55
  background: var(--lmvz-menuitem-background);
@@ -62,6 +66,6 @@
62
66
  z-index: 1;
63
67
  }
64
68
  :host([aria-expanded='true']) {
65
- --lmvz-menuitem-background: var(--lmvz-semantic-color-status-active, #f1f9fe);
69
+ --lmvz-menuitem-background: var(--lmvz-semantic-color-status-active, #f6fbfe);
66
70
  --lmvz-menuitem-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
67
71
  }