diff options
Diffstat (limited to 'src/objects/_card.scss')
-rw-r--r-- | src/objects/_card.scss | 127 |
1 files changed, 68 insertions, 59 deletions
diff --git a/src/objects/_card.scss b/src/objects/_card.scss index c87e676..d5d300d 100644 --- a/src/objects/_card.scss +++ b/src/objects/_card.scss | |||
@@ -14,36 +14,28 @@ | |||
14 | position: relative; | 14 | position: relative; |
15 | display: flex; | 15 | display: flex; |
16 | flex-direction: column; | 16 | flex-direction: column; |
17 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); | ||
18 | background-color: props.get(vars.$bg-color); | 17 | background-color: props.get(vars.$bg-color); |
19 | background-clip: content-box; | 18 | border: props.get(vars.$border-width) solid transparent; |
20 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 19 | border-color: props.get(vars.$border-color); |
21 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | 20 | border-radius: props.get(vars.$rounding); |
22 | transition: transform .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 | 28 | background-color: props.get(vars.$hover--bg-color); | |
30 | @include bem.elem('body') { | 29 | 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 | } | 30 | } |
40 | 31 | ||
41 | &:focus-visible { | 32 | &:focus-visible { |
42 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 33 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); |
34 | border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent; | ||
35 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | ||
36 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | ||
43 | box-shadow: | 37 | box-shadow: |
44 | 0 | 38 | 0 0 0 |
45 | 0 | ||
46 | 0 | ||
47 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 39 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) |
48 | props.get(vars.$key-focus--outline-color); | 40 | props.get(vars.$key-focus--outline-color); |
49 | } | 41 | } |
@@ -64,13 +56,13 @@ | |||
64 | transition: background-color .2s, transform .2s, opacity .2s; | 56 | transition: background-color .2s, transform .2s, opacity .2s; |
65 | 57 | ||
66 | &:first-child { | 58 | &:first-child { |
67 | border-start-start-radius: props.get(vars.$rounding); | 59 | border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); |
68 | border-start-end-radius: props.get(vars.$rounding); | 60 | border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); |
69 | } | 61 | } |
70 | 62 | ||
71 | &:last-child { | 63 | &:last-child { |
72 | border-end-start-radius: props.get(vars.$rounding); | 64 | border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); |
73 | border-end-end-radius: props.get(vars.$rounding); | 65 | border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); |
74 | } | 66 | } |
75 | 67 | ||
76 | @include bem.next-elem('avatar') { | 68 | @include bem.next-elem('avatar') { |
@@ -103,26 +95,6 @@ | |||
103 | margin-block: -100em 100em; | 95 | margin-block: -100em 100em; |
104 | content: ''; | 96 | content: ''; |
105 | } | 97 | } |
106 | |||
107 | @include bem.modifier('hidden') { | ||
108 | position: absolute; | ||
109 | inset-block-end: 0; | ||
110 | inset-inline: 0; | ||
111 | z-index: 10; | ||
112 | visibility: hidden; | ||
113 | background-color: props.get(vars.$bg-color); | ||
114 | //border-end-start-radius: props.get(vars.$rounding); | ||
115 | //border-end-end-radius: props.get(vars.$rounding); | ||
116 | opacity: 0; | ||
117 | transition: | ||
118 | opacity .2s ease, | ||
119 | visibility 0s .2s linear; | ||
120 | |||
121 | @include bem.next-elem('image') { | ||
122 | border-start-start-radius: props.get(vars.$rounding); | ||
123 | border-start-end-radius: props.get(vars.$rounding); | ||
124 | } | ||
125 | } | ||
126 | } | 98 | } |
127 | 99 | ||
128 | @include bem.elem('content') { | 100 | @include bem.elem('content') { |
@@ -148,31 +120,32 @@ | |||
148 | margin-inline: 0; | 120 | margin-inline: 0; |
149 | background-color: transparent; | 121 | background-color: transparent; |
150 | border: 0; | 122 | border: 0; |
123 | box-shadow: none; | ||
151 | 124 | ||
152 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { | 125 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { |
153 | &:hover, | 126 | &:hover, |
154 | &:active, | 127 | &:active, |
155 | &:focus-visible { | 128 | &:focus-visible { |
156 | transform: none; | 129 | transform: none; |
130 | background-color: transparent; | ||
157 | 131 | ||
158 | @include bem.elem('image') { | 132 | @include bem.elem('image') { |
159 | background-color: props.get(vars.$quiet--hover--image-color); | 133 | background-color: props.get(vars.$quiet--hover--image-color); |
160 | opacity: .75; | 134 | opacity: .75; |
161 | transform: translateY(props.get(vars.$hover--offset-b)); | 135 | transform: translateY(props.get(vars.$hover--offset-b)); |
162 | } | 136 | } |
163 | |||
164 | @include bem.elem('body') { | ||
165 | @include bem.modifier('hidden') { | ||
166 | transform: translateY(props.get(vars.$hover--offset-b)); | ||
167 | } | ||
168 | } | ||
169 | } | 137 | } |
170 | 138 | ||
171 | &:focus-visible { | 139 | &:focus-visible { |
140 | margin: 0; | ||
172 | outline: none; | 141 | outline: none; |
142 | border: 0; | ||
173 | box-shadow: none; | 143 | box-shadow: none; |
174 | 144 | ||
175 | @include bem.elem('image') { | 145 | @include bem.elem('image') { |
146 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); | ||
147 | border: props.get(vars.$key-focus--border-offset) solid transparent; | ||
148 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | ||
176 | background-color: props.get(vars.$quiet--hover--image-color); | 149 | background-color: props.get(vars.$quiet--hover--image-color); |
177 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 150 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); |
178 | box-shadow: | 151 | box-shadow: |
@@ -188,21 +161,14 @@ | |||
188 | 161 | ||
189 | @include bem.elem('image') { | 162 | @include bem.elem('image') { |
190 | position: relative; | 163 | position: relative; |
191 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); | ||
192 | background-color: props.get(vars.$quiet--image-color); | 164 | background-color: props.get(vars.$quiet--image-color); |
193 | background-clip: padding-box; | 165 | background-clip: padding-box; |
194 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 166 | border-radius: props.get(vars.$rounding); |
195 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | ||
196 | } | 167 | } |
197 | 168 | ||
198 | @include bem.elem('body') { | 169 | @include bem.elem('body') { |
199 | padding: 0; | 170 | padding: 0; |
200 | padding-block-start: props.get(vars.$spacing); | 171 | padding-block-start: props.get(vars.$spacing); |
201 | |||
202 | @include bem.modifier('hidden') { | ||
203 | padding-block: props.get(vars.$pad-b); | ||
204 | padding-inline: props.get(vars.$pad-i); | ||
205 | } | ||
206 | } | 172 | } |
207 | 173 | ||
208 | @include bem.elem('footer') { | 174 | @include bem.elem('footer') { |
@@ -210,6 +176,49 @@ | |||
210 | } | 176 | } |
211 | } | 177 | } |
212 | 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 | |||
213 | @include bem.modifier('horizontal') { | 222 | @include bem.modifier('horizontal') { |
214 | flex-direction: row; | 223 | flex-direction: row; |
215 | align-items: center; | 224 | align-items: center; |