summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2026-07-22 13:00:59 +0200
committerVolpeon <git@volpeon.ink>2026-07-22 13:00:59 +0200
commitaeed08dc46662a0d70e04bcea612a701633736e7 (patch)
treea4077017d3519185ccd9ea08955fccdd737ffe17
parentPaths (diff)
downloadiro-design-aeed08dc46662a0d70e04bcea612a701633736e7.tar.gz
iro-design-aeed08dc46662a0d70e04bcea612a701633736e7.tar.bz2
iro-design-aeed08dc46662a0d70e04bcea612a701633736e7.zip
Revert "Paths"
This reverts commit cc5329a5f4d3ea91cac93bc7f9b8f943b7ced226.
-rw-r--r--src/_config.defaults.scss491
-rw-r--r--src/_config.scss28
-rw-r--r--src/_core.scss38
-rw-r--r--src/_core.vars.scss259
-rw-r--r--src/_functions.scss32
-rw-r--r--src/_props.scss34
-rw-r--r--src/_themes.scss38
-rw-r--r--src/_utils.scss236
-rw-r--r--src/layouts/_card-list.scss178
-rw-r--r--src/layouts/_card-list.vars.scss135
-rw-r--r--src/layouts/_container.scss26
-rw-r--r--src/layouts/_container.vars.scss39
-rw-r--r--src/layouts/_flex.scss10
-rw-r--r--src/layouts/_form.scss52
-rw-r--r--src/layouts/_form.vars.scss6
-rw-r--r--src/layouts/_hlist.scss71
-rw-r--r--src/layouts/_hlist.vars.scss18
-rw-r--r--src/layouts/_media.scss30
-rw-r--r--src/layouts/_media.vars.scss20
-rw-r--r--src/layouts/_overflow.scss10
-rw-r--r--src/layouts/_split-view.scss93
-rw-r--r--src/layouts/_split-view.vars.scss15
-rw-r--r--src/objects/_alert.scss49
-rw-r--r--src/objects/_alert.vars.scss52
-rw-r--r--src/objects/_avatar.scss171
-rw-r--r--src/objects/_avatar.vars.scss127
-rw-r--r--src/objects/_backdrop.scss32
-rw-r--r--src/objects/_backdrop.vars.scss14
-rw-r--r--src/objects/_button.scss279
-rw-r--r--src/objects/_button.vars.scss666
-rw-r--r--src/objects/_card.scss389
-rw-r--r--src/objects/_card.vars.scss151
-rw-r--r--src/objects/_checkbox.scss213
-rw-r--r--src/objects/_checkbox.vars.scss108
-rw-r--r--src/objects/_dialog.scss72
-rw-r--r--src/objects/_dialog.vars.scss20
-rw-r--r--src/objects/_divider.scss134
-rw-r--r--src/objects/_divider.vars.scss179
-rw-r--r--src/objects/_emoji.scss56
-rw-r--r--src/objects/_emoji.vars.scss32
-rw-r--r--src/objects/_field-label.scss68
-rw-r--r--src/objects/_field-label.vars.scss42
-rw-r--r--src/objects/_figure.scss30
-rw-r--r--src/objects/_figure.vars.scss20
-rw-r--r--src/objects/_heading.scss114
-rw-r--r--src/objects/_heading.vars.scss610
-rw-r--r--src/objects/_icon.scss30
-rw-r--r--src/objects/_icon.vars.scss6
-rw-r--r--src/objects/_lightbox.scss157
-rw-r--r--src/objects/_lightbox.vars.scss89
-rw-r--r--src/objects/_menu.scss101
-rw-r--r--src/objects/_menu.vars.scss83
-rw-r--r--src/objects/_navbar.scss247
-rw-r--r--src/objects/_navbar.vars.scss326
-rw-r--r--src/objects/_palette.scss52
-rw-r--r--src/objects/_placeholders.scss28
-rw-r--r--src/objects/_placeholders.vars.scss8
-rw-r--r--src/objects/_popover.scss54
-rw-r--r--src/objects/_popover.vars.scss35
-rw-r--r--src/objects/_radio.scss149
-rw-r--r--src/objects/_radio.vars.scss107
-rw-r--r--src/objects/_side-nav.scss83
-rw-r--r--src/objects/_side-nav.vars.scss84
-rw-r--r--src/objects/_status-indicator.scss28
-rw-r--r--src/objects/_status-indicator.vars.scss30
-rw-r--r--src/objects/_switch.scss154
-rw-r--r--src/objects/_switch.vars.scss119
-rw-r--r--src/objects/_tabbar.scss110
-rw-r--r--src/objects/_tabbar.vars.scss76
-rw-r--r--src/objects/_table.scss88
-rw-r--r--src/objects/_table.vars.scss68
-rw-r--r--src/objects/_text-field.scss147
-rw-r--r--src/objects/_text-field.vars.scss121
-rw-r--r--src/objects/_thumbnail.scss95
-rw-r--r--src/objects/_thumbnail.vars.scss100
-rw-r--r--src/scopes/_blockquotes.scss28
-rw-r--r--src/scopes/_blockquotes.vars.scss29
-rw-r--r--src/scopes/_body.scss26
-rw-r--r--src/scopes/_body.vars.scss31
-rw-r--r--src/scopes/_code.scss46
-rw-r--r--src/scopes/_code.vars.scss33
-rw-r--r--src/scopes/_figures.scss22
-rw-r--r--src/scopes/_headings.scss90
-rw-r--r--src/scopes/_implicit.scss105
-rw-r--r--src/scopes/_implicit.vars.scss83
-rw-r--r--src/scopes/_links.scss109
-rw-r--r--src/scopes/_links.vars.scss129
-rw-r--r--src/scopes/_lists.scss30
-rw-r--r--src/scopes/_lists.vars.scss13
-rw-r--r--src/scopes/_tables.scss48
-rw-r--r--src/scopes/_tables.vars.scss4
-rw-r--r--src_demo/components/_box.scss14
-rw-r--r--src_demo/components/_content.scss8
-rw-r--r--src_demo/components/_sidebar.scss10
-rw-r--r--src_demo/components/_view.scss12
95 files changed, 3589 insertions, 5543 deletions
diff --git a/src/_config.defaults.scss b/src/_config.defaults.scss
index e9e978a..699cd8e 100644
--- a/src/_config.defaults.scss
+++ b/src/_config.defaults.scss
@@ -1,20 +1,21 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:math"; 3@use 'sass:math';
4@use "pkg:iro-sass/easing" as easing; 4@use 'pkg:iro-sass/src/easing' as easing;
5 5
6$static-colors: ( 6$static-colors: (
7 --base: hsl(0, 0%, 98%), 7 --base: hsl(0, 0%, 98%),
8
8 --levels: ( 9 --levels: (
9 --100: math.div(0, 12) * 110 - 10, 10 --100: math.div(0, 12) * 110 - 10,
10 --200: math.div(1, 12) * 110 - 10, 11 --200: math.div(1, 12) * 110 - 10,
11 --300: math.div(2, 12) * 110 - 10, 12 --300: math.div(2, 12) * 110 - 10,
12 --400: math.div(3, 12) * 110 - 10, 13 --400: math.div(3, 12) * 110 - 10,
13 --500: math.div(4, 12) * 110 - 10, 14 --500: math.div(4, 12) * 110 - 10,
14 --600: math.div(5, 12) * 110 - 10, 15 --600: math.div(5, 12) * 110 - 10,
15 --700: math.div(6, 12) * 110 - 10, 16 --700: math.div(6, 12) * 110 - 10,
16 --800: math.div(7, 12) * 110 - 10, 17 --800: math.div(7, 12) * 110 - 10,
17 --900: math.div(8, 12) * 110 - 10, 18 --900: math.div(8, 12) * 110 - 10,
18 --1000: math.div(9, 12) * 110 - 10, 19 --1000: math.div(9, 12) * 110 - 10,
19 --1100: math.div(10, 12) * 110 - 10, 20 --1100: math.div(10, 12) * 110 - 10,
20 --1200: math.div(11, 12) * 110 - 10, 21 --1200: math.div(11, 12) * 110 - 10,
@@ -22,405 +23,175 @@ $static-colors: (
22 ), 23 ),
23 24
24 --palettes: ( 25 --palettes: (
25 --blue: oklch(56% 0.14 275.25), 26 --blue: oklch(56% .14 275.25),
26 --purple: oklch(56% 0.14 305.58), 27 --purple: oklch(56% .14 305.58),
27 --red: oklch(56% 0.14 14.69), 28 --red: oklch(56% .14 14.69),
28 --green: oklch(56% 0.14 150.48), 29 --green: oklch(56% .14 150.48),
29 --yellow: oklch(56% 0.14 84.08), 30 --yellow: oklch(56% .14 84.08),
30 ), 31 ),
31 32
32 --transparents: ( 33 --transparents: (
33 --100: 0, 34 --100: 0,
34 --200: 0.1, 35 --200: .1,
35 --300: 0.25, 36 --300: .25,
36 --400: 0.4, 37 --400: .4,
37 --500: 0.55, 38 --500: .55,
38 --600: 0.7, 39 --600: .7,
39 --700: 0.8, 40 --700: .8,
40 --800: 0.9, 41 --800: .9,
41 --900: 1, 42 --900: 1,
42 ), 43 ),
43); 44);
44 45
45$semantic-colors-common: ( 46$semantic-colors-common: (
46 --accent: --blue, 47 --accent: --blue,
47 --accent-static: --blue-static, 48 --accent-static: --blue-static,
48 --positive: --green, 49 --positive: --green,
49 --positive-static: --green-static, 50 --positive-static: --green-static,
50 --negative: --red, 51 --negative: --red,
51 --negative-static: --red-static, 52 --negative-static: --red-static,
52 --warning: --yellow, 53 --warning: --yellow,
53 --warning-static: --yellow-static, 54 --warning-static: --yellow-static,
55
56 --focus-raw: --accent,
57 --focus-static: --accent-static,
54 58
55 --focus-raw: --accent, 59 --border-mute: --base --200,
56 --focus-static: --accent-static, 60 --border: --base --300,
61 --border-strong: --base --400,
62
63 --text-disabled: --base --500,
64 --text-mute-more: --base --600,
65 --text-mute: --base --700,
66 --text: --base --800,
67 --heading: --base --900,
57 68
58 --border-mute: --base --200,
59 --border: --base --300,
60 --border-strong: --base --400,
61 --text-disabled: --base --500,
62 --text-mute-more: --base --600,
63 --text-mute: --base --700,
64 --text: --base --800,
65 --heading: --base --900,
66 --focus: ( 69 --focus: (
67 --outline: --focus-raw --400, 70 --outline: --focus-raw --400,
68 --border-mute: --focus-raw --900, 71 --border-mute: --focus-raw --900,
69 --border: --focus-raw --1000, 72 --border: --focus-raw --1000,
70 --border-text: --focus-raw --1000-text, 73 --border-text: --focus-raw --1000-text,
71 --border-strong: --focus-raw --1100, 74 --border-strong: --focus-raw --1100,
72 --text: --focus-raw --1100, 75 --text: --focus-raw --1100,
73 ), 76 ),
74); 77);
75 78
76$theme-light: ( 79$theme-light: (
77 --levels: ( 80 --levels: (
78 --grays: ( 81 --grays: (
79 --50: ( 82 --50: (-8) (.2 + .8 * easing.ease(math.div(0, 12))),
80 -8, 83 --75: (-4) (.2 + .8 * easing.ease(math.div(1, 12))),
81 ) 84 --100: (0) (.2 + .8 * easing.ease(math.div(2, 12))),
82 (
83 0.2 + 0.8 * easing.ease(math.div(0, 12)),
84 ),
85 --75: (
86 -4,
87 )
88 (
89 0.2 + 0.8 * easing.ease(math.div(1, 12)),
90 ),
91 --100: (0)
92 (
93 0.2 + 0.8 * easing.ease(math.div(2, 12)),
94 ),
95 85
96 --200: ( 86 --200: (easing.cubic-bezier(.2, .1, .9, .9, math.div(1, 7)) * 98) (.2 + .8 * easing.ease(math.div(3, 12))),
97 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(1, 7)) * 98, 87 --300: (easing.cubic-bezier(.2, .1, .9, .9, math.div(2, 7)) * 98) (.2 + .8 * easing.ease(math.div(4, 12))),
98 ) 88 --400: (easing.cubic-bezier(.2, .1, .9, .9, math.div(3, 7)) * 98) (.2 + .8 * easing.ease(math.div(5, 12))),
99 (
100 0.2 + 0.8 * easing.ease(math.div(3, 12)),
101 ),
102 --300: (
103 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(2, 7)) * 98,
104 )
105 (
106 0.2 + 0.8 * easing.ease(math.div(4, 12)),
107 ),
108 --400: (
109 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(3, 7)) * 98,
110 )
111 (
112 0.2 + 0.8 * easing.ease(math.div(5, 12)),
113 ),
114 89
115 --500: ( 90 --500: (easing.cubic-bezier(.2, .1, .9, .9, math.div(4, 7)) * 98) (.2 + .8 * easing.ease(math.div(6, 12))),
116 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(4, 7)) * 98, 91 --600: (easing.cubic-bezier(.2, .1, .9, .9, math.div(5, 7)) * 98) (.2 + .8 * easing.ease(math.div(7, 12))),
117 ) 92 --700: (easing.cubic-bezier(.2, .1, .9, .9, math.div(6, 7)) * 98) (.2 + .8 * easing.ease(math.div(8, 12))),
118 ( 93 --800: (easing.cubic-bezier(.2, .1, .9, .9, math.div(7, 7)) * 98) (.2 + .8 * easing.ease(math.div(9, 12))),
119 0.2 + 0.8 * easing.ease(math.div(6, 12)), 94 --900: (106) (.2 + .8 * easing.ease(math.div(10, 12))),
120 ),
121 --600: (
122 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(5, 7)) * 98,
123 )
124 (
125 0.2 + 0.8 * easing.ease(math.div(7, 12)),
126 ),
127 --700: (
128 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(6, 7)) * 98,
129 )
130 (
131 0.2 + 0.8 * easing.ease(math.div(8, 12)),
132 ),
133 --800: (
134 easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(7, 7)) * 98,
135 )
136 (
137 0.2 + 0.8 * easing.ease(math.div(9, 12)),
138 ),
139 --900: (106)
140 (
141 0.2 + 0.8 * easing.ease(math.div(10, 12)),
142 ),
143 ), 95 ),
144 96
145 --colors: ( 97 --colors: (
146 --100: ( 98 --100: (math.div(0, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(0, 12))),
147 math.div(0, 12) * 94 + 7, 99 --200: (math.div(1, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(1, 12))),
148 ) 100 --300: (math.div(2, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(2, 12))),
149 ( 101 --400: (math.div(3, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(3, 12))),
150 0.2 + 0.8 * easing.ease(math.div(0, 12)), 102 --500: (math.div(4, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(4, 12))),
151 ), 103 --600: (math.div(5, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(5, 12))),
152 --200: ( 104 --700: (math.div(6, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(6, 12))),
153 math.div(1, 12) * 94 + 7, 105 --800: (math.div(7, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(7, 12))),
154 ) 106 --900: (math.div(8, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(8, 12))),
155 ( 107 --1000: (math.div(9, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(9, 12))),
156 0.2 + 0.8 * easing.ease(math.div(1, 12)), 108 --1100: (math.div(10, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(10, 12))),
157 ), 109 --1200: (math.div(11, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(11, 12))),
158 --300: ( 110 --1300: (math.div(12, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(12, 12))),
159 math.div(2, 12) * 94 + 7,
160 )
161 (
162 0.2 + 0.8 * easing.ease(math.div(2, 12)),
163 ),
164 --400: (
165 math.div(3, 12) * 94 + 7,
166 )
167 (
168 0.2 + 0.8 * easing.ease(math.div(3, 12)),
169 ),
170 --500: (
171 math.div(4, 12) * 94 + 7,
172 )
173 (
174 0.2 + 0.8 * easing.ease(math.div(4, 12)),
175 ),
176 --600: (
177 math.div(5, 12) * 94 + 7,
178 )
179 (
180 0.2 + 0.8 * easing.ease(math.div(5, 12)),
181 ),
182 --700: (
183 math.div(6, 12) * 94 + 7,
184 )
185 (
186 0.2 + 0.8 * easing.ease(math.div(6, 12)),
187 ),
188 --800: (
189 math.div(7, 12) * 94 + 7,
190 )
191 (
192 0.2 + 0.8 * easing.ease(math.div(7, 12)),
193 ),
194 --900: (
195 math.div(8, 12) * 94 + 7,
196 )
197 (
198 0.2 + 0.8 * easing.ease(math.div(8, 12)),
199 ),
200 --1000: (
201 math.div(9, 12) * 94 + 7,
202 )
203 (
204 0.2 + 0.8 * easing.ease(math.div(9, 12)),
205 ),
206 --1100: (
207 math.div(10, 12) * 94 + 7,
208 )
209 (
210 0.2 + 0.8 * easing.ease(math.div(10, 12)),
211 ),
212 --1200: (
213 math.div(11, 12) * 94 + 7,
214 )
215 (
216 0.2 + 0.8 * easing.ease(math.div(11, 12)),
217 ),
218 --1300: (
219 math.div(12, 12) * 94 + 7,
220 )
221 (
222 0.2 + 0.8 * easing.ease(math.div(12, 12)),
223 ),
224 ), 111 ),
225 ), 112 ),
226 113
227 --palettes: ( 114 --palettes: (
228 --base: hsl(260, 70%, 98%) --grays, 115 --base: hsl(260, 70%, 98%) --grays,
229 --blue: oklch(56% 0.16 275.25) --colors, 116 --blue: oklch(56% .16 275.25) --colors,
230 --purple: oklch(56% 0.16 305.58) --colors, 117 --purple: oklch(56% .16 305.58) --colors,
231 --red: oklch(56% 0.16 14.69) --colors, 118 --red: oklch(56% .16 14.69) --colors,
232 --green: oklch(56% 0.16 150.48) --colors, 119 --green: oklch(56% .16 150.48) --colors,
233 --yellow: oklch(56% 0.16 84.08) --colors, 120 --yellow: oklch(56% .16 84.08) --colors,
234 ), 121 ),
235 122
236 --semantic: map.merge( 123 --semantic: map.merge($semantic-colors-common, (
237 $semantic-colors-common, 124 --bg-l2: --base --50,
238 ( 125 --bg-l1: --base --100,
239 --bg-l2: --base --50, 126 --bg-base: --base --200,
240 --bg-l1: --base --100, 127
241 --bg-base: --base --200, 128 --box: (
242 --box: ( 129 --border: --base --200,
243 --border: --base --200, 130 --border-strong: --base --300,
244 --border-strong: --base --300,
245 ),
246 )
247 ), 131 ),
132 )),
133
248 --constants: ( 134 --constants: (
249 --shadow: rgba(#000, 0.1), 135 --shadow: rgba(#000, .1),
250 ), 136 ),
251); 137);
252 138
253$theme-dark: ( 139$theme-dark: (
254 --levels: ( 140 --levels: (
255 --grays: ( 141 --grays: (
256 --50: (4.4) 142 --50: (4.4) (.3 + .7 * easing.ease(math.div(10, 12))),
257 ( 143 --75: (2.5) (.3 + .7 * easing.ease(math.div(9, 12))),
258 0.3 + 0.7 * easing.ease(math.div(10, 12)), 144 --100: (0) (.3 + .7 * easing.ease(math.div(8, 12))),
259 ),
260 --75: (2.5)
261 (
262 0.3 + 0.7 * easing.ease(math.div(9, 12)),
263 ),
264 --100: (0)
265 (
266 0.3 + 0.7 * easing.ease(math.div(8, 12)),
267 ),
268 145
269 --200: ( 146 --200: (easing.cubic-bezier(.3, .1, .8, .8, math.div(1, 8)) * -108) (.3 + .7 * easing.ease(math.div(7, 12))),
270 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(1, 8)) * -108, 147 --300: (easing.cubic-bezier(.3, .1, .8, .8, math.div(2, 8)) * -108) (.3 + .7 * easing.ease(math.div(6, 12))),
271 ) 148 --400: (easing.cubic-bezier(.3, .1, .8, .8, math.div(3, 8)) * -108) (.3 + .7 * easing.ease(math.div(5, 12))),
272 (
273 0.3 + 0.7 * easing.ease(math.div(7, 12)),
274 ),
275 --300: (
276 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(2, 8)) * -108,
277 )
278 (
279 0.3 + 0.7 * easing.ease(math.div(6, 12)),
280 ),
281 --400: (
282 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(3, 8)) * -108,
283 )
284 (
285 0.3 + 0.7 * easing.ease(math.div(5, 12)),
286 ),
287 149
288 --500: ( 150 --500: (easing.cubic-bezier(.3, .1, .8, .8, math.div(4, 8)) * -108) (.3 + .7 * easing.ease(math.div(4, 12))),
289 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(4, 8)) * -108, 151 --600: (easing.cubic-bezier(.3, .1, .8, .8, math.div(5, 8)) * -108) (.3 + .7 * easing.ease(math.div(3, 12))),
290 ) 152 --700: (easing.cubic-bezier(.3, .1, .8, .8, math.div(6, 8)) * -108) (.3 + .7 * easing.ease(math.div(2, 12))),
291 ( 153 --800: (easing.cubic-bezier(.3, .1, .8, .8, math.div(7, 8)) * -108) (.3 + .7 * easing.ease(math.div(1, 12))),
292 0.3 + 0.7 * easing.ease(math.div(4, 12)), 154 --900: (easing.cubic-bezier(.3, .1, .8, .8, math.div(8, 8)) * -108) (.3 + .7 * easing.ease(math.div(0, 12))),
293 ),
294 --600: (
295 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(5, 8)) * -108,
296 )
297 (
298 0.3 + 0.7 * easing.ease(math.div(3, 12)),
299 ),
300 --700: (
301 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(6, 8)) * -108,
302 )
303 (
304 0.3 + 0.7 * easing.ease(math.div(2, 12)),
305 ),
306 --800: (
307 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(7, 8)) * -108,
308 )
309 (
310 0.3 + 0.7 * easing.ease(math.div(1, 12)),
311 ),
312 --900: (
313 easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(8, 8)) * -108,
314 )
315 (
316 0.3 + 0.7 * easing.ease(math.div(0, 12)),
317 ),
318 ), 155 ),
319 156
320 --colors: ( 157 --colors: (
321 --100: ( 158 --100: (easing.cubic-bezier(.2, .1, .8, .8, math.div(0, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(0, 12))),
322 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(0, 12)) * -109 - 0.5, 159 --200: (easing.cubic-bezier(.2, .1, .8, .8, math.div(1, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(1, 12))),
323 ) 160 --300: (easing.cubic-bezier(.2, .1, .8, .8, math.div(2, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(2, 12))),
324 ( 161 --400: (easing.cubic-bezier(.2, .1, .8, .8, math.div(3, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(3, 12))),
325 0.3 + 0.7 * easing.ease(math.div(0, 12)), 162 --500: (easing.cubic-bezier(.2, .1, .8, .8, math.div(4, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(4, 12))),
326 ), 163 --600: (easing.cubic-bezier(.2, .1, .8, .8, math.div(5, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(5, 12))),
327 --200: ( 164 --700: (easing.cubic-bezier(.2, .1, .8, .8, math.div(6, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(6, 12))),
328 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(1, 12)) * -109 - 0.5, 165 --800: (easing.cubic-bezier(.2, .1, .8, .8, math.div(7, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(7, 12))),
329 ) 166 --900: (easing.cubic-bezier(.2, .1, .8, .8, math.div(8, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(8, 12))),
330 ( 167 --1000: (easing.cubic-bezier(.2, .1, .8, .8, math.div(9, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(9, 12))),
331 0.3 + 0.7 * easing.ease(math.div(1, 12)), 168 --1100: (easing.cubic-bezier(.2, .1, .8, .8, math.div(10, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(10, 12))),
332 ), 169 --1200: (easing.cubic-bezier(.2, .1, .8, .8, math.div(11, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(11, 12))),
333 --300: ( 170 --1300: (easing.cubic-bezier(.2, .1, .8, .8, math.div(12, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(12, 12))),
334 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(2, 12)) * -109 - 0.5,
335 )
336 (
337 0.3 + 0.7 * easing.ease(math.div(2, 12)),
338 ),
339 --400: (
340 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(3, 12)) * -109 - 0.5,
341 )
342 (
343 0.3 + 0.7 * easing.ease(math.div(3, 12)),
344 ),
345 --500: (
346 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(4, 12)) * -109 - 0.5,
347 )
348 (
349 0.3 + 0.7 * easing.ease(math.div(4, 12)),
350 ),
351 --600: (
352 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(5, 12)) * -109 - 0.5,
353 )
354 (
355 0.3 + 0.7 * easing.ease(math.div(5, 12)),
356 ),
357 --700: (
358 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(6, 12)) * -109 - 0.5,
359 )
360 (
361 0.3 + 0.7 * easing.ease(math.div(6, 12)),
362 ),
363 --800: (
364 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(7, 12)) * -109 - 0.5,
365 )
366 (
367 0.3 + 0.7 * easing.ease(math.div(7, 12)),
368 ),
369 --900: (
370 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(8, 12)) * -109 - 0.5,
371 )
372 (
373 0.3 + 0.7 * easing.ease(math.div(8, 12)),
374 ),
375 --1000: (
376 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(9, 12)) * -109 - 0.5,
377 )
378 (
379 0.3 + 0.7 * easing.ease(math.div(9, 12)),
380 ),
381 --1100: (
382 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(10, 12)) * -109 - 0.5,
383 )
384 (
385 0.3 + 0.7 * easing.ease(math.div(10, 12)),
386 ),
387 --1200: (
388 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(11, 12)) * -109 - 0.5,
389 )
390 (
391 0.3 + 0.7 * easing.ease(math.div(11, 12)),
392 ),
393 --1300: (
394 easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(12, 12)) * -109 - 0.5,
395 )
396 (
397 0.3 + 0.7 * easing.ease(math.div(12, 12)),
398 ),
399 ), 171 ),
400 ), 172 ),
401 173
402 --palettes: ( 174 --palettes: (
403 --base: hsl(257, 7%, 20%) --grays, 175 --base: hsl(257, 7%, 20%) --grays,
404 --blue: oklch(56% 0.16 275.25) --colors, 176 --blue: oklch(56% .16 275.25) --colors,
405 --purple: oklch(56% 0.16 305.58) --colors, 177 --purple: oklch(56% .16 305.58) --colors,
406 --red: oklch(56% 0.16 14.69) --colors, 178 --red: oklch(56% .16 14.69) --colors,
407 --green: oklch(56% 0.16 150.48) --colors, 179 --green: oklch(56% .16 150.48) --colors,
408 --yellow: oklch(56% 0.16 84.08) --colors, 180 --yellow: oklch(56% .16 84.08) --colors,
409 ), 181 ),
410 182
411 --semantic: map.merge( 183 --semantic: map.merge($semantic-colors-common, (
412 $semantic-colors-common, 184 --bg-base: --base --50,
413 ( 185 --bg-l1: --base --75,
414 --bg-base: --base --50, 186 --bg-l2: --base --100,
415 --bg-l1: --base --75, 187
416 --bg-l2: --base --100, 188 --box: (
417 --box: ( 189 --border: --base --100,
418 --border: --base --100, 190 --border-strong: --base --100,
419 --border-strong: --base --100,
420 ),
421 )
422 ), 191 ),
192 )),
193
423 --constants: ( 194 --constants: (
424 --shadow: rgba(#000, 0.35), 195 --shadow: rgba(#000, .35),
425 ), 196 ),
426); 197);
diff --git a/src/_config.scss b/src/_config.scss
index 6ddef96..a3ea6ee 100644
--- a/src/_config.scss
+++ b/src/_config.scss
@@ -1,17 +1,14 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:math"; 3@use 'sass:math';
4@use "pkg:iro-sass/easing" as easing; 4@use 'pkg:iro-sass/src/easing' as easing;
5@use "config.defaults" as def; 5@use 'config.defaults' as def;
6 6
7$static-colors-override: () !default; 7$static-colors-override: () !default;
8$static-colors: map.deep-merge(def.$static-colors, $static-colors-override) !default; 8$static-colors: map.deep-merge(def.$static-colors, $static-colors-override) !default;
9 9
10$semantic-colors-common-override: () !default; 10$semantic-colors-common-override: () !default;
11$semantic-colors-common: map.deep-merge( 11$semantic-colors-common: map.deep-merge(def.$semantic-colors-common, $semantic-colors-common-override) !default;
12 def.$semantic-colors-common,
13 $semantic-colors-common-override
14) !default;
15 12
16$theme-light-override: () !default; 13$theme-light-override: () !default;
17$theme-light: map.deep-merge(def.$theme-light, $theme-light-override) !default; 14$theme-light: map.deep-merge(def.$theme-light, $theme-light-override) !default;
@@ -20,15 +17,12 @@ $theme-dark-override: () !default;
20$theme-dark: map.deep-merge(def.$theme-dark, $theme-dark-override) !default; 17$theme-dark: map.deep-merge(def.$theme-dark, $theme-dark-override) !default;
21 18
22$themes-override: () !default; 19$themes-override: () !default;
23$themes: map.deep-merge( 20$themes: map.deep-merge((
24 ( 21 --main: (
25 --main: ( 22 light: $theme-light,
26 light: $theme-light, 23 dark: $theme-dark,
27 dark: $theme-dark,
28 ),
29 ), 24 ),
30 $themes-override 25), $themes-override) !default;
31) !default;
32 26
33$theme-default: list.nth(map.keys($themes), 1) !default; 27$theme-default: list.nth(map.keys($themes), 1) !default;
34 28
diff --git a/src/_core.scss b/src/_core.scss
index 3427579..8c761ff 100644
--- a/src/_core.scss
+++ b/src/_core.scss
@@ -1,42 +1,42 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "config"; 6@use 'config';
7 7
8@use "core.vars" as vars; 8@use 'core.vars' as vars;
9@forward "core.vars"; 9@forward 'core.vars';
10 10
11@mixin styles { 11@mixin styles {
12 @each $theme-name, $theme in vars.$themes { 12 @each $theme-name, $theme in vars.$themes {
13 @if $theme-name == config.$theme-default { 13 @if $theme-name == config.$theme-default {
14 :root { 14 :root {
15 @include props.materialize(map.values(meta.module-variables("vars"))); 15 @include props.materialize(map.values(meta.module-variables('vars')));
16 16
17 @if map.has-key($theme, "dark") { 17 @if map.has-key($theme, 'dark') {
18 @media (prefers-color-scheme: dark) { 18 @media (prefers-color-scheme: dark) {
19 @include props.materialize(map.get($theme, "dark")); 19 @include props.materialize(map.get($theme, 'dark'));
20 } 20 }
21 } 21 }
22 } 22 }
23 23
24 @if map.has-key($theme, "dark") and config.$explicit-dark-theme { 24 @if map.has-key($theme, 'dark') and config.$explicit-dark-theme {
25 @include bem.theme("dark") { 25 @include bem.theme('dark') {
26 @include props.materialize(map.values(meta.module-variables("vars"))); 26 @include props.materialize(map.values(meta.module-variables('vars')));
27 @include props.materialize(map.get($theme, "dark")); 27 @include props.materialize(map.get($theme, 'dark'));
28 } 28 }
29 } 29 }
30 } @else { 30 } @else {
31 @include bem.theme(string.slice($theme-name, 3)) { 31 @include bem.theme(string.slice($theme-name, 3)) {
32 @include props.materialize(map.get($theme, "light")); 32 @include props.materialize(map.get($theme, 'light'));
33 33
34 color: props.get(vars.$theme, --text); 34 color: props.get(vars.$theme, --text);
35 background-color: props.get(vars.$theme, --bg-base); 35 background-color: props.get(vars.$theme, --bg-base);
36 36
37 @if map.has-key($theme, "dark") { 37 @if map.has-key($theme, 'dark') {
38 @media (prefers-color-scheme: dark) { 38 @media (prefers-color-scheme: dark) {
39 @include props.materialize(map.get($theme, "dark")); 39 @include props.materialize(map.get($theme, 'dark'));
40 } 40 }
41 } 41 }
42 } 42 }
diff --git a/src/_core.vars.scss b/src/_core.vars.scss
index bef5f88..11acbfa 100644
--- a/src/_core.vars.scss
+++ b/src/_core.vars.scss
@@ -1,45 +1,45 @@
1// stylelint-disable scss/dollar-variable-pattern 1// stylelint-disable scss/dollar-variable-pattern
2 2
3@use "sass:map"; 3@use 'sass:map';
4@use "sass:meta"; 4@use 'sass:meta';
5@use "sass:list"; 5@use 'sass:list';
6@use "functions" as fn; 6@use 'functions' as fn;
7@use "config"; 7@use 'config';
8@use "pkg:iro-sass/functions"; 8@use 'pkg:iro-sass/src/functions';
9@use "pkg:iro-sass/props"; 9@use 'pkg:iro-sass/src/props';
10 10
11$size--0: props.def(--size--0, 0) !default; 11$size--0: props.def(--size--0, 0) !default;
12$size--10: props.def(--size--10, functions.px-to-rem(1px)) !default; 12$size--10: props.def(--size--10, functions.px-to-rem(1px)) !default;
13$size--25: props.def(--size--25, functions.px-to-rem(2px)) !default; 13$size--25: props.def(--size--25, functions.px-to-rem(2px)) !default;
14$size--40: props.def(--size--40, functions.px-to-rem(3px)) !default; 14$size--40: props.def(--size--40, functions.px-to-rem(3px)) !default;
15$size--50: props.def(--size--50, functions.px-to-rem(4px)) !default; 15$size--50: props.def(--size--50, functions.px-to-rem(4px)) !default;
16$size--65: props.def(--size--65, functions.px-to-rem(5px)) !default; 16$size--65: props.def(--size--65, functions.px-to-rem(5px)) !default;
17$size--75: props.def(--size--75, functions.px-to-rem(6px)) !default; 17$size--75: props.def(--size--75, functions.px-to-rem(6px)) !default;
18$size--85: props.def(--size--85, functions.px-to-rem(7px)) !default; 18$size--85: props.def(--size--85, functions.px-to-rem(7px)) !default;
19$size--100: props.def(--size--100, functions.px-to-rem(8px)) !default; 19$size--100: props.def(--size--100, functions.px-to-rem(8px)) !default;
20$size--115: props.def(--size--115, functions.px-to-rem(9px)) !default; 20$size--115: props.def(--size--115, functions.px-to-rem(9px)) !default;
21$size--125: props.def(--size--125, functions.px-to-rem(10px)) !default; 21$size--125: props.def(--size--125, functions.px-to-rem(10px)) !default;
22$size--130: props.def(--size--130, functions.px-to-rem(11px)) !default; 22$size--130: props.def(--size--130, functions.px-to-rem(11px)) !default;
23$size--150: props.def(--size--150, functions.px-to-rem(12px)) !default; 23$size--150: props.def(--size--150, functions.px-to-rem(12px)) !default;
24$size--160: props.def(--size--160, functions.px-to-rem(13px)) !default; 24$size--160: props.def(--size--160, functions.px-to-rem(13px)) !default;
25$size--175: props.def(--size--175, functions.px-to-rem(14px)) !default; 25$size--175: props.def(--size--175, functions.px-to-rem(14px)) !default;
26$size--200: props.def(--size--200, functions.px-to-rem(16px)) !default; 26$size--200: props.def(--size--200, functions.px-to-rem(16px)) !default;
27$size--225: props.def(--size--225, functions.px-to-rem(18px)) !default; 27$size--225: props.def(--size--225, functions.px-to-rem(18px)) !default;
28$size--250: props.def(--size--250, functions.px-to-rem(20px)) !default; 28$size--250: props.def(--size--250, functions.px-to-rem(20px)) !default;
29$size--275: props.def(--size--275, functions.px-to-rem(22px)) !default; 29$size--275: props.def(--size--275, functions.px-to-rem(22px)) !default;
30$size--300: props.def(--size--300, functions.px-to-rem(24px)) !default; 30$size--300: props.def(--size--300, functions.px-to-rem(24px)) !default;
31$size--325: props.def(--size--325, functions.px-to-rem(26px)) !default; 31$size--325: props.def(--size--325, functions.px-to-rem(26px)) !default;
32$size--350: props.def(--size--350, functions.px-to-rem(28px)) !default; 32$size--350: props.def(--size--350, functions.px-to-rem(28px)) !default;
33$size--375: props.def(--size--375, functions.px-to-rem(30px)) !default; 33$size--375: props.def(--size--375, functions.px-to-rem(30px)) !default;
34$size--400: props.def(--size--400, functions.px-to-rem(32px)) !default; 34$size--400: props.def(--size--400, functions.px-to-rem(32px)) !default;
35$size--450: props.def(--size--450, functions.px-to-rem(36px)) !default; 35$size--450: props.def(--size--450, functions.px-to-rem(36px)) !default;
36$size--500: props.def(--size--500, functions.px-to-rem(40px)) !default; 36$size--500: props.def(--size--500, functions.px-to-rem(40px)) !default;
37$size--550: props.def(--size--550, functions.px-to-rem(44px)) !default; 37$size--550: props.def(--size--550, functions.px-to-rem(44px)) !default;
38$size--600: props.def(--size--600, functions.px-to-rem(48px)) !default; 38$size--600: props.def(--size--600, functions.px-to-rem(48px)) !default;
39$size--650: props.def(--size--650, functions.px-to-rem(52px)) !default; 39$size--650: props.def(--size--650, functions.px-to-rem(52px)) !default;
40$size--700: props.def(--size--700, functions.px-to-rem(56px)) !default; 40$size--700: props.def(--size--700, functions.px-to-rem(56px)) !default;
41$size--800: props.def(--size--800, functions.px-to-rem(64px)) !default; 41$size--800: props.def(--size--800, functions.px-to-rem(64px)) !default;
42$size--900: props.def(--size--900, functions.px-to-rem(72px)) !default; 42$size--900: props.def(--size--900, functions.px-to-rem(72px)) !default;
43$size--1000: props.def(--size--1000, functions.px-to-rem(80px)) !default; 43$size--1000: props.def(--size--1000, functions.px-to-rem(80px)) !default;
44$size--1200: props.def(--size--1200, functions.px-to-rem(96px)) !default; 44$size--1200: props.def(--size--1200, functions.px-to-rem(96px)) !default;
45$size--1600: props.def(--size--1600, functions.px-to-rem(128px)) !default; 45$size--1600: props.def(--size--1600, functions.px-to-rem(128px)) !default;
@@ -58,105 +58,58 @@ $size--4600: props.def(--size--4600, functions.px-to-rem(368px)) !default;
58$size--5000: props.def(--size--5000, functions.px-to-rem(400px)) !default; 58$size--5000: props.def(--size--5000, functions.px-to-rem(400px)) !default;
59$size--6000: props.def(--size--6000, functions.px-to-rem(480px)) !default; 59$size--6000: props.def(--size--6000, functions.px-to-rem(480px)) !default;
60 60
61$font--standard--family: props.def( 61$font--standard--family: props.def(--font--standard--family, ('Inter', 'Open Sans', 'Segoe UI', 'Droid Sans', Roboto, Oxygen, 'Helvetica Neue', Helvetica, Tahoma, Arial, sans-serif)) !default;
62 --font--standard--family, 62$font--standard--line-height: props.def(--font--standard--line-height, 1.5) !default;
63 ( 63$font--standard--feature-settings: props.def(--font--standard--feature-settings, ('\'ss01\'')) !default;
64 "Inter",
65 "Open Sans",
66 "Segoe UI",
67 "Droid Sans",
68 Roboto,
69 Oxygen,
70 "Helvetica Neue",
71 Helvetica,
72 Tahoma,
73 Arial,
74 sans-serif
75 )
76) !default;
77$font--standard--line-height: props.def(--font--standard--line-height, 1.5) !default;
78$font--standard--feature-settings: props.def(
79 --font--standard--feature-settings,
80 ("'ss01'")
81) !default;
82 64
83$font--headline--family: props.def( 65$font--headline--family: props.def(--font--headline--family, props.get($font--standard--family)) !default;
84 --font--headline--family, 66$font--headline--line-height: props.def(--font--headline--line-height, 1.3) !default;
85 props.get($font--standard--family) 67$font--headline--weight: props.def(--font--headline--weight, 800) !default;
86) !default; 68$font--headline--feature-settings: props.def(--font--headline--feature-settings, ('\'opsz\'' 32, '\'ss01\'', '\'cv06\'')) !default;
87$font--headline--line-height: props.def(--font--headline--line-height, 1.3) !default;
88$font--headline--weight: props.def(--font--headline--weight, 800) !default;
89$font--headline--feature-settings: props.def(
90 --font--headline--feature-settings,
91 ("'opsz'" 32, "'ss01'", "'cv06'")
92) !default;
93 69
94$font--mono--family: props.def( 70$font--mono--family: props.def(--font--mono--family, ('Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace)) !default;
95 --font--mono--family, 71$font--mono--line-height: props.def(--font--mono--line-height, 1.4) !default;
96 ( 72$font--mono--feature-settings: props.def(--font--mono--feature-settings, ('\'calt\'' 0, '\'dlig\' 1', '\'ss09\' 1')) !default;
97 "Iosevka Term SS09",
98 "IBM Plex Mono",
99 "Menlo",
100 "DejaVu Sans Mono",
101 "Bitstream Vera Sans Mono",
102 Courier,
103 monospace
104 )
105) !default;
106$font--mono--line-height: props.def(--font--mono--line-height, 1.4) !default;
107$font--mono--feature-settings: props.def(
108 --font--mono--feature-settings,
109 ("'calt'" 0, "'dlig' 1", "'ss09' 1")
110) !default;
111 73
112$font-size--50: props.def(--font-size--50, functions.px-to-rem(12px)) !default; 74$font-size--50: props.def(--font-size--50, functions.px-to-rem(12px)) !default;
113$font-size--75: props.def(--font-size--75, functions.px-to-rem(13px)) !default; 75$font-size--75: props.def(--font-size--75 , functions.px-to-rem(13px)) !default;
114$font-size--100: props.def(--font-size--100, functions.px-to-rem(14px)) !default; 76$font-size--100: props.def(--font-size--100, functions.px-to-rem(14px)) !default;
115$font-size--150: props.def(--font-size--150, functions.px-to-rem(16px)) !default; 77$font-size--150: props.def(--font-size--150, functions.px-to-rem(16px)) !default;
116$font-size--200: props.def(--font-size--200, functions.px-to-rem(18px)) !default; 78$font-size--200: props.def(--font-size--200, functions.px-to-rem(18px)) !default;
117$font-size--300: props.def(--font-size--300, functions.px-to-rem(20px)) !default; 79$font-size--300: props.def(--font-size--300, functions.px-to-rem(20px)) !default;
118$font-size--400: props.def(--font-size--400, functions.px-to-rem(24px)) !default; 80$font-size--400: props.def(--font-size--400, functions.px-to-rem(24px)) !default;
119$font-size--500: props.def(--font-size--500, functions.px-to-rem(28px)) !default; 81$font-size--500: props.def(--font-size--500, functions.px-to-rem(28px)) !default;
120$font-size--600: props.def(--font-size--600, functions.px-to-rem(32px)) !default; 82$font-size--600: props.def(--font-size--600, functions.px-to-rem(32px)) !default;
121$font-size--700: props.def(--font-size--700, functions.px-to-rem(36px)) !default; 83$font-size--700: props.def(--font-size--700, functions.px-to-rem(36px)) !default;
122$font-size--800: props.def(--font-size--800, functions.px-to-rem(40px)) !default; 84$font-size--800: props.def(--font-size--800, functions.px-to-rem(40px)) !default;
123$font-size--900: props.def(--font-size--900, functions.px-to-rem(45px)) !default; 85$font-size--900: props.def(--font-size--900, functions.px-to-rem(45px)) !default;
124$font-size--1000: props.def(--font-size--1000, functions.px-to-rem(50px)) !default; 86$font-size--1000: props.def(--font-size--1000, functions.px-to-rem(50px)) !default;
125$font-size--1100: props.def(--font-size--1100, functions.px-to-rem(60px)) !default; 87$font-size--1100: props.def(--font-size--1100, functions.px-to-rem(60px)) !default;
126$font-size--1200: props.def(--font-size--1200, functions.px-to-rem(70px)) !default; 88$font-size--1200: props.def(--font-size--1200, functions.px-to-rem(70px)) !default;
127$font-size--1300: props.def(--font-size--1300, functions.px-to-rem(80px)) !default; 89$font-size--1300: props.def(--font-size--1300, functions.px-to-rem(80px)) !default;
128 90
129$border-width--thick: props.def(--border-width--thick, 4px) !default; 91$border-width--thick: props.def(--border-width--thick, 4px) !default;
130$border-width--medium: props.def(--border-width--medium, 2px) !default; 92$border-width--medium: props.def(--border-width--medium, 2px) !default;
131$border-width--thin: props.def(--border-width--thin, 1px) !default; 93$border-width--thin: props.def(--border-width--thin, 1px) !default;
132 94
133$shadow--l1--x: props.def(--shadow--l1--x, 0) !default; 95$shadow--l1--x: props.def(--shadow--l1--x, 0) !default;
134$shadow--l1--y: props.def(--shadow--l1--y, 2px) !default; 96$shadow--l1--y: props.def(--shadow--l1--y, 2px) !default;
135$shadow--l1--blur: props.def(--shadow--l1--blur, 3px) !default; 97$shadow--l1--blur: props.def(--shadow--l1--blur, 3px) !default;
136$shadow--l1--grow: props.def(--shadow--l1--grow, -1px) !default; 98$shadow--l1--grow: props.def(--shadow--l1--grow, -1px) !default;
137 99
138$shadow--l2--x: props.def(--shadow--l2--x, 0) !default; 100$shadow--l2--x: props.def(--shadow--l2--x, 0) !default;
139$shadow--l2--y: props.def(--shadow--l2--y, 5px) !default; 101$shadow--l2--y: props.def(--shadow--l2--y, 5px) !default;
140$shadow--l2--blur: props.def(--shadow--l2--blur, 12px) !default; 102$shadow--l2--blur: props.def(--shadow--l2--blur, 12px) !default;
141$shadow--l2--grow: props.def(--shadow--l2--grow, -4px) !default; 103$shadow--l2--grow: props.def(--shadow--l2--grow, -4px) !default;
142 104
143$rounding: props.def(--rounding, 12px) !default; 105$rounding: props.def(--rounding, 12px) !default;
144$rounding--sm: props.def(--rounding--sm, 4px) !default; 106$rounding--sm: props.def(--rounding--sm, 4px) !default;
145 107
146$key-focus--outline-width: props.def( 108$key-focus--outline-width: props.def(--key-focus--outline-width, props.get($border-width--thick)) !default;
147 --key-focus--outline-width, 109$key-focus--border-width: props.def(--key-focus--border-width, props.get($border-width--medium)) !default;
148 props.get($border-width--thick) 110$key-focus--border-offset: props.def(--key-focus--border-offset, props.get($border-width--medium)) !default;
149) !default;
150$key-focus--border-width: props.def(
151 --key-focus--border-width,
152 props.get($border-width--medium)
153) !default;
154$key-focus--border-offset: props.def(
155 --key-focus--border-offset,
156 props.get($border-width--medium)
157) !default;
158 111
159$list--indent: props.def(--list--indent, props.get($size--400)) !default; 112$list--indent: props.def(--list--indent, props.get($size--400)) !default;
160$list--compact-indent: props.def(--list--compact-indent, props.get($size--250)) !default; 113$list--compact-indent: props.def(--list--compact-indent, props.get($size--250)) !default;
161 114
162$sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default; 115$sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default;
@@ -166,34 +119,20 @@ $sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default;
166$-static-colors: (); 119$-static-colors: ();
167 120
168@each $palette-name, $palette in map.get(config.$static-colors, --palettes) { 121@each $palette-name, $palette in map.get(config.$static-colors, --palettes) {
169 $palette: fn.palette( 122 $palette: fn.palette($palette, map.get(config.$static-colors, --levels), map.get(config.$static-colors, --base));
170 $palette, 123 $-static-colors: map.merge($-static-colors, ( $palette-name: $palette ));
171 map.get(config.$static-colors, --levels),
172 map.get(config.$static-colors, --base)
173 );
174 $-static-colors: map.merge(
175 $-static-colors,
176 (
177 $palette-name: $palette,
178 )
179 );
180} 124}
181 125
182// 126//
183 127
184$transparent-colors: props.def(--transparent-colors, (), "color"); 128$transparent-colors: props.def(--transparent-colors, (), 'color');
185 129
186@each $palette-name, $palette in (--black: #000 #fff, --white: #fff #000) { 130@each $palette-name, $palette in (--black: #000 #fff, --white: #fff #000) {
187 $color: list.nth($palette, 1); 131 $color: list.nth($palette, 1);
188 $text: list.nth($palette, 2); 132 $text: list.nth($palette, 2);
189 133
190 $palette: fn.transparent-palette($color, $text, map.get(config.$static-colors, --transparents)); 134 $palette: fn.transparent-palette($color, $text, map.get(config.$static-colors, --transparents));
191 $transparent-colors: props.merge( 135 $transparent-colors: props.merge($transparent-colors, ( $palette-name: $palette ));
192 $transparent-colors,
193 (
194 $palette-name: $palette,
195 )
196 );
197} 136}
198 137
199// 138//
@@ -203,64 +142,40 @@ $themes: ();
203@each $theme-name, $theme in config.$themes { 142@each $theme-name, $theme in config.$themes {
204 @each $variant-name, $variant in $theme { 143 @each $variant-name, $variant in $theme {
205 @if $variant != null { 144 @if $variant != null {
206 $compiled: props.def(--colors, (), "color"); 145 $compiled: props.def(--colors, (), 'color');
207 146
208 @each $palette-name, $palette in $-static-colors { 147 @each $palette-name, $palette in $-static-colors {
209 $compiled: props.merge($compiled, (#{$palette-name}-static: $palette)); 148 $compiled: props.merge($compiled, ( #{$palette-name}-static: $palette ));
210 } 149 }
211 150
212 @each $palette-name, $palette in map.get($variant, --palettes) { 151 @each $palette-name, $palette in map.get($variant, --palettes) {
213 $base-color: list.nth($palette, 1); 152 $base-color: list.nth($palette, 1);
214 $levels: list.nth($palette, 2); 153 $levels: list.nth($palette, 2);
215 154
216 $palette: fn.palette( 155 $palette: fn.palette($base-color, map.get($variant, --levels, $levels), list.nth(map.get($variant, --palettes, --base), 1));
217 $base-color, 156 $compiled: props.merge($compiled, ( $palette-name: $palette ));
218 map.get($variant, --levels, $levels),
219 list.nth(map.get($variant, --palettes, --base), 1)
220 );
221 $compiled: props.merge(
222 $compiled,
223 (
224 $palette-name: $palette,
225 )
226 );
227 } 157 }
228 158
229 @each $color, $value in map.get($variant, --constants) { 159 @each $color, $value in map.get($variant, --constants) {
230 $compiled: props.merge( 160 $compiled: props.merge($compiled, ( $color: $value ));
231 $compiled,
232 (
233 $color: $value,
234 )
235 );
236 } 161 }
237 162
238 @each $color, $ref in map.get($variant, --semantic) { 163 @each $color, $ref in map.get($variant, --semantic) {
239 $res: (); 164 $res: ();
240 165
241 @if meta.type-of($ref) == "map" { 166 @if meta.type-of($ref) == 'map' {
242 @each $key, $r in $ref { 167 @each $key, $r in $ref {
243 $re1: list.nth($r, 1); 168 $re1: list.nth($r, 1);
244 $re2: functions.list-slice($r, 2); 169 $re2: functions.list-slice($r, 2);
245 $res: map.merge( 170 $res: map.merge($res, ($key: props.get($compiled, $re1, $re2...)));
246 $res,
247 (
248 $key: props.get($compiled, $re1, $re2...),
249 )
250 );
251 } 171 }
252 } @else { 172 } @else {
253 $ref1: list.nth($ref, 1); 173 $ref1: list.nth($ref, 1);
254 $ref2: functions.list-slice($ref, 2); 174 $ref2: functions.list-slice($ref, 2);
255 $res: props.get($compiled, $ref1, $ref2...); 175 $res: props.get($compiled, $ref1, $ref2...);
256 } 176 }
257 177
258 $compiled: props.merge( 178 $compiled: props.merge($compiled, ( $color: $res ));
259 $compiled,
260 (
261 $color: $res,
262 )
263 );
264 } 179 }
265 180
266 $themes: map.set($themes, $theme-name, $variant-name, $compiled); 181 $themes: map.set($themes, $theme-name, $variant-name, $compiled);
diff --git a/src/_functions.scss b/src/_functions.scss
index 8fb0d98..e237ccc 100644
--- a/src/_functions.scss
+++ b/src/_functions.scss
@@ -1,17 +1,17 @@
1@use "sass:color"; 1@use 'sass:color';
2@use "sass:math"; 2@use 'sass:math';
3@use "sass:map"; 3@use 'sass:map';
4@use "sass:list"; 4@use 'sass:list';
5@use "sass:meta"; 5@use 'sass:meta';
6 6
7@use "pkg:iro-sass/easing"; 7@use 'pkg:iro-sass/src/easing';
8@use "apca"; 8@use 'apca';
9 9
10@function palette($base-color, $levels, $ref-color: $base-color) { 10@function palette($base-color, $levels, $ref-color: $base-color) {
11 $base-lch: color.to-space($base-color, oklch); 11 $base-lch: color.to-space($base-color, oklch);
12 $ref-lch: color.to-space($ref-color, oklch); 12 $ref-lch: color.to-space($ref-color, oklch);
13 13
14 $ref-l: color.channel($ref-lch, "lightness"); 14 $ref-l: color.channel($ref-lch, 'lightness');
15 $ref-y: apca.sRGB_to_Y($ref-lch); 15 $ref-y: apca.sRGB_to_Y($ref-lch);
16 16
17 $black-y: apca.sRGB_to_Y(#000); 17 $black-y: apca.sRGB_to_Y(#000);
@@ -32,19 +32,17 @@
32 $h: list.nth($level, 3); 32 $h: list.nth($level, 3);
33 } 33 }
34 34
35 @if meta.type-of($color) != "color" { 35 @if meta.type-of($color) != 'color' {
36 $y: apca.reverse($color, $ref-y); 36 $y: apca.reverse($color, $ref-y);
37 $l: color.channel($base-lch, "lightness"); 37 $l: color.channel($base-lch, 'lightness');
38 38
39 @if $y != false { 39 @if $y != false {
40 $l: color.channel(apca.Y_to_sRGB($y), "lightness", oklch); 40 $l: color.channel(apca.Y_to_sRGB($y), 'lightness', oklch);
41 } @else { 41 } @else {
42 $y: $ref-y; 42 $y: $ref-y;
43 } 43 }
44 44
45 $color: oklch( 45 $color: oklch($l ($c * color.channel($base-lch, 'chroma')) ($h + color.channel($base-lch, 'hue')));
46 $l ($c * color.channel($base-lch, "chroma")) ($h + color.channel($base-lch, "hue"))
47 );
48 } @else { 46 } @else {
49 $y: apca.sRGB_to_Y($color); 47 $y: apca.sRGB_to_Y($color);
50 } 48 }
@@ -53,11 +51,7 @@
53 $contrast-white: apca.contrast($white-y, $y); 51 $contrast-white: apca.contrast($white-y, $y);
54 52
55 $palette: map.set($palette, $key, $color); 53 $palette: map.set($palette, $key, $color);
56 $palette: map.set( 54 $palette: map.set($palette, #{$key}-text, if(sass(math.abs($contrast-black) > math.abs($contrast-white)): #000; else: #fff));
57 $palette,
58 #{$key}-text,
59 if(sass(math.abs($contrast-black) > math.abs($contrast-white)): #000; else: #fff)
60 );
61 } 55 }
62 56
63 @return $palette; 57 @return $palette;
diff --git a/src/_props.scss b/src/_props.scss
index 2683ca9..0830375 100644
--- a/src/_props.scss
+++ b/src/_props.scss
@@ -1,46 +1,46 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:meta"; 3@use 'sass:meta';
4@use "sass:string"; 4@use 'sass:string';
5@use "config"; 5@use 'config';
6@use "pkg:include-media/dist/include-media" as media; 6@use 'pkg:include-media/dist/include-media' as media;
7@use "pkg:iro-sass/bem"; 7@use 'pkg:iro-sass/src/bem';
8@use "pkg:iro-sass/props"; 8@use 'pkg:iro-sass/src/props';
9 9
10@mixin materialize-at-root($ref) { 10@mixin materialize-at-root($ref) {
11 @if meta.type-of($ref) == "map" { 11 @if meta.type-of($ref) == 'map' {
12 $ref: map.values($ref); 12 $ref: map.values($ref);
13 } 13 }
14 14
15 :root { 15 :root {
16 @include props.materialize($ref, null); 16 @include props.materialize($ref, null);
17 @include props.materialize($ref, "color"); 17 @include props.materialize($ref, 'color');
18 18
19 @each $breakpoint in map.keys(media.$breakpoints) { 19 @each $breakpoint in map.keys(media.$breakpoints) {
20 @include media.media("<=#{$breakpoint}") { 20 @include media.media('<=#{$breakpoint}') {
21 @include props.materialize($ref, $breakpoint); 21 @include props.materialize($ref, $breakpoint);
22 } 22 }
23 } 23 }
24 24
25 @media (prefers-color-scheme: dark) { 25 @media (prefers-color-scheme: dark) {
26 @include props.materialize($ref, "dark"); 26 @include props.materialize($ref, 'dark');
27 } 27 }
28 } 28 }
29 29
30 @if config.$explicit-dark-theme { 30 @if config.$explicit-dark-theme {
31 @include bem.theme("dark") { 31 @include bem.theme('dark') {
32 @include props.materialize($ref, "color"); 32 @include props.materialize($ref, 'color');
33 @include props.materialize($ref, "dark"); 33 @include props.materialize($ref, 'dark');
34 } 34 }
35 } 35 }
36 36
37 @each $theme-name in map.keys(config.$themes) { 37 @each $theme-name in map.keys(config.$themes) {
38 @if $theme-name != config.$theme-default { 38 @if $theme-name != config.$theme-default {
39 @include bem.theme(string.slice($theme-name, 3)) { 39 @include bem.theme(string.slice($theme-name, 3)) {
40 @include props.materialize($ref, "color"); 40 @include props.materialize($ref, 'color');
41 41
42 @media (prefers-color-scheme: dark) { 42 @media (prefers-color-scheme: dark) {
43 @include props.materialize($ref, "dark"); 43 @include props.materialize($ref, 'dark');
44 } 44 }
45 } 45 }
46 } 46 }
diff --git a/src/_themes.scss b/src/_themes.scss
index be13e60..f06a5ca 100644
--- a/src/_themes.scss
+++ b/src/_themes.scss
@@ -1,71 +1,71 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "pkg:include-media/dist/include-media" as media; 5@use 'pkg:include-media/dist/include-media' as media;
6 6
7@use "core.vars" as vars; 7@use 'core.vars' as vars;
8@forward "core.vars"; 8@forward 'core.vars';
9 9
10@mixin styles { 10@mixin styles {
11 @include bem.theme("base") { 11 @include bem.theme('base') {
12 background-color: props.get(vars.$theme, --bg-base); 12 background-color: props.get(vars.$theme, --bg-base);
13 13
14 @include bem.suffix("light") { 14 @include bem.suffix('light') {
15 @media (prefers-color-scheme: light) { 15 @media (prefers-color-scheme: light) {
16 background-color: props.get(vars.$theme, --bg-base); 16 background-color: props.get(vars.$theme, --bg-base);
17 } 17 }
18 } 18 }
19 19
20 @include bem.suffix("dark") { 20 @include bem.suffix('dark') {
21 @media (prefers-color-scheme: dark) { 21 @media (prefers-color-scheme: dark) {
22 background-color: props.get(vars.$theme, --bg-base); 22 background-color: props.get(vars.$theme, --bg-base);
23 } 23 }
24 } 24 }
25 } 25 }
26 26
27 @include bem.theme("l1") { 27 @include bem.theme('l1') {
28 background-color: props.get(vars.$theme, --bg-l1); 28 background-color: props.get(vars.$theme, --bg-l1);
29 29
30 @include bem.suffix("light") { 30 @include bem.suffix('light') {
31 @media (prefers-color-scheme: light) { 31 @media (prefers-color-scheme: light) {
32 background-color: props.get(vars.$theme, --bg-l1); 32 background-color: props.get(vars.$theme, --bg-l1);
33 } 33 }
34 } 34 }
35 35
36 @include bem.suffix("dark") { 36 @include bem.suffix('dark') {
37 @media (prefers-color-scheme: dark) { 37 @media (prefers-color-scheme: dark) {
38 background-color: props.get(vars.$theme, --bg-l1); 38 background-color: props.get(vars.$theme, --bg-l1);
39 } 39 }
40 } 40 }
41 } 41 }
42 42
43 @include bem.theme("l2") { 43 @include bem.theme('l2') {
44 background-color: props.get(vars.$theme, --bg-l2); 44 background-color: props.get(vars.$theme, --bg-l2);
45 45
46 @include bem.suffix("light") { 46 @include bem.suffix('light') {
47 @media (prefers-color-scheme: light) { 47 @media (prefers-color-scheme: light) {
48 background-color: props.get(vars.$theme, --bg-l2); 48 background-color: props.get(vars.$theme, --bg-l2);
49 } 49 }
50 } 50 }
51 51
52 @include bem.suffix("dark") { 52 @include bem.suffix('dark') {
53 @media (prefers-color-scheme: dark) { 53 @media (prefers-color-scheme: dark) {
54 background-color: props.get(vars.$theme, --bg-l2); 54 background-color: props.get(vars.$theme, --bg-l2);
55 } 55 }
56 } 56 }
57 } 57 }
58 58
59 @include bem.theme("50") { 59 @include bem.theme('50') {
60 background-color: props.get(vars.$theme, --base, --50); 60 background-color: props.get(vars.$theme, --base, --50);
61 61
62 @include bem.suffix("light") { 62 @include bem.suffix('light') {
63 @media (prefers-color-scheme: light) { 63 @media (prefers-color-scheme: light) {
64 background-color: props.get(vars.$theme, --base, --50); 64 background-color: props.get(vars.$theme, --base, --50);
65 } 65 }
66 } 66 }
67 67
68 @include bem.suffix("dark") { 68 @include bem.suffix('dark') {
69 @media (prefers-color-scheme: dark) { 69 @media (prefers-color-scheme: dark) {
70 background-color: props.get(vars.$theme, --base, --50); 70 background-color: props.get(vars.$theme, --base, --50);
71 } 71 }
diff --git a/src/_utils.scss b/src/_utils.scss
index be2faab..dd8e8bb 100644
--- a/src/_utils.scss
+++ b/src/_utils.scss
@@ -1,27 +1,27 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "pkg:include-media/dist/include-media" as media; 5@use 'pkg:include-media/dist/include-media' as media;
6 6
7@use "core.vars" as vars; 7@use 'core.vars' as vars;
8@forward "core.vars"; 8@forward 'core.vars';
9 9
10/* stylelint-disable-next-line scss/dollar-variable-pattern */ 10/* stylelint-disable-next-line scss/dollar-variable-pattern */
11$-dirs: ( 11$-dirs: (
12 "": "", 12 '': '',
13 "b": "-block", 13 'b': '-block',
14 "bs": "-block-start", 14 'bs': '-block-start',
15 "be": "-block-end", 15 'be': '-block-end',
16 "i": "-inline", 16 'i': '-inline',
17 "is": "-inline-start", 17 'is': '-inline-start',
18 "ie": "-inline-end", 18 'ie': '-inline-end',
19) !default; 19) !default;
20 20
21$-axes: ( 21$-axes: (
22 "": "", 22 '': '',
23 "r": "row-", 23 'r': 'row-',
24 "c": "column-", 24 'c': 'column-',
25) !default; 25) !default;
26 26
27/* stylelint-disable-next-line scss/dollar-variable-pattern */ 27/* stylelint-disable-next-line scss/dollar-variable-pattern */
@@ -48,145 +48,145 @@ $-font-sizes: (
48) !default; 48) !default;
49 49
50$-aspect-ratios: ( 50$-aspect-ratios: (
51 "1\\/1": "1 / 1", 51 '1\\/1': '1 / 1',
52 "4\\/3": "4 / 3", 52 '4\\/3': '4 / 3',
53 "5\\/4": "5 / 4", 53 '5\\/4': '5 / 4',
54) !default; 54) !default;
55 55
56@mixin styles { 56@mixin styles {
57 @include bem.utility("d-block") { 57 @include bem.utility('d-block') {
58 display: block; 58 display: block;
59 } 59 }
60 60
61 @include bem.utility("d-inline-block") { 61 @include bem.utility('d-inline-block') {
62 display: inline-block; 62 display: inline-block;
63 } 63 }
64 64
65 @include bem.utility("d-inline") { 65 @include bem.utility('d-inline') {
66 display: inline; 66 display: inline;
67 } 67 }
68 68
69 @include bem.utility("d-contents") { 69 @include bem.utility('d-contents') {
70 display: contents; 70 display: contents;
71 } 71 }
72 72
73 @include bem.utility("d-flex") { 73 @include bem.utility('d-flex') {
74 display: flex; 74 display: flex;
75 } 75 }
76 76
77 @include bem.utility("td-none") { 77 @include bem.utility('td-none') {
78 text-decoration: none; 78 text-decoration: none;
79 } 79 }
80 80
81 @include bem.utility("d-none") { 81 @include bem.utility('d-none') {
82 display: none; 82 display: none;
83 83
84 @each $breakpoint in map.keys(media.$breakpoints) { 84 @each $breakpoint in map.keys(media.$breakpoints) {
85 @include media.media("<=#{$breakpoint}") { 85 @include media.media('<=#{$breakpoint}') {
86 @include bem.suffix("#{$breakpoint}-lo") { 86 @include bem.suffix('#{$breakpoint}-lo') {
87 display: none; 87 display: none;
88 } 88 }
89 } 89 }
90 90
91 @include media.media(">#{$breakpoint}") { 91 @include media.media('>#{$breakpoint}') {
92 @include bem.suffix("#{$breakpoint}-hi") { 92 @include bem.suffix('#{$breakpoint}-hi') {
93 display: none; 93 display: none;
94 } 94 }
95 } 95 }
96 } 96 }
97 97
98 @include bem.at-theme("js") { 98 @include bem.at-theme('js') {
99 @include bem.suffix("js") { 99 @include bem.suffix('js') {
100 display: none; 100 display: none;
101 } 101 }
102 } 102 }
103 103
104 @include bem.at-theme("no-js") { 104 @include bem.at-theme('no-js') {
105 @include bem.suffix("no-js") { 105 @include bem.suffix('no-js') {
106 display: none; 106 display: none;
107 } 107 }
108 } 108 }
109 109
110 @include bem.suffix("empty") { 110 @include bem.suffix('empty') {
111 &:empty { 111 &:empty {
112 display: none; 112 display: none;
113 } 113 }
114 } 114 }
115 } 115 }
116 116
117 @include bem.utility("va-top") { 117 @include bem.utility('va-top') {
118 vertical-align: top; 118 vertical-align: top;
119 } 119 }
120 120
121 @include bem.utility("va-baseline") { 121 @include bem.utility('va-baseline') {
122 vertical-align: baseline; 122 vertical-align: baseline;
123 } 123 }
124 124
125 @include bem.utility("va-middle") { 125 @include bem.utility('va-middle') {
126 vertical-align: middle; 126 vertical-align: middle;
127 } 127 }
128 128
129 @include bem.utility("va-bottom") { 129 @include bem.utility('va-bottom') {
130 vertical-align: bottom; 130 vertical-align: bottom;
131 } 131 }
132 132
133 @include bem.utility("ta-start") { 133 @include bem.utility('ta-start') {
134 text-align: start; 134 text-align: start;
135 } 135 }
136 136
137 @include bem.utility("ta-end") { 137 @include bem.utility('ta-end') {
138 text-align: end; 138 text-align: end;
139 } 139 }
140 140
141 @include bem.utility("ta-center") { 141 @include bem.utility('ta-center') {
142 text-align: center; 142 text-align: center;
143 } 143 }
144 144
145 @include bem.utility("fw-normal") { 145 @include bem.utility('fw-normal') {
146 font-weight: normal; 146 font-weight: normal;
147 } 147 }
148 148
149 @include bem.utility("ai-center") { 149 @include bem.utility('ai-center') {
150 align-items: center; 150 align-items: center;
151 } 151 }
152 152
153 @include bem.utility("ai-start") { 153 @include bem.utility('ai-start') {
154 align-items: flex-start; 154 align-items: flex-start;
155 } 155 }
156 156
157 @include bem.utility("ai-end") { 157 @include bem.utility('ai-end') {
158 align-items: flex-end; 158 align-items: flex-end;
159 } 159 }
160 160
161 @include bem.utility("ai-stretch") { 161 @include bem.utility('ai-stretch') {
162 align-items: stretch; 162 align-items: stretch;
163 } 163 }
164 164
165 @include bem.utility("ac-center") { 165 @include bem.utility('ac-center') {
166 align-content: center; 166 align-content: center;
167 } 167 }
168 168
169 @include bem.utility("jc-center") { 169 @include bem.utility('jc-center') {
170 justify-content: center; 170 justify-content: center;
171 } 171 }
172 172
173 @include bem.utility("jc-start") { 173 @include bem.utility('jc-start') {
174 justify-content: flex-start; 174 justify-content: flex-start;
175 } 175 }
176 176
177 @include bem.utility("jc-end") { 177 @include bem.utility('jc-end') {
178 justify-content: flex-end; 178 justify-content: flex-end;
179 } 179 }
180 180
181 @include bem.utility("tt-upper") { 181 @include bem.utility('tt-upper') {
182 text-transform: uppercase; 182 text-transform: uppercase;
183 } 183 }
184 184
185 @include bem.utility("tt-lower") { 185 @include bem.utility('tt-lower') {
186 text-transform: lowercase; 186 text-transform: lowercase;
187 } 187 }
188 188
189 @include bem.utility("c-heading") { 189 @include bem.utility('c-heading') {
190 color: props.get(vars.$theme, --heading); 190 color: props.get(vars.$theme, --heading);
191 191
192 @each $theme in map.keys(props.get(vars.$transparent-colors)) { 192 @each $theme in map.keys(props.get(vars.$transparent-colors)) {
@@ -198,7 +198,7 @@ $-aspect-ratios: (
198 } 198 }
199 } 199 }
200 200
201 @include bem.utility("c-text") { 201 @include bem.utility('c-text') {
202 color: props.get(vars.$theme, --text); 202 color: props.get(vars.$theme, --text);
203 203
204 @each $theme in map.keys(props.get(vars.$transparent-colors)) { 204 @each $theme in map.keys(props.get(vars.$transparent-colors)) {
@@ -210,7 +210,7 @@ $-aspect-ratios: (
210 } 210 }
211 } 211 }
212 212
213 @include bem.utility("c-mute") { 213 @include bem.utility('c-mute') {
214 color: props.get(vars.$theme, --text-mute); 214 color: props.get(vars.$theme, --text-mute);
215 215
216 @each $theme in map.keys(props.get(vars.$transparent-colors)) { 216 @each $theme in map.keys(props.get(vars.$transparent-colors)) {
@@ -222,7 +222,7 @@ $-aspect-ratios: (
222 } 222 }
223 } 223 }
224 224
225 @include bem.utility("c-mute-more") { 225 @include bem.utility('c-mute-more') {
226 color: props.get(vars.$theme, --text-mute-more); 226 color: props.get(vars.$theme, --text-mute-more);
227 227
228 @each $theme in map.keys(props.get(vars.$transparent-colors)) { 228 @each $theme in map.keys(props.get(vars.$transparent-colors)) {
@@ -235,195 +235,189 @@ $-aspect-ratios: (
235 } 235 }
236 236
237 @each $mod, $size in $-font-sizes { 237 @each $mod, $size in $-font-sizes {
238 @include bem.utility("fs-#{$mod}") { 238 @include bem.utility('fs-#{$mod}') {
239 font-size: props.get($size); 239 font-size: props.get($size);
240 } 240 }
241 } 241 }
242 242
243 @each $dir, $prop in (is: inline-size, bs: block-size) { 243 @each $dir, $prop in (is: inline-size, bs: block-size) {
244 @include bem.utility("#{$dir}-100") { 244 @include bem.utility('#{$dir}-100') {
245 #{$prop}: 100%; 245 #{$prop}: 100%;
246 } 246 }
247 247
248 @include bem.utility("#{$dir}-75") { 248 @include bem.utility('#{$dir}-75') {
249 #{$prop}: 75%; 249 #{$prop}: 75%;
250 } 250 }
251 251
252 @include bem.utility("#{$dir}-50") { 252 @include bem.utility('#{$dir}-50') {
253 #{$prop}: 50%; 253 #{$prop}: 50%;
254 } 254 }
255 255
256 @include bem.utility("#{$dir}-25") { 256 @include bem.utility('#{$dir}-25') {
257 #{$prop}: 25%; 257 #{$prop}: 25%;
258 } 258 }
259 259
260 @include bem.utility("#{$dir}-1px") { 260 @include bem.utility('#{$dir}-1px') {
261 #{$prop}: 1px; 261 #{$prop}: 1px;
262 } 262 }
263 263
264 @include bem.utility("#{$dir}-0") { 264 @include bem.utility('#{$dir}-0') {
265 #{$prop}: 0; 265 #{$prop}: 0;
266 } 266 }
267 } 267 }
268 268
269 @include bem.utility("elp") { 269 @include bem.utility('elp') {
270 overflow: hidden; 270 overflow: hidden;
271 text-overflow: ellipsis; 271 text-overflow: ellipsis;
272 white-space: nowrap; 272 white-space: nowrap;
273 } 273 }
274 274
275 @include bem.utility("hyph") { 275 @include bem.utility('hyph') {
276 hyphens: auto; 276 hyphens: auto;
277 hyphenate-limit-chars: auto; 277 hyphenate-limit-chars: auto;
278 } 278 }
279 279
280 @include bem.utility("tw-balance") { 280 @include bem.utility('tw-balance') {
281 text-wrap-style: balance; 281 text-wrap-style: balance;
282 } 282 }
283 283
284 @include bem.utility("o-auto") { 284 @include bem.utility('o-auto') {
285 overflow: auto; 285 overflow: auto;
286 } 286 }
287 287
288 @include bem.utility("o-hidden") { 288 @include bem.utility('o-hidden') {
289 overflow: hidden; 289 overflow: hidden;
290 } 290 }
291 291
292 @include bem.utility("p-static") { 292 @include bem.utility('p-static') {
293 position: static; 293 position: static;
294 } 294 }
295 295
296 @include bem.utility("p-relative") { 296 @include bem.utility('p-relative') {
297 position: relative; 297 position: relative;
298 } 298 }
299 299
300 @include bem.utility("p-fixed") { 300 @include bem.utility('p-fixed') {
301 position: fixed; 301 position: fixed;
302 } 302 }
303 303
304 @include bem.utility("p-sticky-bs") { 304 @include bem.utility('p-sticky-bs') {
305 position: sticky; 305 position: sticky;
306 inset-block-start: props.get(vars.$sticky-top-offset); 306 inset-block-start: props.get(vars.$sticky-top-offset);
307 } 307 }
308 308
309 @include bem.utility("p-sticky-be") { 309 @include bem.utility('p-sticky-be') {
310 position: sticky; 310 position: sticky;
311 inset-block-end: 0; 311 inset-block-end: 0;
312 } 312 }
313 313
314 @include bem.utility("br-round") { 314 @include bem.utility('br-round') {
315 border-radius: props.get(vars.$rounding); 315 border-radius: props.get(vars.$rounding);
316 } 316 }
317 317
318 @include bem.utility("br-round-sm") { 318 @include bem.utility('br-round-sm') {
319 border-radius: props.get(vars.$rounding--sm); 319 border-radius: props.get(vars.$rounding--sm);
320 } 320 }
321 321
322 @each $dir, $prefix in $-axes { 322 @each $dir, $prefix in $-axes {
323 @each $mod, $size in $-sizes { 323 @each $mod, $size in $-sizes {
324 @include bem.utility("#{$dir}g-#{$mod}") { 324 @include bem.utility('#{$dir}g-#{$mod}') {
325 #{$prefix}gap: props.get($size); 325 #{$prefix}gap: props.get($size);
326 } 326 }
327 } 327 }
328 } 328 }
329 329
330 @each $dir, $suffix in $-dirs { 330 @each $dir, $suffix in $-dirs {
331 @include bem.utility("m#{$dir}-auto") { 331 @include bem.utility('m#{$dir}-auto') {
332 margin#{$suffix}: auto; 332 margin#{$suffix}: auto;
333 } 333 }
334 334
335 @include bem.utility("p#{$dir}-auto") { 335 @include bem.utility('p#{$dir}-auto') {
336 padding#{$suffix}: auto; 336 padding#{$suffix}: auto;
337 } 337 }
338 338
339 @each $mod, $size in $-sizes { 339 @each $mod, $size in $-sizes {
340 @include bem.utility("m#{$dir}-#{$mod}") { 340 @include bem.utility('m#{$dir}-#{$mod}') {
341 margin#{$suffix}: props.get($size); 341 margin#{$suffix}: props.get($size);
342 } 342 }
343 343
344 @include bem.utility("p#{$dir}-#{$mod}") { 344 @include bem.utility('p#{$dir}-#{$mod}') {
345 padding#{$suffix}: props.get($size); 345 padding#{$suffix}: props.get($size);
346 } 346 }
347 } 347 }
348 348
349 @include bem.utility("b#{$dir}-0") { 349 @include bem.utility('b#{$dir}-0') {
350 border#{$suffix}: 0; 350 border#{$suffix}: 0;
351 351
352 @include bem.suffix("light") { 352 @include bem.suffix('light') {
353 @media (prefers-color-scheme: light) { 353 @media (prefers-color-scheme: light) {
354 border#{$suffix}: 0; 354 border#{$suffix}: 0;
355 } 355 }
356 } 356 }
357 357
358 @include bem.suffix("dark") { 358 @include bem.suffix('dark') {
359 @media (prefers-color-scheme: dark) { 359 @media (prefers-color-scheme: dark) {
360 border#{$suffix}: 0; 360 border#{$suffix}: 0;
361 } 361 }
362 } 362 }
363 } 363 }
364 364
365 @include bem.utility("b#{$dir}-1") { 365 @include bem.utility('b#{$dir}-1') {
366 border#{$suffix}: props.get(vars.$border-width--thin) solid 366 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border);
367 props.get(vars.$theme, --border);
368 367
369 @include bem.suffix("light") { 368 @include bem.suffix('light') {
370 @media (prefers-color-scheme: light) { 369 @media (prefers-color-scheme: light) {
371 border#{$suffix}: props.get(vars.$border-width--thin) solid 370 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border);
372 props.get(vars.$theme, --border);
373 } 371 }
374 } 372 }
375 373
376 @include bem.suffix("dark") { 374 @include bem.suffix('dark') {
377 @media (prefers-color-scheme: dark) { 375 @media (prefers-color-scheme: dark) {
378 border#{$suffix}: props.get(vars.$border-width--thin) solid 376 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border);
379 props.get(vars.$theme, --border);
380 } 377 }
381 } 378 }
382 } 379 }
383 380
384 @include bem.utility("b#{$dir}-1-mute") { 381 @include bem.utility('b#{$dir}-1-mute') {
385 border#{$suffix}: props.get(vars.$border-width--thin) solid 382 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute);
386 props.get(vars.$theme, --border-mute);
387 383
388 @include bem.suffix("light") { 384 @include bem.suffix('light') {
389 @media (prefers-color-scheme: light) { 385 @media (prefers-color-scheme: light) {
390 border#{$suffix}: props.get(vars.$border-width--thin) solid 386 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute);
391 props.get(vars.$theme, --border-mute);
392 } 387 }
393 } 388 }
394 389
395 @include bem.suffix("dark") { 390 @include bem.suffix('dark') {
396 @media (prefers-color-scheme: dark) { 391 @media (prefers-color-scheme: dark) {
397 border#{$suffix}: props.get(vars.$border-width--thin) solid 392 border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute);
398 props.get(vars.$theme, --border-mute);
399 } 393 }
400 } 394 }
401 } 395 }
402 } 396 }
403 397
404 @include bem.utility("mbs-neutralize") { 398 @include bem.utility('mbs-neutralize') {
405 &::before { 399 &::before {
406 display: block; 400 display: block;
407 margin-block: -100em 100em; 401 margin-block: -100em 100em;
408 content: ""; 402 content: '';
409 } 403 }
410 } 404 }
411 405
412 @each $mod, $value in $-aspect-ratios { 406 @each $mod, $value in $-aspect-ratios {
413 @include bem.utility("ar-#{$mod}") { 407 @include bem.utility('ar-#{$mod}') {
414 aspect-ratio: string.unquote($value); 408 aspect-ratio: string.unquote($value);
415 } 409 }
416 } 410 }
417 411
418 @include bem.utility("sr-only") { 412 @include bem.utility('sr-only') {
419 position: absolute; 413 position: absolute;
420 width: 1px; 414 width: 1px;
421 height: 1px; 415 height: 1px;
422 padding: 0; 416 padding: 0;
423 margin: -1px; 417 margin: -1px;
424 overflow: hidden; 418 overflow: hidden;
425 white-space: nowrap; 419 white-space: nowrap;
426 border: 0; 420 border: 0;
427 clip-path: inset(50%); 421 clip-path: inset(50%);
428 } 422 }
429} 423}
diff --git a/src/layouts/_card-list.scss b/src/layouts/_card-list.scss
index c05b798..f2a6ff5 100644
--- a/src/layouts/_card-list.scss
+++ b/src/layouts/_card-list.scss
@@ -1,44 +1,39 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:include-media/dist/include-media" as media; 2@use 'pkg:include-media/dist/include-media' as media;
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "../props" as *; 5@use '../props' as *;
6 6
7@use "../objects/card.vars" as card; 7@use '../objects/card.vars' as card;
8 8
9@forward "card-list.vars"; 9@forward 'card-list.vars';
10@use "card-list.vars" as vars; 10@use 'card-list.vars' as vars;
11 11
12@mixin styles { 12@mixin styles {
13 @include materialize-at-root(meta.module-variables("vars")); 13 @include materialize-at-root(meta.module-variables('vars'));
14 14
15 @include bem.layout("card-list") { 15 @include bem.layout('card-list') {
16 display: flex; 16 display: flex;
17 flex-direction: column; 17 flex-direction: column;
18 gap: props.get(vars.$row-gap); 18 gap: props.get(vars.$row-gap);
19 19
20 @include bem.modifier("merge") { 20 @include bem.modifier('merge') {
21 position: relative; 21 position: relative;
22 gap: 0; 22 gap: 0;
23 border-radius: props.get(card.$rounding); 23 border-radius: props.get(card.$rounding);
24 24
25 @include bem.elem("card") { 25 @include bem.elem('card') {
26 border-color: props.get(card.$border-color) props.get(card.$border-color) 26 border-color: props.get(card.$border-color) props.get(card.$border-color) props.get(vars.$border-color);
27 props.get(vars.$border-color);
28 background-clip: content-box; 27 background-clip: content-box;
29 box-shadow: none; 28 box-shadow: none;
30 29
31 &:not(:last-child) { 30 &:not(:last-child) {
32 position: relative; 31 position: relative;
33 border-end-start-radius: 0; 32 border-end-start-radius: 0;
34 border-end-end-radius: 0; 33 border-end-end-radius: 0;
35 } 34 }
36 35
37 @include bem.multi( 36 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
38 "&:link, &:visited, &:enabled",
39 "modifier" "interactive",
40 "modifier" "collapsible"
41 ) {
42 &:hover, 37 &:hover,
43 &:active, 38 &:active,
44 &:focus-visible { 39 &:focus-visible {
@@ -51,28 +46,19 @@
51 } 46 }
52 47
53 @include bem.next-twin-elem { 48 @include bem.next-twin-elem {
54 margin-block-start: calc(-1 * props.get(card.$border-width)); 49 margin-block-start: calc(-1 * props.get(card.$border-width));
55 border-block-start-color: transparent; 50 border-block-start-color: transparent;
56 border-start-start-radius: 0; 51 border-start-start-radius: 0;
57 border-start-end-radius: 0; 52 border-start-end-radius: 0;
58 53
59 @include bem.multi( 54 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
60 "&:link, &:visited, &:enabled",
61 "modifier" "interactive",
62 "modifier" "collapsible"
63 ) {
64 &:hover, 55 &:hover,
65 &:active { 56 &:active {
66 border-block-start-color: props.get(card.$hover--border-color); 57 border-block-start-color: props.get(card.$hover--border-color);
67 } 58 }
68 59
69 &:focus-visible { 60 &:focus-visible {
70 margin-block-start: calc( 61 margin-block-start: calc(-1 * props.get(card.$border-width) - props.get(card.$key-focus--border-width));
71 -1 *
72 props.get(card.$border-width) - props.get(
73 card.$key-focus--border-width
74 )
75 );
76 } 62 }
77 } 63 }
78 } 64 }
@@ -81,11 +67,7 @@
81 border-block-end-color: props.get(card.$border-color); 67 border-block-end-color: props.get(card.$border-color);
82 } 68 }
83 69
84 @include bem.multi( 70 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
85 "&:link, &:visited, &:enabled",
86 "modifier" "interactive",
87 "modifier" "collapsible"
88 ) {
89 &:hover, 71 &:hover,
90 &:active { 72 &:active {
91 border-color: props.get(card.$hover--border-color); 73 border-color: props.get(card.$hover--border-color);
@@ -93,20 +75,17 @@
93 75
94 &:focus-visible { 76 &:focus-visible {
95 border-color: props.get(card.$hover--bg-color); 77 border-color: props.get(card.$hover--bg-color);
96 box-shadow: 0 0 0 78 box-shadow:
97 calc( 79 0 0 0
98 props.get(card.$key-focus--border-width) + 80 calc(props.get(card.$key-focus--border-width) + props.get(card.$key-focus--outline-width))
99 props.get(card.$key-focus--outline-width)
100 )
101 props.get(card.$key-focus--outline-color); 81 props.get(card.$key-focus--outline-color);
102 } 82 }
103 } 83 }
104 } 84 }
105 85
106 @include bem.modifier("borderless") { 86 @include bem.modifier('borderless') {
107 @include bem.elem("card") { 87 @include bem.elem('card') {
108 border-color: props.get(card.$bg-color) props.get(card.$bg-color) 88 border-color: props.get(card.$bg-color) props.get(card.$bg-color) props.get(vars.$border-color);
109 props.get(vars.$border-color);
110 89
111 @include bem.next-twin-elem { 90 @include bem.next-twin-elem {
112 border-block-start-color: transparent; 91 border-block-start-color: transparent;
@@ -116,11 +95,7 @@
116 border-block-end-color: props.get(card.$bg-color); 95 border-block-end-color: props.get(card.$bg-color);
117 } 96 }
118 97
119 @include bem.multi( 98 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
120 "&:link, &:visited, &:enabled",
121 "modifier" "interactive",
122 "modifier" "collapsible"
123 ) {
124 &:hover, 99 &:hover,
125 &:active { 100 &:active {
126 border-color: props.get(card.$hover--border-color); 101 border-color: props.get(card.$hover--border-color);
@@ -133,87 +108,84 @@
133 } 108 }
134 } 109 }
135 110
136 @include bem.modifier("shadow") { 111 @include bem.modifier('shadow') {
137 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) 112 box-shadow:
138 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) 113 props.get(vars.$shadow-x)
114 props.get(vars.$shadow-y)
115 props.get(vars.$shadow-blur)
116 props.get(vars.$shadow-grow)
139 props.get(card.$shadow-color); 117 props.get(card.$shadow-color);
140 } 118 }
141 119
142 @include bem.modifier("interactive") { 120 @include bem.modifier('interactive') {
143 transition: 121 transition: transform .2s, box-shadow .2s;
144 transform 0.2s,
145 box-shadow 0.2s;
146 122
147 &:hover, 123 &:hover,
148 &:active, 124 &:active,
149 &:focus-within { 125 &:focus-within {
150 box-shadow: none; 126 box-shadow: none;
151 transform: translateY(props.get(card.$hover--offset-b)); 127 transform: translateY(props.get(card.$hover--offset-b));
152 } 128 }
153 } 129 }
154 } 130 }
155 131
156 @include bem.modifier("quiet") { 132 @include bem.modifier('quiet') {
157 row-gap: props.get(vars.$quiet--row-gap); 133 row-gap: props.get(vars.$quiet--row-gap);
158 } 134 }
159 135
160 @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, 136 @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, $breakpoint in vars.$grid-layouts {
161 $breakpoint in vars.$grid-layouts
162 {
163 @include bem.modifier($mod) { 137 @include bem.modifier($mod) {
164 display: grid; 138 display: grid;
165 grid-template-columns: repeat(auto-fill, minmax(props.get($col-width), 1fr)); 139 grid-template-columns: repeat(auto-fill, minmax(props.get($col-width), 1fr));
166 gap: props.get($row-gap) props.get($col-gap); 140 gap: props.get($row-gap) props.get($col-gap);
167 141
168 @include bem.modifier("quiet") { 142 @include bem.modifier('quiet') {
169 row-gap: props.get($quiet--row-gap); 143 row-gap: props.get($quiet--row-gap);
170 } 144 }
171 145
172 @include media.media("<=#{$breakpoint}") { 146 @include media.media('<=#{$breakpoint}') {
173 display: flex; 147 display: flex;
174 } 148 }
175 } 149 }
176 } 150 }
177 151
178 @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, 152 @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, $breakpoint in vars.$flex-layouts {
179 $breakpoint in vars.$flex-layouts
180 {
181 @include bem.modifier($mod) { 153 @include bem.modifier($mod) {
182 display: flex; 154 display: flex;
183 flex-flow: row wrap; 155 flex-flow: row wrap;
184 gap: props.get($row-gap) props.get($col-gap); 156 gap: props.get($row-gap) props.get($col-gap);
185 157
186 @include bem.modifier("quiet") { 158 @include bem.modifier('quiet') {
187 row-gap: props.get($quiet--row-gap); 159 row-gap: props.get($quiet--row-gap);
188 } 160 }
189 161
190 @include bem.elem("card") { 162 @include bem.elem('card') {
191 flex: 0.1 0 auto; 163 flex: 0.1 0 auto;
192 inline-size: props.get($col-width); 164 inline-size: props.get($col-width);
193 } 165 }
194 166
195 @include media.media("<=#{$breakpoint}") { 167 @include media.media('<=#{$breakpoint}') {
196 flex-flow: column nowrap; 168 flex-flow: column nowrap;
197 169
198 @include bem.elem("card") { 170 @include bem.elem('card') {
199 inline-size: auto; 171 inline-size: auto;
200 } 172 }
201 } 173 }
202 } 174 }
203 } 175 }
204 176
205 @include bem.modifier("masonry") { 177 @include bem.modifier('masonry') {
206 display: block; 178 display: block;
207 columns: auto props.get(vars.$masonry--col-width); 179 columns: auto props.get(vars.$masonry--col-width);
208 column-gap: props.get(vars.$masonry--col-gap); 180 column-gap: props.get(vars.$masonry--col-gap);
209 181
210 @include bem.elem("card") { 182 @include bem.elem('card') {
211 margin-block-end: props.get(vars.$masonry--row-gap); 183 margin-block-end: props.get(vars.$masonry--row-gap);
212 break-inside: avoid; 184 break-inside: avoid;
213 } 185 }
214 186
215 @include bem.modifier("quiet") { 187 @include bem.modifier('quiet') {
216 @include bem.elem("card") { 188 @include bem.elem('card') {
217 margin-block-end: props.get(vars.$masonry--quiet--row-gap); 189 margin-block-end: props.get(vars.$masonry--quiet--row-gap);
218 } 190 }
219 } 191 }
@@ -222,34 +194,34 @@
222 @each $mod, $row-gap, $col-gap, $row-height, $quiet--row-gap in vars.$masonry-h-layouts { 194 @each $mod, $row-gap, $col-gap, $row-height, $quiet--row-gap in vars.$masonry-h-layouts {
223 @include bem.modifier($mod) { 195 @include bem.modifier($mod) {
224 flex-flow: row wrap; 196 flex-flow: row wrap;
225 gap: props.get($row-gap) props.get($col-gap); 197 gap: props.get($row-gap) props.get($col-gap);
226 198
227 @include bem.modifier("no-flush") { 199 @include bem.modifier('no-flush') {
228 &::after { 200 &::after {
229 display: block; 201 display: block;
230 flex: 1 0 auto; 202 flex: 1 0 auto;
231 inline-size: props.get($row-height); 203 inline-size: props.get($row-height);
232 content: ""; 204 content: '';
233 } 205 }
234 } 206 }
235 207
236 @include bem.elem("card") { 208 @include bem.elem('card') {
237 flex: 1 0 auto; 209 flex: 1 0 auto;
238 max-inline-size: 100%; 210 max-inline-size: 100%;
239 } 211 }
240 212
241 @include bem.elem("card-image") { 213 @include bem.elem('card-image') {
242 block-size: props.get($row-height); 214 block-size: props.get($row-height);
243 } 215 }
244 216
245 @include bem.modifier("quiet") { 217 @include bem.modifier('quiet') {
246 row-gap: props.get($quiet--row-gap); 218 row-gap: props.get($quiet--row-gap);
247 } 219 }
248 } 220 }
249 } 221 }
250 222
251 @include bem.modifier("aspect-5\\/4") { 223 @include bem.modifier('aspect-5\\/4') {
252 @include bem.elem("card-image") { 224 @include bem.elem('card-image') {
253 aspect-ratio: 5 / 4; 225 aspect-ratio: 5 / 4;
254 } 226 }
255 } 227 }
diff --git a/src/layouts/_card-list.vars.scss b/src/layouts/_card-list.vars.scss
index ece68f3..fb89b52 100644
--- a/src/layouts/_card-list.vars.scss
+++ b/src/layouts/_card-list.vars.scss
@@ -1,116 +1,61 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3@use "../objects/card" as card; 3@use '../objects/card' as card;
4 4
5$row-gap: props.def(--l-card-list--row-gap, props.get(core.$size--200)) !default; 5$row-gap: props.def(--l-card-list--row-gap, props.get(core.$size--200)) !default;
6$quiet--row-gap: props.def(--l-card-list--quiet--row-gap, props.get(core.$size--800)) !default; 6$quiet--row-gap: props.def(--l-card-list--quiet--row-gap, props.get(core.$size--800)) !default;
7 7
8$grid--row-gap: props.def(--l-card-list--grid--row-gap, props.get(core.$size--600)) !default; 8$grid--row-gap: props.def(--l-card-list--grid--row-gap, props.get(core.$size--600)) !default;
9$grid--col-gap: props.def(--l-card-list--grid--col-gap, props.get(core.$size--600)) !default; 9$grid--col-gap: props.def(--l-card-list--grid--col-gap, props.get(core.$size--600)) !default;
10$grid--col-width: props.def(--l-card-list--grid--col-width, props.get(core.$size--3200)) !default; 10$grid--col-width: props.def(--l-card-list--grid--col-width, props.get(core.$size--3200)) !default;
11$grid--quiet--row-gap: props.def( 11$grid--quiet--row-gap: props.def(--l-card-list--grid--quiet--row-gap, props.get(core.$size--800)) !default;
12 --l-card-list--grid--quiet--row-gap,
13 props.get(core.$size--800)
14) !default;
15 12
16$grid-sm--row-gap: props.def(--l-card-list--grid-sm--row-gap, props.get(core.$size--200)) !default; 13$grid-sm--row-gap: props.def(--l-card-list--grid-sm--row-gap, props.get(core.$size--200)) !default;
17$grid-sm--col-gap: props.def(--l-card-list--grid-sm--col-gap, props.get(core.$size--200)) !default; 14$grid-sm--col-gap: props.def(--l-card-list--grid-sm--col-gap, props.get(core.$size--200)) !default;
18$grid-sm--col-width: props.def( 15$grid-sm--col-width: props.def(--l-card-list--grid-sm--col-width, props.get(core.$size--4600)) !default;
19 --l-card-list--grid-sm--col-width, 16$grid-sm--quiet--row-gap: props.def(--l-card-list--grid-sm--quiet--row-gap, props.get(core.$size--800)) !default;
20 props.get(core.$size--4600)
21) !default;
22$grid-sm--quiet--row-gap: props.def(
23 --l-card-list--grid-sm--quiet--row-gap,
24 props.get(core.$size--800)
25) !default;
26 17
27$grid-xs--row-gap: props.def(--l-card-list--grid-xs--row-gap, props.get(core.$size--200)) !default; 18$grid-xs--row-gap: props.def(--l-card-list--grid-xs--row-gap, props.get(core.$size--200)) !default;
28$grid-xs--col-gap: props.def(--l-card-list--grid-xs--col-gap, props.get(core.$size--200)) !default; 19$grid-xs--col-gap: props.def(--l-card-list--grid-xs--col-gap, props.get(core.$size--200)) !default;
29$grid-xs--col-width: props.def( 20$grid-xs--col-width: props.def(--l-card-list--grid-xs--col-width, props.get(core.$size--1600)) !default;
30 --l-card-list--grid-xs--col-width, 21$grid-xs--quiet--row-gap: props.def(--l-card-list--grid-xs--quiet--row-gap, props.get(core.$size--800)) !default;
31 props.get(core.$size--1600)
32) !default;
33$grid-xs--quiet--row-gap: props.def(
34 --l-card-list--grid-xs--quiet--row-gap,
35 props.get(core.$size--800)
36) !default;
37 22
38$grid-layouts: ( 23$grid-layouts: (
39 "grid" $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, 24 'grid' $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm,
40 "grid-sm" $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, 25 'grid-sm' $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm,
41 "grid-xs" $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs 26 'grid-xs' $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs,
42) !default; 27) !default;
43 28
44$flex-layouts: ( 29$flex-layouts: (
45 "flex" $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, 30 'flex' $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm,
46 "flex-sm" $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, 31 'flex-sm' $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm,
47 "flex-xs" $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs 32 'flex-xs' $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs,
48) !default; 33) !default;
49 34
50$masonry-h--row-gap: props.def( 35$masonry-h--row-gap: props.def(--l-card-list--masonry-h--row-gap, props.get(core.$size--400)) !default;
51 --l-card-list--masonry-h--row-gap, 36$masonry-h--col-gap: props.def(--l-card-list--masonry-h--col-gap, props.get(core.$size--400)) !default;
52 props.get(core.$size--400) 37$masonry-h--row-height: props.def(--l-card-list--masonry-h--row-height, props.get(core.$size--3200)) !default;
53) !default; 38$masonry-h--quiet--row-gap: props.def(--l-card-list--masonry-h--quiet--row-gap, props.get(core.$size--800)) !default;
54$masonry-h--col-gap: props.def(
55 --l-card-list--masonry-h--col-gap,
56 props.get(core.$size--400)
57) !default;
58$masonry-h--row-height: props.def(
59 --l-card-list--masonry-h--row-height,
60 props.get(core.$size--3200)
61) !default;
62$masonry-h--quiet--row-gap: props.def(
63 --l-card-list--masonry-h--quiet--row-gap,
64 props.get(core.$size--800)
65) !default;
66 39
67$masonry-h-sm--row-gap: props.def( 40$masonry-h-sm--row-gap: props.def(--l-card-list--masonry-h-sm--row-gap, props.get(core.$size--400)) !default;
68 --l-card-list--masonry-h-sm--row-gap, 41$masonry-h-sm--col-gap: props.def(--l-card-list--masonry-h-sm--col-gap, props.get(core.$size--400)) !default;
69 props.get(core.$size--400) 42$masonry-h-sm--row-height: props.def(--l-card-list--masonry-h-sm--row-height, props.get(core.$size--2600)) !default;
70) !default; 43$masonry-h-sm--quiet--row-gap: props.def(--l-card-list--masonry-h-sm--quiet--row-gap, props.get(core.$size--800)) !default;
71$masonry-h-sm--col-gap: props.def(
72 --l-card-list--masonry-h-sm--col-gap,
73 props.get(core.$size--400)
74) !default;
75$masonry-h-sm--row-height: props.def(
76 --l-card-list--masonry-h-sm--row-height,
77 props.get(core.$size--2600)
78) !default;
79$masonry-h-sm--quiet--row-gap: props.def(
80 --l-card-list--masonry-h-sm--quiet--row-gap,
81 props.get(core.$size--800)
82) !default;
83 44
84$masonry-h-layouts: ( 45$masonry-h-layouts: (
85 "masonry-h" $masonry-h--row-gap $masonry-h--col-gap $masonry-h--row-height 46 'masonry-h' $masonry-h--row-gap $masonry-h--col-gap $masonry-h--row-height $masonry-h--quiet--row-gap,
86 $masonry-h--quiet--row-gap, 47 'masonry-h-sm' $masonry-h-sm--row-gap $masonry-h-sm--col-gap $masonry-h-sm--row-height $masonry-h-sm--quiet--row-gap,
87 "masonry-h-sm" $masonry-h-sm--row-gap $masonry-h-sm--col-gap $masonry-h-sm--row-height
88 $masonry-h-sm--quiet--row-gap
89) !default; 48) !default;
90 49
91$masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default; 50$masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default;
92$masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default; 51$masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default;
93$masonry--col-width: props.def( 52$masonry--col-width: props.def(--l-card-list--masonry--col-width, props.get(core.$size--3200)) !default;
94 --l-card-list--masonry--col-width, 53$masonry--quiet--row-gap: props.def(--l-card-list--masonry--quiet--row-gap, props.get(core.$size--800)) !default;
95 props.get(core.$size--3200)
96) !default;
97$masonry--quiet--row-gap: props.def(
98 --l-card-list--masonry--quiet--row-gap,
99 props.get(core.$size--800)
100) !default;
101 54
102$shadow-x: props.def(--l-card-list--shadow-x, props.get(card.$shadow-x)) !default; 55$shadow-x: props.def(--l-card-list--shadow-x, props.get(card.$shadow-x)) !default;
103$shadow-y: props.def(--l-card-list--shadow-y, props.get(card.$shadow-y)) !default; 56$shadow-y: props.def(--l-card-list--shadow-y, props.get(card.$shadow-y)) !default;
104$shadow-blur: props.def(--l-card-list--shadow-blur, props.get(card.$shadow-blur)) !default; 57$shadow-blur: props.def(--l-card-list--shadow-blur, props.get(card.$shadow-blur)) !default;
105$shadow-grow: props.def(--l-card-list--shadow-grow, props.get(card.$shadow-grow)) !default; 58$shadow-grow: props.def(--l-card-list--shadow-grow, props.get(card.$shadow-grow)) !default;
106 59
107$border-color: props.def( 60$border-color: props.def(--l-card-list--border-color, props.get(card.$border-color), 'color') !default;
108 --l-card-list--border-color, 61$border-color-dark: props.def(--l-card-list--border-color, props.get(core.$theme, --border-mute), 'dark') !default;
109 props.get(card.$border-color),
110 "color"
111) !default;
112$border-color-dark: props.def(
113 --l-card-list--border-color,
114 props.get(core.$theme, --border-mute),
115 "dark"
116) !default;
diff --git a/src/layouts/_container.scss b/src/layouts/_container.scss
index 7b3dc3f..46ded23 100644
--- a/src/layouts/_container.scss
+++ b/src/layouts/_container.scss
@@ -1,37 +1,37 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "container.vars"; 6@forward 'container.vars';
7@use "container.vars" as vars; 7@use 'container.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.layout("container") { 12 @include bem.layout('container') {
13 @each $mod, $size in vars.$fixed-sizes { 13 @each $mod, $size in vars.$fixed-sizes {
14 @include bem.modifier($mod) { 14 @include bem.modifier($mod) {
15 max-inline-size: props.get($size); 15 max-inline-size: props.get($size);
16 margin-inline: auto; 16 margin-inline: auto;
17 } 17 }
18 } 18 }
19 19
20 @include bem.modifier("pad-i") { 20 @include bem.modifier('pad-i') {
21 padding-inline: props.get(vars.$pad-i); 21 padding-inline: props.get(vars.$pad-i);
22 } 22 }
23 23
24 @include bem.modifier("pad-b") { 24 @include bem.modifier('pad-b') {
25 padding-block: props.get(vars.$pad-b); 25 padding-block: props.get(vars.$pad-b);
26 } 26 }
27 27
28 @each $mod, $pad-i, $pad-b in vars.$sizes { 28 @each $mod, $pad-i, $pad-b in vars.$sizes {
29 @include bem.modifier($mod) { 29 @include bem.modifier($mod) {
30 @include bem.modifier("pad-i") { 30 @include bem.modifier('pad-i') {
31 padding-inline: props.get($pad-i); 31 padding-inline: props.get($pad-i);
32 } 32 }
33 33
34 @include bem.modifier("pad-b") { 34 @include bem.modifier('pad-b') {
35 padding-block: props.get($pad-b); 35 padding-block: props.get($pad-b);
36 } 36 }
37 } 37 }
diff --git a/src/layouts/_container.vars.scss b/src/layouts/_container.vars.scss
index 09ef165..094046f 100644
--- a/src/layouts/_container.vars.scss
+++ b/src/layouts/_container.vars.scss
@@ -1,36 +1,39 @@
1@use "pkg:iro-sass/functions" as fn; 1@use 'pkg:iro-sass/src/functions' as fn;
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$fixed-200: props.def(--l-container--fixed-200, fn.px-to-rem(1300px)) !default; 5$fixed-200: props.def(--l-container--fixed-200, fn.px-to-rem(1300px)) !default;
6$fixed-150: props.def(--l-container--fixed-150, fn.px-to-rem(860px)) !default; 6$fixed-150: props.def(--l-container--fixed-150, fn.px-to-rem(860px)) !default;
7$fixed: props.def(--l-container--fixed, fn.px-to-rem(680px)) !default; 7$fixed: props.def(--l-container--fixed, fn.px-to-rem(680px)) !default;
8 8
9$fixed-sizes: ( 9$fixed-sizes: (
10 "fixed-200": $fixed-200, 10 'fixed-200': $fixed-200,
11 "fixed-150": $fixed-150, 11 'fixed-150': $fixed-150,
12 "fixed": $fixed, 12 'fixed': $fixed
13) !default; 13) !default;
14 14
15$pad-i: props.def(--l-container--pad-i, props.get(core.$size--600)) !default; 15$pad-i: props.def(--l-container--pad-i, props.get(core.$size--600)) !default;
16$pad-b: props.def(--l-container--pad-b, props.get(core.$size--800)) !default; 16$pad-b: props.def(--l-container--pad-b, props.get(core.$size--800)) !default;
17 17
18$pad-i--md: props.def(--l-container--pad-i, props.get(core.$size--400), "md") !default; 18$pad-i--md: props.def(--l-container--pad-i, props.get(core.$size--400), 'md') !default;
19$pad-b--md: props.def(--l-container--pad-b, props.get(core.$size--700), "md") !default; 19$pad-b--md: props.def(--l-container--pad-b, props.get(core.$size--700), 'md') !default;
20 20
21$pad-i--sm: props.def(--l-container--pad-i, props.get(core.$size--200), "sm") !default; 21$pad-i--sm: props.def(--l-container--pad-i, props.get(core.$size--200), 'sm') !default;
22$pad-b--sm: props.def(--l-container--pad-b, props.get(core.$size--600), "sm") !default; 22$pad-b--sm: props.def(--l-container--pad-b, props.get(core.$size--600), 'sm') !default;
23 23
24$pad-i--xs: props.def(--l-container--pad-i, props.get(core.$size--150), "xs") !default; 24$pad-i--xs: props.def(--l-container--pad-i, props.get(core.$size--150), 'xs') !default;
25$pad-b--xs: props.def(--l-container--pad-b, props.get(core.$size--450), "xs") !default; 25$pad-b--xs: props.def(--l-container--pad-b, props.get(core.$size--450), 'xs') !default;
26 26
27$sm--pad-i: props.def(--l-container--sm--pad-i, props.get(core.$size--300)) !default; 27$sm--pad-i: props.def(--l-container--sm--pad-i, props.get(core.$size--300)) !default;
28$sm--pad-b: props.def(--l-container--sm--pad-b, props.get(core.$size--800)) !default; 28$sm--pad-b: props.def(--l-container--sm--pad-b, props.get(core.$size--800)) !default;
29 29
30$sm--pad-i--sm: props.def(--l-container--sm--pad-i, props.get(core.$size--200), "sm") !default; 30$sm--pad-i--sm: props.def(--l-container--sm--pad-i, props.get(core.$size--200), 'sm') !default;
31$sm--pad-b--sm: props.def(--l-container--sm--pad-b, props.get(core.$size--600), "sm") !default; 31$sm--pad-b--sm: props.def(--l-container--sm--pad-b, props.get(core.$size--600), 'sm') !default;
32 32
33$sm--pad-i--xs: props.def(--l-container--sm--pad-i, props.get(core.$size--150), "xs") !default; 33$sm--pad-i--xs: props.def(--l-container--sm--pad-i, props.get(core.$size--150), 'xs') !default;
34$sm--pad-b--xs: props.def(--l-container--sm--pad-b, props.get(core.$size--450), "xs") !default; 34$sm--pad-b--xs: props.def(--l-container--sm--pad-b, props.get(core.$size--450), 'xs') !default;
35 35
36$sizes: ("sm" $sm--pad-i $sm--pad-b, "md" $sm--pad-i $sm--pad-b) !default; 36$sizes: (
37 'sm' $sm--pad-i $sm--pad-b,
38 'md' $sm--pad-i $sm--pad-b,
39) !default;
diff --git a/src/layouts/_flex.scss b/src/layouts/_flex.scss
index 70d29f9..ea0b268 100644
--- a/src/layouts/_flex.scss
+++ b/src/layouts/_flex.scss
@@ -1,18 +1,18 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2 2
3@mixin styles { 3@mixin styles {
4 @include bem.layout("flex") { 4 @include bem.layout('flex') {
5 display: flex; 5 display: flex;
6 6
7 @include bem.modifier("column") { 7 @include bem.modifier('column') {
8 flex-direction: column; 8 flex-direction: column;
9 } 9 }
10 10
11 @include bem.modifier("wrap") { 11 @include bem.modifier('wrap') {
12 flex-wrap: wrap; 12 flex-wrap: wrap;
13 } 13 }
14 14
15 @include bem.modifier("wrap-reverse") { 15 @include bem.modifier('wrap-reverse') {
16 flex-wrap: wrap-reverse; 16 flex-wrap: wrap-reverse;
17 } 17 }
18 } 18 }
diff --git a/src/layouts/_form.scss b/src/layouts/_form.scss
index f71e469..f094cbc 100644
--- a/src/layouts/_form.scss
+++ b/src/layouts/_form.scss
@@ -1,57 +1,57 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "form.vars"; 6@forward 'form.vars';
7@use "form.vars" as vars; 7@use 'form.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.layout("form") { 12 @include bem.layout('form') {
13 display: flex; 13 display: flex;
14 flex-direction: column; 14 flex-direction: column;
15 gap: props.get(vars.$item-spacing-b) props.get(vars.$label-spacing-i); 15 gap: props.get(vars.$item-spacing-b) props.get(vars.$label-spacing-i);
16 16
17 @include bem.elem("item") { 17 @include bem.elem('item') {
18 display: block; 18 display: block;
19 } 19 }
20 20
21 @include bem.elem("item-content") { 21 @include bem.elem('item-content') {
22 @include bem.modifier("align-start") { 22 @include bem.modifier('align-start') {
23 align-self: start; 23 align-self: start;
24 } 24 }
25 } 25 }
26 26
27 @include bem.modifier("row") { 27 @include bem.modifier('row') {
28 flex-direction: row; 28 flex-direction: row;
29 align-items: flex-end; 29 align-items: flex-end;
30 } 30 }
31 31
32 @include bem.modifier("labels-start", "labels-end") { 32 @include bem.modifier('labels-start', 'labels-end') {
33 display: grid; 33 display: grid;
34 grid-template-rows: auto; 34 grid-template-rows: auto;
35 grid-template-columns: auto 1fr; 35 grid-template-columns: auto 1fr;
36 align-items: baseline; 36 align-items: baseline;
37 37
38 @include bem.elem("item") { 38 @include bem.elem('item') {
39 display: contents; 39 display: contents;
40 } 40 }
41 41
42 @include bem.elem("item-label") { 42 @include bem.elem('item-label') {
43 grid-column: 1; 43 grid-column: 1;
44 padding-inline-end: 0; 44 padding-inline-end: 0;
45 } 45 }
46 46
47 @include bem.elem("item-content") { 47 @include bem.elem('item-content') {
48 grid-column: 2; 48 grid-column: 2;
49 margin-block-start: 0; 49 margin-block-start: 0;
50 } 50 }
51 } 51 }
52 52
53 @include bem.modifier("labels-end") { 53 @include bem.modifier('labels-end') {
54 @include bem.elem("item-label") { 54 @include bem.elem('item-label') {
55 text-align: end; 55 text-align: end;
56 } 56 }
57 } 57 }
diff --git a/src/layouts/_form.vars.scss b/src/layouts/_form.vars.scss
index 68cb23a..52670cc 100644
--- a/src/layouts/_form.vars.scss
+++ b/src/layouts/_form.vars.scss
@@ -1,5 +1,5 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$item-spacing-b: props.def(--l-form--item-spacing-b, props.get(core.$size--325)) !default; 4$item-spacing-b: props.def(--l-form--item-spacing-b, props.get(core.$size--325)) !default;
5$label-spacing-i: props.def(--l-form--label-spacing-i, props.get(core.$size--325)) !default; 5$label-spacing-i: props.def(--l-form--label-spacing-i, props.get(core.$size--325)) !default;
diff --git a/src/layouts/_hlist.scss b/src/layouts/_hlist.scss
index 00787db..32b3097 100644
--- a/src/layouts/_hlist.scss
+++ b/src/layouts/_hlist.scss
@@ -1,30 +1,30 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "hlist.vars"; 6@forward 'hlist.vars';
7@use "hlist.vars" as vars; 7@use 'hlist.vars' as vars;
8@use "../objects/button.vars" as button; 8@use '../objects/button.vars' as button;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.layout("hlist") { 13 @include bem.layout('hlist') {
14 display: inline-flex; 14 display: inline-flex;
15 flex-wrap: wrap; 15 flex-wrap: wrap;
16 gap: props.get(vars.$gap); 16 gap: props.get(vars.$gap);
17 17
18 @each $mod, $size in vars.$sizes { 18 @each $mod, $size in vars.$sizes {
19 @include bem.modifier($mod) { 19 @include bem.modifier($mod) {
20 gap: props.get($size); 20 gap: props.get($size);
21 21
22 @include bem.modifier("separated") { 22 @include bem.modifier('separated') {
23 @include bem.elem("item") { 23 @include bem.elem('item') {
24 @include bem.next-twin-elem { 24 @include bem.next-twin-elem {
25 &::before { 25 &::before {
26 content: "·"; 26 content: '·';
27 margin-inline: calc(0.65 * props.get($size)); 27 margin-inline: calc(.65 * props.get($size));
28 } 28 }
29 } 29 }
30 } 30 }
@@ -32,51 +32,40 @@
32 } 32 }
33 } 33 }
34 34
35 @include bem.modifier("separated") { 35 @include bem.modifier('separated') {
36 gap: 0; 36 gap: 0;
37 37
38 @include bem.elem("item") { 38 @include bem.elem('item') {
39 @include bem.next-twin-elem { 39 @include bem.next-twin-elem {
40 &::before { 40 &::before {
41 content: "·"; 41 content: '·';
42 margin-inline: calc(0.65 * props.get(vars.$gap)); 42 margin-inline: calc(.65 * props.get(vars.$gap));
43 } 43 }
44 } 44 }
45 } 45 }
46 } 46 }
47 47
48 @include bem.modifier("buttons") { 48 @include bem.modifier('buttons') {
49 margin-inline: calc(-1 * props.get(button.$pad-i) - props.get(button.$border-width)); 49 margin-inline: calc(-1 * props.get(button.$pad-i) - props.get(button.$border-width));
50 50
51 @include bem.modifier("pill") { 51 @include bem.modifier('pill') {
52 margin-inline: calc( 52 margin-inline: calc(-1 * props.get(button.$pad-i-pill) - props.get(button.$border-width));
53 -1 * props.get(button.$pad-i-pill) - props.get(button.$border-width)
54 );
55 } 53 }
56 54
57 @include bem.modifier("icon") { 55 @include bem.modifier('icon') {
58 margin-inline: calc( 56 margin-inline: calc(-1 * props.get(button.$pad-b) - props.get(button.$border-width) - .5em * (props.get(button.$line-height) - 1));
59 -1 * props.get(button.$pad-b) - props.get(button.$border-width) - 0.5em *
60 (props.get(button.$line-height) - 1)
61 );
62 } 57 }
63 58
64 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in button.$fixed-sizes 59 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in button.$fixed-sizes {
65 { 60 @include bem.modifier('buttons-#{$mod}') {
66 @include bem.modifier("buttons-#{$mod}") {
67 margin-inline: calc(-1 * props.get($pad-i) - props.get(button.$border-width)); 61 margin-inline: calc(-1 * props.get($pad-i) - props.get(button.$border-width));
68 62
69 @include bem.modifier("pill") { 63 @include bem.modifier('pill') {
70 margin-inline: calc( 64 margin-inline: calc(-1 * props.get($pad-i-pill) - props.get(button.$border-width));
71 -1 * props.get($pad-i-pill) - props.get(button.$border-width)
72 );
73 } 65 }
74 66
75 @include bem.modifier("icon") { 67 @include bem.modifier('icon') {
76 margin-inline: calc( 68 margin-inline: calc(-1 * props.get($pad-b) - props.get(button.$border-width) - .5em * (props.get(button.$line-height) - 1));
77 -1 * props.get($pad-b) - props.get(button.$border-width) - 0.5em *
78 (props.get(button.$line-height) - 1)
79 );
80 } 69 }
81 } 70 }
82 } 71 }
diff --git a/src/layouts/_hlist.vars.scss b/src/layouts/_hlist.vars.scss
index 557cfae..2d99057 100644
--- a/src/layouts/_hlist.vars.scss
+++ b/src/layouts/_hlist.vars.scss
@@ -1,16 +1,16 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$gap: props.def(--l-hlist--gap, props.get(core.$size--150)) !default; 4$gap: props.def(--l-hlist--gap, props.get(core.$size--150)) !default;
5 5
6$gapless: props.def(--l-hlist--gapless, 0) !default; 6$gapless: props.def(--l-hlist--gapless, 0) !default;
7$sm: props.def(--l-hlist--sm, props.get(core.$size--100)) !default; 7$sm: props.def(--l-hlist--sm, props.get(core.$size--100)) !default;
8$lg: props.def(--l-hlist--lg, props.get(core.$size--300)) !default; 8$lg: props.def(--l-hlist--lg, props.get(core.$size--300)) !default;
9$xl: props.def(--l-hlist--xl, props.get(core.$size--450)) !default; 9$xl: props.def(--l-hlist--xl, props.get(core.$size--450)) !default;
10 10
11$sizes: ( 11$sizes: (
12 "gapless": $gapless, 12 'gapless': $gapless,
13 "sm": $sm, 13 'sm': $sm,
14 "lg": $lg, 14 'lg': $lg,
15 "xl": $xl, 15 'xl': $xl,
16) !default; 16) !default;
diff --git a/src/layouts/_media.scss b/src/layouts/_media.scss
index b6732bf..4492ea9 100644
--- a/src/layouts/_media.scss
+++ b/src/layouts/_media.scss
@@ -1,17 +1,17 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "media.vars"; 6@forward 'media.vars';
7@use "media.vars" as vars; 7@use 'media.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.layout("media") { 12 @include bem.layout('media') {
13 display: flex; 13 display: flex;
14 gap: props.get(vars.$gap); 14 gap: props.get(vars.$gap);
15 align-items: center; 15 align-items: center;
16 line-height: 1.4; 16 line-height: 1.4;
17 17
@@ -21,19 +21,19 @@
21 } 21 }
22 } 22 }
23 23
24 @include bem.modifier("wrap") { 24 @include bem.modifier('wrap') {
25 flex-wrap: wrap; 25 flex-wrap: wrap;
26 } 26 }
27 27
28 @include bem.elem("block") { 28 @include bem.elem('block') {
29 flex: 0 0 auto; 29 flex: 0 0 auto;
30 30
31 @include bem.modifier("shrink", "main") { 31 @include bem.modifier('shrink', 'main') {
32 flex-shrink: 1; 32 flex-shrink: 1;
33 min-inline-size: 0; 33 min-inline-size: 0;
34 } 34 }
35 35
36 @include bem.modifier("main") { 36 @include bem.modifier('main') {
37 inline-size: 100%; 37 inline-size: 100%;
38 } 38 }
39 } 39 }
diff --git a/src/layouts/_media.vars.scss b/src/layouts/_media.vars.scss
index f24ea2a..78e157f 100644
--- a/src/layouts/_media.vars.scss
+++ b/src/layouts/_media.vars.scss
@@ -1,16 +1,16 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$gap: props.def(--l-media--gap, props.get(core.$size--150)) !default; 4$gap: props.def(--l-media--gap, props.get(core.$size--150)) !default;
5 5
6$gapless: props.def(--l-media--gapless, 0) !default; 6$gapless: props.def(--l-media--gapless, 0) !default;
7$sm: props.def(--l-media--sm, props.get(core.$size--100)) !default; 7$sm: props.def(--l-media--sm, props.get(core.$size--100)) !default;
8$lg: props.def(--l-media--lg, props.get(core.$size--300)) !default; 8$lg: props.def(--l-media--lg, props.get(core.$size--300)) !default;
9$xl: props.def(--l-media--xl, props.get(core.$size--450)) !default; 9$xl: props.def(--l-media--xl, props.get(core.$size--450)) !default;
10 10
11$sizes: ( 11$sizes: (
12 "gapless": $gapless, 12 'gapless': $gapless,
13 "sm": $sm, 13 'sm': $sm,
14 "lg": $lg, 14 'lg': $lg,
15 "xl": $xl, 15 'xl': $xl,
16) !default; 16) !default;
diff --git a/src/layouts/_overflow.scss b/src/layouts/_overflow.scss
index 57e2512..ab983b9 100644
--- a/src/layouts/_overflow.scss
+++ b/src/layouts/_overflow.scss
@@ -1,10 +1,10 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5@mixin styles { 5@mixin styles {
6 @include bem.layout("overflow") { 6 @include bem.layout('overflow') {
7 overflow: auto; 7 overflow: auto;
8 scrollbar-color: props.get(core.$theme, --text-disabled) transparent; 8 scrollbar-color: props.get(core.$theme, --text-disabled) transparent;
9 } 9 }
10} 10}
diff --git a/src/layouts/_split-view.scss b/src/layouts/_split-view.scss
index 1bffddd..ea651c7 100644
--- a/src/layouts/_split-view.scss
+++ b/src/layouts/_split-view.scss
@@ -1,110 +1,101 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:include-media/dist/include-media" as media; 2@use 'pkg:include-media/dist/include-media' as media;
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "../props" as *; 5@use '../props' as *;
6 6
7@forward "split-view.vars"; 7@forward 'split-view.vars';
8@use "split-view.vars" as vars; 8@use 'split-view.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.layout("split-view") { 13 @include bem.layout('split-view') {
14 display: flex; 14 display: flex;
15 gap: props.get(vars.$col-gap); 15 gap: props.get(vars.$col-gap);
16 align-items: start; 16 align-items: start;
17 17
18 @include bem.elem("panel") { 18 @include bem.elem('panel') {
19 flex: 1 1 auto; 19 flex: 1 1 auto;
20 inline-size: 100%; 20 inline-size: 100%;
21 min-inline-size: 0; 21 min-inline-size: 0;
22 22
23 &::before { 23 &::before {
24 display: block; 24 display: block;
25 margin-block: -100em 100em; 25 margin-block: -100em 100em;
26 content: ""; 26 content: '';
27 } 27 }
28 28
29 @include bem.modifier("side-25") { 29 @include bem.modifier('side-25') {
30 flex: 0 0 auto; 30 flex: 0 0 auto;
31 inline-size: 25%; 31 inline-size: 25%;
32 } 32 }
33 33
34 @include bem.modifier("min-50") { 34 @include bem.modifier('min-50') {
35 min-inline-size: props.get(vars.$panel--min-50); 35 min-inline-size: props.get(vars.$panel--min-50);
36 } 36 }
37 37
38 @include bem.modifier("min-100") { 38 @include bem.modifier('min-100') {
39 min-inline-size: props.get(vars.$panel--min-100); 39 min-inline-size: props.get(vars.$panel--min-100);
40 } 40 }
41 41
42 @include bem.modifier("min-200") { 42 @include bem.modifier('min-200') {
43 min-inline-size: props.get(vars.$panel--min-200); 43 min-inline-size: props.get(vars.$panel--min-200);
44 } 44 }
45 45
46 @include bem.modifier("sticky") { 46 @include bem.modifier('sticky') {
47 position: sticky; 47 position: sticky;
48 inset-block-start: props.get(vars.$panel--sticky-offset); 48 inset-block-start: props.get(vars.$panel--sticky-offset);
49 } 49 }
50 } 50 }
51 51
52 @include bem.modifier("gapless") { 52 @include bem.modifier('gapless') {
53 gap: props.get(vars.$gapless); 53 gap: props.get(vars.$gapless);
54 54
55 @include bem.elem("panel") { 55 @include bem.elem('panel') {
56 @include bem.modifier("min-50") { 56 @include bem.modifier('min-50') {
57 min-inline-size: calc( 57 min-inline-size: calc(props.get(vars.$panel--min-50) + props.get(vars.$col-gap) - props.get(vars.$gapless));
58 props.get(vars.$panel--min-50) +
59 props.get(vars.$col-gap) - props.get(vars.$gapless)
60 );
61 } 58 }
62 59
63 @include bem.modifier("min-100") { 60 @include bem.modifier('min-100') {
64 min-inline-size: calc( 61 min-inline-size: calc(props.get(vars.$panel--min-100) + props.get(vars.$col-gap) - props.get(vars.$gapless));
65 props.get(vars.$panel--min-100) +
66 props.get(vars.$col-gap) - props.get(vars.$gapless)
67 );
68 } 62 }
69 63
70 @include bem.modifier("min-200") { 64 @include bem.modifier('min-200') {
71 min-inline-size: calc( 65 min-inline-size: calc(props.get(vars.$panel--min-200) + props.get(vars.$col-gap) - props.get(vars.$gapless));
72 props.get(vars.$panel--min-200) +
73 props.get(vars.$col-gap) - props.get(vars.$gapless)
74 );
75 } 66 }
76 } 67 }
77 } 68 }
78 69
79 @include bem.elem("content") { 70 @include bem.elem('content') {
80 inline-size: 100%; 71 inline-size: 100%;
81 } 72 }
82 73
83 @include media.media("<=md") { 74 @include media.media('<=md') {
84 flex-direction: column; 75 flex-direction: column;
85 gap: props.get(vars.$row-gap); 76 gap: props.get(vars.$row-gap);
86 align-items: stretch; 77 align-items: stretch;
87 78
88 @include bem.modifier("gapless") { 79 @include bem.modifier('gapless') {
89 gap: props.get(vars.$gapless); 80 gap: props.get(vars.$gapless);
90 } 81 }
91 82
92 @include bem.modifier("wrap-reverse") { 83 @include bem.modifier('wrap-reverse') {
93 flex-direction: column-reverse; 84 flex-direction: column-reverse;
94 } 85 }
95 86
96 @include bem.elem("panel") { 87 @include bem.elem('panel') {
97 inline-size: auto; 88 inline-size: auto;
98 89
99 @include bem.modifier("side-25") { 90 @include bem.modifier('side-25') {
100 inline-size: auto; 91 inline-size: auto;
101 } 92 }
102 93
103 @include bem.modifier("min-50", "min-100", "min-200") { 94 @include bem.modifier('min-50', 'min-100', 'min-200') {
104 min-inline-size: 0; 95 min-inline-size: 0;
105 } 96 }
106 97
107 @include bem.modifier("sticky") { 98 @include bem.modifier('sticky') {
108 position: static; 99 position: static;
109 } 100 }
110 } 101 }
diff --git a/src/layouts/_split-view.vars.scss b/src/layouts/_split-view.vars.scss
index 9b6dd21..b2944e7 100644
--- a/src/layouts/_split-view.vars.scss
+++ b/src/layouts/_split-view.vars.scss
@@ -1,16 +1,13 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$col-gap: props.def(--l-split-view--col-gap, props.get(core.$size--800)) !default; 4$col-gap: props.def(--l-split-view--col-gap, props.get(core.$size--800)) !default;
5$row-gap: props.def(--l-split-view--row-gap, props.get(core.$size--600)) !default; 5$row-gap: props.def(--l-split-view--row-gap, props.get(core.$size--600)) !default;
6 6
7$gapless: props.def(--l-split-view--gapless, 0rem) !default; 7$gapless: props.def(--l-split-view--gapless, 0rem) !default;
8 8
9$panel--min-50: props.def(--l-split-view--panel--min-50, props.get(core.$size--2400)) !default; 9$panel--min-50: props.def(--l-split-view--panel--min-50, props.get(core.$size--2400)) !default;
10$panel--min-100: props.def(--l-split-view--panel--min-100, props.get(core.$size--3200)) !default; 10$panel--min-100: props.def(--l-split-view--panel--min-100, props.get(core.$size--3200)) !default;
11$panel--min-200: props.def(--l-split-view--panel--min-200, props.get(core.$size--4200)) !default; 11$panel--min-200: props.def(--l-split-view--panel--min-200, props.get(core.$size--4200)) !default;
12 12
13$panel--sticky-offset: props.def( 13$panel--sticky-offset: props.def(--l-split-view--panel--sticky-offset, props.get(core.$sticky-top-offset)) !default;
14 --l-split-view--panel--sticky-offset,
15 props.get(core.$sticky-top-offset)
16) !default;
diff --git a/src/objects/_alert.scss b/src/objects/_alert.scss
index 3aeb781..c2a1c58 100644
--- a/src/objects/_alert.scss
+++ b/src/objects/_alert.scss
@@ -1,37 +1,44 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "../props" as *; 5@use '../props' as *;
6 6
7@forward "alert.vars"; 7@forward 'alert.vars';
8@use "alert.vars" as vars; 8@use 'alert.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("alert") { 13 @include bem.object('alert') {
14 padding-block: props.get(vars.$pad-b); 14 padding-block: props.get(vars.$pad-b);
15 padding-inline: props.get(vars.$pad-i); 15 padding-inline: props.get(vars.$pad-i);
16 background-color: props.get(vars.$bg-color); 16 background-color: props.get(vars.$bg-color);
17 border: props.get(vars.$border-width) solid transparent; 17 border: props.get(vars.$border-width) solid transparent;
18 border-color: props.get(vars.$border-color); 18 border-color: props.get(vars.$border-color);
19 border-radius: props.get(vars.$rounding); 19 border-radius: props.get(vars.$rounding);
20 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) 20 box-shadow:
21 props.get(vars.$shadow-grow) props.get(vars.$shadow-color); 21 props.get(vars.$shadow-x)
22 props.get(vars.$shadow-y)
23 props.get(vars.$shadow-blur)
24 props.get(vars.$shadow-grow)
25 props.get(vars.$shadow-color);
22 26
23 &::before { 27 &::before {
24 display: block; 28 display: block;
25 margin-block: -100em 100em; 29 margin-block: -100em 100em;
26 content: ""; 30 content: '';
27 } 31 }
28 32
29 @each $mod, $theme in vars.$themes-config { 33 @each $mod, $theme in vars.$themes-config {
30 @include bem.modifier($mod) { 34 @include bem.modifier($mod) {
31 background-color: props.get(vars.$themes, $theme, --bg-color); 35 background-color: props.get(vars.$themes, $theme, --bg-color);
32 border-color: props.get(vars.$themes, $theme, --border-color); 36 border-color: props.get(vars.$themes, $theme, --border-color);
33 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) 37 box-shadow:
34 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) 38 props.get(vars.$shadow-x)
39 props.get(vars.$shadow-y)
40 props.get(vars.$shadow-blur)
41 props.get(vars.$shadow-grow)
35 props.get(vars.$themes, $theme, --shadow-color); 42 props.get(vars.$themes, $theme, --shadow-color);
36 } 43 }
37 } 44 }
diff --git a/src/objects/_alert.vars.scss b/src/objects/_alert.vars.scss
index aedd917..bbd3dad 100644
--- a/src/objects/_alert.vars.scss
+++ b/src/objects/_alert.vars.scss
@@ -1,50 +1,36 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$border-width: props.def(--o-alert--border-width, props.get(core.$border-width--medium)) !default; 4$border-width: props.def(--o-alert--border-width, props.get(core.$border-width--medium)) !default;
5$pad-i: props.def(--o-alert--pad-i, props.get(core.$size--250)) !default; 5$pad-i: props.def(--o-alert--pad-i, props.get(core.$size--250)) !default;
6$pad-b: props.def(--o-alert--pad-b, props.get(core.$size--200)) !default; 6$pad-b: props.def(--o-alert--pad-b, props.get(core.$size--200)) !default;
7$rounding: props.def(--o-alert--rounding, props.get(core.$rounding)) !default; 7$rounding: props.def(--o-alert--rounding, props.get(core.$rounding)) !default;
8 8
9$shadow-x: props.def(--o-alert--shadow-x, props.get(core.$shadow--l2--x)) !default; 9$shadow-x: props.def(--o-alert--shadow-x, props.get(core.$shadow--l2--x)) !default;
10$shadow-y: props.def(--o-alert--shadow-y, props.get(core.$shadow--l2--y)) !default; 10$shadow-y: props.def(--o-alert--shadow-y, props.get(core.$shadow--l2--y)) !default;
11$shadow-blur: props.def(--o-alert--shadow-blur, props.get(core.$shadow--l2--blur)) !default; 11$shadow-blur: props.def(--o-alert--shadow-blur, props.get(core.$shadow--l2--blur)) !default;
12$shadow-grow: props.def(--o-alert--shadow-grow, props.get(core.$shadow--l2--grow)) !default; 12$shadow-grow: props.def(--o-alert--shadow-grow, props.get(core.$shadow--l2--grow)) !default;
13 13
14$bg-color: props.def(--o-alert--bg-color, props.get(core.$theme, --bg-l2), "color") !default; 14$bg-color: props.def(--o-alert--bg-color, props.get(core.$theme, --bg-l2), 'color') !default;
15$border-color: props.def( 15$border-color: props.def(--o-alert--border-color, props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute), 'color') !default;
16 --o-alert--border-color,
17 props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute-more)
18 props.get(core.$theme, --text-mute),
19 "color"
20) !default;
21 16
22$shadow-color: props.def( 17$shadow-color: props.def(--o-alert--shadow-color, props.get(core.$transparent-colors, --black, --200), 'color') !default;
23 --o-alert--shadow-color,
24 props.get(core.$transparent-colors, --black, --200),
25 "color"
26) !default;
27 18
28$themes-config: ( 19$themes-config: (
29 accent: --accent, 20 accent: --accent,
30 positive: --positive, 21 positive: --positive,
31 negative: --negative, 22 negative: --negative,
32 warning: --warning, 23 warning: --warning,
33) !default; 24) !default;
34 25
35$themes: props.def(--o-alert, (), "color"); 26$themes: props.def(--o-alert, (), 'color');
36 27
37@each $theme, $key in $themes-config { 28@each $theme, $key in $themes-config {
38 $themes: props.merge( 29 $themes: props.merge($themes, (
39 $themes, 30 $key: (
40 ( 31 --bg-color: props.get(core.$theme, --bg-l2),
41 $key: ( 32 --border-color: props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --800),
42 --bg-color: props.get(core.$theme, --bg-l2), 33 --shadow-color: props.get(core.$theme, $key, --200),
43 --border-color: props.get(core.$theme, $key, --700)
44 props.get(core.$theme, $key, --700)
45 props.get(core.$theme, $key, --800),
46 --shadow-color: props.get(core.$theme, $key, --200),
47 ),
48 ) 34 )
49 ); 35 ));
50} 36}
diff --git a/src/objects/_avatar.scss b/src/objects/_avatar.scss
index f805502..272c213 100644
--- a/src/objects/_avatar.scss
+++ b/src/objects/_avatar.scss
@@ -1,135 +1,118 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "avatar.vars"; 6@forward 'avatar.vars';
7@use "avatar.vars" as vars; 7@use 'avatar.vars' as vars;
8 8
9@mixin status($indicator-size) { 9@mixin status($indicator-size) {
10 @include bem.elem("status") { 10 @include bem.elem('status') {
11 inline-size: props.get($indicator-size); 11 inline-size: props.get($indicator-size);
12 block-size: props.get($indicator-size); 12 block-size: props.get($indicator-size);
13 13
14 @include bem.sibling-elem("content") { 14 @include bem.sibling-elem('content') {
15 mask-image: radial-gradient( 15 mask-image: radial-gradient(circle calc(.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) at
16 circle calc(0.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) 16 calc(100% - .5 * props.get($indicator-size))
17 at calc(100% - 0.5 * props.get($indicator-size)) 17 calc(100% - .5 * props.get($indicator-size)),
18 calc(100% - 0.5 * props.get($indicator-size)), 18 transparent 95%,
19 transparent 95%, 19 #fff);
20 #fff
21 );
22 } 20 }
23 } 21 }
24} 22}
25 23
26@mixin styles { 24@mixin styles {
27 @include materialize-at-root(meta.module-variables("vars")); 25 @include materialize-at-root(meta.module-variables('vars'));
28 26
29 @include bem.object("avatar") { 27 @include bem.object('avatar') {
30 position: relative; 28 position: relative;
31 display: inline-block; 29 display: inline-block;
32 font-style: normal; 30 font-style: normal;
33 vertical-align: 0.05em; 31 vertical-align: .05em;
34 border-radius: props.get(vars.$rounding); 32 border-radius: props.get(vars.$rounding);
35 33
36 &::after { 34 &::after {
37 position: absolute; 35 position: absolute;
38 inset: calc(-1 * props.get(vars.$key-focus--border-offset)); 36 inset: calc(-1 * props.get(vars.$key-focus--border-offset));
39 z-index: 1; 37 z-index: 1;
40 display: none; 38 display: none;
41 pointer-events: none; 39 pointer-events: none;
42 outline: props.get(vars.$key-focus--border-color) solid 40 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
43 props.get(vars.$key-focus--border-width); 41 content: '';
44 content: ""; 42 border: props.get(vars.$key-focus--border-offset) solid transparent;
45 border: props.get(vars.$key-focus--border-offset) solid transparent; 43 border-radius: props.get(vars.$rounding);
46 border-radius: props.get(vars.$rounding); 44 box-shadow:
47 box-shadow: 0 0 0 45 0
48 calc( 46 0
49 props.get(vars.$key-focus--border-width) + 47 0
50 props.get(vars.$key-focus--outline-width) 48 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
51 )
52 props.get(vars.$key-focus--outline-color); 49 props.get(vars.$key-focus--outline-color);
53 } 50 }
54 51
55 @include bem.elem("status") { 52 @include bem.elem('status') {
56 position: absolute; 53 position: absolute;
57 inset-block-end: 0; 54 inset-block-end: 0;
58 inset-inline-end: 0; 55 inset-inline-end: 0;
59 } 56 }
60 57
61 @include bem.elem("icon") { 58 @include bem.elem('icon') {
62 position: absolute; 59 position: absolute;
63 inset-block-end: 0; 60 inset-block-end: 0;
64 inset-inline-end: 0; 61 inset-inline-end: 0;
65 display: flex; 62 display: flex;
66 align-items: flex-end; 63 align-items: flex-end;
67 justify-content: flex-end; 64 justify-content: flex-end;
68 inline-size: props.get(vars.$icon-size); 65 inline-size: props.get(vars.$icon-size);
69 block-size: props.get(vars.$icon-size); 66 block-size: props.get(vars.$icon-size);
70 67
71 @include bem.sibling-elem("content") { 68 @include bem.sibling-elem('content') {
72 clip-path: props.get(vars.$icon-mask); 69 clip-path: props.get(vars.$icon-mask);
73 } 70 }
74 } 71 }
75 72
76 @include bem.elem("content") { 73 @include bem.elem('content') {
77 display: block; 74 display: block;
78 inline-size: props.get(vars.$size); 75 inline-size: props.get(vars.$size);
79 block-size: props.get(vars.$size); 76 block-size: props.get(vars.$size);
80 font-size: props.get(vars.$font-size); 77 font-size: props.get(vars.$font-size);
81 line-height: props.get(vars.$size); 78 line-height: props.get(vars.$size);
82 text-align: center; 79 text-align: center;
83 object-fit: cover; 80 object-fit: cover;
84 object-position: center center; 81 object-position: center center;
85 border-radius: props.get(vars.$rounding); 82 border-radius: props.get(vars.$rounding);
86 } 83 }
87 84
88 @include bem.modifier("circle") { 85 @include bem.modifier('circle') {
89 border-radius: 100%; 86 border-radius: 100%;
90 87
91 &::after { 88 &::after {
92 border-radius: 100%; 89 border-radius: 100%;
93 } 90 }
94 91
95 @include bem.elem("content") { 92 @include bem.elem('content') {
96 border-radius: 100%; 93 border-radius: 100%;
97 } 94 }
98 } 95 }
99 96
100 @include bem.modifier("placeholder") { 97 @include bem.modifier('placeholder') {
101 @include bem.elem("content") { 98 @include bem.elem('content') {
102 background-color: hsl(0, 0%, props.get(vars.$bg-color--l)); 99 background-color: hsl(0, 0%, props.get(vars.$bg-color--l));
103 } 100 }
104 } 101 }
105 102
106 @include bem.modifier("colored") { 103 @include bem.modifier('colored') {
107 @include bem.elem("content") { 104 @include bem.elem('content') {
108 color: #fff; 105 color: #fff;
109 background-color: hsl( 106 background-color: hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l));
110 props.get(vars.$bg-color--h),
111 props.get(vars.$bg-color--s),
112 props.get(vars.$bg-color--l)
113 );
114 } 107 }
115 } 108 }
116 109
117 @include bem.modifier("colored-gradient") { 110 @include bem.modifier('colored-gradient') {
118 @include bem.elem("content") { 111 @include bem.elem('content') {
119 color: #fff; 112 color: #fff;
120 background: linear-gradient( 113 background: linear-gradient(props.get(vars.$bg-angle),
121 props.get(vars.$bg-angle), 114 hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)),
122 hsl( 115 hsl(props.get(vars.$bg-color-2--h), props.get(vars.$bg-color-2--s), props.get(vars.$bg-color-2--l)));
123 props.get(vars.$bg-color--h),
124 props.get(vars.$bg-color--s),
125 props.get(vars.$bg-color--l)
126 ),
127 hsl(
128 props.get(vars.$bg-color-2--h),
129 props.get(vars.$bg-color-2--s),
130 props.get(vars.$bg-color-2--l)
131 )
132 );
133 } 116 }
134 } 117 }
135 118
@@ -139,19 +122,19 @@
139 @include bem.modifier($mod) { 122 @include bem.modifier($mod) {
140 @include status($indicator-size); 123 @include status($indicator-size);
141 124
142 @include bem.elem("icon") { 125 @include bem.elem('icon') {
143 inline-size: props.get($icon-size); 126 inline-size: props.get($icon-size);
144 block-size: props.get($icon-size); 127 block-size: props.get($icon-size);
145 128
146 @include bem.sibling-elem("content") { 129 @include bem.sibling-elem('content') {
147 clip-path: props.get($icon-mask); 130 clip-path: props.get($icon-mask);
148 } 131 }
149 } 132 }
150 133
151 @include bem.elem("content") { 134 @include bem.elem('content') {
152 inline-size: props.get($size); 135 inline-size: props.get($size);
153 block-size: props.get($size); 136 block-size: props.get($size);
154 font-size: props.get($font-size); 137 font-size: props.get($font-size);
155 line-height: props.get($size); 138 line-height: props.get($size);
156 } 139 }
157 } 140 }
diff --git a/src/objects/_avatar.vars.scss b/src/objects/_avatar.vars.scss
index 7d1c342..467d7cc 100644
--- a/src/objects/_avatar.vars.scss
+++ b/src/objects/_avatar.vars.scss
@@ -1,102 +1,79 @@
1@use "sass:math"; 1@use 'sass:math';
2 2
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6@function icon-mask($p) { 6@function icon-mask($p) {
7 $offset: 0.15 * math.div(0.5, $p); 7 $offset: 0.15 * math.div(0.5, $p);
8 @return 'data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="avatar_mask" clipPathUnits="objectBoundingBox"><path d="M 0,0 H 1 V #{$p} H #{$p + $offset} C #{$p + 0.055},#{$p} #{$p},#{$p + 0.055} #{$p},#{$p + $offset} V 1 H 0 Z" /></clipPath></defs></svg>#avatar_mask'; 8 @return 'data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="avatar_mask" clipPathUnits="objectBoundingBox"><path d="M 0,0 H 1 V #{$p} H #{$p + $offset} C #{$p + 0.055},#{$p} #{$p},#{$p + 0.055} #{$p},#{$p + $offset} V 1 H 0 Z" /></clipPath></defs></svg>#avatar_mask';
9} 9}
10 10
11$size: props.def(--o-avatar--size, props.get(core.$size--500)) !default; 11$size: props.def(--o-avatar--size, props.get(core.$size--500)) !default;
12$font-size: props.def(--o-avatar--font-size, props.get(core.$font-size--100)) !default; 12$font-size: props.def(--o-avatar--font-size, props.get(core.$font-size--100)) !default;
13$indicator-size: props.def(--o-avatar--indicator-size, props.get(core.$size--150)) !default; 13$indicator-size: props.def(--o-avatar--indicator-size, props.get(core.$size--150)) !default;
14$indicator-spacing: props.def(--o-avatar--indicator-spacing, props.get(core.$size--40)) !default; 14$indicator-spacing: props.def(--o-avatar--indicator-spacing, props.get(core.$size--40)) !default;
15$rounding: props.def(--o-avatar--rounding, 25%) !default; 15$rounding: props.def(--o-avatar--rounding, 25%) !default;
16$icon-size: props.def(--o-avatar--icon-size, 1.2em) !default; 16$icon-size: props.def(--o-avatar--icon-size, 1.2em) !default;
17$icon-mask: props.def(--o-avatar--icon-mask, url(icon-mask(0.5))) !default; 17$icon-mask: props.def(--o-avatar--icon-mask, url(icon-mask(.5))) !default;
18 18
19$size--xxxl: props.def(--o-avatar--xxxl--size, props.get(core.$size--1600)) !default; 19$size--xxxl: props.def(--o-avatar--xxxl--size, props.get(core.$size--1600)) !default;
20$font-size--xxxl: props.def(--o-avatar--xxxl--font-size, props.get(core.$font-size--800)) !default; 20$font-size--xxxl: props.def(--o-avatar--xxxl--font-size, props.get(core.$font-size--800)) !default;
21$indicator-size--xxxl: props.def( 21$indicator-size--xxxl: props.def(--o-avatar--xxxl--indicator-size, props.get(core.$size--400)) !default;
22 --o-avatar--xxxl--indicator-size, 22$icon-size--xxxl: props.def(--o-avatar--xxxl--icon-size, 1.9em) !default;
23 props.get(core.$size--400) 23$icon-mask--xxxl: props.def(--o-avatar--xxxl--icon-mask, url(icon-mask(.75))) !default;
24) !default;
25$icon-size--xxxl: props.def(--o-avatar--xxxl--icon-size, 1.9em) !default;
26$icon-mask--xxxl: props.def(--o-avatar--xxxl--icon-mask, url(icon-mask(0.75))) !default;
27 24
28$size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default; 25$size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default;
29$font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default; 26$font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default;
30$indicator-size--xxl: props.def( 27$indicator-size--xxl: props.def(--o-avatar--xxl--indicator-size, props.get(core.$size--300)) !default;
31 --o-avatar--xxl--indicator-size, 28$icon-size--xxl: props.def(--o-avatar--xxl--icon-size, 1.7em) !default;
32 props.get(core.$size--300) 29$icon-mask--xxl: props.def(--o-avatar--xxl--icon-mask, url(icon-mask(.7))) !default;
33) !default;
34$icon-size--xxl: props.def(--o-avatar--xxl--icon-size, 1.7em) !default;
35$icon-mask--xxl: props.def(--o-avatar--xxl--icon-mask, url(icon-mask(0.7))) !default;
36 30
37$size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default; 31$size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default;
38$font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default; 32$font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default;
39$indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default; 33$indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default;
40$icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default; 34$icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default;
41$icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(0.6))) !default; 35$icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(.6))) !default;
42 36
43$size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default; 37$size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default;
44$font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default; 38$font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default;
45$indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default; 39$indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default;
46$icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default; 40$icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default;
47$icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(0.55))) !default; 41$icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(.55))) !default;
48 42
49$size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default; 43$size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default;
50$font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default; 44$font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default;
51$indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default; 45$indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default;
52$icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default; 46$icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default;
53$icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(0.5))) !default; 47$icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(.5))) !default;
54 48
55$size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default; 49$size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default;
56$font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default; 50$font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default;
57$indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default; 51$indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default;
58$icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default; 52$icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default;
59$icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(0.5))) !default; 53$icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(.5))) !default;
60 54
61$key-focus--border-width: props.def( 55$key-focus--border-width: props.def(--o-avatar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
62 --o-avatar--key-focus--border-width, 56$key-focus--border-offset: props.def(--o-avatar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
63 props.get(core.$key-focus--border-width) 57$key-focus--outline-width: props.def(--o-avatar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
64) !default;
65$key-focus--border-offset: props.def(
66 --o-avatar--key-focus--border-offset,
67 props.get(core.$key-focus--border-offset)
68) !default;
69$key-focus--outline-width: props.def(
70 --o-avatar--key-focus--outline-width,
71 props.get(core.$key-focus--outline-width)
72) !default;
73 58
74$bg-color--h: props.def(--o-avatar--bg-color--h, 354, "color") !default; 59$bg-color--h: props.def(--o-avatar--bg-color--h, 354, 'color') !default;
75$bg-color--s: props.def(--o-avatar--bg-color--s, 44%, "color") !default; 60$bg-color--s: props.def(--o-avatar--bg-color--s, 44%, 'color') !default;
76$bg-color--l: props.def(--o-avatar--bg-color--l, 45%, "color") !default; 61$bg-color--l: props.def(--o-avatar--bg-color--l, 45%, 'color') !default;
77 62
78$bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, "color") !default; 63$bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, 'color') !default;
79$bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, "color") !default; 64$bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, 'color') !default;
80$bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, "color") !default; 65$bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, 'color') !default;
81 66
82$bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default; 67$bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default;
83 68
84$key-focus--border-color: props.def( 69$key-focus--border-color: props.def(--o-avatar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
85 --o-avatar--key-focus--border-color, 70$key-focus--outline-color: props.def(--o-avatar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
86 props.get(core.$theme, --focus, --border),
87 "color"
88) !default;
89$key-focus--outline-color: props.def(
90 --o-avatar--key-focus--outline-color,
91 props.get(core.$theme, --focus, --outline),
92 "color"
93) !default;
94 71
95$sizes: ( 72$sizes: (
96 "xs" $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs, 73 'xs' $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs,
97 "sm" $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm, 74 'sm' $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm,
98 "lg" $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg, 75 'lg' $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg,
99 "xl" $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl, 76 'xl' $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl,
100 "xxl" $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl, 77 'xxl' $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl,
101 "xxxl" $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl 78 'xxxl' $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl,
102) !default; 79) !default;
diff --git a/src/objects/_backdrop.scss b/src/objects/_backdrop.scss
index 1a7d1fa..6660abf 100644
--- a/src/objects/_backdrop.scss
+++ b/src/objects/_backdrop.scss
@@ -1,23 +1,23 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "backdrop.vars"; 6@forward 'backdrop.vars';
7@use "backdrop.vars" as vars; 7@use 'backdrop.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("backdrop") { 12 @include bem.object('backdrop') {
13 position: fixed; 13 position: fixed;
14 inset: 0; 14 inset: 0;
15 z-index: props.get(vars.$z-index); 15 z-index: props.get(vars.$z-index);
16 box-sizing: border-box; 16 box-sizing: border-box;
17 display: flex; 17 display: flex;
18 flex-direction: column; 18 flex-direction: column;
19 overflow: auto; 19 overflow: auto;
20 background-color: props.get(vars.$bg-color); 20 background-color: props.get(vars.$bg-color);
21 backdrop-filter: blur(props.get(vars.$blur)); 21 backdrop-filter: blur(props.get(vars.$blur));
22 } 22 }
23} 23}
diff --git a/src/objects/_backdrop.vars.scss b/src/objects/_backdrop.vars.scss
index 78f4742..9206117 100644
--- a/src/objects/_backdrop.vars.scss
+++ b/src/objects/_backdrop.vars.scss
@@ -1,10 +1,6 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$z-index: props.def(--o-backdrop--z-index, 10000) !default; 4$z-index: props.def(--o-backdrop--z-index, 10000) !default;
5$blur: props.def(--o-backdrop--blur, 2em) !default; 5$blur: props.def(--o-backdrop--blur, 2em) !default;
6$bg-color: props.def( 6$bg-color: props.def(--o-backdrop--bg-color, props.get(core.$transparent-colors, --black, --600), 'color') !default;
7 --o-backdrop--bg-color,
8 props.get(core.$transparent-colors, --black, --600),
9 "color"
10) !default;
diff --git a/src/objects/_button.scss b/src/objects/_button.scss
index 8adc0f7..a3c8187 100644
--- a/src/objects/_button.scss
+++ b/src/objects/_button.scss
@@ -1,119 +1,115 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:meta"; 3@use 'sass:meta';
4@use "sass:string"; 4@use 'sass:string';
5@use "pkg:iro-sass/bem"; 5@use 'pkg:iro-sass/src/bem';
6@use "pkg:iro-sass/props"; 6@use 'pkg:iro-sass/src/props';
7@use "../props" as *; 7@use '../props' as *;
8 8
9@forward "button.vars"; 9@forward 'button.vars';
10@use "button.vars" as vars; 10@use 'button.vars' as vars;
11 11
12@mixin -apply-theme($theme, $key: ()) { 12@mixin -apply-theme($theme, $key: ()) {
13 color: props.get($theme, list.join($key, --disabled --label-color)...); 13 color: props.get($theme, list.join($key, --disabled --label-color)...);
14 background-color: props.get($theme, list.join($key, --disabled --bg-color)...); 14 background-color: props.get($theme, list.join($key, --disabled --bg-color)...);
15 border-color: props.get($theme, list.join($key, --disabled --border-color)...); 15 border-color: props.get($theme, list.join($key, --disabled --border-color)...);
16 16
17 &::after { 17 &::after {
18 outline-color: props.get($theme, list.join($key, --key-focus --border-color)...); 18 outline-color: props.get($theme, list.join($key, --key-focus --border-color)...);
19 box-shadow: 0 0 0 19 box-shadow:
20 calc( 20 0
21 props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width) 21 0
22 ) 22 0
23 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
23 props.get($theme, list.join($key, --key-focus --outline-color)...); 24 props.get($theme, list.join($key, --key-focus --outline-color)...);
24 } 25 }
25 26
26 &:link, 27 &:link,
27 &:visited, 28 &:visited,
28 &:enabled { 29 &:enabled {
29 color: props.get($theme, list.join($key, --label-color)...); 30 color: props.get($theme, list.join($key, --label-color)...);
30 background-color: props.get($theme, list.join($key, --bg-color)...); 31 background-color: props.get($theme, list.join($key, --bg-color)...);
31 border-color: props.get($theme, list.join($key, --border-color)...); 32 border-color: props.get($theme, list.join($key, --border-color)...);
32 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) 33 box-shadow:
33 props.get(vars.$shadow-grow) props.get($theme, list.join($key, --shadow-color)...); 34 props.get(vars.$shadow-x)
35 props.get(vars.$shadow-y)
36 props.get(vars.$shadow-blur)
37 props.get(vars.$shadow-grow)
38 props.get($theme, list.join($key, --shadow-color)...);
34 39
35 &:hover, 40 &:hover,
36 &:focus-visible { 41 &:focus-visible {
37 color: props.get($theme, list.join($key, --hover --label-color)...); 42 color: props.get($theme, list.join($key, --hover --label-color)...);
38 background-color: props.get($theme, list.join($key, --hover --bg-color)...); 43 background-color: props.get($theme, list.join($key, --hover --bg-color)...);
39 border-color: props.get($theme, list.join($key, --hover --border-color)...); 44 border-color: props.get($theme, list.join($key, --hover --border-color)...);
40 } 45 }
41 46
42 &:active { 47 &:active {
43 color: props.get($theme, list.join($key, --active --label-color)...); 48 color: props.get($theme, list.join($key, --active --label-color)...);
44 background-color: props.get($theme, list.join($key, --active --bg-color)...); 49 background-color: props.get($theme, list.join($key, --active --bg-color)...);
45 border-color: props.get($theme, list.join($key, --active --border-color)...); 50 border-color: props.get($theme, list.join($key, --active --border-color)...);
46 box-shadow: none; 51 box-shadow: none;
47 } 52 }
48 } 53 }
49 54
50 @include bem.modifier("badge") { 55 @include bem.modifier('badge') {
51 color: props.get($theme, list.join($key, --badge --label-color)...); 56 color: props.get($theme, list.join($key, --badge --label-color)...);
52 background-color: props.get($theme, list.join($key, --badge --bg-color)...); 57 background-color: props.get($theme, list.join($key, --badge --bg-color)...);
53 border-color: props.get($theme, list.join($key, --badge --border-color)...); 58 border-color: props.get($theme, list.join($key, --badge --border-color)...);
54 box-shadow: none; 59 box-shadow: none;
55 60
56 &:link, 61 &:link,
57 &:visited, 62 &:visited,
58 &:enabled { 63 &:enabled {
59 color: props.get($theme, list.join($key, --badge --label-color)...); 64 color: props.get($theme, list.join($key, --badge --label-color)...);
60 background-color: props.get($theme, list.join($key, --badge --bg-color)...); 65 background-color: props.get($theme, list.join($key, --badge --bg-color)...);
61 border-color: props.get($theme, list.join($key, --badge --border-color)...); 66 border-color: props.get($theme, list.join($key, --badge --border-color)...);
62 box-shadow: none; 67 box-shadow: none;
63 68
64 &:hover, 69 &:hover,
65 &:focus-visible { 70 &:focus-visible {
66 color: props.get($theme, list.join($key, --badge --hover --label-color)...); 71 color: props.get($theme, list.join($key, --badge --hover --label-color)...);
67 background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...); 72 background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...);
68 border-color: props.get($theme, list.join($key, --badge --hover --border-color)...); 73 border-color: props.get($theme, list.join($key, --badge --hover --border-color)...);
69 } 74 }
70 75
71 &:active { 76 &:active {
72 color: props.get($theme, list.join($key, --badge --active --label-color)...); 77 color: props.get($theme, list.join($key, --badge --active --label-color)...);
73 background-color: props.get( 78 background-color: props.get($theme, list.join($key, --badge --active --bg-color)...);
74 $theme, 79 border-color: props.get($theme, list.join($key, --badge --active --border-color)...);
75 list.join($key, --badge --active --bg-color)...
76 );
77 border-color: props.get(
78 $theme,
79 list.join($key, --badge --active --border-color)...
80 );
81 } 80 }
82 } 81 }
83 } 82 }
84 83
85 @include bem.modifier("quiet") { 84 @include bem.modifier('quiet') {
86 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...); 85 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...);
87 background-color: transparent; 86 background-color: transparent;
88 border-color: transparent; 87 border-color: transparent;
89 88
90 &:link, 89 &:link,
91 &:visited, 90 &:visited,
92 &:enabled { 91 &:enabled {
93 color: props.get($theme, list.join($key, --quiet --label-color)...); 92 color: props.get($theme, list.join($key, --quiet --label-color)...);
94 background-color: transparent; 93 background-color: transparent;
95 border-color: transparent; 94 border-color: transparent;
96 box-shadow: none; 95 box-shadow: none;
97 96
98 &:hover, 97 &:hover,
99 &:focus-visible { 98 &:focus-visible {
100 color: props.get($theme, list.join($key, --quiet --hover --label-color)...); 99 color: props.get($theme, list.join($key, --quiet --hover --label-color)...);
101 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...); 100 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...);
102 border-color: transparent; 101 border-color: transparent;
103 } 102 }
104 103
105 &:active { 104 &:active {
106 color: props.get($theme, list.join($key, --quiet --active --label-color)...); 105 color: props.get($theme, list.join($key, --quiet --active --label-color)...);
107 background-color: props.get( 106 background-color: props.get($theme, list.join($key, --quiet --active --bg-color)...);
108 $theme, 107 border-color: transparent;
109 list.join($key, --quiet --active --bg-color)...
110 );
111 border-color: transparent;
112 } 108 }
113 } 109 }
114 } 110 }
115 111
116 @include bem.is("highlighted") { 112 @include bem.is('highlighted') {
117 &:link, 113 &:link,
118 &:visited, 114 &:visited,
119 &:enabled { 115 &:enabled {
@@ -125,27 +121,32 @@
125 121
126 box-shadow: 122 box-shadow:
127 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...), 123 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...),
128 props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) 124 props.get(vars.$shadow-x)
129 props.get(vars.$shadow-grow) 125 props.get(vars.$shadow-y)
130 props.get($theme, list.join($key, --highlighted --shadow-color)...); 126 props.get(vars.$shadow-blur)
127 props.get(vars.$shadow-grow)
128 props.get($theme, list.join($key, --highlighted --shadow-color)...);
131 129
132 &:focus-visible { 130 &:focus-visible {
133 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) 131 box-shadow:
134 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) 132 props.get(vars.$shadow-x)
133 props.get(vars.$shadow-y)
134 props.get(vars.$shadow-blur)
135 props.get(vars.$shadow-grow)
135 props.get($theme, list.join($key, --shadow-color)...); 136 props.get($theme, list.join($key, --shadow-color)...);
136 } 137 }
137 } 138 }
138 } 139 }
139 140
140 @include bem.is("selected") { 141 @include bem.is('selected') {
141 color: props.get($theme, list.join($key, --selected --disabled --label-color)...); 142 color: props.get($theme, list.join($key, --selected --disabled --label-color)...);
142 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); 143 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...);
143 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...); 144 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...);
144 145
145 @include bem.multi("&:link, &:visited, &:enabled", "modifier" "badge") { 146 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'badge') {
146 color: props.get($theme, list.join($key, --selected --label-color)...); 147 color: props.get($theme, list.join($key, --selected --label-color)...);
147 background-color: props.get($theme, list.join($key, --selected --bg-color)...); 148 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
148 border-color: props.get($theme, list.join($key, --selected --border-color)...); 149 border-color: props.get($theme, list.join($key, --selected --border-color)...);
149 } 150 }
150 151
151 &:link, 152 &:link,
@@ -153,67 +154,47 @@
153 &:enabled { 154 &:enabled {
154 &:hover, 155 &:hover,
155 &:focus-visible { 156 &:focus-visible {
156 color: props.get($theme, list.join($key, --selected --hover --label-color)...); 157 color: props.get($theme, list.join($key, --selected --hover --label-color)...);
157 background-color: props.get( 158 background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...);
158 $theme, 159 border-color: props.get($theme, list.join($key, --selected --hover --border-color)...);
159 list.join($key, --selected --hover --bg-color)...
160 );
161 border-color: props.get(
162 $theme,
163 list.join($key, --selected --hover --border-color)...
164 );
165 } 160 }
166 161
167 &:active { 162 &:active {
168 color: props.get($theme, list.join($key, --selected --active --label-color)...); 163 color: props.get($theme, list.join($key, --selected --active --label-color)...);
169 background-color: props.get( 164 background-color: props.get($theme, list.join($key, --selected --active --bg-color)...);
170 $theme, 165 border-color: props.get($theme, list.join($key, --selected --active --border-color)...);
171 list.join($key, --selected --active --bg-color)...
172 );
173 border-color: props.get(
174 $theme,
175 list.join($key, --selected --active --border-color)...
176 );
177 } 166 }
178 } 167 }
179 } 168 }
180} 169}
181 170
182@mixin styles { 171@mixin styles {
183 @include materialize-at-root(meta.module-variables("vars")); 172 @include materialize-at-root(meta.module-variables('vars'));
184 173
185 @include bem.object("button") { 174 @include bem.object('button') {
186 position: relative; 175 position: relative;
187 display: inline-block; 176 display: inline-block;
188 padding-block: props.get(vars.$pad-b); 177 padding-block: props.get(vars.$pad-b);
189 padding-inline: props.get(vars.$pad-i); 178 padding-inline: props.get(vars.$pad-i);
190 text-overflow: ellipsis; 179 text-overflow: ellipsis;
191 font-size: props.get(vars.$font-size); 180 font-size: props.get(vars.$font-size);
192 line-height: props.get(vars.$line-height); 181 line-height: props.get(vars.$line-height);
193 text-align: center; 182 text-align: center;
194 white-space: nowrap; 183 white-space: nowrap;
195 text-decoration: none; 184 text-decoration: none;
196 border: props.get(vars.$border-width) solid transparent; 185 border: props.get(vars.$border-width) solid transparent;
197 border-radius: props.get(vars.$rounding); 186 border-radius: props.get(vars.$rounding);
198 transition: 187 transition: color .1s, background-color .1s, border-color .1s, box-shadow .1s;
199 color 0.1s,
200 background-color 0.1s,
201 border-color 0.1s,
202 box-shadow 0.1s;
203 188
204 &::after { 189 &::after {
205 position: absolute; 190 position: absolute;
206 inset: calc( 191 inset: calc(-1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset));
207 -1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset) 192 z-index: 1;
208 ); 193 display: none;
209 z-index: 1;
210 display: none;
211 pointer-events: none; 194 pointer-events: none;
212 outline: transparent solid props.get(vars.$key-focus--border-width); 195 outline: transparent solid props.get(vars.$key-focus--border-width);
213 content: ""; 196 content: '';
214 border-radius: calc( 197 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
215 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)
216 );
217 } 198 }
218 199
219 &:link, 200 &:link,
@@ -228,7 +209,7 @@
228 } 209 }
229 } 210 }
230 211
231 @include bem.elem("label") { 212 @include bem.elem('label') {
232 display: inline-block; 213 display: inline-block;
233 margin-inline: props.get(vars.$pad-i-label); 214 margin-inline: props.get(vars.$pad-i-label);
234 } 215 }
@@ -241,91 +222,79 @@
241 } 222 }
242 } 223 }
243 224
244 @include bem.modifier("pill") { 225 @include bem.modifier('pill') {
245 padding-inline: props.get(vars.$pad-i-pill); 226 padding-inline: props.get(vars.$pad-i-pill);
246 border-radius: 100em; 227 border-radius: 100em;
247 228
248 &::after { 229 &::after {
249 border-radius: 100em; 230 border-radius: 100em;
250 } 231 }
251 } 232 }
252 233
253 @include bem.modifier("icon") { 234 @include bem.modifier('icon') {
254 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b)); 235 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b));
255 padding-inline: 0; 236 padding-inline: 0;
256 } 237 }
257 238
258 @include bem.modifier("wide") { 239 @include bem.modifier('wide') {
259 @include bem.elem("label") { 240 @include bem.elem('label') {
260 margin-inline: props.get(vars.$pad-i-wide); 241 margin-inline: props.get(vars.$pad-i-wide);
261 } 242 }
262 } 243 }
263 244
264 @include bem.modifier("justify") { 245 @include bem.modifier('justify') {
265 text-align: justify; 246 text-align: justify;
266 text-align-last: justify; 247 text-align-last: justify;
267 } 248 }
268 249
269 @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b, 250 @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes {
270 $font-size in vars.$fixed-sizes
271 {
272 @include bem.modifier($mod) { 251 @include bem.modifier($mod) {
273 padding-block: props.get($pad-b); 252 padding-block: props.get($pad-b);
274 padding-inline: props.get($pad-i); 253 padding-inline: props.get($pad-i);
275 font-size: props.get($font-size); 254 font-size: props.get($font-size);
276 255
277 @include bem.elem("label") { 256 @include bem.elem('label') {
278 margin-inline: props.get($pad-i-label); 257 margin-inline: props.get($pad-i-label);
279 } 258 }
280 259
281 @include bem.modifier("pill") { 260 @include bem.modifier('pill') {
282 padding-inline: props.get($pad-i-pill); 261 padding-inline: props.get($pad-i-pill);
283 } 262 }
284 263
285 @include bem.modifier("icon") { 264 @include bem.modifier('icon') {
286 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b)); 265 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b));
287 padding-inline: 0; 266 padding-inline: 0;
288 } 267 }
289 268
290 @include bem.modifier("wide") { 269 @include bem.modifier('wide') {
291 @include bem.elem("label") { 270 @include bem.elem('label') {
292 margin-inline: props.get($pad-i-wide); 271 margin-inline: props.get($pad-i-wide);
293 } 272 }
294 } 273 }
295 } 274 }
296 } 275 }
297 276
298 @include bem.modifier("align-block") { 277 @include bem.modifier('align-block') {
299 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width)); 278 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width));
300 279
301 @include bem.modifier("pill") { 280 @include bem.modifier('pill') {
302 margin-inline: calc( 281 margin-inline: calc(-1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width));
303 -1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width)
304 );
305 } 282 }
306 283
307 @include bem.modifier("icon") { 284 @include bem.modifier('icon') {
308 margin-inline: calc( 285 margin-inline: calc(-1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1));
309 -1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - 0.5em *
310 (props.get(vars.$line-height) - 1)
311 );
312 } 286 }
313 287
314 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { 288 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes {
315 @include bem.modifier($mod) { 289 @include bem.modifier($mod) {
316 margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width)); 290 margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width));
317 291
318 @include bem.modifier("pill") { 292 @include bem.modifier('pill') {
319 margin-inline: calc( 293 margin-inline: calc(-1 * props.get($pad-i-pill) - props.get(vars.$border-width));
320 -1 * props.get($pad-i-pill) - props.get(vars.$border-width)
321 );
322 } 294 }
323 295
324 @include bem.modifier("icon") { 296 @include bem.modifier('icon') {
325 margin-inline: calc( 297 margin-inline: calc(-1 * props.get($pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1));
326 -1 * props.get($pad-b) - props.get(vars.$border-width) - 0.5em *
327 (props.get(vars.$line-height) - 1)
328 );
329 } 298 }
330 } 299 }
331 } 300 }
diff --git a/src/objects/_button.vars.scss b/src/objects/_button.vars.scss
index a137d6d..3f835ae 100644
--- a/src/objects/_button.vars.scss
+++ b/src/objects/_button.vars.scss
@@ -1,456 +1,386 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$line-height: props.def(--o-button--line-height, 1.4) !default; 6$line-height: props.def(--o-button--line-height, 1.4) !default;
7$border-width: props.def(--o-button--border-width, props.get(core.$border-width--thin)) !default; 7$border-width: props.def(--o-button--border-width, props.get(core.$border-width--thin)) !default;
8$rounding: props.def(--o-button--rounding, props.get(core.$rounding--sm)) !default; 8$rounding: props.def(--o-button--rounding, props.get(core.$rounding--sm)) !default;
9 9
10$pad-i--xs: props.def(--o-button--xs--pad-i, props.get(core.$size--75)) !default; 10$pad-i--xs: props.def(--o-button--xs--pad-i, props.get(core.$size--75)) !default;
11$pad-i-label--xs: props.def(--o-button--xs--pad-i-label, props.get(core.$size--40)) !default; 11$pad-i-label--xs: props.def(--o-button--xs--pad-i-label, props.get(core.$size--40)) !default;
12$pad-i-wide--xs: props.def(--o-button--xs--pad-i-wide, props.get(core.$size--150)) !default; 12$pad-i-wide--xs: props.def(--o-button--xs--pad-i-wide, props.get(core.$size--150)) !default;
13$pad-i-pill--xs: props.def(--o-button--xs--pad-i-pill, props.get(core.$size--115)) !default; 13$pad-i-pill--xs: props.def(--o-button--xs--pad-i-pill, props.get(core.$size--115)) !default;
14$pad-b--xs: props.def(--o-button--xs--pad-b, props.get(core.$size--40)) !default; 14$pad-b--xs: props.def(--o-button--xs--pad-b, props.get(core.$size--40)) !default;
15$font-size--xs: props.def(--o-button--xs--font-size, props.get(core.$font-size--75)) !default; 15$font-size--xs: props.def(--o-button--xs--font-size, props.get(core.$font-size--75)) !default;
16 16
17$pad-i--sm: props.def(--o-button--sm--pad-i, props.get(core.$size--85)) !default; 17$pad-i--sm: props.def(--o-button--sm--pad-i, props.get(core.$size--85)) !default;
18$pad-i-label--sm: props.def(--o-button--sm--pad-i-label, props.get(core.$size--50)) !default; 18$pad-i-label--sm: props.def(--o-button--sm--pad-i-label, props.get(core.$size--50)) !default;
19$pad-i-wide--sm: props.def(--o-button--sm--pad-i-wide, props.get(core.$size--175)) !default; 19$pad-i-wide--sm: props.def(--o-button--sm--pad-i-wide, props.get(core.$size--175)) !default;
20$pad-i-pill--sm: props.def(--o-button--sm--pad-i-pill, props.get(core.$size--125)) !default; 20$pad-i-pill--sm: props.def(--o-button--sm--pad-i-pill, props.get(core.$size--125)) !default;
21$pad-b--sm: props.def(--o-button--sm--pad-b, props.get(core.$size--50)) !default; 21$pad-b--sm: props.def(--o-button--sm--pad-b, props.get(core.$size--50)) !default;
22$font-size--sm: props.def(--o-button--sm--font-size, props.get(core.$font-size--100)) !default; 22$font-size--sm: props.def(--o-button--sm--font-size, props.get(core.$font-size--100)) !default;
23 23
24$pad-i: props.def(--o-button--pad-i, props.get(core.$size--115)) !default; 24$pad-i: props.def(--o-button--pad-i, props.get(core.$size--115)) !default;
25$pad-i-label: props.def(--o-button--pad-i-label, props.get(core.$size--50)) !default; 25$pad-i-label: props.def(--o-button--pad-i-label, props.get(core.$size--50)) !default;
26$pad-i-wide: props.def(--o-button--pad-i-wide, props.get(core.$size--200)) !default; 26$pad-i-wide: props.def(--o-button--pad-i-wide, props.get(core.$size--200)) !default;
27$pad-i-pill: props.def(--o-button--pad-i-pill, props.get(core.$size--160)) !default; 27$pad-i-pill: props.def(--o-button--pad-i-pill, props.get(core.$size--160)) !default;
28$pad-b: props.def(--o-button--pad-b, props.get(core.$size--85)) !default; 28$pad-b: props.def(--o-button--pad-b, props.get(core.$size--85)) !default;
29$font-size: props.def(--o-button--font-size, props.get(core.$font-size--100)) !default; 29$font-size: props.def(--o-button--font-size, props.get(core.$font-size--100)) !default;
30 30
31$pad-i--lg: props.def(--o-button--lg--pad-i, props.get(core.$size--160)) !default; 31$pad-i--lg: props.def(--o-button--lg--pad-i, props.get(core.$size--160)) !default;
32$pad-i-label--lg: props.def(--o-button--lg--pad-i-label, props.get(core.$size--65)) !default; 32$pad-i-label--lg: props.def(--o-button--lg--pad-i-label, props.get(core.$size--65)) !default;
33$pad-i-wide--lg: props.def(--o-button--lg--pad-i-wide, props.get(core.$size--300)) !default; 33$pad-i-wide--lg: props.def(--o-button--lg--pad-i-wide, props.get(core.$size--300)) !default;
34$pad-i-pill--lg: props.def(--o-button--lg--pad-i-pill, props.get(core.$size--175)) !default; 34$pad-i-pill--lg: props.def(--o-button--lg--pad-i-pill, props.get(core.$size--175)) !default;
35$pad-b--lg: props.def(--o-button--lg--pad-b, props.get(core.$size--115)) !default; 35$pad-b--lg: props.def(--o-button--lg--pad-b, props.get(core.$size--115)) !default;
36$font-size--lg: props.def(--o-button--lg--font-size, props.get(core.$font-size--150)) !default; 36$font-size--lg: props.def(--o-button--lg--font-size, props.get(core.$font-size--150)) !default;
37 37
38$pad-i--xl: props.def(--o-button--xl--pad-i, props.get(core.$size--200)) !default; 38$pad-i--xl: props.def(--o-button--xl--pad-i, props.get(core.$size--200)) !default;
39$pad-i-label--xl: props.def(--o-button--xl--pad-i-label, props.get(core.$size--85)) !default; 39$pad-i-label--xl: props.def(--o-button--xl--pad-i-label, props.get(core.$size--85)) !default;
40$pad-i-wide--xl: props.def(--o-button--xl--pad-i-wide, props.get(core.$size--400)) !default; 40$pad-i-wide--xl: props.def(--o-button--xl--pad-i-wide, props.get(core.$size--400)) !default;
41$pad-i-pill--xl: props.def(--o-button--xl--pad-i-pill, props.get(core.$size--225)) !default; 41$pad-i-pill--xl: props.def(--o-button--xl--pad-i-pill, props.get(core.$size--225)) !default;
42$pad-b--xl: props.def(--o-button--xl--pad-b, props.get(core.$size--150)) !default; 42$pad-b--xl: props.def(--o-button--xl--pad-b, props.get(core.$size--150)) !default;
43$font-size--xl: props.def(--o-button--xl--font-size, props.get(core.$font-size--200)) !default; 43$font-size--xl: props.def(--o-button--xl--font-size, props.get(core.$font-size--200)) !default;
44 44
45$shadow-x: props.def(--o-button--shadow-x, props.get(core.$shadow--l1--x)) !default; 45$shadow-x: props.def(--o-button--shadow-x, props.get(core.$shadow--l1--x)) !default;
46$shadow-y: props.def(--o-button--shadow-y, props.get(core.$shadow--l1--y)) !default; 46$shadow-y: props.def(--o-button--shadow-y, props.get(core.$shadow--l1--y)) !default;
47$shadow-blur: props.def(--o-button--shadow-blur, props.get(core.$shadow--l1--blur)) !default; 47$shadow-blur: props.def(--o-button--shadow-blur, props.get(core.$shadow--l1--blur)) !default;
48$shadow-grow: props.def(--o-button--shadow-grow, props.get(core.$shadow--l1--grow)) !default; 48$shadow-grow: props.def(--o-button--shadow-grow, props.get(core.$shadow--l1--grow)) !default;
49 49
50$key-focus--border-width: props.def( 50$key-focus--border-width: props.def(--o-button--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
51 --o-button--key-focus--border-width, 51$key-focus--border-offset: props.def(--o-button--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
52 props.get(core.$key-focus--border-width) 52$key-focus--outline-width: props.def(--o-button--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
53) !default;
54$key-focus--border-offset: props.def(
55 --o-button--key-focus--border-offset,
56 props.get(core.$key-focus--border-offset)
57) !default;
58$key-focus--outline-width: props.def(
59 --o-button--key-focus--outline-width,
60 props.get(core.$key-focus--outline-width)
61) !default;
62 53
63$fixed-sizes: ( 54$fixed-sizes: (
64 "xs" $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs, 55 'xs' $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs,
65 "sm" $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm, 56 'sm' $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm,
66 "lg" $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg, 57 'lg' $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg,
67 "xl" $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl 58 'xl' $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl,
68) !default; 59) !default;
69 60
70$themes: props.def(--o-button, (), "color"); 61$themes: props.def(--o-button, (), 'color');
71 62
72$default-theme-override: () !default; 63$default-theme-override: () !default;
73$default-theme: map.deep-merge( 64$default-theme: map.deep-merge((
74 ( 65 --bg-color: props.get(core.$theme, --bg-l2),
75 --bg-color: props.get(core.$theme, --bg-l2), 66 --label-color: props.get(core.$theme, --text),
76 --label-color: props.get(core.$theme, --text), 67 --border-color: props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong),
77 --border-color: props.get(core.$theme, --box, --border) 68 --shadow-color: props.get(core.$theme, --shadow),
78 props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), 69
79 --shadow-color: props.get(core.$theme, --shadow), 70 --hover: (
71 --bg-color: props.get(core.$theme, --bg-l1),
72 --label-color: props.get(core.$theme, --heading),
73 --border-color: props.get(core.$theme, --border),
74 ),
75
76 --active: (
77 --bg-color: props.get(core.$theme, --border-mute),
78 --label-color: props.get(core.$theme, --heading),
79 --border-color: props.get(core.$theme, --border-strong),
80 ),
81
82 --disabled: (
83 --bg-color: transparent,
84 --label-color: props.get(core.$theme, --border-strong),
85 --border-color: props.get(core.$theme, --text-disabled),
86 ),
87
88 --key-focus: (
89 --border-color: props.get(core.$theme, --focus, --border),
90 --outline-color: props.get(core.$theme, --focus, --outline),
91 ),
92
93 --highlighted: (
94 --border-color: props.get(core.$theme, --focus, --border),
95 --shadow-color: props.get(core.$theme, --focus, --outline),
96 ),
97
98 --selected: (
99 --bg-color: props.get(core.$theme, --heading),
100 --label-color: props.get(core.$theme, --base, --50),
101 --border-color: props.get(core.$theme, --heading),
102
80 --hover: ( 103 --hover: (
81 --bg-color: props.get(core.$theme, --bg-l1), 104 --bg-color: props.get(core.$theme, --text),
82 --label-color: props.get(core.$theme, --heading), 105 --label-color: props.get(core.$theme, --base, --50),
83 --border-color: props.get(core.$theme, --border), 106 --border-color: props.get(core.$theme, --text),
84 ), 107 ),
85 108
86 --active: ( 109 --active: (
87 --bg-color: props.get(core.$theme, --border-mute), 110 --bg-color: props.get(core.$theme, --text-mute),
88 --label-color: props.get(core.$theme, --heading), 111 --label-color: props.get(core.$theme, --base, --50),
89 --border-color: props.get(core.$theme, --border-strong), 112 --border-color: props.get(core.$theme, --text-mute),
90 ), 113 ),
91 114
92 --disabled: ( 115 --disabled: (
93 --bg-color: transparent, 116 --bg-color: props.get(core.$theme, --border-mute),
94 --label-color: props.get(core.$theme, --border-strong), 117 --label-color: props.get(core.$theme, --border-strong),
95 --border-color: props.get(core.$theme, --text-disabled), 118 --border-color: props.get(core.$theme, --border-mute),
96 ), 119 ),
120 ),
97 121
98 --key-focus: ( 122 --badge: (
99 --border-color: props.get(core.$theme, --focus, --border), 123 --bg-color: props.get(core.$theme, --border-mute),
100 --outline-color: props.get(core.$theme, --focus, --outline), 124 --label-color: props.get(core.$theme, --heading),
101 ), 125 --border-color: props.get(core.$theme, --border-mute),
102 126
103 --highlighted: ( 127 --hover: (
104 --border-color: props.get(core.$theme, --focus, --border), 128 --bg-color: props.get(core.$theme, --border),
105 --shadow-color: props.get(core.$theme, --focus, --outline), 129 --label-color: props.get(core.$theme, --heading),
130 --border-color: props.get(core.$theme, --border),
106 ), 131 ),
107 132
108 --selected: ( 133 --active: (
109 --bg-color: props.get(core.$theme, --heading), 134 --bg-color: props.get(core.$theme, --border-strong),
110 --label-color: props.get(core.$theme, --base, --50), 135 --label-color: props.get(core.$theme, --heading),
111 --border-color: props.get(core.$theme, --heading), 136 --border-color: props.get(core.$theme, --border-strong),
112 --hover: ( 137 ),
113 --bg-color: props.get(core.$theme, --text), 138 ),
114 --label-color: props.get(core.$theme, --base, --50),
115 --border-color: props.get(core.$theme, --text),
116 ),
117 139
118 --active: ( 140 --quiet: (
119 --bg-color: props.get(core.$theme, --text-mute), 141 --label-color: props.get(core.$theme, --text),
120 --label-color: props.get(core.$theme, --base, --50),
121 --border-color: props.get(core.$theme, --text-mute),
122 ),
123 142
124 --disabled: ( 143 --hover: (
125 --bg-color: props.get(core.$theme, --border-mute), 144 --bg-color: props.get(core.$theme, --border-mute),
126 --label-color: props.get(core.$theme, --border-strong), 145 --label-color: props.get(core.$theme, --heading),
127 --border-color: props.get(core.$theme, --border-mute),
128 ),
129 ), 146 ),
130 147
131 --badge: ( 148 --active: (
132 --bg-color: props.get(core.$theme, --border-mute), 149 --bg-color: props.get(core.$theme, --border),
133 --label-color: props.get(core.$theme, --heading), 150 --label-color: props.get(core.$theme, --heading),
134 --border-color: props.get(core.$theme, --border-mute),
135 --hover: (
136 --bg-color: props.get(core.$theme, --border),
137 --label-color: props.get(core.$theme, --heading),
138 --border-color: props.get(core.$theme, --border),
139 ),
140
141 --active: (
142 --bg-color: props.get(core.$theme, --border-strong),
143 --label-color: props.get(core.$theme, --heading),
144 --border-color: props.get(core.$theme, --border-strong),
145 ),
146 ), 151 ),
147 152
148 --quiet: ( 153 --disabled: (
149 --label-color: props.get(core.$theme, --text), 154 --label-color: props.get(core.$theme, --border-strong),
150 --hover: (
151 --bg-color: props.get(core.$theme, --border-mute),
152 --label-color: props.get(core.$theme, --heading),
153 ),
154
155 --active: (
156 --bg-color: props.get(core.$theme, --border),
157 --label-color: props.get(core.$theme, --heading),
158 ),
159
160 --disabled: (
161 --label-color: props.get(core.$theme, --border-strong),
162 ),
163 ), 155 ),
164 ), 156 ),
165 $default-theme-override 157), $default-theme-override) !default;
166) !default; 158$default-theme: props.def(--o-button, $default-theme, 'color');
167$default-theme: props.def(--o-button, $default-theme, "color");
168 159
169$default-theme-dark-override: () !default; 160$default-theme-dark-override: () !default;
170$default-theme-dark: map.deep-merge( 161$default-theme-dark: map.deep-merge((
171 ( 162 --bg-color: props.get(core.$theme, --border-mute),
172 --bg-color: props.get(core.$theme, --border-mute), 163 --border-color: props.get(core.$theme, --border-mute),
173 --border-color: props.get(core.$theme, --border-mute),
174 --hover: (
175 --bg-color: props.get(core.$theme, --border),
176 --border-color: props.get(core.$theme, --border),
177 ),
178 164
179 --active: ( 165 --hover: (
180 --bg-color: props.get(core.$theme, --border-strong), 166 --bg-color: props.get(core.$theme, --border),
181 --border-color: props.get(core.$theme, --border-strong), 167 --border-color: props.get(core.$theme, --border),
182 ), 168 ),
183 169
184 --selected: ( 170 --active: (
185 --border-color: props.get(core.$theme, --text), 171 --bg-color: props.get(core.$theme, --border-strong),
186 ), 172 --border-color: props.get(core.$theme, --border-strong),
187 ), 173 ),
188 $default-theme-override 174
189) !default; 175 --selected: (
190$default-theme-dark: props.def(--o-button, $default-theme-dark, "dark"); 176 --border-color: props.get(core.$theme, --text),
177 ),
178), $default-theme-override) !default;
179$default-theme-dark: props.def(--o-button, $default-theme-dark, 'dark');
191 180
192@each $theme in map.keys(props.get(core.$transparent-colors)) { 181@each $theme in map.keys(props.get(core.$transparent-colors)) {
193 $button-theme: --static-#{string.slice($theme, 3)}; 182 $button-theme: --static-#{string.slice($theme, 3)};
194 183
195 $themes: props.merge( 184 $themes: props.merge($themes, (
196 $themes, 185 $button-theme: (
197 ( 186 --bg-color: props.get(core.$transparent-colors, $theme, --200),
198 $button-theme: ( 187 --label-color: props.get(core.$transparent-colors, $theme, --900),
199 --bg-color: props.get(core.$transparent-colors, $theme, --200), 188 --border-color: props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --400),
200 --label-color: props.get(core.$transparent-colors, $theme, --900), 189 --shadow-color: props.get(core.$transparent-colors, --black, --200),
201 --border-color: props.get(core.$transparent-colors, $theme, --300) 190
202 props.get(core.$transparent-colors, $theme, --300) 191 --hover: (
203 props.get(core.$transparent-colors, $theme, --400), 192 --bg-color: props.get(core.$transparent-colors, $theme, --300),
204 --shadow-color: props.get(core.$transparent-colors, --black, --200), 193 --label-color: props.get(core.$transparent-colors, $theme, --900),
205 --hover: ( 194 --border-color: props.get(core.$transparent-colors, $theme, --400),
206 --bg-color: props.get(core.$transparent-colors, $theme, --300), 195 ),
207 --label-color: props.get(core.$transparent-colors, $theme, --900),
208 --border-color: props.get(core.$transparent-colors, $theme, --400),
209 ),
210 196
211 --active: ( 197 --active: (
212 --bg-color: props.get(core.$transparent-colors, $theme, --400), 198 --bg-color: props.get(core.$transparent-colors, $theme, --400),
213 --label-color: props.get(core.$transparent-colors, $theme, --900), 199 --label-color: props.get(core.$transparent-colors, $theme, --900),
214 --border-color: props.get(core.$transparent-colors, $theme, --500), 200 --border-color: props.get(core.$transparent-colors, $theme, --500),
215 ), 201 ),
216 202
217 --disabled: ( 203 --disabled: (
218 --bg-color: props.get(core.$transparent-colors, $theme, --100), 204 --bg-color: props.get(core.$transparent-colors, $theme, --100),
219 --label-color: props.get(core.$transparent-colors, $theme, --500), 205 --label-color: props.get(core.$transparent-colors, $theme, --500),
220 --border-color: props.get(core.$transparent-colors, $theme, --300), 206 --border-color: props.get(core.$transparent-colors, $theme, --300),
221 ), 207 ),
222 208
223 --key-focus: ( 209 --key-focus: (
224 --border-color: props.get(core.$transparent-colors, $theme, --900), 210 --border-color: props.get(core.$transparent-colors, $theme, --900),
225 --outline-color: props.get(core.$transparent-colors, $theme, --300), 211 --outline-color: props.get(core.$transparent-colors, $theme, --300),
226 ), 212 ),
227 213
228 --highlighted: ( 214 --highlighted: (
229 --border-color: props.get(core.$transparent-colors, $theme, --900), 215 --border-color: props.get(core.$transparent-colors, $theme, --900),
230 --shadow-color: props.get(core.$transparent-colors, --black, --200), 216 --shadow-color: props.get(core.$transparent-colors, --black, --200),
231 ), 217 ),
232 218
233 --selected: ( 219 --selected: (
234 --bg-color: props.get(core.$transparent-colors, $theme, --900), 220 --bg-color: props.get(core.$transparent-colors, $theme, --900),
235 --label-color: props.get(core.$transparent-colors, $theme, --text), 221 --label-color: props.get(core.$transparent-colors, $theme, --text),
236 --border-color: props.get(core.$transparent-colors, $theme, --100) 222 --border-color: props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --200),
237 props.get(core.$transparent-colors, $theme, --100)
238 props.get(core.$transparent-colors, $theme, --200),
239 --hover: (
240 --bg-color: props.get(core.$transparent-colors, $theme, --800),
241 --label-color: props.get(
242 core.$transparent-colors,
243 $theme,
244 --text
245 ),
246 --border-color: props.get(
247 core.$transparent-colors,
248 $theme,
249 --100
250 ),
251 ),
252 223
253 --active: ( 224 --hover: (
254 --bg-color: props.get(core.$transparent-colors, $theme, --800), 225 --bg-color: props.get(core.$transparent-colors, $theme, --800),
255 --label-color: props.get( 226 --label-color: props.get(core.$transparent-colors, $theme, --text),
256 core.$transparent-colors, 227 --border-color: props.get(core.$transparent-colors, $theme, --100),
257 $theme, 228 ),
258 --text
259 ),
260 --border-color: props.get(
261 core.$transparent-colors,
262 $theme,
263 --100
264 ),
265 ),
266 229
267 --disabled: ( 230 --active: (
268 --bg-color: props.get(core.$transparent-colors, $theme, --200), 231 --bg-color: props.get(core.$transparent-colors, $theme, --800),
269 --label-color: props.get( 232 --label-color: props.get(core.$transparent-colors, $theme, --text),
270 core.$transparent-colors, 233 --border-color: props.get(core.$transparent-colors, $theme, --100),
271 $theme, 234 ),
272 --500
273 ),
274 --border-color: props.get(
275 core.$transparent-colors,
276 $theme,
277 --100
278 ),
279 ),
280 ),
281 235
282 --badge: ( 236 --disabled: (
283 --bg-color: props.get(core.$transparent-colors, $theme, --200), 237 --bg-color: props.get(core.$transparent-colors, $theme, --200),
284 --label-color: props.get(core.$transparent-colors, $theme, --900), 238 --label-color: props.get(core.$transparent-colors, $theme, --500),
285 --border-color: transparent, 239 --border-color: props.get(core.$transparent-colors, $theme, --100),
240 ),
241 ),
286 242
287 --hover: ( 243 --badge: (
288 --bg-color: props.get(core.$transparent-colors, $theme, --300), 244 --bg-color: props.get(core.$transparent-colors, $theme, --200),
289 --label-color: props.get( 245 --label-color: props.get(core.$transparent-colors, $theme, --900),
290 core.$transparent-colors, 246 --border-color: transparent,
291 $theme,
292 --900
293 ),
294 --border-color: transparent,
295 ),
296 247
297 --active: ( 248 --hover: (
298 --bg-color: props.get(core.$transparent-colors, $theme, --400), 249 --bg-color: props.get(core.$transparent-colors, $theme, --300),
299 --label-color: props.get( 250 --label-color: props.get(core.$transparent-colors, $theme, --900),
300 core.$transparent-colors, 251 --border-color: transparent,
301 $theme, 252 ),
302 --900
303 ),
304 --border-color: transparent,
305 ),
306 ),
307 253
308 --quiet: ( 254 --active: (
309 --label-color: props.get(core.$transparent-colors, $theme, --900), 255 --bg-color: props.get(core.$transparent-colors, $theme, --400),
310 --hover: ( 256 --label-color: props.get(core.$transparent-colors, $theme, --900),
311 --bg-color: props.get(core.$transparent-colors, $theme, --200), 257 --border-color: transparent,
312 --label-color: props.get( 258 ),
313 core.$transparent-colors, 259 ),
314 $theme,
315 --900
316 ),
317 ),
318 260
319 --active: ( 261 --quiet: (
320 --bg-color: props.get(core.$transparent-colors, $theme, --300), 262 --label-color: props.get(core.$transparent-colors, $theme, --900),
321 --label-color: props.get(
322 core.$transparent-colors,
323 $theme,
324 --900
325 ),
326 ),
327 263
328 --disabled: ( 264 --hover: (
329 --label-color: props.get( 265 --bg-color: props.get(core.$transparent-colors, $theme, --200),
330 core.$transparent-colors, 266 --label-color: props.get(core.$transparent-colors, $theme, --900),
331 $theme,
332 --500
333 ),
334 ),
335 ),
336 ), 267 ),
268
269 --active: (
270 --bg-color: props.get(core.$transparent-colors, $theme, --300),
271 --label-color: props.get(core.$transparent-colors, $theme, --900),
272 ),
273
274 --disabled: (
275 --label-color: props.get(core.$transparent-colors, $theme, --500),
276 ),
277 ),
337 ) 278 )
338 ); 279 ));
339} 280}
340 281
341$themes-config: ( 282$themes-config: (
342 accent: --accent, 283 accent: --accent,
343 positive: --positive, 284 positive: --positive,
344 negative: --negative, 285 negative: --negative,
345 warning: --warning, 286 warning: --warning,
346) !default; 287) !default;
347 288
348@each $theme, $key in $themes-config { 289@each $theme, $key in $themes-config {
349 $themes: props.merge( 290 $themes: props.merge($themes, (
350 $themes, 291 --#{$theme}: (
351 ( 292 --bg-color: props.get(core.$theme, $key, --100),
352 --#{$theme}: ( 293 --label-color: props.get(core.$theme, $key, --1100),
353 --bg-color: props.get(core.$theme, $key, --100), 294 --border-color: props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --600),
354 --label-color: props.get(core.$theme, $key, --1100), 295 --shadow-color: props.get(core.$theme, $key, --200),
355 --border-color: props.get(core.$theme, $key, --500)
356 props.get(core.$theme, $key, --500)
357 props.get(core.$theme, $key, --600),
358 --shadow-color: props.get(core.$theme, $key, --200),
359 --hover: (
360 --bg-color: props.get(core.$theme, $key, --200),
361 --label-color: props.get(core.$theme, $key, --1200),
362 --border-color: props.get(core.$theme, $key, --600),
363 ),
364 296
365 --active: ( 297 --hover: (
366 --bg-color: props.get(core.$theme, $key, --300), 298 --bg-color: props.get(core.$theme, $key, --200),
367 --label-color: props.get(core.$theme, $key, --1300), 299 --label-color: props.get(core.$theme, $key, --1200),
368 --border-color: props.get(core.$theme, $key, --800), 300 --border-color: props.get(core.$theme, $key, --600),
369 ), 301 ),
370 302
371 --disabled: ( 303 --active: (
372 --bg-color: props.get(core.$theme, --bg-l1), 304 --bg-color: props.get(core.$theme, $key, --300),
373 --label-color: props.get(core.$theme, --border-strong), 305 --label-color: props.get(core.$theme, $key, --1300),
374 --border-color: props.get(core.$theme, --border), 306 --border-color: props.get(core.$theme, $key, --800),
375 ), 307 ),
376 308
377 --key-focus: ( 309 --disabled: (
378 --border-color: props.get(core.$theme, --focus, --border), 310 --bg-color: props.get(core.$theme, --bg-l1),
379 --outline-color: props.get(core.$theme, --focus, --outline), 311 --label-color: props.get(core.$theme, --border-strong),
380 ), 312 --border-color: props.get(core.$theme, --border),
313 ),
381 314
382 --highlighted: ( 315 --key-focus: (
383 --border-color: props.get(core.$theme, $key, --900), 316 --border-color: props.get(core.$theme, --focus, --border),
384 --shadow-color: props.get(core.$theme, $key, --200), 317 --outline-color: props.get(core.$theme, --focus, --outline),
385 ), 318 ),
386 319
387 --selected: ( 320 --highlighted: (
388 --bg-color: props.get(core.$theme, #{$key}-static, --900), 321 --border-color: props.get(core.$theme, $key, --900),
389 --label-color: props.get(core.$theme, #{$key}-static, --900-text), 322 --shadow-color: props.get(core.$theme, $key, --200),
390 --border-color: props.get(core.$theme, #{$key}-static, --900) 323 ),
391 props.get(core.$theme, #{$key}-static, --900)
392 props.get(core.$theme, #{$key}-static, --1000),
393 --hover: (
394 --bg-color: props.get(core.$theme, #{$key}-static, --1000),
395 --label-color: props.get(
396 core.$theme,
397 #{$key}-static,
398 --1000-text
399 ),
400 --border-color: props.get(core.$theme, #{$key}-static, --1000),
401 ),
402 324
403 --active: ( 325 --selected: (
404 --bg-color: props.get(core.$theme, #{$key}-static, --1100), 326 --bg-color: props.get(core.$theme, #{$key}-static, --900),
405 --label-color: props.get( 327 --label-color: props.get(core.$theme, #{$key}-static, --900-text),
406 core.$theme, 328 --border-color: props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --1000),
407 #{$key}-static,
408 --1100-text
409 ),
410 --border-color: props.get(core.$theme, #{$key}-static, --1100),
411 ),
412 329
413 --disabled: ( 330 --hover: (
414 --bg-color: props.get(core.$theme, --border-mute), 331 --bg-color: props.get(core.$theme, #{$key}-static, --1000),
415 --label-color: props.get(core.$theme, --border-strong), 332 --label-color: props.get(core.$theme, #{$key}-static, --1000-text),
416 --border-color: props.get(core.$theme, --border-mute), 333 --border-color: props.get(core.$theme, #{$key}-static, --1000),
417 ), 334 ),
418 ),
419 335
420 --badge: ( 336 --active: (
421 --bg-color: props.get(core.$theme, $key, --100), 337 --bg-color: props.get(core.$theme, #{$key}-static, --1100),
422 --label-color: props.get(core.$theme, $key, --1100), 338 --label-color: props.get(core.$theme, #{$key}-static, --1100-text),
423 --border-color: props.get(core.$theme, $key, --300), 339 --border-color: props.get(core.$theme, #{$key}-static, --1100),
424 --hover: ( 340 ),
425 --bg-color: props.get(core.$theme, $key, --200), 341
426 --label-color: props.get(core.$theme, $key, --1200), 342 --disabled: (
427 --border-color: props.get(core.$theme, $key, --400), 343 --bg-color: props.get(core.$theme, --border-mute),
428 ), 344 --label-color: props.get(core.$theme, --border-strong),
345 --border-color: props.get(core.$theme, --border-mute),
346 ),
347 ),
348
349 --badge: (
350 --bg-color: props.get(core.$theme, $key, --100),
351 --label-color: props.get(core.$theme, $key, --1100),
352 --border-color: props.get(core.$theme, $key, --300),
353
354 --hover: (
355 --bg-color: props.get(core.$theme, $key, --200),
356 --label-color: props.get(core.$theme, $key, --1200),
357 --border-color: props.get(core.$theme, $key, --400),
358 ),
429 359
430 --active: ( 360 --active: (
431 --bg-color: props.get(core.$theme, $key, --300), 361 --bg-color: props.get(core.$theme, $key, --300),
432 --label-color: props.get(core.$theme, $key, --1300), 362 --label-color: props.get(core.$theme, $key, --1300),
433 --border-color: props.get(core.$theme, $key, --500), 363 --border-color: props.get(core.$theme, $key, --500),
434 ), 364 ),
435 ), 365 ),
436 366
437 --quiet: ( 367 --quiet: (
438 --label-color: props.get(core.$theme, $key, --1100), 368 --label-color: props.get(core.$theme, $key, --1100),
439 --hover: (
440 --bg-color: props.get(core.$theme, $key, --200),
441 --label-color: props.get(core.$theme, $key, --1200),
442 ),
443 369
444 --active: ( 370 --hover: (
445 --bg-color: props.get(core.$theme, $key, --300), 371 --bg-color: props.get(core.$theme, $key, --200),
446 --label-color: props.get(core.$theme, $key, --1300), 372 --label-color: props.get(core.$theme, $key, --1200),
447 ), 373 ),
448 374
449 --disabled: ( 375 --active: (
450 --label-color: props.get(core.$theme, --border-strong), 376 --bg-color: props.get(core.$theme, $key, --300),
451 ), 377 --label-color: props.get(core.$theme, $key, --1300),
452 ), 378 ),
453 ) 379
380 --disabled: (
381 --label-color: props.get(core.$theme, --border-strong),
382 ),
383 ),
454 ) 384 )
455 ); 385 ));
456} 386}
diff --git a/src/objects/_card.scss b/src/objects/_card.scss
index 3275bc8..b8bc727 100644
--- a/src/objects/_card.scss
+++ b/src/objects/_card.scss
@@ -1,95 +1,84 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "avatar.vars" as avatar; 5@use 'avatar.vars' as avatar;
6 6
7@forward "card.vars"; 7@forward 'card.vars';
8@use "card.vars" as vars; 8@use 'card.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("card") { 13 @include bem.object('card') {
14 position: relative; 14 position: relative;
15 display: flex; 15 display: flex;
16 flex-direction: column; 16 flex-direction: column;
17 background-color: props.get(vars.$bg-color); 17 background-color: props.get(vars.$bg-color);
18 border: props.get(vars.$border-width) solid transparent; 18 border: props.get(vars.$border-width) solid transparent;
19 border-color: props.get(vars.$border-color); 19 border-color: props.get(vars.$border-color);
20 border-radius: props.get(vars.$rounding); 20 border-radius: props.get(vars.$rounding);
21 transition: 21 transition: transform .2s, background-color .2s, border-color .2s, box-shadow .2s;
22 transform 0.2s,
23 background-color 0.2s,
24 border-color 0.2s,
25 box-shadow 0.2s;
26 22
27 @include bem.multi( 23 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
28 "&:link, &:visited, &:enabled",
29 "modifier" "interactive",
30 "modifier" "collapsible"
31 ) {
32 &:hover, 24 &:hover,
33 &:active, 25 &:active,
34 &:focus-visible { 26 &:focus-visible {
35 background-color: props.get(vars.$hover--bg-color); 27 background-color: props.get(vars.$hover--bg-color);
36 border-color: props.get(vars.$hover--border-color); 28 border-color: props.get(vars.$hover--border-color);
37 box-shadow: none; 29 box-shadow: none;
38 transform: translateY(props.get(vars.$hover--offset-b)); 30 transform: translateY(props.get(vars.$hover--offset-b));
39 } 31 }
40 32
41 &:focus-visible { 33 &:focus-visible {
42 margin: calc(-1 * props.get(vars.$key-focus--border-width)); 34 margin: calc(-1 * props.get(vars.$key-focus--border-width));
43 outline: props.get(vars.$key-focus--border-color) solid 35 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
44 props.get(vars.$key-focus--border-width); 36 border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent;
45 border: calc( 37 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
46 props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width) 38 box-shadow:
47 ) 39 0 0 0
48 solid transparent; 40 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
49 border-radius: calc(
50 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)
51 );
52 box-shadow: 0 0 0
53 calc(
54 props.get(vars.$key-focus--border-width) +
55 props.get(vars.$key-focus--outline-width)
56 )
57 props.get(vars.$key-focus--outline-color); 41 props.get(vars.$key-focus--outline-color);
58 transition: transform 0.2s; 42 transition: transform .2s;
59 } 43 }
60 } 44 }
61 45
62 @include bem.modifier("borderless") { 46 @include bem.modifier('borderless') {
63 border-color: props.get(vars.$bg-color); 47 border-color: props.get(vars.$bg-color);
64 } 48 }
65 49
66 @include bem.modifier("shadow") { 50 @include bem.modifier('shadow') {
67 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) 51 box-shadow:
68 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) 52 props.get(vars.$shadow-x)
53 props.get(vars.$shadow-y)
54 props.get(vars.$shadow-blur)
55 props.get(vars.$shadow-grow)
69 props.get(vars.$shadow-color); 56 props.get(vars.$shadow-color);
70 57
71 @include bem.modifier("quiet") { 58 @include bem.modifier('quiet') {
72 @include bem.elem("image") { 59 @include bem.elem('image') {
73 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) 60 box-shadow:
74 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) 61 props.get(vars.$shadow-x)
62 props.get(vars.$shadow-y)
63 props.get(vars.$shadow-blur)
64 props.get(vars.$shadow-grow)
75 props.get(vars.$shadow-color); 65 props.get(vars.$shadow-color);
76 } 66 }
77 } 67 }
78 } 68 }
79 69
80 @include bem.modifier("highlight") { 70 @include bem.modifier('highlight') {
81 margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width)); 71 margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width));
82 border-color: props.get(vars.$highlight--border-color); 72 border-color: props.get(vars.$highlight--border-color);
83 border-width: props.get(vars.$highlight--border-width); 73 border-width: props.get(vars.$highlight--border-width);
84 box-shadow: props.get(vars.$highlight--shadow-x) props.get(vars.$highlight--shadow-y) 74 box-shadow:
85 props.get(vars.$highlight--shadow-blur) props.get(vars.$highlight--shadow-grow) 75 props.get(vars.$highlight--shadow-x)
76 props.get(vars.$highlight--shadow-y)
77 props.get(vars.$highlight--shadow-blur)
78 props.get(vars.$highlight--shadow-grow)
86 props.get(vars.$highlight--shadow-color); 79 props.get(vars.$highlight--shadow-color);
87 80
88 @include bem.multi( 81 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
89 "&:link, &:visited, &:enabled",
90 "modifier" "interactive",
91 "modifier" "collapsible"
92 ) {
93 &:hover, 82 &:hover,
94 &:active { 83 &:active {
95 border-color: props.get(vars.$highlight--border-color); 84 border-color: props.get(vars.$highlight--border-color);
@@ -97,238 +86,207 @@
97 } 86 }
98 } 87 }
99 88
100 @include bem.elem("avatar") { 89 @include bem.elem('avatar') {
101 margin-block-start: props.get(vars.$pad-b); 90 margin-block-start: props.get(vars.$pad-b);
102 margin-inline-start: props.get(vars.$pad-i); 91 margin-inline-start: props.get(vars.$pad-i);
103 } 92 }
104 93
105 @include bem.elem("image") { 94 @include bem.elem('image') {
106 position: relative; 95 position: relative;
107 display: block; 96 display: block;
108 flex: 0 0 auto; 97 flex: 0 0 auto;
109 inline-size: calc(100% + 2 * props.get(vars.$border-width)); 98 inline-size: calc(100% + 2 * props.get(vars.$border-width));
110 margin: calc(-1 * props.get(vars.$border-width)); 99 margin: calc(-1 * props.get(vars.$border-width));
111 overflow: hidden; 100 overflow: hidden;
112 object-fit: cover; 101 object-fit: cover;
113 transition: 102 transition: background-color .2s, transform .2s, opacity .2s;
114 background-color 0.2s,
115 transform 0.2s,
116 opacity 0.2s;
117 103
118 &:first-child { 104 &:first-child {
119 border-start-start-radius: calc( 105 border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
120 props.get(vars.$rounding) - props.get(vars.$border-width) 106 border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
121 );
122 border-start-end-radius: calc(
123 props.get(vars.$rounding) - props.get(vars.$border-width)
124 );
125 } 107 }
126 108
127 &:last-child { 109 &:last-child {
128 border-end-start-radius: calc( 110 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
129 props.get(vars.$rounding) - props.get(vars.$border-width) 111 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
130 );
131 border-end-end-radius: calc(
132 props.get(vars.$rounding) - props.get(vars.$border-width)
133 );
134 } 112 }
135 113
136 @include bem.next-elem("avatar") { 114 @include bem.next-elem('avatar') {
137 margin-block-start: calc(-0.7 * props.get(avatar.$size--xl)); 115 margin-block-start: calc(-.7 * props.get(avatar.$size--xl));
138 } 116 }
139 } 117 }
140 118
141 @include bem.elem("image-img") { 119 @include bem.elem('image-img') {
142 display: block; 120 display: block;
143 inline-size: 100%; 121 inline-size: 100%;
144 block-size: 100%; 122 block-size: 100%;
145 object-fit: cover; 123 object-fit: cover;
146 } 124 }
147 125
148 @include bem.elem("image-overlay") { 126 @include bem.elem('image-overlay') {
149 position: absolute; 127 position: absolute;
150 inset-block-end: 0; 128 inset-block-end: 0;
151 inset-inline: 0; 129 inset-inline: 0;
152 z-index: 5; 130 z-index: 5;
153 padding-block: props.get(vars.$image-overlay--pad-b); 131 padding-block: props.get(vars.$image-overlay--pad-b);
154 padding-inline: props.get(vars.$image-overlay--pad-i); 132 padding-inline: props.get(vars.$image-overlay--pad-i);
155 } 133 }
156 134
157 @include bem.elem("body") { 135 @include bem.elem('body') {
158 flex: 0 0 auto; 136 flex: 0 0 auto;
159 padding-block: props.get(vars.$pad-b); 137 padding-block: props.get(vars.$pad-b);
160 padding-inline: props.get(vars.$pad-i); 138 padding-inline: props.get(vars.$pad-i);
161 139
162 &::before { 140 &::before {
163 display: block; 141 display: block;
164 margin-block: -100em 100em; 142 margin-block: -100em 100em;
165 content: ""; 143 content: '';
166 } 144 }
167 145
168 @include bem.modifier("no-mbs-neutralize") { 146 @include bem.modifier('no-mbs-neutralize') {
169 &::before { 147 &::before {
170 display: none; 148 display: none;
171 } 149 }
172 } 150 }
173 151
174 @include bem.modifier("main") { 152 @include bem.modifier('main') {
175 flex-shrink: 1; 153 flex-shrink: 1;
176 block-size: 100%; 154 block-size: 100%;
177 min-block-size: 0; 155 min-block-size: 0;
178 } 156 }
179 } 157 }
180 158
181 @include bem.elem("content") { 159 @include bem.elem('content') {
182 margin-block-start: props.get(vars.$spacing); 160 margin-block-start: props.get(vars.$spacing);
183 } 161 }
184 162
185 @include bem.elem("footer") { 163 @include bem.elem('footer') {
186 flex: 0 0 auto; 164 flex: 0 0 auto;
187 padding-block: 0 props.get(vars.$pad-b); 165 padding-block: 0 props.get(vars.$pad-b);
188 padding-inline: props.get(vars.$pad-i); 166 padding-inline: props.get(vars.$pad-i);
189 margin-block-start: calc(-1 * props.get(vars.$pad-b)); 167 margin-block-start: calc(-1 * props.get(vars.$pad-b));
190 168
191 &::before { 169 &::before {
192 display: block; 170 display: block;
193 block-size: props.get(vars.$divider-width); 171 block-size: props.get(vars.$divider-width);
194 margin-block: props.get(vars.$spacing); 172 margin-block: props.get(vars.$spacing);
195 content: ""; 173 content: '';
196 background-color: props.get(vars.$divider-width); 174 background-color: props.get(vars.$divider-width);
197 } 175 }
198 } 176 }
199 177
200 @include bem.modifier("quiet") { 178 @include bem.modifier('quiet') {
201 margin-inline: 0; 179 margin-inline: 0;
202 background-color: transparent; 180 background-color: transparent;
203 border: 0; 181 border: 0;
204 box-shadow: none; 182 box-shadow: none;
205 183
206 @include bem.multi( 184 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
207 "&:link, &:visited, &:enabled",
208 "modifier" "interactive",
209 "modifier" "collapsible"
210 ) {
211 &:hover, 185 &:hover,
212 &:active, 186 &:active,
213 &:focus-visible { 187 &:focus-visible {
214 background-color: transparent; 188 background-color: transparent;
215 transform: none; 189 transform: none;
216 190
217 @include bem.elem("image") { 191 @include bem.elem('image') {
218 background-color: props.get(vars.$quiet--hover--image-color); 192 background-color: props.get(vars.$quiet--hover--image-color);
219 opacity: 0.75; 193 opacity: .75;
220 transform: translateY(props.get(vars.$hover--offset-b)); 194 transform: translateY(props.get(vars.$hover--offset-b));
221 } 195 }
222 } 196 }
223 197
224 &:focus-visible { 198 &:focus-visible {
225 margin: 0; 199 margin: 0;
226 outline: none; 200 outline: none;
227 border: 0; 201 border: 0;
228 box-shadow: none; 202 box-shadow: none;
229 203
230 @include bem.elem("image") { 204 @include bem.elem('image') {
231 margin: calc( 205 margin: calc(-1 * props.get(vars.$key-focus--border-width) - props.get(vars.$border-width));
232 -1 * 206 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
233 props.get(vars.$key-focus--border-width) - props.get(
234 vars.$border-width
235 )
236 );
237 outline: props.get(vars.$key-focus--border-color) solid
238 props.get(vars.$key-focus--border-width);
239 background-color: props.get(vars.$quiet--hover--image-color); 207 background-color: props.get(vars.$quiet--hover--image-color);
240 border: props.get(vars.$key-focus--border-offset) solid transparent; 208 border: props.get(vars.$key-focus--border-offset) solid transparent;
241 border-radius: calc( 209 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
242 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) 210 box-shadow:
243 ); 211 0
244 box-shadow: 0 0 0 212 0
245 calc( 213 0
246 props.get(vars.$key-focus--border-width) + 214 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
247 props.get(vars.$key-focus--outline-width)
248 )
249 props.get(vars.$key-focus--outline-color); 215 props.get(vars.$key-focus--outline-color);
250 opacity: 1; 216 opacity: 1;
251 } 217 }
252 } 218 }
253 } 219 }
254 220
255 @include bem.elem("image") { 221 @include bem.elem('image') {
256 position: relative; 222 position: relative;
257 background-color: props.get(vars.$quiet--image-color); 223 background-color: props.get(vars.$quiet--image-color);
258 background-clip: padding-box; 224 background-clip: padding-box;
259 border-radius: props.get(vars.$rounding); 225 border-radius: props.get(vars.$rounding);
260 } 226 }
261 227
262 @include bem.elem("body") { 228 @include bem.elem('body') {
263 padding: 0; 229 padding: 0;
264 padding-block-start: props.get(vars.$spacing); 230 padding-block-start: props.get(vars.$spacing);
265 } 231 }
266 232
267 @include bem.elem("footer") { 233 @include bem.elem('footer') {
268 padding-inline: 0; 234 padding-inline: 0;
269 } 235 }
270 } 236 }
271 237
272 @include bem.modifier("thumbnail") { 238 @include bem.modifier('thumbnail') {
273 @include bem.elem("image") { 239 @include bem.elem('image') {
274 border-radius: props.get(vars.$rounding); 240 border-radius: props.get(vars.$rounding);
275 } 241 }
276 242
277 @include bem.elem("body") { 243 @include bem.elem('body') {
278 position: absolute; 244 position: absolute;
279 inset-block-end: calc(-1 * props.get(vars.$border-width)); 245 inset-block-end: calc(-1 * props.get(vars.$border-width));
280 inset-inline: calc(-1 * props.get(vars.$border-width)); 246 inset-inline: calc(-1 * props.get(vars.$border-width));
281 z-index: 10; 247 z-index: 10;
282 visibility: hidden; 248 visibility: hidden;
283 background-color: props.get(vars.$hover--bg-color); 249 background-color: props.get(vars.$hover--bg-color);
284 border-color: transparent; 250 border-color: transparent;
285 border-style: solid; 251 border-style: solid;
286 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width); 252 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width);
287 border-end-start-radius: calc( 253 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
288 props.get(vars.$rounding) - props.get(vars.$border-width) 254 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
289 ); 255 opacity: 0;
290 border-end-end-radius: calc(
291 props.get(vars.$rounding) - props.get(vars.$border-width)
292 );
293 opacity: 0;
294 transition: 256 transition:
295 border-color 0.2s ease, 257 border-color .2s ease,
296 opacity 0.2s ease, 258 opacity .2s ease,
297 visibility 0s 0.2s linear; 259 visibility 0s .2s linear;
298 } 260 }
299 261
300 @include bem.multi( 262 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') {
301 "&:link, &:visited, &:enabled",
302 "modifier" "interactive",
303 "modifier" "collapsible"
304 ) {
305 &:hover, 263 &:hover,
306 &:active, 264 &:active,
307 &:focus-visible { 265 &:focus-visible {
308 @include bem.elem("body") { 266 @include bem.elem('body') {
309 visibility: visible; 267 visibility: visible;
310 border-color: props.get(vars.$hover--border-color); 268 border-color: props.get(vars.$hover--border-color);
311 opacity: 1; 269 opacity: 1;
312 transition: 270 transition:
313 border-color 0.2s ease, 271 border-color .2s ease,
314 opacity 0.2s ease, 272 opacity .2s ease,
315 visibility 0.2s linear; 273 visibility .2s linear;
316 } 274 }
317 } 275 }
318 } 276 }
319 } 277 }
320 278
321 @include bem.modifier("horizontal") { 279 @include bem.modifier('horizontal') {
322 flex-direction: row; 280 flex-direction: row;
323 align-items: center; 281 align-items: center;
324 282
325 @include bem.elem("image") { 283 @include bem.elem('image') {
326 align-self: stretch; 284 align-self: stretch;
327 inline-size: auto; 285 inline-size: auto;
328 286
329 &:first-child { 287 &:first-child {
330 border-start-end-radius: 0; 288 border-start-end-radius: 0;
331 border-end-start-radius: props.get(vars.$rounding); 289 border-end-start-radius: props.get(vars.$rounding);
332 } 290 }
333 291
334 &:last-child { 292 &:last-child {
@@ -337,38 +295,37 @@
337 } 295 }
338 } 296 }
339 297
340 @include bem.elem("body") { 298 @include bem.elem('body') {
341 @include bem.modifier("main") { 299 @include bem.modifier('main') {
342 block-size: auto; 300 block-size: auto;
343 min-block-size: none; 301 min-block-size: none;
344 inline-size: 100%; 302 inline-size: 100%;
345 min-inline-size: 0; 303 min-inline-size: 0;
346 } 304 }
347 } 305 }
348 } 306 }
349 307
350 @include bem.modifier("collapsible") { 308 @include bem.modifier('collapsible') {
351 display: block; 309 display: block;
352 interpolate-size: allow-keywords; 310 interpolate-size: allow-keywords;
353 311
354 @include bem.elem("header") { 312 @include bem.elem("header") {
355 display: flex; 313 display: flex;
356 align-items: center; 314 align-items: center;
357 gap: 1em; 315 gap: 1em;
358 cursor: pointer; 316 cursor: pointer;
359 317
360 &::before { 318 &::before {
361 margin: 0; 319 margin: 0;
362 inline-size: 1em; 320 inline-size: 1em;
363 font-size: 0.8em; 321 font-size: 0.8em;
364 content: "â–¶"; 322 content: "â–¶";
365 } 323 }
366 324
367 &:focus-visible { 325 &:focus-visible {
368 outline: props.get(vars.$key-focus--border-color) solid 326 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
369 props.get(vars.$key-focus--border-width);
370 outline-offset: calc(-1 * props.get(vars.$key-focus--border-width)); 327 outline-offset: calc(-1 * props.get(vars.$key-focus--border-width));
371 border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 328 border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
372 } 329 }
373 330
374 @include bem.next-elem("body") { 331 @include bem.next-elem("body") {
@@ -377,7 +334,7 @@
377 } 334 }
378 335
379 &::details-content { 336 &::details-content {
380 opacity: 0; 337 opacity: 0;
381 block-size: 0; 338 block-size: 0;
382 overflow-y: clip; 339 overflow-y: clip;
383 transition: 340 transition:
@@ -394,7 +351,7 @@
394 } 351 }
395 352
396 &::details-content { 353 &::details-content {
397 opacity: 1; 354 opacity: 1;
398 block-size: auto; 355 block-size: auto;
399 } 356 }
400 } 357 }
diff --git a/src/objects/_card.vars.scss b/src/objects/_card.vars.scss
index 96f3cb9..4616c80 100644
--- a/src/objects/_card.vars.scss
+++ b/src/objects/_card.vars.scss
@@ -1,130 +1,51 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$divider-width: props.def(--o-card--divider-width, props.get(core.$border-width--thin)) !default; 5$divider-width: props.def(--o-card--divider-width, props.get(core.$border-width--thin)) !default;
6$border-width: props.def(--o-card--border-width, props.get(core.$border-width--thin)) !default; 6$border-width: props.def(--o-card--border-width, props.get(core.$border-width--thin)) !default;
7$sub-border-width: props.def( 7$sub-border-width: props.def(--o-card--sub-border-width, props.get(core.$border-width--thick)) !default;
8 --o-card--sub-border-width, 8$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default;
9 props.get(core.$border-width--thick) 9$pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default;
10) !default; 10$spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default;
11$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default; 11$rounding: props.def(--o-card--rounding, props.get(core.$rounding)) !default;
12$pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default;
13$spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default;
14$rounding: props.def(--o-card--rounding, props.get(core.$rounding)) !default;
15$image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default; 12$image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default;
16$image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default; 13$image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default;
17 14
18$hover--offset-b: props.def( 15$hover--offset-b: props.def(--o-card--hover--offset-b, calc(-1 * props.get(core.$size--65))) !default;
19 --o-card--hover--offset-b,
20 calc(-1 * props.get(core.$size--65))
21) !default;
22 16
23$shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default; 17$shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default;
24$shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default; 18$shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default;
25$shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default; 19$shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default;
26$shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default; 20$shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default;
27 21
28$key-focus--border-width: props.def( 22$key-focus--border-width: props.def(--o-card--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
29 --o-card--key-focus--border-width, 23$key-focus--border-offset: props.def(--o-card--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
30 props.get(core.$key-focus--border-width) 24$key-focus--outline-width: props.def(--o-card--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
31) !default;
32$key-focus--border-offset: props.def(
33 --o-card--key-focus--border-offset,
34 props.get(core.$key-focus--border-offset)
35) !default;
36$key-focus--outline-width: props.def(
37 --o-card--key-focus--outline-width,
38 props.get(core.$key-focus--outline-width)
39) !default;
40 25
41$shadow-color: props.def( 26$shadow-color: props.def(--o-card--shadow-color, props.get(core.$theme, --shadow), 'color') !default;
42 --o-card--shadow-color, 27$bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), 'color') !default;
43 props.get(core.$theme, --shadow), 28$border-color: props.def(--o-card--border-color, props.get(core.$theme, --box, --border), 'color') !default;
44 "color" 29$divider-color: props.def(--o-card--divider-color, props.get(core.$theme, --border-mute), 'color') !default;
45) !default;
46$bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), "color") !default;
47$border-color: props.def(
48 --o-card--border-color,
49 props.get(core.$theme, --box, --border),
50 "color"
51) !default;
52$divider-color: props.def(
53 --o-card--divider-color,
54 props.get(core.$theme, --border-mute),
55 "color"
56) !default;
57 30
58$highlight--shadow-x: props.def( 31$highlight--shadow-x: props.def(--o-card--highlight--shadow-x, props.get(core.$shadow--l2--x)) !default;
59 --o-card--highlight--shadow-x, 32$highlight--shadow-y: props.def(--o-card--highlight--shadow-y, props.get(core.$shadow--l2--y)) !default;
60 props.get(core.$shadow--l2--x) 33$highlight--shadow-blur: props.def(--o-card--highlight--shadow-blur, props.get(core.$shadow--l2--blur)) !default;
61) !default; 34$highlight--shadow-grow: props.def(--o-card--highlight--shadow-grow, props.get(core.$shadow--l2--grow)) !default;
62$highlight--shadow-y: props.def(
63 --o-card--highlight--shadow-y,
64 props.get(core.$shadow--l2--y)
65) !default;
66$highlight--shadow-blur: props.def(
67 --o-card--highlight--shadow-blur,
68 props.get(core.$shadow--l2--blur)
69) !default;
70$highlight--shadow-grow: props.def(
71 --o-card--highlight--shadow-grow,
72 props.get(core.$shadow--l2--grow)
73) !default;
74 35
75$highlight--border-width: props.def( 36$highlight--border-width: props.def(--o-card--highlight--border-width, props.get(core.$border-width--medium)) !default;
76 --o-card--highlight--border-width, 37$highlight--border-color: props.def(--o-card--highlight--border-color, props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --800), 'color') !default;
77 props.get(core.$border-width--medium) 38$highlight--shadow-color: props.def(--o-card--highlight--shadow-color, props.get(core.$theme, --accent, --200), 'color') !default;
78) !default;
79$highlight--border-color: props.def(
80 --o-card--highlight--border-color,
81 props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --700)
82 props.get(core.$theme, --accent, --800),
83 "color"
84) !default;
85$highlight--shadow-color: props.def(
86 --o-card--highlight--shadow-color,
87 props.get(core.$theme, --accent, --200),
88 "color"
89) !default;
90 39
91$hover--bg-color: props.def( 40$hover--bg-color: props.def(--o-card--hover--bg-color, color-mix(in lch, props.get($bg-color), props.get(core.$theme, --border-mute)), 'color') !default;
92 --o-card--hover--bg-color, 41$hover--border-color: props.def(--o-card--hover--border-color, props.get(core.$theme, --border), 'color') !default;
93 color-mix(in lch, props.get($bg-color), props.get(core.$theme, --border-mute)),
94 "color"
95) !default;
96$hover--border-color: props.def(
97 --o-card--hover--border-color,
98 props.get(core.$theme, --border),
99 "color"
100) !default;
101 42
102$key-focus--label-color: props.def( 43$key-focus--label-color: props.def(--o-card--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default;
103 --o-card--key-focus--label-color, 44$key-focus--border-color: props.def(--o-card--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
104 props.get(core.$theme, --focus, --text), 45$key-focus--outline-color: props.def(--o-card--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
105 "color"
106) !default;
107$key-focus--border-color: props.def(
108 --o-card--key-focus--border-color,
109 props.get(core.$theme, --focus, --border),
110 "color"
111) !default;
112$key-focus--outline-color: props.def(
113 --o-card--key-focus--outline-color,
114 props.get(core.$theme, --focus, --outline),
115 "color"
116) !default;
117 46
118$quiet--image-color: props.def( 47$quiet--image-color: props.def(--o-card--quiet--image-color, props.get(core.$theme, --bg-base), 'color') !default;
119 --o-card--quiet--image-color, 48$quiet--hover--image-color: props.def(--o-card--quiet--hover--image-color, props.get(core.$theme, --border), 'color') !default;
120 props.get(core.$theme, --bg-base),
121 "color"
122) !default;
123$quiet--hover--image-color: props.def(
124 --o-card--quiet--hover--image-color,
125 props.get(core.$theme, --border),
126 "color"
127) !default;
128 49
129$pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), "sm") !default; 50$pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), 'sm') !default;
130$pad-b--sm: props.def(--o-card--pad-b, props.get(core.$size--175), "sm") !default; 51$pad-b--sm: props.def(--o-card--pad-b, props.get(core.$size--175), 'sm') !default;
diff --git a/src/objects/_checkbox.scss b/src/objects/_checkbox.scss
index 60cee65..f3fb793 100644
--- a/src/objects/_checkbox.scss
+++ b/src/objects/_checkbox.scss
@@ -1,140 +1,130 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/functions" as fn; 3@use 'pkg:iro-sass/src/functions' as fn;
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "../props" as *; 5@use '../props' as *;
6@use "../core.vars" as core; 6@use '../core.vars' as core;
7 7
8@forward "checkbox.vars"; 8@forward 'checkbox.vars';
9@use "checkbox.vars" as vars; 9@use 'checkbox.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.object("checkbox") { 14 @include bem.object('checkbox') {
15 position: relative; 15 position: relative;
16 display: inline-block; 16 display: inline-block;
17 padding-block: props.get(vars.$pad-b); 17 padding-block: props.get(vars.$pad-b);
18 padding-inline: props.get(vars.$pad-i); 18 padding-inline: props.get(vars.$pad-i);
19 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 19 margin-inline:
20 calc( 20 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
21 props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get( 21 calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get(vars.$key-focus--border-offset));
22 vars.$key-focus--border-offset
23 )
24 );
25 22
26 @include bem.elem("box") { 23 @include bem.elem('box') {
27 position: relative; 24 position: relative;
28 display: inline-block; 25 display: inline-block;
29 flex: 0 0 auto; 26 flex: 0 0 auto;
30 inline-size: props.get(vars.$size); 27 inline-size: props.get(vars.$size);
31 block-size: props.get(vars.$size); 28 block-size: props.get(vars.$size);
32 margin-block-start: calc( 29 margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$size) - props.get(vars.$key-focus--border-offset));
33 0.5em * props.get(core.$font--standard--line-height) - 0.5 * 30 vertical-align: top;
34 props.get(vars.$size) - props.get(vars.$key-focus--border-offset) 31 background-color: props.get(vars.$box-border-color);
35 ); 32 background-clip: padding-box;
36 vertical-align: top; 33 border: props.get(vars.$key-focus--border-offset) solid transparent;
37 background-color: props.get(vars.$box-border-color); 34 border-radius: calc(props.get(vars.$border-width) + props.get(vars.$key-focus--border-offset));
38 background-clip: padding-box;
39 border: props.get(vars.$key-focus--border-offset) solid transparent;
40 border-radius: calc(
41 props.get(vars.$border-width) + props.get(vars.$key-focus--border-offset)
42 );
43 35
44 &::before, 36 &::before,
45 &::after { 37 &::after {
46 position: absolute; 38 position: absolute;
47 display: block; 39 display: block;
48 content: ""; 40 content: '';
49 } 41 }
50 42
51 &::before { 43 &::before {
52 inset-block-start: props.get(vars.$border-width); 44 inset-block-start: props.get(vars.$border-width);
53 inset-inline-start: props.get(vars.$border-width); 45 inset-inline-start: props.get(vars.$border-width);
54 z-index: 2; 46 z-index: 2;
55 inline-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); 47 inline-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width));
56 block-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); 48 block-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width));
57 background-color: props.get(vars.$box-bg-color); 49 background-color: props.get(vars.$box-bg-color);
58 transition: transform 0.2s ease; 50 transition: transform .2s ease;
59 } 51 }
60 52
61 &::after { 53 &::after {
62 inset-block-start: calc(0.5 * props.get(vars.$size) - 1px); 54 inset-block-start: calc(.5 * props.get(vars.$size) - 1px);
63 inset-inline-start: calc(1.5 * props.get(vars.$border-width)); 55 inset-inline-start: calc(1.5 * props.get(vars.$border-width));
64 z-index: 3; 56 z-index: 3;
65 box-sizing: border-box; 57 box-sizing: border-box;
66 inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width)); 58 inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width));
67 block-size: 0; 59 block-size: 0;
68 border-color: props.get(vars.$box-bg-color); 60 border-color: props.get(vars.$box-bg-color);
69 border-style: solid; 61 border-style: solid;
70 border-radius: 2px; 62 border-radius: 2px;
71 transform: scale(0); 63 transform: scale(0);
72 transition: transform 0.2s ease; 64 transition: transform .2s ease;
73 border-block-width: 0 2px; 65 border-block-width: 0 2px;
74 border-inline-width: 0 2px; 66 border-inline-width: 0 2px;
75 } 67 }
76 } 68 }
77 69
78 @include bem.elem("check-icon") { 70 @include bem.elem('check-icon') {
79 position: absolute; 71 position: absolute;
80 inset-block-start: calc(1 * props.get(vars.$border-width)); 72 inset-block-start: calc(1 * props.get(vars.$border-width));
81 inset-inline-start: calc(1 * props.get(vars.$border-width)); 73 inset-inline-start: calc(1 * props.get(vars.$border-width));
82 z-index: 2; 74 z-index: 2;
83 display: block; 75 display: block;
84 inline-size: calc(100% - 2 * props.get(vars.$border-width)); 76 inline-size: calc(100% - 2 * props.get(vars.$border-width));
85 block-size: calc(100% - 2 * props.get(vars.$border-width)); 77 block-size: calc(100% - 2 * props.get(vars.$border-width));
86 margin: 0; 78 margin: 0;
87 color: props.get(vars.$box-bg-color); 79 color: props.get(vars.$box-bg-color);
88 stroke-width: fn.px-to-rem(3px); 80 stroke-width: fn.px-to-rem(3px);
89 transform: scale(0); 81 transform: scale(0);
90 transform-origin: 40% 90%; 82 transform-origin: 40% 90%;
91 transition: transform 0.2s ease; 83 transition: transform .2s ease;
92 } 84 }
93 85
94 @include bem.elem("label") { 86 @include bem.elem('label') {
95 margin-inline-start: calc( 87 margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset));
96 props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)
97 );
98 } 88 }
99 89
100 @include bem.elem("native") { 90 @include bem.elem('native') {
101 position: absolute; 91 position: absolute;
102 inset-block-start: 0; 92 inset-block-start: 0;
103 inset-inline-start: 0; 93 inset-inline-start: 0;
104 z-index: -1; 94 z-index: -1;
105 inline-size: 100%; 95 inline-size: 100%;
106 block-size: 100%; 96 block-size: 100%;
107 padding: 0; 97 padding: 0;
108 margin: 0; 98 margin: 0;
109 overflow: hidden; 99 overflow: hidden;
110 appearance: none; 100 appearance: none;
111 border-radius: props.get(vars.$rounding); 101 border-radius: props.get(vars.$rounding);
112 102
113 &:hover, 103 &:hover,
114 &:focus-visible { 104 &:focus-visible {
115 @include bem.sibling-elem("label") { 105 @include bem.sibling-elem('label') {
116 color: props.get(vars.$hover--label-color); 106 color: props.get(vars.$hover--label-color);
117 } 107 }
118 108
119 @include bem.sibling-elem("box") { 109 @include bem.sibling-elem('box') {
120 background-color: props.get(vars.$hover--box-border-color); 110 background-color: props.get(vars.$hover--box-border-color);
121 } 111 }
122 } 112 }
123 113
124 &:checked { 114 &:checked {
125 @include bem.sibling-elem("box") { 115 @include bem.sibling-elem('box') {
126 &::before { 116 &::before {
127 transform: scale(0); 117 transform: scale(0);
128 } 118 }
129 119
130 @include bem.elem("check-icon") { 120 @include bem.elem('check-icon') {
131 transform: scale(1); 121 transform: scale(1);
132 } 122 }
133 } 123 }
134 } 124 }
135 125
136 &:indeterminate { 126 &:indeterminate {
137 @include bem.sibling-elem("box") { 127 @include bem.sibling-elem('box') {
138 &::before { 128 &::before {
139 transform: scale(0); 129 transform: scale(0);
140 } 130 }
@@ -143,18 +133,18 @@
143 transform: scale(1); 133 transform: scale(1);
144 } 134 }
145 135
146 @include bem.elem("check-icon") { 136 @include bem.elem('check-icon') {
147 transform: scale(0); 137 transform: scale(0);
148 } 138 }
149 } 139 }
150 } 140 }
151 141
152 &:disabled { 142 &:disabled {
153 @include bem.sibling-elem("label") { 143 @include bem.sibling-elem('label') {
154 color: props.get(vars.$disabled--label-color); 144 color: props.get(vars.$disabled--label-color);
155 } 145 }
156 146
157 @include bem.sibling-elem("box") { 147 @include bem.sibling-elem('box') {
158 background-color: props.get(vars.$disabled--box-border-color); 148 background-color: props.get(vars.$disabled--box-border-color);
159 149
160 &::before { 150 &::before {
@@ -164,59 +154,58 @@
164 } 154 }
165 155
166 &:focus-visible { 156 &:focus-visible {
167 @include bem.sibling-elem("label") { 157 @include bem.sibling-elem('label') {
168 color: props.get(vars.$key-focus--label-color); 158 color: props.get(vars.$key-focus--label-color);
169 } 159 }
170 160
171 @include bem.sibling-elem("box") { 161 @include bem.sibling-elem('box') {
172 outline: props.get(vars.$key-focus--border-color) solid 162 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
173 props.get(vars.$key-focus--border-width); 163 box-shadow:
174 box-shadow: 0 0 0 164 0
175 calc( 165 0
176 props.get(vars.$key-focus--border-width) + 166 0
177 props.get(vars.$key-focus--outline-width) 167 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
178 )
179 props.get(vars.$key-focus--outline-color); 168 props.get(vars.$key-focus--outline-color);
180 } 169 }
181 } 170 }
182 } 171 }
183 172
184 @include bem.modifier("standalone") { 173 @include bem.modifier('standalone') {
185 @include bem.elem("box") { 174 @include bem.elem('box') {
186 margin-block-start: 0; 175 margin-block-start: 0;
187 } 176 }
188 } 177 }
189 178
190 @include bem.modifier("accent") { 179 @include bem.modifier('accent') {
191 @include bem.elem("native") { 180 @include bem.elem('native') {
192 &:checked { 181 &:checked {
193 @include bem.sibling-elem("box") { 182 @include bem.sibling-elem('box') {
194 background-color: props.get(vars.$accent--box-border-color); 183 background-color: props.get(vars.$accent--box-border-color);
195 } 184 }
196 185
197 &:hover, 186 &:hover,
198 &:focus-visible { 187 &:focus-visible {
199 @include bem.sibling-elem("box") { 188 @include bem.sibling-elem('box') {
200 background-color: props.get(vars.$accent--hover--box-border-color); 189 background-color: props.get(vars.$accent--hover--box-border-color);
201 } 190 }
202 } 191 }
203 } 192 }
204 193
205 &:indeterminate { 194 &:indeterminate {
206 @include bem.sibling-elem("box") { 195 @include bem.sibling-elem('box') {
207 background-color: props.get(vars.$accent--box-border-color); 196 background-color: props.get(vars.$accent--box-border-color);
208 } 197 }
209 198
210 &:hover, 199 &:hover,
211 &:focus-visible { 200 &:focus-visible {
212 @include bem.sibling-elem("box") { 201 @include bem.sibling-elem('box') {
213 background-color: props.get(vars.$accent--hover--box-border-color); 202 background-color: props.get(vars.$accent--hover--box-border-color);
214 } 203 }
215 } 204 }
216 } 205 }
217 206
218 &:disabled { 207 &:disabled {
219 @include bem.sibling-elem("box") { 208 @include bem.sibling-elem('box') {
220 background-color: props.get(vars.$disabled--box-border-color); 209 background-color: props.get(vars.$disabled--box-border-color);
221 210
222 &::before { 211 &::before {
@@ -225,13 +214,13 @@
225 } 214 }
226 215
227 &:checked { 216 &:checked {
228 @include bem.sibling-elem("box") { 217 @include bem.sibling-elem('box') {
229 background-color: props.get(vars.$disabled--box-border-color); 218 background-color: props.get(vars.$disabled--box-border-color);
230 } 219 }
231 } 220 }
232 221
233 &:indeterminate { 222 &:indeterminate {
234 @include bem.sibling-elem("box") { 223 @include bem.sibling-elem('box') {
235 background-color: props.get(vars.$disabled--box-border-color); 224 background-color: props.get(vars.$disabled--box-border-color);
236 } 225 }
237 } 226 }
diff --git a/src/objects/_checkbox.vars.scss b/src/objects/_checkbox.vars.scss
index 8362aa7..278aac8 100644
--- a/src/objects/_checkbox.vars.scss
+++ b/src/objects/_checkbox.vars.scss
@@ -1,92 +1,32 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$size: props.def(--o-checkbox--size, props.get(core.$size--175)) !default; 5$size: props.def(--o-checkbox--size, props.get(core.$size--175)) !default;
6$label-gap: props.def(--o-checkbox--label-gap, props.get(core.$size--125)) !default; 6$label-gap: props.def(--o-checkbox--label-gap, props.get(core.$size--125)) !default;
7$border-width: props.def( 7$border-width: props.def(--o-checkbox--border-width, props.get(core.$border-width--medium)) !default;
8 --o-checkbox--border-width, 8$pad-i: props.def(--o-checkbox--pad-i, props.get(core.$size--65)) !default;
9 props.get(core.$border-width--medium) 9$pad-b: props.def(--o-checkbox--pad-b, props.get(core.$size--65)) !default;
10) !default; 10$rounding: props.def(--o-checkbox--rounding, props.get(core.$rounding--sm)) !default;
11$pad-i: props.def(--o-checkbox--pad-i, props.get(core.$size--65)) !default;
12$pad-b: props.def(--o-checkbox--pad-b, props.get(core.$size--65)) !default;
13$rounding: props.def(--o-checkbox--rounding, props.get(core.$rounding--sm)) !default;
14$spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default; 11$spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default;
15 12
16$key-focus--border-width: props.def( 13$key-focus--border-width: props.def(--o-checkbox--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
17 --o-checkbox--key-focus--border-width, 14$key-focus--border-offset: props.def(--o-checkbox--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
18 props.get(core.$key-focus--border-width) 15$key-focus--outline-width: props.def(--o-checkbox--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
19) !default;
20$key-focus--border-offset: props.def(
21 --o-checkbox--key-focus--border-offset,
22 props.get(core.$key-focus--border-offset)
23) !default;
24$key-focus--outline-width: props.def(
25 --o-checkbox--key-focus--outline-width,
26 props.get(core.$key-focus--outline-width)
27) !default;
28 16
29$box-border-color: props.def( 17$box-border-color: props.def(--o-checkbox--box-border-color, props.get(core.$theme, --text-mute-more), 'color') !default;
30 --o-checkbox--box-border-color, 18$box-bg-color: props.def(--o-checkbox--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default;
31 props.get(core.$theme, --text-mute-more),
32 "color"
33) !default;
34$box-bg-color: props.def(
35 --o-checkbox--box-bg-color,
36 props.get(core.$theme, --base, --75),
37 "color"
38) !default;
39 19
40$hover--label-color: props.def( 20$hover--label-color: props.def(--o-checkbox--hover--label-color, props.get(core.$theme, --heading), 'color') !default;
41 --o-checkbox--hover--label-color, 21$hover--box-border-color: props.def(--o-checkbox--hover--box-border-color, props.get(core.$theme, --text-mute), 'color') !default;
42 props.get(core.$theme, --heading),
43 "color"
44) !default;
45$hover--box-border-color: props.def(
46 --o-checkbox--hover--box-border-color,
47 props.get(core.$theme, --text-mute),
48 "color"
49) !default;
50 22
51$accent--box-border-color: props.def( 23$accent--box-border-color: props.def(--o-checkbox--accent--box-border-color, props.get(core.$theme, --accent, --900), 'color') !default;
52 --o-checkbox--accent--box-border-color, 24$accent--hover--box-border-color: props.def(--o-checkbox--accent--hover--box-border-color, props.get(core.$theme, --accent, --1000), 'color') !default;
53 props.get(core.$theme, --accent, --900),
54 "color"
55) !default;
56$accent--hover--box-border-color: props.def(
57 --o-checkbox--accent--hover--box-border-color,
58 props.get(core.$theme, --accent, --1000),
59 "color"
60) !default;
61 25
62$disabled--label-color: props.def( 26$disabled--label-color: props.def(--o-checkbox--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
63 --o-checkbox--disabled--label-color, 27$disabled--box-border-color: props.def(--o-checkbox--disabled--box-border-color, props.get(core.$theme, --border-strong), 'color') !default;
64 props.get(core.$theme, --text-disabled), 28$disabled--box-bg-color: props.def(--o-checkbox--disabled--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default;
65 "color"
66) !default;
67$disabled--box-border-color: props.def(
68 --o-checkbox--disabled--box-border-color,
69 props.get(core.$theme, --border-strong),
70 "color"
71) !default;
72$disabled--box-bg-color: props.def(
73 --o-checkbox--disabled--box-bg-color,
74 props.get(core.$theme, --base, --75),
75 "color"
76) !default;
77 29
78$key-focus--label-color: props.def( 30$key-focus--label-color: props.def(--o-checkbox--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default;
79 --o-checkbox--key-focus--label-color, 31$key-focus--border-color: props.def(--o-checkbox--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
80 props.get(core.$theme, --focus, --text), 32$key-focus--outline-color: props.def(--o-checkbox--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
81 "color"
82) !default;
83$key-focus--border-color: props.def(
84 --o-checkbox--key-focus--border-color,
85 props.get(core.$theme, --focus, --border),
86 "color"
87) !default;
88$key-focus--outline-color: props.def(
89 --o-checkbox--key-focus--outline-color,
90 props.get(core.$theme, --focus, --outline),
91 "color"
92) !default;
diff --git a/src/objects/_dialog.scss b/src/objects/_dialog.scss
index f5584e6..d2ee8c3 100644
--- a/src/objects/_dialog.scss
+++ b/src/objects/_dialog.scss
@@ -1,29 +1,29 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "dialog.vars"; 6@forward 'dialog.vars';
7@use "dialog.vars" as vars; 7@use 'dialog.vars' as vars;
8 8
9@use "backdrop.vars" as backdrop; 9@use 'backdrop.vars' as backdrop;
10@use "divider.vars" as divider; 10@use 'divider.vars' as divider;
11 11
12@mixin styles { 12@mixin styles {
13 @include materialize-at-root(meta.module-variables("vars")); 13 @include materialize-at-root(meta.module-variables('vars'));
14 14
15 @include bem.object("dialog") { 15 @include bem.object('dialog') {
16 display: none; 16 display: none;
17 box-sizing: border-box; 17 box-sizing: border-box;
18 inline-size: 100%; 18 inline-size: 100%;
19 max-inline-size: none; 19 max-inline-size: none;
20 block-size: 100%; 20 block-size: 100%;
21 min-block-size: 0; 21 min-block-size: 0;
22 max-block-size: none; 22 max-block-size: none;
23 padding: props.get(vars.$pad-b) props.get(vars.$pad-i); 23 padding: props.get(vars.$pad-b) props.get(vars.$pad-i);
24 margin: 0; 24 margin: 0;
25 background-color: transparent; 25 background-color: transparent;
26 border: 0; 26 border: 0;
27 27
28 &::backdrop { 28 &::backdrop {
29 background-color: props.get(backdrop.$bg-color); 29 background-color: props.get(backdrop.$bg-color);
@@ -31,40 +31,38 @@
31 } 31 }
32 32
33 &[open], 33 &[open],
34 &:popover-open { 34 &:popover-open {
35 display: flex; 35 display: flex;
36 flex-direction: column; 36 flex-direction: column;
37 } 37 }
38 38
39 @include bem.elem("content") { 39 @include bem.elem('content') {
40 pointer-events: auto; 40 pointer-events: auto;
41 border-radius: props.get(vars.$rounding); 41 border-radius: props.get(vars.$rounding);
42 background-color: props.get(vars.$bg-color); 42 background-color: props.get(vars.$bg-color);
43 } 43 }
44 44
45 @include bem.elem("header") { 45 @include bem.elem('header') {
46 display: flex; 46 display: flex;
47 align-items: center; 47 align-items: center;
48 padding: props.get(vars.$body--pad-i) props.get(vars.$body--pad-i) 0; 48 padding: props.get(vars.$body--pad-i) props.get(vars.$body--pad-i) 0;
49 } 49 }
50 50
51 @include bem.elem("divider") { 51 @include bem.elem('divider') {
52 margin-inline: props.get(vars.$body--pad-i); 52 margin-inline: props.get(vars.$body--pad-i);
53 53
54 @include bem.next-elem("body") { 54 @include bem.next-elem('body') {
55 padding-block-start: calc( 55 padding-block-start: calc(.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b));
56 0.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b)
57 );
58 } 56 }
59 } 57 }
60 58
61 @include bem.elem("body") { 59 @include bem.elem('body') {
62 padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i); 60 padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i);
63 61
64 &::before { 62 &::before {
65 display: block; 63 display: block;
66 margin-block: -100em 100em; 64 margin-block: -100em 100em;
67 content: ""; 65 content: '';
68 } 66 }
69 } 67 }
70 } 68 }
diff --git a/src/objects/_dialog.vars.scss b/src/objects/_dialog.vars.scss
index 8650e51..39c47ba 100644
--- a/src/objects/_dialog.vars.scss
+++ b/src/objects/_dialog.vars.scss
@@ -1,10 +1,10 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4@use "../layouts/container.vars" as container; 4@use '../layouts/container.vars' as container;
5 5
6$pad-b: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; 6$pad-b: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default;
7$pad-i: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; 7$pad-i: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default;
8$rounding: props.def(--o-dialog--rounding, props.get(core.$rounding)) !default; 8$rounding: props.def(--o-dialog--rounding, props.get(core.$rounding)) !default;
9 9
10$border-width: props.def(--o-dialog--border-width, props.get(core.$border-width--thin)) !default; 10$border-width: props.def(--o-dialog--border-width, props.get(core.$border-width--thin)) !default;
@@ -12,9 +12,5 @@ $border-width: props.def(--o-dialog--border-width, props.get(core.$border-width-
12$body--pad-b: props.def(--o-dialog--body--pad-b, props.get(container.$pad-i)) !default; 12$body--pad-b: props.def(--o-dialog--body--pad-b, props.get(container.$pad-i)) !default;
13$body--pad-i: props.def(--o-dialog--body--pad-i, props.get(container.$pad-i)) !default; 13$body--pad-i: props.def(--o-dialog--body--pad-i, props.get(container.$pad-i)) !default;
14 14
15$bg-color: props.def(--o-dialog--bg-color, props.get(core.$theme, --bg-l1), "color") !default; 15$bg-color: props.def(--o-dialog--bg-color, props.get(core.$theme, --bg-l1), 'color') !default;
16$border-color: props.def( 16$border-color: props.def(--o-dialog--border-color, props.get(core.$theme, --border-mute), 'color') !default;
17 --o-dialog--border-color,
18 props.get(core.$theme, --border-mute),
19 "color"
20) !default;
diff --git a/src/objects/_divider.scss b/src/objects/_divider.scss
index f082d12..d81284b 100644
--- a/src/objects/_divider.scss
+++ b/src/objects/_divider.scss
@@ -1,38 +1,38 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7@use "../core.vars" as core; 7@use '../core.vars' as core;
8 8
9@forward "divider.vars"; 9@forward 'divider.vars';
10@use "divider.vars" as vars; 10@use 'divider.vars' as vars;
11 11
12@mixin styles { 12@mixin styles {
13 @include materialize-at-root(meta.module-variables("vars")); 13 @include materialize-at-root(meta.module-variables('vars'));
14 14
15 @include bem.object("divider") { 15 @include bem.object('divider') {
16 display: flex; 16 display: flex;
17 flex: 0 0 auto; 17 flex: 0 0 auto;
18 flex-direction: row; 18 flex-direction: row;
19 align-items: center; 19 align-items: center;
20 block-size: 1em; 20 block-size: 1em;
21 margin-block: props.get(vars.$margin-b); 21 margin-block: props.get(vars.$margin-b);
22 font-size: props.get(vars.$strong--label-font-size); 22 font-size: props.get(vars.$strong--label-font-size);
23 font-weight: 700; 23 font-weight: 700;
24 line-height: 1; 24 line-height: 1;
25 color: props.get(vars.$strong--label-color); 25 color: props.get(vars.$strong--label-color);
26 text-transform: uppercase; 26 text-transform: uppercase;
27 letter-spacing: props.get(vars.$letter-spacing); 27 letter-spacing: props.get(vars.$letter-spacing);
28 background-color: transparent; 28 background-color: transparent;
29 29
30 &::before, 30 &::before,
31 &::after { 31 &::after {
32 flex: 1 1 auto; 32 flex: 1 1 auto;
33 inline-size: 100%; 33 inline-size: 100%;
34 block-size: props.get(vars.$strong--border-width); 34 block-size: props.get(vars.$strong--border-width);
35 content: ""; 35 content: '';
36 background-color: props.get(vars.$strong--bg-color); 36 background-color: props.get(vars.$strong--bg-color);
37 } 37 }
38 38
@@ -40,15 +40,15 @@
40 display: block; 40 display: block;
41 } 41 }
42 42
43 @include bem.elem("label") { 43 @include bem.elem('label') {
44 flex: 0 0 auto; 44 flex: 0 0 auto;
45 } 45 }
46 46
47 @include bem.modifier("vertical") { 47 @include bem.modifier('vertical') {
48 align-self: stretch; 48 align-self: stretch;
49 inline-size: props.get(vars.$vertical--border-width); 49 inline-size: props.get(vars.$vertical--border-width);
50 block-size: auto; 50 block-size: auto;
51 margin-block: 0; 51 margin-block: 0;
52 background-color: props.get(vars.$strong--bg-color); 52 background-color: props.get(vars.$strong--bg-color);
53 53
54 &::before, 54 &::before,
@@ -57,13 +57,13 @@
57 } 57 }
58 } 58 }
59 59
60 @include bem.modifier("dot") { 60 @include bem.modifier('dot') {
61 align-self: center; 61 align-self: center;
62 inline-size: props.get(vars.$dot--size); 62 inline-size: props.get(vars.$dot--size);
63 block-size: props.get(vars.$dot--size); 63 block-size: props.get(vars.$dot--size);
64 margin-block: 0; 64 margin-block: 0;
65 background-color: props.get(vars.$strong--bg-color); 65 background-color: props.get(vars.$strong--bg-color);
66 border-radius: props.get(vars.$dot--size); 66 border-radius: props.get(vars.$dot--size);
67 67
68 &::before, 68 &::before,
69 &::after { 69 &::after {
@@ -71,73 +71,73 @@
71 } 71 }
72 } 72 }
73 73
74 @include bem.modifier("medium") { 74 @include bem.modifier('medium') {
75 font-size: props.get(vars.$medium--label-font-size); 75 font-size: props.get(vars.$medium--label-font-size);
76 font-weight: 500; 76 font-weight: 500;
77 color: props.get(vars.$medium--label-color); 77 color: props.get(vars.$medium--label-color);
78 78
79 &::before, 79 &::before,
80 &::after { 80 &::after {
81 block-size: props.get(vars.$medium--border-width); 81 block-size: props.get(vars.$medium--border-width);
82 background-color: props.get(vars.$medium--bg-color); 82 background-color: props.get(vars.$medium--bg-color);
83 } 83 }
84 84
85 @include bem.modifier("vertical") { 85 @include bem.modifier('vertical') {
86 background-color: props.get(vars.$medium--bg-color); 86 background-color: props.get(vars.$medium--bg-color);
87 } 87 }
88 88
89 @include bem.modifier("dot") { 89 @include bem.modifier('dot') {
90 background-color: props.get(vars.$medium--bg-color); 90 background-color: props.get(vars.$medium--bg-color);
91 } 91 }
92 } 92 }
93 93
94 @include bem.modifier("quiet") { 94 @include bem.modifier('quiet') {
95 font-size: props.get(vars.$quiet--label-font-size); 95 font-size: props.get(vars.$quiet--label-font-size);
96 font-weight: 500; 96 font-weight: 500;
97 color: props.get(vars.$quiet--label-color); 97 color: props.get(vars.$quiet--label-color);
98 98
99 &::before, 99 &::before,
100 &::after { 100 &::after {
101 block-size: props.get(vars.$quiet--border-width); 101 block-size: props.get(vars.$quiet--border-width);
102 background-color: props.get(vars.$quiet--bg-color); 102 background-color: props.get(vars.$quiet--bg-color);
103 } 103 }
104 104
105 @include bem.modifier("vertical") { 105 @include bem.modifier('vertical') {
106 background-color: props.get(vars.$vertical--quiet--bg-color); 106 background-color: props.get(vars.$vertical--quiet--bg-color);
107 } 107 }
108 108
109 @include bem.modifier("dot") { 109 @include bem.modifier('dot') {
110 background-color: props.get(vars.$dot--quiet--bg-color); 110 background-color: props.get(vars.$dot--quiet--bg-color);
111 } 111 }
112 } 112 }
113 113
114 @include bem.modifier("faint") { 114 @include bem.modifier('faint') {
115 font-size: props.get(vars.$faint--label-font-size); 115 font-size: props.get(vars.$faint--label-font-size);
116 font-weight: 500; 116 font-weight: 500;
117 color: props.get(vars.$faint--label-color); 117 color: props.get(vars.$faint--label-color);
118 118
119 &::before, 119 &::before,
120 &::after { 120 &::after {
121 block-size: props.get(vars.$faint--border-width); 121 block-size: props.get(vars.$faint--border-width);
122 background-color: props.get(vars.$faint--bg-color); 122 background-color: props.get(vars.$faint--bg-color);
123 } 123 }
124 124
125 @include bem.modifier("vertical") { 125 @include bem.modifier('vertical') {
126 background-color: props.get(vars.$vertical--quiet--bg-color); 126 background-color: props.get(vars.$vertical--quiet--bg-color);
127 } 127 }
128 128
129 @include bem.modifier("dot") { 129 @include bem.modifier('dot') {
130 background-color: props.get(vars.$dot--quiet--bg-color); 130 background-color: props.get(vars.$dot--quiet--bg-color);
131 } 131 }
132 } 132 }
133 133
134 @include bem.modifier("labelled") { 134 @include bem.modifier('labelled') {
135 &::before { 135 &::before {
136 margin-inline-end: 1em; 136 margin-inline-end: 1em;
137 } 137 }
138 138
139 &::after { 139 &::after {
140 display: block; 140 display: block;
141 margin-inline-start: 1em; 141 margin-inline-start: 1em;
142 } 142 }
143 } 143 }
@@ -149,7 +149,7 @@
149 background-color: props.get(vars.$themes, $theme, --bg); 149 background-color: props.get(vars.$themes, $theme, --bg);
150 } 150 }
151 151
152 @include bem.elem("label") { 152 @include bem.elem('label') {
153 color: props.get(vars.$themes, $theme, --label); 153 color: props.get(vars.$themes, $theme, --label);
154 } 154 }
155 } 155 }
@@ -162,39 +162,39 @@
162 background-color: props.get(vars.$static-themes, $theme, --strong, --bg); 162 background-color: props.get(vars.$static-themes, $theme, --strong, --bg);
163 } 163 }
164 164
165 @include bem.elem("label") { 165 @include bem.elem('label') {
166 color: props.get(vars.$static-themes, $theme, --strong, --label); 166 color: props.get(vars.$static-themes, $theme, --strong, --label);
167 } 167 }
168 168
169 @include bem.modifier("medium") { 169 @include bem.modifier('medium') {
170 &::before, 170 &::before,
171 &::after { 171 &::after {
172 background-color: props.get(vars.$static-themes, $theme, --medium, --bg); 172 background-color: props.get(vars.$static-themes, $theme, --medium, --bg);
173 } 173 }
174 174
175 @include bem.elem("label") { 175 @include bem.elem('label') {
176 color: props.get(vars.$static-themes, $theme, --medium, --label); 176 color: props.get(vars.$static-themes, $theme, --medium, --label);
177 } 177 }
178 } 178 }
179 179
180 @include bem.modifier("quiet") { 180 @include bem.modifier('quiet') {
181 &::before, 181 &::before,
182 &::after { 182 &::after {
183 background-color: props.get(vars.$static-themes, $theme, --quiet, --bg); 183 background-color: props.get(vars.$static-themes, $theme, --quiet, --bg);
184 } 184 }
185 185
186 @include bem.elem("label") { 186 @include bem.elem('label') {
187 color: props.get(vars.$static-themes, $theme, --quiet, --label); 187 color: props.get(vars.$static-themes, $theme, --quiet, --label);
188 } 188 }
189 } 189 }
190 190
191 @include bem.modifier("faint") { 191 @include bem.modifier('faint') {
192 &::before, 192 &::before,
193 &::after { 193 &::after {
194 background-color: props.get(vars.$static-themes, $theme, --faint, --bg); 194 background-color: props.get(vars.$static-themes, $theme, --faint, --bg);
195 } 195 }
196 196
197 @include bem.elem("label") { 197 @include bem.elem('label') {
198 color: props.get(vars.$static-themes, $theme, --faint, --label); 198 color: props.get(vars.$static-themes, $theme, --faint, --label);
199 } 199 }
200 } 200 }
diff --git a/src/objects/_divider.vars.scss b/src/objects/_divider.vars.scss
index 38224d4..a8b0f9f 100644
--- a/src/objects/_divider.vars.scss
+++ b/src/objects/_divider.vars.scss
@@ -1,153 +1,80 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$margin-b: props.def(--o-divider--size, props.get(core.$size--85)) !default; 6$margin-b: props.def(--o-divider--size, props.get(core.$size--85)) !default;
7$vertical--border-width: props.def( 7$vertical--border-width: props.def(--o-divider--vertical--width, props.get(core.$border-width--thin)) !default;
8 --o-divider--vertical--width, 8$dot--size: props.def(--o-divider--dot--size, props.get(core.$size--50)) !default;
9 props.get(core.$border-width--thin) 9$letter-spacing: props.def(--o-divider--letter-spacing, 1px) !default;
10) !default;
11$dot--size: props.def(--o-divider--dot--size, props.get(core.$size--50)) !default;
12$letter-spacing: props.def(--o-divider--letter-spacing, 1px) !default;
13 10
14$strong--border-width: props.def( 11$strong--border-width: props.def(--o-divider--strong--border-width, props.get(core.$border-width--thick)) !default;
15 --o-divider--strong--border-width, 12$strong--label-font-size: props.def(--o-divider--strong--label-font-size, props.get(core.$font-size--100)) !default;
16 props.get(core.$border-width--thick)
17) !default;
18$strong--label-font-size: props.def(
19 --o-divider--strong--label-font-size,
20 props.get(core.$font-size--100)
21) !default;
22 13
23$medium--border-width: props.def( 14$medium--border-width: props.def(--o-divider--medium--border-width, props.get(core.$border-width--medium)) !default;
24 --o-divider--medium--border-width, 15$medium--label-font-size: props.def(--o-divider--medium--label-font-size, props.get(core.$font-size--75)) !default;
25 props.get(core.$border-width--medium)
26) !default;
27$medium--label-font-size: props.def(
28 --o-divider--medium--label-font-size,
29 props.get(core.$font-size--75)
30) !default;
31 16
32$quiet--border-width: props.def( 17$quiet--border-width: props.def(--o-divider--quiet--border-width, props.get(core.$border-width--thin)) !default;
33 --o-divider--quiet--border-width, 18$quiet--label-font-size: props.def(--o-divider--quiet--label-font-size, props.get(core.$font-size--50)) !default;
34 props.get(core.$border-width--thin)
35) !default;
36$quiet--label-font-size: props.def(
37 --o-divider--quiet--label-font-size,
38 props.get(core.$font-size--50)
39) !default;
40 19
41$faint--border-width: props.def( 20$faint--border-width: props.def(--o-divider--faint--border-width, props.get(core.$border-width--thin)) !default;
42 --o-divider--faint--border-width, 21$faint--label-font-size: props.def(--o-divider--faint--label-font-size, props.get(core.$font-size--50)) !default;
43 props.get(core.$border-width--thin)
44) !default;
45$faint--label-font-size: props.def(
46 --o-divider--faint--label-font-size,
47 props.get(core.$font-size--50)
48) !default;
49 22
50$strong--bg-color: props.def( 23$strong--bg-color: props.def(--o-divider--strong--bg-color, props.get(core.$theme, --text), 'color') !default;
51 --o-divider--strong--bg-color, 24$strong--label-color: props.def(--o-divider--strong--label-color, props.get(core.$theme, --text), 'color') !default;
52 props.get(core.$theme, --text),
53 "color"
54) !default;
55$strong--label-color: props.def(
56 --o-divider--strong--label-color,
57 props.get(core.$theme, --text),
58 "color"
59) !default;
60 25
61$medium--bg-color: props.def( 26$medium--bg-color: props.def(--o-divider--medium--bg-color, props.get(core.$theme, --border), 'color') !default;
62 --o-divider--medium--bg-color, 27$medium--label-color: props.def(--o-divider--medium--label-color, props.get(core.$theme, --text-mute), 'color') !default;
63 props.get(core.$theme, --border),
64 "color"
65) !default;
66$medium--label-color: props.def(
67 --o-divider--medium--label-color,
68 props.get(core.$theme, --text-mute),
69 "color"
70) !default;
71 28
72$quiet--bg-color: props.def( 29$quiet--bg-color: props.def(--o-divider--quiet--bg-color, props.get(core.$theme, --border), 'color') !default;
73 --o-divider--quiet--bg-color, 30$quiet--label-color: props.def(--o-divider--quiet--label-color, props.get(core.$theme, --text-mute-more), 'color') !default;
74 props.get(core.$theme, --border),
75 "color"
76) !default;
77$quiet--label-color: props.def(
78 --o-divider--quiet--label-color,
79 props.get(core.$theme, --text-mute-more),
80 "color"
81) !default;
82 31
83$faint--bg-color: props.def( 32$faint--bg-color: props.def(--o-divider--faint--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
84 --o-divider--faint--bg-color, 33$faint--label-color: props.def(--o-divider--faint--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
85 props.get(core.$theme, --border-mute),
86 "color"
87) !default;
88$faint--label-color: props.def(
89 --o-divider--faint--label-color,
90 props.get(core.$theme, --text-disabled),
91 "color"
92) !default;
93 34
94$vertical--quiet--bg-color: props.def( 35$vertical--quiet--bg-color: props.def(--o-divider--vertical--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
95 --o-divider--vertical--quiet--bg-color,
96 props.get(core.$theme, --border-mute),
97 "color"
98) !default;
99 36
100$dot--quiet--bg-color: props.def( 37$dot--quiet--bg-color: props.def(--o-divider--dot--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
101 --o-divider--dot--quiet--bg-color,
102 props.get(core.$theme, --border-mute),
103 "color"
104) !default;
105 38
106$static-themes: props.def(--o-divider, (), "color"); 39$static-themes: props.def(--o-divider, (), 'color');
107 40
108@each $theme in map.keys(props.get(core.$transparent-colors)) { 41@each $theme in map.keys(props.get(core.$transparent-colors)) {
109 $button-theme: --static-#{string.slice($theme, 3)}; 42 $button-theme: --static-#{string.slice($theme, 3)};
110 43
111 $static-themes: props.merge( 44 $static-themes: props.merge($static-themes, (
112 $static-themes, 45 $button-theme: (
113 ( 46 --strong: (
114 $button-theme: ( 47 --bg: props.get(core.$transparent-colors, $theme, --800),
115 --strong: ( 48 --label: props.get(core.$transparent-colors, $theme, --900),
116 --bg: props.get(core.$transparent-colors, $theme, --800), 49 ),
117 --label: props.get(core.$transparent-colors, $theme, --900), 50 --medium: (
118 ), 51 --bg: props.get(core.$transparent-colors, $theme, --300),
119 --medium: ( 52 --label: props.get(core.$transparent-colors, $theme, --500),
120 --bg: props.get(core.$transparent-colors, $theme, --300), 53 ),
121 --label: props.get(core.$transparent-colors, $theme, --500), 54 --quiet: (
122 ), 55 --bg: props.get(core.$transparent-colors, $theme, --300),
123 --quiet: ( 56 --label: props.get(core.$transparent-colors, $theme, --500),
124 --bg: props.get(core.$transparent-colors, $theme, --300), 57 ),
125 --label: props.get(core.$transparent-colors, $theme, --500), 58 --faint: (
126 ), 59 --bg: props.get(core.$transparent-colors, $theme, --200),
127 --faint: ( 60 --label: props.get(core.$transparent-colors, $theme, --400),
128 --bg: props.get(core.$transparent-colors, $theme, --200), 61 ),
129 --label: props.get(core.$transparent-colors, $theme, --400),
130 ),
131 ),
132 ) 62 )
133 ); 63 ));
134} 64}
135 65
136$themes-config: ( 66$themes-config: (
137 accent: --accent, 67 accent: --accent,
138 negative: --negative, 68 negative: --negative,
139) !default; 69) !default;
140 70
141$themes: props.def(--o-divider, (), "color"); 71$themes: props.def(--o-divider, (), 'color');
142 72
143@each $theme, $key in $themes-config { 73@each $theme, $key in $themes-config {
144 $themes: props.merge( 74 $themes: props.merge($themes, (
145 $themes, 75 --#{$theme}: (
146 ( 76 --bg: props.get(core.$theme, $key, --800),
147 --#{$theme}: ( 77 --label: props.get(core.$theme, $key, --1000),
148 --bg: props.get(core.$theme, $key, --800),
149 --label: props.get(core.$theme, $key, --1000),
150 )
151 ) 78 )
152 ); 79 ));
153} 80}
diff --git a/src/objects/_emoji.scss b/src/objects/_emoji.scss
index 0257b32..655e662 100644
--- a/src/objects/_emoji.scss
+++ b/src/objects/_emoji.scss
@@ -1,55 +1,49 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "icon.vars" as icon; 5@use 'icon.vars' as icon;
6 6
7@forward "emoji.vars"; 7@forward 'emoji.vars';
8@use "emoji.vars" as vars; 8@use 'emoji.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("emoji") { 13 @include bem.object('emoji') {
14 position: relative; 14 position: relative;
15 display: inline-block; 15 display: inline-block;
16 inline-size: calc(props.get(vars.$size)); 16 inline-size: calc(props.get(vars.$size));
17 block-size: calc(props.get(vars.$size)); 17 block-size: calc(props.get(vars.$size));
18 padding: calc(props.get(vars.$pad)); 18 padding: calc(props.get(vars.$pad));
19 margin: calc(-1 * props.get(vars.$pad)); 19 margin: calc(-1 * props.get(vars.$pad));
20 vertical-align: props.get(vars.$valign); 20 vertical-align: props.get(vars.$valign);
21 object-fit: contain; 21 object-fit: contain;
22 22
23 @include bem.modifier("icon") { 23 @include bem.modifier('icon') {
24 margin: calc( 24 margin: calc(-1 * props.get(vars.$pad) - .5 * (props.get(vars.$size) - props.get(icon.$size)));
25 -1 * props.get(vars.$pad) - 0.5 * (props.get(vars.$size) - props.get(icon.$size))
26 );
27 vertical-align: props.get(icon.$valign); 25 vertical-align: props.get(icon.$valign);
28 } 26 }
29 27
30 @each $mod, $size, $valign in vars.$sizes { 28 @each $mod, $size, $valign in vars.$sizes {
31 @include bem.modifier($mod) { 29 @include bem.modifier($mod) {
32 inline-size: props.get($size); 30 inline-size: props.get($size);
33 block-size: props.get($size); 31 block-size: props.get($size);
34 vertical-align: props.get($valign); 32 vertical-align: props.get($valign);
35 33
36 @include bem.modifier("icon") { 34 @include bem.modifier('icon') {
37 margin: calc( 35 margin: calc(-1 * props.get(vars.$pad) - .5 * (props.get($size) - props.get(icon.$size)));
38 -1 * props.get(vars.$pad) - 0.5 * (props.get($size) - props.get(icon.$size))
39 );
40 } 36 }
41 } 37 }
42 } 38 }
43 39
44 @include bem.modifier("zoomable") { 40 @include bem.modifier('zoomable') {
45 border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom)); 41 border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom));
46 transition: 42 transition: transform .2s ease, background-color .2s ease;
47 transform 0.2s ease,
48 background-color 0.2s ease;
49 43
50 &:hover { 44 &:hover {
51 background-color: props.get(vars.$bg-color); 45 background-color: props.get(vars.$bg-color);
52 transform: scale(props.get(vars.$zoom)); 46 transform: scale(props.get(vars.$zoom));
53 } 47 }
54 } 48 }
55 } 49 }
diff --git a/src/objects/_emoji.vars.scss b/src/objects/_emoji.vars.scss
index 1c2a0e2..cf940cf 100644
--- a/src/objects/_emoji.vars.scss
+++ b/src/objects/_emoji.vars.scss
@@ -1,26 +1,26 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$size: props.def(--o-emoji--size, calc(1 / 14 * 18em)) !default; 5$size: props.def(--o-emoji--size, calc(1 / 14 * 18em)) !default;
6$pad: props.def(--o-emoji--pad, 0.3em) !default; 6$pad: props.def(--o-emoji--pad, .3em) !default;
7$rounding: props.def(--o-emoji--rounding, props.get(core.$rounding--sm)) !default; 7$rounding: props.def(--o-emoji--rounding, props.get(core.$rounding--sm)) !default;
8$zoom: props.def(--o-emoji--zoom, 3) !default; 8$zoom: props.def(--o-emoji--zoom, 3) !default;
9$valign: props.def(--o-emoji--valign, -0.25em) !default; 9$valign: props.def(--o-emoji--valign, -.25em) !default;
10 10
11$size--125: props.def(--o-emoji--125--size, calc(1 / 14 * 23em)) !default; 11$size--125: props.def(--o-emoji--125--size, calc(1 / 14 * 23em)) !default;
12$valign--125: props.def(--o-emoji--125--valign, -0.45em) !default; 12$valign--125: props.def(--o-emoji--125--valign, -.45em) !default;
13 13
14$size--150: props.def(--o-emoji--150--size, calc(1 / 14 * 28em)) !default; 14$size--150: props.def(--o-emoji--150--size, calc(1 / 14 * 28em)) !default;
15$valign--150: props.def(--o-emoji--150--valign, -0.65em) !default; 15$valign--150: props.def(--o-emoji--150--valign, -.65em) !default;
16 16
17$size--200: props.def(--o-emoji--200--size, calc(1 / 14 * 38em)) !default; 17$size--200: props.def(--o-emoji--200--size, calc(1 / 14 * 38em)) !default;
18$valign--200: props.def(--o-emoji--200--valign, -1em) !default; 18$valign--200: props.def(--o-emoji--200--valign, -1em) !default;
19 19
20$sizes: ( 20$sizes: (
21 "125" $size--125 $valign--125, 21 '125' $size--125 $valign--125,
22 "150" $size--150 $valign--150, 22 '150' $size--150 $valign--150,
23 "200" $size--200 $valign--200 23 '200' $size--200 $valign--200,
24) !default; 24) !default;
25 25
26$bg-color: props.def(--o-emoji--bg-color, props.get(core.$theme, --border-mute), "color") !default; 26$bg-color: props.def(--o-emoji--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
diff --git a/src/objects/_field-label.scss b/src/objects/_field-label.scss
index fb664b4..23875f5 100644
--- a/src/objects/_field-label.scss
+++ b/src/objects/_field-label.scss
@@ -1,74 +1,74 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "field-label.vars"; 6@forward 'field-label.vars';
7@use "field-label.vars" as vars; 7@use 'field-label.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("field-label") { 12 @include bem.object('field-label') {
13 @include bem.elem("label") { 13 @include bem.elem('label') {
14 display: block; 14 display: block;
15 flex: 0 0 auto; 15 flex: 0 0 auto;
16 padding-inline-end: props.get(vars.$spacing-i); 16 padding-inline-end: props.get(vars.$spacing-i);
17 font-size: props.get(vars.$label-font-size); 17 font-size: props.get(vars.$label-font-size);
18 font-weight: 400; 18 font-weight: 400;
19 line-height: 1.3; 19 line-height: 1.3;
20 color: props.get(vars.$label-color); 20 color: props.get(vars.$label-color);
21 21
22 @include bem.next-elem("content") { 22 @include bem.next-elem('content') {
23 margin-block-start: props.get(vars.$spacing-b); 23 margin-block-start: props.get(vars.$spacing-b);
24 } 24 }
25 } 25 }
26 26
27 @include bem.elem("content") { 27 @include bem.elem('content') {
28 display: block; 28 display: block;
29 flex: 1 1 auto; 29 flex: 1 1 auto;
30 } 30 }
31 31
32 @include bem.elem("hint") { 32 @include bem.elem('hint') {
33 display: block; 33 display: block;
34 margin-block-start: props.get(vars.$spacing-b); 34 margin-block-start: props.get(vars.$spacing-b);
35 font-size: props.get(vars.$hint-font-size); 35 font-size: props.get(vars.$hint-font-size);
36 color: props.get(vars.$hint-color); 36 color: props.get(vars.$hint-color);
37 } 37 }
38 38
39 @include bem.is("invalid") { 39 @include bem.is('invalid') {
40 @include bem.elem("hint") { 40 @include bem.elem('hint') {
41 color: props.get(vars.$error-hint-color); 41 color: props.get(vars.$error-hint-color);
42 } 42 }
43 } 43 }
44 44
45 @include bem.is("disabled") { 45 @include bem.is('disabled') {
46 @include bem.elem("label", "hint") { 46 @include bem.elem('label', 'hint') {
47 color: props.get(vars.$disabled-color); 47 color: props.get(vars.$disabled-color);
48 } 48 }
49 } 49 }
50 50
51 @include bem.modifier("align-start", "align-end") { 51 @include bem.modifier('align-start', 'align-end') {
52 display: flex; 52 display: flex;
53 align-items: baseline; 53 align-items: baseline;
54 54
55 @include bem.elem("label") { 55 @include bem.elem('label') {
56 display: inline-block; 56 display: inline-block;
57 57
58 @include bem.next-elem("content") { 58 @include bem.next-elem('content') {
59 margin-block-start: 0; 59 margin-block-start: 0;
60 } 60 }
61 } 61 }
62 } 62 }
63 63
64 @include bem.modifier("align-start") { 64 @include bem.modifier('align-start') {
65 @include bem.elem("label") { 65 @include bem.elem('label') {
66 text-align: start; 66 text-align: start;
67 } 67 }
68 } 68 }
69 69
70 @include bem.modifier("align-end") { 70 @include bem.modifier('align-end') {
71 @include bem.elem("label") { 71 @include bem.elem('label') {
72 text-align: end; 72 text-align: end;
73 } 73 }
74 } 74 }
diff --git a/src/objects/_field-label.vars.scss b/src/objects/_field-label.vars.scss
index 4588e70..5bd4547 100644
--- a/src/objects/_field-label.vars.scss
+++ b/src/objects/_field-label.vars.scss
@@ -1,34 +1,12 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$spacing-i: props.def(--o-field-label--spacing-i, props.get(core.$size--150)) !default; 4$spacing-i: props.def(--o-field-label--spacing-i, props.get(core.$size--150)) !default;
5$spacing-b: props.def(--o-field-label--spacing-b, props.get(core.$size--85)) !default; 5$spacing-b: props.def(--o-field-label--spacing-b, props.get(core.$size--85)) !default;
6$label-font-size: props.def( 6$label-font-size: props.def(--o-field-label--label-font-size, props.get(core.$font-size--75)) !default;
7 --o-field-label--label-font-size, 7$hint-font-size: props.def(--o-field-label--hint-font-size, props.get(core.$font-size--75)) !default;
8 props.get(core.$font-size--75)
9) !default;
10$hint-font-size: props.def(
11 --o-field-label--hint-font-size,
12 props.get(core.$font-size--75)
13) !default;
14 8
15$label-color: props.def( 9$label-color: props.def(--o-field-label--label-color, props.get(core.$theme, --text-mute), 'color') !default;
16 --o-field-label--label-color, 10$hint-color: props.def(--o-field-label--hint-color, props.get(core.$theme, --text-mute), 'color') !default;
17 props.get(core.$theme, --text-mute), 11$error-hint-color: props.def(--o-field-label--error-hint-color, props.get(core.$theme, --negative, --900), 'color') !default;
18 "color" 12$disabled-color: props.def(--o-field-label--disabled-color, props.get(core.$theme, --text-disabled), 'color') !default;
19) !default;
20$hint-color: props.def(
21 --o-field-label--hint-color,
22 props.get(core.$theme, --text-mute),
23 "color"
24) !default;
25$error-hint-color: props.def(
26 --o-field-label--error-hint-color,
27 props.get(core.$theme, --negative, --900),
28 "color"
29) !default;
30$disabled-color: props.def(
31 --o-field-label--disabled-color,
32 props.get(core.$theme, --text-disabled),
33 "color"
34) !default;
diff --git a/src/objects/_figure.scss b/src/objects/_figure.scss
index d3e37b3..04b9bdf 100644
--- a/src/objects/_figure.scss
+++ b/src/objects/_figure.scss
@@ -1,25 +1,25 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "figure.vars"; 6@forward 'figure.vars';
7@use "figure.vars" as vars; 7@use 'figure.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("figure") { 12 @include bem.object('figure') {
13 @include bem.elem("caption") { 13 @include bem.elem('caption') {
14 padding-block: props.get(vars.$pad-b); 14 padding-block: props.get(vars.$pad-b);
15 font-size: props.get(vars.$font-size); 15 font-size: props.get(vars.$font-size);
16 color: props.get(vars.$text-color); 16 color: props.get(vars.$text-color);
17 border-block-end: props.get(vars.$border-width) solid props.get(vars.$border-color); 17 border-block-end: props.get(vars.$border-width) solid props.get(vars.$border-color);
18 18
19 &::before { 19 &::before {
20 display: block; 20 display: block;
21 margin-block: -100em 100em; 21 margin-block: -100em 100em;
22 content: ""; 22 content: '';
23 } 23 }
24 } 24 }
25 } 25 }
diff --git a/src/objects/_figure.vars.scss b/src/objects/_figure.vars.scss
index 936932d..3de3406 100644
--- a/src/objects/_figure.vars.scss
+++ b/src/objects/_figure.vars.scss
@@ -1,17 +1,9 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$pad-b: props.def(--o-figure--pad-b, props.get(core.$size--100)) !default; 4$pad-b: props.def(--o-figure--pad-b, props.get(core.$size--100)) !default;
5$border-width: props.def(--o-figure--border-width, props.get(core.$border-width--thin)) !default; 5$border-width: props.def(--o-figure--border-width, props.get(core.$border-width--thin)) !default;
6$font-size: props.def(--o-figure--font-size, props.get(core.$font-size--100)) !default; 6$font-size: props.def(--o-figure--font-size, props.get(core.$font-size--100)) !default;
7 7
8$text-color: props.def( 8$text-color: props.def(--o-figure--text-color, props.get(core.$theme, --text-mute-more), 'color') !default;
9 --o-figure--text-color, 9$border-color: props.def(--o-figure--border-color, props.get(core.$theme, --border), 'color') !default;
10 props.get(core.$theme, --text-mute-more),
11 "color"
12) !default;
13$border-color: props.def(
14 --o-figure--border-color,
15 props.get(core.$theme, --border),
16 "color"
17) !default;
diff --git a/src/objects/_heading.scss b/src/objects/_heading.scss
index 87a6269..0e8392e 100644
--- a/src/objects/_heading.scss
+++ b/src/objects/_heading.scss
@@ -1,70 +1,64 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "heading.vars"; 8@forward 'heading.vars';
9@use "heading.vars" as vars; 9@use 'heading.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.object("heading") { 14 @include bem.object('heading') {
15 display: block; 15 display: block;
16 margin-block-start: props.get(vars.$margin-bs); 16 margin-block-start: props.get(vars.$margin-bs);
17 font-family: props.get(vars.$font-family); 17 font-family: props.get(vars.$font-family);
18 font-weight: props.get(vars.$font-weight); 18 font-weight: props.get(vars.$font-weight);
19 font-feature-settings: props.get(vars.$feature-settings); 19 font-feature-settings: props.get(vars.$feature-settings);
20 line-height: props.get(vars.$line-height); 20 line-height: props.get(vars.$line-height);
21 color: props.get(vars.$text-color); 21 color: props.get(vars.$text-color);
22 text-transform: props.get(vars.$text-transform); 22 text-transform: props.get(vars.$text-transform);
23 letter-spacing: normal; 23 letter-spacing: normal;
24 24
25 & + & { 25 & + & {
26 margin-block-start: props.get(vars.$margin-bs-sibling); 26 margin-block-start: props.get(vars.$margin-bs-sibling);
27 } 27 }
28 28
29 @include bem.elem("highlight") { 29 @include bem.elem('highlight') {
30 background-image: linear-gradient( 30 background-image: linear-gradient(to top,
31 to top, 31 transparent props.get(vars.$bg-start),
32 transparent props.get(vars.$bg-start), 32 props.get(vars.$bg-color) props.get(vars.$bg-start),
33 props.get(vars.$bg-color) props.get(vars.$bg-start), 33 props.get(vars.$bg-color) props.get(vars.$bg-end),
34 props.get(vars.$bg-color) props.get(vars.$bg-end), 34 transparent props.get(vars.$bg-end));
35 transparent props.get(vars.$bg-end)
36 );
37 } 35 }
38 36
39 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, 37 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$sizes {
40 $feature-settings, $text-transform, $text-color in vars.$sizes
41 {
42 @include bem.modifier($mod) { 38 @include bem.modifier($mod) {
43 font-family: props.get($font-family); 39 font-family: props.get($font-family);
44 font-size: props.get($font-size); 40 font-size: props.get($font-size);
45 font-weight: props.get($font-weight); 41 font-weight: props.get($font-weight);
46 font-feature-settings: props.get($feature-settings); 42 font-feature-settings: props.get($feature-settings);
47 line-height: props.get($line-height); 43 line-height: props.get($line-height);
48 color: props.get($text-color); 44 color: props.get($text-color);
49 text-transform: props.get($text-transform); 45 text-transform: props.get($text-transform);
50 letter-spacing: props.get($letter-spacing); 46 letter-spacing: props.get($letter-spacing);
51 } 47 }
52 } 48 }
53 49
54 @include bem.modifier("display") { 50 @include bem.modifier('display') {
55 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, 51 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$display--sizes {
56 $feature-settings, $text-transform, $text-color in vars.$display--sizes
57 {
58 @include bem.modifier($mod) { 52 @include bem.modifier($mod) {
59 font-family: props.get($font-family); 53 font-family: props.get($font-family);
60 font-size: props.get($font-size); 54 font-size: props.get($font-size);
61 font-weight: props.get($font-weight); 55 font-weight: props.get($font-weight);
62 font-feature-settings: props.get($feature-settings); 56 font-feature-settings: props.get($feature-settings);
63 line-height: props.get($line-height); 57 line-height: props.get($line-height);
64 color: props.get($text-color); 58 color: props.get($text-color);
65 text-transform: props.get($text-transform); 59 text-transform: props.get($text-transform);
66 letter-spacing: props.get($letter-spacing); 60 letter-spacing: props.get($letter-spacing);
67 transform: translateX(props.get(vars.$offset)); 61 transform: translateX(props.get(vars.$offset));
68 } 62 }
69 } 63 }
70 } 64 }
@@ -79,26 +73,18 @@
79 } 73 }
80 } 74 }
81 75
82 @include bem.elem("highlight") { 76 @include bem.elem('highlight') {
83 background-image: linear-gradient( 77 background-image: linear-gradient(to top,
84 to top, 78 transparent props.get(vars.$bg-start),
85 transparent props.get(vars.$bg-start), 79 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start),
86 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start), 80 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end),
87 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end), 81 transparent props.get(vars.$bg-end));
88 transparent props.get(vars.$bg-end)
89 );
90 } 82 }
91 83
92 @include bem.modifier("display") { 84 @include bem.modifier('display') {
93 @each $mod, $value in vars.$sizes { 85 @each $mod, $value in vars.$sizes {
94 @include bem.modifier($mod) { 86 @include bem.modifier($mod) {
95 color: props.get( 87 color: props.get(vars.$static-themes, $theme, --display, --#{$mod}, --text-color);
96 vars.$static-themes,
97 $theme,
98 --display,
99 --#{$mod},
100 --text-color
101 );
102 } 88 }
103 } 89 }
104 } 90 }
diff --git a/src/objects/_heading.vars.scss b/src/objects/_heading.vars.scss
index 8943622..4267b8c 100644
--- a/src/objects/_heading.vars.scss
+++ b/src/objects/_heading.vars.scss
@@ -1,472 +1,208 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$offset: props.def(--o-heading--offset, -0.02em) !default; 6$offset: props.def(--o-heading--offset, -.02em) !default;
7$margin-bs: props.def(--o-heading--margin-bs, props.get(core.$size--700)) !default; 7$margin-bs: props.def(--o-heading--margin-bs, props.get(core.$size--700)) !default;
8$margin-bs-sibling: props.def(--o-heading--margin-bs-sibling, props.get(core.$size--325)) !default; 8$margin-bs-sibling: props.def(--o-heading--margin-bs-sibling, props.get(core.$size--325)) !default;
9 9
10$text-color: props.def( 10$text-color: props.def(--o-heading--text-color, props.get(core.$theme, --heading), 'color') !default;
11 --o-heading--text-color, 11$bg-color: props.def(--o-heading--bg-color, props.get(core.$theme, --base, --50), 'color') !default;
12 props.get(core.$theme, --heading),
13 "color"
14) !default;
15$bg-color: props.def(--o-heading--bg-color, props.get(core.$theme, --base, --50), "color") !default;
16 12
17$text-color--xxl: props.def( 13$text-color--xxl: props.def(--o-heading--xxl--text-color, props.get(core.$theme, --heading), 'color') !default;
18 --o-heading--xxl--text-color, 14$text-color--xl: props.def(--o-heading--xl--text-color, props.get($text-color--xxl), 'color') !default;
19 props.get(core.$theme, --heading), 15$text-color--lg: props.def(--o-heading--lg--text-color, props.get($text-color--xxl), 'color') !default;
20 "color" 16$text-color--md: props.def(--o-heading--md--text-color, props.get($text-color--xxl), 'color') !default;
21) !default; 17$text-color--sm: props.def(--o-heading--sm--text-color, props.get(core.$theme, --text-mute-more), 'color') !default;
22$text-color--xl: props.def( 18$text-color--xs: props.def(--o-heading--xs--text-color, props.get($text-color--sm), 'color') !default;
23 --o-heading--xl--text-color,
24 props.get($text-color--xxl),
25 "color"
26) !default;
27$text-color--lg: props.def(
28 --o-heading--lg--text-color,
29 props.get($text-color--xxl),
30 "color"
31) !default;
32$text-color--md: props.def(
33 --o-heading--md--text-color,
34 props.get($text-color--xxl),
35 "color"
36) !default;
37$text-color--sm: props.def(
38 --o-heading--sm--text-color,
39 props.get(core.$theme, --text-mute-more),
40 "color"
41) !default;
42$text-color--xs: props.def(
43 --o-heading--xs--text-color,
44 props.get($text-color--sm),
45 "color"
46) !default;
47 19
48$display--text-color--xxl: props.def( 20$display--text-color--xxl: props.def(--o-heading--display--xxl--text-color, props.get(core.$theme, --heading), 'color') !default;
49 --o-heading--display--xxl--text-color, 21$display--text-color--xl: props.def(--o-heading--display--xl--text-color, props.get($display--text-color--xxl), 'color') !default;
50 props.get(core.$theme, --heading), 22$display--text-color--lg: props.def(--o-heading--display--lg--text-color, props.get($display--text-color--xxl), 'color') !default;
51 "color" 23$display--text-color--md: props.def(--o-heading--display--md--text-color, props.get($display--text-color--xxl), 'color') !default;
52) !default; 24$display--text-color--sm: props.def(--o-heading--display--sm--text-color, props.get($display--text-color--xxl), 'color') !default;
53$display--text-color--xl: props.def( 25$display--text-color--xs: props.def(--o-heading--display--xs--text-color, props.get(core.$theme, --text-mute-more), 'color') !default;
54 --o-heading--display--xl--text-color,
55 props.get($display--text-color--xxl),
56 "color"
57) !default;
58$display--text-color--lg: props.def(
59 --o-heading--display--lg--text-color,
60 props.get($display--text-color--xxl),
61 "color"
62) !default;
63$display--text-color--md: props.def(
64 --o-heading--display--md--text-color,
65 props.get($display--text-color--xxl),
66 "color"
67) !default;
68$display--text-color--sm: props.def(
69 --o-heading--display--sm--text-color,
70 props.get($display--text-color--xxl),
71 "color"
72) !default;
73$display--text-color--xs: props.def(
74 --o-heading--display--xs--text-color,
75 props.get(core.$theme, --text-mute-more),
76 "color"
77) !default;
78 26
79$bg-start: props.def(--o-heading--bg-start, 0.05em) !default; 27$bg-start: props.def(--o-heading--bg-start, .05em) !default;
80$bg-end: props.def(--o-heading--bg-end, 0.5em) !default; 28$bg-end: props.def(--o-heading--bg-end, .5em) !default;
81 29
82$font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default; 30$font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default;
83$line-height: props.def( 31$line-height: props.def(--o-heading--line-height, props.get(core.$font--standard--line-height)) !default;
84 --o-heading--line-height, 32$font-weight: props.def(--o-heading--font-weight, bold) !default;
85 props.get(core.$font--standard--line-height) 33$feature-settings: props.def(--o-heading--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
86) !default; 34$text-transform: props.def(--o-heading--text-transform, none) !default;
87$font-weight: props.def(--o-heading--font-weight, bold) !default;
88$feature-settings: props.def(
89 --o-heading--feature-settings,
90 props.get(core.$font--standard--feature-settings)
91) !default;
92$text-transform: props.def(--o-heading--text-transform, none) !default;
93 35
94$font-family--xxl: props.def( 36$font-family--xxl: props.def(--o-heading--xxl--font-family, props.get(core.$font--standard--family)) !default;
95 --o-heading--xxl--font-family, 37$line-height--xxl: props.def(--o-heading--xxl--line-height, props.get(core.$font--standard--line-height)) !default;
96 props.get(core.$font--standard--family) 38$font-size--xxl: props.def(--o-heading--xxl--font-size, props.get(core.$font-size--300)) !default;
97) !default; 39$font-weight--xxl: props.def(--o-heading--xxl--font-weight, bold) !default;
98$line-height--xxl: props.def( 40$letter-spacing--xxl: props.def(--o-heading--xxl--letter-spacing, 0) !default;
99 --o-heading--xxl--line-height, 41$feature-settings--xxl: props.def(--o-heading--xxl--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
100 props.get(core.$font--standard--line-height) 42$text-transform--xxl: props.def(--o-heading--xxl--text-transform, none) !default;
101) !default;
102$font-size--xxl: props.def(--o-heading--xxl--font-size, props.get(core.$font-size--300)) !default;
103$font-weight--xxl: props.def(--o-heading--xxl--font-weight, bold) !default;
104$letter-spacing--xxl: props.def(--o-heading--xxl--letter-spacing, 0) !default;
105$feature-settings--xxl: props.def(
106 --o-heading--xxl--feature-settings,
107 props.get(core.$font--standard--feature-settings)
108) !default;
109$text-transform--xxl: props.def(--o-heading--xxl--text-transform, none) !default;
110 43
111$font-family--xl: props.def( 44$font-family--xl: props.def(--o-heading--xl--font-family, props.get(core.$font--standard--family)) !default;
112 --o-heading--xl--font-family, 45$line-height--xl: props.def(--o-heading--xl--line-height, props.get(core.$font--standard--line-height)) !default;
113 props.get(core.$font--standard--family) 46$font-size--xl: props.def(--o-heading--xl--font-size, props.get(core.$font-size--200)) !default;
114) !default; 47$font-weight--xl: props.def(--o-heading--xl--font-weight, bold) !default;
115$line-height--xl: props.def( 48$letter-spacing--xl: props.def(--o-heading--xl--letter-spacing, 0) !default;
116 --o-heading--xl--line-height, 49$feature-settings--xl: props.def(--o-heading--xl--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
117 props.get(core.$font--standard--line-height) 50$text-transform--xl: props.def(--o-heading--xl--text-transform, none) !default;
118) !default;
119$font-size--xl: props.def(--o-heading--xl--font-size, props.get(core.$font-size--200)) !default;
120$font-weight--xl: props.def(--o-heading--xl--font-weight, bold) !default;
121$letter-spacing--xl: props.def(--o-heading--xl--letter-spacing, 0) !default;
122$feature-settings--xl: props.def(
123 --o-heading--xl--feature-settings,
124 props.get(core.$font--standard--feature-settings)
125) !default;
126$text-transform--xl: props.def(--o-heading--xl--text-transform, none) !default;
127 51
128$font-family--lg: props.def( 52$font-family--lg: props.def(--o-heading--lg--font-family, props.get(core.$font--standard--family)) !default;
129 --o-heading--lg--font-family, 53$line-height--lg: props.def(--o-heading--lg--line-height, props.get(core.$font--standard--line-height)) !default;
130 props.get(core.$font--standard--family) 54$font-size--lg: props.def(--o-heading--lg--font-size, props.get(core.$font-size--150)) !default;
131) !default; 55$font-weight--lg: props.def(--o-heading--lg--font-weight, bold) !default;
132$line-height--lg: props.def( 56$letter-spacing--lg: props.def(--o-heading--lg--letter-spacing, 0) !default;
133 --o-heading--lg--line-height, 57$feature-settings--lg: props.def(--o-heading--lg--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
134 props.get(core.$font--standard--line-height) 58$text-transform--lg: props.def(--o-heading--lg--text-transform, none) !default;
135) !default;
136$font-size--lg: props.def(--o-heading--lg--font-size, props.get(core.$font-size--150)) !default;
137$font-weight--lg: props.def(--o-heading--lg--font-weight, bold) !default;
138$letter-spacing--lg: props.def(--o-heading--lg--letter-spacing, 0) !default;
139$feature-settings--lg: props.def(
140 --o-heading--lg--feature-settings,
141 props.get(core.$font--standard--feature-settings)
142) !default;
143$text-transform--lg: props.def(--o-heading--lg--text-transform, none) !default;
144 59
145$font-family--md: props.def( 60$font-family--md: props.def(--o-heading--md--font-family, props.get(core.$font--standard--family)) !default;
146 --o-heading--md--font-family, 61$line-height--md: props.def(--o-heading--md--line-height, props.get(core.$font--standard--line-height)) !default;
147 props.get(core.$font--standard--family) 62$font-size--md: props.def(--o-heading--md--font-size, props.get(core.$font-size--100)) !default;
148) !default; 63$font-weight--md: props.def(--o-heading--md--font-weight, bold) !default;
149$line-height--md: props.def( 64$letter-spacing--md: props.def(--o-heading--md--letter-spacing, 0) !default;
150 --o-heading--md--line-height, 65$feature-settings--md: props.def(--o-heading--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
151 props.get(core.$font--standard--line-height) 66$text-transform--md: props.def(--o-heading--md--text-transform, none) !default;
152) !default;
153$font-size--md: props.def(--o-heading--md--font-size, props.get(core.$font-size--100)) !default;
154$font-weight--md: props.def(--o-heading--md--font-weight, bold) !default;
155$letter-spacing--md: props.def(--o-heading--md--letter-spacing, 0) !default;
156$feature-settings--md: props.def(
157 --o-heading--md--feature-settings,
158 props.get(core.$font--standard--feature-settings)
159) !default;
160$text-transform--md: props.def(--o-heading--md--text-transform, none) !default;
161 67
162$font-family--sm: props.def( 68$font-family--sm: props.def(--o-heading--sm--font-family, props.get(core.$font--standard--family)) !default;
163 --o-heading--sm--font-family, 69$line-height--sm: props.def(--o-heading--sm--line-height, props.get(core.$font--standard--line-height)) !default;
164 props.get(core.$font--standard--family) 70$font-size--sm: props.def(--o-heading--sm--font-size, props.get(core.$font-size--100)) !default;
165) !default; 71$font-weight--sm: props.def(--o-heading--sm--font-weight, normal) !default;
166$line-height--sm: props.def( 72$letter-spacing--sm: props.def(--o-heading--sm--letter-spacing, 0) !default;
167 --o-heading--sm--line-height, 73$feature-settings--sm: props.def(--o-heading--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
168 props.get(core.$font--standard--line-height) 74$text-transform--sm: props.def(--o-heading--sm--text-transform, none) !default;
169) !default;
170$font-size--sm: props.def(--o-heading--sm--font-size, props.get(core.$font-size--100)) !default;
171$font-weight--sm: props.def(--o-heading--sm--font-weight, normal) !default;
172$letter-spacing--sm: props.def(--o-heading--sm--letter-spacing, 0) !default;
173$feature-settings--sm: props.def(
174 --o-heading--sm--feature-settings,
175 props.get(core.$font--standard--feature-settings)
176) !default;
177$text-transform--sm: props.def(--o-heading--sm--text-transform, none) !default;
178 75
179$font-family--xs: props.def( 76$font-family--xs: props.def(--o-heading--xs--font-family, props.get(core.$font--standard--family)) !default;
180 --o-heading--xs--font-family, 77$line-height--xs: props.def(--o-heading--xs--line-height, props.get(core.$font--standard--line-height)) !default;
181 props.get(core.$font--standard--family) 78$font-size--xs: props.def(--o-heading--xs--font-size, props.get(core.$font-size--50)) !default;
182) !default; 79$font-weight--xs: props.def(--o-heading--xs--font-weight, normal) !default;
183$line-height--xs: props.def( 80$letter-spacing--xs: props.def(--o-heading--xs--letter-spacing, 1px) !default;
184 --o-heading--xs--line-height, 81$feature-settings--xs: props.def(--o-heading--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
185 props.get(core.$font--standard--line-height) 82$text-transform--xs: props.def(--o-heading--xs--text-transform, none) !default;
186) !default;
187$font-size--xs: props.def(--o-heading--xs--font-size, props.get(core.$font-size--50)) !default;
188$font-weight--xs: props.def(--o-heading--xs--font-weight, normal) !default;
189$letter-spacing--xs: props.def(--o-heading--xs--letter-spacing, 1px) !default;
190$feature-settings--xs: props.def(
191 --o-heading--xs--feature-settings,
192 props.get(core.$font--standard--feature-settings)
193) !default;
194$text-transform--xs: props.def(--o-heading--xs--text-transform, none) !default;
195 83
196$sizes: ( 84$sizes: (
197 "xs" $font-family--xs $line-height--xs $font-size--xs $font-weight--xs $letter-spacing--xs 85 'xs' $font-family--xs $line-height--xs $font-size--xs $font-weight--xs $letter-spacing--xs $feature-settings--xs $text-transform--xs $text-color--xs,
198 $feature-settings--xs $text-transform--xs $text-color--xs, 86 'sm' $font-family--sm $line-height--sm $font-size--sm $font-weight--sm $letter-spacing--sm $feature-settings--sm $text-transform--sm $text-color--sm,
199 "sm" $font-family--sm $line-height--sm $font-size--sm $font-weight--sm $letter-spacing--sm 87 'md' $font-family--md $line-height--md $font-size--md $font-weight--md $letter-spacing--md $feature-settings--md $text-transform--md $text-color--md,
200 $feature-settings--sm $text-transform--sm $text-color--sm, 88 'lg' $font-family--lg $line-height--lg $font-size--lg $font-weight--lg $letter-spacing--lg $feature-settings--lg $text-transform--lg $text-color--lg,
201 "md" $font-family--md $line-height--md $font-size--md $font-weight--md $letter-spacing--md 89 'xl' $font-family--xl $line-height--xl $font-size--xl $font-weight--xl $letter-spacing--xl $feature-settings--xl $text-transform--xl $text-color--xl,
202 $feature-settings--md $text-transform--md $text-color--md, 90 'xxl' $font-family--xxl $line-height--xxl $font-size--xxl $font-weight--xxl $letter-spacing--xxl $feature-settings--xxl $text-transform--xxl $text-color--xxl,
203 "lg" $font-family--lg $line-height--lg $font-size--lg $font-weight--lg $letter-spacing--lg
204 $feature-settings--lg $text-transform--lg $text-color--lg,
205 "xl" $font-family--xl $line-height--xl $font-size--xl $font-weight--xl $letter-spacing--xl
206 $feature-settings--xl $text-transform--xl $text-color--xl,
207 "xxl" $font-family--xxl $line-height--xxl $font-size--xxl $font-weight--xxl $letter-spacing--xxl
208 $feature-settings--xxl $text-transform--xxl $text-color--xxl
209) !default; 91) !default;
210 92
211$display--font-family--xxl: props.def( 93$display--font-family--xxl: props.def(--o-heading--display--xxl--font-family, props.get(core.$font--headline--family)) !default;
212 --o-heading--display--xxl--font-family, 94$display--line-height--xxl: props.def(--o-heading--display--xxl--line-height, props.get(core.$font--headline--line-height)) !default;
213 props.get(core.$font--headline--family) 95$display--font-size--xxl: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--1100)) !default;
214) !default; 96$display--font-weight--xxl: props.def(--o-heading--display--xxl--font-weight, props.get(core.$font--headline--weight)) !default;
215$display--line-height--xxl: props.def( 97$display--letter-spacing--xxl: props.def(--o-heading--display--xxl--letter-spacing, 0) !default;
216 --o-heading--display--xxl--line-height, 98$display--feature-settings--xxl: props.def(--o-heading--display--xxl--feature-settings, props.get(core.$font--headline--feature-settings)) !default;
217 props.get(core.$font--headline--line-height) 99$display--text-transform--xxl: props.def(--o-heading--display--xxl--text-transform, none) !default;
218) !default;
219$display--font-size--xxl: props.def(
220 --o-heading--display--xxl--font-size,
221 props.get(core.$font-size--1100)
222) !default;
223$display--font-weight--xxl: props.def(
224 --o-heading--display--xxl--font-weight,
225 props.get(core.$font--headline--weight)
226) !default;
227$display--letter-spacing--xxl: props.def(--o-heading--display--xxl--letter-spacing, 0) !default;
228$display--feature-settings--xxl: props.def(
229 --o-heading--display--xxl--feature-settings,
230 props.get(core.$font--headline--feature-settings)
231) !default;
232$display--text-transform--xxl: props.def(--o-heading--display--xxl--text-transform, none) !default;
233 100
234$display--font-family--xl: props.def( 101$display--font-family--xl: props.def(--o-heading--display--xl--font-family, props.get(core.$font--headline--family)) !default;
235 --o-heading--display--xl--font-family, 102$display--line-height--xl: props.def(--o-heading--display--xl--line-height, props.get(core.$font--headline--line-height)) !default;
236 props.get(core.$font--headline--family) 103$display--font-size--xl: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--700)) !default;
237) !default; 104$display--font-weight--xl: props.def(--o-heading--display--xl--font-weight, props.get(core.$font--headline--weight)) !default;
238$display--line-height--xl: props.def( 105$display--letter-spacing--xl: props.def(--o-heading--display--xl--letter-spacing, 0) !default;
239 --o-heading--display--xl--line-height, 106$display--feature-settings--xl: props.def(--o-heading--display--xl--feature-settings, props.get(core.$font--headline--feature-settings)) !default;
240 props.get(core.$font--headline--line-height) 107$display--text-transform--xl: props.def(--o-heading--display--xl--text-transform, none) !default;
241) !default;
242$display--font-size--xl: props.def(
243 --o-heading--display--xl--font-size,
244 props.get(core.$font-size--700)
245) !default;
246$display--font-weight--xl: props.def(
247 --o-heading--display--xl--font-weight,
248 props.get(core.$font--headline--weight)
249) !default;
250$display--letter-spacing--xl: props.def(--o-heading--display--xl--letter-spacing, 0) !default;
251$display--feature-settings--xl: props.def(
252 --o-heading--display--xl--feature-settings,
253 props.get(core.$font--headline--feature-settings)
254) !default;
255$display--text-transform--xl: props.def(--o-heading--display--xl--text-transform, none) !default;
256 108
257$display--font-family--lg: props.def( 109$display--font-family--lg: props.def(--o-heading--display--lg--font-family, props.get(core.$font--headline--family)) !default;
258 --o-heading--display--lg--font-family, 110$display--line-height--lg: props.def(--o-heading--display--lg--line-height, props.get(core.$font--headline--line-height)) !default;
259 props.get(core.$font--headline--family) 111$display--font-size--lg: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--300)) !default;
260) !default; 112$display--font-weight--lg: props.def(--o-heading--display--lg--font-weight, props.get(core.$font--headline--weight)) !default;
261$display--line-height--lg: props.def( 113$display--letter-spacing--lg: props.def(--o-heading--display--lg--letter-spacing, 1px) !default;
262 --o-heading--display--lg--line-height, 114$display--feature-settings--lg: props.def(--o-heading--display--lg--feature-settings, props.get(core.$font--headline--feature-settings)) !default;
263 props.get(core.$font--headline--line-height) 115$display--text-transform--lg: props.def(--o-heading--display--lg--text-transform, uppercase) !default;
264) !default;
265$display--font-size--lg: props.def(
266 --o-heading--display--lg--font-size,
267 props.get(core.$font-size--300)
268) !default;
269$display--font-weight--lg: props.def(
270 --o-heading--display--lg--font-weight,
271 props.get(core.$font--headline--weight)
272) !default;
273$display--letter-spacing--lg: props.def(--o-heading--display--lg--letter-spacing, 1px) !default;
274$display--feature-settings--lg: props.def(
275 --o-heading--display--lg--feature-settings,
276 props.get(core.$font--headline--feature-settings)
277) !default;
278$display--text-transform--lg: props.def(
279 --o-heading--display--lg--text-transform,
280 uppercase
281) !default;
282 116
283$display--font-family--md: props.def( 117$display--font-family--md: props.def(--o-heading--display--md--font-family, props.get(core.$font--standard--family)) !default;
284 --o-heading--display--md--font-family, 118$display--line-height--md: props.def(--o-heading--display--md--line-height, props.get(core.$font--standard--line-height)) !default;
285 props.get(core.$font--standard--family) 119$display--font-size--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--150)) !default;
286) !default; 120$display--font-weight--md: props.def(--o-heading--display--md--font-weight, bold) !default;
287$display--line-height--md: props.def( 121$display--letter-spacing--md: props.def(--o-heading--display--md--letter-spacing, 0) !default;
288 --o-heading--display--md--line-height, 122$display--feature-settings--md: props.def(--o-heading--display--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
289 props.get(core.$font--standard--line-height) 123$display--text-transform--md: props.def(--o-heading--display--md--text-transform, none) !default;
290) !default;
291$display--font-size--md: props.def(
292 --o-heading--display--md--font-size,
293 props.get(core.$font-size--150)
294) !default;
295$display--font-weight--md: props.def(--o-heading--display--md--font-weight, bold) !default;
296$display--letter-spacing--md: props.def(--o-heading--display--md--letter-spacing, 0) !default;
297$display--feature-settings--md: props.def(
298 --o-heading--display--md--feature-settings,
299 props.get(core.$font--standard--feature-settings)
300) !default;
301$display--text-transform--md: props.def(--o-heading--display--md--text-transform, none) !default;
302 124
303$display--font-family--sm: props.def( 125$display--font-family--sm: props.def(--o-heading--display--sm--font-family, props.get(core.$font--standard--family)) !default;
304 --o-heading--display--sm--font-family, 126$display--line-height--sm: props.def(--o-heading--display--sm--line-height, props.get(core.$font--standard--line-height)) !default;
305 props.get(core.$font--standard--family) 127$display--font-size--sm: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--100)) !default;
306) !default; 128$display--font-weight--sm: props.def(--o-heading--display--sm--font-weight, bold) !default;
307$display--line-height--sm: props.def( 129$display--letter-spacing--sm: props.def(--o-heading--display--sm--letter-spacing, 0) !default;
308 --o-heading--display--sm--line-height, 130$display--feature-settings--sm: props.def(--o-heading--display--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
309 props.get(core.$font--standard--line-height) 131$display--text-transform--sm: props.def(--o-heading--display--sm--text-transform, none) !default;
310) !default;
311$display--font-size--sm: props.def(
312 --o-heading--display--sm--font-size,
313 props.get(core.$font-size--100)
314) !default;
315$display--font-weight--sm: props.def(--o-heading--display--sm--font-weight, bold) !default;
316$display--letter-spacing--sm: props.def(--o-heading--display--sm--letter-spacing, 0) !default;
317$display--feature-settings--sm: props.def(
318 --o-heading--display--sm--feature-settings,
319 props.get(core.$font--standard--feature-settings)
320) !default;
321$display--text-transform--sm: props.def(--o-heading--display--sm--text-transform, none) !default;
322 132
323$display--font-family--xs: props.def( 133$display--font-family--xs: props.def(--o-heading--display--xs--font-family, props.get(core.$font--standard--family)) !default;
324 --o-heading--display--xs--font-family, 134$display--line-height--xs: props.def(--o-heading--display--xs--line-height, props.get(core.$font--standard--line-height)) !default;
325 props.get(core.$font--standard--family) 135$display--font-size--xs: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50)) !default;
326) !default; 136$display--font-weight--xs: props.def(--o-heading--display--xs--font-weight, normal) !default;
327$display--line-height--xs: props.def( 137$display--letter-spacing--xs: props.def(--o-heading--display--xs--letter-spacing, 1px) !default;
328 --o-heading--display--xs--line-height, 138$display--feature-settings--xs: props.def(--o-heading--display--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
329 props.get(core.$font--standard--line-height) 139$display--text-transform--xs: props.def(--o-heading--display--xs--text-transform, none) !default;
330) !default;
331$display--font-size--xs: props.def(
332 --o-heading--display--xs--font-size,
333 props.get(core.$font-size--50)
334) !default;
335$display--font-weight--xs: props.def(--o-heading--display--xs--font-weight, normal) !default;
336$display--letter-spacing--xs: props.def(--o-heading--display--xs--letter-spacing, 1px) !default;
337$display--feature-settings--xs: props.def(
338 --o-heading--display--xs--feature-settings,
339 props.get(core.$font--standard--feature-settings)
340) !default;
341$display--text-transform--xs: props.def(--o-heading--display--xs--text-transform, none) !default;
342 140
343$display--font-size--xxl--md: props.def( 141$display--font-size--xxl--md: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--900), 'md') !default;
344 --o-heading--display--xxl--font-size, 142$display--font-size--xl--md: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--600), 'md') !default;
345 props.get(core.$font-size--900), 143$display--font-size--lg--md: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--200), 'md') !default;
346 "md" 144$display--font-size--md--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--100), 'md') !default;
347) !default; 145$display--font-size--sm--md: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--75), 'md') !default;
348$display--font-size--xl--md: props.def( 146$display--font-size--xs--md: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50), 'md') !default;
349 --o-heading--display--xl--font-size,
350 props.get(core.$font-size--600),
351 "md"
352) !default;
353$display--font-size--lg--md: props.def(
354 --o-heading--display--lg--font-size,
355 props.get(core.$font-size--200),
356 "md"
357) !default;
358$display--font-size--md--md: props.def(
359 --o-heading--display--md--font-size,
360 props.get(core.$font-size--100),
361 "md"
362) !default;
363$display--font-size--sm--md: props.def(
364 --o-heading--display--sm--font-size,
365 props.get(core.$font-size--75),
366 "md"
367) !default;
368$display--font-size--xs--md: props.def(
369 --o-heading--display--xs--font-size,
370 props.get(core.$font-size--50),
371 "md"
372) !default;
373 147
374$display--sizes: ( 148$display--sizes: (
375 "xs" $display--font-family--xs $display--line-height--xs $display--font-size--xs 149 'xs' $display--font-family--xs $display--line-height--xs $display--font-size--xs $display--font-weight--xs $display--letter-spacing--xs $display--feature-settings--xs $display--text-transform--xs $display--text-color--xs,
376 $display--font-weight--xs $display--letter-spacing--xs $display--feature-settings--xs 150 'sm' $display--font-family--sm $display--line-height--sm $display--font-size--sm $display--font-weight--sm $display--letter-spacing--sm $display--feature-settings--sm $display--text-transform--sm $display--text-color--sm,
377 $display--text-transform--xs $display--text-color--xs, 151 'md' $display--font-family--md $display--line-height--md $display--font-size--md $display--font-weight--md $display--letter-spacing--md $display--feature-settings--md $display--text-transform--md $display--text-color--md,
378 "sm" $display--font-family--sm $display--line-height--sm $display--font-size--sm 152 'lg' $display--font-family--lg $display--line-height--lg $display--font-size--lg $display--font-weight--lg $display--letter-spacing--lg $display--feature-settings--lg $display--text-transform--lg $display--text-color--lg,
379 $display--font-weight--sm $display--letter-spacing--sm $display--feature-settings--sm 153 'xl' $display--font-family--xl $display--line-height--xl $display--font-size--xl $display--font-weight--xl $display--letter-spacing--xl $display--feature-settings--xl $display--text-transform--xl $display--text-color--xl,
380 $display--text-transform--sm $display--text-color--sm, 154 'xxl' $display--font-family--xxl $display--line-height--xxl $display--font-size--xxl $display--font-weight--xxl $display--letter-spacing--xxl $display--feature-settings--xxl $display--text-transform--xxl $display--text-color--xxl,
381 "md" $display--font-family--md $display--line-height--md $display--font-size--md
382 $display--font-weight--md $display--letter-spacing--md $display--feature-settings--md
383 $display--text-transform--md $display--text-color--md,
384 "lg" $display--font-family--lg $display--line-height--lg $display--font-size--lg
385 $display--font-weight--lg $display--letter-spacing--lg $display--feature-settings--lg
386 $display--text-transform--lg $display--text-color--lg,
387 "xl" $display--font-family--xl $display--line-height--xl $display--font-size--xl
388 $display--font-weight--xl $display--letter-spacing--xl $display--feature-settings--xl
389 $display--text-transform--xl $display--text-color--xl,
390 "xxl" $display--font-family--xxl $display--line-height--xxl $display--font-size--xxl
391 $display--font-weight--xxl $display--letter-spacing--xxl $display--feature-settings--xxl
392 $display--text-transform--xxl $display--text-color--xxl
393) !default; 155) !default;
394 156
395$static-themes: props.def(--o-heading, (), "color"); 157$static-themes: props.def(--o-heading, (), 'color');
396 158
397@each $theme in map.keys(props.get(core.$transparent-colors)) { 159@each $theme in map.keys(props.get(core.$transparent-colors)) {
398 $heading-theme: --static-#{string.slice($theme, 3)}; 160 $heading-theme: --static-#{string.slice($theme, 3)};
399 161
400 $static-themes: props.merge( 162 $static-themes: props.merge($static-themes, (
401 $static-themes, 163 $heading-theme: (
402 ( 164 --bg-color: props.get(core.$transparent-colors, $theme, --200),
403 $heading-theme: ( 165 --text-color: props.get(core.$transparent-colors, $theme, --900),
404 --bg-color: props.get(core.$transparent-colors, $theme, --200),
405 --text-color: props.get(core.$transparent-colors, $theme, --900),
406 --xxl: (
407 --text-color: props.get(core.$transparent-colors, $theme, --900),
408 ),
409 --xl: (
410 --text-color: props.get(core.$transparent-colors, $theme, --900),
411 ),
412 --lg: (
413 --text-color: props.get(core.$transparent-colors, $theme, --900),
414 ),
415 --md: (
416 --text-color: props.get(core.$transparent-colors, $theme, --900),
417 ),
418 --sm: (
419 --text-color: props.get(core.$transparent-colors, $theme, --500),
420 ),
421 --xs: (
422 --text-color: props.get(core.$transparent-colors, $theme, --500),
423 ),
424 166
425 --display: ( 167 --xxl: (
426 --xxl: ( 168 --text-color: props.get(core.$transparent-colors, $theme, --900),
427 --text-color: props.get( 169 ),
428 core.$transparent-colors, 170 --xl: (
429 $theme, 171 --text-color: props.get(core.$transparent-colors, $theme, --900),
430 --900 172 ),
431 ), 173 --lg: (
432 ), 174 --text-color: props.get(core.$transparent-colors, $theme, --900),
433 --xl: ( 175 ),
434 --text-color: props.get( 176 --md: (
435 core.$transparent-colors, 177 --text-color: props.get(core.$transparent-colors, $theme, --900),
436 $theme, 178 ),
437 --900 179 --sm: (
438 ), 180 --text-color: props.get(core.$transparent-colors, $theme, --500),
439 ), 181 ),
440 --lg: ( 182 --xs: (
441 --text-color: props.get( 183 --text-color: props.get(core.$transparent-colors, $theme, --500),
442 core.$transparent-colors, 184 ),
443 $theme, 185
444 --900 186 --display: (
445 ), 187 --xxl: (
446 ), 188 --text-color: props.get(core.$transparent-colors, $theme, --900),
447 --md: ( 189 ),
448 --text-color: props.get( 190 --xl: (
449 core.$transparent-colors, 191 --text-color: props.get(core.$transparent-colors, $theme, --900),
450 $theme, 192 ),
451 --900 193 --lg: (
452 ), 194 --text-color: props.get(core.$transparent-colors, $theme, --900),
453 ), 195 ),
454 --sm: ( 196 --md: (
455 --text-color: props.get( 197 --text-color: props.get(core.$transparent-colors, $theme, --900),
456 core.$transparent-colors, 198 ),
457 $theme, 199 --sm: (
458 --900 200 --text-color: props.get(core.$transparent-colors, $theme, --900),
459 ), 201 ),
460 ), 202 --xs: (
461 --xs: ( 203 --text-color: props.get(core.$transparent-colors, $theme, --500),
462 --text-color: props.get(
463 core.$transparent-colors,
464 $theme,
465 --500
466 ),
467 ),
468 ),
469 ), 204 ),
205 ),
470 ) 206 )
471 ); 207 ));
472} 208}
diff --git a/src/objects/_icon.scss b/src/objects/_icon.scss
index 7baa3f8..1d046e0 100644
--- a/src/objects/_icon.scss
+++ b/src/objects/_icon.scss
@@ -1,24 +1,24 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "icon.vars"; 6@forward 'icon.vars';
7@use "icon.vars" as vars; 7@use 'icon.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("icon") { 12 @include bem.object('icon') {
13 display: inline; 13 display: inline;
14 inline-size: props.get(vars.$size); 14 inline-size: props.get(vars.$size);
15 block-size: props.get(vars.$size); 15 block-size: props.get(vars.$size);
16 vertical-align: props.get(vars.$valign); 16 vertical-align: props.get(vars.$valign);
17 stroke-width: props.get(vars.$stroke-width); 17 stroke-width: props.get(vars.$stroke-width);
18 stroke-linecap: round; 18 stroke-linecap: round;
19 stroke-linejoin: round; 19 stroke-linejoin: round;
20 20
21 @include bem.modifier("block") { 21 @include bem.modifier('block') {
22 display: block; 22 display: block;
23 } 23 }
24 } 24 }
diff --git a/src/objects/_icon.vars.scss b/src/objects/_icon.vars.scss
index 4fdbfae..2a37212 100644
--- a/src/objects/_icon.vars.scss
+++ b/src/objects/_icon.vars.scss
@@ -1,5 +1,5 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2 2
3$stroke-width: props.def(--o-icon--stroke-width, 1.5px) !default; 3$stroke-width: props.def(--o-icon--stroke-width, 1.5px) !default;
4$size: props.def(--o-icon--size, calc(1 / 14 * 16em)) !default; 4$size: props.def(--o-icon--size, calc(1 / 14 * 16em)) !default;
5$valign: props.def(--o-icon--valign, -0.18em) !default; 5$valign: props.def(--o-icon--valign, -.18em) !default;
diff --git a/src/objects/_lightbox.scss b/src/objects/_lightbox.scss
index 2b4abad..a173d57 100644
--- a/src/objects/_lightbox.scss
+++ b/src/objects/_lightbox.scss
@@ -1,40 +1,40 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "lightbox.vars"; 8@forward 'lightbox.vars';
9@use "lightbox.vars" as vars; 9@use 'lightbox.vars' as vars;
10 10
11@use "button.vars" as button; 11@use 'button.vars' as button;
12@use "backdrop.vars" as backdrop; 12@use 'backdrop.vars' as backdrop;
13@use "thumbnail.vars" as thumbnail; 13@use 'thumbnail.vars' as thumbnail;
14 14
15@mixin styles { 15@mixin styles {
16 @include materialize-at-root(meta.module-variables("vars")); 16 @include materialize-at-root(meta.module-variables('vars'));
17 17
18 @include bem.object("lightbox") { 18 @include bem.object('lightbox') {
19 box-sizing: border-box; 19 box-sizing: border-box;
20 display: none; 20 display: none;
21 flex: 1 1 auto; 21 flex: 1 1 auto;
22 grid-template-areas: "image" "thumbnails"; 22 grid-template-areas: 'image' 'thumbnails';
23 grid-template-rows: 1fr auto; 23 grid-template-rows: 1fr auto;
24 grid-template-columns: 1fr; 24 grid-template-columns: 1fr;
25 align-items: center; 25 align-items: center;
26 justify-items: center; 26 justify-items: center;
27 inline-size: 100%; 27 inline-size: 100%;
28 max-inline-size: none; 28 max-inline-size: none;
29 block-size: 100%; 29 block-size: 100%;
30 min-block-size: 0; 30 min-block-size: 0;
31 max-block-size: none; 31 max-block-size: none;
32 padding: 0; 32 padding: 0;
33 margin: 0; 33 margin: 0;
34 overflow: hidden; 34 overflow: hidden;
35 background-color: transparent; 35 background-color: transparent;
36 border: 0; 36 border: 0;
37 pointer-events: none; 37 pointer-events: none;
38 38
39 &::backdrop { 39 &::backdrop {
40 background-color: props.get(backdrop.$bg-color); 40 background-color: props.get(backdrop.$bg-color);
@@ -42,7 +42,7 @@
42 } 42 }
43 43
44 &[open], 44 &[open],
45 &:popover-open { 45 &:popover-open {
46 display: grid; 46 display: grid;
47 } 47 }
48 48
@@ -50,79 +50,80 @@
50 pointer-events: auto; 50 pointer-events: auto;
51 } 51 }
52 52
53 @include bem.elem("info", "controls") { 53 @include bem.elem('info', 'controls') {
54 position: absolute; 54 position: absolute;
55 inset-block-start: props.get(vars.$pad); 55 inset-block-start: props.get(vars.$pad);
56 z-index: 20; 56 z-index: 20;
57 display: flex; 57 display: flex;
58 align-items: center; 58 align-items: center;
59 block-size: props.get(vars.$controls--block-size); 59 block-size: props.get(vars.$controls--block-size);
60 padding-inline: props.get(vars.$controls--pad-i); 60 padding-inline: props.get(vars.$controls--pad-i);
61 background-color: props.get(vars.$controls--bg); 61 background-color: props.get(vars.$controls--bg);
62 border-radius: 10em; 62 border-radius: 10em;
63 box-shadow: props.get(vars.$controls--shadow-x) props.get(vars.$controls--shadow-y) 63 box-shadow:
64 props.get(vars.$controls--shadow-blur) props.get(vars.$controls--shadow-grow) 64 props.get(vars.$controls--shadow-x)
65 props.get(vars.$controls--shadow-y)
66 props.get(vars.$controls--shadow-blur)
67 props.get(vars.$controls--shadow-grow)
65 props.get(vars.$controls--shadow-color); 68 props.get(vars.$controls--shadow-color);
66 } 69 }
67 70
68 @include bem.elem("info") { 71 @include bem.elem('info') {
69 inset-inline-start: props.get(vars.$pad); 72 inset-inline-start: props.get(vars.$pad);
70 font-variant-numeric: tabular-nums; 73 font-variant-numeric: tabular-nums;
71 } 74 }
72 75
73 @include bem.elem("controls") { 76 @include bem.elem('controls') {
74 inset-inline-end: props.get(vars.$pad); 77 inset-inline-end: props.get(vars.$pad);
75 } 78 }
76 79
77 @include bem.elem("img") { 80 @include bem.elem('img') {
78 position: relative; 81 position: relative;
79 z-index: 10; 82 z-index: 10;
80 display: block; 83 display: block;
81 grid-area: image; 84 grid-area: image;
82 inline-size: auto; 85 inline-size: auto;
83 min-inline-size: 0; 86 min-inline-size: 0;
84 max-inline-size: 100%; 87 max-inline-size: 100%;
85 block-size: auto; 88 block-size: auto;
86 min-block-size: 0; 89 min-block-size: 0;
87 max-block-size: 100%; 90 max-block-size: 100%;
88 user-select: none; 91 user-select: none;
89 object-fit: contain; 92 object-fit: contain;
90 93
91 @include bem.is("hidden") { 94 @include bem.is('hidden') {
92 display: none; 95 display: none;
93 96
94 @include bem.next-elem("placeholder") { 97 @include bem.next-elem('placeholder') {
95 display: block; 98 display: block;
96 } 99 }
97 } 100 }
98 } 101 }
99 102
100 @include bem.elem("placeholder") { 103 @include bem.elem('placeholder') {
101 position: absolute; 104 position: absolute;
102 inset-block-start: 50%; 105 inset-block-start: 50%;
103 inset-inline-start: 50%; 106 inset-inline-start: 50%;
104 z-index: 5; 107 z-index: 5;
105 display: none; 108 display: none;
106 transform: translate(-50, -50); 109 transform: translate(-50, -50);
107 } 110 }
108 111
109 @include bem.elem("thumbnails") { 112 @include bem.elem('thumbnails') {
110 display: flex; 113 display: flex;
111 grid-area: thumbnails; 114 grid-area: thumbnails;
112 gap: props.get(vars.$thumbnail--spacing); 115 gap: props.get(vars.$thumbnail--spacing);
113 justify-content: center; 116 justify-content: center;
114 padding: props.get(vars.$pad); 117 padding: props.get(vars.$pad);
115 overflow: auto; 118 overflow: auto;
116 } 119 }
117 120
118 @include bem.elem("thumbnail") { 121 @include bem.elem('thumbnail') {
119 inline-size: props.get(vars.$thumbnail--width); 122 inline-size: props.get(vars.$thumbnail--width);
120 transition: 123 transition: inline-size .2s ease, margin-inline .2s ease;
121 inline-size 0.2s ease,
122 margin-inline 0.2s ease;
123 124
124 @include bem.is("selected") { 125 @include bem.is('selected') {
125 inline-size: props.get(vars.$thumbnail--active--width); 126 inline-size: props.get(vars.$thumbnail--active--width);
126 margin-inline: props.get(vars.$thumbnail--active--spacing); 127 margin-inline: props.get(vars.$thumbnail--active--spacing);
127 } 128 }
128 } 129 }
diff --git a/src/objects/_lightbox.vars.scss b/src/objects/_lightbox.vars.scss
index dc9a2a1..6fb84f7 100644
--- a/src/objects/_lightbox.vars.scss
+++ b/src/objects/_lightbox.vars.scss
@@ -1,80 +1,37 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default; 6$pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default;
7 7
8$controls--pad-i: props.def(--o-lightbox--controls--pad-i, props.get(core.$size--150)) !default; 8$controls--pad-i: props.def(--o-lightbox--controls--pad-i, props.get(core.$size--150)) !default;
9$controls--block-size: props.def( 9$controls--block-size: props.def(--o-lightbox--controls--block-size, props.get(core.$size--550)) !default;
10 --o-lightbox--controls--block-size,
11 props.get(core.$size--550)
12) !default;
13 10
14$controls--shadow-x: props.def( 11$controls--shadow-x: props.def(--o-lightbox--controls--shadow-x, props.get(core.$shadow--l2--x)) !default;
15 --o-lightbox--controls--shadow-x, 12$controls--shadow-y: props.def(--o-lightbox--controls--shadow-y, props.get(core.$shadow--l2--y)) !default;
16 props.get(core.$shadow--l2--x) 13$controls--shadow-blur: props.def(--o-lightbox--controls--shadow-blur, props.get(core.$shadow--l2--blur)) !default;
17) !default; 14$controls--shadow-grow: props.def(--o-lightbox--controls--shadow-grow, props.get(core.$shadow--l2--grow)) !default;
18$controls--shadow-y: props.def(
19 --o-lightbox--controls--shadow-y,
20 props.get(core.$shadow--l2--y)
21) !default;
22$controls--shadow-blur: props.def(
23 --o-lightbox--controls--shadow-blur,
24 props.get(core.$shadow--l2--blur)
25) !default;
26$controls--shadow-grow: props.def(
27 --o-lightbox--controls--shadow-grow,
28 props.get(core.$shadow--l2--grow)
29) !default;
30 15
31$thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default; 16$thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default;
32$thumbnail--spacing: props.def( 17$thumbnail--spacing: props.def(--o-lightbox--thumbnail--spacing, props.get(core.$size--100)) !default;
33 --o-lightbox--thumbnail--spacing, 18$thumbnail--active--width: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--1000)) !default;
34 props.get(core.$size--100) 19$thumbnail--active--spacing: props.def(--o-lightbox--thumbnail--active--spacing, props.get(core.$size--250)) !default;
35) !default;
36$thumbnail--active--width: props.def(
37 --o-lightbox--thumbnail--active--width,
38 props.get(core.$size--1000)
39) !default;
40$thumbnail--active--spacing: props.def(
41 --o-lightbox--thumbnail--active--spacing,
42 props.get(core.$size--250)
43) !default;
44 20
45$thumbnail--width--md: props.def( 21$thumbnail--width--md: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--400), 'md') !default;
46 --o-lightbox--thumbnail--width, 22$thumbnail--active--width--md: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--600), 'md') !default;
47 props.get(core.$size--400),
48 "md"
49) !default;
50$thumbnail--active--width--md: props.def(
51 --o-lightbox--thumbnail--active--width,
52 props.get(core.$size--600),
53 "md"
54) !default;
55 23
56$controls--bg: props.def( 24$controls--bg: props.def(--o-lightbox--controls--bg, props.get(core.$transparent-colors, --black, --700), 'color') !default;
57 --o-lightbox--controls--bg, 25$controls--shadow-color: props.def(--o-lightbox--controls--shadow-color, props.get(core.$transparent-colors, --black, --300), 'color') !default;
58 props.get(core.$transparent-colors, --black, --700),
59 "color"
60) !default;
61$controls--shadow-color: props.def(
62 --o-lightbox--controls--shadow-color,
63 props.get(core.$transparent-colors, --black, --300),
64 "color"
65) !default;
66 26
67$static-themes: props.def(--o-lightbox, (), "color"); 27$static-themes: props.def(--o-lightbox, (), 'color');
68 28
69@each $theme in map.keys(props.get(core.$transparent-colors)) { 29@each $theme in map.keys(props.get(core.$transparent-colors)) {
70 $lightbox-theme: --static-#{string.slice($theme, 3)}; 30 $lightbox-theme: --static-#{string.slice($theme, 3)};
71 31
72 $static-themes: props.merge( 32 $static-themes: props.merge($static-themes, (
73 $static-themes, 33 $lightbox-theme: (
74 ( 34 --text: props.get(core.$transparent-colors, $theme, --text),
75 $lightbox-theme: (
76 --text: props.get(core.$transparent-colors, $theme, --text),
77 ),
78 ) 35 )
79 ); 36 ));
80} 37}
diff --git a/src/objects/_menu.scss b/src/objects/_menu.scss
index c7fbc0e..dce14a8 100644
--- a/src/objects/_menu.scss
+++ b/src/objects/_menu.scss
@@ -1,82 +1,75 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "icon.vars" as icon; 5@use 'icon.vars' as icon;
6 6
7@forward "menu.vars"; 7@forward 'menu.vars';
8@use "menu.vars" as vars; 8@use 'menu.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("menu") { 13 @include bem.object('menu') {
14 display: flex; 14 display: flex;
15 flex-direction: column; 15 flex-direction: column;
16 gap: props.get(vars.$spacing); 16 gap: props.get(vars.$spacing);
17 17
18 @include bem.elem("header") { 18 @include bem.elem('header') {
19 padding-block: props.get(vars.$item--pad-b); 19 padding-block: props.get(vars.$item--pad-b);
20 padding-inline: props.get(vars.$item--pad-i); 20 padding-inline: props.get(vars.$item--pad-i);
21 font-size: props.get(vars.$header--font-size); 21 font-size: props.get(vars.$header--font-size);
22 font-weight: 500; 22 font-weight: 500;
23 color: props.get(vars.$header--label-color); 23 color: props.get(vars.$header--label-color);
24 text-transform: uppercase; 24 text-transform: uppercase;
25 letter-spacing: 0.5px; 25 letter-spacing: .5px;
26 26
27 @include bem.next-twin-elem { 27 @include bem.next-twin-elem {
28 margin-block-start: calc( 28 margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing));
29 props.get(vars.$separator-width) + props.get(vars.$spacing)
30 );
31 } 29 }
32 } 30 }
33 31
34 @include bem.elem("item") { 32 @include bem.elem('item') {
35 padding-block: props.get(vars.$item--pad-b); 33 padding-block: props.get(vars.$item--pad-b);
36 padding-inline: props.get(vars.$item--pad-i); 34 padding-inline: props.get(vars.$item--pad-i);
37 margin: calc(-1 * props.get(vars.$item--key-focus--outline-width)); 35 margin: calc(-1 * props.get(vars.$item--key-focus--outline-width));
38 color: props.get(vars.$item--disabled--label-color); 36 color: props.get(vars.$item--disabled--label-color);
39 background-clip: padding-box; 37 background-clip: padding-box;
40 border: props.get(vars.$item--key-focus--outline-width) solid transparent; 38 border: props.get(vars.$item--key-focus--outline-width) solid transparent;
41 border-radius: calc( 39 border-radius: calc(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width));
42 props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width)
43 );
44 40
45 &:link, 41 &:link,
46 &:visited, 42 &:visited,
47 &:enabled { 43 &:enabled {
48 color: currentColor; 44 color: currentColor;
49 45
50 @include bem.multi("&:hover, &:focus-visible", "is" "selected") { 46 @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') {
51 color: props.get(vars.$item--hover--label-color); 47 color: props.get(vars.$item--hover--label-color);
52 background-color: props.get(vars.$item--hover--bg-color); 48 background-color: props.get(vars.$item--hover--bg-color);
53 } 49 }
54 50
55 &:active { 51 &:active {
56 color: props.get(vars.$item--active--label-color); 52 color: props.get(vars.$item--active--label-color);
57 background-color: props.get(vars.$item--active--bg-color); 53 background-color: props.get(vars.$item--active--bg-color);
58 } 54 }
59 55
60 &:focus-visible { 56 &:focus-visible {
61 outline: props.get(vars.$item--key-focus--border-color) solid 57 outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width);
62 props.get(vars.$item--key-focus--border-width); 58 box-shadow:
63 box-shadow: 0 0 0 59 0
64 calc( 60 0
65 props.get(vars.$item--key-focus--border-width) + 61 0
66 props.get(vars.$item--key-focus--outline-width) 62 calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width))
67 )
68 props.get(vars.$item--key-focus--outline-color); 63 props.get(vars.$item--key-focus--outline-color);
69 } 64 }
70 } 65 }
71 66
72 @include bem.next-elem("header") { 67 @include bem.next-elem('header') {
73 margin-block-start: calc( 68 margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing));
74 props.get(vars.$separator-width) + props.get(vars.$spacing)
75 );
76 } 69 }
77 } 70 }
78 71
79 @include bem.elem("header") { 72 @include bem.elem('header') {
80 &:link, 73 &:link,
81 &:visited, 74 &:visited,
82 &:enabled { 75 &:enabled {
@@ -84,25 +77,25 @@
84 } 77 }
85 } 78 }
86 79
87 @include bem.elem("separator") { 80 @include bem.elem('separator') {
88 block-size: 1px; 81 block-size: 1px;
89 margin-block: props.get(vars.$separator-width); 82 margin-block: props.get(vars.$separator-width);
90 margin-inline: props.get(vars.$item--pad-i); 83 margin-inline: props.get(vars.$item--pad-i);
91 background-color: props.get(vars.$separator-color); 84 background-color: props.get(vars.$separator-color);
92 } 85 }
93 86
94 @include bem.elem("slot") { 87 @include bem.elem('slot') {
95 padding-block: props.get(vars.$item--pad-b); 88 padding-block: props.get(vars.$item--pad-b);
96 padding-inline: props.get(vars.$item--pad-i); 89 padding-inline: props.get(vars.$item--pad-i);
97 } 90 }
98 91
99 @include bem.elem("icon-slot") { 92 @include bem.elem('icon-slot') {
100 display: flex; 93 display: flex;
101 justify-content: center; 94 justify-content: center;
102 inline-size: props.get(icon.$size); 95 inline-size: props.get(icon.$size);
103 } 96 }
104 97
105 @include bem.modifier("pull") { 98 @include bem.modifier('pull') {
106 margin: calc(-1 * props.get(vars.$item--pad-i)); 99 margin: calc(-1 * props.get(vars.$item--pad-i));
107 } 100 }
108 } 101 }
diff --git a/src/objects/_menu.vars.scss b/src/objects/_menu.vars.scss
index c168c30..9396117 100644
--- a/src/objects/_menu.vars.scss
+++ b/src/objects/_menu.vars.scss
@@ -1,74 +1,29 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$spacing: props.def(--o-menu--spacing, 0em) !default; 5$spacing: props.def(--o-menu--spacing, 0em) !default;
6$header--font-size: props.def(--o-menu--header--font-size, props.get(core.$font-size--50)) !default; 6$header--font-size: props.def(--o-menu--header--font-size, props.get(core.$font-size--50)) !default;
7$separator-width: props.def(--o-menu--separator-width, props.get(core.$size--100)) !default; 7$separator-width: props.def(--o-menu--separator-width, props.get(core.$size--100)) !default;
8 8
9$item--pad-i: props.def(--o-menu--item--pad-i, props.get(core.$size--150)) !default; 9$item--pad-i: props.def(--o-menu--item--pad-i, props.get(core.$size--150)) !default;
10$item--pad-b: props.def(--o-menu--item--pad-b, props.get(core.$size--100)) !default; 10$item--pad-b: props.def(--o-menu--item--pad-b, props.get(core.$size--100)) !default;
11$item--rounding: props.def(--o-menu--item--rounding, 0em) !default; 11$item--rounding: props.def(--o-menu--item--rounding, 0em) !default;
12 12
13$item--key-focus--border-width: props.def( 13$item--key-focus--border-width: props.def(--o-menu--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
14 --o-menu--item--key-focus--border-width, 14$item--key-focus--border-offset: props.def(--o-menu--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
15 props.get(core.$key-focus--border-width) 15$item--key-focus--outline-width: props.def(--o-menu--item--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
16) !default;
17$item--key-focus--border-offset: props.def(
18 --o-menu--item--key-focus--border-offset,
19 props.get(core.$key-focus--border-offset)
20) !default;
21$item--key-focus--outline-width: props.def(
22 --o-menu--item--key-focus--outline-width,
23 props.get(core.$key-focus--outline-width)
24) !default;
25 16
26$separator-color: props.def( 17$separator-color: props.def(--o-menu--separator-color, props.get(core.$theme, --border), 'color') !default;
27 --o-menu--separator-color, 18$header--label-color: props.def(--o-menu--header--label-color, props.get(core.$theme, --heading), 'color') !default;
28 props.get(core.$theme, --border),
29 "color"
30) !default;
31$header--label-color: props.def(
32 --o-menu--header--label-color,
33 props.get(core.$theme, --heading),
34 "color"
35) !default;
36 19
37$item--hover--bg-color: props.def( 20$item--hover--bg-color: props.def(--o-menu--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
38 --o-menu--item--hover--bg-color, 21$item--hover--label-color: props.def(--o-menu--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default;
39 props.get(core.$theme, --border-mute),
40 "color"
41) !default;
42$item--hover--label-color: props.def(
43 --o-menu--item--hover--label-color,
44 props.get(core.$theme, --heading),
45 "color"
46) !default;
47 22
48$item--active--bg-color: props.def( 23$item--active--bg-color: props.def(--o-menu--item--active--bg-color, props.get(core.$theme, --border), 'color') !default;
49 --o-menu--item--active--bg-color, 24$item--active--label-color: props.def(--o-menu--item--active--label-color, props.get(core.$theme, --heading), 'color') !default;
50 props.get(core.$theme, --border),
51 "color"
52) !default;
53$item--active--label-color: props.def(
54 --o-menu--item--active--label-color,
55 props.get(core.$theme, --heading),
56 "color"
57) !default;
58 25
59$item--disabled--label-color: props.def( 26$item--disabled--label-color: props.def(--o-menu--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
60 --o-menu--item--disabled--label-color,
61 props.get(core.$theme, --text-disabled),
62 "color"
63) !default;
64 27
65$item--key-focus--border-color: props.def( 28$item--key-focus--border-color: props.def(--o-menu--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
66 --o-menu--item--key-focus--border-color, 29$item--key-focus--outline-color: props.def(--o-menu--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
67 props.get(core.$theme, --focus, --border),
68 "color"
69) !default;
70$item--key-focus--outline-color: props.def(
71 --o-menu--item--key-focus--outline-color,
72 props.get(core.$theme, --focus, --outline),
73 "color"
74) !default;
diff --git a/src/objects/_navbar.scss b/src/objects/_navbar.scss
index 4b678e0..cc1eaaa 100644
--- a/src/objects/_navbar.scss
+++ b/src/objects/_navbar.scss
@@ -1,197 +1,151 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:meta"; 3@use 'sass:meta';
4@use "sass:string"; 4@use 'sass:string';
5@use "pkg:iro-sass/bem"; 5@use 'pkg:iro-sass/src/bem';
6@use "pkg:iro-sass/props"; 6@use 'pkg:iro-sass/src/props';
7@use "../props" as *; 7@use '../props' as *;
8 8
9@forward "navbar.vars"; 9@forward 'navbar.vars';
10@use "navbar.vars" as vars; 10@use 'navbar.vars' as vars;
11 11
12@mixin -apply-theme($theme, $key: ()) { 12@mixin -apply-theme($theme, $key: ()) {
13 @include bem.elem("item-label") { 13 @include bem.elem('item-label') {
14 color: props.get($theme, list.join($key, --disabled --label-color)...); 14 color: props.get($theme, list.join($key, --disabled --label-color)...);
15 } 15 }
16 16
17 @include bem.elem("item-content") { 17 @include bem.elem('item-content') {
18 color: props.get($theme, list.join($key, --disabled --text-color)...); 18 color: props.get($theme, list.join($key, --disabled --text-color)...);
19 19
20 &::after { 20 &::after {
21 outline: props.get($theme, list.join($key, --key-focus --border)...) solid 21 outline: props.get($theme, list.join($key, --key-focus --border)...) solid props.get(vars.$key-focus--border-width);
22 props.get(vars.$key-focus--border-width); 22 box-shadow:
23 box-shadow: 0 0 0 23 0
24 calc( 24 0
25 props.get(vars.$key-focus--border-width) + 25 0
26 props.get(vars.$key-focus--outline-width) 26 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
27 )
28 props.get($theme, list.join($key, --key-focus --outline)...); 27 props.get($theme, list.join($key, --key-focus --outline)...);
29 } 28 }
30 } 29 }
31 30
32 @include bem.elem("item") { 31 @include bem.elem('item') {
33 &:link, 32 &:link,
34 &:visited, 33 &:visited,
35 &:enabled { 34 &:enabled {
36 @include bem.elem("item-label") { 35 @include bem.elem('item-label') {
37 color: props.get($theme, list.join($key, --label-color)...); 36 color: props.get($theme, list.join($key, --label-color)...);
38 } 37 }
39 38
40 @include bem.elem("item-content") { 39 @include bem.elem('item-content') {
41 color: props.get($theme, list.join($key, --text-color)...); 40 color: props.get($theme, list.join($key, --text-color)...);
42 } 41 }
43 42
44 &:hover, 43 &:hover,
45 &:focus-visible { 44 &:focus-visible {
46 @include bem.elem("item-label") { 45 @include bem.elem('item-label') {
47 color: props.get($theme, list.join($key, --hover --label-color)...); 46 color: props.get($theme, list.join($key, --hover --label-color)...);
48 } 47 }
49 48
50 @include bem.elem("item-content") { 49 @include bem.elem('item-content') {
51 color: props.get($theme, list.join($key, --hover --text-color)...); 50 color: props.get($theme, list.join($key, --hover --text-color)...);
52 background-color: props.get($theme, list.join($key, --hover --bg-color)...); 51 background-color: props.get($theme, list.join($key, --hover --bg-color)...);
53 } 52 }
54 } 53 }
55 54
56 &:focus-visible { 55 &:focus-visible {
57 @include bem.elem("item-label") { 56 @include bem.elem('item-label') {
58 color: props.get($theme, list.join($key, --key-focus --label)...); 57 color: props.get($theme, list.join($key, --key-focus --label)...);
59 } 58 }
60 } 59 }
61 60
62 &:active { 61 &:active {
63 @include bem.elem("item-label") { 62 @include bem.elem('item-label') {
64 color: props.get($theme, list.join($key, --active --label-color)...); 63 color: props.get($theme, list.join($key, --active --label-color)...);
65 } 64 }
66 65
67 @include bem.elem("item-content") { 66 @include bem.elem('item-content') {
68 color: props.get($theme, list.join($key, --active --text-color)...); 67 color: props.get($theme, list.join($key, --active --text-color)...);
69 background-color: props.get($theme, list.join($key, --active --bg-color)...); 68 background-color: props.get($theme, list.join($key, --active --bg-color)...);
70 } 69 }
71 } 70 }
72 } 71 }
73 72
74 @include bem.is("selected") { 73 @include bem.is('selected') {
75 @include bem.elem("item-label") { 74 @include bem.elem('item-label') {
76 color: props.get($theme, list.join($key, --selected --disabled --label-color)...); 75 color: props.get($theme, list.join($key, --selected --disabled --label-color)...);
77 } 76 }
78 77
79 @include bem.elem("item-content") { 78 @include bem.elem('item-content') {
80 color: props.get($theme, list.join($key, --selected --disabled --text-color)...); 79 color: props.get($theme, list.join($key, --selected --disabled --text-color)...);
81 background-color: props.get( 80 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...);
82 $theme,
83 list.join($key, --selected --disabled --bg-color)...
84 );
85 } 81 }
86 82
87 &:link, 83 &:link,
88 &:visited, 84 &:visited,
89 &:enabled { 85 &:enabled {
90 @include bem.elem("item-label") { 86 @include bem.elem('item-label') {
91 color: props.get($theme, list.join($key, --selected --label-color)...); 87 color: props.get($theme, list.join($key, --selected --label-color)...);
92 } 88 }
93 89
94 @include bem.elem("item-content") { 90 @include bem.elem('item-content') {
95 color: props.get($theme, list.join($key, --selected --text-color)...); 91 color: props.get($theme, list.join($key, --selected --text-color)...);
96 background-color: props.get($theme, list.join($key, --selected --bg-color)...); 92 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
97 } 93 }
98 94
99 &:hover, 95 &:hover,
100 &:focus-visible { 96 &:focus-visible {
101 @include bem.elem("item-label") { 97 @include bem.elem('item-label') {
102 color: props.get( 98 color: props.get($theme, list.join($key, --selected --hover --label-color)...);
103 $theme,
104 list.join($key, --selected --hover --label-color)...
105 );
106 } 99 }
107 100
108 @include bem.elem("item-content") { 101 @include bem.elem('item-content') {
109 color: props.get( 102 color: props.get($theme, list.join($key, --selected --hover --text-color)...);
110 $theme, 103 background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...);
111 list.join($key, --selected --hover --text-color)...
112 );
113 background-color: props.get(
114 $theme,
115 list.join($key, --selected --hover --bg-color)...
116 );
117 } 104 }
118 } 105 }
119 106
120 &:active { 107 &:active {
121 @include bem.elem("item-label") { 108 @include bem.elem('item-label') {
122 color: props.get( 109 color: props.get($theme, list.join($key, --selected --active --label-color)...);
123 $theme,
124 list.join($key, --selected --active --label-color)...
125 );
126 } 110 }
127 111
128 @include bem.elem("item-content") { 112 @include bem.elem('item-content') {
129 color: props.get( 113 color: props.get($theme, list.join($key, --selected --active --text-color)...);
130 $theme, 114 background-color: props.get($theme, list.join($key, --selected --active --bg-color)...);
131 list.join($key, --selected --active --text-color)...
132 );
133 background-color: props.get(
134 $theme,
135 list.join($key, --selected --active --bg-color)...
136 );
137 } 115 }
138 } 116 }
139 } 117 }
140 } 118 }
141 } 119 }
142 120
143 @include bem.modifier("quiet") { 121 @include bem.modifier('quiet') {
144 @include bem.elem("item") { 122 @include bem.elem('item') {
145 @include bem.is("selected") { 123 @include bem.is('selected') {
146 @include bem.elem("item-content") { 124 @include bem.elem('item-content') {
147 color: props.get( 125 color: props.get($theme, list.join($key, --quiet --selected --disabled --text-color)...);
148 $theme, 126 background-color: props.get($theme, list.join($key, --quiet --selected --disabled --bg-color)...);
149 list.join($key, --quiet --selected --disabled --text-color)...
150 );
151 background-color: props.get(
152 $theme,
153 list.join($key, --quiet --selected --disabled --bg-color)...
154 );
155 } 127 }
156 128
157 &:link, 129 &:link,
158 &:visited, 130 &:visited,
159 &:enabled { 131 &:enabled {
160 @include bem.elem("item-content") { 132 @include bem.elem('item-content') {
161 color: props.get( 133 color: props.get($theme, list.join($key, --quiet --selected --text-color)...);
162 $theme, 134 background-color: props.get($theme, list.join($key, --quiet --selected --bg-color)...);
163 list.join($key, --quiet --selected --text-color)...
164 );
165 background-color: props.get(
166 $theme,
167 list.join($key, --quiet --selected --bg-color)...
168 );
169 } 135 }
170 136
171 &:hover, 137 &:hover,
172 &:focus-visible { 138 &:focus-visible {
173 @include bem.elem("item-content") { 139 @include bem.elem('item-content') {
174 color: props.get( 140 color: props.get($theme, list.join($key, --quiet --selected --hover --text-color)...);
175 $theme, 141 background-color: props.get($theme, list.join($key, --quiet --selected --hover --bg-color)...);
176 list.join($key, --quiet --selected --hover --text-color)...
177 );
178 background-color: props.get(
179 $theme,
180 list.join($key, --quiet --selected --hover --bg-color)...
181 );
182 } 142 }
183 } 143 }
184 144
185 &:active { 145 &:active {
186 @include bem.elem("item-content") { 146 @include bem.elem('item-content') {
187 color: props.get( 147 color: props.get($theme, list.join($key, --quiet --selected --active --text-color)...);
188 $theme, 148 background-color: props.get($theme, list.join($key, --quiet --selected --active --bg-color)...);
189 list.join($key, --quiet --selected --active --text-color)...
190 );
191 background-color: props.get(
192 $theme,
193 list.join($key, --quiet --selected --active --bg-color)...
194 );
195 } 149 }
196 } 150 }
197 } 151 }
@@ -201,64 +155,64 @@
201} 155}
202 156
203@mixin styles { 157@mixin styles {
204 @include materialize-at-root(meta.module-variables("vars")); 158 @include materialize-at-root(meta.module-variables('vars'));
205 159
206 @include bem.object("navbar") { 160 @include bem.object('navbar') {
207 display: flex; 161 display: flex;
208 block-size: props.get(vars.$block-size); 162 block-size: props.get(vars.$block-size);
209 163
210 @include bem.elem("item-label") { 164 @include bem.elem('item-label') {
211 order: 2; 165 order: 2;
212 margin-block-start: props.get(vars.$item--pad-b-icon); 166 margin-block-start: props.get(vars.$item--pad-b-icon);
213 font-size: props.get(vars.$item--label-font-size); 167 font-size: props.get(vars.$item--label-font-size);
214 font-weight: bold; 168 font-weight: bold;
215 169
216 @include bem.next-elem("item-content") { 170 @include bem.next-elem('item-content') {
217 padding-block: props.get(vars.$item--pad-b-icon); 171 padding-block: props.get(vars.$item--pad-b-icon);
218 padding-inline: props.get(vars.$item--pad-i-icon); 172 padding-inline: props.get(vars.$item--pad-i-icon);
219 font-size: props.get(vars.$item--icon-size); 173 font-size: props.get(vars.$item--icon-size);
220 } 174 }
221 } 175 }
222 176
223 @include bem.elem("item-content-text") { 177 @include bem.elem('item-content-text') {
224 margin-inline: props.get(vars.$item--pad-i-label); 178 margin-inline: props.get(vars.$item--pad-i-label);
225 } 179 }
226 180
227 @include bem.elem("item-content") { 181 @include bem.elem('item-content') {
228 position: relative; 182 position: relative;
229 order: 1; 183 order: 1;
230 padding-block: props.get(vars.$item--pad-b); 184 padding-block: props.get(vars.$item--pad-b);
231 padding-inline: props.get(vars.$item--pad-i); 185 padding-inline: props.get(vars.$item--pad-i);
232 font-size: props.get(vars.$item--font-size); 186 font-size: props.get(vars.$item--font-size);
233 white-space: nowrap; 187 white-space: nowrap;
234 border-radius: 100em; 188 border-radius: 100em;
235 189
236 &::after { 190 &::after {
237 position: absolute; 191 position: absolute;
238 inset: calc(-1 * props.get(vars.$key-focus--border-offset)); 192 inset: calc(-1 * props.get(vars.$key-focus--border-offset));
239 z-index: -10; 193 z-index: -10;
240 display: block; 194 display: block;
241 visibility: hidden; 195 visibility: hidden;
242 pointer-events: none; 196 pointer-events: none;
243 content: ""; 197 content: '';
244 border-radius: 100em; 198 border-radius: 100em;
245 } 199 }
246 } 200 }
247 201
248 @include bem.elem("item") { 202 @include bem.elem('item') {
249 display: flex; 203 display: flex;
250 flex-direction: column; 204 flex-direction: column;
251 align-items: center; 205 align-items: center;
252 justify-content: center; 206 justify-content: center;
253 inline-size: 100%; 207 inline-size: 100%;
254 padding-inline: calc(0.5 * props.get(vars.$spacing)); 208 padding-inline: calc(.5 * props.get(vars.$spacing));
255 font-weight: 500; 209 font-weight: 500;
256 210
257 &:link, 211 &:link,
258 &:visited, 212 &:visited,
259 &:enabled { 213 &:enabled {
260 &:focus-visible { 214 &:focus-visible {
261 @include bem.elem("item-content") { 215 @include bem.elem('item-content') {
262 &::after { 216 &::after {
263 visibility: visible; 217 visibility: visible;
264 } 218 }
@@ -266,7 +220,7 @@
266 } 220 }
267 } 221 }
268 222
269 @include bem.is("selected") { 223 @include bem.is('selected') {
270 font-weight: bold; 224 font-weight: bold;
271 } 225 }
272 } 226 }
@@ -279,21 +233,22 @@
279 } 233 }
280 } 234 }
281 235
282 @include bem.modifier("hide-unselected") { 236 @include bem.modifier('hide-unselected') {
283 @include bem.elem("item") { 237 @include bem.elem('item') {
284 display: none; 238 display: none;
285 239
286 @include bem.is("selected") { 240 @include bem.is('selected') {
287 display: flex; 241 display: flex;
288 } 242 }
289 } 243 }
290 } 244 }
291 245
292 @include bem.modifier("adapt") { 246 @include bem.modifier('adapt') {
293 block-size: 100%; 247 block-size: 100%;
294 } 248 }
295 249
296 @include bem.modifier("align-block") { 250
251 @include bem.modifier('align-block') {
297 margin-inline: calc(-1 * props.get(vars.$item--pad-i)); 252 margin-inline: calc(-1 * props.get(vars.$item--pad-i));
298 } 253 }
299 } 254 }
diff --git a/src/objects/_navbar.vars.scss b/src/objects/_navbar.vars.scss
index b7d7e16..e96b714 100644
--- a/src/objects/_navbar.vars.scss
+++ b/src/objects/_navbar.vars.scss
@@ -1,242 +1,178 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$block-size: props.def(--o-navbar--block-size, props.get(core.$size--1000)) !default; 6$block-size: props.def(--o-navbar--block-size, props.get(core.$size--1000)) !default;
7$spacing: props.def(--o-navbar--spacing, props.get(core.$size--50)) !default; 7$spacing: props.def(--o-navbar--spacing, props.get(core.$size--50)) !default;
8 8
9$item--pad-i: props.def(--o-navbar--item--pad-i, props.get(core.$size--150)) !default; 9$item--pad-i: props.def(--o-navbar--item--pad-i, props.get(core.$size--150)) !default;
10$item--pad-i-label: props.def(--o-navbar--item--pad-i-label, props.get(core.$size--75)) !default; 10$item--pad-i-label: props.def(--o-navbar--item--pad-i-label, props.get(core.$size--75)) !default;
11$item--pad-i-icon: props.def(--o-navbar--item--pad-i-icon, props.get(core.$size--250)) !default; 11$item--pad-i-icon: props.def(--o-navbar--item--pad-i-icon, props.get(core.$size--250)) !default;
12$item--pad-b: props.def(--o-navbar--item--pad-b, props.get(core.$size--75)) !default; 12$item--pad-b: props.def(--o-navbar--item--pad-b, props.get(core.$size--75)) !default;
13$item--pad-b-icon: props.def(--o-navbar--item--pad-b-icon, props.get(core.$size--40)) !default; 13$item--pad-b-icon: props.def(--o-navbar--item--pad-b-icon, props.get(core.$size--40)) !default;
14$item--font-size: props.def(--o-navbar--item--font-size, props.get(core.$font-size--100)) !default; 14$item--font-size: props.def(--o-navbar--item--font-size, props.get(core.$font-size--100)) !default;
15$item--icon-size: props.def(--o-navbar--item--icon-size, props.get(core.$font-size--200)) !default; 15$item--icon-size: props.def(--o-navbar--item--icon-size, props.get(core.$font-size--200)) !default;
16$item--label-font-size: props.def( 16$item--label-font-size: props.def(--o-navbar--item--label-font-size, props.get(core.$font-size--50)) !default;
17 --o-navbar--item--label-font-size,
18 props.get(core.$font-size--50)
19) !default;
20 17
21$key-focus--border-width: props.def( 18$key-focus--border-width: props.def(--o-navbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
22 --o-navbar--key-focus--border-width, 19$key-focus--border-offset: props.def(--o-navbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
23 props.get(core.$key-focus--border-width) 20$key-focus--outline-width: props.def(--o-navbar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
24) !default;
25$key-focus--border-offset: props.def(
26 --o-navbar--key-focus--border-offset,
27 props.get(core.$key-focus--border-offset)
28) !default;
29$key-focus--outline-width: props.def(
30 --o-navbar--key-focus--outline-width,
31 props.get(core.$key-focus--outline-width)
32) !default;
33 21
34$themes: props.def(--o-navbar, (), "color"); 22$themes: props.def(--o-navbar, (), 'color');
35 23
36$default-theme-override: () !default; 24$default-theme-override: () !default;
37$default-theme: map.deep-merge( 25$default-theme: map.deep-merge((
38 ( 26 --text-color: props.get(core.$theme, --text),
39 --text-color: props.get(core.$theme, --text), 27 --label-color: props.get(core.$theme, --text-mute),
40 --label-color: props.get(core.$theme, --text-mute), 28
29 --hover: (
30 --bg-color: props.get(core.$theme, --border-mute),
31 --text-color: props.get(core.$theme, --heading),
32 --label-color: props.get(core.$theme, --text),
33 ),
34
35 --active: (
36 --bg-color: props.get(core.$theme, --border),
37 --text-color: props.get(core.$theme, --heading),
38 --label-color: props.get(core.$theme, --heading),
39 ),
40
41 --disabled: (
42 --text-color: props.get(core.$theme, --border-strong),
43 --label-color: props.get(core.$theme, --text-disabled),
44 ),
45
46 --key-focus: (
47 --label: props.get(core.$theme, --focus, --text),
48 --border: props.get(core.$theme, --focus, --border),
49 --outline: props.get(core.$theme, --focus, --outline),
50 ),
51
52 --selected: (
53 --bg-color: props.get(core.$theme, --heading),
54 --text-color: props.get(core.$theme, --base, --50),
55 --label-color: props.get(core.$theme, --heading),
56
41 --hover: ( 57 --hover: (
42 --bg-color: props.get(core.$theme, --border-mute), 58 --bg-color: props.get(core.$theme, --text),
43 --text-color: props.get(core.$theme, --heading), 59 --text-color: props.get(core.$theme, --base, --50),
44 --label-color: props.get(core.$theme, --text), 60 --label-color: props.get(core.$theme, --heading),
45 ), 61 ),
46 62
47 --active: ( 63 --active: (
48 --bg-color: props.get(core.$theme, --border), 64 --bg-color: props.get(core.$theme, --text-mute),
49 --text-color: props.get(core.$theme, --heading), 65 --text-color: props.get(core.$theme, --base, --50),
50 --label-color: props.get(core.$theme, --heading), 66 --label-color: props.get(core.$theme, --heading),
51 ), 67 ),
52 68
53 --disabled: ( 69 --disabled: (
54 --text-color: props.get(core.$theme, --border-strong), 70 --bg-color: props.get(core.$theme, --border-mute),
71 --text-color: props.get(core.$theme, --border-strong),
55 --label-color: props.get(core.$theme, --text-disabled), 72 --label-color: props.get(core.$theme, --text-disabled),
56 ), 73 ),
74 ),
57 75
58 --key-focus: ( 76 --quiet: (
59 --label: props.get(core.$theme, --focus, --text),
60 --border: props.get(core.$theme, --focus, --border),
61 --outline: props.get(core.$theme, --focus, --outline),
62 ),
63
64 --selected: ( 77 --selected: (
65 --bg-color: props.get(core.$theme, --heading), 78 --bg-color: props.get(core.$theme, --border-mute),
66 --text-color: props.get(core.$theme, --base, --50), 79 --text-color: props.get(core.$theme, --heading),
67 --label-color: props.get(core.$theme, --heading), 80
68 --hover: ( 81 --hover: (
69 --bg-color: props.get(core.$theme, --text), 82 --bg-color: props.get(core.$theme, --border),
70 --text-color: props.get(core.$theme, --base, --50), 83 --text-color: props.get(core.$theme, --heading),
71 --label-color: props.get(core.$theme, --heading),
72 ), 84 ),
73 85
74 --active: ( 86 --active: (
75 --bg-color: props.get(core.$theme, --text-mute), 87 --bg-color: props.get(core.$theme, --border-strong),
76 --text-color: props.get(core.$theme, --base, --50), 88 --text-color: props.get(core.$theme, --heading),
77 --label-color: props.get(core.$theme, --heading),
78 ), 89 ),
79 90
80 --disabled: ( 91 --disabled: (
81 --bg-color: props.get(core.$theme, --border-mute), 92 --bg-color: props.get(core.$theme, --border-mute),
82 --text-color: props.get(core.$theme, --border-strong), 93 --text-color: props.get(core.$theme, --border-strong),
83 --label-color: props.get(core.$theme, --text-disabled), 94 ),
95 )
96 )
97), $default-theme-override) !default;
98$default-theme: props.def(--o-navbar, $default-theme, 'color');
99
100@each $theme in map.keys(props.get(core.$transparent-colors)) {
101 $nav-theme: --static-#{string.slice($theme, 3)};
102
103 $themes: props.merge($themes, (
104 $nav-theme: (
105 --text-color: props.get(core.$transparent-colors, $theme, --800),
106 --label-color: props.get(core.$transparent-colors, $theme, --700),
107
108 --hover: (
109 --bg-color: props.get(core.$transparent-colors, $theme, --300),
110 --text-color: props.get(core.$transparent-colors, $theme, --900),
111 --label-color: props.get(core.$transparent-colors, $theme, --800),
112 ),
113
114 --active: (
115 --bg-color: props.get(core.$transparent-colors, $theme, --400),
116 --text-color: props.get(core.$transparent-colors, $theme, --900),
117 --label-color: props.get(core.$transparent-colors, $theme, --900),
118 ),
119
120 --disabled: (
121 --text-color: props.get(core.$transparent-colors, $theme, --500),
122 --label-color: props.get(core.$transparent-colors, $theme, --500),
123 ),
124
125 --key-focus: (
126 --label: props.get(core.$transparent-colors, $theme, --800),
127 --border: props.get(core.$transparent-colors, $theme, --900),
128 --outline: props.get(core.$transparent-colors, $theme, --300),
84 ), 129 ),
85 ),
86 130
87 --quiet: (
88 --selected: ( 131 --selected: (
89 --bg-color: props.get(core.$theme, --border-mute), 132 --bg-color: props.get(core.$transparent-colors, $theme, --900),
90 --text-color: props.get(core.$theme, --heading), 133 --text-color: props.get(core.$transparent-colors, $theme, --text),
134 --label-color: props.get(core.$transparent-colors, $theme, --800),
135
91 --hover: ( 136 --hover: (
92 --bg-color: props.get(core.$theme, --border), 137 --bg-color: props.get(core.$transparent-colors, $theme, --800),
93 --text-color: props.get(core.$theme, --heading), 138 --text-color: props.get(core.$transparent-colors, $theme, --text),
139 --label-color: props.get(core.$transparent-colors, $theme, --900),
94 ), 140 ),
95 141
96 --active: ( 142 --active: (
97 --bg-color: props.get(core.$theme, --border-strong), 143 --bg-color: props.get(core.$transparent-colors, $theme, --800),
98 --text-color: props.get(core.$theme, --heading), 144 --text-color: props.get(core.$transparent-colors, $theme, --text),
145 --label-color: props.get(core.$transparent-colors, $theme, --900),
99 ), 146 ),
100 147
101 --disabled: ( 148 --disabled: (
102 --bg-color: props.get(core.$theme, --border-mute), 149 --bg-color: props.get(core.$transparent-colors, $theme, --200),
103 --text-color: props.get(core.$theme, --border-strong), 150 --text-color: props.get(core.$transparent-colors, $theme, --500),
151 --label-color: props.get(core.$transparent-colors, $theme, --100),
104 ), 152 ),
105 ), 153 ),
106 ),
107 ),
108 $default-theme-override
109) !default;
110$default-theme: props.def(--o-navbar, $default-theme, "color");
111 154
112@each $theme in map.keys(props.get(core.$transparent-colors)) { 155 --quiet: (
113 $nav-theme: --static-#{string.slice($theme, 3)}; 156 --selected: (
157 --bg-color: props.get(core.$transparent-colors, $theme, --300),
158 --text-color: props.get(core.$transparent-colors, $theme, --900),
114 159
115 $themes: props.merge(
116 $themes,
117 (
118 $nav-theme: (
119 --text-color: props.get(core.$transparent-colors, $theme, --800),
120 --label-color: props.get(core.$transparent-colors, $theme, --700),
121 --hover: ( 160 --hover: (
122 --bg-color: props.get(core.$transparent-colors, $theme, --300), 161 --bg-color: props.get(core.$transparent-colors, $theme, --400),
123 --text-color: props.get(core.$transparent-colors, $theme, --900), 162 --text-color: props.get(core.$transparent-colors, $theme, --900),
124 --label-color: props.get(core.$transparent-colors, $theme, --800), 163 ),
125 ),
126 164
127 --active: ( 165 --active: (
128 --bg-color: props.get(core.$transparent-colors, $theme, --400), 166 --bg-color: props.get(core.$transparent-colors, $theme, --500),
129 --text-color: props.get(core.$transparent-colors, $theme, --900), 167 --text-color: props.get(core.$transparent-colors, $theme, --900),
130 --label-color: props.get(core.$transparent-colors, $theme, --900), 168 ),
131 ),
132 169
133 --disabled: ( 170 --disabled: (
134 --text-color: props.get(core.$transparent-colors, $theme, --500), 171 --bg-color: props.get(core.$transparent-colors, $theme, --100),
135 --label-color: props.get(core.$transparent-colors, $theme, --500), 172 --text-color: props.get(core.$transparent-colors, $theme, --500),
136 ), 173 ),
137 174 )
138 --key-focus: ( 175 )
139 --label: props.get(core.$transparent-colors, $theme, --800),
140 --border: props.get(core.$transparent-colors, $theme, --900),
141 --outline: props.get(core.$transparent-colors, $theme, --300),
142 ),
143
144 --selected: (
145 --bg-color: props.get(core.$transparent-colors, $theme, --900),
146 --text-color: props.get(core.$transparent-colors, $theme, --text),
147 --label-color: props.get(core.$transparent-colors, $theme, --800),
148 --hover: (
149 --bg-color: props.get(core.$transparent-colors, $theme, --800),
150 --text-color: props.get(
151 core.$transparent-colors,
152 $theme,
153 --text
154 ),
155 --label-color: props.get(
156 core.$transparent-colors,
157 $theme,
158 --900
159 ),
160 ),
161
162 --active: (
163 --bg-color: props.get(core.$transparent-colors, $theme, --800),
164 --text-color: props.get(
165 core.$transparent-colors,
166 $theme,
167 --text
168 ),
169 --label-color: props.get(
170 core.$transparent-colors,
171 $theme,
172 --900
173 ),
174 ),
175
176 --disabled: (
177 --bg-color: props.get(core.$transparent-colors, $theme, --200),
178 --text-color: props.get(
179 core.$transparent-colors,
180 $theme,
181 --500
182 ),
183 --label-color: props.get(
184 core.$transparent-colors,
185 $theme,
186 --100
187 ),
188 ),
189 ),
190
191 --quiet: (
192 --selected: (
193 --bg-color: props.get(core.$transparent-colors, $theme, --300),
194 --text-color: props.get(
195 core.$transparent-colors,
196 $theme,
197 --900
198 ),
199 --hover: (
200 --bg-color: props.get(
201 core.$transparent-colors,
202 $theme,
203 --400
204 ),
205 --text-color: props.get(
206 core.$transparent-colors,
207 $theme,
208 --900
209 ),
210 ),
211
212 --active: (
213 --bg-color: props.get(
214 core.$transparent-colors,
215 $theme,
216 --500
217 ),
218 --text-color: props.get(
219 core.$transparent-colors,
220 $theme,
221 --900
222 ),
223 ),
224
225 --disabled: (
226 --bg-color: props.get(
227 core.$transparent-colors,
228 $theme,
229 --100
230 ),
231 --text-color: props.get(
232 core.$transparent-colors,
233 $theme,
234 --500
235 ),
236 ),
237 ),
238 ),
239 ),
240 ) 176 )
241 ); 177 ));
242} 178}
diff --git a/src/objects/_palette.scss b/src/objects/_palette.scss
index 88448e0..f503812 100644
--- a/src/objects/_palette.scss
+++ b/src/objects/_palette.scss
@@ -1,27 +1,21 @@
1@use "sass:list"; 1@use 'sass:list';
2@use "sass:map"; 2@use 'sass:map';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "../config"; 5@use '../config';
6@use "pkg:iro-sass/props"; 6@use 'pkg:iro-sass/src/props';
7@use "../core.vars" as core; 7@use '../core.vars' as core;
8 8
9@mixin styles { 9@mixin styles {
10 @include bem.object("palette") { 10 @include bem.object('palette') {
11 display: flex; 11 display: flex;
12 block-size: 3em; 12 block-size: 3em;
13 13
14 @include bem.elem("item") { 14 @include bem.elem('item') {
15 flex: 1 1 auto; 15 flex: 1 1 auto;
16 16
17 $palette: map.get(config.$themes, config.$theme-default, light, --palettes, --base); 17 $palette: map.get(config.$themes, config.$theme-default, light, --palettes, --base);
18 $levels: map.get( 18 $levels: map.get(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2));
19 config.$themes,
20 config.$theme-default,
21 light,
22 --levels,
23 list.nth($palette, 2)
24 );
25 19
26 @for $i from 1 through list.length($levels) { 20 @for $i from 1 through list.length($levels) {
27 $key: list.nth(map.keys($levels), $i); 21 $key: list.nth(map.keys($levels), $i);
@@ -32,19 +26,11 @@
32 } 26 }
33 } 27 }
34 28
35 @each $palette-name, 29 @each $palette-name, $palette in map.get(config.$themes, config.$theme-default, light, --palettes) {
36 $palette in map.get(config.$themes, config.$theme-default, light, --palettes) 30 $levels: map.get(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2));
37 {
38 $levels: map.get(
39 config.$themes,
40 config.$theme-default,
41 light,
42 --levels,
43 list.nth($palette, 2)
44 );
45 31
46 @include bem.modifier(string.slice($palette-name, 3)) { 32 @include bem.modifier(string.slice($palette-name, 3)) {
47 @include bem.elem("item") { 33 @include bem.elem('item') {
48 @for $i from 1 through list.length($levels) { 34 @for $i from 1 through list.length($levels) {
49 $key: list.nth(map.keys($levels), $i); 35 $key: list.nth(map.keys($levels), $i);
50 36
@@ -56,21 +42,17 @@
56 } 42 }
57 } 43 }
58 44
59 @include bem.modifier("static") { 45 @include bem.modifier('static') {
60 @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { 46 @each $palette-name, $palette in map.get(config.$static-colors, --palettes) {
61 $levels: map.get(config.$static-colors, --levels); 47 $levels: map.get(config.$static-colors, --levels);
62 48
63 @include bem.modifier(string.slice($palette-name, 3)) { 49 @include bem.modifier(string.slice($palette-name, 3)) {
64 @include bem.elem("item") { 50 @include bem.elem('item') {
65 @for $i from 1 through list.length($levels) { 51 @for $i from 1 through list.length($levels) {
66 $key: list.nth(map.keys($levels), $i); 52 $key: list.nth(map.keys($levels), $i);
67 53
68 &:nth-child(#{$i}) { 54 &:nth-child(#{$i}) {
69 background-color: props.get( 55 background-color: props.get(core.$theme, #{$palette-name}-static, $key);
70 core.$theme,
71 #{$palette-name}-static,
72 $key
73 );
74 } 56 }
75 } 57 }
76 } 58 }
diff --git a/src/objects/_placeholders.scss b/src/objects/_placeholders.scss
index d0af033..683f57e 100644
--- a/src/objects/_placeholders.scss
+++ b/src/objects/_placeholders.scss
@@ -1,22 +1,22 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "placeholders.vars"; 6@forward 'placeholders.vars';
7@use "placeholders.vars" as vars; 7@use 'placeholders.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("placeholders") { 12 @include bem.object('placeholders') {
13 @include bem.elem("placeholder") { 13 @include bem.elem('placeholder') {
14 display: inline-block; 14 display: inline-block;
15 min-block-size: props.get(vars.$min-block-size); 15 min-block-size: props.get(vars.$min-block-size);
16 vertical-align: middle; 16 vertical-align: middle;
17 background-color: currentColor; 17 background-color: currentColor;
18 border-radius: props.get(vars.$rounding); 18 border-radius: props.get(vars.$rounding);
19 opacity: props.get(vars.$opacity); 19 opacity: props.get(vars.$opacity);
20 } 20 }
21 } 21 }
22} 22}
diff --git a/src/objects/_placeholders.vars.scss b/src/objects/_placeholders.vars.scss
index 87e1657..1ac4ef7 100644
--- a/src/objects/_placeholders.vars.scss
+++ b/src/objects/_placeholders.vars.scss
@@ -1,6 +1,6 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$min-block-size: props.def(--o-placeholder--min-block-size, 1em) !default; 4$min-block-size: props.def(--o-placeholder--min-block-size, 1em) !default;
5$rounding: props.def(--o-placeholder--rounding, props.get(core.$rounding)) !default; 5$rounding: props.def(--o-placeholder--rounding, props.get(core.$rounding)) !default;
6$opacity: props.def(--o-placeholder--opacity, 0.5) !default; 6$opacity: props.def(--o-placeholder--opacity, .5) !default;
diff --git a/src/objects/_popover.scss b/src/objects/_popover.scss
index 90187c1..1cb5660 100644
--- a/src/objects/_popover.scss
+++ b/src/objects/_popover.scss
@@ -1,40 +1,44 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "popover.vars"; 6@forward 'popover.vars';
7@use "popover.vars" as vars; 7@use 'popover.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("popover") { 12 @include bem.object('popover') {
13 position: fixed; 13 position: fixed;
14 inset-block-start: 0; 14 inset-block-start: 0;
15 inset-inline-start: 0; 15 inset-inline-start: 0;
16 z-index: props.get(vars.$z-index); 16 z-index: props.get(vars.$z-index);
17 padding-block: props.get(vars.$pad-b); 17 padding-block: props.get(vars.$pad-b);
18 padding-inline: props.get(vars.$pad-i); 18 padding-inline: props.get(vars.$pad-i);
19 margin: 0; 19 margin: 0;
20 color: currentColor; 20 color: currentColor;
21 background-color: props.get(vars.$bg-color); 21 background-color: props.get(vars.$bg-color);
22 border: props.get(vars.$border-width) solid transparent; 22 border: props.get(vars.$border-width) solid transparent;
23 border-color: props.get(vars.$border-color); 23 border-color: props.get(vars.$border-color);
24 border-radius: props.get(vars.$rounding); 24 border-radius: props.get(vars.$rounding);
25 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) 25 box-shadow:
26 props.get(vars.$shadow-grow) props.get(vars.$shadow-color); 26 props.get(vars.$shadow-x)
27 transform: translate(var(--x), var(--y)); 27 props.get(vars.$shadow-y)
28 props.get(vars.$shadow-blur)
29 props.get(vars.$shadow-grow)
30 props.get(vars.$shadow-color);
31 transform: translate(var(--x), var(--y));
28 32
29 @include bem.modifier("up-left") { 33 @include bem.modifier('up-left') {
30 transform: translate(var(--x), calc(var(--y) - 100%)); 34 transform: translate(var(--x), calc(var(--y) - 100%));
31 } 35 }
32 36
33 @include bem.modifier("up-right") { 37 @include bem.modifier('up-right') {
34 transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%)); 38 transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%));
35 } 39 }
36 40
37 @include bem.modifier("down-right") { 41 @include bem.modifier('down-right') {
38 transform: translate(calc(var(--x) - 100%), var(--y)); 42 transform: translate(calc(var(--x) - 100%), var(--y));
39 } 43 }
40 } 44 }
diff --git a/src/objects/_popover.vars.scss b/src/objects/_popover.vars.scss
index df1072e..202d71a 100644
--- a/src/objects/_popover.vars.scss
+++ b/src/objects/_popover.vars.scss
@@ -1,28 +1,19 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$z-index: props.def(--o-popover--z-index, 11000) !default; 5$z-index: props.def(--o-popover--z-index, 11000) !default;
6$pad-i: props.def(--o-popover--pad-i, 0) !default; 6$pad-i: props.def(--o-popover--pad-i, 0) !default;
7$pad-b: props.def(--o-popover--pad-b, props.get(core.$size--85)) !default; 7$pad-b: props.def(--o-popover--pad-b, props.get(core.$size--85)) !default;
8$separator-width: props.def(--o-popover--separator-width, props.get(core.$size--85)) !default; 8$separator-width: props.def(--o-popover--separator-width, props.get(core.$size--85)) !default;
9$rounding: props.def(--o-popover--rounding, props.get(core.$rounding)) !default; 9$rounding: props.def(--o-popover--rounding, props.get(core.$rounding)) !default;
10$border-width: props.def(--o-popover--border-width, props.get(core.$border-width--thin)) !default; 10$border-width: props.def(--o-popover--border-width, props.get(core.$border-width--thin)) !default;
11 11
12$shadow-x: props.def(--o-popover--shadow-x, props.get(core.$shadow--l2--x)) !default; 12$shadow-x: props.def(--o-popover--shadow-x, props.get(core.$shadow--l2--x)) !default;
13$shadow-y: props.def(--o-popover--shadow-y, props.get(core.$shadow--l2--y)) !default; 13$shadow-y: props.def(--o-popover--shadow-y, props.get(core.$shadow--l2--y)) !default;
14$shadow-blur: props.def(--o-popover--shadow-blur, props.get(core.$shadow--l2--blur)) !default; 14$shadow-blur: props.def(--o-popover--shadow-blur, props.get(core.$shadow--l2--blur)) !default;
15$shadow-grow: props.def(--o-popover--shadow-grow, props.get(core.$shadow--l2--grow)) !default; 15$shadow-grow: props.def(--o-popover--shadow-grow, props.get(core.$shadow--l2--grow)) !default;
16 16
17$bg-color: props.def(--o-popover--bg-color, props.get(core.$theme, --bg-l2), "color") !default; 17$bg-color: props.def(--o-popover--bg-color, props.get(core.$theme, --bg-l2), 'color') !default;
18$border-color: props.def( 18$border-color: props.def(--o-popover--border-color, props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), 'color') !default;
19 --o-popover--border-color, 19$shadow-color: props.def(--o-popover--shadow-color, props.get(core.$theme, --shadow), 'color') !default;
20 props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border)
21 props.get(core.$theme, --box, --border-strong),
22 "color"
23) !default;
24$shadow-color: props.def(
25 --o-popover--shadow-color,
26 props.get(core.$theme, --shadow),
27 "color"
28) !default;
diff --git a/src/objects/_radio.scss b/src/objects/_radio.scss
index c964657..ae4a85a 100644
--- a/src/objects/_radio.scss
+++ b/src/objects/_radio.scss
@@ -1,100 +1,92 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "../core.vars" as core; 5@use '../core.vars' as core;
6 6
7@forward "radio.vars"; 7@forward 'radio.vars';
8@use "radio.vars" as vars; 8@use 'radio.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("radio") { 13 @include bem.object('radio') {
14 position: relative; 14 position: relative;
15 display: inline-block; 15 display: inline-block;
16 padding-block: props.get(vars.$pad-b); 16 padding-block: props.get(vars.$pad-b);
17 padding-inline: props.get(vars.$pad-i); 17 padding-inline: props.get(vars.$pad-i);
18 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 18 margin-inline:
19 calc( 19 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
20 props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get( 20 calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset));
21 vars.$key-focus--border-offset
22 )
23 );
24 21
25 @include bem.elem("circle") { 22 @include bem.elem('circle') {
26 display: inline-block; 23 display: inline-block;
27 flex: 0 0 auto; 24 flex: 0 0 auto;
28 inline-size: props.get(vars.$diameter); 25 inline-size: props.get(vars.$diameter);
29 block-size: props.get(vars.$diameter); 26 block-size: props.get(vars.$diameter);
30 margin-block-start: calc( 27 margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$diameter) - props.get(vars.$key-focus--border-offset));
31 0.5em * props.get(core.$font--standard--line-height) - 0.5 * 28 vertical-align: top;
32 props.get(vars.$diameter) - props.get(vars.$key-focus--border-offset) 29 background-color: props.get(vars.$circle-border-color);
33 ); 30 background-clip: padding-box;
34 vertical-align: top; 31 border: props.get(vars.$key-focus--border-offset) solid transparent;
35 background-color: props.get(vars.$circle-border-color); 32 border-radius: 2em;
36 background-clip: padding-box;
37 border: props.get(vars.$key-focus--border-offset) solid transparent;
38 border-radius: 2em;
39 33
40 &::after { 34 &::after {
41 position: relative; 35 position: relative;
42 inset-block-start: props.get(vars.$border-width); 36 inset-block-start: props.get(vars.$border-width);
43 inset-inline-start: props.get(vars.$border-width); 37 inset-inline-start: props.get(vars.$border-width);
44 display: block; 38 display: block;
45 inline-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); 39 inline-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width));
46 block-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); 40 block-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width));
47 content: ""; 41 content: '';
48 background-color: props.get(vars.$circle-bg-color); 42 background-color: props.get(vars.$circle-bg-color);
49 border-radius: props.get(vars.$diameter); 43 border-radius: props.get(vars.$diameter);
50 transition: transform 0.2s ease; 44 transition: transform .2s ease;
51 } 45 }
52 } 46 }
53 47
54 @include bem.elem("label") { 48 @include bem.elem('label') {
55 margin-inline-start: calc( 49 margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset));
56 props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)
57 );
58 } 50 }
59 51
60 @include bem.elem("native") { 52 @include bem.elem('native') {
61 position: absolute; 53 position: absolute;
62 inset-block-start: 0; 54 inset-block-start: 0;
63 inset-inline-start: 0; 55 inset-inline-start: 0;
64 z-index: -1; 56 z-index: -1;
65 inline-size: 100%; 57 inline-size: 100%;
66 block-size: 100%; 58 block-size: 100%;
67 padding: 0; 59 padding: 0;
68 margin: 0; 60 margin: 0;
69 overflow: hidden; 61 overflow: hidden;
70 appearance: none; 62 appearance: none;
71 border-radius: props.get(vars.$rounding); 63 border-radius: props.get(vars.$rounding);
72 64
73 &:hover, 65 &:hover,
74 &:focus-visible { 66 &:focus-visible {
75 @include bem.sibling-elem("label") { 67 @include bem.sibling-elem('label') {
76 color: props.get(vars.$hover--label-color); 68 color: props.get(vars.$hover--label-color);
77 } 69 }
78 70
79 @include bem.sibling-elem("circle") { 71 @include bem.sibling-elem('circle') {
80 background-color: props.get(vars.$hover--circle-border-color); 72 background-color: props.get(vars.$hover--circle-border-color);
81 } 73 }
82 } 74 }
83 75
84 &:checked { 76 &:checked {
85 @include bem.sibling-elem("circle") { 77 @include bem.sibling-elem('circle') {
86 &::after { 78 &::after {
87 transform: scale(0.44); 79 transform: scale(.44);
88 } 80 }
89 } 81 }
90 } 82 }
91 83
92 &:disabled { 84 &:disabled {
93 @include bem.sibling-elem("label") { 85 @include bem.sibling-elem('label') {
94 color: props.get(vars.$disabled--label-color); 86 color: props.get(vars.$disabled--label-color);
95 } 87 }
96 88
97 @include bem.sibling-elem("circle") { 89 @include bem.sibling-elem('circle') {
98 background-color: props.get(vars.$disabled--circle-border-color); 90 background-color: props.get(vars.$disabled--circle-border-color);
99 91
100 &::after { 92 &::after {
@@ -104,46 +96,45 @@
104 } 96 }
105 97
106 &:focus-visible { 98 &:focus-visible {
107 @include bem.sibling-elem("label") { 99 @include bem.sibling-elem('label') {
108 color: props.get(vars.$key-focus--label-color); 100 color: props.get(vars.$key-focus--label-color);
109 } 101 }
110 102
111 @include bem.sibling-elem("circle") { 103 @include bem.sibling-elem('circle') {
112 outline: props.get(vars.$key-focus--border-color) solid 104 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
113 props.get(vars.$key-focus--border-width); 105 box-shadow:
114 box-shadow: 0 0 0 106 0
115 calc( 107 0
116 props.get(vars.$key-focus--border-width) + 108 0
117 props.get(vars.$key-focus--outline-width) 109 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
118 )
119 props.get(vars.$key-focus--outline-color); 110 props.get(vars.$key-focus--outline-color);
120 } 111 }
121 } 112 }
122 } 113 }
123 114
124 @include bem.modifier("standalone") { 115 @include bem.modifier('standalone') {
125 @include bem.elem("circle") { 116 @include bem.elem('circle') {
126 margin-block-start: 0; 117 margin-block-start: 0;
127 } 118 }
128 } 119 }
129 120
130 @include bem.modifier("accent") { 121 @include bem.modifier('accent') {
131 @include bem.elem("native") { 122 @include bem.elem('native') {
132 &:checked { 123 &:checked {
133 @include bem.sibling-elem("circle") { 124 @include bem.sibling-elem('circle') {
134 background-color: props.get(vars.$accent--circle-border-color); 125 background-color: props.get(vars.$accent--circle-border-color);
135 } 126 }
136 127
137 &:hover, 128 &:hover,
138 &:focus-visible { 129 &:focus-visible {
139 @include bem.sibling-elem("circle") { 130 @include bem.sibling-elem('circle') {
140 background-color: props.get(vars.$accent--hover--circle-border-color); 131 background-color: props.get(vars.$accent--hover--circle-border-color);
141 } 132 }
142 } 133 }
143 } 134 }
144 135
145 &:disabled { 136 &:disabled {
146 @include bem.sibling-elem("circle") { 137 @include bem.sibling-elem('circle') {
147 background-color: props.get(vars.$disabled--circle-border-color); 138 background-color: props.get(vars.$disabled--circle-border-color);
148 139
149 &::after { 140 &::after {
@@ -152,7 +143,7 @@
152 } 143 }
153 144
154 &:checked { 145 &:checked {
155 @include bem.sibling-elem("circle") { 146 @include bem.sibling-elem('circle') {
156 background-color: props.get(vars.$disabled--circle-border-color); 147 background-color: props.get(vars.$disabled--circle-border-color);
157 } 148 }
158 } 149 }
diff --git a/src/objects/_radio.vars.scss b/src/objects/_radio.vars.scss
index e7a41a4..a5f249d 100644
--- a/src/objects/_radio.vars.scss
+++ b/src/objects/_radio.vars.scss
@@ -1,90 +1,33 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$diameter: props.def(--o-radio--diameter, props.get(core.$size--200)) !default; 5$diameter: props.def(--o-radio--diameter, props.get(core.$size--200)) !default;
6$label-gap: props.def(--o-radio--label-gap, props.get(core.$size--125)) !default; 6$label-gap: props.def(--o-radio--label-gap, props.get(core.$size--125)) !default;
7$border-width: props.def(--o-radio--border-width, props.get(core.$border-width--medium)) !default; 7$border-width: props.def(--o-radio--border-width, props.get(core.$border-width--medium)) !default;
8$pad-i: props.def(--o-radio--pad-i, props.get(core.$size--65)) !default; 8$pad-i: props.def(--o-radio--pad-i, props.get(core.$size--65)) !default;
9$pad-b: props.def(--o-radio--pad-b, props.get(core.$size--65)) !default; 9$pad-b: props.def(--o-radio--pad-b, props.get(core.$size--65)) !default;
10$rounding: props.def(--o-radio--rounding, props.get(core.$rounding--sm)) !default; 10$rounding: props.def(--o-radio--rounding, props.get(core.$rounding--sm)) !default;
11$spacing-sibling: props.def(--o-radio--spacing-sibling, props.get(core.$size--300)) !default; 11$spacing-sibling: props.def(--o-radio--spacing-sibling, props.get(core.$size--300)) !default;
12 12
13$key-focus--border-width: props.def( 13$key-focus--border-width: props.def(--o-radio--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
14 --o-radio--key-focus--border-width, 14$key-focus--border-offset: props.def(--o-radio--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
15 props.get(core.$key-focus--border-width) 15$key-focus--outline-width: props.def(--o-radio--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
16) !default;
17$key-focus--border-offset: props.def(
18 --o-radio--key-focus--border-offset,
19 props.get(core.$key-focus--border-offset)
20) !default;
21$key-focus--outline-width: props.def(
22 --o-radio--key-focus--outline-width,
23 props.get(core.$key-focus--outline-width)
24) !default;
25 16
26$circle-border-color: props.def( 17$circle-border-color: props.def(--o-radio--circle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default;
27 --o-radio--circle-border-color, 18$circle-bg-color: props.def(--o-radio--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default;
28 props.get(core.$theme, --text-mute-more),
29 "color"
30) !default;
31$circle-bg-color: props.def(
32 --o-radio--circle-bg-color,
33 props.get(core.$theme, --base, --75),
34 "color"
35) !default;
36 19
37$hover--label-color: props.def( 20$hover--label-color: props.def(--o-radio--hover--label-color, props.get(core.$theme, --heading), 'color') !default;
38 --o-radio--hover--label-color, 21$hover--circle-border-color: props.def(--o-radio--hover--circle-border-color, props.get(core.$theme, --text-mute), 'color') !default;
39 props.get(core.$theme, --heading),
40 "color"
41) !default;
42$hover--circle-border-color: props.def(
43 --o-radio--hover--circle-border-color,
44 props.get(core.$theme, --text-mute),
45 "color"
46) !default;
47 22
48$accent--circle-border-color: props.def( 23$accent--circle-border-color: props.def(--o-radio--accent--circle-border-color, props.get(core.$theme, --accent, --900), 'color') !default;
49 --o-radio--accent--circle-border-color,
50 props.get(core.$theme, --accent, --900),
51 "color"
52) !default;
53 24
54$accent--hover--circle-border-color: props.def( 25$accent--hover--circle-border-color: props.def(--o-radio--accent--hover--circle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default;
55 --o-radio--accent--hover--circle-border-color,
56 props.get(core.$theme, --accent, --1000),
57 "color"
58) !default;
59 26
60$disabled--label-color: props.def( 27$disabled--label-color: props.def(--o-radio--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
61 --o-radio--disabled--label-color, 28$disabled--circle-border-color: props.def(--o-radio--disabled--circle-border-color, props.get(core.$theme, --border-strong), 'color') !default;
62 props.get(core.$theme, --text-disabled), 29$disabled--circle-bg-color: props.def(--o-radio--disabled--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default;
63 "color"
64) !default;
65$disabled--circle-border-color: props.def(
66 --o-radio--disabled--circle-border-color,
67 props.get(core.$theme, --border-strong),
68 "color"
69) !default;
70$disabled--circle-bg-color: props.def(
71 --o-radio--disabled--circle-bg-color,
72 props.get(core.$theme, --base, --75),
73 "color"
74) !default;
75 30
76$key-focus--label-color: props.def( 31$key-focus--label-color: props.def(--o-radio--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default;
77 --o-radio--key-focus--label-color, 32$key-focus--border-color: props.def(--o-radio--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
78 props.get(core.$theme, --focus, --text), 33$key-focus--outline-color: props.def(--o-radio--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
79 "color"
80) !default;
81$key-focus--border-color: props.def(
82 --o-radio--key-focus--border-color,
83 props.get(core.$theme, --focus, --border),
84 "color"
85) !default;
86$key-focus--outline-color: props.def(
87 --o-radio--key-focus--outline-color,
88 props.get(core.$theme, --focus, --outline),
89 "color"
90) !default;
diff --git a/src/objects/_side-nav.scss b/src/objects/_side-nav.scss
index ed0f3dc..272d38c 100644
--- a/src/objects/_side-nav.scss
+++ b/src/objects/_side-nav.scss
@@ -1,79 +1,76 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "icon.vars" as icon; 5@use 'icon.vars' as icon;
6 6
7@forward "side-nav.vars"; 7@forward 'side-nav.vars';
8@use "side-nav.vars" as vars; 8@use 'side-nav.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("side-nav") { 13 @include bem.object('side-nav') {
14 display: flex; 14 display: flex;
15 flex-direction: column; 15 flex-direction: column;
16 gap: props.get(vars.$spacing); 16 gap: props.get(vars.$spacing);
17 17
18 @include bem.elem("header") { 18 @include bem.elem('header') {
19 padding-block: props.get(vars.$item--pad-b); 19 padding-block: props.get(vars.$item--pad-b);
20 padding-inline: props.get(vars.$item--pad-i); 20 padding-inline: props.get(vars.$item--pad-i);
21 font-size: props.get(vars.$header--font-size); 21 font-size: props.get(vars.$header--font-size);
22 font-weight: 500; 22 font-weight: 500;
23 color: props.get(vars.$header--label-color); 23 color: props.get(vars.$header--label-color);
24 text-transform: uppercase; 24 text-transform: uppercase;
25 letter-spacing: 0.5px; 25 letter-spacing: .5px;
26 26
27 @include bem.next-twin-elem { 27 @include bem.next-twin-elem {
28 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); 28 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing));
29 } 29 }
30 } 30 }
31 31
32 @include bem.elem("item") { 32 @include bem.elem('item') {
33 display: block; 33 display: block;
34 padding-block: props.get(vars.$item--pad-b); 34 padding-block: props.get(vars.$item--pad-b);
35 padding-inline: props.get(vars.$item--pad-i); 35 padding-inline: props.get(vars.$item--pad-i);
36 margin: calc(-1 * props.get(vars.$item--key-focus--border-offset)); 36 margin: calc(-1 * props.get(vars.$item--key-focus--border-offset));
37 color: props.get(vars.$item--disabled--label-color); 37 color: props.get(vars.$item--disabled--label-color);
38 background-clip: padding-box; 38 background-clip: padding-box;
39 border: props.get(vars.$item--key-focus--border-offset) solid transparent; 39 border: props.get(vars.$item--key-focus--border-offset) solid transparent;
40 border-radius: calc( 40 border-radius: calc(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset));
41 props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset)
42 );
43 41
44 &:link, 42 &:link,
45 &:visited, 43 &:visited,
46 &:enabled { 44 &:enabled {
47 color: currentColor; 45 color: currentColor;
48 46
49 @include bem.multi("&:hover, &:focus-visible", "is" "selected") { 47 @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') {
50 color: props.get(vars.$item--hover--label-color); 48 color: props.get(vars.$item--hover--label-color);
51 background-color: props.get(vars.$item--hover--bg-color); 49 background-color: props.get(vars.$item--hover--bg-color);
52 } 50 }
53 51
54 &:active { 52 &:active {
55 color: props.get(vars.$item--active--label-color); 53 color: props.get(vars.$item--active--label-color);
56 background-color: props.get(vars.$item--active--bg-color); 54 background-color: props.get(vars.$item--active--bg-color);
57 } 55 }
58 56
59 &:focus-visible { 57 &:focus-visible {
60 outline: props.get(vars.$item--key-focus--border-color) solid 58 outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width);
61 props.get(vars.$item--key-focus--border-width); 59 box-shadow:
62 box-shadow: 0 0 0 60 0
63 calc( 61 0
64 props.get(vars.$item--key-focus--border-width) + 62 0
65 props.get(vars.$item--key-focus--outline-width) 63 calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width))
66 )
67 props.get(vars.$item--key-focus--outline-color); 64 props.get(vars.$item--key-focus--outline-color);
68 } 65 }
69 } 66 }
70 67
71 @include bem.next-elem("header") { 68 @include bem.next-elem('header') {
72 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); 69 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing));
73 } 70 }
74 } 71 }
75 72
76 @include bem.elem("header") { 73 @include bem.elem('header') {
77 &:link, 74 &:link,
78 &:visited, 75 &:visited,
79 &:enabled { 76 &:enabled {
@@ -81,14 +78,14 @@
81 } 78 }
82 } 79 }
83 80
84 @include bem.elem("separator") { 81 @include bem.elem('separator') {
85 block-size: props.get(vars.$separator); 82 block-size: props.get(vars.$separator);
86 } 83 }
87 84
88 @include bem.elem("icon-slot") { 85 @include bem.elem('icon-slot') {
89 display: flex; 86 display: flex;
90 justify-content: center; 87 justify-content: center;
91 inline-size: props.get(icon.$size); 88 inline-size: props.get(icon.$size);
92 } 89 }
93 } 90 }
94} 91}
diff --git a/src/objects/_side-nav.vars.scss b/src/objects/_side-nav.vars.scss
index 8abb0df..d6a7de1 100644
--- a/src/objects/_side-nav.vars.scss
+++ b/src/objects/_side-nav.vars.scss
@@ -1,72 +1,28 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$spacing: props.def(--o-side-nav--spacing, props.get(core.$size--50)) !default; 5$spacing: props.def(--o-side-nav--spacing, props.get(core.$size--50)) !default;
6$header--font-size: props.def( 6$header--font-size: props.def(--o-side-nav--header--font-size, props.get(core.$font-size--50)) !default;
7 --o-side-nav--header--font-size, 7$separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default;
8 props.get(core.$font-size--50)
9) !default;
10$separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default;
11 8
12$item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default; 9$item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default;
13$item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default; 10$item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default;
14$item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default; 11$item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default;
15 12
16$item--key-focus--border-width: props.def( 13$item--key-focus--border-width: props.def(--o-side-nav--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
17 --o-side-nav--item--key-focus--border-width, 14$item--key-focus--border-offset: props.def(--o-side-nav--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
18 props.get(core.$key-focus--border-width) 15$item--key-focus--outline-width: props.def(--o-side-nav--item--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
19) !default;
20$item--key-focus--border-offset: props.def(
21 --o-side-nav--item--key-focus--border-offset,
22 props.get(core.$key-focus--border-offset)
23) !default;
24$item--key-focus--outline-width: props.def(
25 --o-side-nav--item--key-focus--outline-width,
26 props.get(core.$key-focus--outline-width)
27) !default;
28 16
29$header--label-color: props.def( 17$header--label-color: props.def(--o-side-nav--header--label-color, props.get(core.$theme, --text-mute-more), 'color') !default;
30 --o-side-nav--header--label-color,
31 props.get(core.$theme, --text-mute-more),
32 "color"
33) !default;
34 18
35$item--hover--bg-color: props.def( 19$item--hover--bg-color: props.def(--o-side-nav--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
36 --o-side-nav--item--hover--bg-color, 20$item--hover--label-color: props.def(--o-side-nav--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default;
37 props.get(core.$theme, --border-mute),
38 "color"
39) !default;
40$item--hover--label-color: props.def(
41 --o-side-nav--item--hover--label-color,
42 props.get(core.$theme, --heading),
43 "color"
44) !default;
45 21
46$item--active--bg-color: props.def( 22$item--active--bg-color: props.def(--o-side-nav--item--active--bg-color, props.get(core.$theme, --border), 'color') !default;
47 --o-side-nav--item--active--bg-color, 23$item--active--label-color: props.def(--o-side-nav--item--active--label-color, props.get(core.$theme, --heading), 'color') !default;
48 props.get(core.$theme, --border),
49 "color"
50) !default;
51$item--active--label-color: props.def(
52 --o-side-nav--item--active--label-color,
53 props.get(core.$theme, --heading),
54 "color"
55) !default;
56 24
57$item--disabled--label-color: props.def( 25$item--disabled--label-color: props.def(--o-side-nav--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
58 --o-side-nav--item--disabled--label-color,
59 props.get(core.$theme, --text-disabled),
60 "color"
61) !default;
62 26
63$item--key-focus--border-color: props.def( 27$item--key-focus--border-color: props.def(--o-side-nav--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
64 --o-side-nav--item--key-focus--border-color, 28$item--key-focus--outline-color: props.def(--o-side-nav--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
65 props.get(core.$theme, --focus, --border),
66 "color"
67) !default;
68$item--key-focus--outline-color: props.def(
69 --o-side-nav--item--key-focus--outline-color,
70 props.get(core.$theme, --focus, --outline),
71 "color"
72) !default;
diff --git a/src/objects/_status-indicator.scss b/src/objects/_status-indicator.scss
index 8885929..fe8fe26 100644
--- a/src/objects/_status-indicator.scss
+++ b/src/objects/_status-indicator.scss
@@ -1,22 +1,22 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "status-indicator.vars"; 8@forward 'status-indicator.vars';
9@use "status-indicator.vars" as vars; 9@use 'status-indicator.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.object("status-indicator") { 14 @include bem.object('status-indicator') {
15 display: inline-block; 15 display: inline-block;
16 inline-size: props.get(vars.$size); 16 inline-size: props.get(vars.$size);
17 block-size: props.get(vars.$size); 17 block-size: props.get(vars.$size);
18 background-color: props.get(vars.$default); 18 background-color: props.get(vars.$default);
19 border-radius: 10em; 19 border-radius: 10em;
20 20
21 @each $theme in map.keys(props.get(vars.$themes)) { 21 @each $theme in map.keys(props.get(vars.$themes)) {
22 @include bem.is(string.slice($theme, 3)) { 22 @include bem.is(string.slice($theme, 3)) {
diff --git a/src/objects/_status-indicator.vars.scss b/src/objects/_status-indicator.vars.scss
index 66a11e8..dfe628f 100644
--- a/src/objects/_status-indicator.vars.scss
+++ b/src/objects/_status-indicator.vars.scss
@@ -1,32 +1,26 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../config"; 3@use '../config';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$size: props.def(--o-status-indicator--size, props.get(core.$size--125)) !default; 6$size: props.def(--o-status-indicator--size, props.get(core.$size--125)) !default;
7 7
8$default: props.def( 8$default: props.def(--o-status-indicator--default, props.get(core.$theme, --border-strong), 'color') !default;
9 --o-status-indicator--default, 9$primary: props.def(--o-status-indicator--primary, props.get(core.$theme, --text), 'color') !default;
10 props.get(core.$theme, --border-strong),
11 "color"
12) !default;
13$primary: props.def(
14 --o-status-indicator--primary,
15 props.get(core.$theme, --text),
16 "color"
17) !default;
18 10
19$themes-config: ( 11$themes-config: (
20 accent: --accent, 12 accent: --accent,
21 positive: --positive, 13 positive: --positive,
22 negative: --negative, 14 negative: --negative,
23 warning: --warning, 15 warning: --warning,
24) !default; 16) !default;
25 17
26$themes: props.def(--o-status-indicator, (), "color"); 18$themes: props.def(--o-status-indicator, (), 'color');
27 19
28@each $theme, $key in $themes-config { 20@each $theme, $key in $themes-config {
29 @if $theme != --base { 21 @if $theme != --base {
30 $themes: props.merge($themes, (--#{$theme}: props.get(core.$theme, $key, --700))); 22 $themes: props.merge($themes, (
23 --#{$theme}: props.get(core.$theme, $key, --700),
24 ));
31 } 25 }
32} 26}
diff --git a/src/objects/_switch.scss b/src/objects/_switch.scss
index c1f7411..0ef95e6 100644
--- a/src/objects/_switch.scss
+++ b/src/objects/_switch.scss
@@ -1,79 +1,73 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "../core.vars" as core; 5@use '../core.vars' as core;
6 6
7@forward "switch.vars"; 7@forward 'switch.vars';
8@use "switch.vars" as vars; 8@use 'switch.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.object("switch") { 13 @include bem.object('switch') {
14 position: relative; 14 position: relative;
15 display: inline-block; 15 display: inline-block;
16 padding-block: props.get(vars.$pad-b); 16 padding-block: props.get(vars.$pad-b);
17 padding-inline: props.get(vars.$pad-i); 17 padding-inline: props.get(vars.$pad-i);
18 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 18 margin-inline:
19 calc( 19 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
20 props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get( 20 calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset));
21 vars.$key-focus--border-offset
22 )
23 );
24 21
25 @include bem.elem("indicator") { 22 @include bem.elem('indicator') {
26 display: inline-block; 23 display: inline-block;
27 flex: 0 0 auto; 24 flex: 0 0 auto;
28 inline-size: props.get(vars.$inline-size); 25 inline-size: props.get(vars.$inline-size);
29 block-size: props.get(vars.$block-size); 26 block-size: props.get(vars.$block-size);
30 margin-block-start: calc( 27 margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$block-size) - props.get(vars.$key-focus--border-offset));
31 0.5em * props.get(core.$font--standard--line-height) - 0.5 * 28 vertical-align: top;
32 props.get(vars.$block-size) - props.get(vars.$key-focus--border-offset) 29 background-color: props.get(vars.$track-bg-color);
33 ); 30 background-clip: padding-box;
34 vertical-align: top; 31 border: props.get(vars.$key-focus--border-offset) solid transparent;
35 background-color: props.get(vars.$track-bg-color); 32 border-radius: 2em;
36 background-clip: padding-box; 33 transition: background-color .2s ease;
37 border: props.get(vars.$key-focus--border-offset) solid transparent;
38 border-radius: 2em;
39 transition: background-color 0.2s ease;
40 34
41 &::after { 35 &::after {
42 display: block; 36 display: block;
43 inline-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); 37 inline-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width));
44 block-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); 38 block-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width));
45 content: ""; 39 content: '';
46 background-color: props.get(vars.$handle-bg-color); 40 background-color: props.get(vars.$handle-bg-color);
47 border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color); 41 border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color);
48 border-radius: props.get(vars.$inline-size); 42 border-radius: props.get(vars.$inline-size);
49 transition: transform 0.2s ease; 43 transition: transform .2s ease;
50 } 44 }
51 } 45 }
52 46
53 @include bem.elem("label") { 47 @include bem.elem('label') {
54 margin-inline-start: props.get(vars.$label-gap); 48 margin-inline-start: props.get(vars.$label-gap);
55 } 49 }
56 50
57 @include bem.elem("native") { 51 @include bem.elem('native') {
58 position: absolute; 52 position: absolute;
59 inset-block-start: 0; 53 inset-block-start: 0;
60 inset-inline-start: 0; 54 inset-inline-start: 0;
61 z-index: -1; 55 z-index: -1;
62 inline-size: 100%; 56 inline-size: 100%;
63 block-size: 100%; 57 block-size: 100%;
64 padding: 0; 58 padding: 0;
65 margin: 0; 59 margin: 0;
66 overflow: hidden; 60 overflow: hidden;
67 appearance: none; 61 appearance: none;
68 border-radius: props.get(vars.$rounding); 62 border-radius: props.get(vars.$rounding);
69 63
70 &:hover, 64 &:hover,
71 &:focus-visible { 65 &:focus-visible {
72 @include bem.sibling-elem("label") { 66 @include bem.sibling-elem('label') {
73 color: props.get(vars.$hover--label-color); 67 color: props.get(vars.$hover--label-color);
74 } 68 }
75 69
76 @include bem.sibling-elem("indicator") { 70 @include bem.sibling-elem('indicator') {
77 &::after { 71 &::after {
78 border-color: props.get(vars.$hover--handle-border-color); 72 border-color: props.get(vars.$hover--handle-border-color);
79 } 73 }
@@ -81,23 +75,18 @@
81 } 75 }
82 76
83 &:checked { 77 &:checked {
84 @include bem.sibling-elem("indicator") { 78 @include bem.sibling-elem('indicator') {
85 background-color: props.get(vars.$handle-border-color); 79 background-color: props.get(vars.$handle-border-color);
86 80
87 &::after { 81 &::after {
88 border-color: props.get(vars.$handle-border-color); 82 border-color: props.get(vars.$handle-border-color);
89 transform: translate( 83 transform: translate(calc(props.get(vars.$inline-size) - props.get(vars.$block-size) + .5px), 0);
90 calc(
91 props.get(vars.$inline-size) - props.get(vars.$block-size) + 0.5px
92 ),
93 0
94 );
95 } 84 }
96 } 85 }
97 86
98 &:hover, 87 &:hover,
99 &:focus-visible { 88 &:focus-visible {
100 @include bem.sibling-elem("indicator") { 89 @include bem.sibling-elem('indicator') {
101 background-color: props.get(vars.$hover--handle-border-color); 90 background-color: props.get(vars.$hover--handle-border-color);
102 91
103 &::after { 92 &::after {
@@ -108,21 +97,21 @@
108 } 97 }
109 98
110 &:disabled { 99 &:disabled {
111 @include bem.sibling-elem("label") { 100 @include bem.sibling-elem('label') {
112 color: props.get(vars.$disabled--label-color); 101 color: props.get(vars.$disabled--label-color);
113 } 102 }
114 103
115 @include bem.sibling-elem("indicator") { 104 @include bem.sibling-elem('indicator') {
116 background-color: props.get(vars.$disabled--track-bg-color); 105 background-color: props.get(vars.$disabled--track-bg-color);
117 106
118 &::after { 107 &::after {
119 background-color: props.get(vars.$disabled--handle-bg-color); 108 background-color: props.get(vars.$disabled--handle-bg-color);
120 border-color: props.get(vars.$disabled--handle-border-color); 109 border-color: props.get(vars.$disabled--handle-border-color);
121 } 110 }
122 } 111 }
123 112
124 &:checked { 113 &:checked {
125 @include bem.sibling-elem("indicator") { 114 @include bem.sibling-elem('indicator') {
126 background-color: props.get(vars.$disabled--handle-border-color); 115 background-color: props.get(vars.$disabled--handle-border-color);
127 116
128 &::after { 117 &::after {
@@ -133,33 +122,32 @@
133 } 122 }
134 123
135 &:focus-visible { 124 &:focus-visible {
136 @include bem.sibling-elem("label") { 125 @include bem.sibling-elem('label') {
137 color: props.get(vars.$key-focus--label-color); 126 color: props.get(vars.$key-focus--label-color);
138 } 127 }
139 128
140 @include bem.sibling-elem("indicator") { 129 @include bem.sibling-elem('indicator') {
141 outline: props.get(vars.$key-focus--border-color) solid 130 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
142 props.get(vars.$key-focus--border-width); 131 box-shadow:
143 box-shadow: 0 0 0 132 0
144 calc( 133 0
145 props.get(vars.$key-focus--border-width) + 134 0
146 props.get(vars.$key-focus--outline-width) 135 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
147 )
148 props.get(vars.$key-focus--outline-color); 136 props.get(vars.$key-focus--outline-color);
149 } 137 }
150 } 138 }
151 } 139 }
152 140
153 @include bem.modifier("standalone") { 141 @include bem.modifier('standalone') {
154 @include bem.elem("indicator") { 142 @include bem.elem('indicator') {
155 margin-block-start: 0; 143 margin-block-start: 0;
156 } 144 }
157 } 145 }
158 146
159 @include bem.modifier("accent") { 147 @include bem.modifier('accent') {
160 @include bem.elem("native") { 148 @include bem.elem('native') {
161 &:checked { 149 &:checked {
162 @include bem.sibling-elem("indicator") { 150 @include bem.sibling-elem('indicator') {
163 background-color: props.get(vars.$accent--handle-border-color); 151 background-color: props.get(vars.$accent--handle-border-color);
164 152
165 &::after { 153 &::after {
@@ -169,7 +157,7 @@
169 157
170 &:hover, 158 &:hover,
171 &:focus-visible { 159 &:focus-visible {
172 @include bem.sibling-elem("indicator") { 160 @include bem.sibling-elem('indicator') {
173 background-color: props.get(vars.$accent--hover--handle-border-color); 161 background-color: props.get(vars.$accent--hover--handle-border-color);
174 162
175 &::after { 163 &::after {
@@ -180,12 +168,12 @@
180 } 168 }
181 169
182 &:disabled { 170 &:disabled {
183 @include bem.sibling-elem("label") { 171 @include bem.sibling-elem('label') {
184 color: props.get(vars.$disabled--label-color); 172 color: props.get(vars.$disabled--label-color);
185 } 173 }
186 174
187 &:checked { 175 &:checked {
188 @include bem.sibling-elem("indicator") { 176 @include bem.sibling-elem('indicator') {
189 background-color: props.get(vars.$disabled--handle-border-color); 177 background-color: props.get(vars.$disabled--handle-border-color);
190 178
191 &::after { 179 &::after {
diff --git a/src/objects/_switch.vars.scss b/src/objects/_switch.vars.scss
index 6f56ec7..761cacd 100644
--- a/src/objects/_switch.vars.scss
+++ b/src/objects/_switch.vars.scss
@@ -1,101 +1,36 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$inline-size: props.def(--o-switch--inline-size, props.get(core.$size--350)) !default; 5$inline-size: props.def(--o-switch--inline-size, props.get(core.$size--350)) !default;
6$block-size: props.def(--o-switch--block-size, props.get(core.$size--200)) !default; 6$block-size: props.def(--o-switch--block-size, props.get(core.$size--200)) !default;
7$label-gap: props.def(--o-switch--label-gap, props.get(core.$size--125)) !default; 7$label-gap: props.def(--o-switch--label-gap, props.get(core.$size--125)) !default;
8$border-width: props.def(--o-switch--border-width, props.get(core.$border-width--medium)) !default; 8$border-width: props.def(--o-switch--border-width, props.get(core.$border-width--medium)) !default;
9$pad-i: props.def(--o-switch--pad-i, props.get(core.$size--65)) !default; 9$pad-i: props.def(--o-switch--pad-i, props.get(core.$size--65)) !default;
10$pad-b: props.def(--o-switch--pad-b, props.get(core.$size--65)) !default; 10$pad-b: props.def(--o-switch--pad-b, props.get(core.$size--65)) !default;
11$rounding: props.def(--o-switch--rounding, props.get(core.$rounding--sm)) !default; 11$rounding: props.def(--o-switch--rounding, props.get(core.$rounding--sm)) !default;
12$spacing-sibling: props.def(--o-switch--spacing-sibling, props.get(core.$size--300)) !default; 12$spacing-sibling: props.def(--o-switch--spacing-sibling, props.get(core.$size--300)) !default;
13 13
14$key-focus--border-width: props.def( 14$key-focus--border-width: props.def(--o-switch--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
15 --o-switch--key-focus--border-width, 15$key-focus--border-offset: props.def(--o-switch--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
16 props.get(core.$key-focus--border-width) 16$key-focus--outline-width: props.def(--o-switch--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
17) !default;
18$key-focus--border-offset: props.def(
19 --o-switch--key-focus--border-offset,
20 props.get(core.$key-focus--border-offset)
21) !default;
22$key-focus--outline-width: props.def(
23 --o-switch--key-focus--outline-width,
24 props.get(core.$key-focus--outline-width)
25) !default;
26 17
27$track-bg-color: props.def( 18$track-bg-color: props.def(--o-switch--track-bg-color, props.get(core.$theme, --border), 'color') !default;
28 --o-switch--track-bg-color, 19$handle-border-color: props.def(--o-switch--handle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default;
29 props.get(core.$theme, --border), 20$handle-bg-color: props.def(--o-switch--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default;
30 "color"
31) !default;
32$handle-border-color: props.def(
33 --o-switch--handle-border-color,
34 props.get(core.$theme, --text-mute-more),
35 "color"
36) !default;
37$handle-bg-color: props.def(
38 --o-switch--handle-bg-color,
39 props.get(core.$theme, --base, --50),
40 "color"
41) !default;
42 21
43$hover--label-color: props.def( 22$hover--label-color: props.def(--o-switch--hover--label-color, props.get(core.$theme, --heading), 'color') !default;
44 --o-switch--hover--label-color, 23$hover--handle-border-color: props.def(--o-switch--hover--handle-border-color, props.get(core.$theme, --text-mute), 'color') !default;
45 props.get(core.$theme, --heading),
46 "color"
47) !default;
48$hover--handle-border-color: props.def(
49 --o-switch--hover--handle-border-color,
50 props.get(core.$theme, --text-mute),
51 "color"
52) !default;
53 24
54$accent--handle-border-color: props.def( 25$accent--handle-border-color: props.def(--o-switch--accent--handle-border-color, props.get(core.$theme, --accent, --900), 'color') !default;
55 --o-switch--accent--handle-border-color,
56 props.get(core.$theme, --accent, --900),
57 "color"
58) !default;
59 26
60$accent--hover--handle-border-color: props.def( 27$accent--hover--handle-border-color: props.def(--o-switch--accent--hover--handle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default;
61 --o-switch--accent--hover--handle-border-color,
62 props.get(core.$theme, --accent, --1000),
63 "color"
64) !default;
65 28
66$disabled--label-color: props.def( 29$disabled--label-color: props.def(--o-switch--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default;
67 --o-switch--disabled--label-color, 30$disabled--track-bg-color: props.def(--o-switch--disabled--track-bg-color, props.get(core.$theme, --border), 'color') !default;
68 props.get(core.$theme, --text-disabled), 31$disabled--handle-border-color: props.def(--o-switch--disabled--handle-border-color, props.get(core.$theme, --border-strong), 'color') !default;
69 "color" 32$disabled--handle-bg-color: props.def(--o-switch--disabled--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default;
70) !default;
71$disabled--track-bg-color: props.def(
72 --o-switch--disabled--track-bg-color,
73 props.get(core.$theme, --border),
74 "color"
75) !default;
76$disabled--handle-border-color: props.def(
77 --o-switch--disabled--handle-border-color,
78 props.get(core.$theme, --border-strong),
79 "color"
80) !default;
81$disabled--handle-bg-color: props.def(
82 --o-switch--disabled--handle-bg-color,
83 props.get(core.$theme, --base, --50),
84 "color"
85) !default;
86 33
87$key-focus--label-color: props.def( 34$key-focus--label-color: props.def(--o-switch--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default;
88 --o-switch--key-focus--label-color, 35$key-focus--border-color: props.def(--o-switch--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
89 props.get(core.$theme, --focus, --text), 36$key-focus--outline-color: props.def(--o-switch--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
90 "color"
91) !default;
92$key-focus--border-color: props.def(
93 --o-switch--key-focus--border-color,
94 props.get(core.$theme, --focus, --border),
95 "color"
96) !default;
97$key-focus--outline-color: props.def(
98 --o-switch--key-focus--outline-color,
99 props.get(core.$theme, --focus, --outline),
100 "color"
101) !default;
diff --git a/src/objects/_tabbar.scss b/src/objects/_tabbar.scss
index 02519f9..d43208f 100644
--- a/src/objects/_tabbar.scss
+++ b/src/objects/_tabbar.scss
@@ -1,77 +1,75 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "tabbar.vars"; 8@forward 'tabbar.vars';
9@use "tabbar.vars" as vars; 9@use 'tabbar.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.object("tabbar") { 14 @include bem.object('tabbar') {
15 min-inline-size: 0; 15 min-inline-size: 0;
16 block-size: props.get(vars.$block-size); 16 block-size: props.get(vars.$block-size);
17 overflow: hidden; 17 overflow: hidden;
18 18
19 &::after { 19 &::after {
20 display: block; 20 display: block;
21 block-size: props.get(vars.$border--width); 21 block-size: props.get(vars.$border--width);
22 margin-block-start: calc(-1 * props.get(vars.$border--width)); 22 margin-block-start: calc(-1 * props.get(vars.$border--width));
23 content: ""; 23 content: '';
24 background-color: props.get(vars.$railing--bg-color); 24 background-color: props.get(vars.$railing--bg-color);
25 } 25 }
26 26
27 @include bem.elem("tabs") { 27 @include bem.elem('tabs') {
28 display: flex; 28 display: flex;
29 block-size: 100%; 29 block-size: 100%;
30 overflow-inline: auto; 30 overflow-inline: auto;
31 } 31 }
32 32
33 @include bem.modifier("quiet") { 33 @include bem.modifier('quiet') {
34 box-shadow: none; 34 box-shadow: none;
35 } 35 }
36 36
37 @include bem.modifier("adapt") { 37 @include bem.modifier('adapt') {
38 block-size: 100%; 38 block-size: 100%;
39 } 39 }
40 40
41 @include bem.modifier("snap") { 41 @include bem.modifier('snap') {
42 scroll-snap-align: start; 42 scroll-snap-align: start;
43 } 43 }
44 44
45 @include bem.elem("tab") { 45 @include bem.elem('tab') {
46 position: relative; 46 position: relative;
47 display: flex; 47 display: flex;
48 align-items: center; 48 align-items: center;
49 padding-inline: calc(0.5 * props.get(vars.$spacing)); 49 padding-inline: calc(.5 * props.get(vars.$spacing));
50 margin-inline: calc(-0.5 * props.get(vars.$spacing)); 50 margin-inline: calc(-.5 * props.get(vars.$spacing));
51 color: props.get(vars.$tab--text-color); 51 color: props.get(vars.$tab--text-color);
52 white-space: nowrap; 52 white-space: nowrap;
53 53
54 &::before { 54 &::before {
55 position: absolute; 55 position: absolute;
56 inset-block-start: 50%; 56 inset-block-start: 50%;
57 inset-inline: calc( 57 inset-inline: calc(-1 * props.get(vars.$tab--pad-i) + .5 * props.get(vars.$spacing));
58 -1 * props.get(vars.$tab--pad-i) + 0.5 * props.get(vars.$spacing) 58 z-index: -10;
59 ); 59 block-size: 1.5em;
60 z-index: -10; 60 content: '';
61 block-size: 1.5em; 61 border-radius: props.get(vars.$rounding);
62 content: ""; 62 transform: translateY(-50%);
63 border-radius: props.get(vars.$rounding);
64 transform: translateY(-50%);
65 } 63 }
66 64
67 &::after { 65 &::after {
68 position: absolute; 66 position: absolute;
69 inset-block-end: 0; 67 inset-block-end: 0;
70 inset-inline: calc(0.5 * props.get(vars.$spacing)); 68 inset-inline: calc(.5 * props.get(vars.$spacing));
71 z-index: 10; 69 z-index: 10;
72 display: none; 70 display: none;
73 block-size: props.get(vars.$indicator--width); 71 block-size: props.get(vars.$indicator--width);
74 content: ""; 72 content: '';
75 background-color: props.get(vars.$tab--selected--text-color); 73 background-color: props.get(vars.$tab--selected--text-color);
76 } 74 }
77 75
@@ -85,25 +83,21 @@
85 83
86 &:focus-visible { 84 &:focus-visible {
87 &::before { 85 &::before {
88 color: props.get(vars.$key-focus--text-color); 86 color: props.get(vars.$key-focus--text-color);
89 text-decoration: none; 87 text-decoration: none;
90 outline: props.get(vars.$key-focus--border-color) solid 88 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
91 props.get(vars.$key-focus--border-width);
92 box-shadow: 0 0 0 89 box-shadow: 0 0 0
93 calc( 90 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
94 props.get(vars.$key-focus--border-width) +
95 props.get(vars.$key-focus--outline-width)
96 )
97 props.get(vars.$key-focus--outline-color); 91 props.get(vars.$key-focus--outline-color);
98 } 92 }
99 } 93 }
100 } 94 }
101 95
102 @include bem.next-twin-elem { 96 @include bem.next-twin-elem {
103 margin-inline-start: calc(0.5 * props.get(vars.$spacing)); 97 margin-inline-start: calc(.5 * props.get(vars.$spacing));
104 } 98 }
105 99
106 @include bem.is("selected") { 100 @include bem.is('selected') {
107 color: props.get(vars.$tab--selected--text-color); 101 color: props.get(vars.$tab--selected--text-color);
108 102
109 &::after { 103 &::after {
@@ -112,13 +106,13 @@
112 } 106 }
113 } 107 }
114 108
115 @include bem.modifier("accent") { 109 @include bem.modifier('accent') {
116 @include bem.elem("tab") { 110 @include bem.elem('tab') {
117 &::after { 111 &::after {
118 background-color: props.get(vars.$tab--accent--text-color); 112 background-color: props.get(vars.$tab--accent--text-color);
119 } 113 }
120 114
121 @include bem.is("selected") { 115 @include bem.is('selected') {
122 color: props.get(vars.$tab--accent--text-color); 116 color: props.get(vars.$tab--accent--text-color);
123 } 117 }
124 } 118 }
diff --git a/src/objects/_tabbar.vars.scss b/src/objects/_tabbar.vars.scss
index d26f302..d9cc53e 100644
--- a/src/objects/_tabbar.vars.scss
+++ b/src/objects/_tabbar.vars.scss
@@ -1,66 +1,26 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$block-size: props.def(--o-tabbar--block-size, props.get(core.$size--700)) !default; 6$block-size: props.def(--o-tabbar--block-size, props.get(core.$size--700)) !default;
7$rounding: props.def(--o-tabbar--rounding, props.get(core.$rounding--sm)) !default; 7$rounding: props.def(--o-tabbar--rounding, props.get(core.$rounding--sm)) !default;
8$spacing: props.def(--o-tabbar--spacing, props.get(core.$size--400)) !default; 8$spacing: props.def(--o-tabbar--spacing, props.get(core.$size--400)) !default;
9$tab--pad-i: props.def(--o-tabbar--tab--pad-i, props.get(core.$size--50)) !default; 9$tab--pad-i: props.def(--o-tabbar--tab--pad-i, props.get(core.$size--50)) !default;
10 10
11$border--width: props.def(--o-tabbar--border--width, props.get(core.$border-width--thin)) !default; 11$border--width: props.def(--o-tabbar--border--width, props.get(core.$border-width--thin)) !default;
12$indicator--width: props.def( 12$indicator--width: props.def(--o-tabbar--indicator--width, props.get(core.$border-width--medium)) !default;
13 --o-tabbar--indicator--width,
14 props.get(core.$border-width--medium)
15) !default;
16 13
17$key-focus--border-width: props.def( 14$key-focus--border-width: props.def(--o-tabbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
18 --o-tabbar--key-focus--border-width, 15$key-focus--border-offset: props.def(--o-tabbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
19 props.get(core.$key-focus--border-width) 16$key-focus--outline-width: props.def(--o-tabbar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
20) !default;
21$key-focus--border-offset: props.def(
22 --o-tabbar--key-focus--border-offset,
23 props.get(core.$key-focus--border-offset)
24) !default;
25$key-focus--outline-width: props.def(
26 --o-tabbar--key-focus--outline-width,
27 props.get(core.$key-focus--outline-width)
28) !default;
29 17
30$tab--text-color: props.def( 18$tab--text-color: props.def(--o-tabbar--tab--text-color, props.get(core.$theme, --text-mute), 'color') !default;
31 --o-tabbar--tab--text-color, 19$tab--selected--text-color: props.def(--o-tabbar--tab--selected--text-color, props.get(core.$theme, --heading), 'color') !default;
32 props.get(core.$theme, --text-mute), 20$tab--accent--text-color: props.def(--o-tabbar--tab--accent--text-color, props.get(core.$theme, --accent, --1100), 'color') !default;
33 "color"
34) !default;
35$tab--selected--text-color: props.def(
36 --o-tabbar--tab--selected--text-color,
37 props.get(core.$theme, --heading),
38 "color"
39) !default;
40$tab--accent--text-color: props.def(
41 --o-tabbar--tab--accent--text-color,
42 props.get(core.$theme, --accent, --1100),
43 "color"
44) !default;
45 21
46$railing--bg-color: props.def( 22$railing--bg-color: props.def(--o-tabbar--railing--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
47 --o-tabbar--railing--bg-color,
48 props.get(core.$theme, --border-mute),
49 "color"
50) !default;
51 23
52$key-focus--text-color: props.def( 24$key-focus--text-color: props.def(--o-tabbar--key-focus--text-color, props.get(core.$theme, --focus, --text), 'color') !default;
53 --o-tabbar--key-focus--text-color, 25$key-focus--border-color: props.def(--o-tabbar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
54 props.get(core.$theme, --focus, --text), 26$key-focus--outline-color: props.def(--o-tabbar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
55 "color"
56) !default;
57$key-focus--border-color: props.def(
58 --o-tabbar--key-focus--border-color,
59 props.get(core.$theme, --focus, --border),
60 "color"
61) !default;
62$key-focus--outline-color: props.def(
63 --o-tabbar--key-focus--outline-color,
64 props.get(core.$theme, --focus, --outline),
65 "color"
66) !default;
diff --git a/src/objects/_table.scss b/src/objects/_table.scss
index a985f78..effa61f 100644
--- a/src/objects/_table.scss
+++ b/src/objects/_table.scss
@@ -1,57 +1,57 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "table.vars"; 6@forward 'table.vars';
7@use "table.vars" as vars; 7@use 'table.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.object("table") { 12 @include bem.object('table') {
13 border-spacing: 0; 13 border-spacing: 0;
14 border-collapse: separate; 14 border-collapse: separate;
15 15
16 @include bem.modifier("fixed") { 16 @include bem.modifier('fixed') {
17 table-layout: fixed; 17 table-layout: fixed;
18 } 18 }
19 19
20 @include bem.elem("head-cell") { 20 @include bem.elem('head-cell') {
21 padding-block: props.get(vars.$pad-b); 21 padding-block: props.get(vars.$pad-b);
22 padding-inline: props.get(vars.$pad-i); 22 padding-inline: props.get(vars.$pad-i);
23 font-family: props.get(vars.$heading--font-family); 23 font-family: props.get(vars.$heading--font-family);
24 font-size: props.get(vars.$heading--font-size); 24 font-size: props.get(vars.$heading--font-size);
25 font-weight: props.get(vars.$heading--font-weight); 25 font-weight: props.get(vars.$heading--font-weight);
26 color: props.get(vars.$heading-color); 26 color: props.get(vars.$heading-color);
27 text-align: start; 27 text-align: start;
28 text-transform: props.get(vars.$heading--text-transform); 28 text-transform: props.get(vars.$heading--text-transform);
29 letter-spacing: props.get(vars.$heading--letter-spacing); 29 letter-spacing: props.get(vars.$heading--letter-spacing);
30 } 30 }
31 31
32 @include bem.elem("cell") { 32 @include bem.elem('cell') {
33 padding-block: props.get(vars.$pad-b); 33 padding-block: props.get(vars.$pad-b);
34 padding-inline: props.get(vars.$pad-i); 34 padding-inline: props.get(vars.$pad-i);
35 border-color: props.get(vars.$border-color); 35 border-color: props.get(vars.$border-color);
36 border-style: solid; 36 border-style: solid;
37 border-width: 0; 37 border-width: 0;
38 border-block-start-width: props.get(vars.$border-width); 38 border-block-start-width: props.get(vars.$border-width);
39 39
40 @include bem.modifier("divider") { 40 @include bem.modifier('divider') {
41 border-inline-end-width: props.get(vars.$border-width); 41 border-inline-end-width: props.get(vars.$border-width);
42 } 42 }
43 } 43 }
44 44
45 @include bem.elem("row") { 45 @include bem.elem('row') {
46 &:last-child { 46 &:last-child {
47 @include bem.elem("cell") { 47 @include bem.elem('cell') {
48 border-block-end-width: props.get(vars.$border-width); 48 border-block-end-width: props.get(vars.$border-width);
49 } 49 }
50 } 50 }
51 } 51 }
52 52
53 @include bem.modifier("flush") { 53 @include bem.modifier('flush') {
54 @include bem.elem("head-cell", "cell") { 54 @include bem.elem('head-cell', 'cell') {
55 &:first-child { 55 &:first-child {
56 padding-inline-start: 0; 56 padding-inline-start: 0;
57 } 57 }
@@ -62,8 +62,8 @@
62 } 62 }
63 } 63 }
64 64
65 @include bem.modifier("box") { 65 @include bem.modifier('box') {
66 @include bem.elem("cell") { 66 @include bem.elem('cell') {
67 background-color: props.get(vars.$box--bg-color); 67 background-color: props.get(vars.$box--bg-color);
68 68
69 &:first-child { 69 &:first-child {
@@ -75,9 +75,9 @@
75 } 75 }
76 } 76 }
77 77
78 @include bem.elem("row") { 78 @include bem.elem('row') {
79 &:first-child { 79 &:first-child {
80 @include bem.elem("cell") { 80 @include bem.elem('cell') {
81 &:first-child { 81 &:first-child {
82 border-start-start-radius: props.get(vars.$rounding); 82 border-start-start-radius: props.get(vars.$rounding);
83 } 83 }
@@ -89,7 +89,7 @@
89 } 89 }
90 90
91 &:last-child { 91 &:last-child {
92 @include bem.elem("cell") { 92 @include bem.elem('cell') {
93 &:first-child { 93 &:first-child {
94 border-end-start-radius: props.get(vars.$rounding); 94 border-end-start-radius: props.get(vars.$rounding);
95 } 95 }
@@ -102,35 +102,35 @@
102 } 102 }
103 } 103 }
104 104
105 @include bem.modifier("interactive") { 105 @include bem.modifier('interactive') {
106 @include bem.elem("row") { 106 @include bem.elem('row') {
107 @include bem.elem("cell") { 107 @include bem.elem('cell') {
108 cursor: pointer; 108 cursor: pointer;
109 } 109 }
110 110
111 &:hover { 111 &:hover {
112 @include bem.elem("cell") { 112 @include bem.elem('cell') {
113 background-color: props.get(vars.$hover--bg-color); 113 background-color: props.get(vars.$hover--bg-color);
114 } 114 }
115 } 115 }
116 116
117 &:active { 117 &:active {
118 @include bem.elem("cell") { 118 @include bem.elem('cell') {
119 background-color: props.get(vars.$active--bg-color); 119 background-color: props.get(vars.$active--bg-color);
120 } 120 }
121 } 121 }
122 } 122 }
123 123
124 @include bem.modifier("box") { 124 @include bem.modifier('box') {
125 @include bem.elem("row") { 125 @include bem.elem('row') {
126 &:hover { 126 &:hover {
127 @include bem.elem("cell") { 127 @include bem.elem('cell') {
128 background-color: props.get(vars.$box--hover--bg-color); 128 background-color: props.get(vars.$box--hover--bg-color);
129 } 129 }
130 } 130 }
131 131
132 &:active { 132 &:active {
133 @include bem.elem("cell") { 133 @include bem.elem('cell') {
134 background-color: props.get(vars.$box--active--bg-color); 134 background-color: props.get(vars.$box--active--bg-color);
135 } 135 }
136 } 136 }
@@ -138,8 +138,8 @@
138 } 138 }
139 } 139 }
140 140
141 @include bem.modifier("sm") { 141 @include bem.modifier('sm') {
142 @include bem.elem("head-cell", "cell") { 142 @include bem.elem('head-cell', 'cell') {
143 padding-block: props.get(vars.$pad-b--sm); 143 padding-block: props.get(vars.$pad-b--sm);
144 } 144 }
145 } 145 }
diff --git a/src/objects/_table.vars.scss b/src/objects/_table.vars.scss
index e00010f..7c5683c 100644
--- a/src/objects/_table.vars.scss
+++ b/src/objects/_table.vars.scss
@@ -1,59 +1,25 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$pad-i: props.def(--o-table--pad-i, props.get(core.$size--175)) !default; 5$pad-i: props.def(--o-table--pad-i, props.get(core.$size--175)) !default;
6$pad-b: props.def(--o-table--pad-b, props.get(core.$size--125)) !default; 6$pad-b: props.def(--o-table--pad-b, props.get(core.$size--125)) !default;
7$rounding: props.def(--o-table--rounding, props.get(core.$rounding--sm)) !default; 7$rounding: props.def(--o-table--rounding, props.get(core.$rounding--sm)) !default;
8$border-width: props.def(--o-table--border-width, props.get(core.$border-width--thin)) !default; 8$border-width: props.def(--o-table--border-width, props.get(core.$border-width--thin)) !default;
9 9
10$heading--font-family: props.def( 10$heading--font-family: props.def(--o-table--heading--font-family, props.get(core.$font--standard--family)) !default;
11 --o-table--heading--font-family, 11$heading--font-size: props.def(--o-table--heading--font-size, props.get(core.$font-size--50)) !default;
12 props.get(core.$font--standard--family) 12$heading--font-weight: props.def(--o-table--heading--font-weight, bold) !default;
13) !default;
14$heading--font-size: props.def(
15 --o-table--heading--font-size,
16 props.get(core.$font-size--50)
17) !default;
18$heading--font-weight: props.def(--o-table--heading--font-weight, bold) !default;
19$heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default; 13$heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default;
20$heading--letter-spacing: props.def(--o-table--heading--letter-spacing, 0.5px) !default; 14$heading--letter-spacing: props.def(--o-table--heading--letter-spacing, .5px) !default;
21 15
22$pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default; 16$pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default;
23 17
24$border-color: props.def( 18$border-color: props.def(--o-table--border-color, props.get(core.$theme, --border), 'color') !default;
25 --o-table--border-color, 19$heading-color: props.def(--o-table--heading-color, props.get(core.$theme, --heading), 'color') !default;
26 props.get(core.$theme, --border), 20$hover--bg-color: props.def(--o-table--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
27 "color" 21$active--bg-color: props.def(--o-table--active--bg-color, props.get(core.$theme, --border), 'color') !default;
28) !default;
29$heading-color: props.def(
30 --o-table--heading-color,
31 props.get(core.$theme, --heading),
32 "color"
33) !default;
34$hover--bg-color: props.def(
35 --o-table--hover--bg-color,
36 props.get(core.$theme, --border-mute),
37 "color"
38) !default;
39$active--bg-color: props.def(
40 --o-table--active--bg-color,
41 props.get(core.$theme, --border),
42 "color"
43) !default;
44 22
45$box--bg-color: props.def( 23$box--bg-color: props.def(--o-table--box--bg-color, props.get(core.$theme, --base, --50), 'color') !default;
46 --o-table--box--bg-color, 24$box--hover--bg-color: props.def(--o-table--box--hover--bg-color, props.get(core.$theme, --bg-base), 'color') !default;
47 props.get(core.$theme, --base, --50), 25$box--active--bg-color: props.def(--o-table--box--active--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
48 "color"
49) !default;
50$box--hover--bg-color: props.def(
51 --o-table--box--hover--bg-color,
52 props.get(core.$theme, --bg-base),
53 "color"
54) !default;
55$box--active--bg-color: props.def(
56 --o-table--box--active--bg-color,
57 props.get(core.$theme, --border-mute),
58 "color"
59) !default;
diff --git a/src/objects/_text-field.scss b/src/objects/_text-field.scss
index a8d3ec8..5a48df3 100644
--- a/src/objects/_text-field.scss
+++ b/src/objects/_text-field.scss
@@ -1,91 +1,84 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "text-field.vars"; 6@forward 'text-field.vars';
7@use "text-field.vars" as vars; 7@use 'text-field.vars' as vars;
8 8
9@mixin -invalid { 9@mixin -invalid {
10 $focus-border-offset: calc( 10 $focus-border-offset: calc(props.get(vars.$border-width) - props.get(vars.$focus--border-width));
11 props.get(vars.$border-width) - props.get(vars.$focus--border-width)
12 );
13 11
14 @include bem.sibling-elem("bg") { 12 @include bem.sibling-elem('bg') {
15 inset-block: $focus-border-offset; 13 inset-block: $focus-border-offset;
16 inset-inline: $focus-border-offset; 14 inset-inline: $focus-border-offset;
17 border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color); 15 border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color);
18 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 16 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
19 } 17 }
20 18
21 &:hover { 19 &:hover {
22 @include bem.sibling-elem("bg") { 20 @include bem.sibling-elem('bg') {
23 border-color: props.get(vars.$error--hover--border-color); 21 border-color: props.get(vars.$error--hover--border-color);
24 } 22 }
25 } 23 }
26 24
27 &:focus { 25 &:focus {
28 @include bem.sibling-elem("bg") { 26 @include bem.sibling-elem('bg') {
29 border-color: props.get(vars.$error--focus--border-color); 27 border-color: props.get(vars.$error--focus--border-color);
30 } 28 }
31 } 29 }
32} 30}
33 31
34@mixin -keyboard-focus { 32@mixin -keyboard-focus {
35 @include bem.sibling-elem("bg") { 33 @include bem.sibling-elem('bg') {
36 outline: props.get(vars.$key-focus--outline-color) solid 34 outline: props.get(vars.$key-focus--outline-color) solid props.get(vars.$key-focus--border-width);
37 props.get(vars.$key-focus--border-width); 35 border-color: props.get(vars.$key-focus--border-color);
38 border-color: props.get(vars.$key-focus--border-color);
39 //outline-offset: props.get(vars.$focus --border); 36 //outline-offset: props.get(vars.$focus --border);
40 } 37 }
41} 38}
42 39
43@mixin styles { 40@mixin styles {
44 @include materialize-at-root(meta.module-variables("vars")); 41 @include materialize-at-root(meta.module-variables('vars'));
45 42
46 @include bem.object("text-field") { 43 @include bem.object('text-field') {
47 $focus-border-offset: calc( 44 $focus-border-offset: calc(props.get(vars.$border-width) - props.get(vars.$focus--border-width));
48 props.get(vars.$border-width) - props.get(vars.$focus--border-width)
49 );
50 45
51 position: relative; 46 position: relative;
52 min-inline-size: 0; 47 min-inline-size: 0;
53 background-color: props.get(vars.$bg-color); 48 background-color: props.get(vars.$bg-color);
54 border-radius: props.get(vars.$rounding); 49 border-radius: props.get(vars.$rounding);
55 50
56 @include bem.elem("bg") { 51 @include bem.elem('bg') {
57 position: absolute; 52 position: absolute;
58 inset-block: 0; 53 inset-block: 0;
59 inset-inline: 0; 54 inset-inline: 0;
60 display: block; 55 display: block;
61 pointer-events: none; 56 pointer-events: none;
62 border: props.get(vars.$border-width) solid props.get(vars.$border-color); 57 border: props.get(vars.$border-width) solid props.get(vars.$border-color);
63 border-radius: props.get(vars.$rounding); 58 border-radius: props.get(vars.$rounding);
64 } 59 }
65 60
66 @include bem.elem("native") { 61 @include bem.elem('native') {
67 box-sizing: border-box; 62 box-sizing: border-box;
68 inline-size: 100%; 63 inline-size: 100%;
69 padding-block: calc( 64 padding-block: calc(props.get(vars.$pad-b) - .5em * (props.get(vars.$line-height) - 1));
70 props.get(vars.$pad-b) - 0.5em * (props.get(vars.$line-height) - 1) 65 padding-inline: props.get(vars.$pad-i);
71 ); 66 font: inherit;
72 padding-inline: props.get(vars.$pad-i); 67 line-height: props.get(vars.$line-height);
73 font: inherit; 68 color: props.get(vars.$text-color);
74 line-height: props.get(vars.$line-height); 69 appearance: none;
75 color: props.get(vars.$text-color); 70 resize: none;
76 appearance: none;
77 resize: none;
78 background-color: transparent; 71 background-color: transparent;
79 border: 1px solid transparent; 72 border: 1px solid transparent;
80 73
81 &::placeholder { 74 &::placeholder {
82 font-style: italic; 75 font-style: italic;
83 color: props.get(vars.$placeholder-color); 76 color: props.get(vars.$placeholder-color);
84 opacity: 1; 77 opacity: 1;
85 } 78 }
86 79
87 &:hover { 80 &:hover {
88 @include bem.sibling-elem("bg") { 81 @include bem.sibling-elem('bg') {
89 border-color: props.get(vars.$hover--border-color); 82 border-color: props.get(vars.$hover--border-color);
90 } 83 }
91 } 84 }
@@ -93,11 +86,10 @@
93 &:focus { 86 &:focus {
94 outline: 0; 87 outline: 0;
95 88
96 @include bem.sibling-elem("bg") { 89 @include bem.sibling-elem('bg') {
97 inset-block: $focus-border-offset; 90 inset-block: $focus-border-offset;
98 inset-inline: $focus-border-offset; 91 inset-inline: $focus-border-offset;
99 border: props.get(vars.$focus--border-width) solid 92 border: props.get(vars.$focus--border-width) solid props.get(vars.$focus--border-color);
100 props.get(vars.$focus--border-color);
101 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 93 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
102 } 94 }
103 } 95 }
@@ -112,49 +104,46 @@
112 } 104 }
113 } 105 }
114 106
115 @include bem.modifier("extended") { 107 @include bem.modifier('extended') {
116 padding: props.get(vars.$extended--pad); 108 padding: props.get(vars.$extended--pad);
117 109
118 @include bem.multi("&", "elem" "bg") { 110 @include bem.multi('&', 'elem' 'bg') {
119 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad)); 111 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad));
120 } 112 }
121 113
122 @include bem.elem("native") { 114 @include bem.elem('native') {
123 &:focus { 115 &:focus {
124 @include bem.sibling-elem("bg") { 116 @include bem.sibling-elem('bg') {
125 border-radius: calc( 117 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad) - $focus-border-offset);
126 props.get(vars.$rounding) + props.get(vars.$extended--pad) -
127 $focus-border-offset
128 );
129 } 118 }
130 } 119 }
131 } 120 }
132 } 121 }
133 122
134 @include bem.modifier("pill") { 123 @include bem.modifier('pill') {
135 @include bem.multi("&", "elem" "bg") { 124 @include bem.multi('&', 'elem' 'bg') {
136 border-radius: 100em; 125 border-radius: 100em;
137 } 126 }
138 127
139 @include bem.elem("native") { 128 @include bem.elem('native') {
140 padding-inline: props.get(vars.$pad-i-pill); 129 padding-inline: props.get(vars.$pad-i-pill);
141 130
142 &:focus { 131 &:focus {
143 @include bem.sibling-elem("bg") { 132 @include bem.sibling-elem('bg') {
144 border-radius: 100em; 133 border-radius: 100em;
145 } 134 }
146 } 135 }
147 } 136 }
148 137
149 @include bem.modifier("extended") { 138 @include bem.modifier('extended') {
150 @include bem.elem("native") { 139 @include bem.elem('native') {
151 padding-inline: props.get(vars.$pad-i); 140 padding-inline: props.get(vars.$pad-i);
152 } 141 }
153 } 142 }
154 } 143 }
155 144
156 @include bem.is("invalid") { 145 @include bem.is('invalid') {
157 @include bem.elem("native") { 146 @include bem.elem('native') {
158 @include -invalid; 147 @include -invalid;
159 148
160 &:focus-visible { 149 &:focus-visible {
@@ -163,10 +152,10 @@
163 } 152 }
164 } 153 }
165 154
166 @include bem.is("disabled") { 155 @include bem.is('disabled') {
167 background-color: props.get(vars.$disabled--bg-color); 156 background-color: props.get(vars.$disabled--bg-color);
168 157
169 @include bem.elem("native") { 158 @include bem.elem('native') {
170 color: props.get(vars.$disabled--text-color); 159 color: props.get(vars.$disabled--text-color);
171 160
172 &::placeholder { 161 &::placeholder {
@@ -174,21 +163,21 @@
174 } 163 }
175 } 164 }
176 165
177 @include bem.elem("bg") { 166 @include bem.elem('bg') {
178 border-color: props.get(vars.$disabled--border-color); 167 border-color: props.get(vars.$disabled--border-color);
179 } 168 }
180 169
181 @include bem.is("invalid") { 170 @include bem.is('invalid') {
182 @include bem.elem("native") { 171 @include bem.elem('native') {
183 @include bem.sibling-elem("bg") { 172 @include bem.sibling-elem('bg') {
184 border-color: props.get(vars.$disabled--border-color); 173 border-color: props.get(vars.$disabled--border-color);
185 } 174 }
186 } 175 }
187 } 176 }
188 177
189 @include bem.elem("native") { 178 @include bem.elem('native') {
190 &:invalid { 179 &:invalid {
191 @include bem.sibling-elem("bg") { 180 @include bem.sibling-elem('bg') {
192 border-color: props.get(vars.$disabled--border-color); 181 border-color: props.get(vars.$disabled--border-color);
193 } 182 }
194 } 183 }
diff --git a/src/objects/_text-field.vars.scss b/src/objects/_text-field.vars.scss
index 9a2a16a..ef06822 100644
--- a/src/objects/_text-field.vars.scss
+++ b/src/objects/_text-field.vars.scss
@@ -1,108 +1,39 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../core.vars" as core; 3@use '../core.vars' as core;
4 4
5$line-height: props.def(--o-text-field--line-height, 1.4) !default; 5$line-height: props.def(--o-text-field--line-height, 1.4) !default;
6$pad-i: props.def(--o-text-field--pad-i, props.get(core.$size--125)) !default; 6$pad-i: props.def(--o-text-field--pad-i, props.get(core.$size--125)) !default;
7$pad-i-pill: props.def(--o-text-field--pad-i-pill, props.get(core.$size--175)) !default; 7$pad-i-pill: props.def(--o-text-field--pad-i-pill, props.get(core.$size--175)) !default;
8$pad-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default; 8$pad-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default;
9$border-width: props.def( 9$border-width: props.def(--o-text-field--border-width, props.get(core.$border-width--thin)) !default;
10 --o-text-field--border-width, 10$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default;
11 props.get(core.$border-width--thin)
12) !default;
13$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default;
14 11
15$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default; 12$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default;
16 13
17$focus--border-width: props.def( 14$focus--border-width: props.def(--o-text-field--focus--border-width, props.get(core.$border-width--medium)) !default;
18 --o-text-field--focus--border-width,
19 props.get(core.$border-width--medium)
20) !default;
21 15
22$key-focus--border-width: props.def( 16$key-focus--border-width: props.def(--o-text-field--key-focus--border-width, props.get(core.$key-focus--outline-width)) !default;
23 --o-text-field--key-focus--border-width,
24 props.get(core.$key-focus--outline-width)
25) !default;
26 17
27$bg-color: props.def( 18$bg-color: props.def(--o-text-field--bg-color, props.get(core.$theme, --base, --50), 'color') !default;
28 --o-text-field--bg-color, 19$placeholder-color: props.def(--o-text-field--placeholder-color, props.get(core.$theme, --text-mute-more), 'color') !default;
29 props.get(core.$theme, --base, --50), 20$text-color: props.def(--o-text-field--text-color, props.get(core.$theme, --text), 'color') !default;
30 "color" 21$border-color: props.def(--o-text-field--border-color, props.get(core.$theme, --border-strong), 'color') !default;
31) !default;
32$placeholder-color: props.def(
33 --o-text-field--placeholder-color,
34 props.get(core.$theme, --text-mute-more),
35 "color"
36) !default;
37$text-color: props.def(
38 --o-text-field--text-color,
39 props.get(core.$theme, --text),
40 "color"
41) !default;
42$border-color: props.def(
43 --o-text-field--border-color,
44 props.get(core.$theme, --border-strong),
45 "color"
46) !default;
47 22
48$hover--border-color: props.def( 23$hover--border-color: props.def(--o-text-field--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default;
49 --o-text-field--hover--border-color,
50 props.get(core.$theme, --text-mute-more),
51 "color"
52) !default;
53 24
54$focus--border-color: props.def( 25$focus--border-color: props.def(--o-text-field--focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
55 --o-text-field--focus--border-color,
56 props.get(core.$theme, --focus, --border),
57 "color"
58) !default;
59 26
60$key-focus--border-color: props.def( 27$key-focus--border-color: props.def(--o-text-field--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
61 --o-text-field--key-focus--border-color, 28$key-focus--outline-color: props.def(--o-text-field--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
62 props.get(core.$theme, --focus, --border),
63 "color"
64) !default;
65$key-focus--outline-color: props.def(
66 --o-text-field--key-focus--outline-color,
67 props.get(core.$theme, --focus, --outline),
68 "color"
69) !default;
70 29
71$error--border-color: props.def( 30$error--border-color: props.def(--o-text-field--error--border-color, props.get(core.$theme, --negative, --700), 'color') !default;
72 --o-text-field--error--border-color,
73 props.get(core.$theme, --negative, --700),
74 "color"
75) !default;
76 31
77$error--hover--border-color: props.def( 32$error--hover--border-color: props.def(--o-text-field--error--hover--border-color, props.get(core.$theme, --negative, --900), 'color') !default;
78 --o-text-field--error--hover--border-color,
79 props.get(core.$theme, --negative, --900),
80 "color"
81) !default;
82 33
83$error--focus--border-color: props.def( 34$error--focus--border-color: props.def(--o-text-field--error--focus--border-color, props.get(core.$theme, --negative, --900), 'color') !default;
84 --o-text-field--error--focus--border-color,
85 props.get(core.$theme, --negative, --900),
86 "color"
87) !default;
88 35
89$disabled--bg-color: props.def( 36$disabled--bg-color: props.def(--o-text-field--disabled--bg-color, props.get(core.$theme, --border-mute), 'color') !default;
90 --o-text-field--disabled--bg-color, 37$disabled--placeholder-color: props.def(--o-text-field--disabled--placeholder-color, props.get(core.$theme, --text-disabled), 'color') !default;
91 props.get(core.$theme, --border-mute), 38$disabled--text-color: props.def(--o-text-field--disabled--text-color, props.get(core.$theme, --text-disabled), 'color') !default;
92 "color" 39$disabled--border-color: props.def(--o-text-field--disabled--border-color, props.get(core.$theme, --border-mute), 'color') !default;
93) !default;
94$disabled--placeholder-color: props.def(
95 --o-text-field--disabled--placeholder-color,
96 props.get(core.$theme, --text-disabled),
97 "color"
98) !default;
99$disabled--text-color: props.def(
100 --o-text-field--disabled--text-color,
101 props.get(core.$theme, --text-disabled),
102 "color"
103) !default;
104$disabled--border-color: props.def(
105 --o-text-field--disabled--border-color,
106 props.get(core.$theme, --border-mute),
107 "color"
108) !default;
diff --git a/src/objects/_thumbnail.scss b/src/objects/_thumbnail.scss
index c7a9791..9925dd0 100644
--- a/src/objects/_thumbnail.scss
+++ b/src/objects/_thumbnail.scss
@@ -1,66 +1,65 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "thumbnail.vars"; 8@forward 'thumbnail.vars';
9@use "thumbnail.vars" as vars; 9@use 'thumbnail.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.object("thumbnail") { 14 @include bem.object('thumbnail') {
15 position: relative; 15 position: relative;
16 display: block; 16 display: block;
17 flex: 0 0 auto; 17 flex: 0 0 auto;
18 inline-size: props.get(vars.$size); 18 inline-size: props.get(vars.$size);
19 block-size: props.get(vars.$size); 19 block-size: props.get(vars.$size);
20 overflow: hidden; 20 overflow: hidden;
21 outline: props.get(vars.$border-color) solid props.get(vars.$border-width); 21 outline: props.get(vars.$border-color) solid props.get(vars.$border-width);
22 outline-offset: calc(-1 * props.get(vars.$border-width)); 22 outline-offset: calc(-1 * props.get(vars.$border-width));
23 border-radius: props.get(vars.$rounding); 23 border-radius: props.get(vars.$rounding);
24 24
25 &:hover, 25 &:hover,
26 &:active, 26 &:active,
27 &:focus-visible { 27 &:focus-visible {
28 outline-color: props.get(vars.$hover--border-color); 28 outline-color: props.get(vars.$hover--border-color);
29 opacity: 1; 29 opacity: 1;
30 } 30 }
31 31
32 @include bem.elem("image") { 32 @include bem.elem('image') {
33 position: absolute; 33 position: absolute;
34 inset-block-start: 0; 34 inset-block-start: 0;
35 inset-inline-start: 0; 35 inset-inline-start: 0;
36 display: block; 36 display: block;
37 inline-size: 100%; 37 inline-size: 100%;
38 block-size: 100%; 38 block-size: 100%;
39 object-fit: cover; 39 object-fit: cover;
40 object-position: center center; 40 object-position: center center;
41 } 41 }
42 42
43 @include bem.elem("icon") { 43 @include bem.elem('icon') {
44 position: absolute; 44 position: absolute;
45 inset-block-start: 50%; 45 inset-block-start: 50%;
46 inset-inline-start: 50%; 46 inset-inline-start: 50%;
47 transform: translate(-50%, -50%); 47 transform: translate(-50%, -50%);
48 } 48 }
49 49
50 &:focus-visible { 50 &:focus-visible {
51 $focus-border-offset: calc(-1 * props.get(vars.$key-focus--border-offset)); 51 $focus-border-offset: calc(-1 * props.get(vars.$key-focus--border-offset));
52 52
53 margin: $focus-border-offset; 53 margin: $focus-border-offset;
54 outline: props.get(vars.$key-focus--border-color) solid 54 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
55 props.get(vars.$key-focus--border-width);
56 outline-offset: 0; 55 outline-offset: 0;
57 border: props.get(vars.$key-focus--border-offset) solid transparent; 56 border: props.get(vars.$key-focus--border-offset) solid transparent;
58 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 57 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
59 box-shadow: 0 0 0 58 box-shadow:
60 calc( 59 0
61 props.get(vars.$key-focus--outline-width) + 60 0
62 props.get(vars.$key-focus--border-width) 61 0
63 ) 62 calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width))
64 props.get(vars.$key-focus--outline-color); 63 props.get(vars.$key-focus--outline-color);
65 } 64 }
66 65
@@ -74,18 +73,18 @@
74 outline-color: props.get(vars.$static-themes, $theme, --hover, --border); 73 outline-color: props.get(vars.$static-themes, $theme, --hover, --border);
75 } 74 }
76 75
77 @include bem.is("selected") { 76 @include bem.is('selected') {
78 border-color: props.get(vars.$static-themes, $theme, --selected, --border); 77 border-color: props.get(vars.$static-themes, $theme, --selected, --border);
79 } 78 }
80 79
81 &:focus-visible { 80 &:focus-visible {
82 outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border); 81 outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border);
83 border-color: transparent; 82 border-color: transparent;
84 box-shadow: 0 0 0 83 box-shadow:
85 calc( 84 0
86 props.get(vars.$key-focus--outline-width) + 85 0
87 props.get(vars.$key-focus--border-width) 86 0
88 ) 87 calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width))
89 props.get(vars.$static-themes, $theme, --key-focus, --outline); 88 props.get(vars.$static-themes, $theme, --key-focus, --outline);
90 } 89 }
91 } 90 }
diff --git a/src/objects/_thumbnail.vars.scss b/src/objects/_thumbnail.vars.scss
index 737a626..a5625fc 100644
--- a/src/objects/_thumbnail.vars.scss
+++ b/src/objects/_thumbnail.vars.scss
@@ -1,85 +1,51 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$size: props.def(--o-thumbnail--size, props.get(core.$size--900)) !default; 6$size: props.def(--o-thumbnail--size, props.get(core.$size--900)) !default;
7$rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default; 7$rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default;
8$spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default; 8$spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default;
9$border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default; 9$border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default;
10 10
11$selected--border-width: props.def( 11$selected--border-width: props.def(--o-thumbnail--selected--border-width, props.get(core.$border-width--medium)) !default;
12 --o-thumbnail--selected--border-width,
13 props.get(core.$border-width--medium)
14) !default;
15 12
16$key-focus--border-width: props.def( 13$key-focus--border-width: props.def(--o-thumbnail--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
17 --o-thumbnail--key-focus--border-width, 14$key-focus--border-offset: props.def(--o-thumbnail--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
18 props.get(core.$key-focus--border-width) 15$key-focus--outline-width: props.def(--o-thumbnail--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
19) !default;
20$key-focus--border-offset: props.def(
21 --o-thumbnail--key-focus--border-offset,
22 props.get(core.$key-focus--border-offset)
23) !default;
24$key-focus--outline-width: props.def(
25 --o-thumbnail--key-focus--outline-width,
26 props.get(core.$key-focus--outline-width)
27) !default;
28 16
29$border-color: props.def( 17$border-color: props.def(--o-thumbnail--border-color, props.get(core.$theme, --border-strong), 'color') !default;
30 --o-thumbnail--border-color,
31 props.get(core.$theme, --border-strong),
32 "color"
33) !default;
34 18
35$hover--border-color: props.def( 19$hover--border-color: props.def(--o-thumbnail--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default;
36 --o-thumbnail--hover--border-color,
37 props.get(core.$theme, --text-mute-more),
38 "color"
39) !default;
40 20
41$selected--border-color: props.def( 21$selected--border-color: props.def(--o-thumbnail--selected--border-color, props.get(core.$theme, --heading), 'color') !default;
42 --o-thumbnail--selected--border-color,
43 props.get(core.$theme, --heading),
44 "color"
45) !default;
46 22
47$key-focus--border-color: props.def( 23$key-focus--border-color: props.def(--o-thumbnail--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
48 --o-thumbnail--key-focus--border-color, 24$key-focus--outline-color: props.def(--o-thumbnail--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
49 props.get(core.$theme, --focus, --border),
50 "color"
51) !default;
52$key-focus--outline-color: props.def(
53 --o-thumbnail--key-focus--outline-color,
54 props.get(core.$theme, --focus, --outline),
55 "color"
56) !default;
57 25
58$size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), "md") !default; 26$size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), 'md') !default;
59 27
60$static-themes: props.def(--o-thumbnail, (), "color"); 28$static-themes: props.def(--o-thumbnail, (), 'color');
61 29
62@each $theme in map.keys(props.get(core.$transparent-colors)) { 30@each $theme in map.keys(props.get(core.$transparent-colors)) {
63 $thumbnail-theme: --static-#{string.slice($theme, 3)}; 31 $thumbnail-theme: --static-#{string.slice($theme, 3)};
64 32
65 $static-themes: props.merge( 33 $static-themes: props.merge($static-themes, (
66 $static-themes, 34 $thumbnail-theme: (
67 ( 35 --border: props.get(core.$transparent-colors, $theme, --400),
68 $thumbnail-theme: (
69 --border: props.get(core.$transparent-colors, $theme, --400),
70 --hover: (
71 --border: props.get(core.$transparent-colors, $theme, --500),
72 ),
73 36
74 --selected: ( 37 --hover: (
75 --border: props.get(core.$transparent-colors, $theme, --900), 38 --border: props.get(core.$transparent-colors, $theme, --500),
76 ), 39 ),
77 40
78 --key-focus: ( 41 --selected: (
79 --border: props.get(core.$transparent-colors, $theme, --900), 42 --border: props.get(core.$transparent-colors, $theme, --900),
80 --outline: props.get(core.$transparent-colors, $theme, --300), 43 ),
81 ), 44
82 ), 45 --key-focus: (
46 --border: props.get(core.$transparent-colors, $theme, --900),
47 --outline: props.get(core.$transparent-colors, $theme, --300),
48 ),
83 ) 49 )
84 ); 50 ));
85} 51}
diff --git a/src/scopes/_blockquotes.scss b/src/scopes/_blockquotes.scss
index bc4fd39..10e6d81 100644
--- a/src/scopes/_blockquotes.scss
+++ b/src/scopes/_blockquotes.scss
@@ -1,27 +1,25 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "blockquotes.vars"; 6@forward 'blockquotes.vars';
7@use "blockquotes.vars" as vars; 7@use 'blockquotes.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.scope("blockquotes") { 12 @include bem.scope('blockquotes') {
13 blockquote { 13 blockquote {
14 padding-inline-start: calc(props.get(vars.$indent) - props.get(vars.$border-width)); 14 padding-inline-start: calc(props.get(vars.$indent) - props.get(vars.$border-width));
15 margin-block: props.get(vars.$margin-bs) 0; 15 margin-block: props.get(vars.$margin-bs) 0;
16 margin-inline: 1px 0; 16 margin-inline: 1px 0;
17 border-inline-start: props.get(vars.$border-width) solid props.get(vars.$border-color); 17 border-inline-start: props.get(vars.$border-width) solid props.get(vars.$border-color);
18 } 18 }
19 19
20 @include bem.modifier("compact") { 20 @include bem.modifier('compact') {
21 blockquote { 21 blockquote {
22 padding-inline-start: calc( 22 padding-inline-start: calc(props.get(vars.$compact--indent) - props.get(vars.$border-width));
23 props.get(vars.$compact--indent) - props.get(vars.$border-width)
24 );
25 } 23 }
26 } 24 }
27 } 25 }
diff --git a/src/scopes/_blockquotes.vars.scss b/src/scopes/_blockquotes.vars.scss
index 117b4a6..63c40b0 100644
--- a/src/scopes/_blockquotes.vars.scss
+++ b/src/scopes/_blockquotes.vars.scss
@@ -1,24 +1,11 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3@use "./implicit.vars" as implicit; 3@use './implicit.vars' as implicit;
4 4
5$indent: props.def(--s-blockquotes--indent, props.get(core.$list--indent)) !default; 5$indent: props.def(--s-blockquotes--indent, props.get(core.$list--indent)) !default;
6$margin-bs: props.def( 6$margin-bs: props.def(--s-blockquotes--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default;
7 --s-blockquotes--margin-bs, 7$border-width: props.def(--s-blockquotes--border-width, props.get(core.$border-width--thick)) !default;
8 props.get(implicit.$paragraph--margin-bs)
9) !default;
10$border-width: props.def(
11 --s-blockquotes--border-width,
12 props.get(core.$border-width--thick)
13) !default;
14 8
15$compact--indent: props.def( 9$compact--indent: props.def(--s-blockquotes--compact--indent, props.get(core.$list--compact-indent)) !default;
16 --s-blockquotes--compact--indent,
17 props.get(core.$list--compact-indent)
18) !default;
19 10
20$border-color: props.def( 11$border-color: props.def(--s-blockquotes--border-color, props.get(core.$theme, --border), 'color') !default;
21 --s-blockquotes--border-color,
22 props.get(core.$theme, --border),
23 "color"
24) !default;
diff --git a/src/scopes/_body.scss b/src/scopes/_body.scss
index 6c5ba63..77a3eb1 100644
--- a/src/scopes/_body.scss
+++ b/src/scopes/_body.scss
@@ -1,15 +1,15 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "body.vars"; 6@forward 'body.vars';
7@use "body.vars" as vars; 7@use 'body.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.scope("body") { 12 @include bem.scope('body') {
13 font-size: props.get(vars.$font-size); 13 font-size: props.get(vars.$font-size);
14 line-height: props.get(vars.$line-height); 14 line-height: props.get(vars.$line-height);
15 15
@@ -30,11 +30,11 @@
30 } 30 }
31 31
32 img { 32 img {
33 display: block; 33 display: block;
34 inline-size: auto; 34 inline-size: auto;
35 max-inline-size: 100%; 35 max-inline-size: 100%;
36 block-size: auto; 36 block-size: auto;
37 max-block-size: props.get(vars.$img--max-block-size); 37 max-block-size: props.get(vars.$img--max-block-size);
38 margin-block-start: props.get(vars.$paragraph--margin-bs); 38 margin-block-start: props.get(vars.$paragraph--margin-bs);
39 } 39 }
40 40
diff --git a/src/scopes/_body.vars.scss b/src/scopes/_body.vars.scss
index 414e0c1..981ef32 100644
--- a/src/scopes/_body.vars.scss
+++ b/src/scopes/_body.vars.scss
@@ -1,25 +1,12 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4@use "../layouts/container.vars" as container; 4@use '../layouts/container.vars' as container;
5 5
6$font-size: props.def(--s-body--font-size, props.get(core.$font-size--150)) !default; 6$font-size: props.def(--s-body--font-size, props.get(core.$font-size--150)) !default;
7$line-height: props.def( 7$line-height: props.def(--s-body--line-height, calc(props.get(core.$font--standard--line-height) + .1)) !default;
8 --s-body--line-height, 8$paragraph--margin-bs: props.def(--s-body--paragraph--margin-bs, props.get(core.$size--300)) !default;
9 calc(props.get(core.$font--standard--line-height) + 0.1) 9$paragraph--max-inline-size: props.def(--s-body--paragraph--max-inline-size, props.get(container.$fixed)) !default;
10) !default; 10$img--max-block-size: props.def(--s-body--img--max-block-size, none) !default;
11$paragraph--margin-bs: props.def(
12 --s-body--paragraph--margin-bs,
13 props.get(core.$size--300)
14) !default;
15$paragraph--max-inline-size: props.def(
16 --s-body--paragraph--max-inline-size,
17 props.get(container.$fixed)
18) !default;
19$img--max-block-size: props.def(--s-body--img--max-block-size, none) !default;
20 11
21$strong--text-color: props.def( 12$strong--text-color: props.def(--s-body--strong--text-color, props.get(core.$theme, --heading), 'color') !default;
22 --s-body--strong--text-color,
23 props.get(core.$theme, --heading),
24 "color"
25) !default;
diff --git a/src/scopes/_code.scss b/src/scopes/_code.scss
index d931c22..db43de0 100644
--- a/src/scopes/_code.scss
+++ b/src/scopes/_code.scss
@@ -1,39 +1,39 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5 5
6@forward "code.vars"; 6@forward 'code.vars';
7@use "code.vars" as vars; 7@use 'code.vars' as vars;
8 8
9@mixin styles { 9@mixin styles {
10 @include materialize-at-root(meta.module-variables("vars")); 10 @include materialize-at-root(meta.module-variables('vars'));
11 11
12 @include bem.scope("code") { 12 @include bem.scope('code') {
13 code { 13 code {
14 padding-block: props.get(vars.$inline--pad-b); 14 padding-block: props.get(vars.$inline--pad-b);
15 padding-inline: props.get(vars.$inline--pad-i); 15 padding-inline: props.get(vars.$inline--pad-i);
16 color: props.get(vars.$inline--fg); 16 color: props.get(vars.$inline--fg);
17 background-color: props.get(vars.$inline--bg); 17 background-color: props.get(vars.$inline--bg);
18 border-radius: props.get(vars.$inline--rounding); 18 border-radius: props.get(vars.$inline--rounding);
19 } 19 }
20 20
21 pre { 21 pre {
22 padding-block: props.get(vars.$block--pad-b); 22 padding-block: props.get(vars.$block--pad-b);
23 padding-inline: props.get(vars.$block--pad-i); 23 padding-inline: props.get(vars.$block--pad-i);
24 margin-block: props.get(vars.$block--margin-bs) 0; 24 margin-block: props.get(vars.$block--margin-bs) 0;
25 margin-inline: 0; 25 margin-inline: 0;
26 color: props.get(vars.$block--fg); 26 color: props.get(vars.$block--fg);
27 background-color: props.get(vars.$block--bg); 27 background-color: props.get(vars.$block--bg);
28 border-radius: props.get(vars.$block--rounding); 28 border-radius: props.get(vars.$block--rounding);
29 29
30 code { 30 code {
31 display: inline-block; 31 display: inline-block;
32 padding: 0; 32 padding: 0;
33 margin-inline-end: props.get(vars.$block--pad-i); 33 margin-inline-end: props.get(vars.$block--pad-i);
34 color: currentColor; 34 color: currentColor;
35 background-color: transparent; 35 background-color: transparent;
36 border-radius: 0; 36 border-radius: 0;
37 } 37 }
38 } 38 }
39 } 39 }
diff --git a/src/scopes/_code.vars.scss b/src/scopes/_code.vars.scss
index e22421c..329d372 100644
--- a/src/scopes/_code.vars.scss
+++ b/src/scopes/_code.vars.scss
@@ -1,25 +1,18 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3@use "./implicit.vars" as implicit; 3@use './implicit.vars' as implicit;
4 4
5$inline--pad-i: props.def(--s-code--inline--pad-i, props.get(core.$size--50)) !default; 5$inline--pad-i: props.def(--s-code--inline--pad-i, props.get(core.$size--50)) !default;
6$inline--pad-b: props.def(--s-code--inline--pad-b, props.get(core.$size--10)) !default; 6$inline--pad-b: props.def(--s-code--inline--pad-b, props.get(core.$size--10)) !default;
7$inline--rounding: props.def(--s-code--inline--rounding, props.get(core.$rounding--sm)) !default; 7$inline--rounding: props.def(--s-code--inline--rounding, props.get(core.$rounding--sm)) !default;
8 8
9$block--pad-i: props.def(--s-code--block--pad-i, props.get(core.$size--150)) !default; 9$block--pad-i: props.def(--s-code--block--pad-i, props.get(core.$size--150)) !default;
10$block--pad-b: props.def(--s-code--block--pad-b, props.get(core.$size--85)) !default; 10$block--pad-b: props.def(--s-code--block--pad-b, props.get(core.$size--85)) !default;
11$block--margin-bs: props.def( 11$block--margin-bs: props.def(--s-code--block--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default;
12 --s-code--block--margin-bs, 12$block--rounding: props.def(--s-code--block--rounding, props.get(core.$rounding--sm)) !default;
13 props.get(implicit.$paragraph--margin-bs)
14) !default;
15$block--rounding: props.def(--s-code--block--rounding, props.get(core.$rounding--sm)) !default;
16 13
17$inline--fg: props.def(--s-code--inline--fg, props.get(core.$theme, --heading), "color") !default; 14$inline--fg: props.def(--s-code--inline--fg, props.get(core.$theme, --heading), 'color') !default;
18$inline--bg: props.def( 15$inline--bg: props.def(--s-code--inline--bg, props.get(core.$theme, --base, --200), 'color') !default;
19 --s-code--inline--bg,
20 props.get(core.$theme, --base, --200),
21 "color"
22) !default;
23 16
24$block--fg: props.def(--s-code--block--fg, props.get(core.$theme, --text), "color") !default; 17$block--fg: props.def(--s-code--block--fg, props.get(core.$theme, --text), 'color') !default;
25$block--bg: props.def(--s-code--block--bg, props.get(core.$theme, --base, --50), "color") !default; 18$block--bg: props.def(--s-code--block--bg, props.get(core.$theme, --base, --50), 'color') !default;
diff --git a/src/scopes/_figures.scss b/src/scopes/_figures.scss
index 852ab5a..c993f5a 100644
--- a/src/scopes/_figures.scss
+++ b/src/scopes/_figures.scss
@@ -1,20 +1,20 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../objects/figure.vars" as figure; 4@use '../objects/figure.vars' as figure;
5 5
6@mixin styles { 6@mixin styles {
7 @include bem.scope("figures") { 7 @include bem.scope('figures') {
8 figcaption { 8 figcaption {
9 padding-block: props.get(figure.$pad-b); 9 padding-block: props.get(figure.$pad-b);
10 font-size: props.get(figure.$font-size); 10 font-size: props.get(figure.$font-size);
11 color: props.get(figure.$text-color); 11 color: props.get(figure.$text-color);
12 border-block-end: props.get(figure.$border-width) solid props.get(figure.$border-color); 12 border-block-end: props.get(figure.$border-width) solid props.get(figure.$border-color);
13 13
14 &::before { 14 &::before {
15 display: block; 15 display: block;
16 margin-block: -100em 100em; 16 margin-block: -100em 100em;
17 content: ""; 17 content: '';
18 } 18 }
19 } 19 }
20 } 20 }
diff --git a/src/scopes/_headings.scss b/src/scopes/_headings.scss
index a6a7bbb..23623fd 100644
--- a/src/scopes/_headings.scss
+++ b/src/scopes/_headings.scss
@@ -1,8 +1,8 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/bem"; 3@use 'pkg:iro-sass/src/bem';
4@use "pkg:iro-sass/props"; 4@use 'pkg:iro-sass/src/props';
5@use "../objects/heading.vars" as heading; 5@use '../objects/heading.vars' as heading;
6 6
7@mixin styles { 7@mixin styles {
8 /* stylelint-disable-next-line scss/dollar-variable-pattern */ 8 /* stylelint-disable-next-line scss/dollar-variable-pattern */
@@ -15,62 +15,56 @@
15 xxl: h1, 15 xxl: h1,
16 ); 16 );
17 17
18 @include bem.scope("headings") { 18 @include bem.scope('headings') {
19 h1, 19 h1,
20 h2, 20 h2,
21 h3, 21 h3,
22 h4, 22 h4,
23 h5, 23 h5,
24 h6 { 24 h6 {
25 display: block; 25 display: block;
26 margin-block-start: props.get(heading.$margin-bs); 26 margin-block-start: props.get(heading.$margin-bs);
27 font-family: props.get(heading.$font-family); 27 font-family: props.get(heading.$font-family);
28 font-weight: props.get(heading.$font-weight); 28 font-weight: props.get(heading.$font-weight);
29 font-feature-settings: props.get(heading.$feature-settings); 29 font-feature-settings: props.get(heading.$feature-settings);
30 line-height: props.get(heading.$line-height); 30 line-height: props.get(heading.$line-height);
31 text-transform: props.get(heading.$text-transform); 31 text-transform: props.get(heading.$text-transform);
32 letter-spacing: normal; 32 letter-spacing: normal;
33 transform: translateX(props.get(heading.$offset)); 33 transform: translateX(props.get(heading.$offset));
34 } 34 }
35 35
36 @include bem.elem("highlight") { 36 @include bem.elem('highlight') {
37 background-image: linear-gradient( 37 background-image: linear-gradient(to top,
38 to top, 38 transparent .15em,
39 transparent 0.15em, 39 props.get(heading.$bg-color) .15em,
40 props.get(heading.$bg-color) 0.15em, 40 props.get(heading.$bg-color) .6em,
41 props.get(heading.$bg-color) 0.6em, 41 transparent .6em);
42 transparent 0.6em
43 );
44 } 42 }
45 43
46 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, 44 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in heading.$sizes {
47 $feature-settings, $text-transform, $text-color in heading.$sizes
48 {
49 #{map.get($-size-map, $mod)} { 45 #{map.get($-size-map, $mod)} {
50 font-family: props.get($font-family); 46 font-family: props.get($font-family);
51 font-size: props.get($font-size); 47 font-size: props.get($font-size);
52 font-weight: props.get($font-weight); 48 font-weight: props.get($font-weight);
53 font-feature-settings: props.get($feature-settings); 49 font-feature-settings: props.get($feature-settings);
54 line-height: props.get($line-height); 50 line-height: props.get($line-height);
55 color: props.get($text-color); 51 color: props.get($text-color);
56 text-transform: props.get($text-transform); 52 text-transform: props.get($text-transform);
57 letter-spacing: props.get($letter-spacing); 53 letter-spacing: props.get($letter-spacing);
58 } 54 }
59 } 55 }
60 56
61 @include bem.modifier("display") { 57 @include bem.modifier('display') {
62 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, 58 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in heading.$display--sizes {
63 $feature-settings, $text-transform, $text-color in heading.$display--sizes
64 {
65 #{map.get($-size-map, $mod)} { 59 #{map.get($-size-map, $mod)} {
66 font-family: props.get($font-family); 60 font-family: props.get($font-family);
67 font-size: props.get($font-size); 61 font-size: props.get($font-size);
68 font-weight: props.get($font-weight); 62 font-weight: props.get($font-weight);
69 font-feature-settings: props.get($feature-settings); 63 font-feature-settings: props.get($feature-settings);
70 line-height: props.get($line-height); 64 line-height: props.get($line-height);
71 color: props.get($text-color); 65 color: props.get($text-color);
72 text-transform: props.get($text-transform); 66 text-transform: props.get($text-transform);
73 letter-spacing: props.get($letter-spacing); 67 letter-spacing: props.get($letter-spacing);
74 } 68 }
75 } 69 }
76 } 70 }
@@ -85,16 +79,10 @@
85 } 79 }
86 } 80 }
87 81
88 @include bem.modifier("display") { 82 @include bem.modifier('display') {
89 @each $mod, $value in heading.$sizes { 83 @each $mod, $value in heading.$sizes {
90 #{map.get($-size-map, $mod)} { 84 #{map.get($-size-map, $mod)} {
91 color: props.get( 85 color: props.get(heading.$static-themes, $theme, --display, --#{$mod}, --text-color);
92 heading.$static-themes,
93 $theme,
94 --display,
95 --#{$mod},
96 --text-color
97 );
98 } 86 }
99 } 87 }
100 } 88 }
diff --git a/src/scopes/_implicit.scss b/src/scopes/_implicit.scss
index f8c575d..728fd22 100644
--- a/src/scopes/_implicit.scss
+++ b/src/scopes/_implicit.scss
@@ -1,21 +1,21 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:math"; 2@use 'sass:math';
3@use "sass:meta"; 3@use 'sass:meta';
4@use "sass:string"; 4@use 'sass:string';
5@use "pkg:iro-sass/bem"; 5@use 'pkg:iro-sass/src/bem';
6@use "pkg:iro-sass/props"; 6@use 'pkg:iro-sass/src/props';
7@use "../props" as *; 7@use '../props' as *;
8@use "../core.vars" as core; 8@use '../core.vars' as core;
9 9
10@forward "implicit.vars"; 10@forward 'implicit.vars';
11@use "implicit.vars" as vars; 11@use 'implicit.vars' as vars;
12 12
13@mixin styles { 13@mixin styles {
14 @include materialize-at-root(meta.module-variables("vars")); 14 @include materialize-at-root(meta.module-variables('vars'));
15 15
16 @layer scope { 16 @layer scope {
17 html { 17 html {
18 accent-color: props.get(core.$theme, --accent, --600); 18 accent-color: props.get(core.$theme, --accent, --600);
19 scrollbar-color: props.get(core.$theme, --text-disabled) transparent; 19 scrollbar-color: props.get(core.$theme, --text-disabled) transparent;
20 20
21 &:has(dialog[open]), 21 &:has(dialog[open]),
@@ -26,31 +26,31 @@
26 } 26 }
27 27
28 body { 28 body {
29 padding: 0; 29 padding: 0;
30 margin: 0; 30 margin: 0;
31 font-family: props.get(vars.$body--font-family); 31 font-family: props.get(vars.$body--font-family);
32 font-size: props.get(vars.$body--font-size); 32 font-size: props.get(vars.$body--font-size);
33 font-feature-settings: props.get(vars.$body--feature-settings); 33 font-feature-settings: props.get(vars.$body--feature-settings);
34 line-height: props.get(vars.$body--line-height); 34 line-height: props.get(vars.$body--line-height);
35 color: props.get(core.$theme, --text); 35 color: props.get(core.$theme, --text);
36 background-color: props.get(core.$theme, --bg-base); 36 background-color: props.get(core.$theme, --bg-base);
37 } 37 }
38 38
39 pre, 39 pre,
40 code { 40 code {
41 font-family: props.get(vars.$code--font-family); 41 font-family: props.get(vars.$code--font-family);
42 font-size: props.get(vars.$code--font-size); 42 font-size: props.get(vars.$code--font-size);
43 font-feature-settings: props.get(vars.$code--feature-settings); 43 font-feature-settings: props.get(vars.$code--feature-settings);
44 line-height: props.get(vars.$code--line-height); 44 line-height: props.get(vars.$code--line-height);
45 } 45 }
46 46
47 pre { 47 pre {
48 margin: 0; 48 margin: 0;
49 overflow-x: auto; 49 overflow-x: auto;
50 50
51 code { 51 code {
52 font-size: 1em; 52 font-size: 1em;
53 color: currentColor; 53 color: currentColor;
54 } 54 }
55 } 55 }
56 56
@@ -60,13 +60,13 @@
60 h4, 60 h4,
61 h5, 61 h5,
62 h6 { 62 h6 {
63 margin-block: props.get(vars.$heading--margin-bs) 0; 63 margin-block: props.get(vars.$heading--margin-bs) 0;
64 font-family: props.get(vars.$heading--font-family); 64 font-family: props.get(vars.$heading--font-family);
65 font-size: props.get(vars.$heading--font-size); 65 font-size: props.get(vars.$heading--font-size);
66 font-weight: props.get(vars.$heading--font-weight); 66 font-weight: props.get(vars.$heading--font-weight);
67 font-feature-settings: props.get(vars.$heading--feature-settings); 67 font-feature-settings: props.get(vars.$heading--feature-settings);
68 line-height: props.get(vars.$heading--line-height); 68 line-height: props.get(vars.$heading--line-height);
69 color: props.get(vars.$heading--color); 69 color: props.get(vars.$heading--color);
70 70
71 & + & { 71 & + & {
72 margin-block-start: props.get(vars.$heading--margin-bs-sibling); 72 margin-block-start: props.get(vars.$heading--margin-bs-sibling);
@@ -91,14 +91,14 @@
91 91
92 ul, 92 ul,
93 ol { 93 ol {
94 padding: 0; 94 padding: 0;
95 margin: 0; 95 margin: 0;
96 list-style: none; 96 list-style: none;
97 } 97 }
98 98
99 li { 99 li {
100 padding: 0; 100 padding: 0;
101 margin: 0; 101 margin: 0;
102 } 102 }
103 103
104 :focus, 104 :focus,
@@ -108,27 +108,28 @@
108 108
109 :link, 109 :link,
110 :visited { 110 :visited {
111 color: currentColor; 111 color: currentColor;
112 text-decoration: none; 112 text-decoration: none;
113 } 113 }
114 114
115
115 button, 116 button,
116 input, 117 input,
117 textarea { 118 textarea {
118 box-sizing: content-box; 119 box-sizing: content-box;
119 padding: 0; 120 padding: 0;
120 margin: 0; 121 margin: 0;
121 font-family: inherit; 122 font-family: inherit;
122 font-size: 1em; 123 font-size: 1em;
123 font-style: inherit; 124 font-style: inherit;
124 font-weight: inherit; 125 font-weight: inherit;
125 line-height: inherit; 126 line-height: inherit;
126 color: currentColor; 127 color: currentColor;
127 text-align: inherit; 128 text-align: inherit;
128 text-transform: inherit; 129 text-transform: inherit;
129 appearance: none; 130 appearance: none;
130 background: none; 131 background: none;
131 border: 0; 132 border: 0;
132 133
133 &::-moz-focus-inner { 134 &::-moz-focus-inner {
134 border: 0; 135 border: 0;
@@ -138,7 +139,7 @@
138 input, 139 input,
139 textarea { 140 textarea {
140 &::placeholder { 141 &::placeholder {
141 color: props.get(core.$theme, --text-mute); 142 color: props.get(core.$theme, --text-mute);
142 opacity: 1; 143 opacity: 1;
143 } 144 }
144 145
@@ -152,15 +153,15 @@
152 } 153 }
153 154
154 hr { 155 hr {
155 block-size: props.get(core.$border-width--thin); 156 block-size: props.get(core.$border-width--thin);
156 margin: 0; 157 margin: 0;
157 background-color: props.get(core.$theme, --border); 158 background-color: props.get(core.$theme, --border);
158 border: 0; 159 border: 0;
159 } 160 }
160 161
161 figure { 162 figure {
162 padding: 0; 163 padding: 0;
163 margin: 0; 164 margin: 0;
164 } 165 }
165 166
166 @each $theme in map.keys(props.get(core.$transparent-colors)) { 167 @each $theme in map.keys(props.get(core.$transparent-colors)) {
diff --git a/src/scopes/_implicit.vars.scss b/src/scopes/_implicit.vars.scss
index f0256b0..64d4a8f 100644
--- a/src/scopes/_implicit.vars.scss
+++ b/src/scopes/_implicit.vars.scss
@@ -1,69 +1,26 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3 3
4$paragraph--margin-bs: props.def( 4$paragraph--margin-bs: props.def(--s-implicit--paragraph--margin-bs, props.get(core.$size--200)) !default;
5 --s-implicit--paragraph--margin-bs,
6 props.get(core.$size--200)
7) !default;
8 5
9$small--font-size: props.def( 6$small--font-size: props.def(--s-implicit--small--font-size, props.get(core.$font-size--75)) !default;
10 --s-implicit--small--font-size,
11 props.get(core.$font-size--75)
12) !default;
13 7
14$body--font-family: props.def( 8$body--font-family: props.def(--s-implicit--body--font-family, props.get(core.$font--standard--family)) !default;
15 --s-implicit--body--font-family, 9$body--line-height: props.def(--s-implicit--body--line-height, props.get(core.$font--standard--line-height)) !default;
16 props.get(core.$font--standard--family) 10$body--font-size: props.def(--s-implicit--body--font-size, props.get(core.$font-size--100));
17) !default; 11$body--feature-settings: props.def(--s-implicit--body--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
18$body--line-height: props.def(
19 --s-implicit--body--line-height,
20 props.get(core.$font--standard--line-height)
21) !default;
22$body--font-size: props.def(--s-implicit--body--font-size, props.get(core.$font-size--100));
23$body--feature-settings: props.def(
24 --s-implicit--body--feature-settings,
25 props.get(core.$font--standard--feature-settings)
26) !default;
27 12
28$code--font-family: props.def( 13$code--font-family: props.def(--s-implicit--code--font-family, props.get(core.$font--mono--family)) !default;
29 --s-implicit--code--font-family, 14$code--line-height: props.def(--s-implicit--code--line-height, props.get(core.$font--mono--line-height)) !default;
30 props.get(core.$font--mono--family) 15$code--font-size: props.def(--s-implicit--code--font-size, .93em);
31) !default; 16$code--feature-settings: props.def(--s-implicit--code--feature-settings, props.get(core.$font--mono--feature-settings)) !default;
32$code--line-height: props.def(
33 --s-implicit--code--line-height,
34 props.get(core.$font--mono--line-height)
35) !default;
36$code--font-size: props.def(--s-implicit--code--font-size, 0.93em);
37$code--feature-settings: props.def(
38 --s-implicit--code--feature-settings,
39 props.get(core.$font--mono--feature-settings)
40) !default;
41 17
42$heading--margin-bs: props.def( 18$heading--margin-bs: props.def(--s-implicit--heading--margin-bs, props.get(core.$size--700)) !default;
43 --s-implicit--heading--margin-bs, 19$heading--margin-bs-sibling: props.def(--s-implicit--heading--margin-bs-sibling, props.get(core.$size--325)) !default;
44 props.get(core.$size--700) 20$heading--font-family: props.def(--s-implicit--heading--font-family, props.get(core.$font--standard--family)) !default;
45) !default; 21$heading--line-height: props.def(--s-implicit--heading--line-height, props.get(core.$font--standard--line-height)) !default;
46$heading--margin-bs-sibling: props.def( 22$heading--font-weight: props.def(--s-implicit--heading--font-weight, bold) !default;
47 --s-implicit--heading--margin-bs-sibling, 23$heading--font-size: props.def(--s-implicit--heading--font-size, props.get(core.$font-size--100));
48 props.get(core.$size--325) 24$heading--feature-settings: props.def(--s-implicit--heading--feature-settings, props.get(core.$font--standard--feature-settings)) !default;
49) !default;
50$heading--font-family: props.def(
51 --s-implicit--heading--font-family,
52 props.get(core.$font--standard--family)
53) !default;
54$heading--line-height: props.def(
55 --s-implicit--heading--line-height,
56 props.get(core.$font--standard--line-height)
57) !default;
58$heading--font-weight: props.def(--s-implicit--heading--font-weight, bold) !default;
59$heading--font-size: props.def(--s-implicit--heading--font-size, props.get(core.$font-size--100));
60$heading--feature-settings: props.def(
61 --s-implicit--heading--feature-settings,
62 props.get(core.$font--standard--feature-settings)
63) !default;
64 25
65$heading--color: props.def( 26$heading--color: props.def(--s-implicit--heading--color, props.get(core.$theme, --heading), 'color') !default;
66 --s-implicit--heading--color,
67 props.get(core.$theme, --heading),
68 "color"
69) !default;
diff --git a/src/scopes/_links.scss b/src/scopes/_links.scss
index fea78f1..8498487 100644
--- a/src/scopes/_links.scss
+++ b/src/scopes/_links.scss
@@ -1,79 +1,78 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:meta"; 2@use 'sass:meta';
3@use "sass:string"; 3@use 'sass:string';
4@use "pkg:iro-sass/bem"; 4@use 'pkg:iro-sass/src/bem';
5@use "pkg:iro-sass/props"; 5@use 'pkg:iro-sass/src/props';
6@use "../props" as *; 6@use '../props' as *;
7 7
8@forward "links.vars"; 8@forward 'links.vars';
9@use "links.vars" as vars; 9@use 'links.vars' as vars;
10 10
11@mixin styles { 11@mixin styles {
12 @include materialize-at-root(meta.module-variables("vars")); 12 @include materialize-at-root(meta.module-variables('vars'));
13 13
14 @include bem.scope("links") { 14 @include bem.scope('links') {
15 :link, 15 :link,
16 :visited { 16 :visited {
17 color: currentColor; 17 color: currentColor;
18 text-decoration: underline; 18 text-decoration: underline;
19 text-decoration-thickness: props.get(vars.$underline-width); 19 text-decoration-thickness: props.get(vars.$underline-width);
20 text-decoration-color: props.get(vars.$underline-color); 20 text-decoration-color: props.get(vars.$underline-color);
21 border-radius: props.get(vars.$rounding-sm); 21 border-radius: props.get(vars.$rounding-sm);
22 box-decoration-break: clone; 22 box-decoration-break: clone;
23 23
24 &:hover { 24 &:hover {
25 text-decoration: underline; 25 text-decoration: underline;
26 text-decoration-thickness: props.get(vars.$hover--underline-width); 26 text-decoration-thickness: props.get(vars.$hover--underline-width);
27 text-decoration-skip-ink: none; 27 text-decoration-skip-ink: none;
28 } 28 }
29 29
30 &:focus-visible { 30 &:focus-visible {
31 color: props.get(vars.$key-focus--text-color); 31 color: props.get(vars.$key-focus--text-color);
32 text-decoration: none; 32 text-decoration: none;
33 outline: props.get(vars.$key-focus--border-color) solid 33 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
34 props.get(vars.$key-focus--border-width); 34 box-shadow:
35 box-shadow: 0 0 0 35 0
36 calc( 36 0
37 props.get(vars.$key-focus--border-width) + 37 0
38 props.get(vars.$key-focus--outline-width) 38 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
39 )
40 props.get(vars.$key-focus--outline-color); 39 props.get(vars.$key-focus--outline-color);
41 } 40 }
42 } 41 }
43 42
44 @include bem.modifier("invisible") { 43 @include bem.modifier('invisible') {
45 :link, 44 :link,
46 :visited { 45 :visited {
47 text-decoration: none; 46 text-decoration: none;
48 } 47 }
49 } 48 }
50 49
51 @include bem.modifier("colored") { 50 @include bem.modifier('colored') {
52 :link { 51 :link {
53 color: props.get(vars.$colored--text-color); 52 color: props.get(vars.$colored--text-color);
54 text-decoration-color: props.get(vars.$colored--underline-color); 53 text-decoration-color: props.get(vars.$colored--underline-color);
55 54
56 &:hover { 55 &:hover {
57 color: props.get(vars.$colored--hover--text-color); 56 color: props.get(vars.$colored--hover--text-color);
58 } 57 }
59 } 58 }
60 59
61 :visited { 60 :visited {
62 color: props.get(vars.$colored--visited--text-color); 61 color: props.get(vars.$colored--visited--text-color);
63 text-decoration-color: props.get(vars.$colored--visited--underline-color); 62 text-decoration-color: props.get(vars.$colored--visited--underline-color);
64 63
65 &:hover { 64 &:hover {
66 color: props.get(vars.$colored--visited--hover--text-color); 65 color: props.get(vars.$colored--visited--hover--text-color);
67 } 66 }
68 } 67 }
69 } 68 }
70 69
71 @include bem.modifier("mark-external") { 70 @include bem.modifier('mark-external') {
72 :link, 71 :link,
73 :visited { 72 :visited {
74 &[href^="http"] { 73 &[href^='http'] {
75 &::after { 74 &::after {
76 content: " ↗"; 75 content: ' ↗';
77 } 76 }
78 } 77 }
79 } 78 }
@@ -83,30 +82,21 @@
83 @include bem.modifier(string.slice($theme, 3)) { 82 @include bem.modifier(string.slice($theme, 3)) {
84 :link, 83 :link,
85 :visited { 84 :visited {
86 color: props.get(vars.$static-themes, $theme, --text-color); 85 color: props.get(vars.$static-themes, $theme, --text-color);
87 text-decoration-color: props.get( 86 text-decoration-color: props.get(vars.$static-themes, $theme, --underline-color);
88 vars.$static-themes,
89 $theme,
90 --underline-color
91 );
92 87
93 &:hover { 88 &:hover {
94 color: props.get(vars.$static-themes, $theme, --hover, --text-color); 89 color: props.get(vars.$static-themes, $theme, --hover, --text-color);
95 } 90 }
96 91
97 &:focus-visible { 92 &:focus-visible {
98 color: props.get(vars.$static-themes, $theme, --key-focus, --text-color); 93 color: props.get(vars.$static-themes, $theme, --key-focus, --text-color);
99 outline-color: props.get( 94 outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border-color);
100 vars.$static-themes, 95 box-shadow:
101 $theme, 96 0
102 --key-focus, 97 0
103 --border-color 98 0
104 ); 99 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
105 box-shadow: 0 0 0
106 calc(
107 props.get(vars.$key-focus--border-width) +
108 props.get(vars.$key-focus--outline-width)
109 )
110 props.get(vars.$static-themes, $theme, --key-focus, --outline-color); 100 props.get(vars.$static-themes, $theme, --key-focus, --outline-color);
111 } 101 }
112 } 102 }
@@ -116,26 +106,21 @@
116 :has(img) { 106 :has(img) {
117 img { 107 img {
118 margin-inline: calc(-1 * props.get(vars.$key-focus--border-offset)); 108 margin-inline: calc(-1 * props.get(vars.$key-focus--border-offset));
119 border: props.get(vars.$key-focus--border-offset) solid transparent; 109 border: props.get(vars.$key-focus--border-offset) solid transparent;
120 border-radius: calc( 110 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
121 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)
122 );
123 } 111 }
124 112
125 &:link, 113 &:link,
126 &:visited { 114 &:visited {
127 &:focus-visible { 115 &:focus-visible {
128 outline: none; 116 outline: none;
129 box-shadow: none; 117 box-shadow: none;
130 118
131 img { 119 img {
132 outline: props.get(vars.$key-focus--border-color) solid 120 outline: props.get(vars.$key-focus--border-color) solid
133 props.get(vars.$key-focus--border-width); 121 props.get(vars.$key-focus--border-width);
134 box-shadow: 0 0 0 122 box-shadow: 0 0 0
135 calc( 123 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
136 props.get(vars.$key-focus--border-width) +
137 props.get(vars.$key-focus--outline-width)
138 )
139 props.get(vars.$key-focus--outline-color); 124 props.get(vars.$key-focus--outline-color);
140 } 125 }
141 } 126 }
diff --git a/src/scopes/_links.vars.scss b/src/scopes/_links.vars.scss
index c06789b..cd80e4c 100644
--- a/src/scopes/_links.vars.scss
+++ b/src/scopes/_links.vars.scss
@@ -1,106 +1,49 @@
1@use "sass:map"; 1@use 'sass:map';
2@use "sass:string"; 2@use 'sass:string';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../core.vars" as core; 4@use '../core.vars' as core;
5 5
6$rounding: props.def(--s-links--rounding, props.get(core.$rounding)) !default; 6$rounding: props.def(--s-links--rounding, props.get(core.$rounding)) !default;
7$rounding-sm: props.def(--s-links--rounding-sm, props.get(core.$rounding--sm)) !default; 7$rounding-sm: props.def(--s-links--rounding-sm, props.get(core.$rounding--sm)) !default;
8$underline-width: props.def( 8$underline-width: props.def(--s-links--underline-width, props.get(core.$border-width--thin)) !default;
9 --s-links--underline-width, 9$hover--underline-width: props.def(--s-links--hover--underline-width, props.get(core.$border-width--medium)) !default;
10 props.get(core.$border-width--thin)
11) !default;
12$hover--underline-width: props.def(
13 --s-links--hover--underline-width,
14 props.get(core.$border-width--medium)
15) !default;
16 10
17$key-focus--border-width: props.def( 11$key-focus--border-width: props.def(--s-links--key-focus--border-width, props.get(core.$key-focus--border-width)) !default;
18 --s-links--key-focus--border-width, 12$key-focus--border-offset: props.def(--s-links--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default;
19 props.get(core.$key-focus--border-width) 13$key-focus--outline-width: props.def(--s-links--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
20) !default;
21$key-focus--border-offset: props.def(
22 --s-links--key-focus--border-offset,
23 props.get(core.$key-focus--border-offset)
24) !default;
25$key-focus--outline-width: props.def(
26 --s-links--key-focus--outline-width,
27 props.get(core.$key-focus--outline-width)
28) !default;
29 14
30$underline-color: props.def( 15$underline-color: props.def(--s-links--underline-color, props.get(core.$theme, --text-mute-more), 'color') !default;
31 --s-links--underline-color,
32 props.get(core.$theme, --text-mute-more),
33 "color"
34) !default;
35 16
36$colored--text-color: props.def( 17$colored--text-color: props.def(--s-links--colored--text-color, props.get(core.$theme, --accent, --1100), 'color') !default;
37 --s-links--colored--text-color, 18$colored--underline-color: props.def(--s-links--colored--underline-color, props.get(core.$theme, --accent, --600), 'color') !default;
38 props.get(core.$theme, --accent, --1100), 19$colored--hover--text-color: props.def(--s-links--colored--hover--text-color, props.get(core.$theme, --accent, --1300), 'color') !default;
39 "color"
40) !default;
41$colored--underline-color: props.def(
42 --s-links--colored--underline-color,
43 props.get(core.$theme, --accent, --600),
44 "color"
45) !default;
46$colored--hover--text-color: props.def(
47 --s-links--colored--hover--text-color,
48 props.get(core.$theme, --accent, --1300),
49 "color"
50) !default;
51 20
52$colored--visited--text-color: props.def( 21$colored--visited--text-color: props.def(--s-links--colored--visited--text-color, props.get(core.$theme, --purple, --1100), 'color') !default;
53 --s-links--colored--visited--text-color, 22$colored--visited--underline-color: props.def(--s-links--colored--visited--underline-color, props.get(core.$theme, --purple, --600), 'color') !default;
54 props.get(core.$theme, --purple, --1100), 23$colored--visited--hover--text-color: props.def(--s-links--colored--visited--hover--text-color, props.get(core.$theme, --purple, --1300), 'color') !default;
55 "color"
56) !default;
57$colored--visited--underline-color: props.def(
58 --s-links--colored--visited--underline-color,
59 props.get(core.$theme, --purple, --600),
60 "color"
61) !default;
62$colored--visited--hover--text-color: props.def(
63 --s-links--colored--visited--hover--text-color,
64 props.get(core.$theme, --purple, --1300),
65 "color"
66) !default;
67 24
68$key-focus--text-color: props.def( 25$key-focus--text-color: props.def(--s-links--key-focus--text-color, props.get(core.$theme, --focus, --text), 'color') !default;
69 --s-links--key-focus--text-color, 26$key-focus--border-color: props.def(--s-links--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
70 props.get(core.$theme, --focus, --text), 27$key-focus--outline-color: props.def(--s-links--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
71 "color"
72) !default;
73$key-focus--border-color: props.def(
74 --s-links--key-focus--border-color,
75 props.get(core.$theme, --focus, --border),
76 "color"
77) !default;
78$key-focus--outline-color: props.def(
79 --s-links--key-focus--outline-color,
80 props.get(core.$theme, --focus, --outline),
81 "color"
82) !default;
83 28
84$static-themes: props.def(--s-links, (), "color"); 29$static-themes: props.def(--s-links, (), 'color');
85@each $theme in map.keys(props.get(core.$transparent-colors)) { 30@each $theme in map.keys(props.get(core.$transparent-colors)) {
86 $link-theme: --static-#{string.slice($theme, 3)}; 31 $link-theme: --static-#{string.slice($theme, 3)};
87 32
88 $static-themes: props.merge( 33 $static-themes: props.merge($static-themes, (
89 $static-themes, 34 $link-theme: (
90 ( 35 --text-color: currentColor,
91 $link-theme: ( 36 --underline-color: props.get(core.$transparent-colors, $theme, --500),
92 --text-color: currentColor,
93 --underline-color: props.get(core.$transparent-colors, $theme, --500),
94 --hover: (
95 --text-color: props.get(core.$transparent-colors, $theme, --900),
96 ),
97 37
98 --key-focus: ( 38 --hover: (
99 --text-color: props.get(core.$transparent-colors, $theme, --900), 39 --text-color: props.get(core.$transparent-colors, $theme, --900),
100 --border-color: props.get(core.$transparent-colors, $theme, --900), 40 ),
101 --outline-color: props.get(core.$transparent-colors, $theme, --300), 41
102 ), 42 --key-focus: (
103 ), 43 --text-color: props.get(core.$transparent-colors, $theme, --900),
44 --border-color: props.get(core.$transparent-colors, $theme, --900),
45 --outline-color: props.get(core.$transparent-colors, $theme, --300),
46 ),
104 ) 47 )
105 ); 48 ));
106} 49}
diff --git a/src/scopes/_lists.scss b/src/scopes/_lists.scss
index 7b9ddbc..0285bb0 100644
--- a/src/scopes/_lists.scss
+++ b/src/scopes/_lists.scss
@@ -1,20 +1,20 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "../core.vars" as core; 5@use '../core.vars' as core;
6 6
7@forward "lists.vars"; 7@forward 'lists.vars';
8@use "lists.vars" as vars; 8@use 'lists.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.scope("lists") { 13 @include bem.scope('lists') {
14 ul, 14 ul,
15 ol { 15 ol {
16 padding-inline-start: props.get(vars.$indent); 16 padding-inline-start: props.get(vars.$indent);
17 margin-block-start: props.get(vars.$margin-bs); 17 margin-block-start: props.get(vars.$margin-bs);
18 18
19 ul, 19 ul,
20 ol { 20 ol {
@@ -31,22 +31,22 @@
31 } 31 }
32 32
33 dl { 33 dl {
34 padding: 0; 34 padding: 0;
35 margin-block: props.get(vars.$margin-bs) 0; 35 margin-block: props.get(vars.$margin-bs) 0;
36 margin-inline: 0; 36 margin-inline: 0;
37 } 37 }
38 38
39 dt { 39 dt {
40 font-weight: bold; 40 font-weight: bold;
41 color: props.get(core.$theme, --heading); 41 color: props.get(core.$theme, --heading);
42 } 42 }
43 43
44 dd { 44 dd {
45 margin-block: 0; 45 margin-block: 0;
46 margin-inline: props.get(vars.$indent) 0; 46 margin-inline: props.get(vars.$indent) 0;
47 } 47 }
48 48
49 @include bem.modifier("compact") { 49 @include bem.modifier('compact') {
50 ul, 50 ul,
51 ol { 51 ol {
52 padding-inline-start: calc(props.get(vars.$compact--indent) - 3px); 52 padding-inline-start: calc(props.get(vars.$compact--indent) - 3px);
diff --git a/src/scopes/_lists.vars.scss b/src/scopes/_lists.vars.scss
index 57fcc54..e40f194 100644
--- a/src/scopes/_lists.vars.scss
+++ b/src/scopes/_lists.vars.scss
@@ -1,11 +1,8 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "../core.vars" as core; 2@use '../core.vars' as core;
3@use "./implicit.vars" as implicit; 3@use './implicit.vars' as implicit;
4 4
5$indent: props.def(--s-lists--indent, calc(props.get(core.$list--indent) + 1em)) !default; 5$indent: props.def(--s-lists--indent, calc(props.get(core.$list--indent) + 1em)) !default;
6$margin-bs: props.def(--s-lists--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; 6$margin-bs: props.def(--s-lists--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default;
7 7
8$compact--indent: props.def( 8$compact--indent: props.def(--s-lists--compact--indent, props.get(core.$list--compact-indent)) !default;
9 --s-lists--compact--indent,
10 props.get(core.$list--compact-indent)
11) !default;
diff --git a/src/scopes/_tables.scss b/src/scopes/_tables.scss
index 7442874..cb3a10c 100644
--- a/src/scopes/_tables.scss
+++ b/src/scopes/_tables.scss
@@ -1,40 +1,40 @@
1@use "sass:meta"; 1@use 'sass:meta';
2@use "pkg:iro-sass/bem"; 2@use 'pkg:iro-sass/src/bem';
3@use "pkg:iro-sass/props"; 3@use 'pkg:iro-sass/src/props';
4@use "../props" as *; 4@use '../props' as *;
5@use "../objects/table.vars" as table; 5@use '../objects/table.vars' as table;
6 6
7@forward "tables.vars"; 7@forward 'tables.vars';
8@use "tables.vars" as vars; 8@use 'tables.vars' as vars;
9 9
10@mixin styles { 10@mixin styles {
11 @include materialize-at-root(meta.module-variables("vars")); 11 @include materialize-at-root(meta.module-variables('vars'));
12 12
13 @include bem.scope("tables") { 13 @include bem.scope('tables') {
14 table { 14 table {
15 margin-block-start: props.get(vars.$margin-bs); 15 margin-block-start: props.get(vars.$margin-bs);
16 border-spacing: 0; 16 border-spacing: 0;
17 border-collapse: separate; 17 border-collapse: separate;
18 } 18 }
19 19
20 th { 20 th {
21 padding-block: props.get(table.$pad-b); 21 padding-block: props.get(table.$pad-b);
22 padding-inline: props.get(table.$pad-i); 22 padding-inline: props.get(table.$pad-i);
23 font-family: props.get(table.$heading--font-family); 23 font-family: props.get(table.$heading--font-family);
24 font-size: props.get(table.$heading--font-size); 24 font-size: props.get(table.$heading--font-size);
25 font-weight: props.get(table.$heading--font-weight); 25 font-weight: props.get(table.$heading--font-weight);
26 color: props.get(table.$heading-color); 26 color: props.get(table.$heading-color);
27 text-align: start; 27 text-align: start;
28 text-transform: props.get(table.$heading--text-transform); 28 text-transform: props.get(table.$heading--text-transform);
29 letter-spacing: props.get(table.$heading--letter-spacing); 29 letter-spacing: props.get(table.$heading--letter-spacing);
30 } 30 }
31 31
32 td { 32 td {
33 padding-block: props.get(table.$pad-b); 33 padding-block: props.get(table.$pad-b);
34 padding-inline: props.get(table.$pad-i); 34 padding-inline: props.get(table.$pad-i);
35 border-color: props.get(table.$border-color); 35 border-color: props.get(table.$border-color);
36 border-style: solid; 36 border-style: solid;
37 border-width: 0; 37 border-width: 0;
38 border-block-start-width: props.get(table.$border-width); 38 border-block-start-width: props.get(table.$border-width);
39 } 39 }
40 40
@@ -46,7 +46,7 @@
46 } 46 }
47 } 47 }
48 48
49 @include bem.modifier("flush") { 49 @include bem.modifier('flush') {
50 th, 50 th,
51 td { 51 td {
52 &:first-child { 52 &:first-child {
@@ -59,7 +59,7 @@
59 } 59 }
60 } 60 }
61 61
62 @include bem.modifier("box") { 62 @include bem.modifier('box') {
63 td { 63 td {
64 background-color: props.get(table.$box--bg-color); 64 background-color: props.get(table.$box--bg-color);
65 65
diff --git a/src/scopes/_tables.vars.scss b/src/scopes/_tables.vars.scss
index 12d0a0c..dfb4c76 100644
--- a/src/scopes/_tables.vars.scss
+++ b/src/scopes/_tables.vars.scss
@@ -1,4 +1,4 @@
1@use "pkg:iro-sass/props"; 1@use 'pkg:iro-sass/src/props';
2@use "implicit.vars" as implicit; 2@use 'implicit.vars' as implicit;
3 3
4$margin-bs: props.def(--s-tables--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; 4$margin-bs: props.def(--s-tables--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default;
diff --git a/src_demo/components/_box.scss b/src_demo/components/_box.scss
index 2a88480..20e3bcd 100644
--- a/src_demo/components/_box.scss
+++ b/src_demo/components/_box.scss
@@ -1,9 +1,9 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2@use "pkg:iro-sass/props"; 2@use 'pkg:iro-sass/src/props';
3@use "../../src/core.vars"; 3@use '../../src/core.vars';
4 4
5@include bem.component("box") { 5@include bem.component('box') {
6 padding: 2em; 6 padding: 2em;
7 margin-block: 2em; 7 margin-block: 2em;
8 border: 1px solid props.get(core.$theme, --border); 8 border: 1px solid props.get(core.$theme, --border);
9} 9}
diff --git a/src_demo/components/_content.scss b/src_demo/components/_content.scss
index acd32a5..acfccbe 100644
--- a/src_demo/components/_content.scss
+++ b/src_demo/components/_content.scss
@@ -1,6 +1,6 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2 2
3@include bem.component("content") { 3@include bem.component('content') {
4 grid-area: content; 4 grid-area: content;
5 overflow: auto; 5 overflow: auto;
6} 6}
diff --git a/src_demo/components/_sidebar.scss b/src_demo/components/_sidebar.scss
index 4542847..7643d07 100644
--- a/src_demo/components/_sidebar.scss
+++ b/src_demo/components/_sidebar.scss
@@ -1,7 +1,7 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2 2
3@include bem.component("sidebar") { 3@include bem.component('sidebar') {
4 grid-area: sidebar; 4 grid-area: sidebar;
5 min-inline-size: 15em; 5 min-inline-size: 15em;
6 min-block-size: 0; 6 min-block-size: 0;
7} 7}
diff --git a/src_demo/components/_view.scss b/src_demo/components/_view.scss
index 7471cdb..8d80995 100644
--- a/src_demo/components/_view.scss
+++ b/src_demo/components/_view.scss
@@ -1,9 +1,9 @@
1@use "pkg:iro-sass/bem"; 1@use 'pkg:iro-sass/src/bem';
2 2
3@include bem.component("view") { 3@include bem.component('view') {
4 display: none; 4 display: none;
5 5
6 &:target { 6 &:target {
7 display: block; 7 display: block;
8 } 8 }
9} 9}