diff options
Diffstat (limited to 'src/layouts/_card-list.scss')
-rw-r--r-- | src/layouts/_card-list.scss | 100 |
1 files changed, 43 insertions, 57 deletions
diff --git a/src/layouts/_card-list.scss b/src/layouts/_card-list.scss index 65b6a66..8ef40c5 100644 --- a/src/layouts/_card-list.scss +++ b/src/layouts/_card-list.scss | |||
@@ -1,94 +1,80 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | 1 | @use 'sass:meta'; |
2 | @use '../functions' as fn; | ||
3 | @use 'include-media/dist/include-media' as media; | 2 | @use 'include-media/dist/include-media' as media; |
3 | @use 'iro-sass/src/bem'; | ||
4 | @use 'iro-sass/src/props'; | ||
5 | @use '../props' as *; | ||
4 | 6 | ||
5 | @include iro.props-namespace('card-list') { | 7 | @forward 'card-list.vars'; |
6 | @include iro.props-store(( | 8 | @use 'card-list.vars' as vars; |
7 | --dims: ( | ||
8 | --row-gap: fn.global-dim(--size --800), | ||
9 | --col-gap: fn.global-dim(--size --400), | ||
10 | 9 | ||
11 | --grid: ( | 10 | @mixin styles { |
12 | --row-gap: fn.global-dim(--size --800), | 11 | @include materialize-at-root(meta.module-variables('vars')); |
13 | --col-gap: fn.global-dim(--size --400), | ||
14 | --col-width: fn.global-dim(--size --3200), | ||
15 | ), | ||
16 | --masonry: ( | ||
17 | --row-gap: fn.global-dim(--size --800), | ||
18 | --col-gap: fn.global-dim(--size --400), | ||
19 | --col-width: fn.global-dim(--size --3200), | ||
20 | ), | ||
21 | --masonry-h: ( | ||
22 | --row-gap: fn.global-dim(--size --800), | ||
23 | --col-gap: fn.global-dim(--size --400), | ||
24 | --row-height: fn.global-dim(--size --3200), | ||
25 | ) | ||
26 | ), | ||
27 | --colors: ( | ||
28 | --border: fn.global-color(--border), | ||
29 | ), | ||
30 | )); | ||
31 | 12 | ||
32 | @include iro.bem-layout(iro.props-namespace()) { | 13 | @include bem.layout('card-list') { |
33 | display: flex; | 14 | display: flex; |
34 | flex-direction: column; | 15 | flex-direction: column; |
35 | gap: fn.dim(--row-gap) fn.dim(--col-gap); | 16 | gap: props.get(vars.$row-gap); |
36 | 17 | ||
37 | @include iro.bem-modifier('grid') { | 18 | @include bem.modifier('quiet') { |
19 | row-gap: props.get(vars.$quiet--row-gap); | ||
20 | } | ||
21 | |||
22 | @include bem.modifier('grid') { | ||
38 | display: grid; | 23 | display: grid; |
39 | grid-template-columns: repeat(auto-fill, minmax(fn.dim(--grid --col-width), 1fr)); | 24 | grid-template-columns: repeat(auto-fill, minmax(props.get(vars.$grid--col-width), 1fr)); |
40 | gap: fn.dim(--grid --col-gap); | 25 | gap: props.get(vars.$grid--row-gap) props.get(vars.$grid--col-gap); |
41 | 26 | ||
42 | @include iro.bem-modifier('quiet') { | 27 | @include bem.modifier('quiet') { |
43 | row-gap: fn.dim(--grid --row-gap); | 28 | row-gap: props.get(vars.$grid--quiet--row-gap); |
44 | } | 29 | } |
45 | } | 30 | } |
46 | 31 | ||
47 | @include iro.bem-modifier('masonry') { | 32 | @include bem.modifier('masonry') { |
48 | display: block; | 33 | display: block; |
49 | columns: auto fn.dim(--masonry --col-width); | 34 | columns: auto props.get(vars.$masonry--col-width); |
50 | column-gap: fn.dim(--masonry --col-gap); | 35 | column-gap: props.get(vars.$masonry--col-gap); |
51 | 36 | ||
52 | @include iro.bem-elem('card') { | 37 | @include bem.elem('card') { |
53 | margin-block-end: fn.dim(--masonry --col-gap); | 38 | margin-block-end: props.get(vars.$masonry--row-gap); |
54 | break-inside: avoid; | 39 | break-inside: avoid; |
55 | } | 40 | } |
56 | 41 | ||
57 | @include iro.bem-modifier('quiet') { | 42 | @include bem.modifier('quiet') { |
58 | @include iro.bem-elem('card') { | 43 | @include bem.elem('card') { |
59 | margin-block-end: fn.dim(--masonry --row-gap); | 44 | margin-block-end: props.get(vars.$masonry--quiet--row-gap); |
60 | } | 45 | } |
61 | } | 46 | } |
62 | } | 47 | } |
63 | 48 | ||
64 | @include iro.bem-modifier('masonry-h') { | 49 | @include bem.modifier('masonry-h') { |
65 | flex-flow: row wrap; | 50 | flex-flow: row wrap; |
66 | gap: fn.dim(--masonry-h --col-gap); | 51 | gap: props.get(vars.$masonry-h--row-gap) props.get(vars.$masonry-h--col-gap); |
67 | 52 | ||
68 | &::after { | 53 | @include bem.modifier('no-flush') { |
69 | content: ''; | 54 | &::after { |
70 | display: block; | 55 | display: block; |
71 | flex: 1 0 auto; | 56 | flex: 1 0 auto; |
72 | inline-size: fn.dim(--masonry-h --row-height); | 57 | inline-size: props.get(vars.$masonry-h--row-height); |
73 | block-size: 0; | 58 | content: ''; |
59 | } | ||
74 | } | 60 | } |
75 | 61 | ||
76 | @include iro.bem-elem('card') { | 62 | @include bem.elem('card') { |
77 | flex: 1 0 auto; | 63 | flex: 1 0 auto; |
78 | max-inline-size: 100%; | 64 | max-inline-size: 100%; |
79 | } | 65 | } |
80 | 66 | ||
81 | @include iro.bem-elem('card-image') { | 67 | @include bem.elem('card-image') { |
82 | block-size: fn.dim(--masonry-h --row-height); | 68 | block-size: props.get(vars.$masonry-h--row-height); |
83 | } | 69 | } |
84 | 70 | ||
85 | @include iro.bem-modifier('quiet') { | 71 | @include bem.modifier('quiet') { |
86 | row-gap: fn.dim(--masonry-h --row-gap); | 72 | row-gap: props.get(vars.$masonry-h--quiet--row-gap); |
87 | } | 73 | } |
88 | } | 74 | } |
89 | 75 | ||
90 | @include iro.bem-modifier('aspect-5\\/4') { | 76 | @include bem.modifier('aspect-5\\/4') { |
91 | @include iro.bem-elem('card-image') { | 77 | @include bem.elem('card-image') { |
92 | aspect-ratio: 5 / 4; | 78 | aspect-ratio: 5 / 4; |
93 | } | 79 | } |
94 | } | 80 | } |