@kendawson-online/vantl 2.0.0 → 2.0.4

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,746 @@
1
+ .timeline {
2
+ box-sizing: border-box;
3
+ position: relative;
4
+ overflow-x: hidden;
5
+
6
+ /* CSS Custom Properties for dynamic colors */
7
+ --timeline-line-color: #DDD;
8
+ --timeline-node-color: #DDD;
9
+ --timeline-node-bg: #FFF;
10
+ --timeline-nav-color: #FFF;
11
+ --timeline-nav-border: #DDD;
12
+ }
13
+
14
+ /* Timeline heading */
15
+ .timeline__heading {
16
+ font-size: 2rem;
17
+ font-weight: 700;
18
+ margin: 0 0 60px;
19
+ text-align: center;
20
+ color: #333;
21
+ }
22
+
23
+ .timeline *,
24
+ .timeline *::before,
25
+ .timeline *::after {
26
+ box-sizing: inherit;
27
+ }
28
+
29
+ .timeline:not(.timeline--horizontal)::before {
30
+ background-color: var(--timeline-line-color);
31
+ bottom: 0;
32
+ content: '';
33
+ left: 50%;
34
+ margin-left: -2px;
35
+ position: absolute;
36
+ top: 0;
37
+ width: 4px;
38
+ z-index: 1;
39
+ }
40
+
41
+ .timeline__wrap {
42
+ overflow: hidden;
43
+ position: relative;
44
+ z-index: 2;
45
+ }
46
+
47
+ .timeline--horizontal .timeline__wrap {
48
+ overflow: visible;
49
+ }
50
+
51
+ .timeline__item {
52
+ font-size: 1rem;
53
+ padding: 10px 40px 10px 0;
54
+ position: relative;
55
+ width: 50%;
56
+ z-index: 2;
57
+ }
58
+
59
+ /* Vertical timeline (not mobile) - side-by-side layout */
60
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__content {
61
+ max-height: 200px;
62
+ display: flex;
63
+ flex-direction: column;
64
+ }
65
+
66
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__image {
67
+ flex-shrink: 0;
68
+ }
69
+
70
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__content > div {
71
+ flex: 1;
72
+ min-height: 0;
73
+ overflow: hidden;
74
+ display: flex;
75
+ flex-direction: column;
76
+ }
77
+
78
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__content h3 {
79
+ text-align: center;
80
+ margin: 0 0 6px;
81
+ flex-shrink: 0;
82
+ }
83
+
84
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__content p {
85
+ margin-bottom: 0;
86
+ overflow: hidden;
87
+ flex: 1;
88
+ min-height: 0;
89
+ }
90
+
91
+ .timeline:not(.timeline--horizontal):not(.timeline--mobile) .timeline__item .timeline__image {
92
+ width: 100px;
93
+ height: auto;
94
+ max-height: 100px;
95
+ object-fit: cover;
96
+ margin: 0 auto 12px;
97
+ }
98
+
99
+ .timeline__item::after {
100
+ background-color: var(--timeline-node-bg);
101
+ border: 4px solid var(--timeline-node-color);
102
+ border-radius: 50%;
103
+ content: '';
104
+ height: 20px;
105
+ position: absolute;
106
+ right: -10px;
107
+ transform: translateY(-50%);
108
+ top: 50%;
109
+ width: 20px;
110
+ z-index: 1;
111
+ }
112
+
113
+ .timeline__item.animated {
114
+ animation-duration: 1s;
115
+ animation-fill-mode: both;
116
+ opacity: 0;
117
+ }
118
+
119
+ .timeline__item.fadeIn {
120
+ animation-name: fadeIn;
121
+ }
122
+
123
+ /* Active state for deep linking */
124
+ .timeline__item--active .timeline__content {
125
+ transform: scale(1.05);
126
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
127
+ }
128
+
129
+ .timeline__item--left {
130
+ left: 0;
131
+ }
132
+
133
+ .timeline__item--right {
134
+ left: 50%;
135
+ padding: 10px 0 10px 40px;
136
+ }
137
+
138
+ .timeline__item--right::after {
139
+ left: -10px;
140
+ }
141
+
142
+ .timeline__item--right .timeline__content::before {
143
+ border-bottom: 10px solid transparent;
144
+ border-right: 12px solid #CCC;
145
+ border-left: none;
146
+ border-top: 10px solid transparent;
147
+ left: -12px;
148
+ }
149
+
150
+ .timeline__item--right .timeline__content::after {
151
+ border-bottom: 9px solid transparent;
152
+ border-right: 11px solid #FFF;
153
+ border-left: none;
154
+ border-top: 9px solid transparent;
155
+ left: -10px;
156
+ }
157
+
158
+ .timeline__content {
159
+ background-color: #FFF;
160
+ border: 1px solid #CCC;
161
+ border-radius: 10px;
162
+ color: #333;
163
+ display: block;
164
+ padding: 20px;
165
+ position: relative;
166
+ }
167
+
168
+ /* Image styling - fluid to fit content box */
169
+ .timeline__image {
170
+ width: 100%;
171
+ height: auto;
172
+ max-width: 100%;
173
+ border-radius: 8px;
174
+ margin-bottom: 12px;
175
+ display: block;
176
+ }
177
+
178
+ /* Horizontal timeline images - square thumbnails */
179
+ .timeline--horizontal .timeline__image {
180
+ width: 100px;
181
+ height: 100px;
182
+ object-fit: cover;
183
+ margin: 0 auto 8px;
184
+ }
185
+
186
+ .timeline__content::before,
187
+ .timeline__content::after {
188
+ content: '';
189
+ height: 0;
190
+ position: absolute;
191
+ transform: translateY(-50%);
192
+ top: 50%;
193
+ width: 0;
194
+ }
195
+
196
+ .timeline__content::before {
197
+ border-bottom: 10px solid transparent;
198
+ border-left: 12px solid #CCC;
199
+ border-top: 10px solid transparent;
200
+ right: -12px;
201
+ z-index: 1;
202
+ }
203
+
204
+ .timeline__content::after {
205
+ border-bottom: 9px solid transparent;
206
+ border-left: 11px solid #FFF;
207
+ border-top: 9px solid transparent;
208
+ right: -10px;
209
+ z-index: 2;
210
+ }
211
+
212
+ .timeline__content h2 {
213
+ font-size: 20px;
214
+ font-weight: 700;
215
+ margin: 0 0 10px;
216
+ }
217
+
218
+ .timeline__content h3 {
219
+ font-size: 18px;
220
+ font-weight: 700;
221
+ margin: 0 0 10px;
222
+ }
223
+
224
+ .timeline__content p {
225
+ font-size: 15px;
226
+ line-height: 1.5;
227
+ margin-bottom: 10px;
228
+ }
229
+
230
+ .timeline--horizontal {
231
+ font-size: 0;
232
+ padding: 0 60px;
233
+ overflow-x: hidden;
234
+ overflow-y: visible;
235
+ white-space: nowrap;
236
+ }
237
+
238
+ .timeline--horizontal .timeline-divider {
239
+ background-color: var(--timeline-line-color);
240
+ display: block;
241
+ height: 4px;
242
+ left: 40px;
243
+ position: absolute;
244
+ transform: translateY(-50%);
245
+ right: 40px;
246
+ z-index: 1;
247
+ }
248
+
249
+ .timeline--horizontal .timeline__items {
250
+ transition: all 0.8s;
251
+ will-change: transform;
252
+ }
253
+
254
+ .timeline--horizontal .timeline__item {
255
+ display: inline-block;
256
+ left: 0;
257
+ padding: 0 0 40px;
258
+ position: relative;
259
+ transition: none;
260
+ vertical-align: top;
261
+ white-space: normal;
262
+ width: 200px;
263
+ }
264
+
265
+ .timeline--horizontal .timeline__item .timeline__content {
266
+ padding: 12px;
267
+ min-height: 180px;
268
+ }
269
+
270
+ .timeline--horizontal .timeline__item .timeline__content h3 {
271
+ font-size: 18px;
272
+ font-weight: 700;
273
+ margin: 0 0 8px;
274
+ }
275
+
276
+ .timeline--horizontal .timeline__item .timeline__content p {
277
+ font-size: 11px;
278
+ line-height: 1.4;
279
+ margin-bottom: 0;
280
+ }
281
+
282
+ .timeline--horizontal .timeline__item::after {
283
+ left: 50%;
284
+ right: auto;
285
+ transform: translate(-50%, -50%);
286
+ top: 100%;
287
+ }
288
+
289
+ .timeline--horizontal .timeline__item .timeline__item__inner {
290
+ display: table;
291
+ height: 100%;
292
+ width: 100%;
293
+ }
294
+
295
+ .timeline--horizontal .timeline__item .timeline__content__wrap {
296
+ display: table-cell;
297
+ margin: 0;
298
+ padding: 0;
299
+ vertical-align: bottom;
300
+ }
301
+
302
+ .timeline--horizontal .timeline__item .timeline__content::before {
303
+ border-left: 12px solid transparent;
304
+ border-right: 12px solid transparent;
305
+ border-top: 12px solid #CCC;
306
+ left: 50%;
307
+ right: auto;
308
+ transform: translateX(-50%);
309
+ top: 100%;
310
+ }
311
+
312
+ .timeline--horizontal .timeline__item .timeline__content::after {
313
+ border-left: 10px solid transparent;
314
+ border-right: 10px solid transparent;
315
+ border-top: 10px solid #FFF;
316
+ left: 50%;
317
+ right: auto;
318
+ transform: translateX(-50%);
319
+ top: 100%;
320
+ }
321
+
322
+ .timeline--horizontal .timeline__item--bottom {
323
+ padding: 40px 0 0;
324
+ }
325
+
326
+ .timeline--horizontal .timeline__item--bottom::after {
327
+ top: 0;
328
+ }
329
+
330
+ .timeline--horizontal .timeline__item--bottom .timeline__content__wrap {
331
+ vertical-align: top;
332
+ }
333
+
334
+ .timeline--horizontal .timeline__item--bottom .timeline__content::before {
335
+ border-bottom: 12px solid #CCC;
336
+ border-left: 12px solid transparent;
337
+ border-right: 12px solid transparent;
338
+ border-top: none;
339
+ bottom: 100%;
340
+ top: auto;
341
+ }
342
+
343
+ .timeline--horizontal .timeline__item--bottom .timeline__content::after {
344
+ border-bottom: 10px solid #FFF;
345
+ border-left: 10px solid transparent;
346
+ border-right: 10px solid transparent;
347
+ border-top: none;
348
+ bottom: 100%;
349
+ top: auto;
350
+ }
351
+
352
+ .timeline-nav-button {
353
+ background-color: var(--timeline-nav-color);
354
+ border: 3px solid var(--timeline-nav-border);
355
+ border-radius: 50px;
356
+ box-sizing: border-box;
357
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
358
+ cursor: pointer;
359
+ display: block;
360
+ height: 40px;
361
+ outline: none;
362
+ position: absolute;
363
+ text-indent: -9999px;
364
+ transform: translateY(-50%);
365
+ top: 50%;
366
+ width: 40px;
367
+ z-index: 10;
368
+ transition: all 0.3s ease;
369
+ }
370
+
371
+ .timeline-nav-button:hover {
372
+ transform: translateY(-50%) scale(1.15);
373
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
374
+ }
375
+
376
+ .timeline-nav-button:disabled {
377
+ opacity: .5;
378
+ pointer-events: none;
379
+ cursor: not-allowed;
380
+ user-select: none;
381
+ }
382
+
383
+ .timeline-nav-button::before {
384
+ display: none;
385
+ }
386
+
387
+ .timeline-nav-button svg {
388
+ position: absolute;
389
+ left: 50%;
390
+ top: 50%;
391
+ transform: translate(-50%, -50%);
392
+ }
393
+
394
+ .timeline-nav-button--prev {
395
+ left: 10px;
396
+ }
397
+
398
+ .timeline-nav-button--next {
399
+ right: 10px;
400
+ }
401
+
402
+ .timeline--mobile {
403
+ padding: 0;
404
+ }
405
+
406
+ .timeline--mobile::before {
407
+ left: 10px !important;
408
+ margin: 0 !important;
409
+ }
410
+
411
+ .timeline--mobile .timeline__item {
412
+ left: 0;
413
+ padding-left: 40px;
414
+ padding-right: 0;
415
+ width: 100%;
416
+ margin-bottom: 20px;
417
+ }
418
+
419
+ .timeline--mobile .timeline__item .timeline__content {
420
+ display: flex;
421
+ flex-direction: row;
422
+ align-items: flex-start;
423
+ gap: 6px;
424
+ padding: 12px;
425
+ max-height: 100px;
426
+ }
427
+
428
+ .timeline--mobile .timeline__item .timeline__image {
429
+ width: 80px;
430
+ height: 80px;
431
+ object-fit: cover;
432
+ flex-shrink: 0;
433
+ margin: 0;
434
+ border-radius: 6px;
435
+ }
436
+
437
+ .timeline--mobile .timeline__item .timeline__content > div {
438
+ flex: 1;
439
+ min-width: 0;
440
+ }
441
+
442
+ .timeline--mobile .timeline__item .timeline__content h3 {
443
+ font-size: 16px;
444
+ margin: 0 0 6px;
445
+ }
446
+
447
+ .timeline--mobile .timeline__item .timeline__content p {
448
+ font-size: 13px;
449
+ line-height: 1.4;
450
+ margin: 0;
451
+ overflow: hidden;
452
+ text-overflow: ellipsis;
453
+ }
454
+
455
+ .timeline--mobile .timeline__item::after {
456
+ left: 2px;
457
+ margin: 0;
458
+ }
459
+
460
+ .timeline--mobile .timeline__item .timeline__content::before {
461
+ left: -12px;
462
+ border-bottom: 12px solid transparent;
463
+ border-right: 12px solid #CCC;
464
+ border-left: none;
465
+ border-top: 12px solid transparent;
466
+ }
467
+
468
+ .timeline--mobile .timeline__item .timeline__content::after {
469
+ left: -10px;
470
+ border-bottom: 10px solid transparent;
471
+ border-right: 10px solid #FFF;
472
+ border-left: none;
473
+ border-top: 10px solid transparent;
474
+ }
475
+
476
+ @keyframes fadeIn {
477
+ 0% {
478
+ opacity: 0;
479
+ top: 70px;
480
+ }
481
+ 100% {
482
+ opacity: 1;
483
+ top: 0px;
484
+ }
485
+ }
486
+
487
+ @keyframes liftUp {
488
+ 0% {
489
+ top: 0px;
490
+ }
491
+ 100% {
492
+ top: -15px;
493
+ }
494
+ }
495
+
496
+ /* Modal Styles */
497
+ .timeline-modal-overlay {
498
+ position: fixed;
499
+ top: 0;
500
+ left: 0;
501
+ width: 100%;
502
+ height: 100%;
503
+ background-color: rgba(0, 0, 0, 0.85);
504
+ z-index: 9998;
505
+ opacity: 0;
506
+ visibility: hidden;
507
+ transition: opacity 0.3s ease, visibility 0.3s ease;
508
+ }
509
+
510
+ .timeline-modal-overlay.timeline-modal-show {
511
+ opacity: 1;
512
+ visibility: visible;
513
+ }
514
+
515
+ .timeline-modal {
516
+ position: fixed;
517
+ top: 50%;
518
+ left: 50%;
519
+ transform: translate(-50%, -50%) scale(0.7);
520
+ width: 90%;
521
+ max-width: 900px;
522
+ max-height: 90vh;
523
+ background-color: #FFF;
524
+ border-radius: 12px;
525
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
526
+ z-index: 9999;
527
+ opacity: 0;
528
+ visibility: hidden;
529
+ overflow: hidden;
530
+ transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
531
+ }
532
+
533
+ .timeline-modal.timeline-modal-show {
534
+ opacity: 1;
535
+ visibility: visible;
536
+ transform: translate(-50%, -50%) scale(1);
537
+ }
538
+
539
+ .timeline-modal__content {
540
+ padding: 40px 40px 80px 40px;
541
+ max-height: 90vh;
542
+ overflow-y: auto;
543
+ overflow-x: hidden;
544
+ }
545
+
546
+ /* Fix scrollbar overflow on rounded corners */
547
+ .timeline-modal__content::-webkit-scrollbar {
548
+ width: 8px;
549
+ }
550
+
551
+ .timeline-modal__content::-webkit-scrollbar-track {
552
+ background: #f1f1f1;
553
+ border-radius: 0 12px 12px 0;
554
+ }
555
+
556
+ .timeline-modal__content::-webkit-scrollbar-thumb {
557
+ background: #888;
558
+ border-radius: 4px;
559
+ }
560
+
561
+ .timeline-modal__content::-webkit-scrollbar-thumb:hover {
562
+ background: #555;
563
+ }
564
+
565
+ .timeline-modal__image {
566
+ width: auto;
567
+ max-width: 100%;
568
+ height: auto;
569
+ border-radius: 8px;
570
+ margin: 0 auto 20px;
571
+ display: block;
572
+ }
573
+
574
+ .timeline-modal__title {
575
+ font-size: 28px;
576
+ font-weight: 700;
577
+ margin: 0 0 20px;
578
+ color: #333;
579
+ }
580
+
581
+ .timeline-modal__text {
582
+ font-size: 16px;
583
+ line-height: 1.6;
584
+ color: #555;
585
+ }
586
+
587
+ .timeline-modal__text p {
588
+ margin-bottom: 15px;
589
+ }
590
+
591
+ .timeline-modal__divider {
592
+ border: 0;
593
+ border-top: 1px solid #ddd;
594
+ margin: 30px 0;
595
+ }
596
+
597
+ .timeline-modal__close-bottom {
598
+ display: block;
599
+ margin: 30px auto 0;
600
+ padding: 12px 40px;
601
+ background-color: #333;
602
+ color: #fff;
603
+ border: none;
604
+ border-radius: 6px;
605
+ font-size: 16px;
606
+ cursor: pointer;
607
+ transition: background-color 0.2s ease;
608
+ }
609
+
610
+ .timeline-modal__close-bottom:hover {
611
+ background-color: #555;
612
+ }
613
+
614
+ .timeline-modal__close {
615
+ position: absolute;
616
+ top: 20px;
617
+ right: 20px;
618
+ width: 40px;
619
+ height: 40px;
620
+ background-color: rgba(0, 0, 0, 0.6);
621
+ border: none;
622
+ border-radius: 50%;
623
+ color: #FFF;
624
+ font-size: 24px;
625
+ line-height: 1;
626
+ cursor: pointer;
627
+ transition: background-color 0.2s ease, transform 0.2s ease;
628
+ display: flex;
629
+ align-items: center;
630
+ justify-content: center;
631
+ }
632
+
633
+ .timeline-modal__close:hover {
634
+ background-color: rgba(0, 0, 0, 0.8);
635
+ transform: scale(1.1);
636
+ }
637
+
638
+ .timeline-modal__close::before {
639
+ content: '×';
640
+ }
641
+
642
+ /* Make timeline items clickable */
643
+ .timeline__item {
644
+ cursor: pointer;
645
+ transition: transform 0.2s ease;
646
+ }
647
+
648
+ .timeline__item:hover .timeline__content {
649
+ transform: translateY(-2px);
650
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
651
+ }
652
+
653
+ /* Loading spinner styles */
654
+ .timeline__loader-overlay {
655
+ position: fixed;
656
+ inset: 0;
657
+ background-color: #ffffff;
658
+ z-index: 10000;
659
+ display: flex;
660
+ align-items: center;
661
+ justify-content: center;
662
+ }
663
+
664
+ .timeline__loader {
665
+ display: flex;
666
+ align-items: center;
667
+ justify-content: center;
668
+ padding: 20px;
669
+ }
670
+
671
+ .timeline__loader-spinner {
672
+ width: 498px;
673
+ height: 328px;
674
+ display: block;
675
+ object-fit: contain;
676
+ }
677
+
678
+ /* Error display styles */
679
+ .timeline__error {
680
+ display: flex;
681
+ flex-direction: column;
682
+ align-items: center;
683
+ justify-content: center;
684
+ min-height: 300px;
685
+ padding: 60px 20px;
686
+ text-align: center;
687
+ background-color: #f9f9f9;
688
+ border: 2px solid #e0e0e0;
689
+ border-radius: 12px;
690
+ margin: 20px auto;
691
+ max-width: 600px;
692
+ }
693
+
694
+ .timeline__error-icon {
695
+ width: 200px;
696
+ height: 200px;
697
+ margin-bottom: 24px;
698
+ opacity: 0.8;
699
+ }
700
+
701
+ .timeline__error-title {
702
+ font-size: 24px;
703
+ font-weight: 700;
704
+ margin: 0 0 16px;
705
+ color: #d32f2f;
706
+ }
707
+
708
+ .timeline__error-message {
709
+ font-size: 16px;
710
+ line-height: 1.6;
711
+ margin: 0 0 16px;
712
+ color: #555;
713
+ }
714
+
715
+ .timeline__error-solution {
716
+ font-size: 15px;
717
+ line-height: 1.6;
718
+ margin: 0 0 12px;
719
+ color: #333;
720
+ background-color: #fff3cd;
721
+ border: 1px solid #ffc107;
722
+ border-radius: 6px;
723
+ padding: 12px 16px;
724
+ }
725
+
726
+ .timeline__error-solution strong {
727
+ color: #856404;
728
+ }
729
+
730
+ .timeline__error-details {
731
+ font-size: 13px;
732
+ line-height: 1.5;
733
+ margin: 12px 0 0;
734
+ color: #666;
735
+ font-family: 'Courier New', monospace;
736
+ background-color: #f5f5f5;
737
+ border: 1px solid #ddd;
738
+ border-radius: 4px;
739
+ padding: 8px 12px;
740
+ max-width: 100%;
741
+ overflow-x: auto;
742
+ }
743
+
744
+ .timeline__error-details strong {
745
+ color: #333;
746
+ }