summaryrefslogtreecommitdiffstats
path: root/src/layouts/_split-view.scss
diff options
context:
space:
mode:
Diffstat (limited to 'src/layouts/_split-view.scss')
-rw-r--r--src/layouts/_split-view.scss91
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}