@lmvz-ds/components 0.25.0 → 0.27.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.
- package/CHANGELOG.md +24 -0
- package/cjs/{reactive-controller-host-DrtMkMd7.js → aria-validation-controller-BMV2tv9-.js} +0 -41
- package/cjs/{ds.constants-DSnxZ3ia.js → ds.constants-8fh6ItAF.js} +1 -1
- package/cjs/index.cjs.js +196 -2
- package/cjs/list-keyboard-controller-CzZdPBeH.js +173 -0
- package/cjs/lmvz-button-group.cjs.entry.js +183 -0
- package/cjs/lmvz-button_2.cjs.entry.js +199 -0
- package/cjs/lmvz-card.cjs.entry.js +1 -1
- package/cjs/lmvz-checkbox.cjs.entry.js +8 -4
- package/cjs/lmvz-chip.cjs.entry.js +5 -4
- package/cjs/lmvz-components.cjs.js +1 -1
- package/cjs/lmvz-header_2.cjs.entry.js +7 -51
- package/cjs/lmvz-input.cjs.entry.js +3 -2
- package/cjs/lmvz-menuitem.cjs.entry.js +4 -3
- package/cjs/lmvz-modal.cjs.entry.js +4 -3
- package/cjs/lmvz-radio.cjs.entry.js +4 -3
- package/cjs/lmvz-select.cjs.entry.js +3 -2
- package/cjs/lmvz-snackbar.cjs.entry.js +83 -0
- package/cjs/lmvz-tab.cjs.entry.js +31 -0
- package/cjs/lmvz-tabs.cjs.entry.js +256 -0
- package/cjs/lmvz-toggle.cjs.entry.js +5 -4
- package/cjs/loader.cjs.js +1 -1
- package/cjs/reactive-controller-host-B_lZtcA6.js +43 -0
- package/collection/api/ds.constants.js +4 -1
- package/collection/collection-manifest.json +3 -0
- package/collection/components/lmvz-button/lmvz-button.css +6 -6
- package/collection/components/lmvz-button-group/lmvz-button-group.css +2 -2
- package/collection/components/lmvz-card/lmvz-card.css +9 -9
- package/collection/components/lmvz-checkbox/lmvz-checkbox.css +14 -12
- package/collection/components/lmvz-checkbox/lmvz-checkbox.js +4 -1
- package/collection/components/lmvz-chip/lmvz-chip.css +2 -2
- package/collection/components/lmvz-header/lmvz-header.js +3 -3
- package/collection/components/lmvz-icon/lmvz-icon.js +1 -1
- package/collection/components/lmvz-menuitem/lmvz-menuitem.css +1 -1
- package/collection/components/lmvz-modal/lmvz-modal.css +4 -16
- package/collection/components/lmvz-radio/lmvz-radio.css +4 -4
- package/collection/components/lmvz-snackbar/lmvz-snackbar.css +101 -0
- package/collection/components/lmvz-snackbar/lmvz-snackbar.js +266 -0
- package/collection/components/lmvz-snackbar/public.js +1 -0
- package/collection/components/lmvz-snackbar/snackbar-controller.js +194 -0
- package/collection/components/lmvz-tab/lmvz-tab.css +148 -0
- package/collection/components/lmvz-tab/lmvz-tab.js +125 -0
- package/collection/components/lmvz-tabs/lmvz-tabs.css +58 -0
- package/collection/components/lmvz-tabs/lmvz-tabs.js +399 -0
- package/collection/components/lmvz-toggle/lmvz-toggle.css +2 -2
- package/collection/components/lmvz-toggle/lmvz-toggle.js +1 -1
- package/collection/index.js +1 -0
- package/collection/integration/header-integration/header-integration.js +1 -1
- package/collection/utils/aria/list-keyboard-controller.js +151 -28
- package/components/index.d.ts +6 -0
- package/components/index.d.ts.bak +6 -0
- package/components/index.js +1 -1
- package/components/lmvz-action.js +1 -1
- package/components/lmvz-button-group.js +1 -1
- package/components/lmvz-button.js +1 -1
- package/components/lmvz-card.js +1 -1
- package/components/lmvz-checkbox.js +1 -1
- package/components/lmvz-chip.js +1 -1
- package/components/lmvz-header.js +1 -1
- package/components/lmvz-icon.js +1 -1
- package/components/lmvz-input.js +1 -1
- package/components/lmvz-menuitem.js +1 -1
- package/components/lmvz-modal.js +1 -1
- package/components/lmvz-radio.js +1 -1
- package/components/lmvz-select.js +1 -1
- package/components/lmvz-snackbar.d.ts +11 -0
- package/components/lmvz-snackbar.d.ts.bak +11 -0
- package/components/lmvz-snackbar.js +1 -0
- package/components/lmvz-tab.d.ts +11 -0
- package/components/lmvz-tab.d.ts.bak +11 -0
- package/components/lmvz-tab.js +1 -0
- package/components/lmvz-tabs.d.ts +11 -0
- package/components/lmvz-tabs.d.ts.bak +11 -0
- package/components/lmvz-tabs.js +1 -0
- package/components/lmvz-toggle.js +1 -1
- package/components/p-0P2Wb3pE.js +1 -0
- package/components/p-2VdcUIrr.js +1 -0
- package/components/p-BJEQw1Sz.js +1 -0
- package/components/{p-Bb-kEOmU.js → p-Cs7RCOHZ.js} +1 -1
- package/components/p-CtaMrBNE.js +1 -0
- package/components/p-DjvbwRyl.js +1 -0
- package/components/{p-DYr7Jc0V.js → p-c7OzBK8f.js} +1 -1
- package/esm/{reactive-controller-host-ZrGf1F2-.js → aria-validation-controller-D-KO0Asb.js} +1 -41
- package/esm/{ds.constants-Bmi89ll1.js → ds.constants-BOOwq5dE.js} +1 -1
- package/esm/index.js +198 -1
- package/esm/list-keyboard-controller-Coi8XfUH.js +171 -0
- package/esm/lmvz-button-group.entry.js +181 -0
- package/esm/lmvz-button_2.entry.js +196 -0
- package/esm/lmvz-card.entry.js +1 -1
- package/esm/lmvz-checkbox.entry.js +7 -3
- package/esm/lmvz-chip.entry.js +4 -3
- package/esm/lmvz-components.js +1 -1
- package/esm/lmvz-header_2.entry.js +6 -50
- package/esm/lmvz-input.entry.js +2 -1
- package/esm/lmvz-menuitem.entry.js +3 -2
- package/esm/lmvz-modal.entry.js +3 -2
- package/esm/lmvz-radio.entry.js +3 -2
- package/esm/lmvz-select.entry.js +2 -1
- package/esm/lmvz-snackbar.entry.js +81 -0
- package/esm/lmvz-tab.entry.js +29 -0
- package/esm/lmvz-tabs.entry.js +254 -0
- package/esm/lmvz-toggle.entry.js +4 -3
- package/esm/loader.js +1 -1
- package/esm/reactive-controller-host-FBuCCcFC.js +41 -0
- package/hydrate/index.js +565 -40
- package/hydrate/index.mjs +565 -40
- package/lmvz-components/index.esm.js +1 -1
- package/lmvz-components/lmvz-components.esm.js +1 -1
- package/lmvz-components/p-0a37e0f2.entry.js +1 -0
- package/lmvz-components/p-25f045b2.entry.js +1 -0
- package/lmvz-components/p-43b463bf.entry.js +1 -0
- package/lmvz-components/p-4bd71a3c.entry.js +1 -0
- package/lmvz-components/p-6484fbc6.entry.js +1 -0
- package/lmvz-components/p-6988c3ea.entry.js +1 -0
- package/lmvz-components/p-6de9981f.entry.js +1 -0
- package/lmvz-components/p-758dbb82.entry.js +1 -0
- package/lmvz-components/p-7b15cdce.entry.js +1 -0
- package/lmvz-components/p-8874ff19.entry.js +1 -0
- package/lmvz-components/p-BOOwq5dE.js +1 -0
- package/lmvz-components/p-CtaMrBNE.js +1 -0
- package/lmvz-components/p-FBuCCcFC.js +1 -0
- package/lmvz-components/p-a5c921dc.entry.js +1 -0
- package/lmvz-components/p-bb46a884.entry.js +1 -0
- package/lmvz-components/p-bd23eab3.entry.js +1 -0
- package/lmvz-components/p-c6228cee.entry.js +1 -0
- package/lmvz-components/p-da16ff58.entry.js +1 -0
- package/lmvz-components/p-hRb38wX6.js +1 -0
- package/manifest.json +858 -186
- package/package.json +13 -1
- package/types/api/ds.constants.d.ts +9 -1
- package/types/components/lmvz-checkbox/lmvz-checkbox.d.ts +1 -0
- package/types/components/lmvz-header/lmvz-header.d.ts +2 -2
- package/types/components/lmvz-snackbar/lmvz-snackbar.d.ts +21 -0
- package/types/components/lmvz-snackbar/public.d.ts +2 -0
- package/types/components/lmvz-snackbar/snackbar-controller.d.ts +32 -0
- package/types/components/lmvz-tab/lmvz-tab.d.ts +11 -0
- package/types/components/lmvz-tabs/lmvz-tabs.d.ts +43 -0
- package/types/components.d.ts +212 -1
- package/types/index.d.ts +1 -0
- package/types/utils/aria/list-keyboard-controller.d.ts +28 -5
- package/cjs/lmvz-button_3.cjs.entry.js +0 -375
- package/components/p-CCcoDnH-.js +0 -1
- package/components/p-CNmHnJ1D.js +0 -1
- package/components/p-vUYpZZoR.js +0 -1
- package/esm/lmvz-button_3.entry.js +0 -371
- package/lmvz-components/p-01aeca60.entry.js +0 -1
- package/lmvz-components/p-0dced359.entry.js +0 -1
- package/lmvz-components/p-2044a9ac.entry.js +0 -1
- package/lmvz-components/p-3c2adbb4.entry.js +0 -1
- package/lmvz-components/p-3df070b0.entry.js +0 -1
- package/lmvz-components/p-758078db.entry.js +0 -1
- package/lmvz-components/p-90f5a19d.entry.js +0 -1
- package/lmvz-components/p-Bmi89ll1.js +0 -1
- package/lmvz-components/p-CwX1wKkM.js +0 -1
- package/lmvz-components/p-acfeae08.entry.js +0 -1
- package/lmvz-components/p-c01a6c70.entry.js +0 -1
- package/lmvz-components/p-e1eaa7a2.entry.js +0 -1
- package/lmvz-components/p-e23d0054.entry.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: flex;
|
|
3
3
|
justify-content: flex-end;
|
|
4
|
-
gap: var(--lmvz-component-input-gap-md, clamp(0.
|
|
5
|
-
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.
|
|
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
6
|
Router);
|
|
7
7
|
|
|
8
8
|
/* TODO(LDHCID-135): Action wrapping threshold remains an assumption and currently follows intrinsic content width */
|
|
@@ -65,9 +65,9 @@ h6 {
|
|
|
65
65
|
--lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-secondary, #000000));
|
|
66
66
|
--lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)));
|
|
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
|
-
--lmvz-button-gap: var(--lmvz-component-input-gap-md, clamp(0.
|
|
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.
|
|
70
|
+
--lmvz-button-font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
71
71
|
Router);
|
|
72
72
|
--lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px);
|
|
73
73
|
--lmvz-button-border-width: 0;
|
|
@@ -177,18 +177,18 @@ button.tertiary:not([disabled], .disabled):active {
|
|
|
177
177
|
button.small {
|
|
178
178
|
--lmvz-button-padding-inline: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
179
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.
|
|
180
|
+
--lmvz-button-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
|
|
181
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.
|
|
182
|
+
--lmvz-button-font: var(--lmvz-typography-body-sm-strong, 500 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
|
|
183
183
|
Router);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
button.large {
|
|
187
187
|
--lmvz-button-padding-inline: var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
|
|
188
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(
|
|
189
|
+
--lmvz-button-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
|
|
190
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.
|
|
191
|
+
--lmvz-button-font: var(--lmvz-typography-body-lg-strong, 500 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.5
|
|
192
192
|
Router);
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -205,7 +205,7 @@ button.large {
|
|
|
205
205
|
}
|
|
206
206
|
* {
|
|
207
207
|
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.
|
|
208
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
209
209
|
Router);
|
|
210
210
|
}
|
|
211
211
|
.top {
|
|
@@ -233,7 +233,7 @@ button.large {
|
|
|
233
233
|
|
|
234
234
|
padding-bottom: var(--lmvz-global-s4, 4px);
|
|
235
235
|
overflow-wrap: break-word;
|
|
236
|
-
font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.
|
|
236
|
+
font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.4
|
|
237
237
|
Router);
|
|
238
238
|
}
|
|
239
239
|
.description {
|
|
@@ -243,7 +243,7 @@ button.large {
|
|
|
243
243
|
align-items: flex-start;
|
|
244
244
|
align-self: stretch;
|
|
245
245
|
white-space: pre-line;
|
|
246
|
-
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.
|
|
246
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
247
247
|
Router);
|
|
248
248
|
}
|
|
249
249
|
.image-wrapper {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
|
|
59
59
|
--checkbox-label-color: var(--lmvz-semantic-color-on-surface-primary, #000000);
|
|
60
60
|
--checkbox-label-color-checked: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
|
|
61
|
-
--checkbox-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #
|
|
61
|
+
--checkbox-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #7a7a7a);
|
|
62
62
|
--checkbox-error-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
|
|
63
63
|
--checkbox-focus-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
|
|
64
64
|
|
|
@@ -72,7 +72,6 @@
|
|
|
72
72
|
padding-block: var(--lmvz-dimension-2-8, clamp(0.13rem, 0.03rem + 0.39vw, 0.5rem));
|
|
73
73
|
padding-inline: var(--lmvz-dimension-4-10, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
|
|
74
74
|
border-radius: var(--lmvz-semantic-border-radius-round, 999px);
|
|
75
|
-
cursor: pointer;
|
|
76
75
|
/* WCAG 2.5.5 AAA: 44px minimum touch target */
|
|
77
76
|
/* min-block-size: 44px; */
|
|
78
77
|
text-decoration: none;
|
|
@@ -98,6 +97,7 @@ input {
|
|
|
98
97
|
border: var(--lmvz-semantic-border-width-default, 1px) solid var(--checkbox-border-color);
|
|
99
98
|
border-radius: var(--checkbox-border-radius);
|
|
100
99
|
color: var(--checkbox-checkmark-color);
|
|
100
|
+
cursor: pointer;
|
|
101
101
|
transition:
|
|
102
102
|
border-color var(--checkbox-duration) var(--checkbox-easing),
|
|
103
103
|
background-color var(--checkbox-duration) var(--checkbox-easing);
|
|
@@ -115,22 +115,24 @@ input {
|
|
|
115
115
|
flex-direction: column;
|
|
116
116
|
overflow-wrap: break-word;
|
|
117
117
|
min-width: 0;
|
|
118
|
+
cursor: pointer;
|
|
118
119
|
}
|
|
119
120
|
label {
|
|
120
|
-
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.
|
|
121
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
121
122
|
Router);
|
|
122
123
|
color: var(--checkbox-label-color);
|
|
123
124
|
transition: color var(--checkbox-duration) var(--checkbox-easing);
|
|
125
|
+
cursor: pointer;
|
|
124
126
|
}
|
|
125
127
|
.helper-text {
|
|
126
|
-
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.
|
|
128
|
+
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
|
|
127
129
|
Router);
|
|
128
130
|
/* 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 */
|
|
129
131
|
color: var(--checkbox-helper-color);
|
|
130
132
|
margin-block-start: 2px;
|
|
131
133
|
}
|
|
132
134
|
.error-text {
|
|
133
|
-
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.
|
|
135
|
+
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
|
|
134
136
|
Router);
|
|
135
137
|
color: var(--checkbox-error-color);
|
|
136
138
|
display: block;
|
|
@@ -165,16 +167,16 @@ label {
|
|
|
165
167
|
:host([error]) .helper-text {
|
|
166
168
|
color: var(--checkbox-error-color);
|
|
167
169
|
}
|
|
168
|
-
/* Disabled state */
|
|
169
170
|
:host([disabled]) {
|
|
170
171
|
opacity: var(--lmvz-component-input-disabled-opacity, 40%);
|
|
171
172
|
pointer-events: none;
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
|
|
174
|
+
input,
|
|
175
|
+
label,
|
|
176
|
+
.box,
|
|
177
|
+
.content {
|
|
178
|
+
cursor: not-allowed;
|
|
179
|
+
}
|
|
178
180
|
}
|
|
179
181
|
:host(:focus-within) .pill {
|
|
180
182
|
outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
|
|
@@ -82,8 +82,11 @@ export class LmvzCheckbox extends ReactiveControllerHost {
|
|
|
82
82
|
this.checked = input.checked;
|
|
83
83
|
this.lmvzChange.emit(this.checked);
|
|
84
84
|
};
|
|
85
|
+
retargetInnerClicks() {
|
|
86
|
+
this.nativeInput?.click();
|
|
87
|
+
}
|
|
85
88
|
render() {
|
|
86
|
-
return (h(Host, { key: '
|
|
89
|
+
return (h(Host, { key: 'cea4a962a76cab10c27adc6742fe0686b2ce6dbe' }, h("div", { key: '1addfd795587de85ecbc632fbeb45026a4e46050', class: "pill" }, h("input", { key: '8957359d0cc3f2c315badee7e20fcc81e85e0f00', 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: '400dbe9379ceb4aceeb431fe6060c82b41009cda', class: "box", "aria-hidden": "true" }, this.checkedState && h("span", { key: '9612093e65346b419ec8e4469fea7f00fe4c3ff4', class: "indicator", innerHTML: CHECKMARK_SVG })), h("span", { key: 'fd1136ea0726941bc400b8970f7cae4bb3b59363', class: "content" }, h("label", { key: 'a06deb2d4bc76efb884701a17e4a28420a99965c', htmlFor: this.checkboxId }, this.label), this.helperText && (h("span", { key: '2bd33f14062bedbb0609dff3ac7fbcee6fa16f21', onClick: this.retargetInnerClicks.bind(this), class: "helper-text", id: this.helperId, role: "status" }, this.helperText)))), this.errorMessage && (h("span", { key: 'ac4fcb6f0a2de16a17f0287e42b70b6339a50acc', class: "error-text", id: this.errorId, role: "alert" }, this.errorMessage))));
|
|
87
90
|
}
|
|
88
91
|
static get is() { return "lmvz-checkbox"; }
|
|
89
92
|
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.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.
|
|
10
|
+
font: var(--lmvz-typography-body-xs-strong, 500 clamp(0.63rem, 0.61rem + 0.06vw, 0.69rem) / 1.5
|
|
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.5rem, 0.47rem + 0.13vw, 0.63rem) / 1.
|
|
37
|
+
font: var(--lmvz-typography-body-2xs-strong, 500 clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem) / 1.5
|
|
38
38
|
Router);
|
|
39
39
|
gap: var(--lmvz-dimension-2-4, clamp(0.13rem, 0.09rem + 0.13vw, 0.25rem));
|
|
40
40
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
|
|
3
|
-
import {
|
|
3
|
+
import { DirectionalFocusController } from "../../utils/aria/list-keyboard-controller";
|
|
4
4
|
import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
|
|
5
5
|
import logo from "../../assets/icons/Logo.svg";
|
|
6
6
|
export class LmvzHeader extends ReactiveControllerHost {
|
|
@@ -11,7 +11,7 @@ export class LmvzHeader extends ReactiveControllerHost {
|
|
|
11
11
|
primarySlot;
|
|
12
12
|
secondarySlot;
|
|
13
13
|
secondaryNav;
|
|
14
|
-
keyboardNavigationController = new
|
|
14
|
+
keyboardNavigationController = new DirectionalFocusController(this, { orientation: 'both' });
|
|
15
15
|
get primaryMenuitems() {
|
|
16
16
|
return this.primarySlot?.assignedElements({ flatten: false }) || [];
|
|
17
17
|
}
|
|
@@ -84,7 +84,7 @@ export class LmvzHeader extends ReactiveControllerHost {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
render() {
|
|
87
|
-
return (h(Host, { key: '
|
|
87
|
+
return (h(Host, { key: '0152283363802ea854334e0349e145e7d6219e09', onFocus: this.delegateFocus.bind(this) }, h("div", { key: 'cdc1d52dbfb658f99bffa2df2353b6a1ad232f97', class: "brand" }, h("slot", { key: '25a039ea2224058f97f8ec1cb1aa310b388f2b2e', name: "brand" }, h("img", { key: '9ca6f39b6e41382a438b3afd36348ee17b36d346', id: "fallback-logo-lmvz", src: logo, alt: "Lehrmittelverlag Z\u00FCrich" }))), h("nav", { key: 'a6b7c1e7baca1ef2075d38cfaf631a277d2bb7ac', "aria-label": "Hauptnavigation" }, h("div", { key: 'eb8c2db72d86cf3c4e2b0d94271bf73882c3bd96', role: "menubar", class: "primary-menubar" }, h("slot", { key: 'b8a2b3c031158ce73ada65995b0d4e6e0e4eac72', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), h("div", { key: '87dabdc52e40163b35e8c7681d3e4aa3a17d6d82', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, h("slot", { key: '6cb38c14357ef682f1c804ab77cd70514308b6d4', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), h("div", { key: '9e46e6e484556c5fbe0f2c573188e845fbca801b', class: "actions" }, h("slot", { key: '4c1ea348528ccc3722c2dbbe0795e9f61d67edee', name: "actions" }))));
|
|
88
88
|
}
|
|
89
89
|
static get is() { return "lmvz-header"; }
|
|
90
90
|
static get encapsulation() { return "shadow"; }
|
|
@@ -124,7 +124,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
124
124
|
"mutable": false,
|
|
125
125
|
"complexType": {
|
|
126
126
|
"original": "Icon.IconWeight",
|
|
127
|
-
"resolved": "\"bold\" | \"
|
|
127
|
+
"resolved": "\"bold\" | \"medium\" | \"thin\" | undefined",
|
|
128
128
|
"references": {
|
|
129
129
|
"Icon": {
|
|
130
130
|
"location": "import",
|
|
@@ -44,7 +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.
|
|
47
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
48
48
|
Router);
|
|
49
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));
|
|
50
50
|
cursor: pointer;
|
|
@@ -89,8 +89,8 @@ dialog::backdrop {
|
|
|
89
89
|
display: flex;
|
|
90
90
|
flex-direction: column;
|
|
91
91
|
gap: var(--lmvz-modal-shell-gap);
|
|
92
|
-
padding: var(--lmvz-component-
|
|
93
|
-
border-radius: var(--lmvz-component-
|
|
92
|
+
padding: var(--lmvz-component-wrapper-lg-padding-y, clamp(2.25rem, 2.19rem + 0.26vw, 2.5rem)) var(--lmvz-component-wrapper-lg-padding-x, clamp(1.5rem, 1.14rem + 1.55vw, 3rem));
|
|
93
|
+
border-radius: var(--lmvz-component-wrapper-lg-border-radius, 18px);
|
|
94
94
|
background: var(--lmvz-semantic-color-surface-primary, #ffffff);
|
|
95
95
|
|
|
96
96
|
position: relative;
|
|
@@ -101,18 +101,6 @@ dialog::backdrop {
|
|
|
101
101
|
right: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
@media (max-width: 402px) {
|
|
105
|
-
dialog {
|
|
106
|
-
margin: 0;
|
|
107
|
-
max-width: unset;
|
|
108
|
-
max-height: unset;
|
|
109
|
-
}
|
|
110
|
-
.modal-shell {
|
|
111
|
-
max-width: 100vw;
|
|
112
|
-
border-radius: 0;
|
|
113
|
-
height: 100%;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
104
|
.header {
|
|
117
105
|
display: flex;
|
|
118
106
|
align-items: flex-start;
|
|
@@ -121,14 +109,14 @@ dialog::backdrop {
|
|
|
121
109
|
}
|
|
122
110
|
.title {
|
|
123
111
|
min-inline-size: 0;
|
|
124
|
-
font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.
|
|
112
|
+
font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.5
|
|
125
113
|
Router);
|
|
126
114
|
}
|
|
127
115
|
.has-title .title {
|
|
128
116
|
flex: 1 1 auto;
|
|
129
117
|
}
|
|
130
118
|
.body {
|
|
131
|
-
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.
|
|
119
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
132
120
|
Router);
|
|
133
121
|
flex: 1;
|
|
134
122
|
overflow: scroll;
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
|
|
56
56
|
--radio-label-color: var(--lmvz-semantic-color-on-surface-primary, #000000);
|
|
57
57
|
--radio-label-color-checked: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
|
|
58
|
-
--radio-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #
|
|
58
|
+
--radio-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #7a7a7a);
|
|
59
59
|
|
|
60
60
|
--radio-easing: var(--lmvz-global-easing-default, ease);
|
|
61
61
|
--radio-duration: 0.2s;
|
|
62
62
|
|
|
63
63
|
display: flex;
|
|
64
64
|
align-items: center;
|
|
65
|
-
gap: var(--lmvz-component-input-gap-md, clamp(0.
|
|
65
|
+
gap: var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
|
|
66
66
|
padding-block: var(--lmvz-dimension-2-8, clamp(0.13rem, 0.03rem + 0.39vw, 0.5rem));
|
|
67
67
|
padding-inline: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
|
|
68
68
|
border-radius: var(--lmvz-semantic-border-radius-round, 999px);
|
|
@@ -110,7 +110,7 @@ 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.
|
|
113
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
114
114
|
Router);
|
|
115
115
|
color: var(--radio-label-color);
|
|
116
116
|
cursor: pointer;
|
|
@@ -118,7 +118,7 @@ label {
|
|
|
118
118
|
}
|
|
119
119
|
.helper-text {
|
|
120
120
|
display: block;
|
|
121
|
-
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.
|
|
121
|
+
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5
|
|
122
122
|
Router);
|
|
123
123
|
color: var(--radio-helper-color);
|
|
124
124
|
margin-block-start: 2px;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
position: fixed;
|
|
3
|
+
bottom: var(--lmvz-dimension-16-20, clamp(1rem, 0.94rem + 0.26vw, 1.25rem));
|
|
4
|
+
left: 50%;
|
|
5
|
+
transform: translateX(-50%);
|
|
6
|
+
z-index: 2147483000; /* TODO(tokens): promote to design-token */
|
|
7
|
+
|
|
8
|
+
width: max-content;
|
|
9
|
+
border: 1px solid transparent;
|
|
10
|
+
border-radius: var(--lmvz-semantic-border-radius-lg, 14px);
|
|
11
|
+
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));
|
|
12
|
+
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: row;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
gap: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
|
|
18
|
+
|
|
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);
|
|
22
|
+
|
|
23
|
+
/* this will be picked up by lmvz-icon as well */
|
|
24
|
+
--lmvz-component-color: var(--lmvz-semantic-color-status-on-success, #37867c);
|
|
25
|
+
|
|
26
|
+
color: var(--lmvz-component-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:host([status='success']) {
|
|
30
|
+
background-color: var(--lmvz-semantic-color-status-success, #f1f9f8);
|
|
31
|
+
border-color: var(--lmvz-semantic-color-status-on-success-subtle, #a5dad3);
|
|
32
|
+
--lmvz-component-color: var(--lmvz-semantic-color-status-on-success, #37867c);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host([status='warning']) {
|
|
36
|
+
background-color: var(--lmvz-semantic-color-status-warning, #fffbf0);
|
|
37
|
+
border-color: var(--lmvz-semantic-color-status-on-warning-subtle, #ffdf75);
|
|
38
|
+
--lmvz-component-color: var(--lmvz-semantic-color-status-on-warning, #7a5e00);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:host([status='error']) {
|
|
42
|
+
background-color: var(--lmvz-semantic-color-status-danger, #fdf1f2);
|
|
43
|
+
border-color: var(--lmvz-semantic-color-status-on-danger-subtle, #f7bfc2);
|
|
44
|
+
--lmvz-component-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
lmvz-icon {
|
|
48
|
+
flex-shrink: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.message {
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@keyframes snackbar-enter {
|
|
56
|
+
from {
|
|
57
|
+
transform: translateX(-50%) translateY(100%);
|
|
58
|
+
opacity: 0;
|
|
59
|
+
}
|
|
60
|
+
to {
|
|
61
|
+
transform: translateX(-50%) translateY(0);
|
|
62
|
+
opacity: 1;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@keyframes snackbar-leave {
|
|
67
|
+
from {
|
|
68
|
+
transform: translateX(-50%) translateY(0);
|
|
69
|
+
opacity: 1;
|
|
70
|
+
}
|
|
71
|
+
to {
|
|
72
|
+
transform: translateX(-50%) translateY(100%);
|
|
73
|
+
opacity: 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* var(--lmvz-global-duration-fast, 200ms) — token is unitless integer; separate ticket filed against packages/design-tokens */
|
|
78
|
+
|
|
79
|
+
:host(.entering) {
|
|
80
|
+
animation: snackbar-enter 200ms cubic-bezier(0, 0, 0.2, 1) forwards;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:host(.leaving) {
|
|
84
|
+
pointer-events: none;
|
|
85
|
+
animation: snackbar-leave 200ms cubic-bezier(0.4, 0, 1, 1) forwards;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@media (prefers-reduced-motion: reduce) {
|
|
89
|
+
:host(.entering) {
|
|
90
|
+
animation: none;
|
|
91
|
+
transition: opacity 80ms ease;
|
|
92
|
+
opacity: 1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:host(.leaving) {
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
animation: none;
|
|
98
|
+
transition: opacity 80ms ease;
|
|
99
|
+
opacity: 0;
|
|
100
|
+
}
|
|
101
|
+
}
|