@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.
- package/CHANGELOG.md +13 -0
- package/cjs/{index-lW-SEvL7.js → index-BCFBLj0e.js} +1 -1
- package/cjs/lmvz-action.cjs.entry.js +1 -1
- package/cjs/lmvz-button_3.cjs.entry.js +5 -5
- package/cjs/lmvz-card.cjs.entry.js +2 -2
- package/cjs/lmvz-checkbox.cjs.entry.js +5 -5
- package/cjs/lmvz-chip.cjs.entry.js +3 -3
- package/cjs/lmvz-components.cjs.js +3 -3
- package/cjs/lmvz-header_2.cjs.entry.js +2 -2
- package/cjs/lmvz-input.cjs.entry.js +3 -3
- package/cjs/lmvz-menuitem.cjs.entry.js +3 -3
- package/cjs/lmvz-modal.cjs.entry.js +5 -5
- package/cjs/lmvz-radio.cjs.entry.js +334 -0
- package/cjs/lmvz-select.cjs.entry.js +4 -4
- package/cjs/lmvz-toggle.cjs.entry.js +7 -5
- package/cjs/loader.cjs.js +2 -2
- package/cjs/{reactive-controller-host-BOFg4vL-.js → reactive-controller-host-DrtMkMd7.js} +1 -1
- package/collection/collection-manifest.json +2 -1
- package/collection/components/lmvz-button/lmvz-button.css +35 -27
- package/collection/components/lmvz-button/lmvz-button.js +1 -1
- package/collection/components/lmvz-button-group/lmvz-button-group.css +1 -1
- package/collection/components/lmvz-card/lmvz-card.css +35 -27
- package/collection/components/lmvz-checkbox/lmvz-checkbox.css +20 -19
- package/collection/components/lmvz-checkbox/lmvz-checkbox.js +2 -2
- package/collection/components/lmvz-chip/lmvz-chip.css +3 -3
- package/collection/components/lmvz-input/lmvz-input.css +17 -17
- package/collection/components/lmvz-menuitem/lmvz-menuitem.css +14 -10
- package/collection/components/lmvz-modal/lmvz-modal.css +40 -18
- package/collection/components/lmvz-modal/lmvz-modal.js +2 -2
- package/collection/components/lmvz-radio/lmvz-radio.css +182 -0
- package/collection/components/lmvz-radio/lmvz-radio.js +487 -0
- package/collection/components/lmvz-select/lmvz-select.css +15 -11
- package/collection/components/lmvz-select/lmvz-select.js +1 -1
- package/collection/components/lmvz-toggle/lmvz-toggle.css +16 -17
- package/collection/components/lmvz-toggle/lmvz-toggle.js +3 -3
- package/collection/integration/header-integration/header-integration.js +1 -1
- package/collection/styles/fragments/_focus-within.css +13 -0
- package/collection/utils/radio/radio-group-controller.js +160 -0
- package/components/index.d.ts +2 -0
- package/components/index.d.ts.bak +2 -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.d.ts +11 -0
- package/components/lmvz-radio.d.ts.bak +11 -0
- package/components/lmvz-radio.js +1 -0
- package/components/lmvz-select.js +1 -1
- package/components/lmvz-toggle.js +1 -1
- package/components/p-Bb-kEOmU.js +1 -0
- package/components/{p-Cg2XX_J-.js → p-CCcoDnH-.js} +1 -1
- package/components/{p-slgmfnHm.js → p-CNmHnJ1D.js} +1 -1
- package/components/p-vUYpZZoR.js +1 -0
- package/esm/{index-Aa_425iY.js → index-CKYszC64.js} +1 -1
- package/esm/lmvz-action.entry.js +1 -1
- package/esm/lmvz-button_3.entry.js +5 -5
- package/esm/lmvz-card.entry.js +2 -2
- package/esm/lmvz-checkbox.entry.js +5 -5
- package/esm/lmvz-chip.entry.js +3 -3
- package/esm/lmvz-components.js +4 -4
- package/esm/lmvz-header_2.entry.js +2 -2
- package/esm/lmvz-input.entry.js +3 -3
- package/esm/lmvz-menuitem.entry.js +3 -3
- package/esm/lmvz-modal.entry.js +5 -5
- package/esm/lmvz-radio.entry.js +332 -0
- package/esm/lmvz-select.entry.js +4 -4
- package/esm/lmvz-toggle.entry.js +7 -5
- package/esm/loader.js +3 -3
- package/esm/{reactive-controller-host-CroMsXdS.js → reactive-controller-host-ZrGf1F2-.js} +1 -1
- package/hydrate/index.js +372 -20
- package/hydrate/index.mjs +372 -20
- package/lmvz-components/lmvz-components.esm.js +1 -1
- package/lmvz-components/{p-d1dacf7e.entry.js → p-01aeca60.entry.js} +1 -1
- package/lmvz-components/p-0dced359.entry.js +1 -0
- package/lmvz-components/{p-f6d1d9df.entry.js → p-2044a9ac.entry.js} +1 -1
- package/lmvz-components/p-3c2adbb4.entry.js +1 -0
- package/lmvz-components/p-3df070b0.entry.js +1 -0
- package/lmvz-components/p-758078db.entry.js +1 -0
- package/lmvz-components/p-90f5a19d.entry.js +1 -0
- package/lmvz-components/{p-BRl6zKXT.js → p-CwX1wKkM.js} +1 -1
- package/lmvz-components/p-acfeae08.entry.js +1 -0
- package/lmvz-components/p-c01a6c70.entry.js +1 -0
- package/lmvz-components/p-e1eaa7a2.entry.js +1 -0
- package/lmvz-components/p-e23d0054.entry.js +1 -0
- package/lmvz-components/p-fe607f10.entry.js +1 -0
- package/manifest.json +416 -3
- package/package.json +5 -1
- package/types/components/lmvz-radio/lmvz-radio.d.ts +42 -0
- package/types/components.d.ts +176 -0
- package/types/stencil-public-runtime.d.ts +1 -0
- package/types/utils/radio/radio-group-controller.d.ts +26 -0
- package/assets/icons/checkmark.svg +0 -4
- package/assets/icons/close-sm.svg +0 -3
- package/collection/assets/icons/checkmark.svg +0 -4
- package/collection/assets/icons/close-sm.svg +0 -3
- package/components/p-DSvYtVoD.js +0 -1
- package/components/p-K_EPq-vy.js +0 -1
- package/lmvz-components/p-05896617.entry.js +0 -1
- package/lmvz-components/p-267344a7.entry.js +0 -1
- package/lmvz-components/p-2b09b8bc.entry.js +0 -1
- package/lmvz-components/p-3846ba08.entry.js +0 -1
- package/lmvz-components/p-3df92762.entry.js +0 -1
- package/lmvz-components/p-5f550b9f.entry.js +0 -1
- package/lmvz-components/p-8e43fabb.entry.js +0 -1
- package/lmvz-components/p-f7f32879.entry.js +0 -1
- package/lmvz-components/p-fa4e00cf.entry.js +0 -1
- /package/components/{p-CK8cAKcB.js → p-DYr7Jc0V.js} +0 -0
- /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
|
-
|
|
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
|
-
|
|
32
|
-
font-weight: 700 bold;
|
|
35
|
+
url('/assets/fonts/Router-Bold.woff') format('woff');
|
|
36
|
+
font-weight: 700;
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
}
|
|
@@ -62,6 +66,9 @@ dialog {
|
|
|
62
66
|
border: none;
|
|
63
67
|
padding: 0;
|
|
64
68
|
background: transparent;
|
|
69
|
+
height: 100vh;
|
|
70
|
+
width: 100vw;
|
|
71
|
+
contain: layout size;
|
|
65
72
|
}
|
|
66
73
|
dialog::backdrop {
|
|
67
74
|
/* TODO(LDHCID-135): Missing token for the modal backdrop color */
|
|
@@ -70,18 +77,23 @@ dialog::backdrop {
|
|
|
70
77
|
background: rgb(from var(--lmvz-semantic-color-int-primary, #000000) r g b / 0.29);
|
|
71
78
|
}
|
|
72
79
|
.modal-shell {
|
|
73
|
-
|
|
80
|
+
margin-inline: auto;
|
|
81
|
+
top: 50%;
|
|
82
|
+
transform: translateY(-50%);
|
|
83
|
+
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
width: fit-content;
|
|
86
|
+
max-height: 100%;
|
|
87
|
+
max-width: clamp(20rem, 100%, 90vw);
|
|
88
|
+
|
|
74
89
|
display: flex;
|
|
75
90
|
flex-direction: column;
|
|
76
|
-
inline-size: fit-content;
|
|
77
|
-
max-inline-size: clamp(40rem, 100%, 80vw);
|
|
78
91
|
gap: var(--lmvz-modal-shell-gap);
|
|
79
|
-
padding
|
|
80
|
-
|
|
81
|
-
border-radius: var(--lmvz-component-modal-border-radius, 18px);
|
|
92
|
+
padding: var(--lmvz-component-card-lg-padding-y, clamp(2.25rem, 2.19rem + 0.26vw, 2.5rem)) var(--lmvz-component-card-lg-padding-x, clamp(1.5rem, 1.14rem + 1.55vw, 3rem));
|
|
93
|
+
border-radius: var(--lmvz-component-card-lg-border-radius, 18px);
|
|
82
94
|
background: var(--lmvz-semantic-color-surface-primary, #ffffff);
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
|
|
96
|
+
position: relative;
|
|
85
97
|
|
|
86
98
|
.close-button {
|
|
87
99
|
position: absolute;
|
|
@@ -89,9 +101,16 @@ dialog::backdrop {
|
|
|
89
101
|
right: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
|
|
90
102
|
}
|
|
91
103
|
}
|
|
92
|
-
@media (
|
|
104
|
+
@media (max-width: 402px) {
|
|
105
|
+
dialog {
|
|
106
|
+
margin: 0;
|
|
107
|
+
max-width: unset;
|
|
108
|
+
max-height: unset;
|
|
109
|
+
}
|
|
93
110
|
.modal-shell {
|
|
94
|
-
max-
|
|
111
|
+
max-width: 100vw;
|
|
112
|
+
border-radius: 0;
|
|
113
|
+
height: 100%;
|
|
95
114
|
}
|
|
96
115
|
}
|
|
97
116
|
.header {
|
|
@@ -111,4 +130,7 @@ dialog::backdrop {
|
|
|
111
130
|
.body {
|
|
112
131
|
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4
|
|
113
132
|
Router);
|
|
133
|
+
flex: 1;
|
|
134
|
+
overflow: scroll;
|
|
135
|
+
/* min-block-size: clamp(8rem, 40vw, 60vh); */
|
|
114
136
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import closeIcon from "@lmvz-ds/icons/assets/close-sm.svg";
|
|
1
2
|
import { toValidSvgStringWithFallback } from "@lmvz-ds/lib-ts/validation/svg.js";
|
|
2
3
|
import { Host, h } from "@stencil/core";
|
|
3
|
-
import closeIcon from "../../assets/icons/close-sm.svg";
|
|
4
4
|
import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
|
|
5
5
|
import { getDeepActiveElement, inheritAriaAttributes } from "../../utils/component";
|
|
6
6
|
import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
|
|
@@ -223,7 +223,7 @@ export class LmvzModal extends ReactiveControllerHost {
|
|
|
223
223
|
this.hasHeader = this.hasAssignedContent(this.headerSlot);
|
|
224
224
|
};
|
|
225
225
|
render() {
|
|
226
|
-
return (h(Host, { key: '
|
|
226
|
+
return (h(Host, { key: '1fbdbb1ab2d3ad423075465108d4ff807d07404e' }, h("dialog", { key: '622dd60366ad594e16471cc8921c97d23af14ccb', ref: (element) => (this.dialogEl = element), onCancel: this.handleDialogCancel, onClose: this.handleDialogClose, ...this.dialogAccessibilityAttributes }, h("div", { key: 'bcdfbefbd5f380e2bf946aed479d542a33927af1', class: "modal-shell" }, h("header", { key: 'dcd23467473d58b51bddaf613b3ac8c922eecdc6', class: { header: true, 'has-title': this.hasHeader } }, h("div", { key: 'b2aa21fda4a80d2ea003e6ec876c2b74df5d29fd', class: "title", id: this.dialogTitleId, hidden: !this.hasHeader }, h("slot", { key: 'b7238e5b24c0822a94087d4ff0567e6406542c73', name: "header", ref: (element) => (this.headerSlot = element), onSlotchange: this.handleHeaderSlotChange })), h("lmvz-button", { key: '5059671fb4d81c685becd3adb0be52dd92ec4dec', ref: (element) => (this.closeButtonEl = element), type: "button", class: "close-button", "aria-label": this.closeLabel, onClick: this.handleCloseButtonClick, variant: "tertiary" }, h("lmvz-icon", { key: '498447e60e0e33fc165f39cea35434080e869d3c', icon: closeIconSvg }))), h("div", { key: '39ecefb52d5990cb689b0e4f18a8b6fc501c840d', class: "body" }, h("slot", { key: 'b014d0633c28fb6b399f11f2323e102949548776' })), h("footer", { key: '201dae98bcf810f369d77b7e9f36d7cc71ed5db4', class: "actions", hidden: !this.buttonGroupEl?.hasActions }, h("lmvz-button-group", { key: 'e4559d383992e059f915670a0874cc3b9ef655a3', ref: (element) => (this.buttonGroupEl = element) }, h("slot", { key: '88b007e139d4a166a2ee886dcd0256293d5d33c9', name: "actions" })))))));
|
|
227
227
|
}
|
|
228
228
|
static get is() { return "lmvz-modal"; }
|
|
229
229
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
|
|
2
|
+
@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides;
|
|
3
|
+
/**
|
|
4
|
+
* This defines the order of our lmvz-ds' CSS layers. See readme.md for details.
|
|
5
|
+
* Important: Always import this file _before_ layering your own styles!
|
|
6
|
+
*/
|
|
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
|
+
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: Router;
|
|
14
|
+
src:
|
|
15
|
+
local('RouterBook-Regular'),
|
|
16
|
+
local('Router-Book'),
|
|
17
|
+
url('/assets/fonts/Router-Book.woff') format('woff');
|
|
18
|
+
font-weight: 400;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: Router;
|
|
23
|
+
src:
|
|
24
|
+
local('RouterMedium-Regular'),
|
|
25
|
+
local('Router-Medium'),
|
|
26
|
+
url('/assets/fonts/Router-Medium.woff') format('woff');
|
|
27
|
+
font-weight: 500;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@font-face {
|
|
31
|
+
font-family: Router;
|
|
32
|
+
src:
|
|
33
|
+
local('RouterBold-Regular'),
|
|
34
|
+
local('Router-Bold'),
|
|
35
|
+
url('/assets/fonts/Router-Bold.woff') format('woff');
|
|
36
|
+
font-weight: 700;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
:host {
|
|
41
|
+
display: inline-block;
|
|
42
|
+
|
|
43
|
+
--radio-circle-size: var(--lmvz-global-s18, 18px);
|
|
44
|
+
--radio-dot-size: 0.5rem;
|
|
45
|
+
|
|
46
|
+
--radio-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff);
|
|
47
|
+
--radio-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0);
|
|
48
|
+
--radio-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7);
|
|
49
|
+
--radio-border-color-checked: var(--lmvz-semantic-color-border-active, #0f8acc);
|
|
50
|
+
--radio-border-color-error: var(--lmvz-semantic-color-status-on-danger, #e52a31);
|
|
51
|
+
--radio-dot-color: var(--lmvz-semantic-color-border-active, #0f8acc);
|
|
52
|
+
|
|
53
|
+
--radio-wrapper-bg-hover: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
|
|
54
|
+
--radio-wrapper-bg-active: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0);
|
|
55
|
+
|
|
56
|
+
--radio-label-color: var(--lmvz-semantic-color-on-surface-primary, #000000);
|
|
57
|
+
--radio-label-color-checked: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
|
|
58
|
+
--radio-helper-color: var(--lmvz-semantic-color-on-surface-secondary, #545454);
|
|
59
|
+
|
|
60
|
+
--radio-easing: var(--lmvz-global-easing-default, ease);
|
|
61
|
+
--radio-duration: 0.2s;
|
|
62
|
+
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
gap: var(--lmvz-component-input-gap-md, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
|
|
66
|
+
padding-block: var(--lmvz-dimension-2-8, clamp(0.13rem, 0.03rem + 0.39vw, 0.5rem));
|
|
67
|
+
padding-inline: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem));
|
|
68
|
+
border-radius: var(--lmvz-semantic-border-radius-round, 999px);
|
|
69
|
+
overflow: clip;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
background-color: transparent;
|
|
72
|
+
position: relative;
|
|
73
|
+
transition: background-color var(--radio-duration) var(--radio-easing);
|
|
74
|
+
}
|
|
75
|
+
input {
|
|
76
|
+
position: absolute;
|
|
77
|
+
inset-block-start: var(--lmvz-dimension-2-8, clamp(0.13rem, 0.03rem + 0.39vw, 0.5rem));
|
|
78
|
+
inset-inline-start: var(--lmvz-dimension-4-10, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));
|
|
79
|
+
opacity: 0;
|
|
80
|
+
width: var(--radio-circle-size);
|
|
81
|
+
height: var(--radio-circle-size);
|
|
82
|
+
margin: 0;
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
z-index: 1;
|
|
85
|
+
}
|
|
86
|
+
.circle {
|
|
87
|
+
width: var(--radio-circle-size);
|
|
88
|
+
height: var(--radio-circle-size);
|
|
89
|
+
border-radius: 50%;
|
|
90
|
+
border: var(--lmvz-semantic-border-width-default, 1px) solid var(--radio-border-color);
|
|
91
|
+
background-color: var(--radio-bg);
|
|
92
|
+
pointer-events: none;
|
|
93
|
+
flex-shrink: 0;
|
|
94
|
+
display: flex;
|
|
95
|
+
align-items: center;
|
|
96
|
+
justify-content: center;
|
|
97
|
+
box-sizing: border-box;
|
|
98
|
+
transition: border-color var(--radio-duration) var(--radio-easing);
|
|
99
|
+
}
|
|
100
|
+
.dot {
|
|
101
|
+
width: var(--radio-dot-size);
|
|
102
|
+
height: var(--radio-dot-size);
|
|
103
|
+
border-radius: 50%;
|
|
104
|
+
background-color: var(--radio-dot-color);
|
|
105
|
+
}
|
|
106
|
+
.content {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
overflow-wrap: break-word;
|
|
110
|
+
min-width: 0;
|
|
111
|
+
}
|
|
112
|
+
label {
|
|
113
|
+
font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4
|
|
114
|
+
Router);
|
|
115
|
+
color: var(--radio-label-color);
|
|
116
|
+
cursor: pointer;
|
|
117
|
+
transition: color var(--radio-duration) var(--radio-easing);
|
|
118
|
+
}
|
|
119
|
+
.helper-text {
|
|
120
|
+
display: block;
|
|
121
|
+
font: var(--lmvz-typography-body-sm, 400 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.4
|
|
122
|
+
Router);
|
|
123
|
+
color: var(--radio-helper-color);
|
|
124
|
+
margin-block-start: 2px;
|
|
125
|
+
}
|
|
126
|
+
.helper-text:empty {
|
|
127
|
+
display: none;
|
|
128
|
+
}
|
|
129
|
+
/* Hover state, guarded to prevent sticky hover on touch devices */
|
|
130
|
+
@media (hover: hover) {
|
|
131
|
+
:host(:hover) .circle {
|
|
132
|
+
border-color: var(--radio-border-color-hover);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:host(:hover) {
|
|
136
|
+
background-color: var(--radio-wrapper-bg-hover);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/* Active state */
|
|
140
|
+
:host(:active) {
|
|
141
|
+
background-color: var(--radio-wrapper-bg-active);
|
|
142
|
+
}
|
|
143
|
+
/* Checked state */
|
|
144
|
+
:host([checked]) .circle {
|
|
145
|
+
border-color: var(--radio-border-color-checked);
|
|
146
|
+
}
|
|
147
|
+
:host([checked]) label {
|
|
148
|
+
color: var(--radio-label-color-checked);
|
|
149
|
+
}
|
|
150
|
+
/* Error state. MUST appear AFTER checked state rules (error takes visual precedence) */
|
|
151
|
+
:host([error]) .circle {
|
|
152
|
+
border-color: var(--radio-border-color-error);
|
|
153
|
+
}
|
|
154
|
+
:host([error]) .helper-text {
|
|
155
|
+
color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
|
|
156
|
+
}
|
|
157
|
+
/* Disabled state */
|
|
158
|
+
:host([disabled]) {
|
|
159
|
+
opacity: var(--lmvz-component-input-disabled-opacity, 40%);
|
|
160
|
+
pointer-events: none;
|
|
161
|
+
cursor: not-allowed;
|
|
162
|
+
}
|
|
163
|
+
/* Forced Colors / Windows High Contrast */
|
|
164
|
+
@media (forced-colors: active) {
|
|
165
|
+
.circle {
|
|
166
|
+
forced-color-adjust: auto;
|
|
167
|
+
border-color: ButtonText;
|
|
168
|
+
background-color: Field;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
:host([checked]) .circle {
|
|
172
|
+
border-color: Highlight;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.dot {
|
|
176
|
+
background-color: ButtonText;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:host([checked]) .dot {
|
|
180
|
+
background-color: HighlightText;
|
|
181
|
+
}
|
|
182
|
+
}
|