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