summaryrefslogtreecommitdiffstats
path: root/src/objects/_card.scss
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2025-07-21 22:14:31 +0200
committerVolpeon <git@volpeon.ink>2025-07-21 22:14:31 +0200
commitd61c6362949ecb49d81e608af698a5e0fa4643fe (patch)
tree9ac3c062c717e3b2ca1c972b7ede4695ce9ae115 /src/objects/_card.scss
parentImproved card and card list (diff)
downloadiro-design-d61c6362949ecb49d81e608af698a5e0fa4643fe.tar.gz
iro-design-d61c6362949ecb49d81e608af698a5e0fa4643fe.tar.bz2
iro-design-d61c6362949ecb49d81e608af698a5e0fa4643fe.zip
Improved card
Diffstat (limited to 'src/objects/_card.scss')
-rw-r--r--src/objects/_card.scss106
1 files changed, 54 insertions, 52 deletions
diff --git a/src/objects/_card.scss b/src/objects/_card.scss
index aaf46b6..d5d300d 100644
--- a/src/objects/_card.scss
+++ b/src/objects/_card.scss
@@ -15,28 +15,18 @@
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 background-clip: content-box;
19 border: props.get(vars.$border-width) solid transparent; 18 border: props.get(vars.$border-width) solid transparent;
20 border-color: props.get(vars.$border-color); 19 border-color: props.get(vars.$border-color);
21 border-radius: props.get(vars.$rounding); 20 border-radius: props.get(vars.$rounding);
22 transition: transform .2s, border-color .2s; 21 transition: transform .2s, background-color .2s, border-color .2s;
23 22
24 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { 23 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
25 &:hover, 24 &:hover,
26 &:active, 25 &:active,
27 &:focus-visible { 26 &:focus-visible {
28 transform: translateY(props.get(vars.$hover--offset-b)); 27 transform: translateY(props.get(vars.$hover--offset-b));
29 border-color: props.get(vars.$hover--border-color); 28 background-color: props.get(vars.$hover--bg-color);
30 29 border-color: props.get(vars.$hover--border-color);
31 @include bem.elem('body') {
32 @include bem.modifier('hidden') {
33 visibility: visible;
34 opacity: 1;
35 transition:
36 opacity .2s ease,
37 visibility .2s linear;
38 }
39 }
40 } 30 }
41 31
42 &:focus-visible { 32 &:focus-visible {
@@ -60,20 +50,19 @@
60 position: relative; 50 position: relative;
61 display: block; 51 display: block;
62 flex: 0 0 auto; 52 flex: 0 0 auto;
63 inline-size: calc(100% + 2 * props.get(vars.$border-width)); 53 inline-size: 100%;
64 margin: calc(-1 * props.get(vars.$border-width));
65 overflow: hidden; 54 overflow: hidden;
66 object-fit: cover; 55 object-fit: cover;
67 transition: background-color .2s, transform .2s, opacity .2s; 56 transition: background-color .2s, transform .2s, opacity .2s;
68 57
69 &:first-child { 58 &:first-child {
70 border-start-start-radius: props.get(vars.$rounding); 59 border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
71 border-start-end-radius: props.get(vars.$rounding); 60 border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
72 } 61 }
73 62
74 &:last-child { 63 &:last-child {
75 border-end-start-radius: props.get(vars.$rounding); 64 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
76 border-end-end-radius: props.get(vars.$rounding); 65 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
77 } 66 }
78 67
79 @include bem.next-elem('avatar') { 68 @include bem.next-elem('avatar') {
@@ -106,26 +95,6 @@
106 margin-block: -100em 100em; 95 margin-block: -100em 100em;
107 content: ''; 96 content: '';
108 } 97 }
109
110 @include bem.modifier('hidden') {
111 position: absolute;
112 inset-block-end: calc(-1 * props.get(vars.$border-width));
113 inset-inline: calc(-1 * props.get(vars.$border-width));
114 z-index: 10;
115 visibility: hidden;
116 background-color: props.get(vars.$bg-color);
117 border-end-start-radius: props.get(vars.$rounding);
118 border-end-end-radius: props.get(vars.$rounding);
119 opacity: 0;
120 transition:
121 opacity .2s ease,
122 visibility 0s .2s linear;
123
124 @include bem.next-elem('image') {
125 border-start-start-radius: props.get(vars.$rounding);
126 border-start-end-radius: props.get(vars.$rounding);
127 }
128 }
129 } 98 }
130 99
131 @include bem.elem('content') { 100 @include bem.elem('content') {
@@ -157,19 +126,14 @@
157 &:hover, 126 &:hover,
158 &:active, 127 &:active,
159 &:focus-visible { 128 &:focus-visible {
160 transform: none; 129 transform: none;
130 background-color: transparent;
161 131
162 @include bem.elem('image') { 132 @include bem.elem('image') {
163 background-color: props.get(vars.$quiet--hover--image-color); 133 background-color: props.get(vars.$quiet--hover--image-color);
164 opacity: .75; 134 opacity: .75;
165 transform: translateY(props.get(vars.$hover--offset-b)); 135 transform: translateY(props.get(vars.$hover--offset-b));
166 } 136 }
167
168 @include bem.elem('body') {
169 @include bem.modifier('hidden') {
170 transform: translateY(props.get(vars.$hover--offset-b));
171 }
172 }
173 } 137 }
174 138
175 &:focus-visible { 139 &:focus-visible {
@@ -205,11 +169,6 @@
205 @include bem.elem('body') { 169 @include bem.elem('body') {
206 padding: 0; 170 padding: 0;
207 padding-block-start: props.get(vars.$spacing); 171 padding-block-start: props.get(vars.$spacing);
208
209 @include bem.modifier('hidden') {
210 padding-block: props.get(vars.$pad-b);
211 padding-inline: props.get(vars.$pad-i);
212 }
213 } 172 }
214 173
215 @include bem.elem('footer') { 174 @include bem.elem('footer') {
@@ -217,6 +176,49 @@
217 } 176 }
218 } 177 }
219 178
179 @include bem.modifier('thumbnail') {
180 @include bem.elem('image') {
181 inline-size: calc(100% + 2 * props.get(vars.$border-width));
182 margin: calc(-1 * props.get(vars.$border-width));
183 border-radius: props.get(vars.$rounding);
184 }
185
186 @include bem.elem('body') {
187 position: absolute;
188 inset-block-end: calc(-1 * props.get(vars.$border-width));
189 inset-inline: calc(-1 * props.get(vars.$border-width));
190 z-index: 10;
191 visibility: hidden;
192 background-color: props.get(vars.$bg-color);
193 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width);
194 border-color: transparent;
195 border-style: solid;
196 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
197 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
198 opacity: 0;
199 transition:
200 border-color .2s ease,
201 opacity .2s ease,
202 visibility 0s .2s linear;
203 }
204
205 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
206 &:hover,
207 &:active,
208 &:focus-visible {
209 @include bem.elem('body') {
210 border-color: props.get(vars.$hover--border-color);
211 visibility: visible;
212 opacity: 1;
213 transition:
214 border-color .2s ease,
215 opacity .2s ease,
216 visibility .2s linear;
217 }
218 }
219 }
220 }
221
220 @include bem.modifier('horizontal') { 222 @include bem.modifier('horizontal') {
221 flex-direction: row; 223 flex-direction: row;
222 align-items: center; 224 align-items: center;