@jjlmoya/utils-audiovisual 1.4.0 → 1.6.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.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import type { VideoFrameExtractorUI } from './index';
3
- import './style.css';
4
3
 
5
4
  interface Props {
6
5
  ui: VideoFrameExtractorUI;
@@ -283,3 +282,432 @@ const { ui } = Astro.props;
283
282
  init();
284
283
  document.addEventListener('astro:page-load', init);
285
284
  </script>
285
+
286
+ <style>
287
+ :global(.vfe-root) {
288
+ --vfe-bg: #fff;
289
+ --vfe-bg-muted: #f8fafc;
290
+ --vfe-bg-glass: #fff;
291
+ --vfe-glass-border: #e2e8f0;
292
+ --vfe-glass-text: #6366f1;
293
+ --vfe-glass-muted: #94a3b8;
294
+ --vfe-glass-btn-bg: #f8fafc;
295
+ --vfe-glass-btn-border: #e2e8f0;
296
+ --vfe-glass-btn-text: #1e293b;
297
+ --vfe-batch-bg: #f1f5f9;
298
+ --vfe-border: #e2e8f0;
299
+ --vfe-text: #1e293b;
300
+ --vfe-text-muted: #94a3b8;
301
+ --vfe-primary: #6366f1;
302
+ --vfe-primary-light: rgba(99, 102, 241, 0.1);
303
+ --vfe-shadow: 0 25px 60px rgba(0,0,0,0.08);
304
+
305
+ max-width: 860px;
306
+ margin: 0 auto;
307
+ padding: 1rem;
308
+ }
309
+
310
+ :global(.theme-dark .vfe-root) {
311
+ --vfe-bg: #18181b;
312
+ --vfe-bg-muted: #09090b;
313
+ --vfe-bg-glass: #27272a;
314
+ --vfe-glass-border: #3f3f46;
315
+ --vfe-glass-text: #818cf8;
316
+ --vfe-glass-muted: #71717a;
317
+ --vfe-glass-btn-bg: #3f3f46;
318
+ --vfe-glass-btn-border: #52525b;
319
+ --vfe-glass-btn-text: #f4f4f5;
320
+ --vfe-batch-bg: #1c1c1f;
321
+ --vfe-border: #27272a;
322
+ --vfe-text: #f4f4f5;
323
+ --vfe-text-muted: #71717a;
324
+ --vfe-primary: #818cf8;
325
+ --vfe-primary-light: rgba(129, 140, 248, 0.12);
326
+ --vfe-shadow: 0 25px 60px rgba(0,0,0,0.4);
327
+ }
328
+
329
+ :global(.vfe-premium-card) {
330
+ background: var(--vfe-bg);
331
+ border: 1px solid var(--vfe-border);
332
+ border-radius: 1.5rem;
333
+ box-shadow: var(--vfe-shadow);
334
+ overflow: hidden;
335
+ }
336
+
337
+ :global(.vfe-uploader-box) {
338
+ padding: 4rem 2rem;
339
+ display: flex;
340
+ flex-direction: column;
341
+ align-items: center;
342
+ text-align: center;
343
+ gap: 0.625rem;
344
+ cursor: pointer;
345
+ border: 3px dashed var(--vfe-border);
346
+ border-radius: 1.5rem;
347
+ margin: 1rem;
348
+ transition: border-color 0.2s, background 0.2s;
349
+ }
350
+
351
+ :global(.vfe-uploader-box:hover),
352
+ :global(.vfe-dragover) {
353
+ border-color: var(--vfe-primary);
354
+ background: var(--vfe-primary-light);
355
+ }
356
+
357
+ :global(.vfe-uploader-icon) {
358
+ width: 5rem;
359
+ height: 5rem;
360
+ background: var(--vfe-primary-light);
361
+ border-radius: 1.25rem;
362
+ display: flex;
363
+ align-items: center;
364
+ justify-content: center;
365
+ color: var(--vfe-primary);
366
+ margin-bottom: 0.5rem;
367
+ }
368
+
369
+ :global(.vfe-uploader-icon svg) {
370
+ width: 2.5rem;
371
+ height: 2.5rem;
372
+ }
373
+
374
+ :global(.vfe-uploader-text h3) {
375
+ font-size: 1.5rem;
376
+ font-weight: 800;
377
+ color: var(--vfe-text);
378
+ margin: 0 0 0.25rem;
379
+ }
380
+
381
+ :global(.vfe-uploader-text p) {
382
+ color: var(--vfe-text-muted);
383
+ font-size: 0.95rem;
384
+ margin: 0;
385
+ }
386
+
387
+ :global(.vfe-privacy-note) {
388
+ font-size: 0.7rem;
389
+ font-weight: 700;
390
+ text-transform: uppercase;
391
+ letter-spacing: 0.08em;
392
+ color: var(--vfe-text-muted);
393
+ margin-top: 0.5rem;
394
+ }
395
+
396
+ :global(.vfe-player-container) {
397
+ display: flex;
398
+ flex-direction: column;
399
+ }
400
+
401
+ :global(.vfe-video-wrapper video) {
402
+ width: 100%;
403
+ display: block;
404
+ max-height: 65vh;
405
+ background: #000;
406
+ }
407
+
408
+ :global(.vfe-controls-glass) {
409
+ background: var(--vfe-bg-glass);
410
+ border: 1px solid var(--vfe-glass-border);
411
+ border-radius: 1rem;
412
+ margin: 0.75rem;
413
+ padding: 1.25rem;
414
+ display: flex;
415
+ flex-direction: column;
416
+ gap: 1rem;
417
+ }
418
+
419
+ :global(.vfe-time-row) {
420
+ display: flex;
421
+ justify-content: space-between;
422
+ font-size: 0.875rem;
423
+ font-weight: 700;
424
+ color: var(--vfe-glass-text);
425
+ }
426
+
427
+ :global(.vfe-scrubber) {
428
+ width: 100%;
429
+ height: 4px;
430
+ accent-color: var(--vfe-primary);
431
+ cursor: pointer;
432
+ border-radius: 9999px;
433
+ }
434
+
435
+ :global(.vfe-actions-row) {
436
+ display: flex;
437
+ align-items: center;
438
+ gap: 0.625rem;
439
+ }
440
+
441
+ :global(.vfe-btn-main) {
442
+ display: inline-flex;
443
+ align-items: center;
444
+ gap: 0.4rem;
445
+ font-weight: 700;
446
+ font-size: 0.85rem;
447
+ border: none;
448
+ border-radius: 0.625rem;
449
+ cursor: pointer;
450
+ transition: all 0.15s;
451
+ white-space: nowrap;
452
+ text-decoration: none;
453
+ }
454
+
455
+ :global(.vfe-btn-control) {
456
+ padding: 0.5rem 0.875rem;
457
+ background: var(--vfe-glass-btn-bg);
458
+ color: var(--vfe-glass-btn-text);
459
+ border: 1px solid var(--vfe-glass-btn-border);
460
+ flex: 1;
461
+ justify-content: center;
462
+ }
463
+
464
+ :global(.vfe-btn-control:hover) {
465
+ border-color: var(--vfe-primary);
466
+ color: var(--vfe-primary);
467
+ }
468
+
469
+ :global(.vfe-btn-icon-only) {
470
+ flex: none;
471
+ width: 50px;
472
+ justify-content: center;
473
+ }
474
+
475
+ :global(.vfe-btn-capture) {
476
+ padding: 0.625rem 1.25rem;
477
+ background: var(--vfe-primary);
478
+ color: #fff;
479
+ flex: 1;
480
+ justify-content: center;
481
+ box-shadow: 0 4px 14px rgba(99, 102, 241, 0.35);
482
+ }
483
+
484
+ :global(.vfe-btn-capture:hover) {
485
+ filter: brightness(1.1);
486
+ }
487
+
488
+ :global(.vfe-btn-capture:disabled) {
489
+ opacity: 0.5;
490
+ cursor: not-allowed;
491
+ }
492
+
493
+ :global(.vfe-btn-batch) {
494
+ padding: 0.45rem 1rem;
495
+ font-size: 0.8rem;
496
+ flex: none;
497
+ }
498
+
499
+ :global(.vfe-btn-main svg) {
500
+ width: 1.1rem;
501
+ height: 1.1rem;
502
+ flex-shrink: 0;
503
+ }
504
+
505
+ :global(.vfe-batch-panel) {
506
+ background: var(--vfe-batch-bg);
507
+ border-radius: 0.875rem;
508
+ padding: 0.875rem 1rem;
509
+ border: 1px solid var(--vfe-glass-btn-border);
510
+ display: flex;
511
+ flex-direction: column;
512
+ gap: 0.75rem;
513
+ }
514
+
515
+ :global(.vfe-batch-header) {
516
+ display: flex;
517
+ align-items: center;
518
+ gap: 0.5rem;
519
+ font-size: 0.8rem;
520
+ font-weight: 700;
521
+ color: var(--vfe-primary);
522
+ }
523
+
524
+ :global(.vfe-batch-header svg) {
525
+ width: 1rem;
526
+ height: 1rem;
527
+ }
528
+
529
+ :global(.vfe-batch-controls) {
530
+ display: flex;
531
+ align-items: center;
532
+ gap: 0.625rem;
533
+ flex-wrap: wrap;
534
+ }
535
+
536
+ :global(.vfe-batch-input-group) {
537
+ display: flex;
538
+ align-items: center;
539
+ gap: 0.375rem;
540
+ color: var(--vfe-glass-btn-text);
541
+ font-size: 0.8rem;
542
+ font-weight: 700;
543
+ text-transform: uppercase;
544
+ letter-spacing: 0.05em;
545
+ background: var(--vfe-bg);
546
+ border: 1px solid var(--vfe-glass-btn-border);
547
+ border-radius: 0.5rem;
548
+ padding: 0.4rem 0.75rem;
549
+ }
550
+
551
+ :global(.vfe-batch-input-group input) {
552
+ width: 48px;
553
+ background: transparent;
554
+ border: none;
555
+ color: var(--vfe-glass-btn-text);
556
+ font-size: 0.95rem;
557
+ font-weight: 800;
558
+ text-align: center;
559
+ outline: none;
560
+ }
561
+
562
+ :global(.vfe-gallery-minimal) {
563
+ background: var(--vfe-bg);
564
+ border-top: 1px solid var(--vfe-border);
565
+ }
566
+
567
+ :global(.vfe-gallery-header) {
568
+ display: flex;
569
+ justify-content: space-between;
570
+ align-items: center;
571
+ padding: 1rem 1.25rem 0.75rem;
572
+ }
573
+
574
+ :global(.vfe-gallery-header h4) {
575
+ font-size: 0.7rem;
576
+ font-weight: 800;
577
+ text-transform: uppercase;
578
+ letter-spacing: 0.1em;
579
+ color: var(--vfe-text-muted);
580
+ margin: 0;
581
+ }
582
+
583
+ :global(.vfe-gallery-minimal .vfe-btn-control) {
584
+ background: var(--vfe-bg-muted);
585
+ color: var(--vfe-text);
586
+ border-color: var(--vfe-border);
587
+ flex: none;
588
+ }
589
+
590
+ :global(.vfe-gallery-minimal .vfe-btn-control:hover) {
591
+ border-color: var(--vfe-primary);
592
+ color: var(--vfe-primary);
593
+ }
594
+
595
+ :global(.vfe-frame-footer .vfe-btn-control) {
596
+ background: var(--vfe-bg-muted);
597
+ color: var(--vfe-text-muted);
598
+ border-color: var(--vfe-border);
599
+ flex: none;
600
+ padding: 0.25rem 0.4rem;
601
+ }
602
+
603
+ :global(.vfe-btn-sm) {
604
+ padding: 0.35rem 0.625rem;
605
+ font-size: 0.75rem;
606
+ }
607
+
608
+ :global(.vfe-frames-scroll) {
609
+ display: flex;
610
+ gap: 0.75rem;
611
+ overflow-x: auto;
612
+ padding: 0 1.25rem 1.25rem;
613
+ scrollbar-width: thin;
614
+ }
615
+
616
+ :global(.vfe-gallery-empty-text) {
617
+ padding: 1.5rem;
618
+ text-align: center;
619
+ color: var(--vfe-text-muted);
620
+ font-size: 0.85rem;
621
+ width: 100%;
622
+ margin: 0;
623
+ }
624
+
625
+ :global(.vfe-frame-card) {
626
+ flex-shrink: 0;
627
+ width: 160px;
628
+ background: var(--vfe-bg-muted);
629
+ border: 1px solid var(--vfe-border);
630
+ border-radius: 0.75rem;
631
+ overflow: hidden;
632
+ transition: border-color 0.15s;
633
+ }
634
+
635
+ :global(.vfe-frame-card:hover) {
636
+ border-color: var(--vfe-primary);
637
+ }
638
+
639
+ :global(.vfe-frame-thumb) {
640
+ width: 100%;
641
+ aspect-ratio: 16/9;
642
+ object-fit: cover;
643
+ display: block;
644
+ cursor: zoom-in;
645
+ }
646
+
647
+ :global(.vfe-frame-footer) {
648
+ display: flex;
649
+ justify-content: space-between;
650
+ align-items: center;
651
+ padding: 0.4rem 0.625rem;
652
+ }
653
+
654
+ :global(.vfe-frame-time) {
655
+ font-size: 0.7rem;
656
+ font-weight: 800;
657
+ color: var(--vfe-primary);
658
+ }
659
+
660
+ :global(.vfe-lightbox) {
661
+ position: fixed;
662
+ inset: 0;
663
+ z-index: 9999;
664
+ background: rgba(0, 0, 0, 0.95);
665
+ backdrop-filter: blur(20px);
666
+ display: none;
667
+ align-items: center;
668
+ justify-content: center;
669
+ }
670
+
671
+ :global(.vfe-lightbox-open) {
672
+ display: flex;
673
+ }
674
+
675
+ :global(.vfe-lightbox-content) {
676
+ position: relative;
677
+ display: flex;
678
+ flex-direction: column;
679
+ align-items: center;
680
+ gap: 1.5rem;
681
+ max-width: 90vw;
682
+ }
683
+
684
+ :global(.vfe-lightbox-close) {
685
+ position: absolute;
686
+ top: -3rem;
687
+ right: 0;
688
+ font-size: 2.5rem;
689
+ color: rgba(255, 255, 255, 0.6);
690
+ cursor: pointer;
691
+ line-height: 1;
692
+ }
693
+
694
+ :global(.vfe-lightbox-close:hover) {
695
+ color: #fff;
696
+ }
697
+
698
+ :global(.vfe-lightbox-img) {
699
+ max-width: 100%;
700
+ max-height: 70vh;
701
+ border-radius: 0.75rem;
702
+ box-shadow: 0 32px 80px rgba(0, 0, 0, 1);
703
+ }
704
+
705
+ :global(.vfe-lightbox .vfe-btn-capture) {
706
+ padding: 0.875rem 2rem;
707
+ font-size: 0.95rem;
708
+ }
709
+
710
+ :global(.vfe-hidden) {
711
+ display: none;
712
+ }
713
+ </style>