zoomora 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,551 @@
1
+ /*!
2
+ * Zoomora Lightbox Plugin v1.0.0
3
+ * A modern, responsive lightbox plugin with zoom, fullscreen, and gallery features
4
+ *
5
+ * Copyright (c) 2025 Faruk Ahmed (FrontTheme)
6
+ * Licensed under MIT License
7
+ */
8
+
9
+ @use 'variables' as *;
10
+
11
+ @font-face {
12
+ font-family: 'Zoomora';
13
+ src: url('fonts/Zoomora.eot?y5poek');
14
+ src: url('fonts/Zoomora.eot?y5poek#iefix') format('embedded-opentype'),
15
+ url('fonts/Zoomora.ttf?y5poek') format('truetype'),
16
+ url('fonts/Zoomora.woff?y5poek') format('woff'),
17
+ url('fonts/Zoomora.svg?y5poek#Zoomora') format('svg');
18
+ font-weight: normal;
19
+ font-style: normal;
20
+ font-display: block;
21
+ }
22
+
23
+ i[class^="zoomorai-"] {
24
+ /* use !important to prevent issues with browser extensions that change fonts */
25
+ font-family: 'Zoomora' !important;
26
+ speak: never;
27
+ font-style: normal;
28
+ font-weight: normal;
29
+ font-variant: normal;
30
+ text-transform: none;
31
+ line-height: 1;
32
+
33
+ /* Better Font Rendering =========== */
34
+ -webkit-font-smoothing: antialiased;
35
+ -moz-osx-font-smoothing: grayscale;
36
+ }
37
+
38
+ .zoomorai-thumbnails:before {
39
+ content: "\e900";
40
+ }
41
+
42
+ .zoomorai-arrow-left:before {
43
+ content: "\e901";
44
+ }
45
+
46
+ .zoomorai-arrow-right:before {
47
+ content: "\e902";
48
+ }
49
+
50
+ .zoomorai-controls-on:before {
51
+ content: "\e903";
52
+ }
53
+
54
+ .zoomorai-zoom:before {
55
+ content: "\e904";
56
+ }
57
+
58
+ .zoomorai-controls-off:before {
59
+ content: "\e905";
60
+ }
61
+
62
+ .zoomorai-expand:before {
63
+ content: "\e906";
64
+ }
65
+
66
+ .zoomorai-collapse:before {
67
+ content: "\e907";
68
+ }
69
+
70
+ .zoomorai-close:before {
71
+ content: "\e908";
72
+ }
73
+
74
+ .zoomora {
75
+ position: fixed;
76
+ top: 0;
77
+ left: 0;
78
+ width: 100%;
79
+ height: 100%;
80
+ background: rgba($dark-color, 0.95);
81
+ backdrop-filter: blur(20px);
82
+ z-index: 10000;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ opacity: 0;
87
+ visibility: hidden;
88
+ transition: $transition-slow;
89
+ font-family: $font-family;
90
+ font-size: $font-size-base;
91
+ line-height: $line-height;
92
+ }
93
+
94
+ .zoomora.active {
95
+ opacity: 1;
96
+ visibility: visible;
97
+ }
98
+
99
+ .zoomora-container {
100
+ position: relative;
101
+ width: 100vw;
102
+ height: 100vh;
103
+ overflow: hidden;
104
+ transform: scale(0.8);
105
+ transition: transform 0.3s ease;
106
+ }
107
+
108
+ .zoomora.active .zoomora-container {
109
+ transform: scale(1);
110
+ }
111
+
112
+ .zoomora-header {
113
+ position: absolute;
114
+ top: 0;
115
+ left: 0;
116
+ right: 0;
117
+ color: #fff;
118
+ padding: 20px;
119
+ display: flex;
120
+ justify-content: space-between;
121
+ align-items: center;
122
+ z-index: 10;
123
+ }
124
+
125
+ .zoomora-counter {
126
+ font-size: 16px;
127
+ font-weight: 600;
128
+ background: rgba(255, 255, 255, 0.2);
129
+ padding: 8px 16px;
130
+ border-radius: 25px;
131
+ backdrop-filter: blur(10px);
132
+ }
133
+
134
+ .zoomora-controls {
135
+ display: flex;
136
+ gap: 10px;
137
+ }
138
+
139
+ .zoomora-nav,
140
+ .zoomora-btn {
141
+ width: 50px;
142
+ height: 50px;
143
+ border: none;
144
+ border-radius: 50%;
145
+ background: rgba(255, 255, 255, 0.2);
146
+ color: white;
147
+ cursor: pointer;
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ transition: all 0.3s ease;
152
+ backdrop-filter: blur(10px);
153
+ font-size: 18px;
154
+ }
155
+
156
+ .zoomora-btn:hover {
157
+ background: rgba(255, 255, 255, 0.3);
158
+ transform: scale(1.1);
159
+ }
160
+
161
+ .zoomora-content {
162
+ position: relative;
163
+ width: 100%;
164
+ height: 100%;
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: center;
168
+ overflow: hidden;
169
+ }
170
+
171
+ .zoomora-media {
172
+ max-width: 100%;
173
+ max-height: 100%;
174
+ object-fit: contain;
175
+ transition: transform 0.3s ease;
176
+ cursor: pointer;
177
+ }
178
+
179
+ .zoomora-media.zoomed {
180
+ cursor: grab;
181
+ }
182
+
183
+ .zoomora-media.zoomed:active {
184
+ cursor: grabbing;
185
+ }
186
+
187
+ .zoomora-media.no-zoom {
188
+ cursor: default;
189
+ }
190
+
191
+ .zoomora-slide-container {
192
+ position: relative;
193
+ width: 100%;
194
+ height: 100%;
195
+ overflow: hidden;
196
+ text-align: center;
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ }
201
+
202
+ .zoomora-slide {
203
+ position: absolute;
204
+ width: 100%;
205
+ height: 100%;
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ opacity: 0;
210
+ transition: opacity 0.3s ease, transform 0.3s ease;
211
+ }
212
+
213
+ .zoomora-slide.active {
214
+ opacity: 1;
215
+ }
216
+
217
+ iframe.zoomora-video {
218
+ width: calc(100% - 200px);
219
+ max-width: 800px;
220
+ aspect-ratio: 16/9;
221
+ border-radius: 16px;
222
+ overflow: hidden;
223
+ }
224
+
225
+ .zoomora-slide.slide-effect {
226
+ transform: translateX(100%);
227
+ }
228
+
229
+ .zoomora-slide.slide-effect.active {
230
+ transform: translateX(0);
231
+ }
232
+
233
+ .zoomora-slide.slide-effect.prev {
234
+ transform: translateX(-100%);
235
+ }
236
+
237
+ .zoomora-nav {
238
+ position: absolute;
239
+ top: 50%;
240
+ transform: translateY(-50%);
241
+ width: 60px;
242
+ height: 60px;
243
+ font-size: 24px;
244
+ z-index: 10;
245
+ }
246
+
247
+ .zoomora-nav:hover {
248
+ background: rgba(255, 255, 255, 0.3);
249
+ transform: translateY(-50%) scale(1.1);
250
+ }
251
+
252
+ .zoomora-nav.prev {
253
+ left: 20px;
254
+ }
255
+
256
+ .zoomora-nav.next {
257
+ right: 20px;
258
+ }
259
+
260
+ .zoomora-caption {
261
+ position: absolute;
262
+ bottom: 120px;
263
+ left: 50%;
264
+ transform: translateX(-50%) translateY(0);
265
+ background: rgba($dark-color, 0.7);
266
+ color: white;
267
+ padding: 10px 20px;
268
+ border-radius: 10px;
269
+ backdrop-filter: blur(10px);
270
+ max-width: 90%;
271
+ text-align: center;
272
+ font-size: 14px;
273
+ z-index: 10;
274
+ transition: bottom 0.3s ease, transform 0.3s ease;
275
+ }
276
+
277
+ .zoomora-caption.single-item-thumbnail {
278
+ bottom: 20px !important;
279
+ }
280
+
281
+ .zoomora-thumbnails {
282
+ position: absolute;
283
+ bottom: 20px;
284
+ left: 50%;
285
+ transform: translateX(-50%) translateY(0);
286
+ display: flex;
287
+ gap: 8px;
288
+ background: rgba($dark-color, 0.5);
289
+ padding: 8px;
290
+ border-radius: 15px;
291
+ backdrop-filter: blur(10px);
292
+ max-width: 90%;
293
+ overflow-x: auto;
294
+ transition: opacity 0.3s ease, transform 0.3s ease;
295
+ }
296
+
297
+ .zoomora-thumbnails.thumbs-hidden {
298
+ transform: translateX(-50%) translateY(100%) !important;
299
+ opacity: 0 !important;
300
+ pointer-events: none !important;
301
+ }
302
+
303
+ .zoomora-thumb {
304
+ width: 40px;
305
+ height: 60px;
306
+ border-radius: 8px;
307
+ overflow: hidden;
308
+ cursor: pointer;
309
+ opacity: 0.6;
310
+ position: relative;
311
+ transition: all 0.4s ease;
312
+ }
313
+
314
+ .zoomora-thumb:hover {
315
+ opacity: 0.8;
316
+ }
317
+
318
+ .zoomora-thumb.active {
319
+ background: linear-gradient(180deg, #fff, #fff) padding-box,
320
+ linear-gradient(320deg, #4158D0, #C850C0, #0093E9) border-box;
321
+ border: 2px solid transparent !important;
322
+ opacity: 1;
323
+ width: 80px;
324
+ pointer-events: none;
325
+ }
326
+
327
+
328
+ .zoomora-thumb img {
329
+ width: 100%;
330
+ height: 100%;
331
+ object-fit: cover;
332
+ }
333
+
334
+ /* Responsive */
335
+ @media (max-width: 768px) {
336
+ .zoomora-header {
337
+ padding: 15px;
338
+ }
339
+ .zoomora-btn {
340
+ width: 40px;
341
+ height: 40px;
342
+ font-size: 16px;
343
+ }
344
+ .zoomora-nav {
345
+ width: 50px;
346
+ height: 50px;
347
+ font-size: 20px;
348
+ }
349
+ .zoomora-thumbnails {
350
+ padding: 10px;
351
+ }
352
+ .zoomora-thumb {
353
+ width: 50px;
354
+ height: 50px;
355
+ }
356
+ .zoomora-thumb.active {
357
+ width: 60px;
358
+ }
359
+ }
360
+
361
+ /* Loading animation */
362
+ .zoomora-loading {
363
+ position: absolute;
364
+ top: 50%;
365
+ left: 50%;
366
+ transform: translate(-50%, -50%);
367
+ width: 50px;
368
+ height: 50px;
369
+ border: 3px solid rgba(255, 255, 255, 0.3);
370
+ border-top: 3px solid white;
371
+ border-radius: 50%;
372
+ animation: spin 1s linear infinite;
373
+ }
374
+
375
+ @keyframes spin {
376
+ 0% {
377
+ transform: translate(-50%, -50%) rotate(0deg);
378
+ }
379
+ 100% {
380
+ transform: translate(-50%, -50%) rotate(360deg);
381
+ }
382
+ }
383
+
384
+ /* Fullscreen styles */
385
+ .zoomora.fullscreen {
386
+ background: $dark-color;
387
+ }
388
+
389
+ .zoomora.fullscreen .zoomora-container {
390
+ max-width: 100vw;
391
+ max-height: 100vh;
392
+ border-radius: 0;
393
+ }
394
+
395
+ /* Video container styles */
396
+ .zoomora-video-container {
397
+ position: relative;
398
+ display: inline-block;
399
+ width: 100%;
400
+ height: 100%;
401
+ }
402
+
403
+ .zoomora-video-container video {
404
+ width: 100%;
405
+ height: 100%;
406
+ object-fit: contain;
407
+ max-width: max-content;
408
+ }
409
+
410
+ /* Play button overlay styles */
411
+ .zoomora-play-button {
412
+ position: absolute;
413
+ top: 50%;
414
+ left: 50%;
415
+ transform: translate(-50%, -50%);
416
+ width: 80px;
417
+ height: 80px;
418
+ background: rgba(255, 255, 255, 0.8);
419
+ border-radius: 50%;
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ cursor: pointer;
424
+ transition: all 0.3s ease;
425
+ z-index: 10;
426
+ color: black;
427
+ border: 3px solid rgba(255, 255, 255, 0.3);
428
+ }
429
+
430
+ .zoomora-play-button:hover {
431
+ background: rgba(255, 255, 255, 0.9);
432
+ border-color: rgba(255, 255, 255, 0.5);
433
+ transform: translate(-50%, -50%) scale(1.1);
434
+ }
435
+
436
+ .zoomora-play-button svg {
437
+ width: 32px;
438
+ height: 32px;
439
+ margin-left: 4px; /* Slight offset to center the triangle visually */
440
+ }
441
+
442
+ /* Alternative smaller play button style */
443
+ .zoomora-play-button.small {
444
+ width: 60px;
445
+ height: 60px;
446
+ }
447
+
448
+ .zoomora-play-button.small svg {
449
+ width: 24px;
450
+ height: 24px;
451
+ }
452
+
453
+ /* Animation for play button appearance */
454
+ @keyframes playButtonFadeIn {
455
+ from {
456
+ opacity: 0;
457
+ transform: translate(-50%, -50%) scale(0.8);
458
+ }
459
+ to {
460
+ opacity: 1;
461
+ transform: translate(-50%, -50%) scale(1);
462
+ }
463
+ }
464
+
465
+ .zoomora-play-button {
466
+ animation: playButtonFadeIn 0.3s ease-out;
467
+ }
468
+
469
+ /* Video loading state */
470
+ .zoomora-video-container::before {
471
+ content: '';
472
+ position: absolute;
473
+ top: 0;
474
+ left: 0;
475
+ right: 0;
476
+ bottom: 0;
477
+ background: rgba($dark-color, 0.1);
478
+ z-index: 1;
479
+ pointer-events: none;
480
+ opacity: 0;
481
+ transition: opacity 0.3s ease;
482
+ }
483
+
484
+ .zoomora-video-container.loading::before {
485
+ opacity: 1;
486
+ }
487
+
488
+ /* Responsive adjustments */
489
+ @media (max-width: 768px) {
490
+ .zoomora-play-button {
491
+ width: 60px;
492
+ height: 60px;
493
+ }
494
+ .zoomora-play-button svg {
495
+ width: 24px;
496
+ height: 24px;
497
+ }
498
+ }
499
+
500
+ .zoomora-slides-container {
501
+ position: relative;
502
+ width: 100%;
503
+ height: 100%;
504
+ overflow: hidden;
505
+ }
506
+
507
+ .zoomora-slide {
508
+ position: absolute;
509
+ top: 0;
510
+ left: 0;
511
+ width: 100%;
512
+ height: 100%;
513
+ display: flex;
514
+ align-items: center;
515
+ justify-content: center;
516
+
517
+ &.fade-effect {
518
+ transition: opacity 300ms ease, transform 300ms ease;
519
+ }
520
+
521
+ &.slide-effect {
522
+ transition: transform 300ms ease, opacity 300ms ease;
523
+ }
524
+ }
525
+
526
+ .zoomora-header,
527
+ .zoomora-caption,
528
+ .zoomora-thumbnails,
529
+ .zoomora-nav {
530
+ transition: transform 300ms ease, opacity 300ms ease;
531
+ }
532
+
533
+ .zoomora.controls-hidden {
534
+ cursor: none;
535
+
536
+ .zoomora-header,
537
+ .zoomora-caption,
538
+ .zoomora-thumbnails,
539
+ .zoomora-nav {
540
+ pointer-events: none;
541
+ }
542
+ }
543
+
544
+ .zoomora-btn.active {
545
+ background-color: rgba(255, 255, 255, 0.2);
546
+ }
547
+
548
+ // Auto-hide button icon
549
+ #zoomoraAutoHideBtn.active {
550
+ color: $primary-color;
551
+ }