1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
@use 'iro-sass/src/index' as iro;
@include iro.props-namespace('radio') {
@include iro.props-store((
--dims: (
--diameter: iro.fn-px-to-rem(15px),
--label-gap: .6rem,
--border-width: iro.props-get(--dims --border-width --medium, $global: true),
--padding-x: .3rem,
--padding-y: .3rem,
--margin-right: iro.props-get(--dims --spacing --x --md, $global: true),
),
--colors: (
--circle-border: iro.props-get(--colors --fg-hi2, $global: true),
--circle-bg: iro.props-get(--colors --bg-hi, $global: true),
--hover: (
--label: iro.props-get(--colors --fg-lo, $global: true),
--circle-border: iro.props-get(--colors --fg-hi, $global: true),
),
--active: (
--circle-border: iro.props-get(--colors --accent --primary, $global: true),
--hover: (
--circle-border: iro.props-get(--colors --accent --primary-lo, $global: true),
),
),
--key-focus: (
--label: iro.props-get(--colors --focus --text, $global: true),
--circle-border: iro.props-get(--colors --focus --fill, $global: true),
--shadow: iro.props-get(--colors --focus --shadow, $global: true),
),
--disabled: (
--label: iro.props-get(--colors --fg-hi3, $global: true),
--circle-border: iro.props-get(--colors --obj-lo, $global: true),
--circle-bg: iro.props-get(--colors --bg-hi, $global: true),
--active: (
--circle-border: iro.props-get(--colors --obj-lo, $global: true),
),
)
),
));
@include iro.bem-object(iro.props-namespace()) {
display: inline-flex;
position: relative;
align-items: flex-start;
margin-right: calc(-1 * iro.props-get(--dims --padding-x) + iro.props-get(--dims --margin-right));
margin-left: calc(-1 * iro.props-get(--dims --padding-x));
padding: iro.props-get(--dims --padding-y) iro.props-get(--dims --padding-x);
@include iro.bem-elem('circle') {
display: block;
position: relative;
box-sizing: border-box;
flex: 0 0 auto;
width: iro.props-get(--dims --diameter);
height: iro.props-get(--dims --diameter);
margin-top: calc(.5 * (#{$line-height * 1em} - #{iro.props-get(--dims --diameter)}));
border-radius: 2em;
background-color: iro.props-get(--colors --circle-border);
&::after {
content: '';
display: block;
position: absolute;
z-index: 10;
top: 50%;
left: iro.props-get(--dims --border-width);
width: calc(iro.props-get(--dims --diameter) - 2 * iro.props-get(--dims --border-width));
height: calc(iro.props-get(--dims --diameter) - 2 * iro.props-get(--dims --border-width));
transform: translateY(-50%);
transition: transform .2s ease;
border-radius: iro.props-get(--dims --diameter);
background-color: iro.props-get(--colors --circle-bg);
}
}
@include iro.bem-elem('label') {
margin-left: iro.props-get(--dims --label-gap);
}
@include iro.bem-elem('native') {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
opacity: .0001;
&:hover {
@include iro.bem-sibling-elem('label') {
color: iro.props-get(--colors --hover --label);
}
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --hover --circle-border);
}
}
&:checked {
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --active --circle-border);
&::after {
transform: translateY(-50%) scale(.44);
}
}
&:hover {
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --active --hover --circle-border);
}
}
}
&:disabled {
@include iro.bem-sibling-elem('label') {
color: iro.props-get(--colors --disabled --label);
}
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --disabled --circle-border);
&::after {
background-color: iro.props-get(--colors --disabled --circle-bg);
}
}
&:checked {
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --disabled --active --circle-border);
}
}
}
@include iro.bem-at-theme('keyboard') {
&:focus {
@include iro.bem-sibling-elem('label') {
color: iro.props-get(--colors --key-focus --label);
}
@include iro.bem-sibling-elem('circle') {
background-color: iro.props-get(--colors --key-focus --circle-border);
box-shadow: iro.props-get(--colors --key-focus --shadow);
}
}
}
}
}
}
|