diff options
Diffstat (limited to 'src/layouts/_split-view.scss')
-rw-r--r-- | src/layouts/_split-view.scss | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/layouts/_split-view.scss b/src/layouts/_split-view.scss new file mode 100644 index 0000000..f522254 --- /dev/null +++ b/src/layouts/_split-view.scss | |||
@@ -0,0 +1,91 @@ | |||
1 | @use 'sass:meta'; | ||
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 *; | ||
6 | |||
7 | @forward 'split-view.vars'; | ||
8 | @use 'split-view.vars' as vars; | ||
9 | |||
10 | @mixin styles { | ||
11 | @include materialize-at-root(meta.module-variables('vars')); | ||
12 | |||
13 | @include bem.layout('split-view') { | ||
14 | display: flex; | ||
15 | gap: props.get(vars.$col-gap); | ||
16 | align-items: start; | ||
17 | |||
18 | @include bem.elem('panel') { | ||
19 | flex: 1 1 auto; | ||
20 | inline-size: 100%; | ||
21 | min-inline-size: 0; | ||
22 | |||
23 | @include bem.modifier('side-25') { | ||
24 | flex: 0 0 auto; | ||
25 | inline-size: 25%; | ||
26 | min-inline-size: props.get(vars.$panel--side-25--min); | ||
27 | } | ||
28 | |||
29 | @include bem.modifier('sticky-0') { | ||
30 | position: sticky; | ||
31 | inset-block-start: 0; | ||
32 | } | ||
33 | |||
34 | @include bem.modifier('sticky') { | ||
35 | position: sticky; | ||
36 | inset-block-start: props.get(vars.$panel--sticky-offset); | ||
37 | } | ||
38 | |||
39 | @include bem.modifier('sticky-400') { | ||
40 | position: sticky; | ||
41 | inset-block-start: calc(props.get(vars.$panel--sticky-400--inset) + props.get(vars.$panel--sticky-offset)); | ||
42 | } | ||
43 | |||
44 | @include bem.modifier('sticky-1200') { | ||
45 | position: sticky; | ||
46 | inset-block-start: calc(props.get(vars.$panel--sticky-1200--inset) + props.get(vars.$panel--sticky-offset)); | ||
47 | } | ||
48 | } | ||
49 | |||
50 | @include bem.modifier('gapless') { | ||
51 | gap: props.get(vars.$gapless); | ||
52 | |||
53 | @include bem.elem('panel') { | ||
54 | @include bem.modifier('side-25') { | ||
55 | min-inline-size: calc(props.get(vars.$panel--side-25--min) + props.get(vars.$col-gap) - props.get(vars.$gapless)); | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | |||
60 | @include bem.elem('content') { | ||
61 | inline-size: 100%; | ||
62 | } | ||
63 | |||
64 | @include media.media('<=md') { | ||
65 | flex-direction: column; | ||
66 | gap: props.get(vars.$row-gap); | ||
67 | align-items: stretch; | ||
68 | |||
69 | @include bem.modifier('gapless') { | ||
70 | gap: props.get(vars.$gapless); | ||
71 | } | ||
72 | |||
73 | @include bem.modifier('wrap-reverse') { | ||
74 | flex-direction: column-reverse; | ||
75 | } | ||
76 | |||
77 | @include bem.elem('panel') { | ||
78 | inline-size: auto; | ||
79 | |||
80 | @include bem.modifier('side-25') { | ||
81 | inline-size: auto; | ||
82 | min-inline-size: 0; | ||
83 | } | ||
84 | |||
85 | @include bem.modifier('sticky', 'sticky-400', 'sticky-1200') { | ||
86 | position: static; | ||
87 | } | ||
88 | } | ||
89 | } | ||
90 | } | ||
91 | } | ||