summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2026-03-03 11:32:57 +0100
committerVolpeon <git@volpeon.ink>2026-03-03 11:32:57 +0100
commit0898d9a3b3bead6912143b64acda96824af6e9b9 (patch)
tree7ce9665b02512be9aa046e39897af24f6370cae1 /src
parentUpdate _utils.scss (diff)
downloadiro-design-0898d9a3b3bead6912143b64acda96824af6e9b9.tar.gz
iro-design-0898d9a3b3bead6912143b64acda96824af6e9b9.tar.bz2
iro-design-0898d9a3b3bead6912143b64acda96824af6e9b9.zip
Improved merged card list layout
Diffstat (limited to 'src')
-rw-r--r--src/layouts/_card-list.scss65
1 files changed, 41 insertions, 24 deletions
diff --git a/src/layouts/_card-list.scss b/src/layouts/_card-list.scss
index f7f7261..1645b49 100644
--- a/src/layouts/_card-list.scss
+++ b/src/layouts/_card-list.scss
@@ -4,6 +4,8 @@
4@use 'iro-sass/src/props'; 4@use 'iro-sass/src/props';
5@use '../props' as *; 5@use '../props' as *;
6 6
7@use '../objects/card.vars' as card;
8
7@forward 'card-list.vars'; 9@forward 'card-list.vars';
8@use 'card-list.vars' as vars; 10@use 'card-list.vars' as vars;
9 11
@@ -16,52 +18,67 @@
16 gap: props.get(vars.$row-gap); 18 gap: props.get(vars.$row-gap);
17 19
18 @include bem.modifier('merge') { 20 @include bem.modifier('merge') {
19 position: relative; 21 position: relative;
20 gap: calc(2 * props.get(vars.$merge-padding) + props.get(vars.$border-width)); 22 gap: 0;
21 padding: props.get(vars.$merge-padding); 23 border-radius: props.get(vars.$rounding);
22 background-color: props.get(vars.$card-bg-color);
23 border: props.get(vars.$border-width) solid props.get(vars.$border-color);
24 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$merge-padding));
25 24
26 @include bem.elem('card') { 25 @include bem.elem('card') {
27 box-shadow: none; 26 background-clip: content-box;
28 27
29 &:not(:last-child) { 28 &:not(:last-child) {
30 position: relative; 29 position: relative;
31 border-end-start-radius: 0; 30 border-end-start-radius: 0;
32 border-end-end-radius: 0; 31 border-end-end-radius: 0;
33
34 &::after {
35 position: absolute;
36 inset-block-start: calc(100% + props.get(vars.$merge-padding) + props.get(vars.$border-width));
37 inset-inline: calc(-1 * props.get(vars.$merge-padding) - props.get(vars.$border-width));
38 display: block;
39 block-size: props.get(vars.$border-width);
40 content: '';
41 background-color: props.get(vars.$border-color);
42 }
43 } 32 }
44 33
45 &:hover, 34 &:hover,
46 &:active, 35 &:active,
47 &:focus-visible { 36 &:focus-visible {
48 transform: none; 37 transform: none;
38 z-index: 10;
49 } 39 }
50 40
51 @include bem.next-twin-elem { 41 @include bem.next-twin-elem {
42 margin-block-start: calc(-1 * props.get(card.$border-width));
43 border-block-start-color: transparent;
52 border-start-start-radius: 0; 44 border-start-start-radius: 0;
53 border-start-end-radius: 0; 45 border-start-end-radius: 0;
46
47 &:hover,
48 &:active {
49 border-block-start-color: props.get(card.$hover--border-color);
50 }
51
52 &:focus-visible {
53 margin-block-start: calc(-1 * props.get(card.$border-width) - props.get(card.$key-focus--border-width));
54 }
55 }
56
57 &:focus-visible {
58 border-color: props.get(card.$hover--bg-color);
54 } 59 }
55 } 60 }
56 61
57 @include bem.modifier('borderless') { 62 @include bem.modifier('borderless') {
58 border-color: props.get(vars.$card-bg-color);
59
60 @include bem.elem('card') { 63 @include bem.elem('card') {
61 &:not(:last-child) { 64 border-inline-color: props.get(vars.$card-bg-color);
62 &::after { 65 border-block-color: props.get(vars.$card-bg-color) props.get(card.$border-color);
63 inset-inline: calc(-1 * props.get(vars.$merge-padding) - 2 * props.get(vars.$border-width)); 66
64 } 67 @include bem.next-twin-elem {
68 border-block-start-color: transparent;
69 }
70
71 &:last-child {
72 border-block-end-color: props.get(vars.$card-bg-color);
73 }
74
75 &:hover,
76 &:active {
77 border-color: props.get(card.$hover--border-color);
78 }
79
80 &:focus-visible {
81 border-color: props.get(card.$hover--bg-color);
65 } 82 }
66 } 83 }
67 } 84 }