@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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AudiovisualToolEntry, ToolLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export interface ChromaticLensUI {
|
|
4
|
+
dropTitle: string;
|
|
5
|
+
dropSubtitle: string;
|
|
6
|
+
processingLabel: string;
|
|
7
|
+
paletteTitle: string;
|
|
8
|
+
copyLabel: string;
|
|
9
|
+
copiedLabel: string;
|
|
10
|
+
colorCountLabel: string;
|
|
11
|
+
[key: string]: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type ChromaticLensLocaleContent = ToolLocaleContent<ChromaticLensUI>;
|
|
15
|
+
|
|
16
|
+
export const chromaticLens: AudiovisualToolEntry<ChromaticLensUI> = {
|
|
17
|
+
id: 'lente-cromatica',
|
|
18
|
+
icons: {
|
|
19
|
+
bg: 'mdi:palette-swatch',
|
|
20
|
+
fg: 'mdi:eye-outline',
|
|
21
|
+
},
|
|
22
|
+
i18n: {
|
|
23
|
+
es: async () => (await import('./i18n/es')).content as unknown as ChromaticLensLocaleContent,
|
|
24
|
+
en: async () => (await import('./i18n/en')).content as unknown as ChromaticLensLocaleContent,
|
|
25
|
+
fr: async () => (await import('./i18n/fr')).content as unknown as ChromaticLensLocaleContent,
|
|
26
|
+
de: async () => (await import('./i18n/de')).content as unknown as ChromaticLensLocaleContent,
|
|
27
|
+
it: async () => (await import('./i18n/it')).content as unknown as ChromaticLensLocaleContent,
|
|
28
|
+
pt: async () => (await import('./i18n/pt')).content as unknown as ChromaticLensLocaleContent,
|
|
29
|
+
id: async () => (await import('./i18n/id')).content as unknown as ChromaticLensLocaleContent,
|
|
30
|
+
ja: async () => (await import('./i18n/ja')).content as unknown as ChromaticLensLocaleContent,
|
|
31
|
+
ko: async () => (await import('./i18n/ko')).content as unknown as ChromaticLensLocaleContent,
|
|
32
|
+
nl: async () => (await import('./i18n/nl')).content as unknown as ChromaticLensLocaleContent,
|
|
33
|
+
pl: async () => (await import('./i18n/pl')).content as unknown as ChromaticLensLocaleContent,
|
|
34
|
+
ru: async () => (await import('./i18n/ru')).content as unknown as ChromaticLensLocaleContent,
|
|
35
|
+
sv: async () => (await import('./i18n/sv')).content as unknown as ChromaticLensLocaleContent,
|
|
36
|
+
tr: async () => (await import('./i18n/tr')).content as unknown as ChromaticLensLocaleContent,
|
|
37
|
+
zh: async () => (await import('./i18n/zh')).content as unknown as ChromaticLensLocaleContent,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
@@ -1,44 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export interface ChromaticLensUI {
|
|
4
|
-
dropTitle: string;
|
|
5
|
-
dropSubtitle: string;
|
|
6
|
-
processingLabel: string;
|
|
7
|
-
paletteTitle: string;
|
|
8
|
-
copyLabel: string;
|
|
9
|
-
copiedLabel: string;
|
|
10
|
-
colorCountLabel: string;
|
|
11
|
-
[key: string]: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export type ChromaticLensLocaleContent = ToolLocaleContent<ChromaticLensUI>;
|
|
15
|
-
|
|
16
|
-
export const chromaticLens: AudiovisualToolEntry<ChromaticLensUI> = {
|
|
17
|
-
id: 'lente-cromatica',
|
|
18
|
-
icons: {
|
|
19
|
-
bg: 'mdi:palette-swatch',
|
|
20
|
-
fg: 'mdi:eye-outline',
|
|
21
|
-
},
|
|
22
|
-
i18n: {
|
|
23
|
-
es: async () => (await import('./i18n/es')).content as unknown as ChromaticLensLocaleContent,
|
|
24
|
-
en: async () => (await import('./i18n/en')).content as unknown as ChromaticLensLocaleContent,
|
|
25
|
-
fr: async () => (await import('./i18n/fr')).content as unknown as ChromaticLensLocaleContent,
|
|
26
|
-
de: async () => (await import('./i18n/de')).content as unknown as ChromaticLensLocaleContent,
|
|
27
|
-
it: async () => (await import('./i18n/it')).content as unknown as ChromaticLensLocaleContent,
|
|
28
|
-
pt: async () => (await import('./i18n/pt')).content as unknown as ChromaticLensLocaleContent,
|
|
29
|
-
id: async () => (await import('./i18n/id')).content as unknown as ChromaticLensLocaleContent,
|
|
30
|
-
ja: async () => (await import('./i18n/ja')).content as unknown as ChromaticLensLocaleContent,
|
|
31
|
-
ko: async () => (await import('./i18n/ko')).content as unknown as ChromaticLensLocaleContent,
|
|
32
|
-
nl: async () => (await import('./i18n/nl')).content as unknown as ChromaticLensLocaleContent,
|
|
33
|
-
pl: async () => (await import('./i18n/pl')).content as unknown as ChromaticLensLocaleContent,
|
|
34
|
-
ru: async () => (await import('./i18n/ru')).content as unknown as ChromaticLensLocaleContent,
|
|
35
|
-
sv: async () => (await import('./i18n/sv')).content as unknown as ChromaticLensLocaleContent,
|
|
36
|
-
tr: async () => (await import('./i18n/tr')).content as unknown as ChromaticLensLocaleContent,
|
|
37
|
-
zh: async () => (await import('./i18n/zh')).content as unknown as ChromaticLensLocaleContent,
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
import { chromaticLens } from './entry';
|
|
2
|
+
export * from './entry';
|
|
42
3
|
export const CHROMATIC_LENS_TOOL: ToolDefinition = {
|
|
43
4
|
entry: chromaticLens as unknown as AudiovisualToolEntry,
|
|
44
5
|
Component: () => import('./component.astro'),
|
|
@@ -300,391 +300,4 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
|
|
|
300
300
|
});
|
|
301
301
|
</script>
|
|
302
302
|
|
|
303
|
-
<style>
|
|
304
|
-
:global(.cm-root) {
|
|
305
|
-
--cm-bg: #fff;
|
|
306
|
-
--cm-bg-muted: #f8fafc;
|
|
307
|
-
--cm-border: #e2e8f0;
|
|
308
|
-
--cm-text: #0f172a;
|
|
309
|
-
--cm-text-muted: #64748b;
|
|
310
|
-
--cm-primary: #6366f1;
|
|
311
|
-
--cm-primary-light: #eef2ff;
|
|
312
|
-
--cm-shadow: rgba(0,0,0,0.07);
|
|
313
|
-
--cm-radius: 1rem;
|
|
314
303
|
|
|
315
|
-
max-width: 1100px;
|
|
316
|
-
margin: 0 auto;
|
|
317
|
-
padding: 1rem;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
:global(.theme-dark .cm-root) {
|
|
321
|
-
--cm-bg: #1e293b;
|
|
322
|
-
--cm-bg-muted: #0f172a;
|
|
323
|
-
--cm-border: #334155;
|
|
324
|
-
--cm-text: #f1f5f9;
|
|
325
|
-
--cm-text-muted: #94a3b8;
|
|
326
|
-
--cm-primary: #818cf8;
|
|
327
|
-
--cm-primary-light: #1e1b4b;
|
|
328
|
-
--cm-shadow: rgba(0,0,0,0.4);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
:global(.cm-card) {
|
|
332
|
-
background: var(--cm-bg);
|
|
333
|
-
border: 1px solid var(--cm-border);
|
|
334
|
-
border-radius: var(--cm-radius);
|
|
335
|
-
box-shadow: 0 4px 24px var(--cm-shadow);
|
|
336
|
-
overflow: hidden;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
:global(.cm-top-row) {
|
|
340
|
-
display: grid;
|
|
341
|
-
grid-template-columns: 300px 1fr;
|
|
342
|
-
gap: 0;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
@media (max-width: 700px) {
|
|
346
|
-
.cm-top-row {
|
|
347
|
-
grid-template-columns: 1fr;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
:global(.cm-left-col) {
|
|
352
|
-
padding: 1.25rem;
|
|
353
|
-
border-right: 1px solid var(--cm-border);
|
|
354
|
-
display: flex;
|
|
355
|
-
flex-direction: column;
|
|
356
|
-
gap: 1rem;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
@media (max-width: 700px) {
|
|
360
|
-
.cm-left-col {
|
|
361
|
-
border-right: none;
|
|
362
|
-
border-bottom: 1px solid var(--cm-border);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
:global(.cm-drop-zone) {
|
|
367
|
-
position: relative;
|
|
368
|
-
background: var(--cm-bg-muted);
|
|
369
|
-
border: 2px dashed var(--cm-border);
|
|
370
|
-
border-radius: 0.75rem;
|
|
371
|
-
padding: 1.5rem 1rem;
|
|
372
|
-
text-align: center;
|
|
373
|
-
cursor: pointer;
|
|
374
|
-
transition: border-color 0.2s, background 0.2s;
|
|
375
|
-
display: flex;
|
|
376
|
-
flex-direction: column;
|
|
377
|
-
align-items: center;
|
|
378
|
-
gap: 0.35rem;
|
|
379
|
-
color: var(--cm-primary);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
:global(.cm-drop-zone input[type="file"]) {
|
|
383
|
-
position: absolute;
|
|
384
|
-
inset: 0;
|
|
385
|
-
opacity: 0;
|
|
386
|
-
cursor: pointer;
|
|
387
|
-
width: 100%;
|
|
388
|
-
height: 100%;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
:global(.cm-drop-zone:hover),
|
|
392
|
-
:global(.cm-drop-zone-over) {
|
|
393
|
-
border-color: var(--cm-primary);
|
|
394
|
-
background: var(--cm-primary-light);
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
:global(.cm-drop-title) {
|
|
398
|
-
font-size: 0.9rem;
|
|
399
|
-
font-weight: 700;
|
|
400
|
-
color: var(--cm-text);
|
|
401
|
-
margin: 0;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
:global(.cm-drop-sub) {
|
|
405
|
-
font-size: 0.75rem;
|
|
406
|
-
color: var(--cm-text-muted);
|
|
407
|
-
margin: 0;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
:global(.cm-drop-link) {
|
|
411
|
-
color: var(--cm-primary);
|
|
412
|
-
font-weight: 600;
|
|
413
|
-
cursor: pointer;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
:global(.cm-section-label) {
|
|
417
|
-
display: block;
|
|
418
|
-
font-size: 0.65rem;
|
|
419
|
-
font-weight: 700;
|
|
420
|
-
text-transform: uppercase;
|
|
421
|
-
letter-spacing: 0.08em;
|
|
422
|
-
color: var(--cm-text-muted);
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
:global(.cm-section-header) {
|
|
426
|
-
display: flex;
|
|
427
|
-
justify-content: space-between;
|
|
428
|
-
align-items: center;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
:global(.cm-badge) {
|
|
432
|
-
background: var(--cm-primary-light);
|
|
433
|
-
color: var(--cm-primary);
|
|
434
|
-
font-size: 0.65rem;
|
|
435
|
-
font-weight: 700;
|
|
436
|
-
padding: 0.15rem 0.45rem;
|
|
437
|
-
border-radius: 9999px;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
:global(.cm-thumbs) {
|
|
441
|
-
display: grid;
|
|
442
|
-
grid-template-columns: repeat(auto-fill, minmax(48px, 1fr));
|
|
443
|
-
gap: 0.35rem;
|
|
444
|
-
margin-top: 0.5rem;
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
:global(.cm-thumb) {
|
|
448
|
-
position: relative;
|
|
449
|
-
aspect-ratio: 1;
|
|
450
|
-
border-radius: 0.4rem;
|
|
451
|
-
overflow: hidden;
|
|
452
|
-
border: 2px solid transparent;
|
|
453
|
-
transition: border-color 0.15s;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
:global(.cm-thumb:hover) {
|
|
457
|
-
border-color: var(--cm-primary);
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
:global(.cm-thumb img) {
|
|
461
|
-
width: 100%;
|
|
462
|
-
height: 100%;
|
|
463
|
-
object-fit: cover;
|
|
464
|
-
display: block;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
:global(.cm-thumb-num) {
|
|
468
|
-
position: absolute;
|
|
469
|
-
bottom: 2px;
|
|
470
|
-
left: 3px;
|
|
471
|
-
font-size: 0.55rem;
|
|
472
|
-
font-weight: 800;
|
|
473
|
-
color: var(--cm-bg);
|
|
474
|
-
text-shadow: 0 1px 2px rgba(0,0,0,0.8);
|
|
475
|
-
line-height: 1;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
:global(.cm-thumb-del) {
|
|
479
|
-
position: absolute;
|
|
480
|
-
top: 2px;
|
|
481
|
-
right: 2px;
|
|
482
|
-
width: 16px;
|
|
483
|
-
height: 16px;
|
|
484
|
-
background: rgba(239,68,68,0.9);
|
|
485
|
-
color: var(--cm-bg);
|
|
486
|
-
border: none;
|
|
487
|
-
border-radius: 50%;
|
|
488
|
-
cursor: pointer;
|
|
489
|
-
display: none;
|
|
490
|
-
align-items: center;
|
|
491
|
-
justify-content: center;
|
|
492
|
-
padding: 0;
|
|
493
|
-
transition: background 0.15s;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
:global(.cm-thumb:hover .cm-thumb-del) {
|
|
497
|
-
display: flex;
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
:global(.cm-thumb-del:hover) {
|
|
501
|
-
background: #dc2626;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
:global(.cm-preview-col) {
|
|
505
|
-
padding: 1.25rem;
|
|
506
|
-
display: flex;
|
|
507
|
-
flex-direction: column;
|
|
508
|
-
gap: 0.5rem;
|
|
509
|
-
min-height: 260px;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
:global(.cm-preview-placeholder) {
|
|
513
|
-
flex: 1;
|
|
514
|
-
background: var(--cm-bg-muted);
|
|
515
|
-
border: 2px dashed var(--cm-border);
|
|
516
|
-
border-radius: 0.75rem;
|
|
517
|
-
display: flex;
|
|
518
|
-
flex-direction: column;
|
|
519
|
-
align-items: center;
|
|
520
|
-
justify-content: center;
|
|
521
|
-
gap: 0.5rem;
|
|
522
|
-
color: var(--cm-text-muted);
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
:global(.cm-preview-placeholder p) {
|
|
526
|
-
font-size: 0.8rem;
|
|
527
|
-
margin: 0;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
:global(.cm-canvas) {
|
|
531
|
-
width: 100%;
|
|
532
|
-
height: auto;
|
|
533
|
-
border-radius: 0.75rem;
|
|
534
|
-
border: 1px solid var(--cm-border);
|
|
535
|
-
display: block;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
:global(.cm-dims-badge) {
|
|
539
|
-
font-size: 0.65rem;
|
|
540
|
-
font-weight: 600;
|
|
541
|
-
color: var(--cm-text-muted);
|
|
542
|
-
background: var(--cm-bg-muted);
|
|
543
|
-
border: 1px solid var(--cm-border);
|
|
544
|
-
border-radius: 9999px;
|
|
545
|
-
padding: 0.15rem 0.5rem;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
:global(.cm-section-divider) {
|
|
549
|
-
border-top: 1px solid var(--cm-border);
|
|
550
|
-
padding: 1rem 1.25rem;
|
|
551
|
-
display: flex;
|
|
552
|
-
flex-direction: column;
|
|
553
|
-
gap: 0.75rem;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
:global(.cm-layouts) {
|
|
557
|
-
display: grid;
|
|
558
|
-
grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
|
|
559
|
-
gap: 0.4rem;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
:global(.cm-layout-btn) {
|
|
563
|
-
display: flex;
|
|
564
|
-
flex-direction: column;
|
|
565
|
-
align-items: center;
|
|
566
|
-
gap: 0.2rem;
|
|
567
|
-
padding: 0.5rem 0.25rem;
|
|
568
|
-
background: var(--cm-bg-muted);
|
|
569
|
-
border: 2px solid var(--cm-border);
|
|
570
|
-
border-radius: 0.625rem;
|
|
571
|
-
cursor: pointer;
|
|
572
|
-
transition: border-color 0.15s, background 0.15s, opacity 0.15s;
|
|
573
|
-
color: var(--cm-text-muted);
|
|
574
|
-
position: relative;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
:global(.cm-layout-btn span) {
|
|
578
|
-
font-size: 0.55rem;
|
|
579
|
-
font-weight: 600;
|
|
580
|
-
text-align: center;
|
|
581
|
-
line-height: 1.2;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
:global(.cm-layout-btn:hover:not(:disabled)) {
|
|
585
|
-
border-color: var(--cm-primary);
|
|
586
|
-
color: var(--cm-primary);
|
|
587
|
-
background: var(--cm-primary-light);
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
:global(.cm-layout-btn-active) {
|
|
591
|
-
border-color: var(--cm-primary);
|
|
592
|
-
background: var(--cm-primary-light);
|
|
593
|
-
color: var(--cm-primary);
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
:global(.cm-layout-btn-disabled) {
|
|
597
|
-
opacity: 0.45;
|
|
598
|
-
cursor: not-allowed;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
:global(.cm-layout-need) {
|
|
602
|
-
position: absolute;
|
|
603
|
-
top: 2px;
|
|
604
|
-
right: 4px;
|
|
605
|
-
font-size: 0.55rem;
|
|
606
|
-
font-weight: 800;
|
|
607
|
-
color: var(--cm-text-muted);
|
|
608
|
-
background: var(--cm-bg);
|
|
609
|
-
border: 1px solid var(--cm-border);
|
|
610
|
-
border-radius: 9999px;
|
|
611
|
-
padding: 0 3px;
|
|
612
|
-
line-height: 1.4;
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
:global(.cm-settings-inline) {
|
|
616
|
-
display: flex;
|
|
617
|
-
flex-wrap: wrap;
|
|
618
|
-
align-items: flex-end;
|
|
619
|
-
gap: 1rem;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
:global(.cm-setting) {
|
|
623
|
-
display: flex;
|
|
624
|
-
flex-direction: column;
|
|
625
|
-
gap: 0.3rem;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
:global(.cm-setting-label) {
|
|
629
|
-
font-size: 0.7rem;
|
|
630
|
-
font-weight: 600;
|
|
631
|
-
color: var(--cm-text-muted);
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
:global(.cm-slider) {
|
|
635
|
-
accent-color: var(--cm-primary);
|
|
636
|
-
width: 120px;
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
:global(.cm-color-row) {
|
|
640
|
-
display: flex;
|
|
641
|
-
align-items: center;
|
|
642
|
-
gap: 0.5rem;
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
:global(.cm-color-swatch) {
|
|
646
|
-
width: 32px;
|
|
647
|
-
height: 32px;
|
|
648
|
-
border: 2px solid var(--cm-border);
|
|
649
|
-
border-radius: 0.4rem;
|
|
650
|
-
cursor: pointer;
|
|
651
|
-
padding: 2px;
|
|
652
|
-
background: transparent;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
:global(.cm-color-code) {
|
|
656
|
-
font-size: 0.7rem;
|
|
657
|
-
font-weight: 600;
|
|
658
|
-
color: var(--cm-text-muted);
|
|
659
|
-
font-variant-numeric: tabular-nums;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
:global(.cm-download-btn) {
|
|
663
|
-
display: flex;
|
|
664
|
-
align-items: center;
|
|
665
|
-
gap: 0.4rem;
|
|
666
|
-
padding: 0.6rem 1.25rem;
|
|
667
|
-
background: linear-gradient(135deg, var(--cm-primary), #8b5cf6);
|
|
668
|
-
color: var(--cm-bg);
|
|
669
|
-
border: none;
|
|
670
|
-
border-radius: 0.625rem;
|
|
671
|
-
font-size: 0.875rem;
|
|
672
|
-
font-weight: 700;
|
|
673
|
-
cursor: pointer;
|
|
674
|
-
transition: opacity 0.2s, transform 0.1s;
|
|
675
|
-
box-shadow: 0 4px 12px rgba(99,102,241,0.3);
|
|
676
|
-
white-space: nowrap;
|
|
677
|
-
margin-left: auto;
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
:global(.cm-download-btn:disabled) {
|
|
681
|
-
opacity: 0.4;
|
|
682
|
-
cursor: not-allowed;
|
|
683
|
-
box-shadow: none;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
:global(.cm-download-btn:not(:disabled):hover) {
|
|
687
|
-
transform: translateY(-1px);
|
|
688
|
-
box-shadow: 0 6px 18px rgba(99,102,241,0.4);
|
|
689
|
-
}
|
|
690
|
-
</style>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AudiovisualToolEntry, ToolLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export interface CollageMakerUI {
|
|
4
|
+
dropTitle: string;
|
|
5
|
+
dropSub: string;
|
|
6
|
+
dropLink: string;
|
|
7
|
+
imgsLoaded: string;
|
|
8
|
+
layoutLabel: string;
|
|
9
|
+
settingsLabel: string;
|
|
10
|
+
borderLabel: string;
|
|
11
|
+
borderColorLabel: string;
|
|
12
|
+
bgColorLabel: string;
|
|
13
|
+
downloadBtn: string;
|
|
14
|
+
previewTitle: string;
|
|
15
|
+
needsImgs: string;
|
|
16
|
+
errorMin: string;
|
|
17
|
+
errorMax: string;
|
|
18
|
+
errorLoad: string;
|
|
19
|
+
[key: string]: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type CollageMakerLocaleContent = ToolLocaleContent<CollageMakerUI>;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
export const collageMaker: AudiovisualToolEntry<CollageMakerUI> = {
|
|
26
|
+
id: 'creador-collage-fotos',
|
|
27
|
+
icons: {
|
|
28
|
+
bg: 'mdi:collage',
|
|
29
|
+
fg: 'mdi:palette-outline',
|
|
30
|
+
},
|
|
31
|
+
i18n: {
|
|
32
|
+
es: async () => (await import('./i18n/es')).content as unknown as CollageMakerLocaleContent,
|
|
33
|
+
en: async () => (await import('./i18n/en')).content as unknown as CollageMakerLocaleContent,
|
|
34
|
+
fr: async () => (await import('./i18n/fr')).content as unknown as CollageMakerLocaleContent,
|
|
35
|
+
de: async () => (await import('./i18n/de')).content as unknown as CollageMakerLocaleContent,
|
|
36
|
+
it: async () => (await import('./i18n/it')).content as unknown as CollageMakerLocaleContent,
|
|
37
|
+
pt: async () => (await import('./i18n/pt')).content as unknown as CollageMakerLocaleContent,
|
|
38
|
+
id: async () => (await import('./i18n/id')).content as unknown as CollageMakerLocaleContent,
|
|
39
|
+
ja: async () => (await import('./i18n/ja')).content as unknown as CollageMakerLocaleContent,
|
|
40
|
+
ko: async () => (await import('./i18n/ko')).content as unknown as CollageMakerLocaleContent,
|
|
41
|
+
nl: async () => (await import('./i18n/nl')).content as unknown as CollageMakerLocaleContent,
|
|
42
|
+
pl: async () => (await import('./i18n/pl')).content as unknown as CollageMakerLocaleContent,
|
|
43
|
+
ru: async () => (await import('./i18n/ru')).content as unknown as CollageMakerLocaleContent,
|
|
44
|
+
sv: async () => (await import('./i18n/sv')).content as unknown as CollageMakerLocaleContent,
|
|
45
|
+
tr: async () => (await import('./i18n/tr')).content as unknown as CollageMakerLocaleContent,
|
|
46
|
+
zh: async () => (await import('./i18n/zh')).content as unknown as CollageMakerLocaleContent,
|
|
47
|
+
},
|
|
48
|
+
};
|