blob: 6926dab0f43598c3f94f3c758cf1306bb06d5c7e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
@use 'sass:map';
@use 'sass:meta';
@use 'sass:string';
@use 'iro-sass/src/bem';
@use 'iro-sass/src/props';
@use '../props' as *;
@forward 'lightbox.vars';
@use 'lightbox.vars' as vars;
@use 'backdrop.vars' as backdrop;
@use 'thumbnail.vars' as thumbnail;
@mixin styles {
@include materialize-at-root(meta.module-variables('vars'));
@include bem.object('lightbox') {
position: relative;
box-sizing: border-box;
display: none;
flex: 1 1 auto;
flex-direction: column;
align-items: center;
justify-content: center;
inline-size: 100%;
max-inline-size: none;
block-size: 100%;
min-block-size: 0;
max-block-size: none;
padding: 0;
margin: 0;
background-color: transparent;
border: 0;
&::backdrop {
background-color: props.get(backdrop.$bg-color);
backdrop-filter: blur(props.get(backdrop.$blur));
}
&[open] {
display: flex;
}
@include bem.elem('controls') {
position: absolute;
inset-block-start: props.get(vars.$pad);
inset-inline-end: props.get(vars.$pad);
z-index: 20;
padding: props.get(vars.$controls--pad-y) props.get(vars.$controls--pad-x);
border-radius: 10em;
}
@include bem.elem('img') {
position: relative;
z-index: 10;
display: none;
flex: 1 1 auto;
inline-size: auto;
max-inline-size: 100%;
block-size: auto;
max-block-size: 100%;
margin: auto;
@include bem.multi('&:target', 'is' 'visible') {
display: block;
}
}
@include bem.elem('thumbnails') {
display: flex;
flex: 0 0 auto;
gap: props.get(vars.$thumbnail--spacing);
justify-content: center;
padding: props.get(vars.$pad);
overflow: auto;
}
@include bem.elem('thumbnail') {
inline-size: props.get(vars.$thumbnail--width);
transition: inline-size .1s ease, margin-inline .1s ease;
@include bem.is('selected') {
inline-size: props.get(vars.$thumbnail--active--width);
margin-inline: props.get(vars.$thumbnail--active--spacing);
}
}
@each $theme in map.keys(props.get(vars.$static-themes)) {
@include bem.modifier(string.slice($theme, 3)) {
color: props.get(vars.$static-themes, $theme, --text);
@include bem.elem('controls') {
background-color: props.get(vars.$static-themes, $theme, --controls-bg);
}
}
}
}
}
|