summaryrefslogtreecommitdiffstats
path: root/src/objects
diff options
context:
space:
mode:
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, 3879 insertions, 2524 deletions
diff --git a/src/objects/_alert.scss b/src/objects/_alert.scss
index c2a1c58..3aeb781 100644
--- a/src/objects/_alert.scss
+++ b/src/objects/_alert.scss
@@ -1,44 +1,37 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:meta'; 2@use "sass:meta";
3@use 'pkg:iro-sass/src/bem'; 3@use "pkg:iro-sass/bem";
4@use 'pkg:iro-sass/src/props'; 4@use "pkg:iro-sass/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: 20 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur)
21 props.get(vars.$shadow-x) 21 props.get(vars.$shadow-grow) props.get(vars.$shadow-color);
22 props.get(vars.$shadow-y)
23 props.get(vars.$shadow-blur)
24 props.get(vars.$shadow-grow)
25 props.get(vars.$shadow-color);
26 22
27 &::before { 23 &::before {
28 display: block; 24 display: block;
29 margin-block: -100em 100em; 25 margin-block: -100em 100em;
30 content: ''; 26 content: "";
31 } 27 }
32 28
33 @each $mod, $theme in vars.$themes-config { 29 @each $mod, $theme in vars.$themes-config {
34 @include bem.modifier($mod) { 30 @include bem.modifier($mod) {
35 background-color: props.get(vars.$themes, $theme, --bg-color); 31 background-color: props.get(vars.$themes, $theme, --bg-color);
36 border-color: props.get(vars.$themes, $theme, --border-color); 32 border-color: props.get(vars.$themes, $theme, --border-color);
37 box-shadow: 33 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y)
38 props.get(vars.$shadow-x) 34 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow)
39 props.get(vars.$shadow-y)
40 props.get(vars.$shadow-blur)
41 props.get(vars.$shadow-grow)
42 props.get(vars.$themes, $theme, --shadow-color); 35 props.get(vars.$themes, $theme, --shadow-color);
43 } 36 }
44 } 37 }
diff --git a/src/objects/_alert.vars.scss b/src/objects/_alert.vars.scss
index bbd3dad..aedd917 100644
--- a/src/objects/_alert.vars.scss
+++ b/src/objects/_alert.vars.scss
@@ -1,36 +1,50 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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(--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; 15$border-color: props.def(
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;
16 21
17$shadow-color: props.def(--o-alert--shadow-color, props.get(core.$transparent-colors, --black, --200), 'color') !default; 22$shadow-color: props.def(
23 --o-alert--shadow-color,
24 props.get(core.$transparent-colors, --black, --200),
25 "color"
26) !default;
18 27
19$themes-config: ( 28$themes-config: (
20 accent: --accent, 29 accent: --accent,
21 positive: --positive, 30 positive: --positive,
22 negative: --negative, 31 negative: --negative,
23 warning: --warning, 32 warning: --warning,
24) !default; 33) !default;
25 34
26$themes: props.def(--o-alert, (), 'color'); 35$themes: props.def(--o-alert, (), "color");
27 36
28@each $theme, $key in $themes-config { 37@each $theme, $key in $themes-config {
29 $themes: props.merge($themes, ( 38 $themes: props.merge(
30 $key: ( 39 $themes,
31 --bg-color: props.get(core.$theme, --bg-l2), 40 (
32 --border-color: props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --800), 41 $key: (
33 --shadow-color: props.get(core.$theme, $key, --200), 42 --bg-color: props.get(core.$theme, --bg-l2),
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 ),
34 ) 48 )
35 )); 49 );
36} 50}
diff --git a/src/objects/_avatar.scss b/src/objects/_avatar.scss
index 272c213..f805502 100644
--- a/src/objects/_avatar.scss
+++ b/src/objects/_avatar.scss
@@ -1,118 +1,135 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(circle calc(.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) at 15 mask-image: radial-gradient(
16 calc(100% - .5 * props.get($indicator-size)) 16 circle calc(0.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing))
17 calc(100% - .5 * props.get($indicator-size)), 17 at calc(100% - 0.5 * props.get($indicator-size))
18 transparent 95%, 18 calc(100% - 0.5 * props.get($indicator-size)),
19 #fff); 19 transparent 95%,
20 #fff
21 );
20 } 22 }
21 } 23 }
22} 24}
23 25
24@mixin styles { 26@mixin styles {
25 @include materialize-at-root(meta.module-variables('vars')); 27 @include materialize-at-root(meta.module-variables("vars"));
26 28
27 @include bem.object('avatar') { 29 @include bem.object("avatar") {
28 position: relative; 30 position: relative;
29 display: inline-block; 31 display: inline-block;
30 font-style: normal; 32 font-style: normal;
31 vertical-align: .05em; 33 vertical-align: 0.05em;
32 border-radius: props.get(vars.$rounding); 34 border-radius: props.get(vars.$rounding);
33 35
34 &::after { 36 &::after {
35 position: absolute; 37 position: absolute;
36 inset: calc(-1 * props.get(vars.$key-focus--border-offset)); 38 inset: calc(-1 * props.get(vars.$key-focus--border-offset));
37 z-index: 1; 39 z-index: 1;
38 display: none; 40 display: none;
39 pointer-events: none; 41 pointer-events: none;
40 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 42 outline: props.get(vars.$key-focus--border-color) solid
41 content: ''; 43 props.get(vars.$key-focus--border-width);
42 border: props.get(vars.$key-focus--border-offset) solid transparent; 44 content: "";
43 border-radius: props.get(vars.$rounding); 45 border: props.get(vars.$key-focus--border-offset) solid transparent;
44 box-shadow: 46 border-radius: props.get(vars.$rounding);
45 0 47 box-shadow: 0 0 0
46 0 48 calc(
47 0 49 props.get(vars.$key-focus--border-width) +
48 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 50 props.get(vars.$key-focus--outline-width)
51 )
49 props.get(vars.$key-focus--outline-color); 52 props.get(vars.$key-focus--outline-color);
50 } 53 }
51 54
52 @include bem.elem('status') { 55 @include bem.elem("status") {
53 position: absolute; 56 position: absolute;
54 inset-block-end: 0; 57 inset-block-end: 0;
55 inset-inline-end: 0; 58 inset-inline-end: 0;
56 } 59 }
57 60
58 @include bem.elem('icon') { 61 @include bem.elem("icon") {
59 position: absolute; 62 position: absolute;
60 inset-block-end: 0; 63 inset-block-end: 0;
61 inset-inline-end: 0; 64 inset-inline-end: 0;
62 display: flex; 65 display: flex;
63 align-items: flex-end; 66 align-items: flex-end;
64 justify-content: flex-end; 67 justify-content: flex-end;
65 inline-size: props.get(vars.$icon-size); 68 inline-size: props.get(vars.$icon-size);
66 block-size: props.get(vars.$icon-size); 69 block-size: props.get(vars.$icon-size);
67 70
68 @include bem.sibling-elem('content') { 71 @include bem.sibling-elem("content") {
69 clip-path: props.get(vars.$icon-mask); 72 clip-path: props.get(vars.$icon-mask);
70 } 73 }
71 } 74 }
72 75
73 @include bem.elem('content') { 76 @include bem.elem("content") {
74 display: block; 77 display: block;
75 inline-size: props.get(vars.$size); 78 inline-size: props.get(vars.$size);
76 block-size: props.get(vars.$size); 79 block-size: props.get(vars.$size);
77 font-size: props.get(vars.$font-size); 80 font-size: props.get(vars.$font-size);
78 line-height: props.get(vars.$size); 81 line-height: props.get(vars.$size);
79 text-align: center; 82 text-align: center;
80 object-fit: cover; 83 object-fit: cover;
81 object-position: center center; 84 object-position: center center;
82 border-radius: props.get(vars.$rounding); 85 border-radius: props.get(vars.$rounding);
83 } 86 }
84 87
85 @include bem.modifier('circle') { 88 @include bem.modifier("circle") {
86 border-radius: 100%; 89 border-radius: 100%;
87 90
88 &::after { 91 &::after {
89 border-radius: 100%; 92 border-radius: 100%;
90 } 93 }
91 94
92 @include bem.elem('content') { 95 @include bem.elem("content") {
93 border-radius: 100%; 96 border-radius: 100%;
94 } 97 }
95 } 98 }
96 99
97 @include bem.modifier('placeholder') { 100 @include bem.modifier("placeholder") {
98 @include bem.elem('content') { 101 @include bem.elem("content") {
99 background-color: hsl(0, 0%, props.get(vars.$bg-color--l)); 102 background-color: hsl(0, 0%, props.get(vars.$bg-color--l));
100 } 103 }
101 } 104 }
102 105
103 @include bem.modifier('colored') { 106 @include bem.modifier("colored") {
104 @include bem.elem('content') { 107 @include bem.elem("content") {
105 color: #fff; 108 color: #fff;
106 background-color: hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)); 109 background-color: hsl(
110 props.get(vars.$bg-color--h),
111 props.get(vars.$bg-color--s),
112 props.get(vars.$bg-color--l)
113 );
107 } 114 }
108 } 115 }
109 116
110 @include bem.modifier('colored-gradient') { 117 @include bem.modifier("colored-gradient") {
111 @include bem.elem('content') { 118 @include bem.elem("content") {
112 color: #fff; 119 color: #fff;
113 background: linear-gradient(props.get(vars.$bg-angle), 120 background: linear-gradient(
114 hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)), 121 props.get(vars.$bg-angle),
115 hsl(props.get(vars.$bg-color-2--h), props.get(vars.$bg-color-2--s), props.get(vars.$bg-color-2--l))); 122 hsl(
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 );
116 } 133 }
117 } 134 }
118 135
@@ -122,19 +139,19 @@
122 @include bem.modifier($mod) { 139 @include bem.modifier($mod) {
123 @include status($indicator-size); 140 @include status($indicator-size);
124 141
125 @include bem.elem('icon') { 142 @include bem.elem("icon") {
126 inline-size: props.get($icon-size); 143 inline-size: props.get($icon-size);
127 block-size: props.get($icon-size); 144 block-size: props.get($icon-size);
128 145
129 @include bem.sibling-elem('content') { 146 @include bem.sibling-elem("content") {
130 clip-path: props.get($icon-mask); 147 clip-path: props.get($icon-mask);
131 } 148 }
132 } 149 }
133 150
134 @include bem.elem('content') { 151 @include bem.elem("content") {
135 inline-size: props.get($size); 152 inline-size: props.get($size);
136 block-size: props.get($size); 153 block-size: props.get($size);
137 font-size: props.get($font-size); 154 font-size: props.get($font-size);
138 line-height: props.get($size); 155 line-height: props.get($size);
139 } 156 }
140 } 157 }
diff --git a/src/objects/_avatar.vars.scss b/src/objects/_avatar.vars.scss
index 467d7cc..7d1c342 100644
--- a/src/objects/_avatar.vars.scss
+++ b/src/objects/_avatar.vars.scss
@@ -1,79 +1,102 @@
1@use 'sass:math'; 1@use "sass:math";
2 2
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(.5))) !default; 17$icon-mask: props.def(--o-avatar--icon-mask, url(icon-mask(0.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(--o-avatar--xxxl--indicator-size, props.get(core.$size--400)) !default; 21$indicator-size--xxxl: props.def(
22$icon-size--xxxl: props.def(--o-avatar--xxxl--icon-size, 1.9em) !default; 22 --o-avatar--xxxl--indicator-size,
23$icon-mask--xxxl: props.def(--o-avatar--xxxl--icon-mask, url(icon-mask(.75))) !default; 23 props.get(core.$size--400)
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;
24 27
25$size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default; 28$size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default;
26$font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default; 29$font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default;
27$indicator-size--xxl: props.def(--o-avatar--xxl--indicator-size, props.get(core.$size--300)) !default; 30$indicator-size--xxl: props.def(
28$icon-size--xxl: props.def(--o-avatar--xxl--icon-size, 1.7em) !default; 31 --o-avatar--xxl--indicator-size,
29$icon-mask--xxl: props.def(--o-avatar--xxl--icon-mask, url(icon-mask(.7))) !default; 32 props.get(core.$size--300)
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;
30 36
31$size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default; 37$size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default;
32$font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default; 38$font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default;
33$indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default; 39$indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default;
34$icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default; 40$icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default;
35$icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(.6))) !default; 41$icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(0.6))) !default;
36 42
37$size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default; 43$size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default;
38$font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default; 44$font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default;
39$indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default; 45$indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default;
40$icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default; 46$icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default;
41$icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(.55))) !default; 47$icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(0.55))) !default;
42 48
43$size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default; 49$size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default;
44$font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default; 50$font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default;
45$indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default; 51$indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default;
46$icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default; 52$icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default;
47$icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(.5))) !default; 53$icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(0.5))) !default;
48 54
49$size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default; 55$size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default;
50$font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default; 56$font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default;
51$indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default; 57$indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default;
52$icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default; 58$icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default;
53$icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(.5))) !default; 59$icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(0.5))) !default;
54 60
55$key-focus--border-width: props.def(--o-avatar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 61$key-focus--border-width: props.def(
56$key-focus--border-offset: props.def(--o-avatar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 62 --o-avatar--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; 63 props.get(core.$key-focus--border-width)
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;
58 73
59$bg-color--h: props.def(--o-avatar--bg-color--h, 354, 'color') !default; 74$bg-color--h: props.def(--o-avatar--bg-color--h, 354, "color") !default;
60$bg-color--s: props.def(--o-avatar--bg-color--s, 44%, 'color') !default; 75$bg-color--s: props.def(--o-avatar--bg-color--s, 44%, "color") !default;
61$bg-color--l: props.def(--o-avatar--bg-color--l, 45%, 'color') !default; 76$bg-color--l: props.def(--o-avatar--bg-color--l, 45%, "color") !default;
62 77
63$bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, 'color') !default; 78$bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, "color") !default;
64$bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, 'color') !default; 79$bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, "color") !default;
65$bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, 'color') !default; 80$bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, "color") !default;
66 81
67$bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default; 82$bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default;
68 83
69$key-focus--border-color: props.def(--o-avatar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 84$key-focus--border-color: props.def(
70$key-focus--outline-color: props.def(--o-avatar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 85 --o-avatar--key-focus--border-color,
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;
71 94
72$sizes: ( 95$sizes: (
73 'xs' $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs, 96 "xs" $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs,
74 'sm' $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm, 97 "sm" $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm,
75 'lg' $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg, 98 "lg" $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg,
76 'xl' $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl, 99 "xl" $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl,
77 'xxl' $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl, 100 "xxl" $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl,
78 'xxxl' $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl, 101 "xxxl" $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl
79) !default; 102) !default;
diff --git a/src/objects/_backdrop.scss b/src/objects/_backdrop.scss
index 6660abf..1a7d1fa 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 9206117..78f4742 100644
--- a/src/objects/_backdrop.vars.scss
+++ b/src/objects/_backdrop.vars.scss
@@ -1,6 +1,10 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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(--o-backdrop--bg-color, props.get(core.$transparent-colors, --black, --600), 'color') !default; 6$bg-color: props.def(
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 a3c8187..8adc0f7 100644
--- a/src/objects/_button.scss
+++ b/src/objects/_button.scss
@@ -1,115 +1,119 @@
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/src/bem'; 5@use "pkg:iro-sass/bem";
6@use 'pkg:iro-sass/src/props'; 6@use "pkg:iro-sass/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: 19 box-shadow: 0 0 0
20 0 20 calc(
21 0 21 props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)
22 0 22 )
23 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width))
24 props.get($theme, list.join($key, --key-focus --outline-color)...); 23 props.get($theme, list.join($key, --key-focus --outline-color)...);
25 } 24 }
26 25
27 &:link, 26 &:link,
28 &:visited, 27 &:visited,
29 &:enabled { 28 &:enabled {
30 color: props.get($theme, list.join($key, --label-color)...); 29 color: props.get($theme, list.join($key, --label-color)...);
31 background-color: props.get($theme, list.join($key, --bg-color)...); 30 background-color: props.get($theme, list.join($key, --bg-color)...);
32 border-color: props.get($theme, list.join($key, --border-color)...); 31 border-color: props.get($theme, list.join($key, --border-color)...);
33 box-shadow: 32 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur)
34 props.get(vars.$shadow-x) 33 props.get(vars.$shadow-grow) props.get($theme, list.join($key, --shadow-color)...);
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)...);
39 34
40 &:hover, 35 &:hover,
41 &:focus-visible { 36 &:focus-visible {
42 color: props.get($theme, list.join($key, --hover --label-color)...); 37 color: props.get($theme, list.join($key, --hover --label-color)...);
43 background-color: props.get($theme, list.join($key, --hover --bg-color)...); 38 background-color: props.get($theme, list.join($key, --hover --bg-color)...);
44 border-color: props.get($theme, list.join($key, --hover --border-color)...); 39 border-color: props.get($theme, list.join($key, --hover --border-color)...);
45 } 40 }
46 41
47 &:active { 42 &:active {
48 color: props.get($theme, list.join($key, --active --label-color)...); 43 color: props.get($theme, list.join($key, --active --label-color)...);
49 background-color: props.get($theme, list.join($key, --active --bg-color)...); 44 background-color: props.get($theme, list.join($key, --active --bg-color)...);
50 border-color: props.get($theme, list.join($key, --active --border-color)...); 45 border-color: props.get($theme, list.join($key, --active --border-color)...);
51 box-shadow: none; 46 box-shadow: none;
52 } 47 }
53 } 48 }
54 49
55 @include bem.modifier('badge') { 50 @include bem.modifier("badge") {
56 color: props.get($theme, list.join($key, --badge --label-color)...); 51 color: props.get($theme, list.join($key, --badge --label-color)...);
57 background-color: props.get($theme, list.join($key, --badge --bg-color)...); 52 background-color: props.get($theme, list.join($key, --badge --bg-color)...);
58 border-color: props.get($theme, list.join($key, --badge --border-color)...); 53 border-color: props.get($theme, list.join($key, --badge --border-color)...);
59 box-shadow: none; 54 box-shadow: none;
60 55
61 &:link, 56 &:link,
62 &:visited, 57 &:visited,
63 &:enabled { 58 &:enabled {
64 color: props.get($theme, list.join($key, --badge --label-color)...); 59 color: props.get($theme, list.join($key, --badge --label-color)...);
65 background-color: props.get($theme, list.join($key, --badge --bg-color)...); 60 background-color: props.get($theme, list.join($key, --badge --bg-color)...);
66 border-color: props.get($theme, list.join($key, --badge --border-color)...); 61 border-color: props.get($theme, list.join($key, --badge --border-color)...);
67 box-shadow: none; 62 box-shadow: none;
68 63
69 &:hover, 64 &:hover,
70 &:focus-visible { 65 &:focus-visible {
71 color: props.get($theme, list.join($key, --badge --hover --label-color)...); 66 color: props.get($theme, list.join($key, --badge --hover --label-color)...);
72 background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...); 67 background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...);
73 border-color: props.get($theme, list.join($key, --badge --hover --border-color)...); 68 border-color: props.get($theme, list.join($key, --badge --hover --border-color)...);
74 } 69 }
75 70
76 &:active { 71 &:active {
77 color: props.get($theme, list.join($key, --badge --active --label-color)...); 72 color: props.get($theme, list.join($key, --badge --active --label-color)...);
78 background-color: props.get($theme, list.join($key, --badge --active --bg-color)...); 73 background-color: props.get(
79 border-color: props.get($theme, list.join($key, --badge --active --border-color)...); 74 $theme,
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 );
80 } 81 }
81 } 82 }
82 } 83 }
83 84
84 @include bem.modifier('quiet') { 85 @include bem.modifier("quiet") {
85 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...); 86 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...);
86 background-color: transparent; 87 background-color: transparent;
87 border-color: transparent; 88 border-color: transparent;
88 89
89 &:link, 90 &:link,
90 &:visited, 91 &:visited,
91 &:enabled { 92 &:enabled {
92 color: props.get($theme, list.join($key, --quiet --label-color)...); 93 color: props.get($theme, list.join($key, --quiet --label-color)...);
93 background-color: transparent; 94 background-color: transparent;
94 border-color: transparent; 95 border-color: transparent;
95 box-shadow: none; 96 box-shadow: none;
96 97
97 &:hover, 98 &:hover,
98 &:focus-visible { 99 &:focus-visible {
99 color: props.get($theme, list.join($key, --quiet --hover --label-color)...); 100 color: props.get($theme, list.join($key, --quiet --hover --label-color)...);
100 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...); 101 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...);
101 border-color: transparent; 102 border-color: transparent;
102 } 103 }
103 104
104 &:active { 105 &:active {
105 color: props.get($theme, list.join($key, --quiet --active --label-color)...); 106 color: props.get($theme, list.join($key, --quiet --active --label-color)...);
106 background-color: props.get($theme, list.join($key, --quiet --active --bg-color)...); 107 background-color: props.get(
107 border-color: transparent; 108 $theme,
109 list.join($key, --quiet --active --bg-color)...
110 );
111 border-color: transparent;
108 } 112 }
109 } 113 }
110 } 114 }
111 115
112 @include bem.is('highlighted') { 116 @include bem.is("highlighted") {
113 &:link, 117 &:link,
114 &:visited, 118 &:visited,
115 &:enabled { 119 &:enabled {
@@ -121,32 +125,27 @@
121 125
122 box-shadow: 126 box-shadow:
123 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...), 127 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...),
124 props.get(vars.$shadow-x) 128 props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur)
125 props.get(vars.$shadow-y) 129 props.get(vars.$shadow-grow)
126 props.get(vars.$shadow-blur) 130 props.get($theme, list.join($key, --highlighted --shadow-color)...);
127 props.get(vars.$shadow-grow)
128 props.get($theme, list.join($key, --highlighted --shadow-color)...);
129 131
130 &:focus-visible { 132 &:focus-visible {
131 box-shadow: 133 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y)
132 props.get(vars.$shadow-x) 134 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow)
133 props.get(vars.$shadow-y)
134 props.get(vars.$shadow-blur)
135 props.get(vars.$shadow-grow)
136 props.get($theme, list.join($key, --shadow-color)...); 135 props.get($theme, list.join($key, --shadow-color)...);
137 } 136 }
138 } 137 }
139 } 138 }
140 139
141 @include bem.is('selected') { 140 @include bem.is("selected") {
142 color: props.get($theme, list.join($key, --selected --disabled --label-color)...); 141 color: props.get($theme, list.join($key, --selected --disabled --label-color)...);
143 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); 142 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...);
144 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...); 143 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...);
145 144
146 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'badge') { 145 @include bem.multi("&:link, &:visited, &:enabled", "modifier" "badge") {
147 color: props.get($theme, list.join($key, --selected --label-color)...); 146 color: props.get($theme, list.join($key, --selected --label-color)...);
148 background-color: props.get($theme, list.join($key, --selected --bg-color)...); 147 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
149 border-color: props.get($theme, list.join($key, --selected --border-color)...); 148 border-color: props.get($theme, list.join($key, --selected --border-color)...);
150 } 149 }
151 150
152 &:link, 151 &:link,
@@ -154,47 +153,67 @@
154 &:enabled { 153 &:enabled {
155 &:hover, 154 &:hover,
156 &:focus-visible { 155 &:focus-visible {
157 color: props.get($theme, list.join($key, --selected --hover --label-color)...); 156 color: props.get($theme, list.join($key, --selected --hover --label-color)...);
158 background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...); 157 background-color: props.get(
159 border-color: props.get($theme, list.join($key, --selected --hover --border-color)...); 158 $theme,
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 );
160 } 165 }
161 166
162 &:active { 167 &:active {
163 color: props.get($theme, list.join($key, --selected --active --label-color)...); 168 color: props.get($theme, list.join($key, --selected --active --label-color)...);
164 background-color: props.get($theme, list.join($key, --selected --active --bg-color)...); 169 background-color: props.get(
165 border-color: props.get($theme, list.join($key, --selected --active --border-color)...); 170 $theme,
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 );
166 } 177 }
167 } 178 }
168 } 179 }
169} 180}
170 181
171@mixin styles { 182@mixin styles {
172 @include materialize-at-root(meta.module-variables('vars')); 183 @include materialize-at-root(meta.module-variables("vars"));
173 184
174 @include bem.object('button') { 185 @include bem.object("button") {
175 position: relative; 186 position: relative;
176 display: inline-block; 187 display: inline-block;
177 padding-block: props.get(vars.$pad-b); 188 padding-block: props.get(vars.$pad-b);
178 padding-inline: props.get(vars.$pad-i); 189 padding-inline: props.get(vars.$pad-i);
179 text-overflow: ellipsis; 190 text-overflow: ellipsis;
180 font-size: props.get(vars.$font-size); 191 font-size: props.get(vars.$font-size);
181 line-height: props.get(vars.$line-height); 192 line-height: props.get(vars.$line-height);
182 text-align: center; 193 text-align: center;
183 white-space: nowrap; 194 white-space: nowrap;
184 text-decoration: none; 195 text-decoration: none;
185 border: props.get(vars.$border-width) solid transparent; 196 border: props.get(vars.$border-width) solid transparent;
186 border-radius: props.get(vars.$rounding); 197 border-radius: props.get(vars.$rounding);
187 transition: color .1s, background-color .1s, border-color .1s, box-shadow .1s; 198 transition:
199 color 0.1s,
200 background-color 0.1s,
201 border-color 0.1s,
202 box-shadow 0.1s;
188 203
189 &::after { 204 &::after {
190 position: absolute; 205 position: absolute;
191 inset: calc(-1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset)); 206 inset: calc(
192 z-index: 1; 207 -1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset)
193 display: none; 208 );
209 z-index: 1;
210 display: none;
194 pointer-events: none; 211 pointer-events: none;
195 outline: transparent solid props.get(vars.$key-focus--border-width); 212 outline: transparent solid props.get(vars.$key-focus--border-width);
196 content: ''; 213 content: "";
197 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); 214 border-radius: calc(
215 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)
216 );
198 } 217 }
199 218
200 &:link, 219 &:link,
@@ -209,7 +228,7 @@
209 } 228 }
210 } 229 }
211 230
212 @include bem.elem('label') { 231 @include bem.elem("label") {
213 display: inline-block; 232 display: inline-block;
214 margin-inline: props.get(vars.$pad-i-label); 233 margin-inline: props.get(vars.$pad-i-label);
215 } 234 }
@@ -222,79 +241,91 @@
222 } 241 }
223 } 242 }
224 243
225 @include bem.modifier('pill') { 244 @include bem.modifier("pill") {
226 padding-inline: props.get(vars.$pad-i-pill); 245 padding-inline: props.get(vars.$pad-i-pill);
227 border-radius: 100em; 246 border-radius: 100em;
228 247
229 &::after { 248 &::after {
230 border-radius: 100em; 249 border-radius: 100em;
231 } 250 }
232 } 251 }
233 252
234 @include bem.modifier('icon') { 253 @include bem.modifier("icon") {
235 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b)); 254 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b));
236 padding-inline: 0; 255 padding-inline: 0;
237 } 256 }
238 257
239 @include bem.modifier('wide') { 258 @include bem.modifier("wide") {
240 @include bem.elem('label') { 259 @include bem.elem("label") {
241 margin-inline: props.get(vars.$pad-i-wide); 260 margin-inline: props.get(vars.$pad-i-wide);
242 } 261 }
243 } 262 }
244 263
245 @include bem.modifier('justify') { 264 @include bem.modifier("justify") {
246 text-align: justify; 265 text-align: justify;
247 text-align-last: justify; 266 text-align-last: justify;
248 } 267 }
249 268
250 @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { 269 @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b,
270 $font-size in vars.$fixed-sizes
271 {
251 @include bem.modifier($mod) { 272 @include bem.modifier($mod) {
252 padding-block: props.get($pad-b); 273 padding-block: props.get($pad-b);
253 padding-inline: props.get($pad-i); 274 padding-inline: props.get($pad-i);
254 font-size: props.get($font-size); 275 font-size: props.get($font-size);
255 276
256 @include bem.elem('label') { 277 @include bem.elem("label") {
257 margin-inline: props.get($pad-i-label); 278 margin-inline: props.get($pad-i-label);
258 } 279 }
259 280
260 @include bem.modifier('pill') { 281 @include bem.modifier("pill") {
261 padding-inline: props.get($pad-i-pill); 282 padding-inline: props.get($pad-i-pill);
262 } 283 }
263 284
264 @include bem.modifier('icon') { 285 @include bem.modifier("icon") {
265 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b)); 286 inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b));
266 padding-inline: 0; 287 padding-inline: 0;
267 } 288 }
268 289
269 @include bem.modifier('wide') { 290 @include bem.modifier("wide") {
270 @include bem.elem('label') { 291 @include bem.elem("label") {
271 margin-inline: props.get($pad-i-wide); 292 margin-inline: props.get($pad-i-wide);
272 } 293 }
273 } 294 }
274 } 295 }
275 } 296 }
276 297
277 @include bem.modifier('align-block') { 298 @include bem.modifier("align-block") {
278 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width)); 299 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width));
279 300
280 @include bem.modifier('pill') { 301 @include bem.modifier("pill") {
281 margin-inline: calc(-1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width)); 302 margin-inline: calc(
303 -1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width)
304 );
282 } 305 }
283 306
284 @include bem.modifier('icon') { 307 @include bem.modifier("icon") {
285 margin-inline: calc(-1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1)); 308 margin-inline: calc(
309 -1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - 0.5em *
310 (props.get(vars.$line-height) - 1)
311 );
286 } 312 }
287 313
288 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { 314 @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes {
289 @include bem.modifier($mod) { 315 @include bem.modifier($mod) {
290 margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width)); 316 margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width));
291 317
292 @include bem.modifier('pill') { 318 @include bem.modifier("pill") {
293 margin-inline: calc(-1 * props.get($pad-i-pill) - props.get(vars.$border-width)); 319 margin-inline: calc(
320 -1 * props.get($pad-i-pill) - props.get(vars.$border-width)
321 );
294 } 322 }
295 323
296 @include bem.modifier('icon') { 324 @include bem.modifier("icon") {
297 margin-inline: calc(-1 * props.get($pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1)); 325 margin-inline: calc(
326 -1 * props.get($pad-b) - props.get(vars.$border-width) - 0.5em *
327 (props.get(vars.$line-height) - 1)
328 );
298 } 329 }
299 } 330 }
300 } 331 }
diff --git a/src/objects/_button.vars.scss b/src/objects/_button.vars.scss
index 3f835ae..a137d6d 100644
--- a/src/objects/_button.vars.scss
+++ b/src/objects/_button.vars.scss
@@ -1,386 +1,456 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-button--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 50$key-focus--border-width: props.def(
51$key-focus--border-offset: props.def(--o-button--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 51 --o-button--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; 52 props.get(core.$key-focus--border-width)
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;
53 62
54$fixed-sizes: ( 63$fixed-sizes: (
55 'xs' $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs, 64 "xs" $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs,
56 'sm' $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm, 65 "sm" $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm,
57 'lg' $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg, 66 "lg" $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg,
58 'xl' $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl, 67 "xl" $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl
59) !default; 68) !default;
60 69
61$themes: props.def(--o-button, (), 'color'); 70$themes: props.def(--o-button, (), "color");
62 71
63$default-theme-override: () !default; 72$default-theme-override: () !default;
64$default-theme: map.deep-merge(( 73$default-theme: map.deep-merge(
65 --bg-color: props.get(core.$theme, --bg-l2), 74 (
66 --label-color: props.get(core.$theme, --text), 75 --bg-color: props.get(core.$theme, --bg-l2),
67 --border-color: props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), 76 --label-color: props.get(core.$theme, --text),
68 --shadow-color: props.get(core.$theme, --shadow), 77 --border-color: props.get(core.$theme, --box, --border)
69 78 props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong),
70 --hover: ( 79 --shadow-color: props.get(core.$theme, --shadow),
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
103 --hover: ( 80 --hover: (
104 --bg-color: props.get(core.$theme, --text), 81 --bg-color: props.get(core.$theme, --bg-l1),
105 --label-color: props.get(core.$theme, --base, --50), 82 --label-color: props.get(core.$theme, --heading),
106 --border-color: props.get(core.$theme, --text), 83 --border-color: props.get(core.$theme, --border),
107 ), 84 ),
108 85
109 --active: ( 86 --active: (
110 --bg-color: props.get(core.$theme, --text-mute), 87 --bg-color: props.get(core.$theme, --border-mute),
111 --label-color: props.get(core.$theme, --base, --50), 88 --label-color: props.get(core.$theme, --heading),
112 --border-color: props.get(core.$theme, --text-mute), 89 --border-color: props.get(core.$theme, --border-strong),
113 ), 90 ),
114 91
115 --disabled: ( 92 --disabled: (
116 --bg-color: props.get(core.$theme, --border-mute), 93 --bg-color: transparent,
117 --label-color: props.get(core.$theme, --border-strong), 94 --label-color: props.get(core.$theme, --border-strong),
118 --border-color: props.get(core.$theme, --border-mute), 95 --border-color: props.get(core.$theme, --text-disabled),
119 ), 96 ),
120 ),
121 97
122 --badge: ( 98 --key-focus: (
123 --bg-color: props.get(core.$theme, --border-mute), 99 --border-color: props.get(core.$theme, --focus, --border),
124 --label-color: props.get(core.$theme, --heading), 100 --outline-color: props.get(core.$theme, --focus, --outline),
125 --border-color: props.get(core.$theme, --border-mute),
126
127 --hover: (
128 --bg-color: props.get(core.$theme, --border),
129 --label-color: props.get(core.$theme, --heading),
130 --border-color: props.get(core.$theme, --border),
131 ), 101 ),
132 102
133 --active: ( 103 --highlighted: (
134 --bg-color: props.get(core.$theme, --border-strong), 104 --border-color: props.get(core.$theme, --focus, --border),
135 --label-color: props.get(core.$theme, --heading), 105 --shadow-color: props.get(core.$theme, --focus, --outline),
136 --border-color: props.get(core.$theme, --border-strong),
137 ), 106 ),
138 ),
139 107
140 --quiet: ( 108 --selected: (
141 --label-color: props.get(core.$theme, --text), 109 --bg-color: props.get(core.$theme, --heading),
110 --label-color: props.get(core.$theme, --base, --50),
111 --border-color: props.get(core.$theme, --heading),
112 --hover: (
113 --bg-color: props.get(core.$theme, --text),
114 --label-color: props.get(core.$theme, --base, --50),
115 --border-color: props.get(core.$theme, --text),
116 ),
142 117
143 --hover: ( 118 --active: (
144 --bg-color: props.get(core.$theme, --border-mute), 119 --bg-color: props.get(core.$theme, --text-mute),
145 --label-color: props.get(core.$theme, --heading), 120 --label-color: props.get(core.$theme, --base, --50),
121 --border-color: props.get(core.$theme, --text-mute),
122 ),
123
124 --disabled: (
125 --bg-color: props.get(core.$theme, --border-mute),
126 --label-color: props.get(core.$theme, --border-strong),
127 --border-color: props.get(core.$theme, --border-mute),
128 ),
146 ), 129 ),
147 130
148 --active: ( 131 --badge: (
149 --bg-color: props.get(core.$theme, --border), 132 --bg-color: props.get(core.$theme, --border-mute),
150 --label-color: props.get(core.$theme, --heading), 133 --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 ),
151 ), 146 ),
152 147
153 --disabled: ( 148 --quiet: (
154 --label-color: props.get(core.$theme, --border-strong), 149 --label-color: props.get(core.$theme, --text),
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 ),
155 ), 163 ),
156 ), 164 ),
157), $default-theme-override) !default; 165 $default-theme-override
158$default-theme: props.def(--o-button, $default-theme, 'color'); 166) !default;
167$default-theme: props.def(--o-button, $default-theme, "color");
159 168
160$default-theme-dark-override: () !default; 169$default-theme-dark-override: () !default;
161$default-theme-dark: map.deep-merge(( 170$default-theme-dark: map.deep-merge(
162 --bg-color: props.get(core.$theme, --border-mute), 171 (
163 --border-color: props.get(core.$theme, --border-mute), 172 --bg-color: props.get(core.$theme, --border-mute),
164 173 --border-color: props.get(core.$theme, --border-mute),
165 --hover: ( 174 --hover: (
166 --bg-color: props.get(core.$theme, --border), 175 --bg-color: props.get(core.$theme, --border),
167 --border-color: props.get(core.$theme, --border), 176 --border-color: props.get(core.$theme, --border),
168 ), 177 ),
169 178
170 --active: ( 179 --active: (
171 --bg-color: props.get(core.$theme, --border-strong), 180 --bg-color: props.get(core.$theme, --border-strong),
172 --border-color: props.get(core.$theme, --border-strong), 181 --border-color: props.get(core.$theme, --border-strong),
173 ), 182 ),
174 183
175 --selected: ( 184 --selected: (
176 --border-color: props.get(core.$theme, --text), 185 --border-color: props.get(core.$theme, --text),
186 ),
177 ), 187 ),
178), $default-theme-override) !default; 188 $default-theme-override
179$default-theme-dark: props.def(--o-button, $default-theme-dark, 'dark'); 189) !default;
190$default-theme-dark: props.def(--o-button, $default-theme-dark, "dark");
180 191
181@each $theme in map.keys(props.get(core.$transparent-colors)) { 192@each $theme in map.keys(props.get(core.$transparent-colors)) {
182 $button-theme: --static-#{string.slice($theme, 3)}; 193 $button-theme: --static-#{string.slice($theme, 3)};
183 194
184 $themes: props.merge($themes, ( 195 $themes: props.merge(
185 $button-theme: ( 196 $themes,
186 --bg-color: props.get(core.$transparent-colors, $theme, --200), 197 (
187 --label-color: props.get(core.$transparent-colors, $theme, --900), 198 $button-theme: (
188 --border-color: props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --400), 199 --bg-color: props.get(core.$transparent-colors, $theme, --200),
189 --shadow-color: props.get(core.$transparent-colors, --black, --200), 200 --label-color: props.get(core.$transparent-colors, $theme, --900),
190 201 --border-color: props.get(core.$transparent-colors, $theme, --300)
191 --hover: ( 202 props.get(core.$transparent-colors, $theme, --300)
192 --bg-color: props.get(core.$transparent-colors, $theme, --300), 203 props.get(core.$transparent-colors, $theme, --400),
193 --label-color: props.get(core.$transparent-colors, $theme, --900), 204 --shadow-color: props.get(core.$transparent-colors, --black, --200),
194 --border-color: props.get(core.$transparent-colors, $theme, --400), 205 --hover: (
195 ), 206 --bg-color: props.get(core.$transparent-colors, $theme, --300),
207 --label-color: props.get(core.$transparent-colors, $theme, --900),
208 --border-color: props.get(core.$transparent-colors, $theme, --400),
209 ),
196 210
197 --active: ( 211 --active: (
198 --bg-color: props.get(core.$transparent-colors, $theme, --400), 212 --bg-color: props.get(core.$transparent-colors, $theme, --400),
199 --label-color: props.get(core.$transparent-colors, $theme, --900), 213 --label-color: props.get(core.$transparent-colors, $theme, --900),
200 --border-color: props.get(core.$transparent-colors, $theme, --500), 214 --border-color: props.get(core.$transparent-colors, $theme, --500),
201 ), 215 ),
202 216
203 --disabled: ( 217 --disabled: (
204 --bg-color: props.get(core.$transparent-colors, $theme, --100), 218 --bg-color: props.get(core.$transparent-colors, $theme, --100),
205 --label-color: props.get(core.$transparent-colors, $theme, --500), 219 --label-color: props.get(core.$transparent-colors, $theme, --500),
206 --border-color: props.get(core.$transparent-colors, $theme, --300), 220 --border-color: props.get(core.$transparent-colors, $theme, --300),
207 ), 221 ),
208 222
209 --key-focus: ( 223 --key-focus: (
210 --border-color: props.get(core.$transparent-colors, $theme, --900), 224 --border-color: props.get(core.$transparent-colors, $theme, --900),
211 --outline-color: props.get(core.$transparent-colors, $theme, --300), 225 --outline-color: props.get(core.$transparent-colors, $theme, --300),
212 ), 226 ),
213 227
214 --highlighted: ( 228 --highlighted: (
215 --border-color: props.get(core.$transparent-colors, $theme, --900), 229 --border-color: props.get(core.$transparent-colors, $theme, --900),
216 --shadow-color: props.get(core.$transparent-colors, --black, --200), 230 --shadow-color: props.get(core.$transparent-colors, --black, --200),
217 ), 231 ),
218 232
219 --selected: ( 233 --selected: (
220 --bg-color: props.get(core.$transparent-colors, $theme, --900), 234 --bg-color: props.get(core.$transparent-colors, $theme, --900),
221 --label-color: props.get(core.$transparent-colors, $theme, --text), 235 --label-color: props.get(core.$transparent-colors, $theme, --text),
222 --border-color: props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --200), 236 --border-color: props.get(core.$transparent-colors, $theme, --100)
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 ),
223 252
224 --hover: ( 253 --active: (
225 --bg-color: props.get(core.$transparent-colors, $theme, --800), 254 --bg-color: props.get(core.$transparent-colors, $theme, --800),
226 --label-color: props.get(core.$transparent-colors, $theme, --text), 255 --label-color: props.get(
227 --border-color: props.get(core.$transparent-colors, $theme, --100), 256 core.$transparent-colors,
228 ), 257 $theme,
258 --text
259 ),
260 --border-color: props.get(
261 core.$transparent-colors,
262 $theme,
263 --100
264 ),
265 ),
229 266
230 --active: ( 267 --disabled: (
231 --bg-color: props.get(core.$transparent-colors, $theme, --800), 268 --bg-color: props.get(core.$transparent-colors, $theme, --200),
232 --label-color: props.get(core.$transparent-colors, $theme, --text), 269 --label-color: props.get(
233 --border-color: props.get(core.$transparent-colors, $theme, --100), 270 core.$transparent-colors,
234 ), 271 $theme,
272 --500
273 ),
274 --border-color: props.get(
275 core.$transparent-colors,
276 $theme,
277 --100
278 ),
279 ),
280 ),
235 281
236 --disabled: ( 282 --badge: (
237 --bg-color: props.get(core.$transparent-colors, $theme, --200), 283 --bg-color: props.get(core.$transparent-colors, $theme, --200),
238 --label-color: props.get(core.$transparent-colors, $theme, --500), 284 --label-color: props.get(core.$transparent-colors, $theme, --900),
239 --border-color: props.get(core.$transparent-colors, $theme, --100), 285 --border-color: transparent,
240 ),
241 ),
242 286
243 --badge: ( 287 --hover: (
244 --bg-color: props.get(core.$transparent-colors, $theme, --200), 288 --bg-color: props.get(core.$transparent-colors, $theme, --300),
245 --label-color: props.get(core.$transparent-colors, $theme, --900), 289 --label-color: props.get(
246 --border-color: transparent, 290 core.$transparent-colors,
291 $theme,
292 --900
293 ),
294 --border-color: transparent,
295 ),
247 296
248 --hover: ( 297 --active: (
249 --bg-color: props.get(core.$transparent-colors, $theme, --300), 298 --bg-color: props.get(core.$transparent-colors, $theme, --400),
250 --label-color: props.get(core.$transparent-colors, $theme, --900), 299 --label-color: props.get(
251 --border-color: transparent, 300 core.$transparent-colors,
252 ), 301 $theme,
302 --900
303 ),
304 --border-color: transparent,
305 ),
306 ),
253 307
254 --active: ( 308 --quiet: (
255 --bg-color: props.get(core.$transparent-colors, $theme, --400), 309 --label-color: props.get(core.$transparent-colors, $theme, --900),
256 --label-color: props.get(core.$transparent-colors, $theme, --900), 310 --hover: (
257 --border-color: transparent, 311 --bg-color: props.get(core.$transparent-colors, $theme, --200),
258 ), 312 --label-color: props.get(
259 ), 313 core.$transparent-colors,
314 $theme,
315 --900
316 ),
317 ),
260 318
261 --quiet: ( 319 --active: (
262 --label-color: props.get(core.$transparent-colors, $theme, --900), 320 --bg-color: props.get(core.$transparent-colors, $theme, --300),
321 --label-color: props.get(
322 core.$transparent-colors,
323 $theme,
324 --900
325 ),
326 ),
263 327
264 --hover: ( 328 --disabled: (
265 --bg-color: props.get(core.$transparent-colors, $theme, --200), 329 --label-color: props.get(
266 --label-color: props.get(core.$transparent-colors, $theme, --900), 330 core.$transparent-colors,
331 $theme,
332 --500
333 ),
334 ),
335 ),
267 ), 336 ),
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 ),
278 ) 337 )
279 )); 338 );
280} 339}
281 340
282$themes-config: ( 341$themes-config: (
283 accent: --accent, 342 accent: --accent,
284 positive: --positive, 343 positive: --positive,
285 negative: --negative, 344 negative: --negative,
286 warning: --warning, 345 warning: --warning,
287) !default; 346) !default;
288 347
289@each $theme, $key in $themes-config { 348@each $theme, $key in $themes-config {
290 $themes: props.merge($themes, ( 349 $themes: props.merge(
291 --#{$theme}: ( 350 $themes,
292 --bg-color: props.get(core.$theme, $key, --100), 351 (
293 --label-color: props.get(core.$theme, $key, --1100), 352 --#{$theme}: (
294 --border-color: props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --600), 353 --bg-color: props.get(core.$theme, $key, --100),
295 --shadow-color: props.get(core.$theme, $key, --200), 354 --label-color: props.get(core.$theme, $key, --1100),
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 ),
296 364
297 --hover: ( 365 --active: (
298 --bg-color: props.get(core.$theme, $key, --200), 366 --bg-color: props.get(core.$theme, $key, --300),
299 --label-color: props.get(core.$theme, $key, --1200), 367 --label-color: props.get(core.$theme, $key, --1300),
300 --border-color: props.get(core.$theme, $key, --600), 368 --border-color: props.get(core.$theme, $key, --800),
301 ), 369 ),
302 370
303 --active: ( 371 --disabled: (
304 --bg-color: props.get(core.$theme, $key, --300), 372 --bg-color: props.get(core.$theme, --bg-l1),
305 --label-color: props.get(core.$theme, $key, --1300), 373 --label-color: props.get(core.$theme, --border-strong),
306 --border-color: props.get(core.$theme, $key, --800), 374 --border-color: props.get(core.$theme, --border),
307 ), 375 ),
308 376
309 --disabled: ( 377 --key-focus: (
310 --bg-color: props.get(core.$theme, --bg-l1), 378 --border-color: props.get(core.$theme, --focus, --border),
311 --label-color: props.get(core.$theme, --border-strong), 379 --outline-color: props.get(core.$theme, --focus, --outline),
312 --border-color: props.get(core.$theme, --border), 380 ),
313 ),
314 381
315 --key-focus: ( 382 --highlighted: (
316 --border-color: props.get(core.$theme, --focus, --border), 383 --border-color: props.get(core.$theme, $key, --900),
317 --outline-color: props.get(core.$theme, --focus, --outline), 384 --shadow-color: props.get(core.$theme, $key, --200),
318 ), 385 ),
319 386
320 --highlighted: ( 387 --selected: (
321 --border-color: props.get(core.$theme, $key, --900), 388 --bg-color: props.get(core.$theme, #{$key}-static, --900),
322 --shadow-color: props.get(core.$theme, $key, --200), 389 --label-color: props.get(core.$theme, #{$key}-static, --900-text),
323 ), 390 --border-color: props.get(core.$theme, #{$key}-static, --900)
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 ),
324 402
325 --selected: ( 403 --active: (
326 --bg-color: props.get(core.$theme, #{$key}-static, --900), 404 --bg-color: props.get(core.$theme, #{$key}-static, --1100),
327 --label-color: props.get(core.$theme, #{$key}-static, --900-text), 405 --label-color: props.get(
328 --border-color: props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --1000), 406 core.$theme,
407 #{$key}-static,
408 --1100-text
409 ),
410 --border-color: props.get(core.$theme, #{$key}-static, --1100),
411 ),
329 412
330 --hover: ( 413 --disabled: (
331 --bg-color: props.get(core.$theme, #{$key}-static, --1000), 414 --bg-color: props.get(core.$theme, --border-mute),
332 --label-color: props.get(core.$theme, #{$key}-static, --1000-text), 415 --label-color: props.get(core.$theme, --border-strong),
333 --border-color: props.get(core.$theme, #{$key}-static, --1000), 416 --border-color: props.get(core.$theme, --border-mute),
334 ), 417 ),
418 ),
335 419
336 --active: ( 420 --badge: (
337 --bg-color: props.get(core.$theme, #{$key}-static, --1100), 421 --bg-color: props.get(core.$theme, $key, --100),
338 --label-color: props.get(core.$theme, #{$key}-static, --1100-text), 422 --label-color: props.get(core.$theme, $key, --1100),
339 --border-color: props.get(core.$theme, #{$key}-static, --1100), 423 --border-color: props.get(core.$theme, $key, --300),
340 ), 424 --hover: (
341 425 --bg-color: props.get(core.$theme, $key, --200),
342 --disabled: ( 426 --label-color: props.get(core.$theme, $key, --1200),
343 --bg-color: props.get(core.$theme, --border-mute), 427 --border-color: props.get(core.$theme, $key, --400),
344 --label-color: props.get(core.$theme, --border-strong), 428 ),
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 ),
359 429
360 --active: ( 430 --active: (
361 --bg-color: props.get(core.$theme, $key, --300), 431 --bg-color: props.get(core.$theme, $key, --300),
362 --label-color: props.get(core.$theme, $key, --1300), 432 --label-color: props.get(core.$theme, $key, --1300),
363 --border-color: props.get(core.$theme, $key, --500), 433 --border-color: props.get(core.$theme, $key, --500),
364 ), 434 ),
365 ), 435 ),
366 436
367 --quiet: ( 437 --quiet: (
368 --label-color: props.get(core.$theme, $key, --1100), 438 --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 ),
369 443
370 --hover: ( 444 --active: (
371 --bg-color: props.get(core.$theme, $key, --200), 445 --bg-color: props.get(core.$theme, $key, --300),
372 --label-color: props.get(core.$theme, $key, --1200), 446 --label-color: props.get(core.$theme, $key, --1300),
373 ), 447 ),
374 448
375 --active: ( 449 --disabled: (
376 --bg-color: props.get(core.$theme, $key, --300), 450 --label-color: props.get(core.$theme, --border-strong),
377 --label-color: props.get(core.$theme, $key, --1300), 451 ),
378 ), 452 ),
379 453 )
380 --disabled: (
381 --label-color: props.get(core.$theme, --border-strong),
382 ),
383 ),
384 ) 454 )
385 )); 455 );
386} 456}
diff --git a/src/objects/_card.scss b/src/objects/_card.scss
index b8bc727..3275bc8 100644
--- a/src/objects/_card.scss
+++ b/src/objects/_card.scss
@@ -1,84 +1,95 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: transform .2s, background-color .2s, border-color .2s, box-shadow .2s; 21 transition:
22 transform 0.2s,
23 background-color 0.2s,
24 border-color 0.2s,
25 box-shadow 0.2s;
22 26
23 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { 27 @include bem.multi(
28 "&:link, &:visited, &:enabled",
29 "modifier" "interactive",
30 "modifier" "collapsible"
31 ) {
24 &:hover, 32 &:hover,
25 &:active, 33 &:active,
26 &:focus-visible { 34 &:focus-visible {
27 background-color: props.get(vars.$hover--bg-color); 35 background-color: props.get(vars.$hover--bg-color);
28 border-color: props.get(vars.$hover--border-color); 36 border-color: props.get(vars.$hover--border-color);
29 box-shadow: none; 37 box-shadow: none;
30 transform: translateY(props.get(vars.$hover--offset-b)); 38 transform: translateY(props.get(vars.$hover--offset-b));
31 } 39 }
32 40
33 &:focus-visible { 41 &:focus-visible {
34 margin: calc(-1 * props.get(vars.$key-focus--border-width)); 42 margin: calc(-1 * props.get(vars.$key-focus--border-width));
35 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 43 outline: props.get(vars.$key-focus--border-color) solid
36 border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent; 44 props.get(vars.$key-focus--border-width);
37 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); 45 border: calc(
38 box-shadow: 46 props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)
39 0 0 0 47 )
40 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 48 solid transparent;
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 )
41 props.get(vars.$key-focus--outline-color); 57 props.get(vars.$key-focus--outline-color);
42 transition: transform .2s; 58 transition: transform 0.2s;
43 } 59 }
44 } 60 }
45 61
46 @include bem.modifier('borderless') { 62 @include bem.modifier("borderless") {
47 border-color: props.get(vars.$bg-color); 63 border-color: props.get(vars.$bg-color);
48 } 64 }
49 65
50 @include bem.modifier('shadow') { 66 @include bem.modifier("shadow") {
51 box-shadow: 67 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y)
52 props.get(vars.$shadow-x) 68 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow)
53 props.get(vars.$shadow-y)
54 props.get(vars.$shadow-blur)
55 props.get(vars.$shadow-grow)
56 props.get(vars.$shadow-color); 69 props.get(vars.$shadow-color);
57 70
58 @include bem.modifier('quiet') { 71 @include bem.modifier("quiet") {
59 @include bem.elem('image') { 72 @include bem.elem("image") {
60 box-shadow: 73 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y)
61 props.get(vars.$shadow-x) 74 props.get(vars.$shadow-blur) props.get(vars.$shadow-grow)
62 props.get(vars.$shadow-y)
63 props.get(vars.$shadow-blur)
64 props.get(vars.$shadow-grow)
65 props.get(vars.$shadow-color); 75 props.get(vars.$shadow-color);
66 } 76 }
67 } 77 }
68 } 78 }
69 79
70 @include bem.modifier('highlight') { 80 @include bem.modifier("highlight") {
71 margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width)); 81 margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width));
72 border-color: props.get(vars.$highlight--border-color); 82 border-color: props.get(vars.$highlight--border-color);
73 border-width: props.get(vars.$highlight--border-width); 83 border-width: props.get(vars.$highlight--border-width);
74 box-shadow: 84 box-shadow: props.get(vars.$highlight--shadow-x) props.get(vars.$highlight--shadow-y)
75 props.get(vars.$highlight--shadow-x) 85 props.get(vars.$highlight--shadow-blur) props.get(vars.$highlight--shadow-grow)
76 props.get(vars.$highlight--shadow-y)
77 props.get(vars.$highlight--shadow-blur)
78 props.get(vars.$highlight--shadow-grow)
79 props.get(vars.$highlight--shadow-color); 86 props.get(vars.$highlight--shadow-color);
80 87
81 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { 88 @include bem.multi(
89 "&:link, &:visited, &:enabled",
90 "modifier" "interactive",
91 "modifier" "collapsible"
92 ) {
82 &:hover, 93 &:hover,
83 &:active { 94 &:active {
84 border-color: props.get(vars.$highlight--border-color); 95 border-color: props.get(vars.$highlight--border-color);
@@ -86,207 +97,238 @@
86 } 97 }
87 } 98 }
88 99
89 @include bem.elem('avatar') { 100 @include bem.elem("avatar") {
90 margin-block-start: props.get(vars.$pad-b); 101 margin-block-start: props.get(vars.$pad-b);
91 margin-inline-start: props.get(vars.$pad-i); 102 margin-inline-start: props.get(vars.$pad-i);
92 } 103 }
93 104
94 @include bem.elem('image') { 105 @include bem.elem("image") {
95 position: relative; 106 position: relative;
96 display: block; 107 display: block;
97 flex: 0 0 auto; 108 flex: 0 0 auto;
98 inline-size: calc(100% + 2 * props.get(vars.$border-width)); 109 inline-size: calc(100% + 2 * props.get(vars.$border-width));
99 margin: calc(-1 * props.get(vars.$border-width)); 110 margin: calc(-1 * props.get(vars.$border-width));
100 overflow: hidden; 111 overflow: hidden;
101 object-fit: cover; 112 object-fit: cover;
102 transition: background-color .2s, transform .2s, opacity .2s; 113 transition:
114 background-color 0.2s,
115 transform 0.2s,
116 opacity 0.2s;
103 117
104 &:first-child { 118 &:first-child {
105 border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 119 border-start-start-radius: calc(
106 border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 120 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 );
107 } 125 }
108 126
109 &:last-child { 127 &:last-child {
110 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 128 border-end-start-radius: calc(
111 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 129 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 );
112 } 134 }
113 135
114 @include bem.next-elem('avatar') { 136 @include bem.next-elem("avatar") {
115 margin-block-start: calc(-.7 * props.get(avatar.$size--xl)); 137 margin-block-start: calc(-0.7 * props.get(avatar.$size--xl));
116 } 138 }
117 } 139 }
118 140
119 @include bem.elem('image-img') { 141 @include bem.elem("image-img") {
120 display: block; 142 display: block;
121 inline-size: 100%; 143 inline-size: 100%;
122 block-size: 100%; 144 block-size: 100%;
123 object-fit: cover; 145 object-fit: cover;
124 } 146 }
125 147
126 @include bem.elem('image-overlay') { 148 @include bem.elem("image-overlay") {
127 position: absolute; 149 position: absolute;
128 inset-block-end: 0; 150 inset-block-end: 0;
129 inset-inline: 0; 151 inset-inline: 0;
130 z-index: 5; 152 z-index: 5;
131 padding-block: props.get(vars.$image-overlay--pad-b); 153 padding-block: props.get(vars.$image-overlay--pad-b);
132 padding-inline: props.get(vars.$image-overlay--pad-i); 154 padding-inline: props.get(vars.$image-overlay--pad-i);
133 } 155 }
134 156
135 @include bem.elem('body') { 157 @include bem.elem("body") {
136 flex: 0 0 auto; 158 flex: 0 0 auto;
137 padding-block: props.get(vars.$pad-b); 159 padding-block: props.get(vars.$pad-b);
138 padding-inline: props.get(vars.$pad-i); 160 padding-inline: props.get(vars.$pad-i);
139 161
140 &::before { 162 &::before {
141 display: block; 163 display: block;
142 margin-block: -100em 100em; 164 margin-block: -100em 100em;
143 content: ''; 165 content: "";
144 } 166 }
145 167
146 @include bem.modifier('no-mbs-neutralize') { 168 @include bem.modifier("no-mbs-neutralize") {
147 &::before { 169 &::before {
148 display: none; 170 display: none;
149 } 171 }
150 } 172 }
151 173
152 @include bem.modifier('main') { 174 @include bem.modifier("main") {
153 flex-shrink: 1; 175 flex-shrink: 1;
154 block-size: 100%; 176 block-size: 100%;
155 min-block-size: 0; 177 min-block-size: 0;
156 } 178 }
157 } 179 }
158 180
159 @include bem.elem('content') { 181 @include bem.elem("content") {
160 margin-block-start: props.get(vars.$spacing); 182 margin-block-start: props.get(vars.$spacing);
161 } 183 }
162 184
163 @include bem.elem('footer') { 185 @include bem.elem("footer") {
164 flex: 0 0 auto; 186 flex: 0 0 auto;
165 padding-block: 0 props.get(vars.$pad-b); 187 padding-block: 0 props.get(vars.$pad-b);
166 padding-inline: props.get(vars.$pad-i); 188 padding-inline: props.get(vars.$pad-i);
167 margin-block-start: calc(-1 * props.get(vars.$pad-b)); 189 margin-block-start: calc(-1 * props.get(vars.$pad-b));
168 190
169 &::before { 191 &::before {
170 display: block; 192 display: block;
171 block-size: props.get(vars.$divider-width); 193 block-size: props.get(vars.$divider-width);
172 margin-block: props.get(vars.$spacing); 194 margin-block: props.get(vars.$spacing);
173 content: ''; 195 content: "";
174 background-color: props.get(vars.$divider-width); 196 background-color: props.get(vars.$divider-width);
175 } 197 }
176 } 198 }
177 199
178 @include bem.modifier('quiet') { 200 @include bem.modifier("quiet") {
179 margin-inline: 0; 201 margin-inline: 0;
180 background-color: transparent; 202 background-color: transparent;
181 border: 0; 203 border: 0;
182 box-shadow: none; 204 box-shadow: none;
183 205
184 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { 206 @include bem.multi(
207 "&:link, &:visited, &:enabled",
208 "modifier" "interactive",
209 "modifier" "collapsible"
210 ) {
185 &:hover, 211 &:hover,
186 &:active, 212 &:active,
187 &:focus-visible { 213 &:focus-visible {
188 background-color: transparent; 214 background-color: transparent;
189 transform: none; 215 transform: none;
190 216
191 @include bem.elem('image') { 217 @include bem.elem("image") {
192 background-color: props.get(vars.$quiet--hover--image-color); 218 background-color: props.get(vars.$quiet--hover--image-color);
193 opacity: .75; 219 opacity: 0.75;
194 transform: translateY(props.get(vars.$hover--offset-b)); 220 transform: translateY(props.get(vars.$hover--offset-b));
195 } 221 }
196 } 222 }
197 223
198 &:focus-visible { 224 &:focus-visible {
199 margin: 0; 225 margin: 0;
200 outline: none; 226 outline: none;
201 border: 0; 227 border: 0;
202 box-shadow: none; 228 box-shadow: none;
203 229
204 @include bem.elem('image') { 230 @include bem.elem("image") {
205 margin: calc(-1 * props.get(vars.$key-focus--border-width) - props.get(vars.$border-width)); 231 margin: calc(
206 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 232 -1 *
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);
207 background-color: props.get(vars.$quiet--hover--image-color); 239 background-color: props.get(vars.$quiet--hover--image-color);
208 border: props.get(vars.$key-focus--border-offset) solid transparent; 240 border: props.get(vars.$key-focus--border-offset) solid transparent;
209 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); 241 border-radius: calc(
210 box-shadow: 242 props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)
211 0 243 );
212 0 244 box-shadow: 0 0 0
213 0 245 calc(
214 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 246 props.get(vars.$key-focus--border-width) +
247 props.get(vars.$key-focus--outline-width)
248 )
215 props.get(vars.$key-focus--outline-color); 249 props.get(vars.$key-focus--outline-color);
216 opacity: 1; 250 opacity: 1;
217 } 251 }
218 } 252 }
219 } 253 }
220 254
221 @include bem.elem('image') { 255 @include bem.elem("image") {
222 position: relative; 256 position: relative;
223 background-color: props.get(vars.$quiet--image-color); 257 background-color: props.get(vars.$quiet--image-color);
224 background-clip: padding-box; 258 background-clip: padding-box;
225 border-radius: props.get(vars.$rounding); 259 border-radius: props.get(vars.$rounding);
226 } 260 }
227 261
228 @include bem.elem('body') { 262 @include bem.elem("body") {
229 padding: 0; 263 padding: 0;
230 padding-block-start: props.get(vars.$spacing); 264 padding-block-start: props.get(vars.$spacing);
231 } 265 }
232 266
233 @include bem.elem('footer') { 267 @include bem.elem("footer") {
234 padding-inline: 0; 268 padding-inline: 0;
235 } 269 }
236 } 270 }
237 271
238 @include bem.modifier('thumbnail') { 272 @include bem.modifier("thumbnail") {
239 @include bem.elem('image') { 273 @include bem.elem("image") {
240 border-radius: props.get(vars.$rounding); 274 border-radius: props.get(vars.$rounding);
241 } 275 }
242 276
243 @include bem.elem('body') { 277 @include bem.elem("body") {
244 position: absolute; 278 position: absolute;
245 inset-block-end: calc(-1 * props.get(vars.$border-width)); 279 inset-block-end: calc(-1 * props.get(vars.$border-width));
246 inset-inline: calc(-1 * props.get(vars.$border-width)); 280 inset-inline: calc(-1 * props.get(vars.$border-width));
247 z-index: 10; 281 z-index: 10;
248 visibility: hidden; 282 visibility: hidden;
249 background-color: props.get(vars.$hover--bg-color); 283 background-color: props.get(vars.$hover--bg-color);
250 border-color: transparent; 284 border-color: transparent;
251 border-style: solid; 285 border-style: solid;
252 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width); 286 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width);
253 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 287 border-end-start-radius: calc(
254 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 288 props.get(vars.$rounding) - props.get(vars.$border-width)
255 opacity: 0; 289 );
290 border-end-end-radius: calc(
291 props.get(vars.$rounding) - props.get(vars.$border-width)
292 );
293 opacity: 0;
256 transition: 294 transition:
257 border-color .2s ease, 295 border-color 0.2s ease,
258 opacity .2s ease, 296 opacity 0.2s ease,
259 visibility 0s .2s linear; 297 visibility 0s 0.2s linear;
260 } 298 }
261 299
262 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { 300 @include bem.multi(
301 "&:link, &:visited, &:enabled",
302 "modifier" "interactive",
303 "modifier" "collapsible"
304 ) {
263 &:hover, 305 &:hover,
264 &:active, 306 &:active,
265 &:focus-visible { 307 &:focus-visible {
266 @include bem.elem('body') { 308 @include bem.elem("body") {
267 visibility: visible; 309 visibility: visible;
268 border-color: props.get(vars.$hover--border-color); 310 border-color: props.get(vars.$hover--border-color);
269 opacity: 1; 311 opacity: 1;
270 transition: 312 transition:
271 border-color .2s ease, 313 border-color 0.2s ease,
272 opacity .2s ease, 314 opacity 0.2s ease,
273 visibility .2s linear; 315 visibility 0.2s linear;
274 } 316 }
275 } 317 }
276 } 318 }
277 } 319 }
278 320
279 @include bem.modifier('horizontal') { 321 @include bem.modifier("horizontal") {
280 flex-direction: row; 322 flex-direction: row;
281 align-items: center; 323 align-items: center;
282 324
283 @include bem.elem('image') { 325 @include bem.elem("image") {
284 align-self: stretch; 326 align-self: stretch;
285 inline-size: auto; 327 inline-size: auto;
286 328
287 &:first-child { 329 &:first-child {
288 border-start-end-radius: 0; 330 border-start-end-radius: 0;
289 border-end-start-radius: props.get(vars.$rounding); 331 border-end-start-radius: props.get(vars.$rounding);
290 } 332 }
291 333
292 &:last-child { 334 &:last-child {
@@ -295,37 +337,38 @@
295 } 337 }
296 } 338 }
297 339
298 @include bem.elem('body') { 340 @include bem.elem("body") {
299 @include bem.modifier('main') { 341 @include bem.modifier("main") {
300 block-size: auto; 342 block-size: auto;
301 min-block-size: none; 343 min-block-size: none;
302 inline-size: 100%; 344 inline-size: 100%;
303 min-inline-size: 0; 345 min-inline-size: 0;
304 } 346 }
305 } 347 }
306 } 348 }
307 349
308 @include bem.modifier('collapsible') { 350 @include bem.modifier("collapsible") {
309 display: block; 351 display: block;
310 interpolate-size: allow-keywords; 352 interpolate-size: allow-keywords;
311 353
312 @include bem.elem("header") { 354 @include bem.elem("header") {
313 display: flex; 355 display: flex;
314 align-items: center; 356 align-items: center;
315 gap: 1em; 357 gap: 1em;
316 cursor: pointer; 358 cursor: pointer;
317 359
318 &::before { 360 &::before {
319 margin: 0; 361 margin: 0;
320 inline-size: 1em; 362 inline-size: 1em;
321 font-size: 0.8em; 363 font-size: 0.8em;
322 content: "â–¶"; 364 content: "â–¶";
323 } 365 }
324 366
325 &:focus-visible { 367 &:focus-visible {
326 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 368 outline: props.get(vars.$key-focus--border-color) solid
369 props.get(vars.$key-focus--border-width);
327 outline-offset: calc(-1 * props.get(vars.$key-focus--border-width)); 370 outline-offset: calc(-1 * props.get(vars.$key-focus--border-width));
328 border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); 371 border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
329 } 372 }
330 373
331 @include bem.next-elem("body") { 374 @include bem.next-elem("body") {
@@ -334,7 +377,7 @@
334 } 377 }
335 378
336 &::details-content { 379 &::details-content {
337 opacity: 0; 380 opacity: 0;
338 block-size: 0; 381 block-size: 0;
339 overflow-y: clip; 382 overflow-y: clip;
340 transition: 383 transition:
@@ -351,7 +394,7 @@
351 } 394 }
352 395
353 &::details-content { 396 &::details-content {
354 opacity: 1; 397 opacity: 1;
355 block-size: auto; 398 block-size: auto;
356 } 399 }
357 } 400 }
diff --git a/src/objects/_card.vars.scss b/src/objects/_card.vars.scss
index 4616c80..96f3cb9 100644
--- a/src/objects/_card.vars.scss
+++ b/src/objects/_card.vars.scss
@@ -1,51 +1,130 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-card--sub-border-width, props.get(core.$border-width--thick)) !default; 7$sub-border-width: props.def(
8$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default; 8 --o-card--sub-border-width,
9$pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default; 9 props.get(core.$border-width--thick)
10$spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default; 10) !default;
11$rounding: props.def(--o-card--rounding, props.get(core.$rounding)) !default; 11$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !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;
12$image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default; 15$image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default;
13$image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default; 16$image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default;
14 17
15$hover--offset-b: props.def(--o-card--hover--offset-b, calc(-1 * props.get(core.$size--65))) !default; 18$hover--offset-b: props.def(
19 --o-card--hover--offset-b,
20 calc(-1 * props.get(core.$size--65))
21) !default;
16 22
17$shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default; 23$shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default;
18$shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default; 24$shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default;
19$shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default; 25$shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default;
20$shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default; 26$shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default;
21 27
22$key-focus--border-width: props.def(--o-card--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 28$key-focus--border-width: props.def(
23$key-focus--border-offset: props.def(--o-card--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 29 --o-card--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; 30 props.get(core.$key-focus--border-width)
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;
25 40
26$shadow-color: props.def(--o-card--shadow-color, props.get(core.$theme, --shadow), 'color') !default; 41$shadow-color: props.def(
27$bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), 'color') !default; 42 --o-card--shadow-color,
28$border-color: props.def(--o-card--border-color, props.get(core.$theme, --box, --border), 'color') !default; 43 props.get(core.$theme, --shadow),
29$divider-color: props.def(--o-card--divider-color, props.get(core.$theme, --border-mute), 'color') !default; 44 "color"
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;
30 57
31$highlight--shadow-x: props.def(--o-card--highlight--shadow-x, props.get(core.$shadow--l2--x)) !default; 58$highlight--shadow-x: props.def(
32$highlight--shadow-y: props.def(--o-card--highlight--shadow-y, props.get(core.$shadow--l2--y)) !default; 59 --o-card--highlight--shadow-x,
33$highlight--shadow-blur: props.def(--o-card--highlight--shadow-blur, props.get(core.$shadow--l2--blur)) !default; 60 props.get(core.$shadow--l2--x)
34$highlight--shadow-grow: props.def(--o-card--highlight--shadow-grow, props.get(core.$shadow--l2--grow)) !default; 61) !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;
35 74
36$highlight--border-width: props.def(--o-card--highlight--border-width, props.get(core.$border-width--medium)) !default; 75$highlight--border-width: props.def(
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; 76 --o-card--highlight--border-width,
38$highlight--shadow-color: props.def(--o-card--highlight--shadow-color, props.get(core.$theme, --accent, --200), 'color') !default; 77 props.get(core.$border-width--medium)
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;
39 90
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; 91$hover--bg-color: props.def(
41$hover--border-color: props.def(--o-card--hover--border-color, props.get(core.$theme, --border), 'color') !default; 92 --o-card--hover--bg-color,
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;
42 101
43$key-focus--label-color: props.def(--o-card--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; 102$key-focus--label-color: props.def(
44$key-focus--border-color: props.def(--o-card--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 103 --o-card--key-focus--label-color,
45$key-focus--outline-color: props.def(--o-card--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 104 props.get(core.$theme, --focus, --text),
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;
46 117
47$quiet--image-color: props.def(--o-card--quiet--image-color, props.get(core.$theme, --bg-base), 'color') !default; 118$quiet--image-color: props.def(
48$quiet--hover--image-color: props.def(--o-card--quiet--hover--image-color, props.get(core.$theme, --border), 'color') !default; 119 --o-card--quiet--image-color,
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;
49 128
50$pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), 'sm') !default; 129$pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), "sm") !default;
51$pad-b--sm: props.def(--o-card--pad-b, props.get(core.$size--175), 'sm') !default; 130$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 f3fb793..60cee65 100644
--- a/src/objects/_checkbox.scss
+++ b/src/objects/_checkbox.scss
@@ -1,130 +1,140 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/functions' as fn; 3@use "pkg:iro-sass/functions" as fn;
4@use 'pkg:iro-sass/src/props'; 4@use "pkg:iro-sass/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: 19 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
20 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 20 calc(
21 calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get(vars.$key-focus--border-offset)); 21 props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get(
22 vars.$key-focus--border-offset
23 )
24 );
22 25
23 @include bem.elem('box') { 26 @include bem.elem("box") {
24 position: relative; 27 position: relative;
25 display: inline-block; 28 display: inline-block;
26 flex: 0 0 auto; 29 flex: 0 0 auto;
27 inline-size: props.get(vars.$size); 30 inline-size: props.get(vars.$size);
28 block-size: props.get(vars.$size); 31 block-size: props.get(vars.$size);
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)); 32 margin-block-start: calc(
30 vertical-align: top; 33 0.5em * props.get(core.$font--standard--line-height) - 0.5 *
31 background-color: props.get(vars.$box-border-color); 34 props.get(vars.$size) - props.get(vars.$key-focus--border-offset)
32 background-clip: padding-box; 35 );
33 border: props.get(vars.$key-focus--border-offset) solid transparent; 36 vertical-align: top;
34 border-radius: calc(props.get(vars.$border-width) + props.get(vars.$key-focus--border-offset)); 37 background-color: props.get(vars.$box-border-color);
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 );
35 43
36 &::before, 44 &::before,
37 &::after { 45 &::after {
38 position: absolute; 46 position: absolute;
39 display: block; 47 display: block;
40 content: ''; 48 content: "";
41 } 49 }
42 50
43 &::before { 51 &::before {
44 inset-block-start: props.get(vars.$border-width); 52 inset-block-start: props.get(vars.$border-width);
45 inset-inline-start: props.get(vars.$border-width); 53 inset-inline-start: props.get(vars.$border-width);
46 z-index: 2; 54 z-index: 2;
47 inline-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); 55 inline-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)); 56 block-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width));
49 background-color: props.get(vars.$box-bg-color); 57 background-color: props.get(vars.$box-bg-color);
50 transition: transform .2s ease; 58 transition: transform 0.2s ease;
51 } 59 }
52 60
53 &::after { 61 &::after {
54 inset-block-start: calc(.5 * props.get(vars.$size) - 1px); 62 inset-block-start: calc(0.5 * props.get(vars.$size) - 1px);
55 inset-inline-start: calc(1.5 * props.get(vars.$border-width)); 63 inset-inline-start: calc(1.5 * props.get(vars.$border-width));
56 z-index: 3; 64 z-index: 3;
57 box-sizing: border-box; 65 box-sizing: border-box;
58 inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width)); 66 inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width));
59 block-size: 0; 67 block-size: 0;
60 border-color: props.get(vars.$box-bg-color); 68 border-color: props.get(vars.$box-bg-color);
61 border-style: solid; 69 border-style: solid;
62 border-radius: 2px; 70 border-radius: 2px;
63 transform: scale(0); 71 transform: scale(0);
64 transition: transform .2s ease; 72 transition: transform 0.2s ease;
65 border-block-width: 0 2px; 73 border-block-width: 0 2px;
66 border-inline-width: 0 2px; 74 border-inline-width: 0 2px;
67 } 75 }
68 } 76 }
69 77
70 @include bem.elem('check-icon') { 78 @include bem.elem("check-icon") {
71 position: absolute; 79 position: absolute;
72 inset-block-start: calc(1 * props.get(vars.$border-width)); 80 inset-block-start: calc(1 * props.get(vars.$border-width));
73 inset-inline-start: calc(1 * props.get(vars.$border-width)); 81 inset-inline-start: calc(1 * props.get(vars.$border-width));
74 z-index: 2; 82 z-index: 2;
75 display: block; 83 display: block;
76 inline-size: calc(100% - 2 * props.get(vars.$border-width)); 84 inline-size: calc(100% - 2 * props.get(vars.$border-width));
77 block-size: calc(100% - 2 * props.get(vars.$border-width)); 85 block-size: calc(100% - 2 * props.get(vars.$border-width));
78 margin: 0; 86 margin: 0;
79 color: props.get(vars.$box-bg-color); 87 color: props.get(vars.$box-bg-color);
80 stroke-width: fn.px-to-rem(3px); 88 stroke-width: fn.px-to-rem(3px);
81 transform: scale(0); 89 transform: scale(0);
82 transform-origin: 40% 90%; 90 transform-origin: 40% 90%;
83 transition: transform .2s ease; 91 transition: transform 0.2s ease;
84 } 92 }
85 93
86 @include bem.elem('label') { 94 @include bem.elem("label") {
87 margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)); 95 margin-inline-start: calc(
96 props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)
97 );
88 } 98 }
89 99
90 @include bem.elem('native') { 100 @include bem.elem("native") {
91 position: absolute; 101 position: absolute;
92 inset-block-start: 0; 102 inset-block-start: 0;
93 inset-inline-start: 0; 103 inset-inline-start: 0;
94 z-index: -1; 104 z-index: -1;
95 inline-size: 100%; 105 inline-size: 100%;
96 block-size: 100%; 106 block-size: 100%;
97 padding: 0; 107 padding: 0;
98 margin: 0; 108 margin: 0;
99 overflow: hidden; 109 overflow: hidden;
100 appearance: none; 110 appearance: none;
101 border-radius: props.get(vars.$rounding); 111 border-radius: props.get(vars.$rounding);
102 112
103 &:hover, 113 &:hover,
104 &:focus-visible { 114 &:focus-visible {
105 @include bem.sibling-elem('label') { 115 @include bem.sibling-elem("label") {
106 color: props.get(vars.$hover--label-color); 116 color: props.get(vars.$hover--label-color);
107 } 117 }
108 118
109 @include bem.sibling-elem('box') { 119 @include bem.sibling-elem("box") {
110 background-color: props.get(vars.$hover--box-border-color); 120 background-color: props.get(vars.$hover--box-border-color);
111 } 121 }
112 } 122 }
113 123
114 &:checked { 124 &:checked {
115 @include bem.sibling-elem('box') { 125 @include bem.sibling-elem("box") {
116 &::before { 126 &::before {
117 transform: scale(0); 127 transform: scale(0);
118 } 128 }
119 129
120 @include bem.elem('check-icon') { 130 @include bem.elem("check-icon") {
121 transform: scale(1); 131 transform: scale(1);
122 } 132 }
123 } 133 }
124 } 134 }
125 135
126 &:indeterminate { 136 &:indeterminate {
127 @include bem.sibling-elem('box') { 137 @include bem.sibling-elem("box") {
128 &::before { 138 &::before {
129 transform: scale(0); 139 transform: scale(0);
130 } 140 }
@@ -133,18 +143,18 @@
133 transform: scale(1); 143 transform: scale(1);
134 } 144 }
135 145
136 @include bem.elem('check-icon') { 146 @include bem.elem("check-icon") {
137 transform: scale(0); 147 transform: scale(0);
138 } 148 }
139 } 149 }
140 } 150 }
141 151
142 &:disabled { 152 &:disabled {
143 @include bem.sibling-elem('label') { 153 @include bem.sibling-elem("label") {
144 color: props.get(vars.$disabled--label-color); 154 color: props.get(vars.$disabled--label-color);
145 } 155 }
146 156
147 @include bem.sibling-elem('box') { 157 @include bem.sibling-elem("box") {
148 background-color: props.get(vars.$disabled--box-border-color); 158 background-color: props.get(vars.$disabled--box-border-color);
149 159
150 &::before { 160 &::before {
@@ -154,58 +164,59 @@
154 } 164 }
155 165
156 &:focus-visible { 166 &:focus-visible {
157 @include bem.sibling-elem('label') { 167 @include bem.sibling-elem("label") {
158 color: props.get(vars.$key-focus--label-color); 168 color: props.get(vars.$key-focus--label-color);
159 } 169 }
160 170
161 @include bem.sibling-elem('box') { 171 @include bem.sibling-elem("box") {
162 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 172 outline: props.get(vars.$key-focus--border-color) solid
163 box-shadow: 173 props.get(vars.$key-focus--border-width);
164 0 174 box-shadow: 0 0 0
165 0 175 calc(
166 0 176 props.get(vars.$key-focus--border-width) +
167 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 177 props.get(vars.$key-focus--outline-width)
178 )
168 props.get(vars.$key-focus--outline-color); 179 props.get(vars.$key-focus--outline-color);
169 } 180 }
170 } 181 }
171 } 182 }
172 183
173 @include bem.modifier('standalone') { 184 @include bem.modifier("standalone") {
174 @include bem.elem('box') { 185 @include bem.elem("box") {
175 margin-block-start: 0; 186 margin-block-start: 0;
176 } 187 }
177 } 188 }
178 189
179 @include bem.modifier('accent') { 190 @include bem.modifier("accent") {
180 @include bem.elem('native') { 191 @include bem.elem("native") {
181 &:checked { 192 &:checked {
182 @include bem.sibling-elem('box') { 193 @include bem.sibling-elem("box") {
183 background-color: props.get(vars.$accent--box-border-color); 194 background-color: props.get(vars.$accent--box-border-color);
184 } 195 }
185 196
186 &:hover, 197 &:hover,
187 &:focus-visible { 198 &:focus-visible {
188 @include bem.sibling-elem('box') { 199 @include bem.sibling-elem("box") {
189 background-color: props.get(vars.$accent--hover--box-border-color); 200 background-color: props.get(vars.$accent--hover--box-border-color);
190 } 201 }
191 } 202 }
192 } 203 }
193 204
194 &:indeterminate { 205 &:indeterminate {
195 @include bem.sibling-elem('box') { 206 @include bem.sibling-elem("box") {
196 background-color: props.get(vars.$accent--box-border-color); 207 background-color: props.get(vars.$accent--box-border-color);
197 } 208 }
198 209
199 &:hover, 210 &:hover,
200 &:focus-visible { 211 &:focus-visible {
201 @include bem.sibling-elem('box') { 212 @include bem.sibling-elem("box") {
202 background-color: props.get(vars.$accent--hover--box-border-color); 213 background-color: props.get(vars.$accent--hover--box-border-color);
203 } 214 }
204 } 215 }
205 } 216 }
206 217
207 &:disabled { 218 &:disabled {
208 @include bem.sibling-elem('box') { 219 @include bem.sibling-elem("box") {
209 background-color: props.get(vars.$disabled--box-border-color); 220 background-color: props.get(vars.$disabled--box-border-color);
210 221
211 &::before { 222 &::before {
@@ -214,13 +225,13 @@
214 } 225 }
215 226
216 &:checked { 227 &:checked {
217 @include bem.sibling-elem('box') { 228 @include bem.sibling-elem("box") {
218 background-color: props.get(vars.$disabled--box-border-color); 229 background-color: props.get(vars.$disabled--box-border-color);
219 } 230 }
220 } 231 }
221 232
222 &:indeterminate { 233 &:indeterminate {
223 @include bem.sibling-elem('box') { 234 @include bem.sibling-elem("box") {
224 background-color: props.get(vars.$disabled--box-border-color); 235 background-color: props.get(vars.$disabled--box-border-color);
225 } 236 }
226 } 237 }
diff --git a/src/objects/_checkbox.vars.scss b/src/objects/_checkbox.vars.scss
index 278aac8..8362aa7 100644
--- a/src/objects/_checkbox.vars.scss
+++ b/src/objects/_checkbox.vars.scss
@@ -1,32 +1,92 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-checkbox--border-width, props.get(core.$border-width--medium)) !default; 7$border-width: props.def(
8$pad-i: props.def(--o-checkbox--pad-i, props.get(core.$size--65)) !default; 8 --o-checkbox--border-width,
9$pad-b: props.def(--o-checkbox--pad-b, props.get(core.$size--65)) !default; 9 props.get(core.$border-width--medium)
10$rounding: props.def(--o-checkbox--rounding, props.get(core.$rounding--sm)) !default; 10) !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;
11$spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default; 14$spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default;
12 15
13$key-focus--border-width: props.def(--o-checkbox--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 16$key-focus--border-width: props.def(
14$key-focus--border-offset: props.def(--o-checkbox--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 17 --o-checkbox--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; 18 props.get(core.$key-focus--border-width)
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;
16 28
17$box-border-color: props.def(--o-checkbox--box-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; 29$box-border-color: props.def(
18$box-bg-color: props.def(--o-checkbox--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default; 30 --o-checkbox--box-border-color,
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;
19 39
20$hover--label-color: props.def(--o-checkbox--hover--label-color, props.get(core.$theme, --heading), 'color') !default; 40$hover--label-color: props.def(
21$hover--box-border-color: props.def(--o-checkbox--hover--box-border-color, props.get(core.$theme, --text-mute), 'color') !default; 41 --o-checkbox--hover--label-color,
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;
22 50
23$accent--box-border-color: props.def(--o-checkbox--accent--box-border-color, props.get(core.$theme, --accent, --900), 'color') !default; 51$accent--box-border-color: props.def(
24$accent--hover--box-border-color: props.def(--o-checkbox--accent--hover--box-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; 52 --o-checkbox--accent--box-border-color,
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;
25 61
26$disabled--label-color: props.def(--o-checkbox--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 62$disabled--label-color: props.def(
27$disabled--box-border-color: props.def(--o-checkbox--disabled--box-border-color, props.get(core.$theme, --border-strong), 'color') !default; 63 --o-checkbox--disabled--label-color,
28$disabled--box-bg-color: props.def(--o-checkbox--disabled--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default; 64 props.get(core.$theme, --text-disabled),
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;
29 77
30$key-focus--label-color: props.def(--o-checkbox--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; 78$key-focus--label-color: props.def(
31$key-focus--border-color: props.def(--o-checkbox--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 79 --o-checkbox--key-focus--label-color,
32$key-focus--outline-color: props.def(--o-checkbox--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 80 props.get(core.$theme, --focus, --text),
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 d2ee8c3..f5584e6 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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,38 +31,40 @@
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(.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b)); 55 padding-block-start: calc(
56 0.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b)
57 );
56 } 58 }
57 } 59 }
58 60
59 @include bem.elem('body') { 61 @include bem.elem("body") {
60 padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i); 62 padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i);
61 63
62 &::before { 64 &::before {
63 display: block; 65 display: block;
64 margin-block: -100em 100em; 66 margin-block: -100em 100em;
65 content: ''; 67 content: "";
66 } 68 }
67 } 69 }
68 } 70 }
diff --git a/src/objects/_dialog.vars.scss b/src/objects/_dialog.vars.scss
index 39c47ba..8650e51 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/src/props'; 2@use "pkg:iro-sass/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,5 +12,9 @@ $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(--o-dialog--border-color, props.get(core.$theme, --border-mute), 'color') !default; 16$border-color: props.def(
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 d81284b..f082d12 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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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 a8b0f9f..38224d4 100644
--- a/src/objects/_divider.vars.scss
+++ b/src/objects/_divider.vars.scss
@@ -1,80 +1,153 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-divider--vertical--width, props.get(core.$border-width--thin)) !default; 7$vertical--border-width: props.def(
8$dot--size: props.def(--o-divider--dot--size, props.get(core.$size--50)) !default; 8 --o-divider--vertical--width,
9$letter-spacing: props.def(--o-divider--letter-spacing, 1px) !default; 9 props.get(core.$border-width--thin)
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;
10 13
11$strong--border-width: props.def(--o-divider--strong--border-width, props.get(core.$border-width--thick)) !default; 14$strong--border-width: props.def(
12$strong--label-font-size: props.def(--o-divider--strong--label-font-size, props.get(core.$font-size--100)) !default; 15 --o-divider--strong--border-width,
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;
13 22
14$medium--border-width: props.def(--o-divider--medium--border-width, props.get(core.$border-width--medium)) !default; 23$medium--border-width: props.def(
15$medium--label-font-size: props.def(--o-divider--medium--label-font-size, props.get(core.$font-size--75)) !default; 24 --o-divider--medium--border-width,
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;
16 31
17$quiet--border-width: props.def(--o-divider--quiet--border-width, props.get(core.$border-width--thin)) !default; 32$quiet--border-width: props.def(
18$quiet--label-font-size: props.def(--o-divider--quiet--label-font-size, props.get(core.$font-size--50)) !default; 33 --o-divider--quiet--border-width,
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;
19 40
20$faint--border-width: props.def(--o-divider--faint--border-width, props.get(core.$border-width--thin)) !default; 41$faint--border-width: props.def(
21$faint--label-font-size: props.def(--o-divider--faint--label-font-size, props.get(core.$font-size--50)) !default; 42 --o-divider--faint--border-width,
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;
22 49
23$strong--bg-color: props.def(--o-divider--strong--bg-color, props.get(core.$theme, --text), 'color') !default; 50$strong--bg-color: props.def(
24$strong--label-color: props.def(--o-divider--strong--label-color, props.get(core.$theme, --text), 'color') !default; 51 --o-divider--strong--bg-color,
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;
25 60
26$medium--bg-color: props.def(--o-divider--medium--bg-color, props.get(core.$theme, --border), 'color') !default; 61$medium--bg-color: props.def(
27$medium--label-color: props.def(--o-divider--medium--label-color, props.get(core.$theme, --text-mute), 'color') !default; 62 --o-divider--medium--bg-color,
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;
28 71
29$quiet--bg-color: props.def(--o-divider--quiet--bg-color, props.get(core.$theme, --border), 'color') !default; 72$quiet--bg-color: props.def(
30$quiet--label-color: props.def(--o-divider--quiet--label-color, props.get(core.$theme, --text-mute-more), 'color') !default; 73 --o-divider--quiet--bg-color,
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;
31 82
32$faint--bg-color: props.def(--o-divider--faint--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 83$faint--bg-color: props.def(
33$faint--label-color: props.def(--o-divider--faint--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 84 --o-divider--faint--bg-color,
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;
34 93
35$vertical--quiet--bg-color: props.def(--o-divider--vertical--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 94$vertical--quiet--bg-color: props.def(
95 --o-divider--vertical--quiet--bg-color,
96 props.get(core.$theme, --border-mute),
97 "color"
98) !default;
36 99
37$dot--quiet--bg-color: props.def(--o-divider--dot--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 100$dot--quiet--bg-color: props.def(
101 --o-divider--dot--quiet--bg-color,
102 props.get(core.$theme, --border-mute),
103 "color"
104) !default;
38 105
39$static-themes: props.def(--o-divider, (), 'color'); 106$static-themes: props.def(--o-divider, (), "color");
40 107
41@each $theme in map.keys(props.get(core.$transparent-colors)) { 108@each $theme in map.keys(props.get(core.$transparent-colors)) {
42 $button-theme: --static-#{string.slice($theme, 3)}; 109 $button-theme: --static-#{string.slice($theme, 3)};
43 110
44 $static-themes: props.merge($static-themes, ( 111 $static-themes: props.merge(
45 $button-theme: ( 112 $static-themes,
46 --strong: ( 113 (
47 --bg: props.get(core.$transparent-colors, $theme, --800), 114 $button-theme: (
48 --label: props.get(core.$transparent-colors, $theme, --900), 115 --strong: (
49 ), 116 --bg: props.get(core.$transparent-colors, $theme, --800),
50 --medium: ( 117 --label: props.get(core.$transparent-colors, $theme, --900),
51 --bg: props.get(core.$transparent-colors, $theme, --300), 118 ),
52 --label: props.get(core.$transparent-colors, $theme, --500), 119 --medium: (
53 ), 120 --bg: props.get(core.$transparent-colors, $theme, --300),
54 --quiet: ( 121 --label: props.get(core.$transparent-colors, $theme, --500),
55 --bg: props.get(core.$transparent-colors, $theme, --300), 122 ),
56 --label: props.get(core.$transparent-colors, $theme, --500), 123 --quiet: (
57 ), 124 --bg: props.get(core.$transparent-colors, $theme, --300),
58 --faint: ( 125 --label: props.get(core.$transparent-colors, $theme, --500),
59 --bg: props.get(core.$transparent-colors, $theme, --200), 126 ),
60 --label: props.get(core.$transparent-colors, $theme, --400), 127 --faint: (
61 ), 128 --bg: props.get(core.$transparent-colors, $theme, --200),
129 --label: props.get(core.$transparent-colors, $theme, --400),
130 ),
131 ),
62 ) 132 )
63 )); 133 );
64} 134}
65 135
66$themes-config: ( 136$themes-config: (
67 accent: --accent, 137 accent: --accent,
68 negative: --negative, 138 negative: --negative,
69) !default; 139) !default;
70 140
71$themes: props.def(--o-divider, (), 'color'); 141$themes: props.def(--o-divider, (), "color");
72 142
73@each $theme, $key in $themes-config { 143@each $theme, $key in $themes-config {
74 $themes: props.merge($themes, ( 144 $themes: props.merge(
75 --#{$theme}: ( 145 $themes,
76 --bg: props.get(core.$theme, $key, --800), 146 (
77 --label: props.get(core.$theme, $key, --1000), 147 --#{$theme}: (
148 --bg: props.get(core.$theme, $key, --800),
149 --label: props.get(core.$theme, $key, --1000),
150 )
78 ) 151 )
79 )); 152 );
80} 153}
diff --git a/src/objects/_emoji.scss b/src/objects/_emoji.scss
index 655e662..0257b32 100644
--- a/src/objects/_emoji.scss
+++ b/src/objects/_emoji.scss
@@ -1,49 +1,55 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(-1 * props.get(vars.$pad) - .5 * (props.get(vars.$size) - props.get(icon.$size))); 24 margin: calc(
25 -1 * props.get(vars.$pad) - 0.5 * (props.get(vars.$size) - props.get(icon.$size))
26 );
25 vertical-align: props.get(icon.$valign); 27 vertical-align: props.get(icon.$valign);
26 } 28 }
27 29
28 @each $mod, $size, $valign in vars.$sizes { 30 @each $mod, $size, $valign in vars.$sizes {
29 @include bem.modifier($mod) { 31 @include bem.modifier($mod) {
30 inline-size: props.get($size); 32 inline-size: props.get($size);
31 block-size: props.get($size); 33 block-size: props.get($size);
32 vertical-align: props.get($valign); 34 vertical-align: props.get($valign);
33 35
34 @include bem.modifier('icon') { 36 @include bem.modifier("icon") {
35 margin: calc(-1 * props.get(vars.$pad) - .5 * (props.get($size) - props.get(icon.$size))); 37 margin: calc(
38 -1 * props.get(vars.$pad) - 0.5 * (props.get($size) - props.get(icon.$size))
39 );
36 } 40 }
37 } 41 }
38 } 42 }
39 43
40 @include bem.modifier('zoomable') { 44 @include bem.modifier("zoomable") {
41 border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom)); 45 border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom));
42 transition: transform .2s ease, background-color .2s ease; 46 transition:
47 transform 0.2s ease,
48 background-color 0.2s ease;
43 49
44 &:hover { 50 &:hover {
45 background-color: props.get(vars.$bg-color); 51 background-color: props.get(vars.$bg-color);
46 transform: scale(props.get(vars.$zoom)); 52 transform: scale(props.get(vars.$zoom));
47 } 53 }
48 } 54 }
49 } 55 }
diff --git a/src/objects/_emoji.vars.scss b/src/objects/_emoji.vars.scss
index cf940cf..1c2a0e2 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/src/props'; 2@use "pkg:iro-sass/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, .3em) !default; 6$pad: props.def(--o-emoji--pad, 0.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, -.25em) !default; 9$valign: props.def(--o-emoji--valign, -0.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, -.45em) !default; 12$valign--125: props.def(--o-emoji--125--valign, -0.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, -.65em) !default; 15$valign--150: props.def(--o-emoji--150--valign, -0.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 23875f5..fb664b4 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 5bd4547..4588e70 100644
--- a/src/objects/_field-label.vars.scss
+++ b/src/objects/_field-label.vars.scss
@@ -1,12 +1,34 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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(--o-field-label--label-font-size, props.get(core.$font-size--75)) !default; 6$label-font-size: props.def(
7$hint-font-size: props.def(--o-field-label--hint-font-size, props.get(core.$font-size--75)) !default; 7 --o-field-label--label-font-size,
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;
8 14
9$label-color: props.def(--o-field-label--label-color, props.get(core.$theme, --text-mute), 'color') !default; 15$label-color: props.def(
10$hint-color: props.def(--o-field-label--hint-color, props.get(core.$theme, --text-mute), 'color') !default; 16 --o-field-label--label-color,
11$error-hint-color: props.def(--o-field-label--error-hint-color, props.get(core.$theme, --negative, --900), 'color') !default; 17 props.get(core.$theme, --text-mute),
12$disabled-color: props.def(--o-field-label--disabled-color, props.get(core.$theme, --text-disabled), 'color') !default; 18 "color"
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 04b9bdf..d3e37b3 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 3de3406..936932d 100644
--- a/src/objects/_figure.vars.scss
+++ b/src/objects/_figure.vars.scss
@@ -1,9 +1,17 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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(--o-figure--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; 8$text-color: props.def(
9$border-color: props.def(--o-figure--border-color, props.get(core.$theme, --border), 'color') !default; 9 --o-figure--text-color,
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 0e8392e..87a6269 100644
--- a/src/objects/_heading.scss
+++ b/src/objects/_heading.scss
@@ -1,64 +1,70 @@
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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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(to top, 30 background-image: linear-gradient(
31 transparent props.get(vars.$bg-start), 31 to top,
32 props.get(vars.$bg-color) props.get(vars.$bg-start), 32 transparent props.get(vars.$bg-start),
33 props.get(vars.$bg-color) props.get(vars.$bg-end), 33 props.get(vars.$bg-color) props.get(vars.$bg-start),
34 transparent props.get(vars.$bg-end)); 34 props.get(vars.$bg-color) props.get(vars.$bg-end),
35 transparent props.get(vars.$bg-end)
36 );
35 } 37 }
36 38
37 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$sizes { 39 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing,
40 $feature-settings, $text-transform, $text-color in vars.$sizes
41 {
38 @include bem.modifier($mod) { 42 @include bem.modifier($mod) {
39 font-family: props.get($font-family); 43 font-family: props.get($font-family);
40 font-size: props.get($font-size); 44 font-size: props.get($font-size);
41 font-weight: props.get($font-weight); 45 font-weight: props.get($font-weight);
42 font-feature-settings: props.get($feature-settings); 46 font-feature-settings: props.get($feature-settings);
43 line-height: props.get($line-height); 47 line-height: props.get($line-height);
44 color: props.get($text-color); 48 color: props.get($text-color);
45 text-transform: props.get($text-transform); 49 text-transform: props.get($text-transform);
46 letter-spacing: props.get($letter-spacing); 50 letter-spacing: props.get($letter-spacing);
47 } 51 }
48 } 52 }
49 53
50 @include bem.modifier('display') { 54 @include bem.modifier("display") {
51 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$display--sizes { 55 @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing,
56 $feature-settings, $text-transform, $text-color in vars.$display--sizes
57 {
52 @include bem.modifier($mod) { 58 @include bem.modifier($mod) {
53 font-family: props.get($font-family); 59 font-family: props.get($font-family);
54 font-size: props.get($font-size); 60 font-size: props.get($font-size);
55 font-weight: props.get($font-weight); 61 font-weight: props.get($font-weight);
56 font-feature-settings: props.get($feature-settings); 62 font-feature-settings: props.get($feature-settings);
57 line-height: props.get($line-height); 63 line-height: props.get($line-height);
58 color: props.get($text-color); 64 color: props.get($text-color);
59 text-transform: props.get($text-transform); 65 text-transform: props.get($text-transform);
60 letter-spacing: props.get($letter-spacing); 66 letter-spacing: props.get($letter-spacing);
61 transform: translateX(props.get(vars.$offset)); 67 transform: translateX(props.get(vars.$offset));
62 } 68 }
63 } 69 }
64 } 70 }
@@ -73,18 +79,26 @@
73 } 79 }
74 } 80 }
75 81
76 @include bem.elem('highlight') { 82 @include bem.elem("highlight") {
77 background-image: linear-gradient(to top, 83 background-image: linear-gradient(
78 transparent props.get(vars.$bg-start), 84 to top,
79 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start), 85 transparent props.get(vars.$bg-start),
80 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end), 86 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start),
81 transparent props.get(vars.$bg-end)); 87 props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end),
88 transparent props.get(vars.$bg-end)
89 );
82 } 90 }
83 91
84 @include bem.modifier('display') { 92 @include bem.modifier("display") {
85 @each $mod, $value in vars.$sizes { 93 @each $mod, $value in vars.$sizes {
86 @include bem.modifier($mod) { 94 @include bem.modifier($mod) {
87 color: props.get(vars.$static-themes, $theme, --display, --#{$mod}, --text-color); 95 color: props.get(
96 vars.$static-themes,
97 $theme,
98 --display,
99 --#{$mod},
100 --text-color
101 );
88 } 102 }
89 } 103 }
90 } 104 }
diff --git a/src/objects/_heading.vars.scss b/src/objects/_heading.vars.scss
index 4267b8c..8943622 100644
--- a/src/objects/_heading.vars.scss
+++ b/src/objects/_heading.vars.scss
@@ -1,208 +1,472 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/props";
4@use '../core.vars' as core; 4@use "../core.vars" as core;
5 5
6$offset: props.def(--o-heading--offset, -.02em) !default; 6$offset: props.def(--o-heading--offset, -0.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(--o-heading--text-color, props.get(core.$theme, --heading), 'color') !default; 10$text-color: props.def(
11$bg-color: props.def(--o-heading--bg-color, props.get(core.$theme, --base, --50), 'color') !default; 11 --o-heading--text-color,
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;
12 16
13$text-color--xxl: props.def(--o-heading--xxl--text-color, props.get(core.$theme, --heading), 'color') !default; 17$text-color--xxl: props.def(
14$text-color--xl: props.def(--o-heading--xl--text-color, props.get($text-color--xxl), 'color') !default; 18 --o-heading--xxl--text-color,
15$text-color--lg: props.def(--o-heading--lg--text-color, props.get($text-color--xxl), 'color') !default; 19 props.get(core.$theme, --heading),
16$text-color--md: props.def(--o-heading--md--text-color, props.get($text-color--xxl), 'color') !default; 20 "color"
17$text-color--sm: props.def(--o-heading--sm--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; 21) !default;
18$text-color--xs: props.def(--o-heading--xs--text-color, props.get($text-color--sm), 'color') !default; 22$text-color--xl: props.def(
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;
19 47
20$display--text-color--xxl: props.def(--o-heading--display--xxl--text-color, props.get(core.$theme, --heading), 'color') !default; 48$display--text-color--xxl: props.def(
21$display--text-color--xl: props.def(--o-heading--display--xl--text-color, props.get($display--text-color--xxl), 'color') !default; 49 --o-heading--display--xxl--text-color,
22$display--text-color--lg: props.def(--o-heading--display--lg--text-color, props.get($display--text-color--xxl), 'color') !default; 50 props.get(core.$theme, --heading),
23$display--text-color--md: props.def(--o-heading--display--md--text-color, props.get($display--text-color--xxl), 'color') !default; 51 "color"
24$display--text-color--sm: props.def(--o-heading--display--sm--text-color, props.get($display--text-color--xxl), 'color') !default; 52) !default;
25$display--text-color--xs: props.def(--o-heading--display--xs--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; 53$display--text-color--xl: props.def(
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;
26 78
27$bg-start: props.def(--o-heading--bg-start, .05em) !default; 79$bg-start: props.def(--o-heading--bg-start, 0.05em) !default;
28$bg-end: props.def(--o-heading--bg-end, .5em) !default; 80$bg-end: props.def(--o-heading--bg-end, 0.5em) !default;
29 81
30$font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default; 82$font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default;
31$line-height: props.def(--o-heading--line-height, props.get(core.$font--standard--line-height)) !default; 83$line-height: props.def(
32$font-weight: props.def(--o-heading--font-weight, bold) !default; 84 --o-heading--line-height,
33$feature-settings: props.def(--o-heading--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 85 props.get(core.$font--standard--line-height)
34$text-transform: props.def(--o-heading--text-transform, none) !default; 86) !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;
35 93
36$font-family--xxl: props.def(--o-heading--xxl--font-family, props.get(core.$font--standard--family)) !default; 94$font-family--xxl: props.def(
37$line-height--xxl: props.def(--o-heading--xxl--line-height, props.get(core.$font--standard--line-height)) !default; 95 --o-heading--xxl--font-family,
38$font-size--xxl: props.def(--o-heading--xxl--font-size, props.get(core.$font-size--300)) !default; 96 props.get(core.$font--standard--family)
39$font-weight--xxl: props.def(--o-heading--xxl--font-weight, bold) !default; 97) !default;
40$letter-spacing--xxl: props.def(--o-heading--xxl--letter-spacing, 0) !default; 98$line-height--xxl: props.def(
41$feature-settings--xxl: props.def(--o-heading--xxl--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 99 --o-heading--xxl--line-height,
42$text-transform--xxl: props.def(--o-heading--xxl--text-transform, none) !default; 100 props.get(core.$font--standard--line-height)
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;
43 110
44$font-family--xl: props.def(--o-heading--xl--font-family, props.get(core.$font--standard--family)) !default; 111$font-family--xl: props.def(
45$line-height--xl: props.def(--o-heading--xl--line-height, props.get(core.$font--standard--line-height)) !default; 112 --o-heading--xl--font-family,
46$font-size--xl: props.def(--o-heading--xl--font-size, props.get(core.$font-size--200)) !default; 113 props.get(core.$font--standard--family)
47$font-weight--xl: props.def(--o-heading--xl--font-weight, bold) !default; 114) !default;
48$letter-spacing--xl: props.def(--o-heading--xl--letter-spacing, 0) !default; 115$line-height--xl: props.def(
49$feature-settings--xl: props.def(--o-heading--xl--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 116 --o-heading--xl--line-height,
50$text-transform--xl: props.def(--o-heading--xl--text-transform, none) !default; 117 props.get(core.$font--standard--line-height)
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;
51 127
52$font-family--lg: props.def(--o-heading--lg--font-family, props.get(core.$font--standard--family)) !default; 128$font-family--lg: props.def(
53$line-height--lg: props.def(--o-heading--lg--line-height, props.get(core.$font--standard--line-height)) !default; 129 --o-heading--lg--font-family,
54$font-size--lg: props.def(--o-heading--lg--font-size, props.get(core.$font-size--150)) !default; 130 props.get(core.$font--standard--family)
55$font-weight--lg: props.def(--o-heading--lg--font-weight, bold) !default; 131) !default;
56$letter-spacing--lg: props.def(--o-heading--lg--letter-spacing, 0) !default; 132$line-height--lg: props.def(
57$feature-settings--lg: props.def(--o-heading--lg--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 133 --o-heading--lg--line-height,
58$text-transform--lg: props.def(--o-heading--lg--text-transform, none) !default; 134 props.get(core.$font--standard--line-height)
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;
59 144
60$font-family--md: props.def(--o-heading--md--font-family, props.get(core.$font--standard--family)) !default; 145$font-family--md: props.def(
61$line-height--md: props.def(--o-heading--md--line-height, props.get(core.$font--standard--line-height)) !default; 146 --o-heading--md--font-family,
62$font-size--md: props.def(--o-heading--md--font-size, props.get(core.$font-size--100)) !default; 147 props.get(core.$font--standard--family)
63$font-weight--md: props.def(--o-heading--md--font-weight, bold) !default; 148) !default;
64$letter-spacing--md: props.def(--o-heading--md--letter-spacing, 0) !default; 149$line-height--md: props.def(
65$feature-settings--md: props.def(--o-heading--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 150 --o-heading--md--line-height,
66$text-transform--md: props.def(--o-heading--md--text-transform, none) !default; 151 props.get(core.$font--standard--line-height)
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;
67 161
68$font-family--sm: props.def(--o-heading--sm--font-family, props.get(core.$font--standard--family)) !default; 162$font-family--sm: props.def(
69$line-height--sm: props.def(--o-heading--sm--line-height, props.get(core.$font--standard--line-height)) !default; 163 --o-heading--sm--font-family,
70$font-size--sm: props.def(--o-heading--sm--font-size, props.get(core.$font-size--100)) !default; 164 props.get(core.$font--standard--family)
71$font-weight--sm: props.def(--o-heading--sm--font-weight, normal) !default; 165) !default;
72$letter-spacing--sm: props.def(--o-heading--sm--letter-spacing, 0) !default; 166$line-height--sm: props.def(
73$feature-settings--sm: props.def(--o-heading--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 167 --o-heading--sm--line-height,
74$text-transform--sm: props.def(--o-heading--sm--text-transform, none) !default; 168 props.get(core.$font--standard--line-height)
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;
75 178
76$font-family--xs: props.def(--o-heading--xs--font-family, props.get(core.$font--standard--family)) !default; 179$font-family--xs: props.def(
77$line-height--xs: props.def(--o-heading--xs--line-height, props.get(core.$font--standard--line-height)) !default; 180 --o-heading--xs--font-family,
78$font-size--xs: props.def(--o-heading--xs--font-size, props.get(core.$font-size--50)) !default; 181 props.get(core.$font--standard--family)
79$font-weight--xs: props.def(--o-heading--xs--font-weight, normal) !default; 182) !default;
80$letter-spacing--xs: props.def(--o-heading--xs--letter-spacing, 1px) !default; 183$line-height--xs: props.def(
81$feature-settings--xs: props.def(--o-heading--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 184 --o-heading--xs--line-height,
82$text-transform--xs: props.def(--o-heading--xs--text-transform, none) !default; 185 props.get(core.$font--standard--line-height)
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;
83 195
84$sizes: ( 196$sizes: (
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, 197 "xs" $font-family--xs $line-height--xs $font-size--xs $font-weight--xs $letter-spacing--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, 198 $feature-settings--xs $text-transform--xs $text-color--xs,
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, 199 "sm" $font-family--sm $line-height--sm $font-size--sm $font-weight--sm $letter-spacing--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, 200 $feature-settings--sm $text-transform--sm $text-color--sm,
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, 201 "md" $font-family--md $line-height--md $font-size--md $font-weight--md $letter-spacing--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, 202 $feature-settings--md $text-transform--md $text-color--md,
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
91) !default; 209) !default;
92 210
93$display--font-family--xxl: props.def(--o-heading--display--xxl--font-family, props.get(core.$font--headline--family)) !default; 211$display--font-family--xxl: props.def(
94$display--line-height--xxl: props.def(--o-heading--display--xxl--line-height, props.get(core.$font--headline--line-height)) !default; 212 --o-heading--display--xxl--font-family,
95$display--font-size--xxl: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--1100)) !default; 213 props.get(core.$font--headline--family)
96$display--font-weight--xxl: props.def(--o-heading--display--xxl--font-weight, props.get(core.$font--headline--weight)) !default; 214) !default;
97$display--letter-spacing--xxl: props.def(--o-heading--display--xxl--letter-spacing, 0) !default; 215$display--line-height--xxl: props.def(
98$display--feature-settings--xxl: props.def(--o-heading--display--xxl--feature-settings, props.get(core.$font--headline--feature-settings)) !default; 216 --o-heading--display--xxl--line-height,
99$display--text-transform--xxl: props.def(--o-heading--display--xxl--text-transform, none) !default; 217 props.get(core.$font--headline--line-height)
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;
100 233
101$display--font-family--xl: props.def(--o-heading--display--xl--font-family, props.get(core.$font--headline--family)) !default; 234$display--font-family--xl: props.def(
102$display--line-height--xl: props.def(--o-heading--display--xl--line-height, props.get(core.$font--headline--line-height)) !default; 235 --o-heading--display--xl--font-family,
103$display--font-size--xl: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--700)) !default; 236 props.get(core.$font--headline--family)
104$display--font-weight--xl: props.def(--o-heading--display--xl--font-weight, props.get(core.$font--headline--weight)) !default; 237) !default;
105$display--letter-spacing--xl: props.def(--o-heading--display--xl--letter-spacing, 0) !default; 238$display--line-height--xl: props.def(
106$display--feature-settings--xl: props.def(--o-heading--display--xl--feature-settings, props.get(core.$font--headline--feature-settings)) !default; 239 --o-heading--display--xl--line-height,
107$display--text-transform--xl: props.def(--o-heading--display--xl--text-transform, none) !default; 240 props.get(core.$font--headline--line-height)
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;
108 256
109$display--font-family--lg: props.def(--o-heading--display--lg--font-family, props.get(core.$font--headline--family)) !default; 257$display--font-family--lg: props.def(
110$display--line-height--lg: props.def(--o-heading--display--lg--line-height, props.get(core.$font--headline--line-height)) !default; 258 --o-heading--display--lg--font-family,
111$display--font-size--lg: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--300)) !default; 259 props.get(core.$font--headline--family)
112$display--font-weight--lg: props.def(--o-heading--display--lg--font-weight, props.get(core.$font--headline--weight)) !default; 260) !default;
113$display--letter-spacing--lg: props.def(--o-heading--display--lg--letter-spacing, 1px) !default; 261$display--line-height--lg: props.def(
114$display--feature-settings--lg: props.def(--o-heading--display--lg--feature-settings, props.get(core.$font--headline--feature-settings)) !default; 262 --o-heading--display--lg--line-height,
115$display--text-transform--lg: props.def(--o-heading--display--lg--text-transform, uppercase) !default; 263 props.get(core.$font--headline--line-height)
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;
116 282
117$display--font-family--md: props.def(--o-heading--display--md--font-family, props.get(core.$font--standard--family)) !default; 283$display--font-family--md: props.def(
118$display--line-height--md: props.def(--o-heading--display--md--line-height, props.get(core.$font--standard--line-height)) !default; 284 --o-heading--display--md--font-family,
119$display--font-size--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--150)) !default; 285 props.get(core.$font--standard--family)
120$display--font-weight--md: props.def(--o-heading--display--md--font-weight, bold) !default; 286) !default;
121$display--letter-spacing--md: props.def(--o-heading--display--md--letter-spacing, 0) !default; 287$display--line-height--md: props.def(
122$display--feature-settings--md: props.def(--o-heading--display--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 288 --o-heading--display--md--line-height,
123$display--text-transform--md: props.def(--o-heading--display--md--text-transform, none) !default; 289 props.get(core.$font--standard--line-height)
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;
124 302
125$display--font-family--sm: props.def(--o-heading--display--sm--font-family, props.get(core.$font--standard--family)) !default; 303$display--font-family--sm: props.def(
126$display--line-height--sm: props.def(--o-heading--display--sm--line-height, props.get(core.$font--standard--line-height)) !default; 304 --o-heading--display--sm--font-family,
127$display--font-size--sm: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--100)) !default; 305 props.get(core.$font--standard--family)
128$display--font-weight--sm: props.def(--o-heading--display--sm--font-weight, bold) !default; 306) !default;
129$display--letter-spacing--sm: props.def(--o-heading--display--sm--letter-spacing, 0) !default; 307$display--line-height--sm: props.def(
130$display--feature-settings--sm: props.def(--o-heading--display--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 308 --o-heading--display--sm--line-height,
131$display--text-transform--sm: props.def(--o-heading--display--sm--text-transform, none) !default; 309 props.get(core.$font--standard--line-height)
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;
132 322
133$display--font-family--xs: props.def(--o-heading--display--xs--font-family, props.get(core.$font--standard--family)) !default; 323$display--font-family--xs: props.def(
134$display--line-height--xs: props.def(--o-heading--display--xs--line-height, props.get(core.$font--standard--line-height)) !default; 324 --o-heading--display--xs--font-family,
135$display--font-size--xs: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50)) !default; 325 props.get(core.$font--standard--family)
136$display--font-weight--xs: props.def(--o-heading--display--xs--font-weight, normal) !default; 326) !default;
137$display--letter-spacing--xs: props.def(--o-heading--display--xs--letter-spacing, 1px) !default; 327$display--line-height--xs: props.def(
138$display--feature-settings--xs: props.def(--o-heading--display--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default; 328 --o-heading--display--xs--line-height,
139$display--text-transform--xs: props.def(--o-heading--display--xs--text-transform, none) !default; 329 props.get(core.$font--standard--line-height)
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;
140 342
141$display--font-size--xxl--md: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--900), 'md') !default; 343$display--font-size--xxl--md: props.def(
142$display--font-size--xl--md: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--600), 'md') !default; 344 --o-heading--display--xxl--font-size,
143$display--font-size--lg--md: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--200), 'md') !default; 345 props.get(core.$font-size--900),
144$display--font-size--md--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--100), 'md') !default; 346 "md"
145$display--font-size--sm--md: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--75), 'md') !default; 347) !default;
146$display--font-size--xs--md: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50), 'md') !default; 348$display--font-size--xl--md: props.def(
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;
147 373
148$display--sizes: ( 374$display--sizes: (
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, 375 "xs" $display--font-family--xs $display--line-height--xs $display--font-size--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, 376 $display--font-weight--xs $display--letter-spacing--xs $display--feature-settings--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, 377 $display--text-transform--xs $display--text-color--xs,
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, 378 "sm" $display--font-family--sm $display--line-height--sm $display--font-size--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, 379 $display--font-weight--sm $display--letter-spacing--sm $display--feature-settings--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, 380 $display--text-transform--sm $display--text-color--sm,
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
155) !default; 393) !default;
156 394
157$static-themes: props.def(--o-heading, (), 'color'); 395$static-themes: props.def(--o-heading, (), "color");
158 396
159@each $theme in map.keys(props.get(core.$transparent-colors)) { 397@each $theme in map.keys(props.get(core.$transparent-colors)) {
160 $heading-theme: --static-#{string.slice($theme, 3)}; 398 $heading-theme: --static-#{string.slice($theme, 3)};
161 399
162 $static-themes: props.merge($static-themes, ( 400 $static-themes: props.merge(
163 $heading-theme: ( 401 $static-themes,
164 --bg-color: props.get(core.$transparent-colors, $theme, --200), 402 (
165 --text-color: props.get(core.$transparent-colors, $theme, --900), 403 $heading-theme: (
166 404 --bg-color: props.get(core.$transparent-colors, $theme, --200),
167 --xxl: (
168 --text-color: props.get(core.$transparent-colors, $theme, --900),
169 ),
170 --xl: (
171 --text-color: props.get(core.$transparent-colors, $theme, --900),
172 ),
173 --lg: (
174 --text-color: props.get(core.$transparent-colors, $theme, --900),
175 ),
176 --md: (
177 --text-color: props.get(core.$transparent-colors, $theme, --900),
178 ),
179 --sm: (
180 --text-color: props.get(core.$transparent-colors, $theme, --500),
181 ),
182 --xs: (
183 --text-color: props.get(core.$transparent-colors, $theme, --500),
184 ),
185
186 --display: (
187 --xxl: (
188 --text-color: props.get(core.$transparent-colors, $theme, --900), 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
425 --display: (
426 --xxl: (
427 --text-color: props.get(
428 core.$transparent-colors,
429 $theme,
430 --900
431 ),
432 ),
433 --xl: (
434 --text-color: props.get(
435 core.$transparent-colors,
436 $theme,
437 --900
438 ),
439 ),
440 --lg: (
441 --text-color: props.get(
442 core.$transparent-colors,
443 $theme,
444 --900
445 ),
446 ),
447 --md: (
448 --text-color: props.get(
449 core.$transparent-colors,
450 $theme,
451 --900
452 ),
453 ),
454 --sm: (
455 --text-color: props.get(
456 core.$transparent-colors,
457 $theme,
458 --900
459 ),
460 ),
461 --xs: (
462 --text-color: props.get(
463 core.$transparent-colors,
464 $theme,
465 --500
466 ),
467 ),
468 ),
189 ), 469 ),
190 --xl: (
191 --text-color: props.get(core.$transparent-colors, $theme, --900),
192 ),
193 --lg: (
194 --text-color: props.get(core.$transparent-colors, $theme, --900),
195 ),
196 --md: (
197 --text-color: props.get(core.$transparent-colors, $theme, --900),
198 ),
199 --sm: (
200 --text-color: props.get(core.$transparent-colors, $theme, --900),
201 ),
202 --xs: (
203 --text-color: props.get(core.$transparent-colors, $theme, --500),
204 ),
205 ),
206 ) 470 )
207 )); 471 );
208} 472}
diff --git a/src/objects/_icon.scss b/src/objects/_icon.scss
index 1d046e0..7baa3f8 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 2a37212..4fdbfae 100644
--- a/src/objects/_icon.vars.scss
+++ b/src/objects/_icon.vars.scss
@@ -1,5 +1,5 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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, -.18em) !default; 5$valign: props.def(--o-icon--valign, -0.18em) !default;
diff --git a/src/objects/_lightbox.scss b/src/objects/_lightbox.scss
index a173d57..2b4abad 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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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,80 +50,79 @@
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: 63 box-shadow: props.get(vars.$controls--shadow-x) props.get(vars.$controls--shadow-y)
64 props.get(vars.$controls--shadow-x) 64 props.get(vars.$controls--shadow-blur) props.get(vars.$controls--shadow-grow)
65 props.get(vars.$controls--shadow-y)
66 props.get(vars.$controls--shadow-blur)
67 props.get(vars.$controls--shadow-grow)
68 props.get(vars.$controls--shadow-color); 65 props.get(vars.$controls--shadow-color);
69 } 66 }
70 67
71 @include bem.elem('info') { 68 @include bem.elem("info") {
72 inset-inline-start: props.get(vars.$pad); 69 inset-inline-start: props.get(vars.$pad);
73 font-variant-numeric: tabular-nums; 70 font-variant-numeric: tabular-nums;
74 } 71 }
75 72
76 @include bem.elem('controls') { 73 @include bem.elem("controls") {
77 inset-inline-end: props.get(vars.$pad); 74 inset-inline-end: props.get(vars.$pad);
78 } 75 }
79 76
80 @include bem.elem('img') { 77 @include bem.elem("img") {
81 position: relative; 78 position: relative;
82 z-index: 10; 79 z-index: 10;
83 display: block; 80 display: block;
84 grid-area: image; 81 grid-area: image;
85 inline-size: auto; 82 inline-size: auto;
86 min-inline-size: 0; 83 min-inline-size: 0;
87 max-inline-size: 100%; 84 max-inline-size: 100%;
88 block-size: auto; 85 block-size: auto;
89 min-block-size: 0; 86 min-block-size: 0;
90 max-block-size: 100%; 87 max-block-size: 100%;
91 user-select: none; 88 user-select: none;
92 object-fit: contain; 89 object-fit: contain;
93 90
94 @include bem.is('hidden') { 91 @include bem.is("hidden") {
95 display: none; 92 display: none;
96 93
97 @include bem.next-elem('placeholder') { 94 @include bem.next-elem("placeholder") {
98 display: block; 95 display: block;
99 } 96 }
100 } 97 }
101 } 98 }
102 99
103 @include bem.elem('placeholder') { 100 @include bem.elem("placeholder") {
104 position: absolute; 101 position: absolute;
105 inset-block-start: 50%; 102 inset-block-start: 50%;
106 inset-inline-start: 50%; 103 inset-inline-start: 50%;
107 z-index: 5; 104 z-index: 5;
108 display: none; 105 display: none;
109 transform: translate(-50, -50); 106 transform: translate(-50, -50);
110 } 107 }
111 108
112 @include bem.elem('thumbnails') { 109 @include bem.elem("thumbnails") {
113 display: flex; 110 display: flex;
114 grid-area: thumbnails; 111 grid-area: thumbnails;
115 gap: props.get(vars.$thumbnail--spacing); 112 gap: props.get(vars.$thumbnail--spacing);
116 justify-content: center; 113 justify-content: center;
117 padding: props.get(vars.$pad); 114 padding: props.get(vars.$pad);
118 overflow: auto; 115 overflow: auto;
119 } 116 }
120 117
121 @include bem.elem('thumbnail') { 118 @include bem.elem("thumbnail") {
122 inline-size: props.get(vars.$thumbnail--width); 119 inline-size: props.get(vars.$thumbnail--width);
123 transition: inline-size .2s ease, margin-inline .2s ease; 120 transition:
121 inline-size 0.2s ease,
122 margin-inline 0.2s ease;
124 123
125 @include bem.is('selected') { 124 @include bem.is("selected") {
126 inline-size: props.get(vars.$thumbnail--active--width); 125 inline-size: props.get(vars.$thumbnail--active--width);
127 margin-inline: props.get(vars.$thumbnail--active--spacing); 126 margin-inline: props.get(vars.$thumbnail--active--spacing);
128 } 127 }
129 } 128 }
diff --git a/src/objects/_lightbox.vars.scss b/src/objects/_lightbox.vars.scss
index 6fb84f7..dc9a2a1 100644
--- a/src/objects/_lightbox.vars.scss
+++ b/src/objects/_lightbox.vars.scss
@@ -1,37 +1,80 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-lightbox--controls--block-size, props.get(core.$size--550)) !default; 9$controls--block-size: props.def(
10 --o-lightbox--controls--block-size,
11 props.get(core.$size--550)
12) !default;
10 13
11$controls--shadow-x: props.def(--o-lightbox--controls--shadow-x, props.get(core.$shadow--l2--x)) !default; 14$controls--shadow-x: props.def(
12$controls--shadow-y: props.def(--o-lightbox--controls--shadow-y, props.get(core.$shadow--l2--y)) !default; 15 --o-lightbox--controls--shadow-x,
13$controls--shadow-blur: props.def(--o-lightbox--controls--shadow-blur, props.get(core.$shadow--l2--blur)) !default; 16 props.get(core.$shadow--l2--x)
14$controls--shadow-grow: props.def(--o-lightbox--controls--shadow-grow, props.get(core.$shadow--l2--grow)) !default; 17) !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;
15 30
16$thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default; 31$thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default;
17$thumbnail--spacing: props.def(--o-lightbox--thumbnail--spacing, props.get(core.$size--100)) !default; 32$thumbnail--spacing: props.def(
18$thumbnail--active--width: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--1000)) !default; 33 --o-lightbox--thumbnail--spacing,
19$thumbnail--active--spacing: props.def(--o-lightbox--thumbnail--active--spacing, props.get(core.$size--250)) !default; 34 props.get(core.$size--100)
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;
20 44
21$thumbnail--width--md: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--400), 'md') !default; 45$thumbnail--width--md: props.def(
22$thumbnail--active--width--md: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--600), 'md') !default; 46 --o-lightbox--thumbnail--width,
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;
23 55
24$controls--bg: props.def(--o-lightbox--controls--bg, props.get(core.$transparent-colors, --black, --700), 'color') !default; 56$controls--bg: props.def(
25$controls--shadow-color: props.def(--o-lightbox--controls--shadow-color, props.get(core.$transparent-colors, --black, --300), 'color') !default; 57 --o-lightbox--controls--bg,
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;
26 66
27$static-themes: props.def(--o-lightbox, (), 'color'); 67$static-themes: props.def(--o-lightbox, (), "color");
28 68
29@each $theme in map.keys(props.get(core.$transparent-colors)) { 69@each $theme in map.keys(props.get(core.$transparent-colors)) {
30 $lightbox-theme: --static-#{string.slice($theme, 3)}; 70 $lightbox-theme: --static-#{string.slice($theme, 3)};
31 71
32 $static-themes: props.merge($static-themes, ( 72 $static-themes: props.merge(
33 $lightbox-theme: ( 73 $static-themes,
34 --text: props.get(core.$transparent-colors, $theme, --text), 74 (
75 $lightbox-theme: (
76 --text: props.get(core.$transparent-colors, $theme, --text),
77 ),
35 ) 78 )
36 )); 79 );
37} 80}
diff --git a/src/objects/_menu.scss b/src/objects/_menu.scss
index dce14a8..c7fbc0e 100644
--- a/src/objects/_menu.scss
+++ b/src/objects/_menu.scss
@@ -1,75 +1,82 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: .5px; 25 letter-spacing: 0.5px;
26 26
27 @include bem.next-twin-elem { 27 @include bem.next-twin-elem {
28 margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing)); 28 margin-block-start: calc(
29 props.get(vars.$separator-width) + props.get(vars.$spacing)
30 );
29 } 31 }
30 } 32 }
31 33
32 @include bem.elem('item') { 34 @include bem.elem("item") {
33 padding-block: props.get(vars.$item--pad-b); 35 padding-block: props.get(vars.$item--pad-b);
34 padding-inline: props.get(vars.$item--pad-i); 36 padding-inline: props.get(vars.$item--pad-i);
35 margin: calc(-1 * props.get(vars.$item--key-focus--outline-width)); 37 margin: calc(-1 * props.get(vars.$item--key-focus--outline-width));
36 color: props.get(vars.$item--disabled--label-color); 38 color: props.get(vars.$item--disabled--label-color);
37 background-clip: padding-box; 39 background-clip: padding-box;
38 border: props.get(vars.$item--key-focus--outline-width) solid transparent; 40 border: props.get(vars.$item--key-focus--outline-width) solid transparent;
39 border-radius: calc(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width)); 41 border-radius: calc(
42 props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width)
43 );
40 44
41 &:link, 45 &:link,
42 &:visited, 46 &:visited,
43 &:enabled { 47 &:enabled {
44 color: currentColor; 48 color: currentColor;
45 49
46 @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') { 50 @include bem.multi("&:hover, &:focus-visible", "is" "selected") {
47 color: props.get(vars.$item--hover--label-color); 51 color: props.get(vars.$item--hover--label-color);
48 background-color: props.get(vars.$item--hover--bg-color); 52 background-color: props.get(vars.$item--hover--bg-color);
49 } 53 }
50 54
51 &:active { 55 &:active {
52 color: props.get(vars.$item--active--label-color); 56 color: props.get(vars.$item--active--label-color);
53 background-color: props.get(vars.$item--active--bg-color); 57 background-color: props.get(vars.$item--active--bg-color);
54 } 58 }
55 59
56 &:focus-visible { 60 &:focus-visible {
57 outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width); 61 outline: props.get(vars.$item--key-focus--border-color) solid
58 box-shadow: 62 props.get(vars.$item--key-focus--border-width);
59 0 63 box-shadow: 0 0 0
60 0 64 calc(
61 0 65 props.get(vars.$item--key-focus--border-width) +
62 calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width)) 66 props.get(vars.$item--key-focus--outline-width)
67 )
63 props.get(vars.$item--key-focus--outline-color); 68 props.get(vars.$item--key-focus--outline-color);
64 } 69 }
65 } 70 }
66 71
67 @include bem.next-elem('header') { 72 @include bem.next-elem("header") {
68 margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing)); 73 margin-block-start: calc(
74 props.get(vars.$separator-width) + props.get(vars.$spacing)
75 );
69 } 76 }
70 } 77 }
71 78
72 @include bem.elem('header') { 79 @include bem.elem("header") {
73 &:link, 80 &:link,
74 &:visited, 81 &:visited,
75 &:enabled { 82 &:enabled {
@@ -77,25 +84,25 @@
77 } 84 }
78 } 85 }
79 86
80 @include bem.elem('separator') { 87 @include bem.elem("separator") {
81 block-size: 1px; 88 block-size: 1px;
82 margin-block: props.get(vars.$separator-width); 89 margin-block: props.get(vars.$separator-width);
83 margin-inline: props.get(vars.$item--pad-i); 90 margin-inline: props.get(vars.$item--pad-i);
84 background-color: props.get(vars.$separator-color); 91 background-color: props.get(vars.$separator-color);
85 } 92 }
86 93
87 @include bem.elem('slot') { 94 @include bem.elem("slot") {
88 padding-block: props.get(vars.$item--pad-b); 95 padding-block: props.get(vars.$item--pad-b);
89 padding-inline: props.get(vars.$item--pad-i); 96 padding-inline: props.get(vars.$item--pad-i);
90 } 97 }
91 98
92 @include bem.elem('icon-slot') { 99 @include bem.elem("icon-slot") {
93 display: flex; 100 display: flex;
94 justify-content: center; 101 justify-content: center;
95 inline-size: props.get(icon.$size); 102 inline-size: props.get(icon.$size);
96 } 103 }
97 104
98 @include bem.modifier('pull') { 105 @include bem.modifier("pull") {
99 margin: calc(-1 * props.get(vars.$item--pad-i)); 106 margin: calc(-1 * props.get(vars.$item--pad-i));
100 } 107 }
101 } 108 }
diff --git a/src/objects/_menu.vars.scss b/src/objects/_menu.vars.scss
index 9396117..c168c30 100644
--- a/src/objects/_menu.vars.scss
+++ b/src/objects/_menu.vars.scss
@@ -1,29 +1,74 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-menu--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 13$item--key-focus--border-width: props.def(
14$item--key-focus--border-offset: props.def(--o-menu--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 14 --o-menu--item--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; 15 props.get(core.$key-focus--border-width)
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;
16 25
17$separator-color: props.def(--o-menu--separator-color, props.get(core.$theme, --border), 'color') !default; 26$separator-color: props.def(
18$header--label-color: props.def(--o-menu--header--label-color, props.get(core.$theme, --heading), 'color') !default; 27 --o-menu--separator-color,
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;
19 36
20$item--hover--bg-color: props.def(--o-menu--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 37$item--hover--bg-color: props.def(
21$item--hover--label-color: props.def(--o-menu--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default; 38 --o-menu--item--hover--bg-color,
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;
22 47
23$item--active--bg-color: props.def(--o-menu--item--active--bg-color, props.get(core.$theme, --border), 'color') !default; 48$item--active--bg-color: props.def(
24$item--active--label-color: props.def(--o-menu--item--active--label-color, props.get(core.$theme, --heading), 'color') !default; 49 --o-menu--item--active--bg-color,
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;
25 58
26$item--disabled--label-color: props.def(--o-menu--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 59$item--disabled--label-color: props.def(
60 --o-menu--item--disabled--label-color,
61 props.get(core.$theme, --text-disabled),
62 "color"
63) !default;
27 64
28$item--key-focus--border-color: props.def(--o-menu--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 65$item--key-focus--border-color: props.def(
29$item--key-focus--outline-color: props.def(--o-menu--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 66 --o-menu--item--key-focus--border-color,
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 cc1eaaa..4b678e0 100644
--- a/src/objects/_navbar.scss
+++ b/src/objects/_navbar.scss
@@ -1,151 +1,197 @@
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/src/bem'; 5@use "pkg:iro-sass/bem";
6@use 'pkg:iro-sass/src/props'; 6@use "pkg:iro-sass/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 props.get(vars.$key-focus--border-width); 21 outline: props.get($theme, list.join($key, --key-focus --border)...) solid
22 box-shadow: 22 props.get(vars.$key-focus--border-width);
23 0 23 box-shadow: 0 0 0
24 0 24 calc(
25 0 25 props.get(vars.$key-focus--border-width) +
26 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 26 props.get(vars.$key-focus--outline-width)
27 )
27 props.get($theme, list.join($key, --key-focus --outline)...); 28 props.get($theme, list.join($key, --key-focus --outline)...);
28 } 29 }
29 } 30 }
30 31
31 @include bem.elem('item') { 32 @include bem.elem("item") {
32 &:link, 33 &:link,
33 &:visited, 34 &:visited,
34 &:enabled { 35 &:enabled {
35 @include bem.elem('item-label') { 36 @include bem.elem("item-label") {
36 color: props.get($theme, list.join($key, --label-color)...); 37 color: props.get($theme, list.join($key, --label-color)...);
37 } 38 }
38 39
39 @include bem.elem('item-content') { 40 @include bem.elem("item-content") {
40 color: props.get($theme, list.join($key, --text-color)...); 41 color: props.get($theme, list.join($key, --text-color)...);
41 } 42 }
42 43
43 &:hover, 44 &:hover,
44 &:focus-visible { 45 &:focus-visible {
45 @include bem.elem('item-label') { 46 @include bem.elem("item-label") {
46 color: props.get($theme, list.join($key, --hover --label-color)...); 47 color: props.get($theme, list.join($key, --hover --label-color)...);
47 } 48 }
48 49
49 @include bem.elem('item-content') { 50 @include bem.elem("item-content") {
50 color: props.get($theme, list.join($key, --hover --text-color)...); 51 color: props.get($theme, list.join($key, --hover --text-color)...);
51 background-color: props.get($theme, list.join($key, --hover --bg-color)...); 52 background-color: props.get($theme, list.join($key, --hover --bg-color)...);
52 } 53 }
53 } 54 }
54 55
55 &:focus-visible { 56 &:focus-visible {
56 @include bem.elem('item-label') { 57 @include bem.elem("item-label") {
57 color: props.get($theme, list.join($key, --key-focus --label)...); 58 color: props.get($theme, list.join($key, --key-focus --label)...);
58 } 59 }
59 } 60 }
60 61
61 &:active { 62 &:active {
62 @include bem.elem('item-label') { 63 @include bem.elem("item-label") {
63 color: props.get($theme, list.join($key, --active --label-color)...); 64 color: props.get($theme, list.join($key, --active --label-color)...);
64 } 65 }
65 66
66 @include bem.elem('item-content') { 67 @include bem.elem("item-content") {
67 color: props.get($theme, list.join($key, --active --text-color)...); 68 color: props.get($theme, list.join($key, --active --text-color)...);
68 background-color: props.get($theme, list.join($key, --active --bg-color)...); 69 background-color: props.get($theme, list.join($key, --active --bg-color)...);
69 } 70 }
70 } 71 }
71 } 72 }
72 73
73 @include bem.is('selected') { 74 @include bem.is("selected") {
74 @include bem.elem('item-label') { 75 @include bem.elem("item-label") {
75 color: props.get($theme, list.join($key, --selected --disabled --label-color)...); 76 color: props.get($theme, list.join($key, --selected --disabled --label-color)...);
76 } 77 }
77 78
78 @include bem.elem('item-content') { 79 @include bem.elem("item-content") {
79 color: props.get($theme, list.join($key, --selected --disabled --text-color)...); 80 color: props.get($theme, list.join($key, --selected --disabled --text-color)...);
80 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); 81 background-color: props.get(
82 $theme,
83 list.join($key, --selected --disabled --bg-color)...
84 );
81 } 85 }
82 86
83 &:link, 87 &:link,
84 &:visited, 88 &:visited,
85 &:enabled { 89 &:enabled {
86 @include bem.elem('item-label') { 90 @include bem.elem("item-label") {
87 color: props.get($theme, list.join($key, --selected --label-color)...); 91 color: props.get($theme, list.join($key, --selected --label-color)...);
88 } 92 }
89 93
90 @include bem.elem('item-content') { 94 @include bem.elem("item-content") {
91 color: props.get($theme, list.join($key, --selected --text-color)...); 95 color: props.get($theme, list.join($key, --selected --text-color)...);
92 background-color: props.get($theme, list.join($key, --selected --bg-color)...); 96 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
93 } 97 }
94 98
95 &:hover, 99 &:hover,
96 &:focus-visible { 100 &:focus-visible {
97 @include bem.elem('item-label') { 101 @include bem.elem("item-label") {
98 color: props.get($theme, list.join($key, --selected --hover --label-color)...); 102 color: props.get(
103 $theme,
104 list.join($key, --selected --hover --label-color)...
105 );
99 } 106 }
100 107
101 @include bem.elem('item-content') { 108 @include bem.elem("item-content") {
102 color: props.get($theme, list.join($key, --selected --hover --text-color)...); 109 color: props.get(
103 background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...); 110 $theme,
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 );
104 } 117 }
105 } 118 }
106 119
107 &:active { 120 &:active {
108 @include bem.elem('item-label') { 121 @include bem.elem("item-label") {
109 color: props.get($theme, list.join($key, --selected --active --label-color)...); 122 color: props.get(
123 $theme,
124 list.join($key, --selected --active --label-color)...
125 );
110 } 126 }
111 127
112 @include bem.elem('item-content') { 128 @include bem.elem("item-content") {
113 color: props.get($theme, list.join($key, --selected --active --text-color)...); 129 color: props.get(
114 background-color: props.get($theme, list.join($key, --selected --active --bg-color)...); 130 $theme,
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 );
115 } 137 }
116 } 138 }
117 } 139 }
118 } 140 }
119 } 141 }
120 142
121 @include bem.modifier('quiet') { 143 @include bem.modifier("quiet") {
122 @include bem.elem('item') { 144 @include bem.elem("item") {
123 @include bem.is('selected') { 145 @include bem.is("selected") {
124 @include bem.elem('item-content') { 146 @include bem.elem("item-content") {
125 color: props.get($theme, list.join($key, --quiet --selected --disabled --text-color)...); 147 color: props.get(
126 background-color: props.get($theme, list.join($key, --quiet --selected --disabled --bg-color)...); 148 $theme,
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 );
127 } 155 }
128 156
129 &:link, 157 &:link,
130 &:visited, 158 &:visited,
131 &:enabled { 159 &:enabled {
132 @include bem.elem('item-content') { 160 @include bem.elem("item-content") {
133 color: props.get($theme, list.join($key, --quiet --selected --text-color)...); 161 color: props.get(
134 background-color: props.get($theme, list.join($key, --quiet --selected --bg-color)...); 162 $theme,
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 );
135 } 169 }
136 170
137 &:hover, 171 &:hover,
138 &:focus-visible { 172 &:focus-visible {
139 @include bem.elem('item-content') { 173 @include bem.elem("item-content") {
140 color: props.get($theme, list.join($key, --quiet --selected --hover --text-color)...); 174 color: props.get(
141 background-color: props.get($theme, list.join($key, --quiet --selected --hover --bg-color)...); 175 $theme,
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 );
142 } 182 }
143 } 183 }
144 184
145 &:active { 185 &:active {
146 @include bem.elem('item-content') { 186 @include bem.elem("item-content") {
147 color: props.get($theme, list.join($key, --quiet --selected --active --text-color)...); 187 color: props.get(
148 background-color: props.get($theme, list.join($key, --quiet --selected --active --bg-color)...); 188 $theme,
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 );
149 } 195 }
150 } 196 }
151 } 197 }
@@ -155,64 +201,64 @@
155} 201}
156 202
157@mixin styles { 203@mixin styles {
158 @include materialize-at-root(meta.module-variables('vars')); 204 @include materialize-at-root(meta.module-variables("vars"));
159 205
160 @include bem.object('navbar') { 206 @include bem.object("navbar") {
161 display: flex; 207 display: flex;
162 block-size: props.get(vars.$block-size); 208 block-size: props.get(vars.$block-size);
163 209
164 @include bem.elem('item-label') { 210 @include bem.elem("item-label") {
165 order: 2; 211 order: 2;
166 margin-block-start: props.get(vars.$item--pad-b-icon); 212 margin-block-start: props.get(vars.$item--pad-b-icon);
167 font-size: props.get(vars.$item--label-font-size); 213 font-size: props.get(vars.$item--label-font-size);
168 font-weight: bold; 214 font-weight: bold;
169 215
170 @include bem.next-elem('item-content') { 216 @include bem.next-elem("item-content") {
171 padding-block: props.get(vars.$item--pad-b-icon); 217 padding-block: props.get(vars.$item--pad-b-icon);
172 padding-inline: props.get(vars.$item--pad-i-icon); 218 padding-inline: props.get(vars.$item--pad-i-icon);
173 font-size: props.get(vars.$item--icon-size); 219 font-size: props.get(vars.$item--icon-size);
174 } 220 }
175 } 221 }
176 222
177 @include bem.elem('item-content-text') { 223 @include bem.elem("item-content-text") {
178 margin-inline: props.get(vars.$item--pad-i-label); 224 margin-inline: props.get(vars.$item--pad-i-label);
179 } 225 }
180 226
181 @include bem.elem('item-content') { 227 @include bem.elem("item-content") {
182 position: relative; 228 position: relative;
183 order: 1; 229 order: 1;
184 padding-block: props.get(vars.$item--pad-b); 230 padding-block: props.get(vars.$item--pad-b);
185 padding-inline: props.get(vars.$item--pad-i); 231 padding-inline: props.get(vars.$item--pad-i);
186 font-size: props.get(vars.$item--font-size); 232 font-size: props.get(vars.$item--font-size);
187 white-space: nowrap; 233 white-space: nowrap;
188 border-radius: 100em; 234 border-radius: 100em;
189 235
190 &::after { 236 &::after {
191 position: absolute; 237 position: absolute;
192 inset: calc(-1 * props.get(vars.$key-focus--border-offset)); 238 inset: calc(-1 * props.get(vars.$key-focus--border-offset));
193 z-index: -10; 239 z-index: -10;
194 display: block; 240 display: block;
195 visibility: hidden; 241 visibility: hidden;
196 pointer-events: none; 242 pointer-events: none;
197 content: ''; 243 content: "";
198 border-radius: 100em; 244 border-radius: 100em;
199 } 245 }
200 } 246 }
201 247
202 @include bem.elem('item') { 248 @include bem.elem("item") {
203 display: flex; 249 display: flex;
204 flex-direction: column; 250 flex-direction: column;
205 align-items: center; 251 align-items: center;
206 justify-content: center; 252 justify-content: center;
207 inline-size: 100%; 253 inline-size: 100%;
208 padding-inline: calc(.5 * props.get(vars.$spacing)); 254 padding-inline: calc(0.5 * props.get(vars.$spacing));
209 font-weight: 500; 255 font-weight: 500;
210 256
211 &:link, 257 &:link,
212 &:visited, 258 &:visited,
213 &:enabled { 259 &:enabled {
214 &:focus-visible { 260 &:focus-visible {
215 @include bem.elem('item-content') { 261 @include bem.elem("item-content") {
216 &::after { 262 &::after {
217 visibility: visible; 263 visibility: visible;
218 } 264 }
@@ -220,7 +266,7 @@
220 } 266 }
221 } 267 }
222 268
223 @include bem.is('selected') { 269 @include bem.is("selected") {
224 font-weight: bold; 270 font-weight: bold;
225 } 271 }
226 } 272 }
@@ -233,22 +279,21 @@
233 } 279 }
234 } 280 }
235 281
236 @include bem.modifier('hide-unselected') { 282 @include bem.modifier("hide-unselected") {
237 @include bem.elem('item') { 283 @include bem.elem("item") {
238 display: none; 284 display: none;
239 285
240 @include bem.is('selected') { 286 @include bem.is("selected") {
241 display: flex; 287 display: flex;
242 } 288 }
243 } 289 }
244 } 290 }
245 291
246 @include bem.modifier('adapt') { 292 @include bem.modifier("adapt") {
247 block-size: 100%; 293 block-size: 100%;
248 } 294 }
249 295
250 296 @include bem.modifier("align-block") {
251 @include bem.modifier('align-block') {
252 margin-inline: calc(-1 * props.get(vars.$item--pad-i)); 297 margin-inline: calc(-1 * props.get(vars.$item--pad-i));
253 } 298 }
254 } 299 }
diff --git a/src/objects/_navbar.vars.scss b/src/objects/_navbar.vars.scss
index e96b714..b7d7e16 100644
--- a/src/objects/_navbar.vars.scss
+++ b/src/objects/_navbar.vars.scss
@@ -1,178 +1,242 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-navbar--item--label-font-size, props.get(core.$font-size--50)) !default; 16$item--label-font-size: props.def(
17 --o-navbar--item--label-font-size,
18 props.get(core.$font-size--50)
19) !default;
17 20
18$key-focus--border-width: props.def(--o-navbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 21$key-focus--border-width: props.def(
19$key-focus--border-offset: props.def(--o-navbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 22 --o-navbar--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; 23 props.get(core.$key-focus--border-width)
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;
21 33
22$themes: props.def(--o-navbar, (), 'color'); 34$themes: props.def(--o-navbar, (), "color");
23 35
24$default-theme-override: () !default; 36$default-theme-override: () !default;
25$default-theme: map.deep-merge(( 37$default-theme: map.deep-merge(
26 --text-color: props.get(core.$theme, --text), 38 (
27 --label-color: props.get(core.$theme, --text-mute), 39 --text-color: props.get(core.$theme, --text),
28 40 --label-color: props.get(core.$theme, --text-mute),
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
57 --hover: ( 41 --hover: (
58 --bg-color: props.get(core.$theme, --text), 42 --bg-color: props.get(core.$theme, --border-mute),
59 --text-color: props.get(core.$theme, --base, --50), 43 --text-color: props.get(core.$theme, --heading),
60 --label-color: props.get(core.$theme, --heading), 44 --label-color: props.get(core.$theme, --text),
61 ), 45 ),
62 46
63 --active: ( 47 --active: (
64 --bg-color: props.get(core.$theme, --text-mute), 48 --bg-color: props.get(core.$theme, --border),
65 --text-color: props.get(core.$theme, --base, --50), 49 --text-color: props.get(core.$theme, --heading),
66 --label-color: props.get(core.$theme, --heading), 50 --label-color: props.get(core.$theme, --heading),
67 ), 51 ),
68 52
69 --disabled: ( 53 --disabled: (
70 --bg-color: props.get(core.$theme, --border-mute), 54 --text-color: props.get(core.$theme, --border-strong),
71 --text-color: props.get(core.$theme, --border-strong),
72 --label-color: props.get(core.$theme, --text-disabled), 55 --label-color: props.get(core.$theme, --text-disabled),
73 ), 56 ),
74 ),
75
76 --quiet: (
77 --selected: (
78 --bg-color: props.get(core.$theme, --border-mute),
79 --text-color: props.get(core.$theme, --heading),
80
81 --hover: (
82 --bg-color: props.get(core.$theme, --border),
83 --text-color: props.get(core.$theme, --heading),
84 ),
85
86 --active: (
87 --bg-color: props.get(core.$theme, --border-strong),
88 --text-color: props.get(core.$theme, --heading),
89 ),
90
91 --disabled: (
92 --bg-color: props.get(core.$theme, --border-mute),
93 --text-color: props.get(core.$theme, --border-strong),
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 57
103 $themes: props.merge($themes, ( 58 --key-focus: (
104 $nav-theme: ( 59 --label: props.get(core.$theme, --focus, --text),
105 --text-color: props.get(core.$transparent-colors, $theme, --800), 60 --border: props.get(core.$theme, --focus, --border),
106 --label-color: props.get(core.$transparent-colors, $theme, --700), 61 --outline: props.get(core.$theme, --focus, --outline),
62 ),
107 63
64 --selected: (
65 --bg-color: props.get(core.$theme, --heading),
66 --text-color: props.get(core.$theme, --base, --50),
67 --label-color: props.get(core.$theme, --heading),
108 --hover: ( 68 --hover: (
109 --bg-color: props.get(core.$transparent-colors, $theme, --300), 69 --bg-color: props.get(core.$theme, --text),
110 --text-color: props.get(core.$transparent-colors, $theme, --900), 70 --text-color: props.get(core.$theme, --base, --50),
111 --label-color: props.get(core.$transparent-colors, $theme, --800), 71 --label-color: props.get(core.$theme, --heading),
112 ), 72 ),
113 73
114 --active: ( 74 --active: (
115 --bg-color: props.get(core.$transparent-colors, $theme, --400), 75 --bg-color: props.get(core.$theme, --text-mute),
116 --text-color: props.get(core.$transparent-colors, $theme, --900), 76 --text-color: props.get(core.$theme, --base, --50),
117 --label-color: props.get(core.$transparent-colors, $theme, --900), 77 --label-color: props.get(core.$theme, --heading),
118 ), 78 ),
119 79
120 --disabled: ( 80 --disabled: (
121 --text-color: props.get(core.$transparent-colors, $theme, --500), 81 --bg-color: props.get(core.$theme, --border-mute),
122 --label-color: props.get(core.$transparent-colors, $theme, --500), 82 --text-color: props.get(core.$theme, --border-strong),
123 ), 83 --label-color: props.get(core.$theme, --text-disabled),
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),
129 ), 84 ),
85 ),
130 86
87 --quiet: (
131 --selected: ( 88 --selected: (
132 --bg-color: props.get(core.$transparent-colors, $theme, --900), 89 --bg-color: props.get(core.$theme, --border-mute),
133 --text-color: props.get(core.$transparent-colors, $theme, --text), 90 --text-color: props.get(core.$theme, --heading),
134 --label-color: props.get(core.$transparent-colors, $theme, --800),
135
136 --hover: ( 91 --hover: (
137 --bg-color: props.get(core.$transparent-colors, $theme, --800), 92 --bg-color: props.get(core.$theme, --border),
138 --text-color: props.get(core.$transparent-colors, $theme, --text), 93 --text-color: props.get(core.$theme, --heading),
139 --label-color: props.get(core.$transparent-colors, $theme, --900),
140 ), 94 ),
141 95
142 --active: ( 96 --active: (
143 --bg-color: props.get(core.$transparent-colors, $theme, --800), 97 --bg-color: props.get(core.$theme, --border-strong),
144 --text-color: props.get(core.$transparent-colors, $theme, --text), 98 --text-color: props.get(core.$theme, --heading),
145 --label-color: props.get(core.$transparent-colors, $theme, --900),
146 ), 99 ),
147 100
148 --disabled: ( 101 --disabled: (
149 --bg-color: props.get(core.$transparent-colors, $theme, --200), 102 --bg-color: props.get(core.$theme, --border-mute),
150 --text-color: props.get(core.$transparent-colors, $theme, --500), 103 --text-color: props.get(core.$theme, --border-strong),
151 --label-color: props.get(core.$transparent-colors, $theme, --100),
152 ), 104 ),
153 ), 105 ),
106 ),
107 ),
108 $default-theme-override
109) !default;
110$default-theme: props.def(--o-navbar, $default-theme, "color");
154 111
155 --quiet: ( 112@each $theme in map.keys(props.get(core.$transparent-colors)) {
156 --selected: ( 113 $nav-theme: --static-#{string.slice($theme, 3)};
157 --bg-color: props.get(core.$transparent-colors, $theme, --300),
158 --text-color: props.get(core.$transparent-colors, $theme, --900),
159 114
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),
160 --hover: ( 121 --hover: (
161 --bg-color: props.get(core.$transparent-colors, $theme, --400), 122 --bg-color: props.get(core.$transparent-colors, $theme, --300),
162 --text-color: props.get(core.$transparent-colors, $theme, --900), 123 --text-color: props.get(core.$transparent-colors, $theme, --900),
163 ), 124 --label-color: props.get(core.$transparent-colors, $theme, --800),
125 ),
164 126
165 --active: ( 127 --active: (
166 --bg-color: props.get(core.$transparent-colors, $theme, --500), 128 --bg-color: props.get(core.$transparent-colors, $theme, --400),
167 --text-color: props.get(core.$transparent-colors, $theme, --900), 129 --text-color: props.get(core.$transparent-colors, $theme, --900),
168 ), 130 --label-color: props.get(core.$transparent-colors, $theme, --900),
131 ),
169 132
170 --disabled: ( 133 --disabled: (
171 --bg-color: props.get(core.$transparent-colors, $theme, --100), 134 --text-color: props.get(core.$transparent-colors, $theme, --500),
172 --text-color: props.get(core.$transparent-colors, $theme, --500), 135 --label-color: props.get(core.$transparent-colors, $theme, --500),
173 ), 136 ),
174 ) 137
175 ) 138 --key-focus: (
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 ),
176 ) 240 )
177 )); 241 );
178} 242}
diff --git a/src/objects/_palette.scss b/src/objects/_palette.scss
index f503812..88448e0 100644
--- a/src/objects/_palette.scss
+++ b/src/objects/_palette.scss
@@ -1,21 +1,27 @@
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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use '../config'; 5@use "../config";
6@use 'pkg:iro-sass/src/props'; 6@use "pkg:iro-sass/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(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2)); 18 $levels: map.get(
19 config.$themes,
20 config.$theme-default,
21 light,
22 --levels,
23 list.nth($palette, 2)
24 );
19 25
20 @for $i from 1 through list.length($levels) { 26 @for $i from 1 through list.length($levels) {
21 $key: list.nth(map.keys($levels), $i); 27 $key: list.nth(map.keys($levels), $i);
@@ -26,11 +32,19 @@
26 } 32 }
27 } 33 }
28 34
29 @each $palette-name, $palette in map.get(config.$themes, config.$theme-default, light, --palettes) { 35 @each $palette-name,
30 $levels: map.get(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2)); 36 $palette in map.get(config.$themes, config.$theme-default, light, --palettes)
37 {
38 $levels: map.get(
39 config.$themes,
40 config.$theme-default,
41 light,
42 --levels,
43 list.nth($palette, 2)
44 );
31 45
32 @include bem.modifier(string.slice($palette-name, 3)) { 46 @include bem.modifier(string.slice($palette-name, 3)) {
33 @include bem.elem('item') { 47 @include bem.elem("item") {
34 @for $i from 1 through list.length($levels) { 48 @for $i from 1 through list.length($levels) {
35 $key: list.nth(map.keys($levels), $i); 49 $key: list.nth(map.keys($levels), $i);
36 50
@@ -42,17 +56,21 @@
42 } 56 }
43 } 57 }
44 58
45 @include bem.modifier('static') { 59 @include bem.modifier("static") {
46 @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { 60 @each $palette-name, $palette in map.get(config.$static-colors, --palettes) {
47 $levels: map.get(config.$static-colors, --levels); 61 $levels: map.get(config.$static-colors, --levels);
48 62
49 @include bem.modifier(string.slice($palette-name, 3)) { 63 @include bem.modifier(string.slice($palette-name, 3)) {
50 @include bem.elem('item') { 64 @include bem.elem("item") {
51 @for $i from 1 through list.length($levels) { 65 @for $i from 1 through list.length($levels) {
52 $key: list.nth(map.keys($levels), $i); 66 $key: list.nth(map.keys($levels), $i);
53 67
54 &:nth-child(#{$i}) { 68 &:nth-child(#{$i}) {
55 background-color: props.get(core.$theme, #{$palette-name}-static, $key); 69 background-color: props.get(
70 core.$theme,
71 #{$palette-name}-static,
72 $key
73 );
56 } 74 }
57 } 75 }
58 } 76 }
diff --git a/src/objects/_placeholders.scss b/src/objects/_placeholders.scss
index 683f57e..d0af033 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 1ac4ef7..87e1657 100644
--- a/src/objects/_placeholders.vars.scss
+++ b/src/objects/_placeholders.vars.scss
@@ -1,6 +1,6 @@
1@use 'pkg:iro-sass/src/props'; 1@use "pkg:iro-sass/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, .5) !default; 6$opacity: props.def(--o-placeholder--opacity, 0.5) !default;
diff --git a/src/objects/_popover.scss b/src/objects/_popover.scss
index 1cb5660..90187c1 100644
--- a/src/objects/_popover.scss
+++ b/src/objects/_popover.scss
@@ -1,44 +1,40 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: 25 box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur)
26 props.get(vars.$shadow-x) 26 props.get(vars.$shadow-grow) props.get(vars.$shadow-color);
27 props.get(vars.$shadow-y) 27 transform: translate(var(--x), var(--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));
32 28
33 @include bem.modifier('up-left') { 29 @include bem.modifier("up-left") {
34 transform: translate(var(--x), calc(var(--y) - 100%)); 30 transform: translate(var(--x), calc(var(--y) - 100%));
35 } 31 }
36 32
37 @include bem.modifier('up-right') { 33 @include bem.modifier("up-right") {
38 transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%)); 34 transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%));
39 } 35 }
40 36
41 @include bem.modifier('down-right') { 37 @include bem.modifier("down-right") {
42 transform: translate(calc(var(--x) - 100%), var(--y)); 38 transform: translate(calc(var(--x) - 100%), var(--y));
43 } 39 }
44 } 40 }
diff --git a/src/objects/_popover.vars.scss b/src/objects/_popover.vars.scss
index 202d71a..df1072e 100644
--- a/src/objects/_popover.vars.scss
+++ b/src/objects/_popover.vars.scss
@@ -1,19 +1,28 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--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; 18$border-color: props.def(
19$shadow-color: props.def(--o-popover--shadow-color, props.get(core.$theme, --shadow), 'color') !default; 19 --o-popover--border-color,
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 ae4a85a..c964657 100644
--- a/src/objects/_radio.scss
+++ b/src/objects/_radio.scss
@@ -1,92 +1,100 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: 18 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
19 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 19 calc(
20 calc(props.get(vars.$spacing-sibling) - 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(
21 vars.$key-focus--border-offset
22 )
23 );
21 24
22 @include bem.elem('circle') { 25 @include bem.elem("circle") {
23 display: inline-block; 26 display: inline-block;
24 flex: 0 0 auto; 27 flex: 0 0 auto;
25 inline-size: props.get(vars.$diameter); 28 inline-size: props.get(vars.$diameter);
26 block-size: props.get(vars.$diameter); 29 block-size: props.get(vars.$diameter);
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)); 30 margin-block-start: calc(
28 vertical-align: top; 31 0.5em * props.get(core.$font--standard--line-height) - 0.5 *
29 background-color: props.get(vars.$circle-border-color); 32 props.get(vars.$diameter) - props.get(vars.$key-focus--border-offset)
30 background-clip: padding-box; 33 );
31 border: props.get(vars.$key-focus--border-offset) solid transparent; 34 vertical-align: top;
32 border-radius: 2em; 35 background-color: props.get(vars.$circle-border-color);
36 background-clip: padding-box;
37 border: props.get(vars.$key-focus--border-offset) solid transparent;
38 border-radius: 2em;
33 39
34 &::after { 40 &::after {
35 position: relative; 41 position: relative;
36 inset-block-start: props.get(vars.$border-width); 42 inset-block-start: props.get(vars.$border-width);
37 inset-inline-start: props.get(vars.$border-width); 43 inset-inline-start: props.get(vars.$border-width);
38 display: block; 44 display: block;
39 inline-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); 45 inline-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)); 46 block-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width));
41 content: ''; 47 content: "";
42 background-color: props.get(vars.$circle-bg-color); 48 background-color: props.get(vars.$circle-bg-color);
43 border-radius: props.get(vars.$diameter); 49 border-radius: props.get(vars.$diameter);
44 transition: transform .2s ease; 50 transition: transform 0.2s ease;
45 } 51 }
46 } 52 }
47 53
48 @include bem.elem('label') { 54 @include bem.elem("label") {
49 margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)); 55 margin-inline-start: calc(
56 props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)
57 );
50 } 58 }
51 59
52 @include bem.elem('native') { 60 @include bem.elem("native") {
53 position: absolute; 61 position: absolute;
54 inset-block-start: 0; 62 inset-block-start: 0;
55 inset-inline-start: 0; 63 inset-inline-start: 0;
56 z-index: -1; 64 z-index: -1;
57 inline-size: 100%; 65 inline-size: 100%;
58 block-size: 100%; 66 block-size: 100%;
59 padding: 0; 67 padding: 0;
60 margin: 0; 68 margin: 0;
61 overflow: hidden; 69 overflow: hidden;
62 appearance: none; 70 appearance: none;
63 border-radius: props.get(vars.$rounding); 71 border-radius: props.get(vars.$rounding);
64 72
65 &:hover, 73 &:hover,
66 &:focus-visible { 74 &:focus-visible {
67 @include bem.sibling-elem('label') { 75 @include bem.sibling-elem("label") {
68 color: props.get(vars.$hover--label-color); 76 color: props.get(vars.$hover--label-color);
69 } 77 }
70 78
71 @include bem.sibling-elem('circle') { 79 @include bem.sibling-elem("circle") {
72 background-color: props.get(vars.$hover--circle-border-color); 80 background-color: props.get(vars.$hover--circle-border-color);
73 } 81 }
74 } 82 }
75 83
76 &:checked { 84 &:checked {
77 @include bem.sibling-elem('circle') { 85 @include bem.sibling-elem("circle") {
78 &::after { 86 &::after {
79 transform: scale(.44); 87 transform: scale(0.44);
80 } 88 }
81 } 89 }
82 } 90 }
83 91
84 &:disabled { 92 &:disabled {
85 @include bem.sibling-elem('label') { 93 @include bem.sibling-elem("label") {
86 color: props.get(vars.$disabled--label-color); 94 color: props.get(vars.$disabled--label-color);
87 } 95 }
88 96
89 @include bem.sibling-elem('circle') { 97 @include bem.sibling-elem("circle") {
90 background-color: props.get(vars.$disabled--circle-border-color); 98 background-color: props.get(vars.$disabled--circle-border-color);
91 99
92 &::after { 100 &::after {
@@ -96,45 +104,46 @@
96 } 104 }
97 105
98 &:focus-visible { 106 &:focus-visible {
99 @include bem.sibling-elem('label') { 107 @include bem.sibling-elem("label") {
100 color: props.get(vars.$key-focus--label-color); 108 color: props.get(vars.$key-focus--label-color);
101 } 109 }
102 110
103 @include bem.sibling-elem('circle') { 111 @include bem.sibling-elem("circle") {
104 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 112 outline: props.get(vars.$key-focus--border-color) solid
105 box-shadow: 113 props.get(vars.$key-focus--border-width);
106 0 114 box-shadow: 0 0 0
107 0 115 calc(
108 0 116 props.get(vars.$key-focus--border-width) +
109 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 117 props.get(vars.$key-focus--outline-width)
118 )
110 props.get(vars.$key-focus--outline-color); 119 props.get(vars.$key-focus--outline-color);
111 } 120 }
112 } 121 }
113 } 122 }
114 123
115 @include bem.modifier('standalone') { 124 @include bem.modifier("standalone") {
116 @include bem.elem('circle') { 125 @include bem.elem("circle") {
117 margin-block-start: 0; 126 margin-block-start: 0;
118 } 127 }
119 } 128 }
120 129
121 @include bem.modifier('accent') { 130 @include bem.modifier("accent") {
122 @include bem.elem('native') { 131 @include bem.elem("native") {
123 &:checked { 132 &:checked {
124 @include bem.sibling-elem('circle') { 133 @include bem.sibling-elem("circle") {
125 background-color: props.get(vars.$accent--circle-border-color); 134 background-color: props.get(vars.$accent--circle-border-color);
126 } 135 }
127 136
128 &:hover, 137 &:hover,
129 &:focus-visible { 138 &:focus-visible {
130 @include bem.sibling-elem('circle') { 139 @include bem.sibling-elem("circle") {
131 background-color: props.get(vars.$accent--hover--circle-border-color); 140 background-color: props.get(vars.$accent--hover--circle-border-color);
132 } 141 }
133 } 142 }
134 } 143 }
135 144
136 &:disabled { 145 &:disabled {
137 @include bem.sibling-elem('circle') { 146 @include bem.sibling-elem("circle") {
138 background-color: props.get(vars.$disabled--circle-border-color); 147 background-color: props.get(vars.$disabled--circle-border-color);
139 148
140 &::after { 149 &::after {
@@ -143,7 +152,7 @@
143 } 152 }
144 153
145 &:checked { 154 &:checked {
146 @include bem.sibling-elem('circle') { 155 @include bem.sibling-elem("circle") {
147 background-color: props.get(vars.$disabled--circle-border-color); 156 background-color: props.get(vars.$disabled--circle-border-color);
148 } 157 }
149 } 158 }
diff --git a/src/objects/_radio.vars.scss b/src/objects/_radio.vars.scss
index a5f249d..e7a41a4 100644
--- a/src/objects/_radio.vars.scss
+++ b/src/objects/_radio.vars.scss
@@ -1,33 +1,90 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-radio--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 13$key-focus--border-width: props.def(
14$key-focus--border-offset: props.def(--o-radio--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 14 --o-radio--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; 15 props.get(core.$key-focus--border-width)
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;
16 25
17$circle-border-color: props.def(--o-radio--circle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; 26$circle-border-color: props.def(
18$circle-bg-color: props.def(--o-radio--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default; 27 --o-radio--circle-border-color,
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;
19 36
20$hover--label-color: props.def(--o-radio--hover--label-color, props.get(core.$theme, --heading), 'color') !default; 37$hover--label-color: props.def(
21$hover--circle-border-color: props.def(--o-radio--hover--circle-border-color, props.get(core.$theme, --text-mute), 'color') !default; 38 --o-radio--hover--label-color,
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;
22 47
23$accent--circle-border-color: props.def(--o-radio--accent--circle-border-color, props.get(core.$theme, --accent, --900), 'color') !default; 48$accent--circle-border-color: props.def(
49 --o-radio--accent--circle-border-color,
50 props.get(core.$theme, --accent, --900),
51 "color"
52) !default;
24 53
25$accent--hover--circle-border-color: props.def(--o-radio--accent--hover--circle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; 54$accent--hover--circle-border-color: props.def(
55 --o-radio--accent--hover--circle-border-color,
56 props.get(core.$theme, --accent, --1000),
57 "color"
58) !default;
26 59
27$disabled--label-color: props.def(--o-radio--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 60$disabled--label-color: props.def(
28$disabled--circle-border-color: props.def(--o-radio--disabled--circle-border-color, props.get(core.$theme, --border-strong), 'color') !default; 61 --o-radio--disabled--label-color,
29$disabled--circle-bg-color: props.def(--o-radio--disabled--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default; 62 props.get(core.$theme, --text-disabled),
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;
30 75
31$key-focus--label-color: props.def(--o-radio--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; 76$key-focus--label-color: props.def(
32$key-focus--border-color: props.def(--o-radio--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 77 --o-radio--key-focus--label-color,
33$key-focus--outline-color: props.def(--o-radio--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 78 props.get(core.$theme, --focus, --text),
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 272d38c..ed0f3dc 100644
--- a/src/objects/_side-nav.scss
+++ b/src/objects/_side-nav.scss
@@ -1,76 +1,79 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: .5px; 25 letter-spacing: 0.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(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset)); 40 border-radius: calc(
41 props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset)
42 );
41 43
42 &:link, 44 &:link,
43 &:visited, 45 &:visited,
44 &:enabled { 46 &:enabled {
45 color: currentColor; 47 color: currentColor;
46 48
47 @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') { 49 @include bem.multi("&:hover, &:focus-visible", "is" "selected") {
48 color: props.get(vars.$item--hover--label-color); 50 color: props.get(vars.$item--hover--label-color);
49 background-color: props.get(vars.$item--hover--bg-color); 51 background-color: props.get(vars.$item--hover--bg-color);
50 } 52 }
51 53
52 &:active { 54 &:active {
53 color: props.get(vars.$item--active--label-color); 55 color: props.get(vars.$item--active--label-color);
54 background-color: props.get(vars.$item--active--bg-color); 56 background-color: props.get(vars.$item--active--bg-color);
55 } 57 }
56 58
57 &:focus-visible { 59 &:focus-visible {
58 outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width); 60 outline: props.get(vars.$item--key-focus--border-color) solid
59 box-shadow: 61 props.get(vars.$item--key-focus--border-width);
60 0 62 box-shadow: 0 0 0
61 0 63 calc(
62 0 64 props.get(vars.$item--key-focus--border-width) +
63 calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width)) 65 props.get(vars.$item--key-focus--outline-width)
66 )
64 props.get(vars.$item--key-focus--outline-color); 67 props.get(vars.$item--key-focus--outline-color);
65 } 68 }
66 } 69 }
67 70
68 @include bem.next-elem('header') { 71 @include bem.next-elem("header") {
69 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); 72 margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing));
70 } 73 }
71 } 74 }
72 75
73 @include bem.elem('header') { 76 @include bem.elem("header") {
74 &:link, 77 &:link,
75 &:visited, 78 &:visited,
76 &:enabled { 79 &:enabled {
@@ -78,14 +81,14 @@
78 } 81 }
79 } 82 }
80 83
81 @include bem.elem('separator') { 84 @include bem.elem("separator") {
82 block-size: props.get(vars.$separator); 85 block-size: props.get(vars.$separator);
83 } 86 }
84 87
85 @include bem.elem('icon-slot') { 88 @include bem.elem("icon-slot") {
86 display: flex; 89 display: flex;
87 justify-content: center; 90 justify-content: center;
88 inline-size: props.get(icon.$size); 91 inline-size: props.get(icon.$size);
89 } 92 }
90 } 93 }
91} 94}
diff --git a/src/objects/_side-nav.vars.scss b/src/objects/_side-nav.vars.scss
index d6a7de1..8abb0df 100644
--- a/src/objects/_side-nav.vars.scss
+++ b/src/objects/_side-nav.vars.scss
@@ -1,28 +1,72 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-side-nav--header--font-size, props.get(core.$font-size--50)) !default; 6$header--font-size: props.def(
7$separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default; 7 --o-side-nav--header--font-size,
8 props.get(core.$font-size--50)
9) !default;
10$separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default;
8 11
9$item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default; 12$item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default;
10$item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default; 13$item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default;
11$item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default; 14$item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default;
12 15
13$item--key-focus--border-width: props.def(--o-side-nav--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 16$item--key-focus--border-width: props.def(
14$item--key-focus--border-offset: props.def(--o-side-nav--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 17 --o-side-nav--item--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; 18 props.get(core.$key-focus--border-width)
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;
16 28
17$header--label-color: props.def(--o-side-nav--header--label-color, props.get(core.$theme, --text-mute-more), 'color') !default; 29$header--label-color: props.def(
30 --o-side-nav--header--label-color,
31 props.get(core.$theme, --text-mute-more),
32 "color"
33) !default;
18 34
19$item--hover--bg-color: props.def(--o-side-nav--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 35$item--hover--bg-color: props.def(
20$item--hover--label-color: props.def(--o-side-nav--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default; 36 --o-side-nav--item--hover--bg-color,
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;
21 45
22$item--active--bg-color: props.def(--o-side-nav--item--active--bg-color, props.get(core.$theme, --border), 'color') !default; 46$item--active--bg-color: props.def(
23$item--active--label-color: props.def(--o-side-nav--item--active--label-color, props.get(core.$theme, --heading), 'color') !default; 47 --o-side-nav--item--active--bg-color,
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;
24 56
25$item--disabled--label-color: props.def(--o-side-nav--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 57$item--disabled--label-color: props.def(
58 --o-side-nav--item--disabled--label-color,
59 props.get(core.$theme, --text-disabled),
60 "color"
61) !default;
26 62
27$item--key-focus--border-color: props.def(--o-side-nav--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 63$item--key-focus--border-color: props.def(
28$item--key-focus--outline-color: props.def(--o-side-nav--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 64 --o-side-nav--item--key-focus--border-color,
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 fe8fe26..8885929 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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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 dfe628f..66a11e8 100644
--- a/src/objects/_status-indicator.vars.scss
+++ b/src/objects/_status-indicator.vars.scss
@@ -1,26 +1,32 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-status-indicator--default, props.get(core.$theme, --border-strong), 'color') !default; 8$default: props.def(
9$primary: props.def(--o-status-indicator--primary, props.get(core.$theme, --text), 'color') !default; 9 --o-status-indicator--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;
10 18
11$themes-config: ( 19$themes-config: (
12 accent: --accent, 20 accent: --accent,
13 positive: --positive, 21 positive: --positive,
14 negative: --negative, 22 negative: --negative,
15 warning: --warning, 23 warning: --warning,
16) !default; 24) !default;
17 25
18$themes: props.def(--o-status-indicator, (), 'color'); 26$themes: props.def(--o-status-indicator, (), "color");
19 27
20@each $theme, $key in $themes-config { 28@each $theme, $key in $themes-config {
21 @if $theme != --base { 29 @if $theme != --base {
22 $themes: props.merge($themes, ( 30 $themes: props.merge($themes, (--#{$theme}: props.get(core.$theme, $key, --700)));
23 --#{$theme}: props.get(core.$theme, $key, --700),
24 ));
25 } 31 }
26} 32}
diff --git a/src/objects/_switch.scss b/src/objects/_switch.scss
index 0ef95e6..c1f7411 100644
--- a/src/objects/_switch.scss
+++ b/src/objects/_switch.scss
@@ -1,73 +1,79 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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: 18 margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset))
19 calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) 19 calc(
20 calc(props.get(vars.$spacing-sibling) - 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(
21 vars.$key-focus--border-offset
22 )
23 );
21 24
22 @include bem.elem('indicator') { 25 @include bem.elem("indicator") {
23 display: inline-block; 26 display: inline-block;
24 flex: 0 0 auto; 27 flex: 0 0 auto;
25 inline-size: props.get(vars.$inline-size); 28 inline-size: props.get(vars.$inline-size);
26 block-size: props.get(vars.$block-size); 29 block-size: props.get(vars.$block-size);
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)); 30 margin-block-start: calc(
28 vertical-align: top; 31 0.5em * props.get(core.$font--standard--line-height) - 0.5 *
29 background-color: props.get(vars.$track-bg-color); 32 props.get(vars.$block-size) - props.get(vars.$key-focus--border-offset)
30 background-clip: padding-box; 33 );
31 border: props.get(vars.$key-focus--border-offset) solid transparent; 34 vertical-align: top;
32 border-radius: 2em; 35 background-color: props.get(vars.$track-bg-color);
33 transition: background-color .2s ease; 36 background-clip: padding-box;
37 border: props.get(vars.$key-focus--border-offset) solid transparent;
38 border-radius: 2em;
39 transition: background-color 0.2s ease;
34 40
35 &::after { 41 &::after {
36 display: block; 42 display: block;
37 inline-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); 43 inline-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)); 44 block-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width));
39 content: ''; 45 content: "";
40 background-color: props.get(vars.$handle-bg-color); 46 background-color: props.get(vars.$handle-bg-color);
41 border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color); 47 border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color);
42 border-radius: props.get(vars.$inline-size); 48 border-radius: props.get(vars.$inline-size);
43 transition: transform .2s ease; 49 transition: transform 0.2s ease;
44 } 50 }
45 } 51 }
46 52
47 @include bem.elem('label') { 53 @include bem.elem("label") {
48 margin-inline-start: props.get(vars.$label-gap); 54 margin-inline-start: props.get(vars.$label-gap);
49 } 55 }
50 56
51 @include bem.elem('native') { 57 @include bem.elem("native") {
52 position: absolute; 58 position: absolute;
53 inset-block-start: 0; 59 inset-block-start: 0;
54 inset-inline-start: 0; 60 inset-inline-start: 0;
55 z-index: -1; 61 z-index: -1;
56 inline-size: 100%; 62 inline-size: 100%;
57 block-size: 100%; 63 block-size: 100%;
58 padding: 0; 64 padding: 0;
59 margin: 0; 65 margin: 0;
60 overflow: hidden; 66 overflow: hidden;
61 appearance: none; 67 appearance: none;
62 border-radius: props.get(vars.$rounding); 68 border-radius: props.get(vars.$rounding);
63 69
64 &:hover, 70 &:hover,
65 &:focus-visible { 71 &:focus-visible {
66 @include bem.sibling-elem('label') { 72 @include bem.sibling-elem("label") {
67 color: props.get(vars.$hover--label-color); 73 color: props.get(vars.$hover--label-color);
68 } 74 }
69 75
70 @include bem.sibling-elem('indicator') { 76 @include bem.sibling-elem("indicator") {
71 &::after { 77 &::after {
72 border-color: props.get(vars.$hover--handle-border-color); 78 border-color: props.get(vars.$hover--handle-border-color);
73 } 79 }
@@ -75,18 +81,23 @@
75 } 81 }
76 82
77 &:checked { 83 &:checked {
78 @include bem.sibling-elem('indicator') { 84 @include bem.sibling-elem("indicator") {
79 background-color: props.get(vars.$handle-border-color); 85 background-color: props.get(vars.$handle-border-color);
80 86
81 &::after { 87 &::after {
82 border-color: props.get(vars.$handle-border-color); 88 border-color: props.get(vars.$handle-border-color);
83 transform: translate(calc(props.get(vars.$inline-size) - props.get(vars.$block-size) + .5px), 0); 89 transform: translate(
90 calc(
91 props.get(vars.$inline-size) - props.get(vars.$block-size) + 0.5px
92 ),
93 0
94 );
84 } 95 }
85 } 96 }
86 97
87 &:hover, 98 &:hover,
88 &:focus-visible { 99 &:focus-visible {
89 @include bem.sibling-elem('indicator') { 100 @include bem.sibling-elem("indicator") {
90 background-color: props.get(vars.$hover--handle-border-color); 101 background-color: props.get(vars.$hover--handle-border-color);
91 102
92 &::after { 103 &::after {
@@ -97,21 +108,21 @@
97 } 108 }
98 109
99 &:disabled { 110 &:disabled {
100 @include bem.sibling-elem('label') { 111 @include bem.sibling-elem("label") {
101 color: props.get(vars.$disabled--label-color); 112 color: props.get(vars.$disabled--label-color);
102 } 113 }
103 114
104 @include bem.sibling-elem('indicator') { 115 @include bem.sibling-elem("indicator") {
105 background-color: props.get(vars.$disabled--track-bg-color); 116 background-color: props.get(vars.$disabled--track-bg-color);
106 117
107 &::after { 118 &::after {
108 background-color: props.get(vars.$disabled--handle-bg-color); 119 background-color: props.get(vars.$disabled--handle-bg-color);
109 border-color: props.get(vars.$disabled--handle-border-color); 120 border-color: props.get(vars.$disabled--handle-border-color);
110 } 121 }
111 } 122 }
112 123
113 &:checked { 124 &:checked {
114 @include bem.sibling-elem('indicator') { 125 @include bem.sibling-elem("indicator") {
115 background-color: props.get(vars.$disabled--handle-border-color); 126 background-color: props.get(vars.$disabled--handle-border-color);
116 127
117 &::after { 128 &::after {
@@ -122,32 +133,33 @@
122 } 133 }
123 134
124 &:focus-visible { 135 &:focus-visible {
125 @include bem.sibling-elem('label') { 136 @include bem.sibling-elem("label") {
126 color: props.get(vars.$key-focus--label-color); 137 color: props.get(vars.$key-focus--label-color);
127 } 138 }
128 139
129 @include bem.sibling-elem('indicator') { 140 @include bem.sibling-elem("indicator") {
130 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 141 outline: props.get(vars.$key-focus--border-color) solid
131 box-shadow: 142 props.get(vars.$key-focus--border-width);
132 0 143 box-shadow: 0 0 0
133 0 144 calc(
134 0 145 props.get(vars.$key-focus--border-width) +
135 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 146 props.get(vars.$key-focus--outline-width)
147 )
136 props.get(vars.$key-focus--outline-color); 148 props.get(vars.$key-focus--outline-color);
137 } 149 }
138 } 150 }
139 } 151 }
140 152
141 @include bem.modifier('standalone') { 153 @include bem.modifier("standalone") {
142 @include bem.elem('indicator') { 154 @include bem.elem("indicator") {
143 margin-block-start: 0; 155 margin-block-start: 0;
144 } 156 }
145 } 157 }
146 158
147 @include bem.modifier('accent') { 159 @include bem.modifier("accent") {
148 @include bem.elem('native') { 160 @include bem.elem("native") {
149 &:checked { 161 &:checked {
150 @include bem.sibling-elem('indicator') { 162 @include bem.sibling-elem("indicator") {
151 background-color: props.get(vars.$accent--handle-border-color); 163 background-color: props.get(vars.$accent--handle-border-color);
152 164
153 &::after { 165 &::after {
@@ -157,7 +169,7 @@
157 169
158 &:hover, 170 &:hover,
159 &:focus-visible { 171 &:focus-visible {
160 @include bem.sibling-elem('indicator') { 172 @include bem.sibling-elem("indicator") {
161 background-color: props.get(vars.$accent--hover--handle-border-color); 173 background-color: props.get(vars.$accent--hover--handle-border-color);
162 174
163 &::after { 175 &::after {
@@ -168,12 +180,12 @@
168 } 180 }
169 181
170 &:disabled { 182 &:disabled {
171 @include bem.sibling-elem('label') { 183 @include bem.sibling-elem("label") {
172 color: props.get(vars.$disabled--label-color); 184 color: props.get(vars.$disabled--label-color);
173 } 185 }
174 186
175 &:checked { 187 &:checked {
176 @include bem.sibling-elem('indicator') { 188 @include bem.sibling-elem("indicator") {
177 background-color: props.get(vars.$disabled--handle-border-color); 189 background-color: props.get(vars.$disabled--handle-border-color);
178 190
179 &::after { 191 &::after {
diff --git a/src/objects/_switch.vars.scss b/src/objects/_switch.vars.scss
index 761cacd..6f56ec7 100644
--- a/src/objects/_switch.vars.scss
+++ b/src/objects/_switch.vars.scss
@@ -1,36 +1,101 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-switch--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 14$key-focus--border-width: props.def(
15$key-focus--border-offset: props.def(--o-switch--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 15 --o-switch--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; 16 props.get(core.$key-focus--border-width)
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;
17 26
18$track-bg-color: props.def(--o-switch--track-bg-color, props.get(core.$theme, --border), 'color') !default; 27$track-bg-color: props.def(
19$handle-border-color: props.def(--o-switch--handle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; 28 --o-switch--track-bg-color,
20$handle-bg-color: props.def(--o-switch--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default; 29 props.get(core.$theme, --border),
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;
21 42
22$hover--label-color: props.def(--o-switch--hover--label-color, props.get(core.$theme, --heading), 'color') !default; 43$hover--label-color: props.def(
23$hover--handle-border-color: props.def(--o-switch--hover--handle-border-color, props.get(core.$theme, --text-mute), 'color') !default; 44 --o-switch--hover--label-color,
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;
24 53
25$accent--handle-border-color: props.def(--o-switch--accent--handle-border-color, props.get(core.$theme, --accent, --900), 'color') !default; 54$accent--handle-border-color: props.def(
55 --o-switch--accent--handle-border-color,
56 props.get(core.$theme, --accent, --900),
57 "color"
58) !default;
26 59
27$accent--hover--handle-border-color: props.def(--o-switch--accent--hover--handle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; 60$accent--hover--handle-border-color: props.def(
61 --o-switch--accent--hover--handle-border-color,
62 props.get(core.$theme, --accent, --1000),
63 "color"
64) !default;
28 65
29$disabled--label-color: props.def(--o-switch--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; 66$disabled--label-color: props.def(
30$disabled--track-bg-color: props.def(--o-switch--disabled--track-bg-color, props.get(core.$theme, --border), 'color') !default; 67 --o-switch--disabled--label-color,
31$disabled--handle-border-color: props.def(--o-switch--disabled--handle-border-color, props.get(core.$theme, --border-strong), 'color') !default; 68 props.get(core.$theme, --text-disabled),
32$disabled--handle-bg-color: props.def(--o-switch--disabled--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default; 69 "color"
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;
33 86
34$key-focus--label-color: props.def(--o-switch--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; 87$key-focus--label-color: props.def(
35$key-focus--border-color: props.def(--o-switch--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 88 --o-switch--key-focus--label-color,
36$key-focus--outline-color: props.def(--o-switch--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 89 props.get(core.$theme, --focus, --text),
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 d43208f..02519f9 100644
--- a/src/objects/_tabbar.scss
+++ b/src/objects/_tabbar.scss
@@ -1,75 +1,77 @@
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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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(.5 * props.get(vars.$spacing)); 49 padding-inline: calc(0.5 * props.get(vars.$spacing));
50 margin-inline: calc(-.5 * props.get(vars.$spacing)); 50 margin-inline: calc(-0.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(-1 * props.get(vars.$tab--pad-i) + .5 * props.get(vars.$spacing)); 57 inset-inline: calc(
58 z-index: -10; 58 -1 * props.get(vars.$tab--pad-i) + 0.5 * props.get(vars.$spacing)
59 block-size: 1.5em; 59 );
60 content: ''; 60 z-index: -10;
61 border-radius: props.get(vars.$rounding); 61 block-size: 1.5em;
62 transform: translateY(-50%); 62 content: "";
63 border-radius: props.get(vars.$rounding);
64 transform: translateY(-50%);
63 } 65 }
64 66
65 &::after { 67 &::after {
66 position: absolute; 68 position: absolute;
67 inset-block-end: 0; 69 inset-block-end: 0;
68 inset-inline: calc(.5 * props.get(vars.$spacing)); 70 inset-inline: calc(0.5 * props.get(vars.$spacing));
69 z-index: 10; 71 z-index: 10;
70 display: none; 72 display: none;
71 block-size: props.get(vars.$indicator--width); 73 block-size: props.get(vars.$indicator--width);
72 content: ''; 74 content: "";
73 background-color: props.get(vars.$tab--selected--text-color); 75 background-color: props.get(vars.$tab--selected--text-color);
74 } 76 }
75 77
@@ -83,21 +85,25 @@
83 85
84 &:focus-visible { 86 &:focus-visible {
85 &::before { 87 &::before {
86 color: props.get(vars.$key-focus--text-color); 88 color: props.get(vars.$key-focus--text-color);
87 text-decoration: none; 89 text-decoration: none;
88 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 90 outline: props.get(vars.$key-focus--border-color) solid
91 props.get(vars.$key-focus--border-width);
89 box-shadow: 0 0 0 92 box-shadow: 0 0 0
90 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) 93 calc(
94 props.get(vars.$key-focus--border-width) +
95 props.get(vars.$key-focus--outline-width)
96 )
91 props.get(vars.$key-focus--outline-color); 97 props.get(vars.$key-focus--outline-color);
92 } 98 }
93 } 99 }
94 } 100 }
95 101
96 @include bem.next-twin-elem { 102 @include bem.next-twin-elem {
97 margin-inline-start: calc(.5 * props.get(vars.$spacing)); 103 margin-inline-start: calc(0.5 * props.get(vars.$spacing));
98 } 104 }
99 105
100 @include bem.is('selected') { 106 @include bem.is("selected") {
101 color: props.get(vars.$tab--selected--text-color); 107 color: props.get(vars.$tab--selected--text-color);
102 108
103 &::after { 109 &::after {
@@ -106,13 +112,13 @@
106 } 112 }
107 } 113 }
108 114
109 @include bem.modifier('accent') { 115 @include bem.modifier("accent") {
110 @include bem.elem('tab') { 116 @include bem.elem("tab") {
111 &::after { 117 &::after {
112 background-color: props.get(vars.$tab--accent--text-color); 118 background-color: props.get(vars.$tab--accent--text-color);
113 } 119 }
114 120
115 @include bem.is('selected') { 121 @include bem.is("selected") {
116 color: props.get(vars.$tab--accent--text-color); 122 color: props.get(vars.$tab--accent--text-color);
117 } 123 }
118 } 124 }
diff --git a/src/objects/_tabbar.vars.scss b/src/objects/_tabbar.vars.scss
index d9cc53e..d26f302 100644
--- a/src/objects/_tabbar.vars.scss
+++ b/src/objects/_tabbar.vars.scss
@@ -1,26 +1,66 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-tabbar--indicator--width, props.get(core.$border-width--medium)) !default; 12$indicator--width: props.def(
13 --o-tabbar--indicator--width,
14 props.get(core.$border-width--medium)
15) !default;
13 16
14$key-focus--border-width: props.def(--o-tabbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 17$key-focus--border-width: props.def(
15$key-focus--border-offset: props.def(--o-tabbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 18 --o-tabbar--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; 19 props.get(core.$key-focus--border-width)
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;
17 29
18$tab--text-color: props.def(--o-tabbar--tab--text-color, props.get(core.$theme, --text-mute), 'color') !default; 30$tab--text-color: props.def(
19$tab--selected--text-color: props.def(--o-tabbar--tab--selected--text-color, props.get(core.$theme, --heading), 'color') !default; 31 --o-tabbar--tab--text-color,
20$tab--accent--text-color: props.def(--o-tabbar--tab--accent--text-color, props.get(core.$theme, --accent, --1100), 'color') !default; 32 props.get(core.$theme, --text-mute),
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;
21 45
22$railing--bg-color: props.def(--o-tabbar--railing--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 46$railing--bg-color: props.def(
47 --o-tabbar--railing--bg-color,
48 props.get(core.$theme, --border-mute),
49 "color"
50) !default;
23 51
24$key-focus--text-color: props.def(--o-tabbar--key-focus--text-color, props.get(core.$theme, --focus, --text), 'color') !default; 52$key-focus--text-color: props.def(
25$key-focus--border-color: props.def(--o-tabbar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 53 --o-tabbar--key-focus--text-color,
26$key-focus--outline-color: props.def(--o-tabbar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 54 props.get(core.$theme, --focus, --text),
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 effa61f..a985f78 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/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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 7c5683c..e00010f 100644
--- a/src/objects/_table.vars.scss
+++ b/src/objects/_table.vars.scss
@@ -1,25 +1,59 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-table--heading--font-family, props.get(core.$font--standard--family)) !default; 10$heading--font-family: props.def(
11$heading--font-size: props.def(--o-table--heading--font-size, props.get(core.$font-size--50)) !default; 11 --o-table--heading--font-family,
12$heading--font-weight: props.def(--o-table--heading--font-weight, bold) !default; 12 props.get(core.$font--standard--family)
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;
13$heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default; 19$heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default;
14$heading--letter-spacing: props.def(--o-table--heading--letter-spacing, .5px) !default; 20$heading--letter-spacing: props.def(--o-table--heading--letter-spacing, 0.5px) !default;
15 21
16$pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default; 22$pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default;
17 23
18$border-color: props.def(--o-table--border-color, props.get(core.$theme, --border), 'color') !default; 24$border-color: props.def(
19$heading-color: props.def(--o-table--heading-color, props.get(core.$theme, --heading), 'color') !default; 25 --o-table--border-color,
20$hover--bg-color: props.def(--o-table--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 26 props.get(core.$theme, --border),
21$active--bg-color: props.def(--o-table--active--bg-color, props.get(core.$theme, --border), 'color') !default; 27 "color"
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;
22 44
23$box--bg-color: props.def(--o-table--box--bg-color, props.get(core.$theme, --base, --50), 'color') !default; 45$box--bg-color: props.def(
24$box--hover--bg-color: props.def(--o-table--box--hover--bg-color, props.get(core.$theme, --bg-base), 'color') !default; 46 --o-table--box--bg-color,
25$box--active--bg-color: props.def(--o-table--box--active--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 47 props.get(core.$theme, --base, --50),
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 5a48df3..a8d3ec8 100644
--- a/src/objects/_text-field.scss
+++ b/src/objects/_text-field.scss
@@ -1,84 +1,91 @@
1@use 'sass:meta'; 1@use "sass:meta";
2@use 'pkg:iro-sass/src/bem'; 2@use "pkg:iro-sass/bem";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(props.get(vars.$border-width) - props.get(vars.$focus--border-width)); 10 $focus-border-offset: calc(
11 props.get(vars.$border-width) - props.get(vars.$focus--border-width)
12 );
11 13
12 @include bem.sibling-elem('bg') { 14 @include bem.sibling-elem("bg") {
13 inset-block: $focus-border-offset; 15 inset-block: $focus-border-offset;
14 inset-inline: $focus-border-offset; 16 inset-inline: $focus-border-offset;
15 border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color); 17 border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color);
16 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 18 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
17 } 19 }
18 20
19 &:hover { 21 &:hover {
20 @include bem.sibling-elem('bg') { 22 @include bem.sibling-elem("bg") {
21 border-color: props.get(vars.$error--hover--border-color); 23 border-color: props.get(vars.$error--hover--border-color);
22 } 24 }
23 } 25 }
24 26
25 &:focus { 27 &:focus {
26 @include bem.sibling-elem('bg') { 28 @include bem.sibling-elem("bg") {
27 border-color: props.get(vars.$error--focus--border-color); 29 border-color: props.get(vars.$error--focus--border-color);
28 } 30 }
29 } 31 }
30} 32}
31 33
32@mixin -keyboard-focus { 34@mixin -keyboard-focus {
33 @include bem.sibling-elem('bg') { 35 @include bem.sibling-elem("bg") {
34 outline: props.get(vars.$key-focus--outline-color) solid props.get(vars.$key-focus--border-width); 36 outline: props.get(vars.$key-focus--outline-color) solid
35 border-color: props.get(vars.$key-focus--border-color); 37 props.get(vars.$key-focus--border-width);
38 border-color: props.get(vars.$key-focus--border-color);
36 //outline-offset: props.get(vars.$focus --border); 39 //outline-offset: props.get(vars.$focus --border);
37 } 40 }
38} 41}
39 42
40@mixin styles { 43@mixin styles {
41 @include materialize-at-root(meta.module-variables('vars')); 44 @include materialize-at-root(meta.module-variables("vars"));
42 45
43 @include bem.object('text-field') { 46 @include bem.object("text-field") {
44 $focus-border-offset: calc(props.get(vars.$border-width) - props.get(vars.$focus--border-width)); 47 $focus-border-offset: calc(
48 props.get(vars.$border-width) - props.get(vars.$focus--border-width)
49 );
45 50
46 position: relative; 51 position: relative;
47 min-inline-size: 0; 52 min-inline-size: 0;
48 background-color: props.get(vars.$bg-color); 53 background-color: props.get(vars.$bg-color);
49 border-radius: props.get(vars.$rounding); 54 border-radius: props.get(vars.$rounding);
50 55
51 @include bem.elem('bg') { 56 @include bem.elem("bg") {
52 position: absolute; 57 position: absolute;
53 inset-block: 0; 58 inset-block: 0;
54 inset-inline: 0; 59 inset-inline: 0;
55 display: block; 60 display: block;
56 pointer-events: none; 61 pointer-events: none;
57 border: props.get(vars.$border-width) solid props.get(vars.$border-color); 62 border: props.get(vars.$border-width) solid props.get(vars.$border-color);
58 border-radius: props.get(vars.$rounding); 63 border-radius: props.get(vars.$rounding);
59 } 64 }
60 65
61 @include bem.elem('native') { 66 @include bem.elem("native") {
62 box-sizing: border-box; 67 box-sizing: border-box;
63 inline-size: 100%; 68 inline-size: 100%;
64 padding-block: calc(props.get(vars.$pad-b) - .5em * (props.get(vars.$line-height) - 1)); 69 padding-block: calc(
65 padding-inline: props.get(vars.$pad-i); 70 props.get(vars.$pad-b) - 0.5em * (props.get(vars.$line-height) - 1)
66 font: inherit; 71 );
67 line-height: props.get(vars.$line-height); 72 padding-inline: props.get(vars.$pad-i);
68 color: props.get(vars.$text-color); 73 font: inherit;
69 appearance: none; 74 line-height: props.get(vars.$line-height);
70 resize: none; 75 color: props.get(vars.$text-color);
76 appearance: none;
77 resize: none;
71 background-color: transparent; 78 background-color: transparent;
72 border: 1px solid transparent; 79 border: 1px solid transparent;
73 80
74 &::placeholder { 81 &::placeholder {
75 font-style: italic; 82 font-style: italic;
76 color: props.get(vars.$placeholder-color); 83 color: props.get(vars.$placeholder-color);
77 opacity: 1; 84 opacity: 1;
78 } 85 }
79 86
80 &:hover { 87 &:hover {
81 @include bem.sibling-elem('bg') { 88 @include bem.sibling-elem("bg") {
82 border-color: props.get(vars.$hover--border-color); 89 border-color: props.get(vars.$hover--border-color);
83 } 90 }
84 } 91 }
@@ -86,10 +93,11 @@
86 &:focus { 93 &:focus {
87 outline: 0; 94 outline: 0;
88 95
89 @include bem.sibling-elem('bg') { 96 @include bem.sibling-elem("bg") {
90 inset-block: $focus-border-offset; 97 inset-block: $focus-border-offset;
91 inset-inline: $focus-border-offset; 98 inset-inline: $focus-border-offset;
92 border: props.get(vars.$focus--border-width) solid props.get(vars.$focus--border-color); 99 border: props.get(vars.$focus--border-width) solid
100 props.get(vars.$focus--border-color);
93 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 101 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
94 } 102 }
95 } 103 }
@@ -104,46 +112,49 @@
104 } 112 }
105 } 113 }
106 114
107 @include bem.modifier('extended') { 115 @include bem.modifier("extended") {
108 padding: props.get(vars.$extended--pad); 116 padding: props.get(vars.$extended--pad);
109 117
110 @include bem.multi('&', 'elem' 'bg') { 118 @include bem.multi("&", "elem" "bg") {
111 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad)); 119 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad));
112 } 120 }
113 121
114 @include bem.elem('native') { 122 @include bem.elem("native") {
115 &:focus { 123 &:focus {
116 @include bem.sibling-elem('bg') { 124 @include bem.sibling-elem("bg") {
117 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad) - $focus-border-offset); 125 border-radius: calc(
126 props.get(vars.$rounding) + props.get(vars.$extended--pad) -
127 $focus-border-offset
128 );
118 } 129 }
119 } 130 }
120 } 131 }
121 } 132 }
122 133
123 @include bem.modifier('pill') { 134 @include bem.modifier("pill") {
124 @include bem.multi('&', 'elem' 'bg') { 135 @include bem.multi("&", "elem" "bg") {
125 border-radius: 100em; 136 border-radius: 100em;
126 } 137 }
127 138
128 @include bem.elem('native') { 139 @include bem.elem("native") {
129 padding-inline: props.get(vars.$pad-i-pill); 140 padding-inline: props.get(vars.$pad-i-pill);
130 141
131 &:focus { 142 &:focus {
132 @include bem.sibling-elem('bg') { 143 @include bem.sibling-elem("bg") {
133 border-radius: 100em; 144 border-radius: 100em;
134 } 145 }
135 } 146 }
136 } 147 }
137 148
138 @include bem.modifier('extended') { 149 @include bem.modifier("extended") {
139 @include bem.elem('native') { 150 @include bem.elem("native") {
140 padding-inline: props.get(vars.$pad-i); 151 padding-inline: props.get(vars.$pad-i);
141 } 152 }
142 } 153 }
143 } 154 }
144 155
145 @include bem.is('invalid') { 156 @include bem.is("invalid") {
146 @include bem.elem('native') { 157 @include bem.elem("native") {
147 @include -invalid; 158 @include -invalid;
148 159
149 &:focus-visible { 160 &:focus-visible {
@@ -152,10 +163,10 @@
152 } 163 }
153 } 164 }
154 165
155 @include bem.is('disabled') { 166 @include bem.is("disabled") {
156 background-color: props.get(vars.$disabled--bg-color); 167 background-color: props.get(vars.$disabled--bg-color);
157 168
158 @include bem.elem('native') { 169 @include bem.elem("native") {
159 color: props.get(vars.$disabled--text-color); 170 color: props.get(vars.$disabled--text-color);
160 171
161 &::placeholder { 172 &::placeholder {
@@ -163,21 +174,21 @@
163 } 174 }
164 } 175 }
165 176
166 @include bem.elem('bg') { 177 @include bem.elem("bg") {
167 border-color: props.get(vars.$disabled--border-color); 178 border-color: props.get(vars.$disabled--border-color);
168 } 179 }
169 180
170 @include bem.is('invalid') { 181 @include bem.is("invalid") {
171 @include bem.elem('native') { 182 @include bem.elem("native") {
172 @include bem.sibling-elem('bg') { 183 @include bem.sibling-elem("bg") {
173 border-color: props.get(vars.$disabled--border-color); 184 border-color: props.get(vars.$disabled--border-color);
174 } 185 }
175 } 186 }
176 } 187 }
177 188
178 @include bem.elem('native') { 189 @include bem.elem("native") {
179 &:invalid { 190 &:invalid {
180 @include bem.sibling-elem('bg') { 191 @include bem.sibling-elem("bg") {
181 border-color: props.get(vars.$disabled--border-color); 192 border-color: props.get(vars.$disabled--border-color);
182 } 193 }
183 } 194 }
diff --git a/src/objects/_text-field.vars.scss b/src/objects/_text-field.vars.scss
index ef06822..9a2a16a 100644
--- a/src/objects/_text-field.vars.scss
+++ b/src/objects/_text-field.vars.scss
@@ -1,39 +1,108 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'pkg:iro-sass/src/props'; 2@use "pkg:iro-sass/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(--o-text-field--border-width, props.get(core.$border-width--thin)) !default; 9$border-width: props.def(
10$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default; 10 --o-text-field--border-width,
11 props.get(core.$border-width--thin)
12) !default;
13$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default;
11 14
12$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default; 15$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default;
13 16
14$focus--border-width: props.def(--o-text-field--focus--border-width, props.get(core.$border-width--medium)) !default; 17$focus--border-width: props.def(
18 --o-text-field--focus--border-width,
19 props.get(core.$border-width--medium)
20) !default;
15 21
16$key-focus--border-width: props.def(--o-text-field--key-focus--border-width, props.get(core.$key-focus--outline-width)) !default; 22$key-focus--border-width: props.def(
23 --o-text-field--key-focus--border-width,
24 props.get(core.$key-focus--outline-width)
25) !default;
17 26
18$bg-color: props.def(--o-text-field--bg-color, props.get(core.$theme, --base, --50), 'color') !default; 27$bg-color: props.def(
19$placeholder-color: props.def(--o-text-field--placeholder-color, props.get(core.$theme, --text-mute-more), 'color') !default; 28 --o-text-field--bg-color,
20$text-color: props.def(--o-text-field--text-color, props.get(core.$theme, --text), 'color') !default; 29 props.get(core.$theme, --base, --50),
21$border-color: props.def(--o-text-field--border-color, props.get(core.$theme, --border-strong), 'color') !default; 30 "color"
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;
22 47
23$hover--border-color: props.def(--o-text-field--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default; 48$hover--border-color: props.def(
49 --o-text-field--hover--border-color,
50 props.get(core.$theme, --text-mute-more),
51 "color"
52) !default;
24 53
25$focus--border-color: props.def(--o-text-field--focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 54$focus--border-color: props.def(
55 --o-text-field--focus--border-color,
56 props.get(core.$theme, --focus, --border),
57 "color"
58) !default;
26 59
27$key-focus--border-color: props.def(--o-text-field--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 60$key-focus--border-color: props.def(
28$key-focus--outline-color: props.def(--o-text-field--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 61 --o-text-field--key-focus--border-color,
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;
29 70
30$error--border-color: props.def(--o-text-field--error--border-color, props.get(core.$theme, --negative, --700), 'color') !default; 71$error--border-color: props.def(
72 --o-text-field--error--border-color,
73 props.get(core.$theme, --negative, --700),
74 "color"
75) !default;
31 76
32$error--hover--border-color: props.def(--o-text-field--error--hover--border-color, props.get(core.$theme, --negative, --900), 'color') !default; 77$error--hover--border-color: props.def(
78 --o-text-field--error--hover--border-color,
79 props.get(core.$theme, --negative, --900),
80 "color"
81) !default;
33 82
34$error--focus--border-color: props.def(--o-text-field--error--focus--border-color, props.get(core.$theme, --negative, --900), 'color') !default; 83$error--focus--border-color: props.def(
84 --o-text-field--error--focus--border-color,
85 props.get(core.$theme, --negative, --900),
86 "color"
87) !default;
35 88
36$disabled--bg-color: props.def(--o-text-field--disabled--bg-color, props.get(core.$theme, --border-mute), 'color') !default; 89$disabled--bg-color: props.def(
37$disabled--placeholder-color: props.def(--o-text-field--disabled--placeholder-color, props.get(core.$theme, --text-disabled), 'color') !default; 90 --o-text-field--disabled--bg-color,
38$disabled--text-color: props.def(--o-text-field--disabled--text-color, props.get(core.$theme, --text-disabled), 'color') !default; 91 props.get(core.$theme, --border-mute),
39$disabled--border-color: props.def(--o-text-field--disabled--border-color, props.get(core.$theme, --border-mute), 'color') !default; 92 "color"
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 9925dd0..c7a9791 100644
--- a/src/objects/_thumbnail.scss
+++ b/src/objects/_thumbnail.scss
@@ -1,65 +1,66 @@
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/src/bem'; 4@use "pkg:iro-sass/bem";
5@use 'pkg:iro-sass/src/props'; 5@use "pkg:iro-sass/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 props.get(vars.$key-focus--border-width); 54 outline: props.get(vars.$key-focus--border-color) solid
55 props.get(vars.$key-focus--border-width);
55 outline-offset: 0; 56 outline-offset: 0;
56 border: props.get(vars.$key-focus--border-offset) solid transparent; 57 border: props.get(vars.$key-focus--border-offset) solid transparent;
57 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); 58 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
58 box-shadow: 59 box-shadow: 0 0 0
59 0 60 calc(
60 0 61 props.get(vars.$key-focus--outline-width) +
61 0 62 props.get(vars.$key-focus--border-width)
62 calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width)) 63 )
63 props.get(vars.$key-focus--outline-color); 64 props.get(vars.$key-focus--outline-color);
64 } 65 }
65 66
@@ -73,18 +74,18 @@
73 outline-color: props.get(vars.$static-themes, $theme, --hover, --border); 74 outline-color: props.get(vars.$static-themes, $theme, --hover, --border);
74 } 75 }
75 76
76 @include bem.is('selected') { 77 @include bem.is("selected") {
77 border-color: props.get(vars.$static-themes, $theme, --selected, --border); 78 border-color: props.get(vars.$static-themes, $theme, --selected, --border);
78 } 79 }
79 80
80 &:focus-visible { 81 &:focus-visible {
81 outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border); 82 outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border);
82 border-color: transparent; 83 border-color: transparent;
83 box-shadow: 84 box-shadow: 0 0 0
84 0 85 calc(
85 0 86 props.get(vars.$key-focus--outline-width) +
86 0 87 props.get(vars.$key-focus--border-width)
87 calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width)) 88 )
88 props.get(vars.$static-themes, $theme, --key-focus, --outline); 89 props.get(vars.$static-themes, $theme, --key-focus, --outline);
89 } 90 }
90 } 91 }
diff --git a/src/objects/_thumbnail.vars.scss b/src/objects/_thumbnail.vars.scss
index a5625fc..737a626 100644
--- a/src/objects/_thumbnail.vars.scss
+++ b/src/objects/_thumbnail.vars.scss
@@ -1,51 +1,85 @@
1@use 'sass:map'; 1@use "sass:map";
2@use 'sass:string'; 2@use "sass:string";
3@use 'pkg:iro-sass/src/props'; 3@use "pkg:iro-sass/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(--o-thumbnail--selected--border-width, props.get(core.$border-width--medium)) !default; 11$selected--border-width: props.def(
12 --o-thumbnail--selected--border-width,
13 props.get(core.$border-width--medium)
14) !default;
12 15
13$key-focus--border-width: props.def(--o-thumbnail--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; 16$key-focus--border-width: props.def(
14$key-focus--border-offset: props.def(--o-thumbnail--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; 17 --o-thumbnail--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; 18 props.get(core.$key-focus--border-width)
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;
16 28
17$border-color: props.def(--o-thumbnail--border-color, props.get(core.$theme, --border-strong), 'color') !default; 29$border-color: props.def(
30 --o-thumbnail--border-color,
31 props.get(core.$theme, --border-strong),
32 "color"
33) !default;
18 34
19$hover--border-color: props.def(--o-thumbnail--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default; 35$hover--border-color: props.def(
36 --o-thumbnail--hover--border-color,
37 props.get(core.$theme, --text-mute-more),
38 "color"
39) !default;
20 40
21$selected--border-color: props.def(--o-thumbnail--selected--border-color, props.get(core.$theme, --heading), 'color') !default; 41$selected--border-color: props.def(
42 --o-thumbnail--selected--border-color,
43 props.get(core.$theme, --heading),
44 "color"
45) !default;
22 46
23$key-focus--border-color: props.def(--o-thumbnail--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 47$key-focus--border-color: props.def(
24$key-focus--outline-color: props.def(--o-thumbnail--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 48 --o-thumbnail--key-focus--border-color,
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;
25 57
26$size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), 'md') !default; 58$size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), "md") !default;
27 59
28$static-themes: props.def(--o-thumbnail, (), 'color'); 60$static-themes: props.def(--o-thumbnail, (), "color");
29 61
30@each $theme in map.keys(props.get(core.$transparent-colors)) { 62@each $theme in map.keys(props.get(core.$transparent-colors)) {
31 $thumbnail-theme: --static-#{string.slice($theme, 3)}; 63 $thumbnail-theme: --static-#{string.slice($theme, 3)};
32 64
33 $static-themes: props.merge($static-themes, ( 65 $static-themes: props.merge(
34 $thumbnail-theme: ( 66 $static-themes,
35 --border: props.get(core.$transparent-colors, $theme, --400), 67 (
68 $thumbnail-theme: (
69 --border: props.get(core.$transparent-colors, $theme, --400),
70 --hover: (
71 --border: props.get(core.$transparent-colors, $theme, --500),
72 ),
36 73
37 --hover: ( 74 --selected: (
38 --border: props.get(core.$transparent-colors, $theme, --500), 75 --border: props.get(core.$transparent-colors, $theme, --900),
39 ), 76 ),
40 77
41 --selected: ( 78 --key-focus: (
42 --border: props.get(core.$transparent-colors, $theme, --900), 79 --border: props.get(core.$transparent-colors, $theme, --900),
43 ), 80 --outline: props.get(core.$transparent-colors, $theme, --300),
44 81 ),
45 --key-focus: ( 82 ),
46 --border: props.get(core.$transparent-colors, $theme, --900),
47 --outline: props.get(core.$transparent-colors, $theme, --300),
48 ),
49 ) 83 )
50 )); 84 );
51} 85}