summaryrefslogtreecommitdiffstats
path: root/src/objects
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 /src/objects
parentPaths (diff)
downloadiro-design-aeed08dc46662a0d70e04bcea612a701633736e7.tar.gz
iro-design-aeed08dc46662a0d70e04bcea612a701633736e7.tar.bz2
iro-design-aeed08dc46662a0d70e04bcea612a701633736e7.zip
Revert "Paths"
This reverts commit cc5329a5f4d3ea91cac93bc7f9b8f943b7ced226.
Diffstat (limited to 'src/objects')
-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
53 files changed, 2524 insertions, 3879 deletions
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}