summaryrefslogtreecommitdiffstats
path: root/src/objects/_radio.scss
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2024-06-25 17:39:03 +0200
committerVolpeon <git@volpeon.ink>2024-06-25 17:39:03 +0200
commit4de75e0f305b2cb4a026073440f2bac7c34df817 (patch)
tree628f71b6f917bb9357ae14d018149509db655e4e /src/objects/_radio.scss
parentUpdate (diff)
downloadiro-design-4de75e0f305b2cb4a026073440f2bac7c34df817.tar.gz
iro-design-4de75e0f305b2cb4a026073440f2bac7c34df817.tar.bz2
iro-design-4de75e0f305b2cb4a026073440f2bac7c34df817.zip
Focus indicator style
Diffstat (limited to 'src/objects/_radio.scss')
-rw-r--r--src/objects/_radio.scss62
1 files changed, 30 insertions, 32 deletions
diff --git a/src/objects/_radio.scss b/src/objects/_radio.scss
index 12dc6ca..7ade7e1 100644
--- a/src/objects/_radio.scss
+++ b/src/objects/_radio.scss
@@ -11,14 +11,20 @@
11 --pad-b: fn.global-dim(--size --65), 11 --pad-b: fn.global-dim(--size --65),
12 --rounding: fn.global-dim(--rounding), 12 --rounding: fn.global-dim(--rounding),
13 --spacing-sibling: fn.global-dim(--size --300), 13 --spacing-sibling: fn.global-dim(--size --300),
14
15 --key-focus: (
16 --border: fn.global-dim(--key-focus --border),
17 --border-offset: fn.global-dim(--key-focus --border-offset),
18 --outline: fn.global-dim(--key-focus --border),
19 ),
14 ), 20 ),
15 --colors: ( 21 --colors: (
16 --circle-border: fn.global-color(--text-mute), 22 --circle-border: fn.global-color(--text-mute-more),
17 --circle-bg: fn.global-color(--base --75), 23 --circle-bg: fn.global-color(--base --75),
18 24
19 --hover: ( 25 --hover: (
20 --label: fn.global-color(--heading), 26 --label: fn.global-color(--heading),
21 --circle-border: fn.global-color(--text), 27 --circle-border: fn.global-color(--text-mute),
22 ), 28 ),
23 --accent: ( 29 --accent: (
24 --circle-border: fn.global-color(--accent --900), 30 --circle-border: fn.global-color(--accent --900),
@@ -27,37 +33,39 @@
27 --circle-border: fn.global-color(--accent --1000), 33 --circle-border: fn.global-color(--accent --1000),
28 ), 34 ),
29 ), 35 ),
30 --key-focus: (
31 --bg: fn.global-color(--focus-static --400),
32 --label: fn.global-color(--focus-static --400-text),
33 --circle-border: fn.global-color(--focus-static --1000),
34 --circle-bg: fn.global-color(--focus-static --1000-text),
35 ),
36 --disabled: ( 36 --disabled: (
37 --label: fn.global-color(--text-disabled), 37 --label: fn.global-color(--text-disabled),
38 --circle-border: fn.global-color(--border-strong), 38 --circle-border: fn.global-color(--border-strong),
39 --circle-bg: fn.global-color(--base --75), 39 --circle-bg: fn.global-color(--base --75),
40 ) 40 ),
41 --key-focus: (
42 --label: fn.global-color(--focus --text),
43 --border: fn.global-color(--focus --border),
44 --outline: fn.global-color(--focus --outline),
45 ),
41 ), 46 ),
42 )); 47 ));
43 48
44 @include iro.bem-object(iro.props-namespace()) { 49 @include iro.bem-object(iro.props-namespace()) {
45 display: inline-flex; 50 display: inline-block;
46 position: relative; 51 position: relative;
47 align-items: flex-start; 52 margin-inline:
48 margin-inline: calc(-1 * fn.dim(--pad-i)) calc(fn.dim(--spacing-sibling) - fn.dim(--pad-i)); 53 calc(-1 * fn.dim(--pad-i) - fn.dim(--key-focus --border-offset))
54 calc(fn.dim(--spacing-sibling) - fn.dim(--pad-i) - fn.dim(--key-focus --border-offset));
49 padding-block: fn.dim(--pad-b); 55 padding-block: fn.dim(--pad-b);
50 padding-inline: fn.dim(--pad-i); 56 padding-inline: fn.dim(--pad-i);
51 57
52 @include iro.bem-elem('circle') { 58 @include iro.bem-elem('circle') {
53 display: block; 59 display: inline-block;
54 box-sizing: border-box;
55 flex: 0 0 auto; 60 flex: 0 0 auto;
56 inline-size: fn.dim(--diameter); 61 inline-size: fn.dim(--diameter);
57 block-size: fn.dim(--diameter); 62 block-size: fn.dim(--diameter);
58 margin-block-start: calc(.5 * (fn.global-dim(--font --standard --line-height) * 1em - fn.dim(--diameter))); 63 margin-block-start: calc(.5em * fn.global-dim(--font --standard --line-height) - .5 * fn.dim(--diameter) - fn.dim(--key-focus --border-offset));
64 border: fn.dim(--key-focus --border-offset) solid transparent;
59 border-radius: 2em; 65 border-radius: 2em;
60 background-color: fn.color(--circle-border); 66 background-color: fn.color(--circle-border);
67 background-clip: padding-box;
68 vertical-align: top;
61 69
62 &::after { 70 &::after {
63 content: ''; 71 content: '';
@@ -74,8 +82,7 @@
74 } 82 }
75 83
76 @include iro.bem-elem('label') { 84 @include iro.bem-elem('label') {
77 align-self: baseline; 85 margin-inline-start: calc(fn.dim(--label-gap) - fn.dim(--key-focus --border-offset));
78 margin-inline-start: fn.dim(--label-gap);
79 } 86 }
80 87
81 @include iro.bem-elem('native') { 88 @include iro.bem-elem('native') {
@@ -91,7 +98,8 @@
91 overflow: hidden; 98 overflow: hidden;
92 border-radius: fn.dim(--rounding); 99 border-radius: fn.dim(--rounding);
93 100
94 &:hover { 101 &:hover,
102 &:focus-visible {
95 @include iro.bem-sibling-elem('label') { 103 @include iro.bem-sibling-elem('label') {
96 color: fn.color(--hover --label); 104 color: fn.color(--hover --label);
97 } 105 }
@@ -124,18 +132,13 @@
124 } 132 }
125 133
126 &:focus-visible { 134 &:focus-visible {
127 background-color: fn.color(--key-focus --bg);
128
129 @include iro.bem-sibling-elem('label') { 135 @include iro.bem-sibling-elem('label') {
130 color: fn.color(--key-focus --label); 136 color: fn.color(--key-focus --label);
131 } 137 }
132 138
133 @include iro.bem-sibling-elem('circle') { 139 @include iro.bem-sibling-elem('circle') {
134 background-color: fn.color(--key-focus --circle-border); 140 outline: fn.color(--key-focus --border) solid fn.dim(--key-focus --border);
135 141 box-shadow: 0 0 0 calc(fn.dim(--key-focus --border) + fn.dim(--key-focus --outline)) fn.color(--key-focus --outline);
136 &::after {
137 background-color: fn.color(--key-focus --circle-bg);
138 }
139 } 142 }
140 } 143 }
141 } 144 }
@@ -153,7 +156,8 @@
153 background-color: fn.color(--accent --circle-border); 156 background-color: fn.color(--accent --circle-border);
154 } 157 }
155 158
156 &:hover { 159 &:hover,
160 &:focus-visible {
157 @include iro.bem-sibling-elem('circle') { 161 @include iro.bem-sibling-elem('circle') {
158 background-color: fn.color(--accent --hover --circle-border); 162 background-color: fn.color(--accent --hover --circle-border);
159 } 163 }
@@ -175,12 +179,6 @@
175 } 179 }
176 } 180 }
177 } 181 }
178
179 &:focus-visible {
180 @include iro.bem-sibling-elem('circle') {
181 background-color: fn.color(--key-focus --circle-border);
182 }
183 }
184 } 182 }
185 } 183 }
186 } 184 }