@jjlmoya/utils-audiovisual 1.14.0 → 1.16.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.
- package/package.json +7 -4
- package/scripts/postinstall.mjs +27 -0
- package/src/entries.ts +32 -0
- package/src/tool/chromaticLens/chromatic-lens-color-palette-extraction-online.css +308 -0
- package/src/tool/chromaticLens/component.astro +0 -309
- package/src/tool/chromaticLens/entry.ts +39 -0
- package/src/tool/chromaticLens/index.ts +2 -41
- package/src/tool/collageMaker/component.astro +0 -387
- package/src/tool/collageMaker/entry.ts +48 -0
- package/src/tool/collageMaker/free-online-photo-collage-maker-professional-compositions.css +386 -0
- package/src/tool/collageMaker/index.ts +2 -50
- package/src/tool/exifCleaner/component.astro +0 -290
- package/src/tool/exifCleaner/entry.ts +53 -0
- package/src/tool/exifCleaner/exif-metadata-cleaner-remove-gps-photo-privacy.css +289 -0
- package/src/tool/exifCleaner/index.ts +2 -55
- package/src/tool/imageCompressor/component.astro +0 -498
- package/src/tool/imageCompressor/entry.ts +56 -0
- package/src/tool/imageCompressor/index.ts +2 -58
- package/src/tool/imageCompressor/online-image-compressor-reduce-file-size-no-quality-loss.css +496 -0
- package/src/tool/printQualityCalculator/component.astro +0 -485
- package/src/tool/printQualityCalculator/entry.ts +66 -0
- package/src/tool/printQualityCalculator/index.ts +2 -68
- package/src/tool/printQualityCalculator/print-quality-calculator-pixels-to-cm-dpi.css +483 -0
- package/src/tool/privacyBlur/component.astro +0 -334
- package/src/tool/privacyBlur/entry.ts +45 -0
- package/src/tool/privacyBlur/index.ts +2 -47
- package/src/tool/privacyBlur/online-privacy-editor-pixelate-blur-faces-photos.css +332 -0
- package/src/tool/subtitleSync/component.astro +0 -327
- package/src/tool/subtitleSync/entry.ts +45 -0
- package/src/tool/subtitleSync/index.ts +2 -47
- package/src/tool/subtitleSync/synchronize-srt-subtitles-online-adjust-timing-free.css +325 -0
- package/src/tool/timelapseCalculator/component.astro +0 -285
- package/src/tool/timelapseCalculator/entry.ts +48 -0
- package/src/tool/timelapseCalculator/index.ts +2 -50
- package/src/tool/timelapseCalculator/timelapse-hyperlapse-calculator-perfect-intervals.css +283 -0
- package/src/tool/tvDistance/component.astro +0 -437
- package/src/tool/tvDistance/entry.ts +45 -0
- package/src/tool/tvDistance/index.ts +2 -47
- package/src/tool/tvDistance/tv-viewing-distance-calculator-thx-4k-optimal-screen.css +435 -0
- package/src/tool/videoFrameExtractor/component.astro +0 -428
- package/src/tool/videoFrameExtractor/entry.ts +49 -0
- package/src/tool/videoFrameExtractor/index.ts +2 -51
- package/src/tool/videoFrameExtractor/online-video-frame-extractor-capture-hd-stills.css +426 -0
- package/src/tools.ts +1 -1
|
@@ -298,501 +298,3 @@ const { ui } = Astro.props;
|
|
|
298
298
|
});
|
|
299
299
|
</script>
|
|
300
300
|
|
|
301
|
-
<style>
|
|
302
|
-
:global(.ic-dashboard) {
|
|
303
|
-
max-width: 900px;
|
|
304
|
-
margin: 0 auto;
|
|
305
|
-
display: flex;
|
|
306
|
-
flex-direction: column;
|
|
307
|
-
gap: 1rem;
|
|
308
|
-
|
|
309
|
-
--ic-bg: #fff;
|
|
310
|
-
--ic-bg-muted: #f8fafc;
|
|
311
|
-
--ic-border: #e2e8f0;
|
|
312
|
-
--ic-text: #111827;
|
|
313
|
-
--ic-text-muted: #6b7280;
|
|
314
|
-
--ic-accent: #10b981;
|
|
315
|
-
--ic-accent-dark: #059669;
|
|
316
|
-
--ic-accent-light: #f0fdf4;
|
|
317
|
-
--ic-success: #10b981;
|
|
318
|
-
--ic-error: #ef4444;
|
|
319
|
-
--ic-error-dark: #dc2626;
|
|
320
|
-
--ic-warning: #f59e0b;
|
|
321
|
-
--ic-shadow: rgba(0, 0, 0, 0.03);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
:global(.theme-dark .ic-dashboard) {
|
|
325
|
-
--ic-bg: #0f172a;
|
|
326
|
-
--ic-bg-muted: #1e293b;
|
|
327
|
-
--ic-border: #334155;
|
|
328
|
-
--ic-text: #f1f5f9;
|
|
329
|
-
--ic-text-muted: #cbd5e1;
|
|
330
|
-
--ic-accent: #10b981;
|
|
331
|
-
--ic-accent-dark: #059669;
|
|
332
|
-
--ic-accent-light: rgba(16, 185, 129, 0.1);
|
|
333
|
-
--ic-shadow: rgba(0, 0, 0, 0.4);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
:global(.ic-global-settings) {
|
|
337
|
-
display: flex;
|
|
338
|
-
justify-content: flex-end;
|
|
339
|
-
gap: 1.5rem;
|
|
340
|
-
background: rgba(255, 255, 255, 0.5);
|
|
341
|
-
backdrop-filter: blur(8px);
|
|
342
|
-
padding: 0.75rem 1.5rem;
|
|
343
|
-
border-radius: 0.75rem;
|
|
344
|
-
border: 1px solid rgba(255, 255, 255, 0.35);
|
|
345
|
-
color: #374151;
|
|
346
|
-
flex-wrap: wrap;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
:global(.theme-dark .ic-global-settings) {
|
|
350
|
-
background: rgba(30, 41, 59, 0.6);
|
|
351
|
-
border-color: rgba(71, 85, 105, 0.5);
|
|
352
|
-
color: var(--ic-text-muted);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
:global(.ic-toggle-group) {
|
|
356
|
-
display: flex;
|
|
357
|
-
align-items: center;
|
|
358
|
-
gap: 0.5rem;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
:global(.ic-webp-switch) {
|
|
362
|
-
position: relative;
|
|
363
|
-
display: inline-block;
|
|
364
|
-
width: 44px;
|
|
365
|
-
height: 24px;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
:global(.ic-webp-switch input) {
|
|
369
|
-
opacity: 0;
|
|
370
|
-
width: 0;
|
|
371
|
-
height: 0;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
:global(.ic-webp-slider) {
|
|
375
|
-
position: absolute;
|
|
376
|
-
cursor: pointer;
|
|
377
|
-
inset: 0;
|
|
378
|
-
background: var(--ic-border);
|
|
379
|
-
border-radius: 24px;
|
|
380
|
-
transition: 0.3s;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
:global(.ic-webp-slider::before) {
|
|
384
|
-
content: '';
|
|
385
|
-
position: absolute;
|
|
386
|
-
width: 18px;
|
|
387
|
-
height: 18px;
|
|
388
|
-
left: 3px;
|
|
389
|
-
bottom: 3px;
|
|
390
|
-
background: var(--ic-bg);
|
|
391
|
-
border-radius: 50%;
|
|
392
|
-
transition: 0.3s;
|
|
393
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
:global(.ic-webp-switch input:checked + .ic-webp-slider) {
|
|
397
|
-
background: var(--ic-accent);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
:global(.ic-webp-switch input:checked + .ic-webp-slider::before) {
|
|
401
|
-
transform: translateX(20px);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
:global(.ic-toggle-label) {
|
|
405
|
-
font-size: 0.9rem;
|
|
406
|
-
font-weight: 600;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
:global(.ic-settings-group) {
|
|
410
|
-
display: flex;
|
|
411
|
-
align-items: center;
|
|
412
|
-
gap: 0.75rem;
|
|
413
|
-
font-size: 0.9rem;
|
|
414
|
-
font-weight: 600;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
:global(.ic-mini-slider) {
|
|
418
|
-
width: 100px;
|
|
419
|
-
accent-color: var(--ic-accent);
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
:global(.ic-drop-zone) {
|
|
423
|
-
position: relative;
|
|
424
|
-
background: linear-gradient(180deg, rgba(255, 255, 255, 0.85) 0%, rgba(255, 255, 255, 0.45) 100%);
|
|
425
|
-
border: 3px dashed var(--ic-accent);
|
|
426
|
-
border-radius: 1.5rem;
|
|
427
|
-
padding: 4rem 2rem;
|
|
428
|
-
text-align: center;
|
|
429
|
-
cursor: pointer;
|
|
430
|
-
transition: all 0.3s ease;
|
|
431
|
-
backdrop-filter: blur(12px);
|
|
432
|
-
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.04);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
:global(.theme-dark .ic-drop-zone) {
|
|
436
|
-
background: linear-gradient(180deg, rgba(30, 41, 59, 0.85) 0%, rgba(15, 23, 42, 0.6) 100%);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
:global(.ic-drop-zone.ic-dragover),
|
|
440
|
-
:global(.ic-drop-zone:hover) {
|
|
441
|
-
transform: scale(1.01);
|
|
442
|
-
border-color: var(--ic-accent-dark);
|
|
443
|
-
background: linear-gradient(180deg, var(--ic-accent-light) 0%, rgba(255, 255, 255, 0.6) 100%);
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
:global(.theme-dark .ic-drop-zone.ic-dragover),
|
|
447
|
-
:global(.theme-dark .ic-drop-zone:hover) {
|
|
448
|
-
background: linear-gradient(180deg, rgba(6, 78, 59, 0.4) 0%, rgba(15, 23, 42, 0.6) 100%);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
:global(.ic-file-label) {
|
|
452
|
-
display: flex;
|
|
453
|
-
flex-direction: column;
|
|
454
|
-
align-items: center;
|
|
455
|
-
gap: 0.5rem;
|
|
456
|
-
cursor: pointer;
|
|
457
|
-
pointer-events: none;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
:global(.ic-upload-icon) {
|
|
461
|
-
color: var(--ic-accent);
|
|
462
|
-
margin-bottom: 0.5rem;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
:global(.ic-upload-text) {
|
|
466
|
-
font-size: 1.5rem;
|
|
467
|
-
font-weight: 700;
|
|
468
|
-
color: var(--ic-text);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
:global(.ic-upload-subtext) {
|
|
472
|
-
color: var(--ic-text-muted);
|
|
473
|
-
font-size: 1rem;
|
|
474
|
-
margin-bottom: 1rem;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
:global(.ic-upload-btn) {
|
|
478
|
-
background: var(--ic-text);
|
|
479
|
-
color: var(--ic-bg);
|
|
480
|
-
padding: 0.75rem 2rem;
|
|
481
|
-
border-radius: 9999px;
|
|
482
|
-
font-weight: 600;
|
|
483
|
-
font-size: 0.95rem;
|
|
484
|
-
pointer-events: auto;
|
|
485
|
-
transition: background 0.2s;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
:global(.ic-upload-btn:hover) {
|
|
489
|
-
background: var(--ic-text-muted);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
:global(.ic-drop-zone input[type="file"]) {
|
|
493
|
-
position: absolute;
|
|
494
|
-
inset: 0;
|
|
495
|
-
width: 100%;
|
|
496
|
-
height: 100%;
|
|
497
|
-
opacity: 0;
|
|
498
|
-
cursor: pointer;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
:global(.ic-file-list-container) {
|
|
502
|
-
margin-top: 1.5rem;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
:global(.ic-list-header) {
|
|
506
|
-
display: flex;
|
|
507
|
-
justify-content: space-between;
|
|
508
|
-
align-items: center;
|
|
509
|
-
margin-bottom: 1rem;
|
|
510
|
-
padding: 0 0.5rem;
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
:global(.ic-list-header h3) {
|
|
514
|
-
font-size: 1.25rem;
|
|
515
|
-
font-weight: 700;
|
|
516
|
-
color: var(--ic-text);
|
|
517
|
-
margin: 0;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
:global(.ic-total-savings) {
|
|
521
|
-
font-weight: 700;
|
|
522
|
-
font-size: 1rem;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
:global(.ic-file-list) {
|
|
526
|
-
list-style: none;
|
|
527
|
-
padding: 1rem;
|
|
528
|
-
margin: 0;
|
|
529
|
-
display: flex;
|
|
530
|
-
flex-direction: column;
|
|
531
|
-
gap: 0.75rem;
|
|
532
|
-
background: var(--ic-bg-muted);
|
|
533
|
-
border-radius: 1rem;
|
|
534
|
-
border: 1px solid var(--ic-border);
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
:global(.ic-file-item) {
|
|
538
|
-
background: var(--ic-bg);
|
|
539
|
-
border-radius: 0.75rem;
|
|
540
|
-
padding: 0.75rem 1.25rem;
|
|
541
|
-
display: grid;
|
|
542
|
-
grid-template-columns: 2fr 2.5rem 2fr;
|
|
543
|
-
align-items: center;
|
|
544
|
-
gap: 1rem;
|
|
545
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
|
|
546
|
-
transition: box-shadow 0.2s;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
:global(.ic-file-item:hover) {
|
|
550
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
:global(.ic-preview-col) {
|
|
554
|
-
display: flex;
|
|
555
|
-
align-items: center;
|
|
556
|
-
gap: 1rem;
|
|
557
|
-
overflow: hidden;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
:global(.ic-preview-wrapper) {
|
|
561
|
-
width: 48px;
|
|
562
|
-
height: 48px;
|
|
563
|
-
border-radius: 0.5rem;
|
|
564
|
-
overflow: hidden;
|
|
565
|
-
background: var(--ic-bg-muted);
|
|
566
|
-
flex-shrink: 0;
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
:global(.ic-preview-img) {
|
|
570
|
-
width: 100%;
|
|
571
|
-
height: 100%;
|
|
572
|
-
object-fit: cover;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
:global(.ic-file-info) {
|
|
576
|
-
display: flex;
|
|
577
|
-
flex-direction: column;
|
|
578
|
-
overflow: hidden;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
:global(.ic-filename) {
|
|
582
|
-
font-weight: 600;
|
|
583
|
-
color: var(--ic-text);
|
|
584
|
-
white-space: nowrap;
|
|
585
|
-
overflow: hidden;
|
|
586
|
-
text-overflow: ellipsis;
|
|
587
|
-
font-size: 0.9rem;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
:global(.ic-orig-size) {
|
|
591
|
-
color: var(--ic-text-muted);
|
|
592
|
-
font-size: 0.8rem;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
:global(.ic-arrow-col) {
|
|
596
|
-
display: flex;
|
|
597
|
-
justify-content: center;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
:global(.ic-arrow-circle) {
|
|
601
|
-
background: var(--ic-accent-light);
|
|
602
|
-
color: var(--ic-accent);
|
|
603
|
-
width: 36px;
|
|
604
|
-
height: 36px;
|
|
605
|
-
border-radius: 50%;
|
|
606
|
-
display: flex;
|
|
607
|
-
align-items: center;
|
|
608
|
-
justify-content: center;
|
|
609
|
-
flex-shrink: 0;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
:global(.ic-result-col) {
|
|
613
|
-
display: flex;
|
|
614
|
-
align-items: center;
|
|
615
|
-
justify-content: flex-end;
|
|
616
|
-
gap: 1.25rem;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
:global(.ic-savings-pill) {
|
|
620
|
-
display: flex;
|
|
621
|
-
flex-direction: column;
|
|
622
|
-
align-items: center;
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
:global(.ic-new-size) {
|
|
626
|
-
font-weight: 700;
|
|
627
|
-
color: var(--ic-text);
|
|
628
|
-
font-size: 0.95rem;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
:global(.ic-savings-pct) {
|
|
632
|
-
color: var(--ic-accent);
|
|
633
|
-
font-weight: 800;
|
|
634
|
-
font-size: 0.85rem;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
:global(.ic-savings-pill-negative .ic-savings-pct) {
|
|
638
|
-
color: var(--ic-error);
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
:global(.ic-item-actions) {
|
|
642
|
-
display: flex;
|
|
643
|
-
gap: 0.4rem;
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
:global(.ic-icon-btn) {
|
|
647
|
-
background: var(--ic-bg-muted);
|
|
648
|
-
border: none;
|
|
649
|
-
color: var(--ic-text-muted);
|
|
650
|
-
width: 36px;
|
|
651
|
-
height: 36px;
|
|
652
|
-
border-radius: 0.5rem;
|
|
653
|
-
display: flex;
|
|
654
|
-
align-items: center;
|
|
655
|
-
justify-content: center;
|
|
656
|
-
cursor: pointer;
|
|
657
|
-
transition: background 0.2s, color 0.2s;
|
|
658
|
-
text-decoration: none;
|
|
659
|
-
flex-shrink: 0;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
:global(.ic-icon-btn:hover) {
|
|
663
|
-
background: var(--ic-border);
|
|
664
|
-
color: var(--ic-text);
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
:global(.ic-download-btn) {
|
|
668
|
-
background: var(--ic-accent);
|
|
669
|
-
color: var(--ic-bg);
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
:global(.ic-download-btn:hover) {
|
|
673
|
-
background: var(--ic-accent-dark);
|
|
674
|
-
color: var(--ic-bg);
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
:global(.ic-inline-editor) {
|
|
678
|
-
grid-column: 1 / -1;
|
|
679
|
-
background: var(--ic-bg-muted);
|
|
680
|
-
border-radius: 0.75rem;
|
|
681
|
-
padding: 1rem 1.25rem;
|
|
682
|
-
margin-top: 0.25rem;
|
|
683
|
-
display: flex;
|
|
684
|
-
justify-content: space-between;
|
|
685
|
-
align-items: center;
|
|
686
|
-
gap: 1rem;
|
|
687
|
-
border: 1px solid var(--ic-border);
|
|
688
|
-
animation: ic-slide-down 0.2s ease-out;
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
@keyframes ic-slide-down {
|
|
692
|
-
from {
|
|
693
|
-
opacity: 0;
|
|
694
|
-
transform: translateY(-4px);
|
|
695
|
-
}
|
|
696
|
-
to {
|
|
697
|
-
opacity: 1;
|
|
698
|
-
transform: translateY(0);
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
:global(.ic-editor-controls) {
|
|
703
|
-
display: flex;
|
|
704
|
-
gap: 1.5rem;
|
|
705
|
-
flex-wrap: wrap;
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
:global(.ic-editor-group) {
|
|
709
|
-
display: flex;
|
|
710
|
-
flex-direction: column;
|
|
711
|
-
gap: 0.25rem;
|
|
712
|
-
font-size: 0.85rem;
|
|
713
|
-
font-weight: 600;
|
|
714
|
-
color: var(--ic-text-muted);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
:global(.ic-editor-group input[type="range"]) {
|
|
718
|
-
accent-color: var(--ic-accent);
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
:global(.ic-editor-group input[type="number"]) {
|
|
722
|
-
padding: 0.25rem 0.5rem;
|
|
723
|
-
border: 1px solid var(--ic-border);
|
|
724
|
-
border-radius: 0.375rem;
|
|
725
|
-
font-size: 0.85rem;
|
|
726
|
-
background: var(--ic-bg);
|
|
727
|
-
color: var(--ic-text);
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
:global(.ic-editor-close) {
|
|
731
|
-
background: var(--ic-border);
|
|
732
|
-
border: none;
|
|
733
|
-
padding: 0.4rem 0.875rem;
|
|
734
|
-
border-radius: 0.375rem;
|
|
735
|
-
font-weight: 600;
|
|
736
|
-
font-size: 0.85rem;
|
|
737
|
-
cursor: pointer;
|
|
738
|
-
transition: background 0.2s;
|
|
739
|
-
color: var(--ic-text-muted);
|
|
740
|
-
white-space: nowrap;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
:global(.ic-editor-close:hover) {
|
|
744
|
-
background: var(--ic-border);
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
:global(.ic-global-actions) {
|
|
748
|
-
margin-top: 1.5rem;
|
|
749
|
-
display: flex;
|
|
750
|
-
justify-content: center;
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
:global(.ic-primary-btn) {
|
|
754
|
-
background: var(--ic-text);
|
|
755
|
-
color: var(--ic-bg);
|
|
756
|
-
border: none;
|
|
757
|
-
padding: 1rem 3rem;
|
|
758
|
-
border-radius: 9999px;
|
|
759
|
-
font-weight: 700;
|
|
760
|
-
font-size: 1.1rem;
|
|
761
|
-
cursor: pointer;
|
|
762
|
-
transition: background 0.2s, transform 0.1s;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
:global(.ic-primary-btn:hover) {
|
|
766
|
-
background: var(--ic-text-muted);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
:global(.ic-primary-btn:active) {
|
|
770
|
-
transform: scale(0.98);
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
@media (max-width: 600px) {
|
|
774
|
-
.ic-file-item {
|
|
775
|
-
grid-template-columns: 1fr;
|
|
776
|
-
justify-items: center;
|
|
777
|
-
text-align: center;
|
|
778
|
-
}
|
|
779
|
-
|
|
780
|
-
.ic-preview-col {
|
|
781
|
-
flex-direction: column;
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
.ic-arrow-col {
|
|
785
|
-
transform: rotate(90deg);
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
.ic-result-col {
|
|
789
|
-
width: 100%;
|
|
790
|
-
justify-content: space-around;
|
|
791
|
-
}
|
|
792
|
-
|
|
793
|
-
.ic-global-settings {
|
|
794
|
-
flex-direction: column;
|
|
795
|
-
align-items: flex-start;
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
</style>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AudiovisualToolEntry, ToolLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export interface ImageCompressorUI {
|
|
4
|
+
dropTitle: string;
|
|
5
|
+
dropSubtitle: string;
|
|
6
|
+
settingsTitle: string;
|
|
7
|
+
qualityLabel: string;
|
|
8
|
+
widthLabel: string;
|
|
9
|
+
convertToWebpLabel: string;
|
|
10
|
+
compressionLabel: string;
|
|
11
|
+
compressBtn: string;
|
|
12
|
+
processingLabel: string;
|
|
13
|
+
resultsTitle: string;
|
|
14
|
+
originalSizeLabel: string;
|
|
15
|
+
newSizeLabel: string;
|
|
16
|
+
reductionLabel: string;
|
|
17
|
+
downloadBtn: string;
|
|
18
|
+
addMoreBtn: string;
|
|
19
|
+
browseFilesBtn: string;
|
|
20
|
+
processedFilesTitle: string;
|
|
21
|
+
downloadAllBtn: string;
|
|
22
|
+
adjustThisImage: string;
|
|
23
|
+
downloadTitle: string;
|
|
24
|
+
maxWidthLabel: string;
|
|
25
|
+
closeBtn: string;
|
|
26
|
+
totalSavingsLabel: string;
|
|
27
|
+
noSavings: string;
|
|
28
|
+
[key: string]: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type ImageCompressorLocaleContent = ToolLocaleContent<ImageCompressorUI>;
|
|
32
|
+
|
|
33
|
+
export const imageCompressor: AudiovisualToolEntry<ImageCompressorUI> = {
|
|
34
|
+
id: 'compresor-imagenes',
|
|
35
|
+
icons: {
|
|
36
|
+
bg: 'mdi:image-size-select-small',
|
|
37
|
+
fg: 'mdi:file-image-outline',
|
|
38
|
+
},
|
|
39
|
+
i18n: {
|
|
40
|
+
es: async () => (await import('./i18n/es')).content as unknown as ImageCompressorLocaleContent,
|
|
41
|
+
en: async () => (await import('./i18n/en')).content as unknown as ImageCompressorLocaleContent,
|
|
42
|
+
fr: async () => (await import('./i18n/fr')).content as unknown as ImageCompressorLocaleContent,
|
|
43
|
+
de: async () => (await import('./i18n/de')).content as unknown as ImageCompressorLocaleContent,
|
|
44
|
+
it: async () => (await import('./i18n/it')).content as unknown as ImageCompressorLocaleContent,
|
|
45
|
+
pt: async () => (await import('./i18n/pt')).content as unknown as ImageCompressorLocaleContent,
|
|
46
|
+
id: async () => (await import('./i18n/id')).content as unknown as ImageCompressorLocaleContent,
|
|
47
|
+
ja: async () => (await import('./i18n/ja')).content as unknown as ImageCompressorLocaleContent,
|
|
48
|
+
ko: async () => (await import('./i18n/ko')).content as unknown as ImageCompressorLocaleContent,
|
|
49
|
+
nl: async () => (await import('./i18n/nl')).content as unknown as ImageCompressorLocaleContent,
|
|
50
|
+
pl: async () => (await import('./i18n/pl')).content as unknown as ImageCompressorLocaleContent,
|
|
51
|
+
ru: async () => (await import('./i18n/ru')).content as unknown as ImageCompressorLocaleContent,
|
|
52
|
+
sv: async () => (await import('./i18n/sv')).content as unknown as ImageCompressorLocaleContent,
|
|
53
|
+
tr: async () => (await import('./i18n/tr')).content as unknown as ImageCompressorLocaleContent,
|
|
54
|
+
zh: async () => (await import('./i18n/zh')).content as unknown as ImageCompressorLocaleContent,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
@@ -1,61 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export interface ImageCompressorUI {
|
|
4
|
-
dropTitle: string;
|
|
5
|
-
dropSubtitle: string;
|
|
6
|
-
settingsTitle: string;
|
|
7
|
-
qualityLabel: string;
|
|
8
|
-
widthLabel: string;
|
|
9
|
-
convertToWebpLabel: string;
|
|
10
|
-
compressionLabel: string;
|
|
11
|
-
compressBtn: string;
|
|
12
|
-
processingLabel: string;
|
|
13
|
-
resultsTitle: string;
|
|
14
|
-
originalSizeLabel: string;
|
|
15
|
-
newSizeLabel: string;
|
|
16
|
-
reductionLabel: string;
|
|
17
|
-
downloadBtn: string;
|
|
18
|
-
addMoreBtn: string;
|
|
19
|
-
browseFilesBtn: string;
|
|
20
|
-
processedFilesTitle: string;
|
|
21
|
-
downloadAllBtn: string;
|
|
22
|
-
adjustThisImage: string;
|
|
23
|
-
downloadTitle: string;
|
|
24
|
-
maxWidthLabel: string;
|
|
25
|
-
closeBtn: string;
|
|
26
|
-
totalSavingsLabel: string;
|
|
27
|
-
noSavings: string;
|
|
28
|
-
[key: string]: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export type ImageCompressorLocaleContent = ToolLocaleContent<ImageCompressorUI>;
|
|
32
|
-
|
|
33
|
-
export const imageCompressor: AudiovisualToolEntry<ImageCompressorUI> = {
|
|
34
|
-
id: 'compresor-imagenes',
|
|
35
|
-
icons: {
|
|
36
|
-
bg: 'mdi:image-size-select-small',
|
|
37
|
-
fg: 'mdi:file-image-outline',
|
|
38
|
-
},
|
|
39
|
-
i18n: {
|
|
40
|
-
es: async () => (await import('./i18n/es')).content as unknown as ImageCompressorLocaleContent,
|
|
41
|
-
en: async () => (await import('./i18n/en')).content as unknown as ImageCompressorLocaleContent,
|
|
42
|
-
fr: async () => (await import('./i18n/fr')).content as unknown as ImageCompressorLocaleContent,
|
|
43
|
-
de: async () => (await import('./i18n/de')).content as unknown as ImageCompressorLocaleContent,
|
|
44
|
-
it: async () => (await import('./i18n/it')).content as unknown as ImageCompressorLocaleContent,
|
|
45
|
-
pt: async () => (await import('./i18n/pt')).content as unknown as ImageCompressorLocaleContent,
|
|
46
|
-
id: async () => (await import('./i18n/id')).content as unknown as ImageCompressorLocaleContent,
|
|
47
|
-
ja: async () => (await import('./i18n/ja')).content as unknown as ImageCompressorLocaleContent,
|
|
48
|
-
ko: async () => (await import('./i18n/ko')).content as unknown as ImageCompressorLocaleContent,
|
|
49
|
-
nl: async () => (await import('./i18n/nl')).content as unknown as ImageCompressorLocaleContent,
|
|
50
|
-
pl: async () => (await import('./i18n/pl')).content as unknown as ImageCompressorLocaleContent,
|
|
51
|
-
ru: async () => (await import('./i18n/ru')).content as unknown as ImageCompressorLocaleContent,
|
|
52
|
-
sv: async () => (await import('./i18n/sv')).content as unknown as ImageCompressorLocaleContent,
|
|
53
|
-
tr: async () => (await import('./i18n/tr')).content as unknown as ImageCompressorLocaleContent,
|
|
54
|
-
zh: async () => (await import('./i18n/zh')).content as unknown as ImageCompressorLocaleContent,
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
|
|
1
|
+
import { imageCompressor } from './entry';
|
|
2
|
+
export * from './entry';
|
|
59
3
|
export const IMAGE_COMPRESSOR_TOOL: ToolDefinition = {
|
|
60
4
|
entry: imageCompressor as unknown as AudiovisualToolEntry,
|
|
61
5
|
Component: () => import('./component.astro'),
|