summaryrefslogtreecommitdiffstats
path: root/src/objects
diff options
context:
space:
mode:
Diffstat (limited to 'src/objects')
-rw-r--r--src/objects/_action-button.scss43
-rw-r--r--src/objects/_action-button.vars.scss16
-rw-r--r--src/objects/_card.scss115
-rw-r--r--src/objects/_card.vars.scss7
-rw-r--r--src/objects/_text-field.vars.scss2
5 files changed, 111 insertions, 72 deletions
diff --git a/src/objects/_action-button.scss b/src/objects/_action-button.scss
index 7863f50..f4a9a46 100644
--- a/src/objects/_action-button.scss
+++ b/src/objects/_action-button.scss
@@ -52,6 +52,35 @@
52 } 52 }
53 } 53 }
54 54
55 @include bem.modifier('static') {
56 color: props.get($theme, list.join($key, --quiet --hover --label-color)...);
57 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...);
58 border-color: transparent;
59 box-shadow: none;
60
61 &:link,
62 &:visited,
63 &:enabled {
64 color: props.get($theme, list.join($key, --quiet --hover --label-color)...);
65 background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...);
66 border-color: transparent;
67 box-shadow: none;
68
69 &:hover,
70 &:focus-visible {
71 color: props.get($theme, list.join($key, --quiet --active --label-color)...);
72 background-color: props.get($theme, list.join($key, --quiet --active --bg-color)...);
73 border-color: transparent;
74 }
75
76 &:active {
77 color: props.get($theme, list.join($key, --quiet --active --label-color)...);
78 background-color: props.get($theme, list.join($key, --quiet --active --bg-color)...);
79 border-color: transparent;
80 }
81 }
82 }
83
55 @include bem.modifier('quiet') { 84 @include bem.modifier('quiet') {
56 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...); 85 color: props.get($theme, list.join($key, --quiet --disabled --label-color)...);
57 background-color: transparent; 86 background-color: transparent;
@@ -80,11 +109,17 @@
80 } 109 }
81 } 110 }
82 111
83 @include bem.is('selected', 'badge') { 112 @include bem.is('selected') {
84 color: props.get($theme, list.join($key, --selected --disabled --label-color)...); 113 color: props.get($theme, list.join($key, --selected --disabled --label-color)...);
85 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); 114 background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...);
86 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...); 115 border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...);
87 116
117 @include bem.modifier('static') {
118 color: props.get($theme, list.join($key, --selected --label-color)...);
119 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
120 border-color: props.get($theme, list.join($key, --selected --border-color)...);
121 }
122
88 &:link, 123 &:link,
89 &:visited, 124 &:visited,
90 &:enabled { 125 &:enabled {
@@ -106,12 +141,6 @@
106 } 141 }
107 } 142 }
108 } 143 }
109
110 @include bem.is('badge') {
111 color: props.get($theme, list.join($key, --selected --label-color)...);
112 background-color: props.get($theme, list.join($key, --selected --bg-color)...);
113 border-color: props.get($theme, list.join($key, --selected --border-color)...);
114 }
115} 144}
116 145
117@mixin styles { 146@mixin styles {
diff --git a/src/objects/_action-button.vars.scss b/src/objects/_action-button.vars.scss
index 1a9be25..84bb415 100644
--- a/src/objects/_action-button.vars.scss
+++ b/src/objects/_action-button.vars.scss
@@ -5,28 +5,28 @@
5 5
6$line-height: props.def(--o-action-button--line-height, 1.4) !default; 6$line-height: props.def(--o-action-button--line-height, 1.4) !default;
7$border-width: props.def(--o-action-button--border-width, props.get(core.$border-width--thin)) !default; 7$border-width: props.def(--o-action-button--border-width, props.get(core.$border-width--thin)) !default;
8$rounding: props.def(--o-action-button--rounding, props.get(core.$rounding)) !default; 8$rounding: props.def(--o-action-button--rounding, props.get(core.$rounding--sm)) !default;
9 9
10$pad-i--sm: props.def(--o-action-button--sm--pad-i, props.get(core.$size--75)) !default; 10$pad-i--sm: props.def(--o-action-button--sm--pad-i, props.get(core.$size--75)) !default;
11$pad-i-label--sm: props.def(--o-action-button--sm--pad-i-label, props.get(core.$size--25)) !default; 11$pad-i-label--sm: props.def(--o-action-button--sm--pad-i-label, props.get(core.$size--25)) !default;
12$pad-i-pill--sm: props.def(--o-action-button--sm--pad-i-pill, props.get(core.$size--100)) !default; 12$pad-i-pill--sm: props.def(--o-action-button--sm--pad-i-pill, props.get(core.$size--115)) !default;
13$pad-b--sm: props.def(--o-action-button--sm--pad-b, props.get(core.$size--40)) !default; 13$pad-b--sm: props.def(--o-action-button--sm--pad-b, props.get(core.$size--40)) !default;
14$font-size--sm: props.def(--o-action-button--sm--font-size, props.get(core.$font-size--75)) !default; 14$font-size--sm: props.def(--o-action-button--sm--font-size, props.get(core.$font-size--75)) !default;
15 15
16$pad-i: props.def(--o-action-button--pad-i, props.get(core.$size--100)) !default; 16$pad-i: props.def(--o-action-button--pad-i, props.get(core.$size--115)) !default;
17$pad-i-label: props.def(--o-action-button--pad-i-label, props.get(core.$size--50)) !default; 17$pad-i-label: props.def(--o-action-button--pad-i-label, props.get(core.$size--40)) !default;
18$pad-i-pill: props.def(--o-action-button--pad-i-pill, props.get(core.$size--150)) !default; 18$pad-i-pill: props.def(--o-action-button--pad-i-pill, props.get(core.$size--150)) !default;
19$pad-b: props.def(--o-action-button--pad-b, props.get(core.$size--85)) !default; 19$pad-b: props.def(--o-action-button--pad-b, props.get(core.$size--85)) !default;
20$font-size: props.def(--o-action-button--font-size, props.get(core.$font-size--100)) !default; 20$font-size: props.def(--o-action-button--font-size, props.get(core.$font-size--100)) !default;
21 21
22$pad-i--lg: props.def(--o-action-button--lg--pad-i, props.get(core.$size--150)) !default; 22$pad-i--lg: props.def(--o-action-button--lg--pad-i, props.get(core.$size--160)) !default;
23$pad-i-label--lg: props.def(--o-action-button--lg--pad-i-label, props.get(core.$size--75)) !default; 23$pad-i-label--lg: props.def(--o-action-button--lg--pad-i-label, props.get(core.$size--65)) !default;
24$pad-i-pill--lg: props.def(--o-action-button--lg--pad-i-pill, props.get(core.$size--175)) !default; 24$pad-i-pill--lg: props.def(--o-action-button--lg--pad-i-pill, props.get(core.$size--175)) !default;
25$pad-b--lg: props.def(--o-action-button--lg--pad-b, props.get(core.$size--115)) !default; 25$pad-b--lg: props.def(--o-action-button--lg--pad-b, props.get(core.$size--115)) !default;
26$font-size--lg: props.def(--o-action-button--lg--font-size, props.get(core.$font-size--150)) !default; 26$font-size--lg: props.def(--o-action-button--lg--font-size, props.get(core.$font-size--150)) !default;
27 27
28$pad-i--xl: props.def(--o-action-button--xl--pad-i, props.get(core.$size--175)) !default; 28$pad-i--xl: props.def(--o-action-button--xl--pad-i, props.get(core.$size--200)) !default;
29$pad-i-label--xl: props.def(--o-action-button--xl--pad-i-label, props.get(core.$size--100)) !default; 29$pad-i-label--xl: props.def(--o-action-button--xl--pad-i-label, props.get(core.$size--85)) !default;
30$pad-i-pill--xl: props.def(--o-action-button--xl--pad-i-pill, props.get(core.$size--225)) !default; 30$pad-i-pill--xl: props.def(--o-action-button--xl--pad-i-pill, props.get(core.$size--225)) !default;
31$pad-b--xl: props.def(--o-action-button--xl--pad-b, props.get(core.$size--150)) !default; 31$pad-b--xl: props.def(--o-action-button--xl--pad-b, props.get(core.$size--150)) !default;
32$font-size--xl: props.def(--o-action-button--xl--font-size, props.get(core.$font-size--200)) !default; 32$font-size--xl: props.def(--o-action-button--xl--font-size, props.get(core.$font-size--200)) !default;
diff --git a/src/objects/_card.scss b/src/objects/_card.scss
index 4f8c7fb..6b80e2f 100644
--- a/src/objects/_card.scss
+++ b/src/objects/_card.scss
@@ -14,34 +14,26 @@
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);
18 background-clip: content-box; 17 background-clip: content-box;
19 border: 1px solid transparent; 18 background-color: props.get(vars.$bg-color);
19 border: props.get(vars.$border-width) solid transparent;
20 border-color: props.get(vars.$border-color); 20 border-color: props.get(vars.$border-color);
21 border-radius: props.get(vars.$rounding); 21 border-radius: props.get(vars.$rounding);
22 transition: transform .2s; 22 transition: transform .2s, background-color .2s, border-color .2s;
23 23
24 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { 24 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
25 &:hover, 25 &:hover,
26 &:active, 26 &:active,
27 &:focus-visible { 27 &:focus-visible {
28 transform: translateY(props.get(vars.$hover--offset-b)); 28 transform: translateY(props.get(vars.$hover--offset-b));
29 29 background-color: props.get(vars.$hover--bg-color);
30 @include bem.elem('body') { 30 border-color: props.get(vars.$hover--border-color);
31 @include bem.modifier('hidden') {
32 visibility: visible;
33 opacity: 1;
34 transition:
35 opacity .2s ease,
36 visibility .2s linear;
37 }
38 }
39 } 31 }
40 32
41 &:focus-visible { 33 &:focus-visible {
42 margin: calc(-1 * props.get(vars.$key-focus--border-width) + 1px); 34 margin: calc(-1 * props.get(vars.$key-focus--border-width));
43 border: props.get(vars.$key-focus--border-offset) solid transparent; 35 border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent;
44 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) - 1px); 36 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
45 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 37 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
46 box-shadow: 38 box-shadow:
47 0 0 0 39 0 0 0
@@ -65,13 +57,13 @@
65 transition: background-color .2s, transform .2s, opacity .2s; 57 transition: background-color .2s, transform .2s, opacity .2s;
66 58
67 &:first-child { 59 &:first-child {
68 border-start-start-radius: calc(props.get(vars.$rounding) - 1px); 60 border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
69 border-start-end-radius: calc(props.get(vars.$rounding) - 1px); 61 border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
70 } 62 }
71 63
72 &:last-child { 64 &:last-child {
73 border-end-start-radius: calc(props.get(vars.$rounding) - 1px); 65 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
74 border-end-end-radius: calc(props.get(vars.$rounding) - 1px); 66 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
75 } 67 }
76 68
77 @include bem.next-elem('avatar') { 69 @include bem.next-elem('avatar') {
@@ -104,26 +96,6 @@
104 margin-block: -100em 100em; 96 margin-block: -100em 100em;
105 content: ''; 97 content: '';
106 } 98 }
107
108 @include bem.modifier('hidden') {
109 position: absolute;
110 inset-block-end: 0;
111 inset-inline: 0;
112 z-index: 10;
113 visibility: hidden;
114 background-color: props.get(vars.$bg-color);
115 //border-end-start-radius: props.get(vars.$rounding);
116 //border-end-end-radius: props.get(vars.$rounding);
117 opacity: 0;
118 transition:
119 opacity .2s ease,
120 visibility 0s .2s linear;
121
122 @include bem.next-elem('image') {
123 border-start-start-radius: calc(props.get(vars.$rounding) - 1px);
124 border-start-end-radius: calc(props.get(vars.$rounding) - 1px);
125 }
126 }
127 } 99 }
128 100
129 @include bem.elem('content') { 101 @include bem.elem('content') {
@@ -155,19 +127,14 @@
155 &:hover, 127 &:hover,
156 &:active, 128 &:active,
157 &:focus-visible { 129 &:focus-visible {
158 transform: none; 130 transform: none;
131 background-color: transparent;
159 132
160 @include bem.elem('image') { 133 @include bem.elem('image') {
161 background-color: props.get(vars.$quiet--hover--image-color); 134 background-color: props.get(vars.$quiet--hover--image-color);
162 opacity: .75; 135 opacity: .75;
163 transform: translateY(props.get(vars.$hover--offset-b)); 136 transform: translateY(props.get(vars.$hover--offset-b));
164 } 137 }
165
166 @include bem.elem('body') {
167 @include bem.modifier('hidden') {
168 transform: translateY(props.get(vars.$hover--offset-b));
169 }
170 }
171 } 138 }
172 139
173 &:focus-visible { 140 &:focus-visible {
@@ -203,11 +170,6 @@
203 @include bem.elem('body') { 170 @include bem.elem('body') {
204 padding: 0; 171 padding: 0;
205 padding-block-start: props.get(vars.$spacing); 172 padding-block-start: props.get(vars.$spacing);
206
207 @include bem.modifier('hidden') {
208 padding-block: props.get(vars.$pad-b);
209 padding-inline: props.get(vars.$pad-i);
210 }
211 } 173 }
212 174
213 @include bem.elem('footer') { 175 @include bem.elem('footer') {
@@ -215,6 +177,49 @@
215 } 177 }
216 } 178 }
217 179
180 @include bem.modifier('thumbnail') {
181 @include bem.elem('image') {
182 inline-size: calc(100% + 2 * props.get(vars.$border-width));
183 margin: calc(-1 * props.get(vars.$border-width));
184 border-radius: props.get(vars.$rounding);
185 }
186
187 @include bem.elem('body') {
188 position: absolute;
189 inset-block-end: calc(-1 * props.get(vars.$border-width));
190 inset-inline: calc(-1 * props.get(vars.$border-width));
191 z-index: 10;
192 visibility: hidden;
193 background-color: props.get(vars.$hover--bg-color);
194 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width);
195 border-color: transparent;
196 border-style: solid;
197 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
198 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
199 opacity: 0;
200 transition:
201 border-color .2s ease,
202 opacity .2s ease,
203 visibility 0s .2s linear;
204 }
205
206 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
207 &:hover,
208 &:active,
209 &:focus-visible {
210 @include bem.elem('body') {
211 border-color: props.get(vars.$hover--border-color);
212 visibility: visible;
213 opacity: 1;
214 transition:
215 border-color .2s ease,
216 opacity .2s ease,
217 visibility .2s linear;
218 }
219 }
220 }
221 }
222
218 @include bem.modifier('horizontal') { 223 @include bem.modifier('horizontal') {
219 flex-direction: row; 224 flex-direction: row;
220 align-items: center; 225 align-items: center;
@@ -225,11 +230,11 @@
225 230
226 &:first-child { 231 &:first-child {
227 border-start-end-radius: 0; 232 border-start-end-radius: 0;
228 border-end-start-radius: calc(props.get(vars.$rounding) - 1px); 233 border-end-start-radius: props.get(vars.$rounding);
229 } 234 }
230 235
231 &:last-child { 236 &:last-child {
232 border-start-end-radius: calc(props.get(vars.$rounding) - 1px); 237 border-start-end-radius: props.get(vars.$rounding);
233 border-end-start-radius: 0; 238 border-end-start-radius: 0;
234 } 239 }
235 } 240 }
diff --git a/src/objects/_card.vars.scss b/src/objects/_card.vars.scss
index 4f5cf40..c5bbc0d 100644
--- a/src/objects/_card.vars.scss
+++ b/src/objects/_card.vars.scss
@@ -3,6 +3,8 @@
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;
7$sub-border-width: props.def(--o-card--sub-border-width, props.get(core.$border-width--thick)) !default;
6$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default; 8$pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default;
7$pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default; 9$pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default;
8$spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default; 10$spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default;
@@ -17,9 +19,12 @@ $key-focus--border-offset: props.def(--o-card--key-focus--border-offset, props.g
17$key-focus--outline-width: props.def(--o-card--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; 19$key-focus--outline-width: props.def(--o-card--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default;
18 20
19$bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), 'color') !default; 21$bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), 'color') !default;
20$border-color: props.def(--o-card--border-color, props.get(core.$theme, --border-mute), 'color') !default; 22$border-color: props.def(--o-card--border-color, props.get(core.$theme, --box, --border), 'color') !default;
21$divider-color: props.def(--o-card--divider-color, props.get(core.$theme, --border-mute), 'color') !default; 23$divider-color: props.def(--o-card--divider-color, props.get(core.$theme, --border-mute), 'color') !default;
22 24
25$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;
26$hover--border-color: props.def(--o-card--hover--border-color, props.get(core.$theme, --border), 'color') !default;
27
23$key-focus--label-color: props.def(--o-card--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; 28$key-focus--label-color: props.def(--o-card--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default;
24$key-focus--border-color: props.def(--o-card--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; 29$key-focus--border-color: props.def(--o-card--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default;
25$key-focus--outline-color: props.def(--o-card--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; 30$key-focus--outline-color: props.def(--o-card--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default;
diff --git a/src/objects/_text-field.vars.scss b/src/objects/_text-field.vars.scss
index 833eacb..f64c42b 100644
--- a/src/objects/_text-field.vars.scss
+++ b/src/objects/_text-field.vars.scss
@@ -6,7 +6,7 @@ $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-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default; 7$pad-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default;
8$border-width: props.def(--o-text-field--border-width, props.get(core.$border-width--thin)) !default; 8$border-width: props.def(--o-text-field--border-width, props.get(core.$border-width--thin)) !default;
9$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding)) !default; 9$rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default;
10 10
11$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default; 11$extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default;
12 12