summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package.json2
-rw-r--r--pnpm-lock.yaml162
-rw-r--r--src/objects/_lightbox.scss165
-rw-r--r--src/objects/_lightbox.vars.scss25
-rw-r--r--src/objects/_thumbnail.scss11
-rw-r--r--src/objects/_thumbnail.vars.scss2
-rw-r--r--src_demo/index.scss2
-rw-r--r--tpl/objects/lightbox.pug24
-rw-r--r--tpl/views/lightbox.pug6
9 files changed, 162 insertions, 237 deletions
diff --git a/package.json b/package.json
index a9d4cec..fd7ef0c 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
32 "sass": "^1.97.3", 32 "sass": "^1.97.3",
33 "stylelint": "^17.0.0", 33 "stylelint": "^17.0.0",
34 "stylelint-config-recess-order": "^7.6.0", 34 "stylelint-config-recess-order": "^7.6.0",
35 "stylelint-config-sass-guidelines": "^12.1.0", 35 "stylelint-config-sass-guidelines": "^13.0.0",
36 "stylelint-order": "^7.0.1", 36 "stylelint-order": "^7.0.1",
37 "svg-sprite": "^2.0.4" 37 "svg-sprite": "^2.0.4"
38 } 38 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f940590..d6e4c99 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,16 +35,16 @@ importers:
35 version: 1.97.3 35 version: 1.97.3
36 stylelint: 36 stylelint:
37 specifier: ^17.0.0 37 specifier: ^17.0.0
38 version: 17.0.0 38 version: 17.1.1
39 stylelint-config-recess-order: 39 stylelint-config-recess-order:
40 specifier: ^7.6.0 40 specifier: ^7.6.0
41 version: 7.6.0(stylelint-order@7.0.1(stylelint@17.0.0))(stylelint@17.0.0) 41 version: 7.6.0(stylelint-order@7.0.1(stylelint@17.1.1))(stylelint@17.1.1)
42 stylelint-config-sass-guidelines: 42 stylelint-config-sass-guidelines:
43 specifier: ^12.1.0 43 specifier: ^13.0.0
44 version: 12.1.0(postcss@8.5.6)(stylelint@17.0.0) 44 version: 13.0.0(postcss@8.5.6)(stylelint@17.1.1)
45 stylelint-order: 45 stylelint-order:
46 specifier: ^7.0.1 46 specifier: ^7.0.1
47 version: 7.0.1(stylelint@17.0.0) 47 version: 7.0.1(stylelint@17.1.1)
48 svg-sprite: 48 svg-sprite:
49 specifier: ^2.0.4 49 specifier: ^2.0.4
50 version: 2.0.4 50 version: 2.0.4
@@ -86,12 +86,6 @@ packages:
86 resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} 86 resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
87 engines: {node: '>=0.1.90'} 87 engines: {node: '>=0.1.90'}
88 88
89 '@csstools/css-parser-algorithms@3.0.1':
90 resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==}
91 engines: {node: '>=18'}
92 peerDependencies:
93 '@csstools/css-tokenizer': ^3.0.1
94
95 '@csstools/css-parser-algorithms@4.0.0': 89 '@csstools/css-parser-algorithms@4.0.0':
96 resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} 90 resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==}
97 engines: {node: '>=20.19.0'} 91 engines: {node: '>=20.19.0'}
@@ -101,21 +95,10 @@ packages:
101 '@csstools/css-syntax-patches-for-csstree@1.0.26': 95 '@csstools/css-syntax-patches-for-csstree@1.0.26':
102 resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} 96 resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==}
103 97
104 '@csstools/css-tokenizer@3.0.1':
105 resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==}
106 engines: {node: '>=18'}
107
108 '@csstools/css-tokenizer@4.0.0': 98 '@csstools/css-tokenizer@4.0.0':
109 resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} 99 resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==}
110 engines: {node: '>=20.19.0'} 100 engines: {node: '>=20.19.0'}
111 101
112 '@csstools/media-query-list-parser@3.0.1':
113 resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==}
114 engines: {node: '>=18'}
115 peerDependencies:
116 '@csstools/css-parser-algorithms': ^3.0.1
117 '@csstools/css-tokenizer': ^3.0.1
118
119 '@csstools/media-query-list-parser@5.0.0': 102 '@csstools/media-query-list-parser@5.0.0':
120 resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} 103 resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==}
121 engines: {node: '>=20.19.0'} 104 engines: {node: '>=20.19.0'}
@@ -188,36 +171,42 @@ packages:
188 engines: {node: '>= 10.0.0'} 171 engines: {node: '>= 10.0.0'}
189 cpu: [arm] 172 cpu: [arm]
190 os: [linux] 173 os: [linux]
174 libc: [glibc]
191 175
192 '@parcel/watcher-linux-arm-musl@2.5.6': 176 '@parcel/watcher-linux-arm-musl@2.5.6':
193 resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} 177 resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
194 engines: {node: '>= 10.0.0'} 178 engines: {node: '>= 10.0.0'}
195 cpu: [arm] 179 cpu: [arm]
196 os: [linux] 180 os: [linux]
181 libc: [musl]
197 182
198 '@parcel/watcher-linux-arm64-glibc@2.5.6': 183 '@parcel/watcher-linux-arm64-glibc@2.5.6':
199 resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} 184 resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
200 engines: {node: '>= 10.0.0'} 185 engines: {node: '>= 10.0.0'}
201 cpu: [arm64] 186 cpu: [arm64]
202 os: [linux] 187 os: [linux]
188 libc: [glibc]
203 189
204 '@parcel/watcher-linux-arm64-musl@2.5.6': 190 '@parcel/watcher-linux-arm64-musl@2.5.6':
205 resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} 191 resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
206 engines: {node: '>= 10.0.0'} 192 engines: {node: '>= 10.0.0'}
207 cpu: [arm64] 193 cpu: [arm64]
208 os: [linux] 194 os: [linux]
195 libc: [musl]
209 196
210 '@parcel/watcher-linux-x64-glibc@2.5.6': 197 '@parcel/watcher-linux-x64-glibc@2.5.6':
211 resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} 198 resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
212 engines: {node: '>= 10.0.0'} 199 engines: {node: '>= 10.0.0'}
213 cpu: [x64] 200 cpu: [x64]
214 os: [linux] 201 os: [linux]
202 libc: [glibc]
215 203
216 '@parcel/watcher-linux-x64-musl@2.5.6': 204 '@parcel/watcher-linux-x64-musl@2.5.6':
217 resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} 205 resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
218 engines: {node: '>= 10.0.0'} 206 engines: {node: '>= 10.0.0'}
219 cpu: [x64] 207 cpu: [x64]
220 os: [linux] 208 os: [linux]
209 libc: [musl]
221 210
222 '@parcel/watcher-win32-arm64@2.5.6': 211 '@parcel/watcher-win32-arm64@2.5.6':
223 resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} 212 resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
@@ -276,24 +265,28 @@ packages:
276 engines: {node: '>= 10'} 265 engines: {node: '>= 10'}
277 cpu: [arm64] 266 cpu: [arm64]
278 os: [linux] 267 os: [linux]
268 libc: [glibc]
279 269
280 '@resvg/resvg-js-linux-arm64-musl@2.6.2': 270 '@resvg/resvg-js-linux-arm64-musl@2.6.2':
281 resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} 271 resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==}
282 engines: {node: '>= 10'} 272 engines: {node: '>= 10'}
283 cpu: [arm64] 273 cpu: [arm64]
284 os: [linux] 274 os: [linux]
275 libc: [musl]
285 276
286 '@resvg/resvg-js-linux-x64-gnu@2.6.2': 277 '@resvg/resvg-js-linux-x64-gnu@2.6.2':
287 resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} 278 resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==}
288 engines: {node: '>= 10'} 279 engines: {node: '>= 10'}
289 cpu: [x64] 280 cpu: [x64]
290 os: [linux] 281 os: [linux]
282 libc: [glibc]
291 283
292 '@resvg/resvg-js-linux-x64-musl@2.6.2': 284 '@resvg/resvg-js-linux-x64-musl@2.6.2':
293 resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} 285 resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==}
294 engines: {node: '>= 10'} 286 engines: {node: '>= 10'}
295 cpu: [x64] 287 cpu: [x64]
296 os: [linux] 288 os: [linux]
289 libc: [musl]
297 290
298 '@resvg/resvg-js-win32-arm64-msvc@2.6.2': 291 '@resvg/resvg-js-win32-arm64-msvc@2.6.2':
299 resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} 292 resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==}
@@ -321,11 +314,11 @@ packages:
321 resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 314 resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
322 engines: {node: '>=18'} 315 engines: {node: '>=18'}
323 316
324 '@stylistic/stylelint-plugin@3.1.1': 317 '@stylistic/stylelint-plugin@5.0.1':
325 resolution: {integrity: sha512-XagAHHIa528EvyGybv8EEYGK5zrVW74cHpsjhtovVATbhDRuJYfE+X4HCaAieW9lCkwbX6L+X0I4CiUG3w/hFw==} 318 resolution: {integrity: sha512-NaVwCNVZ2LyPA3TnUwvjO9c6P6VUjgRB8UP8SOW+cAOJBVqPPuOIDawsvvtql/LhkuR3JuTdGvr/RM3dUl8l2Q==}
326 engines: {node: ^18.12 || >=20.9} 319 engines: {node: '>=20.19.0'}
327 peerDependencies: 320 peerDependencies:
328 stylelint: ^16.8.0 321 stylelint: ^17.0.0
329 322
330 '@trysound/sax@0.2.0': 323 '@trysound/sax@0.2.0':
331 resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 324 resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
@@ -574,10 +567,6 @@ packages:
574 resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 567 resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
575 engines: {node: '>=8.0.0'} 568 engines: {node: '>=8.0.0'}
576 569
577 css-tree@2.3.1:
578 resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
579 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
580
581 css-tree@3.1.0: 570 css-tree@3.1.0:
582 resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 571 resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
583 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 572 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -942,9 +931,6 @@ packages:
942 resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 931 resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
943 engines: {node: '>=0.10.0'} 932 engines: {node: '>=0.10.0'}
944 933
945 known-css-properties@0.34.0:
946 resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==}
947
948 known-css-properties@0.37.0: 934 known-css-properties@0.37.0:
949 resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} 935 resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==}
950 936
@@ -984,12 +970,12 @@ packages:
984 mdn-data@2.0.14: 970 mdn-data@2.0.14:
985 resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 971 resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
986 972
987 mdn-data@2.0.30:
988 resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
989
990 mdn-data@2.12.2: 973 mdn-data@2.12.2:
991 resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 974 resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
992 975
976 mdn-data@2.27.0:
977 resolution: {integrity: sha512-/pUmP9UebM48q5BTqZd0yPnDjyRGhITbKh8cwa6/ZwjuDu8xq+VzmugLF7QNxpdaqqNH3J5nnv3yc8oARv096A==}
978
993 meow@14.0.0: 979 meow@14.0.0:
994 resolution: {integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==} 980 resolution: {integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==}
995 engines: {node: '>=20'} 981 engines: {node: '>=20'}
@@ -1096,10 +1082,6 @@ packages:
1096 peerDependencies: 1082 peerDependencies:
1097 postcss: ^8.4.29 1083 postcss: ^8.4.29
1098 1084
1099 postcss-selector-parser@6.1.2:
1100 resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
1101 engines: {node: '>=4'}
1102
1103 postcss-selector-parser@7.1.1: 1085 postcss-selector-parser@7.1.1:
1104 resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} 1086 resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
1105 engines: {node: '>=4'} 1087 engines: {node: '>=4'}
@@ -1333,8 +1315,8 @@ packages:
1333 resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1315 resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1334 engines: {node: '>=8'} 1316 engines: {node: '>=8'}
1335 1317
1336 string-width@8.1.0: 1318 string-width@8.1.1:
1337 resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} 1319 resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==}
1338 engines: {node: '>=20'} 1320 engines: {node: '>=20'}
1339 1321
1340 string_decoder@1.1.1: 1322 string_decoder@1.1.1:
@@ -1364,12 +1346,12 @@ packages:
1364 stylelint: ^16.18.0 || ^17.0.0 1346 stylelint: ^16.18.0 || ^17.0.0
1365 stylelint-order: ^7.0.0 1347 stylelint-order: ^7.0.0
1366 1348
1367 stylelint-config-sass-guidelines@12.1.0: 1349 stylelint-config-sass-guidelines@13.0.0:
1368 resolution: {integrity: sha512-NTxEtVT6uNSqRvq+A3ScyKhjUrY/Z845TnpWEwnMgIPZ/+/Waa4+51r6OPuQRMu4XZS3D8DK1UaT4TWFBvuuAw==} 1350 resolution: {integrity: sha512-YJT0X8h0OqyEo7ys3EycV5CGWt2rrkEYE8sHSN6sFnrxbXvHiy4KJFHDOWfyb3eWR6wtYpM+yIyvR2Plc8+pCg==}
1369 engines: {node: '>=18.12.0'} 1351 engines: {node: '>=20.19.0'}
1370 peerDependencies: 1352 peerDependencies:
1371 postcss: ^8.4.21 1353 postcss: ^8.4.21
1372 stylelint: ^16.1.0 1354 stylelint: ^17.1.0
1373 1355
1374 stylelint-order@7.0.1: 1356 stylelint-order@7.0.1:
1375 resolution: {integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==} 1357 resolution: {integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==}
@@ -1377,14 +1359,14 @@ packages:
1377 peerDependencies: 1359 peerDependencies:
1378 stylelint: ^16.18.0 || ^17.0.0 1360 stylelint: ^16.18.0 || ^17.0.0
1379 1361
1380 stylelint-scss@6.7.0: 1362 stylelint-scss@7.0.0:
1381 resolution: {integrity: sha512-RFIa2A+pVWS5wjNT+whtK7wsbZEWazyqesCuSaPbPlZ8lh2TujwVJSnCYJijg6ChZzwI8pZPRZS1L6A9aCbXDg==} 1363 resolution: {integrity: sha512-H88kCC+6Vtzj76NsC8rv6x/LW8slBzIbyeSjsKVlS+4qaEJoDrcJR4L+8JdrR2ORdTscrBzYWiiT2jq6leYR1Q==}
1382 engines: {node: '>=18.12.0'} 1364 engines: {node: '>=20.19.0'}
1383 peerDependencies: 1365 peerDependencies:
1384 stylelint: ^16.0.2 1366 stylelint: ^16.8.2 || ^17.0.0
1385 1367
1386 stylelint@17.0.0: 1368 stylelint@17.1.1:
1387 resolution: {integrity: sha512-saMZ2mqdQre4AfouxcbTdpVglDRcROb4MIucKHvgsDb/0IX7ODhcaz+EOIyfxAsm8Zjl/7j4hJj6MgIYYM8Xwg==} 1369 resolution: {integrity: sha512-SBHVcLEcRF1M9OkD3oT0hT2PayDNLw2hd+aovmzfNQ2ys4Xd3oS9ZNizILWqhQvW802AqKN/vUTMwJqQYMBlWw==}
1388 engines: {node: '>=20.19.0'} 1370 engines: {node: '>=20.19.0'}
1389 hasBin: true 1371 hasBin: true
1390 1372
@@ -1579,25 +1561,14 @@ snapshots:
1579 1561
1580 '@colors/colors@1.6.0': {} 1562 '@colors/colors@1.6.0': {}
1581 1563
1582 '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)':
1583 dependencies:
1584 '@csstools/css-tokenizer': 3.0.1
1585
1586 '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': 1564 '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)':
1587 dependencies: 1565 dependencies:
1588 '@csstools/css-tokenizer': 4.0.0 1566 '@csstools/css-tokenizer': 4.0.0
1589 1567
1590 '@csstools/css-syntax-patches-for-csstree@1.0.26': {} 1568 '@csstools/css-syntax-patches-for-csstree@1.0.26': {}
1591 1569
1592 '@csstools/css-tokenizer@3.0.1': {}
1593
1594 '@csstools/css-tokenizer@4.0.0': {} 1570 '@csstools/css-tokenizer@4.0.0': {}
1595 1571
1596 '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)':
1597 dependencies:
1598 '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
1599 '@csstools/css-tokenizer': 3.0.1
1600
1601 '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': 1572 '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
1602 dependencies: 1573 dependencies:
1603 '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) 1574 '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
@@ -1751,16 +1722,16 @@ snapshots:
1751 1722
1752 '@sindresorhus/merge-streams@4.0.0': {} 1723 '@sindresorhus/merge-streams@4.0.0': {}
1753 1724
1754 '@stylistic/stylelint-plugin@3.1.1(stylelint@17.0.0)': 1725 '@stylistic/stylelint-plugin@5.0.1(stylelint@17.1.1)':
1755 dependencies: 1726 dependencies:
1756 '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) 1727 '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
1757 '@csstools/css-tokenizer': 3.0.1 1728 '@csstools/css-tokenizer': 4.0.0
1758 '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) 1729 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
1759 is-plain-object: 5.0.0 1730 postcss: 8.5.6
1760 postcss-selector-parser: 6.1.2 1731 postcss-selector-parser: 7.1.1
1761 postcss-value-parser: 4.2.0 1732 postcss-value-parser: 4.2.0
1762 style-search: 0.1.0 1733 style-search: 0.1.0
1763 stylelint: 17.0.0 1734 stylelint: 17.1.1
1764 1735
1765 '@trysound/sax@0.2.0': {} 1736 '@trysound/sax@0.2.0': {}
1766 1737
@@ -2015,11 +1986,6 @@ snapshots:
2015 mdn-data: 2.0.14 1986 mdn-data: 2.0.14
2016 source-map: 0.6.1 1987 source-map: 0.6.1
2017 1988
2018 css-tree@2.3.1:
2019 dependencies:
2020 mdn-data: 2.0.30
2021 source-map-js: 1.2.1
2022
2023 css-tree@3.1.0: 1989 css-tree@3.1.0:
2024 dependencies: 1990 dependencies:
2025 mdn-data: 2.12.2 1991 mdn-data: 2.12.2
@@ -2337,8 +2303,6 @@ snapshots:
2337 2303
2338 kind-of@6.0.3: {} 2304 kind-of@6.0.3: {}
2339 2305
2340 known-css-properties@0.34.0: {}
2341
2342 known-css-properties@0.37.0: {} 2306 known-css-properties@0.37.0: {}
2343 2307
2344 kuler@2.0.0: {} 2308 kuler@2.0.0: {}
@@ -2370,10 +2334,10 @@ snapshots:
2370 2334
2371 mdn-data@2.0.14: {} 2335 mdn-data@2.0.14: {}
2372 2336
2373 mdn-data@2.0.30: {}
2374
2375 mdn-data@2.12.2: {} 2337 mdn-data@2.12.2: {}
2376 2338
2339 mdn-data@2.27.0: {}
2340
2377 meow@14.0.0: {} 2341 meow@14.0.0: {}
2378 2342
2379 merge2@1.4.1: {} 2343 merge2@1.4.1: {}
@@ -2467,11 +2431,6 @@ snapshots:
2467 dependencies: 2431 dependencies:
2468 postcss: 8.5.6 2432 postcss: 8.5.6
2469 2433
2470 postcss-selector-parser@6.1.2:
2471 dependencies:
2472 cssesc: 3.0.0
2473 util-deprecate: 1.0.2
2474
2475 postcss-selector-parser@7.1.1: 2434 postcss-selector-parser@7.1.1:
2476 dependencies: 2435 dependencies:
2477 cssesc: 3.0.0 2436 cssesc: 3.0.0
@@ -2759,7 +2718,7 @@ snapshots:
2759 is-fullwidth-code-point: 3.0.0 2718 is-fullwidth-code-point: 3.0.0
2760 strip-ansi: 6.0.1 2719 strip-ansi: 6.0.1
2761 2720
2762 string-width@8.1.0: 2721 string-width@8.1.1:
2763 dependencies: 2722 dependencies:
2764 get-east-asian-width: 1.4.0 2723 get-east-asian-width: 1.4.0
2765 strip-ansi: 7.1.2 2724 strip-ansi: 7.1.2
@@ -2786,37 +2745,38 @@ snapshots:
2786 2745
2787 style-search@0.1.0: {} 2746 style-search@0.1.0: {}
2788 2747
2789 stylelint-config-recess-order@7.6.0(stylelint-order@7.0.1(stylelint@17.0.0))(stylelint@17.0.0): 2748 stylelint-config-recess-order@7.6.0(stylelint-order@7.0.1(stylelint@17.1.1))(stylelint@17.1.1):
2790 dependencies: 2749 dependencies:
2791 stylelint: 17.0.0 2750 stylelint: 17.1.1
2792 stylelint-order: 7.0.1(stylelint@17.0.0) 2751 stylelint-order: 7.0.1(stylelint@17.1.1)
2793 2752
2794 stylelint-config-sass-guidelines@12.1.0(postcss@8.5.6)(stylelint@17.0.0): 2753 stylelint-config-sass-guidelines@13.0.0(postcss@8.5.6)(stylelint@17.1.1):
2795 dependencies: 2754 dependencies:
2796 '@stylistic/stylelint-plugin': 3.1.1(stylelint@17.0.0) 2755 '@stylistic/stylelint-plugin': 5.0.1(stylelint@17.1.1)
2797 postcss: 8.5.6 2756 postcss: 8.5.6
2798 postcss-scss: 4.0.9(postcss@8.5.6) 2757 postcss-scss: 4.0.9(postcss@8.5.6)
2799 stylelint: 17.0.0 2758 stylelint: 17.1.1
2800 stylelint-scss: 6.7.0(stylelint@17.0.0) 2759 stylelint-scss: 7.0.0(stylelint@17.1.1)
2801 2760
2802 stylelint-order@7.0.1(stylelint@17.0.0): 2761 stylelint-order@7.0.1(stylelint@17.1.1):
2803 dependencies: 2762 dependencies:
2804 postcss: 8.5.6 2763 postcss: 8.5.6
2805 postcss-sorting: 9.1.0(postcss@8.5.6) 2764 postcss-sorting: 9.1.0(postcss@8.5.6)
2806 stylelint: 17.0.0 2765 stylelint: 17.1.1
2807 2766
2808 stylelint-scss@6.7.0(stylelint@17.0.0): 2767 stylelint-scss@7.0.0(stylelint@17.1.1):
2809 dependencies: 2768 dependencies:
2810 css-tree: 2.3.1 2769 css-tree: 3.1.0
2811 is-plain-object: 5.0.0 2770 is-plain-object: 5.0.0
2812 known-css-properties: 0.34.0 2771 known-css-properties: 0.37.0
2772 mdn-data: 2.27.0
2813 postcss-media-query-parser: 0.2.3 2773 postcss-media-query-parser: 0.2.3
2814 postcss-resolve-nested-selector: 0.1.6 2774 postcss-resolve-nested-selector: 0.1.6
2815 postcss-selector-parser: 6.1.2 2775 postcss-selector-parser: 7.1.1
2816 postcss-value-parser: 4.2.0 2776 postcss-value-parser: 4.2.0
2817 stylelint: 17.0.0 2777 stylelint: 17.1.1
2818 2778
2819 stylelint@17.0.0: 2779 stylelint@17.1.1:
2820 dependencies: 2780 dependencies:
2821 '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) 2781 '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
2822 '@csstools/css-syntax-patches-for-csstree': 1.0.26 2782 '@csstools/css-syntax-patches-for-csstree': 1.0.26
@@ -2851,7 +2811,7 @@ snapshots:
2851 postcss-safe-parser: 7.0.1(postcss@8.5.6) 2811 postcss-safe-parser: 7.0.1(postcss@8.5.6)
2852 postcss-selector-parser: 7.1.1 2812 postcss-selector-parser: 7.1.1
2853 postcss-value-parser: 4.2.0 2813 postcss-value-parser: 4.2.0
2854 string-width: 8.1.0 2814 string-width: 8.1.1
2855 supports-hyperlinks: 4.4.0 2815 supports-hyperlinks: 4.4.0
2856 svg-tags: 1.0.0 2816 svg-tags: 1.0.0
2857 table: 6.9.0 2817 table: 6.9.0
diff --git a/src/objects/_lightbox.scss b/src/objects/_lightbox.scss
index b95148f..5ff6d93 100644
--- a/src/objects/_lightbox.scss
+++ b/src/objects/_lightbox.scss
@@ -8,127 +8,104 @@
8@forward 'lightbox.vars'; 8@forward 'lightbox.vars';
9@use 'lightbox.vars' as vars; 9@use 'lightbox.vars' as vars;
10 10
11@use 'backdrop.vars' as backdrop;
12@use 'thumbnail.vars' as thumbnail;
13
11@mixin styles { 14@mixin styles {
12 @include materialize-at-root(meta.module-variables('vars')); 15 @include materialize-at-root(meta.module-variables('vars'));
13 16
14 @include bem.object('lightbox') { 17 @include bem.object('lightbox') {
15 flex: 1 1 auto; 18 box-sizing: border-box;
16 min-block-size: 0; 19 display: none;
20 flex: 1 1 auto;
21 flex-direction: column;
22 justify-content: flex-end;
23 inline-size: 100%;
24 max-inline-size: none;
25 block-size: 100%;
26 min-block-size: 0;
27 max-block-size: none;
28 padding: 0;
29 margin: 0;
30 background-color: transparent;
31 border: 0;
32
33 &::backdrop {
34 background-color: props.get(backdrop.$bg-color);
35 backdrop-filter: blur(props.get(backdrop.$blur));
36 }
37
38 &[open] {
39 display: flex;
40 }
17 41
18 @include bem.elem('header') { 42 @include bem.elem('controls') {
19 display: flex; 43 position: absolute;
20 grid-area: header; 44 inset-block-start: props.get(vars.$pad);
21 align-items: flex-start; 45 inset-inline-end: props.get(vars.$pad);
22 padding-block-start: props.get(vars.$pad); 46 z-index: 20;
23 padding-inline: props.get(vars.$pad); 47 padding: props.get(vars.$controls--pad-y) props.get(vars.$controls--pad-x);
48 border-radius: 10em;
24 } 49 }
25 50
26 @include bem.elem('img') { 51 @include bem.elem('img') {
27 box-sizing: border-box; 52 position: relative;
53 z-index: 10;
28 display: block; 54 display: block;
29 grid-area: content; 55 flex: 1 1 auto;
30 place-self: center;
31 inline-size: auto; 56 inline-size: auto;
57 min-inline-size: 0;
32 max-inline-size: 100%; 58 max-inline-size: 100%;
33 block-size: auto; 59 block-size: auto;
34 max-block-size: props.get(vars.$image--max-height); 60 min-block-size: 0;
35 padding: props.get(vars.$pad); 61 max-block-size: 100%;
36 margin-inline: auto; 62 margin: auto;
37 border-radius: calc(props.get(vars.$pad) + props.get(vars.$image--border-radius)); 63 object-fit: contain;
38 }
39 64
40 @include bem.elem('thumbnails') { 65 @include bem.is('hidden') {
41 display: none; 66 display: none;
42 grid-area: thumbnails;
43 gap: props.get(vars.$thumbnails--spacing);
44 padding: props.get(vars.$pad);
45 margin-block-start: calc(-1 * props.get(vars.$pad));
46 overflow: auto;
47 }
48 67
49 @include bem.elem('close-btn') { 68 @include bem.next-elem('placeholder') {
50 display: none; 69 display: block;
51 flex: 0 0 auto;
52 margin-block-start: calc(-.5 * props.get(vars.$pad));
53 margin-inline: auto calc(-.5 * props.get(vars.$pad));
54 font-size: props.get(vars.$close-button--font-size);
55 }
56
57 @include bem.elem('nav-btn') {
58 position: relative;
59 display: none;
60 align-self: center;
61 overflow: visible;
62 font-size: props.get(vars.$nav-button--font-size);
63
64 &::before {
65 position: absolute;
66 inset-block-start: 50%;
67 display: block;
68 inline-size: props.get(vars.$nav-button--inline-size);
69 block-size: props.get(vars.$nav-button--block-size);
70 content: '';
71 transform: translateY(-50%);
72 }
73
74 @include bem.modifier('prev') {
75 grid-area: prev;
76 margin-inline: calc(.5 * props.get(vars.$pad)) calc(-1 * props.get(vars.$pad));
77
78 &::before {
79 inset-inline-start: 0;
80 }
81 }
82
83 @include bem.modifier('next') {
84 grid-area: next;
85 margin-inline: calc(-1 * props.get(vars.$pad)) calc(.5 * props.get(vars.$pad));
86
87 &::before {
88 inset-inline-end: 0;
89 } 70 }
90 } 71 }
91 } 72 }
92 73
93 @include bem.modifier('interactive') { 74 @include bem.elem('placeholder') {
94 display: grid; 75 position: absolute;
95 grid-template-areas: 76 inset-block-start: 50%;
96 'header header header' 77 inset-inline-start: 50%;
97 'prev content next' 78 z-index: 5;
98 'thumbnails thumbnails thumbnails'; 79 display: none;
99 grid-template-rows: auto minmax(0, 1fr) auto auto; 80 transform: translate(-50, -50);
100 grid-template-columns: auto minmax(0, 1fr) auto; 81 }
101
102 @include bem.modifier('fullscreen') {
103 block-size: props.get(vars.$fullscreen--height);
104 }
105
106 @include bem.elem('img') {
107 display: none;
108 max-block-size: 100%;
109 margin-inline: 0;
110
111 @include bem.multi('&:target', 'is' 'visible') {
112 display: block;
113 }
114 }
115 82
116 @include bem.elem('thumbnails') { 83 @include bem.elem('thumbnails') {
117 display: flex; 84 display: flex;
118 } 85 flex: 0 0 auto;
86 gap: props.get(vars.$thumbnail--spacing);
87 justify-content: center;
88 padding: props.get(vars.$pad);
89 overflow: auto;
90 }
119 91
120 @include bem.elem('close-btn') { 92 @include bem.elem('thumbnail') {
121 display: block; 93 inline-size: props.get(vars.$thumbnail--width);
122 } 94 transition: inline-size .1s ease, margin-inline .1s ease;
123 95
124 @include bem.elem('nav-btn') { 96 @include bem.is('selected') {
125 display: block; 97 inline-size: props.get(vars.$thumbnail--active--width);
98 margin-inline: props.get(vars.$thumbnail--active--spacing);
126 } 99 }
127 } 100 }
128 101
129 @each $theme in map.keys(props.get(vars.$static-themes)) { 102 @each $theme in map.keys(props.get(vars.$static-themes)) {
130 @include bem.modifier(string.slice($theme, 3)) { 103 @include bem.modifier(string.slice($theme, 3)) {
131 color: props.get(vars.$static-themes, $theme, --text); 104 color: props.get(vars.$static-themes, $theme, --text);
105
106 @include bem.elem('controls') {
107 background-color: props.get(vars.$static-themes, $theme, --controls-bg);
108 }
132 } 109 }
133 } 110 }
134 } 111 }
diff --git a/src/objects/_lightbox.vars.scss b/src/objects/_lightbox.vars.scss
index 6d22aa8..9f200b0 100644
--- a/src/objects/_lightbox.vars.scss
+++ b/src/objects/_lightbox.vars.scss
@@ -4,30 +4,27 @@
4@use '../core.vars' as core; 4@use '../core.vars' as core;
5 5
6$pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default; 6$pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default;
7$fullscreen--height: props.def(--o-lightbox--fullscreen--height, 100vh) !default;
8 7
9$image--max-height: props.def(--o-lightbox--image--max-height, calc(100vh - props.get(core.$size--600))) !default; 8$controls--pad-x: props.def(--o-lightbox--controls--pad-x, props.get(core.$size--150)) !default;
10$image--border-radius: props.def(--o-lightbox--image--border-radius, props.get(core.$rounding)) !default; 9$controls--pad-y: props.def(--o-lightbox--controls--pad-y, props.get(core.$size--50)) !default;
11 10
12$close-button--font-size: props.def(--o-lightbox--close-button--font-size, props.get(core.$font-size--200)) !default; 11$thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default;
13 12$thumbnail--spacing: props.def(--o-lightbox--thumbnail--spacing, props.get(core.$size--100)) !default;
14$nav-button--inline-size: props.def(--o-lightbox--nav-button--inline-size, props.get(core.$size--2000)) !default; 13$thumbnail--active--width: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--1000)) !default;
15$nav-button--block-size: props.def(--o-lightbox--nav-button--block-size, props.get(core.$size--3800)) !default; 14$thumbnail--active--spacing: props.def(--o-lightbox--thumbnail--active--spacing, props.get(core.$size--250)) !default;
16$nav-button--font-size: props.def(--o-lightbox--nav-button--font-size, props.get(core.$font-size--200)) !default;
17
18$nav-button--inline-size--md: props.def(--o-lightbox--nav-button--inline-size, props.get(core.$size--2500), 'md') !default;
19$nav-button--block-size--md: props.def(--o-lightbox--nav-button--block-size, props.get(core.$size--2500), 'md') !default;
20
21$thumbnails--spacing: props.def(--o-lightbox--thumbnails--spacing, props.get(core.$size--100)) !default;
22 15
23$static-themes: props.def(--o-lightbox, (), 'color'); 16$static-themes: props.def(--o-lightbox, (), 'color');
24 17
18$thumbnail--width--md: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--400), 'md') !default;
19$thumbnail--active--width--md: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--600), 'md') !default;
20
25@each $theme in map.keys(props.get(core.$transparent-colors)) { 21@each $theme in map.keys(props.get(core.$transparent-colors)) {
26 $lightbox-theme: --static-#{string.slice($theme, 3)}; 22 $lightbox-theme: --static-#{string.slice($theme, 3)};
27 23
28 $static-themes: props.merge($static-themes, ( 24 $static-themes: props.merge($static-themes, (
29 $lightbox-theme: ( 25 $lightbox-theme: (
30 --text: props.get(core.$transparent-colors, $theme, --800), 26 --text: props.get(core.$transparent-colors, $theme, --text),
27 --controls-bg: props.get(core.$transparent-colors, $theme, --700),
31 ) 28 )
32 )); 29 ));
33} 30}
diff --git a/src/objects/_thumbnail.scss b/src/objects/_thumbnail.scss
index 60a98af..2ccb50b 100644
--- a/src/objects/_thumbnail.scss
+++ b/src/objects/_thumbnail.scss
@@ -21,7 +21,6 @@
21 outline: props.get(vars.$border-color) solid props.get(vars.$border-width); 21 outline: props.get(vars.$border-color) solid props.get(vars.$border-width);
22 outline-offset: calc(-1 * props.get(vars.$border-width)); 22 outline-offset: calc(-1 * props.get(vars.$border-width));
23 border-radius: props.get(vars.$rounding); 23 border-radius: props.get(vars.$rounding);
24 opacity: .75;
25 24
26 &:hover, 25 &:hover,
27 &:active, 26 &:active,
@@ -30,16 +29,6 @@
30 opacity: 1; 29 opacity: 1;
31 } 30 }
32 31
33 @include bem.is('selected') {
34 $focus-border-offset: calc(-1 * props.get(vars.$selected--border-width));
35
36 margin: $focus-border-offset;
37 outline: none;
38 border: props.get(vars.$selected--border-width) solid props.get(vars.$selected--border-color);
39 border-radius: calc(props.get(vars.$rounding) - $focus-border-offset);
40 opacity: 1;
41 }
42
43 @include bem.elem('image') { 32 @include bem.elem('image') {
44 position: absolute; 33 position: absolute;
45 inset-block-start: 0; 34 inset-block-start: 0;
diff --git a/src/objects/_thumbnail.vars.scss b/src/objects/_thumbnail.vars.scss
index e49e52e..d2a38c0 100644
--- a/src/objects/_thumbnail.vars.scss
+++ b/src/objects/_thumbnail.vars.scss
@@ -3,7 +3,7 @@
3@use 'iro-sass/src/props'; 3@use 'iro-sass/src/props';
4@use '../core.vars' as core; 4@use '../core.vars' as core;
5 5
6$size: props.def(--o-thumbnail--size, props.get(core.$size--700)) !default; 6$size: props.def(--o-thumbnail--size, props.get(core.$size--900)) !default;
7$rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default; 7$rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default;
8$spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default; 8$spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default;
9$border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default; 9$border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default;
diff --git a/src_demo/index.scss b/src_demo/index.scss
index 53b01af..257318e 100644
--- a/src_demo/index.scss
+++ b/src_demo/index.scss
@@ -35,6 +35,7 @@
35@include iro.o-figure--styles; 35@include iro.o-figure--styles;
36@include iro.o-field-label--styles; 36@include iro.o-field-label--styles;
37@include iro.o-heading--styles; 37@include iro.o-heading--styles;
38@include iro.o-thumbnail--styles;
38@include iro.o-lightbox--styles; 39@include iro.o-lightbox--styles;
39@include iro.o-menu--styles; 40@include iro.o-menu--styles;
40@include iro.o-navbar--styles; 41@include iro.o-navbar--styles;
@@ -47,7 +48,6 @@
47@include iro.o-table--styles; 48@include iro.o-table--styles;
48@include iro.o-tabbar--styles; 49@include iro.o-tabbar--styles;
49@include iro.o-text-field--styles; 50@include iro.o-text-field--styles;
50@include iro.o-thumbnail--styles;
51 51
52@include iro.utils--styles; 52@include iro.utils--styles;
53 53
diff --git a/tpl/objects/lightbox.pug b/tpl/objects/lightbox.pug
index 2d520b5..0fddad1 100644
--- a/tpl/objects/lightbox.pug
+++ b/tpl/objects/lightbox.pug
@@ -11,26 +11,28 @@ mixin lightbox(images)
11 } 11 }
12 let thumbnailClasses = { 12 let thumbnailClasses = {
13 'o-thumbnail': true, 13 'o-thumbnail': true,
14 'o-lightbox__thumbnail': true,
14 } 15 }
16 let inverseTheme = {
17 "static-black": "static-white",
18 "static-white": "static-black",
19 }[attributes.theme]
15 20
16 if (attributes.theme) { 21 if (attributes.theme) {
17 classes[`o-lightbox--${attributes.theme}`] = true; 22 classes[`o-lightbox--${attributes.theme}`] = true;
18 linksClasses[`s-links--${attributes.theme}`] = true; 23 linksClasses[`s-links--${inverseTheme}`] = true;
19 thumbnailClasses[`o-thumbnail--${attributes.theme}`] = true; 24 thumbnailClasses[`o-thumbnail--${inverseTheme}`] = true;
20 } 25 }
21 26
22 div(class=classes) 27 div(class=classes)
23 header.o-lightbox__header
24 div(class=linksClasses)
25 block
26 +button(theme=attributes.theme pill=true quiet=true icon='x' class='o-lightbox__close-btn')
27
28 each img, i in images 28 each img, i in images
29 img(src=images[i] id=('image-' + i) class=`o-lightbox__img ${attributes.interactive && !i ? 'is-visible' : ''}`) 29 img(src=images[i] id=('image-' + i) class=`o-lightbox__img ${attributes.interactive && !i ? 'is-visible' : ''}`)
30 30
31 if images.length > 1 31 .o-lightbox__controls
32 +button(theme=attributes.theme pill=true quiet=true icon='chevron-left' class='o-lightbox__nav-btn o-lightbox__nav-btn--prev') 32 if images.length > 1
33 +button(theme=attributes.theme pill=true quiet=true icon='chevron-right' class='o-lightbox__nav-btn o-lightbox__nav-btn--next') 33 +button(theme=inverseTheme pill=true quiet=true icon='chevron-left' class='o-lightbox__nav-btn o-lightbox__nav-btn--prev')
34 +button(theme=inverseTheme pill=true quiet=true icon='chevron-right' class='o-lightbox__nav-btn o-lightbox__nav-btn--next')
35 +button(theme=inverseTheme pill=true quiet=true icon='x' class='o-lightbox__close-btn')
34 36
35 .o-lightbox__thumbnails 37 .o-lightbox__thumbnails
36 each img, i in images 38 each img, i in images
@@ -38,7 +40,7 @@ mixin lightbox(images)
38 let classes = { 'is-selected': i === 0 } 40 let classes = { 'is-selected': i === 0 }
39 Object.assign(classes, thumbnailClasses) 41 Object.assign(classes, thumbnailClasses)
40 42
41 a.o-thumbnail(class=classes href='#image-' + i) 43 a(class=classes href='#image-' + i)
42 img.o-thumbnail__image(src=img) 44 img.o-thumbnail__image(src=img)
43 button(class=thumbnailClasses) 45 button(class=thumbnailClasses)
44 +icon('volume-2')(class='o-thumbnail__icon') 46 +icon('volume-2')(class='o-thumbnail__icon')
diff --git a/tpl/views/lightbox.pug b/tpl/views/lightbox.pug
index 7e366c0..c4b9878 100644
--- a/tpl/views/lightbox.pug
+++ b/tpl/views/lightbox.pug
@@ -14,7 +14,7 @@ mixin view-lightbox
14 14
15 .c-box 15 .c-box
16 +backdrop 16 +backdrop
17 +lightbox(['avatar.png', 'ava_feralbot.png', 'volpeon_spooky.png'])(theme='static-white') 17 +lightbox(['avatar.png', 'ava_feralbot.png', 'volpeon_spooky.png'])(theme='static-black')
18 = "Let's try multiple links! " 18 = "Let's try multiple links! "
19 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925") 19 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925")
20 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925" 20 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925"
@@ -27,7 +27,7 @@ mixin view-lightbox
27 27
28 .c-box 28 .c-box
29 +backdrop 29 +backdrop
30 +lightbox(['avatar.png'])(theme='static-white') 30 +lightbox(['avatar.png'])(theme='static-black')
31 = "Let's try multiple links! " 31 = "Let's try multiple links! "
32 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925") 32 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925")
33 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925" 33 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925"
@@ -39,7 +39,7 @@ mixin view-lightbox
39 = "https://mk.vulpes.one/files/081e0684-08dc-4a42-b810-b0ac63ec7d06" 39 = "https://mk.vulpes.one/files/081e0684-08dc-4a42-b810-b0ac63ec7d06"
40 40
41 +backdrop(maxHeight=true) 41 +backdrop(maxHeight=true)
42 +lightbox(['avatar.png', 'ava_feralbot.png', 'volpeon_spooky.png'])(theme='static-white' interactive=true) 42 +lightbox(['avatar.png', 'ava_feralbot.png', 'volpeon_spooky.png'])(theme='static-black' interactive=true)
43 = "Let's try multiple links! " 43 = "Let's try multiple links! "
44 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925") 44 a(href="https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925")
45 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925" 45 = "https://mk.vulpes.one/files/3023f361-124a-4c80-bb69-9535e47c2925"