@jjlmoya/utils-audiovisual 1.5.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.
- package/package.json +1 -1
- package/src/tool/chromaticLens/component.astro +38 -38
- package/src/tool/collageMaker/component.astro +47 -47
- package/src/tool/exifCleaner/component.astro +49 -48
- package/src/tool/imageCompressor/component.astro +144 -106
- package/src/tool/imageCompressor/i18n/en.ts +11 -1
- package/src/tool/imageCompressor/i18n/es.ts +12 -2
- package/src/tool/imageCompressor/i18n/fr.ts +12 -2
- package/src/tool/imageCompressor/index.ts +10 -0
- package/src/tool/printQualityCalculator/component.astro +129 -104
- package/src/tool/printQualityCalculator/i18n/en.ts +15 -1
- package/src/tool/printQualityCalculator/i18n/es.ts +16 -2
- package/src/tool/printQualityCalculator/i18n/fr.ts +16 -2
- package/src/tool/printQualityCalculator/index.ts +14 -0
- package/src/tool/privacyBlur/component.astro +35 -35
- package/src/tool/subtitleSync/component.astro +42 -42
- package/src/tool/timelapseCalculator/component.astro +41 -42
- package/src/tool/tvDistance/component.astro +55 -55
- package/src/tool/videoFrameExtractor/component.astro +54 -54
|
@@ -9,7 +9,7 @@ interface Props {
|
|
|
9
9
|
const { ui } = Astro.props;
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
<div class="pq-wrapper">
|
|
12
|
+
<div class="pq-wrapper" id="pq-root" data-ui={JSON.stringify(ui)}>
|
|
13
13
|
<div
|
|
14
14
|
id="drop-zone"
|
|
15
15
|
class="pq-drop-zone pq-group"
|
|
@@ -80,10 +80,10 @@ const { ui } = Astro.props;
|
|
|
80
80
|
</div>
|
|
81
81
|
|
|
82
82
|
<div class="pq-presets">
|
|
83
|
-
<button class="pq-preset-btn" data-val="72">
|
|
84
|
-
<button class="pq-preset-btn" data-val="150">
|
|
85
|
-
<button class="pq-preset-btn pq-preset-active" data-val="300">
|
|
86
|
-
<button class="pq-preset-btn" data-val="600">
|
|
83
|
+
<button class="pq-preset-btn" data-val="72">{ui.dpiScreenLabel} (72)</button>
|
|
84
|
+
<button class="pq-preset-btn" data-val="150">{ui.dpiNewspaperLabel} (150)</button>
|
|
85
|
+
<button class="pq-preset-btn pq-preset-active" data-val="300">{ui.dpiPrintLabel} (300)</button>
|
|
86
|
+
<button class="pq-preset-btn" data-val="600">{ui.dpiFineArtLabel} (600)</button>
|
|
87
87
|
</div>
|
|
88
88
|
</div>
|
|
89
89
|
|
|
@@ -135,18 +135,41 @@ const { ui } = Astro.props;
|
|
|
135
135
|
</div>
|
|
136
136
|
</div>
|
|
137
137
|
|
|
138
|
-
<script
|
|
138
|
+
<script>
|
|
139
|
+
const root = document.currentScript?.closest('[data-ui]') || document.getElementById('pq-root');
|
|
140
|
+
const ui = root ? JSON.parse(root.dataset.ui || '{}') : {};
|
|
141
|
+
|
|
139
142
|
const PAPER_FORMATS = [
|
|
140
|
-
{
|
|
141
|
-
{
|
|
142
|
-
{
|
|
143
|
-
{
|
|
144
|
-
{
|
|
145
|
-
{
|
|
146
|
-
{
|
|
143
|
+
{ key: "postal", label: "A6", w: 10.5, h: 14.8 },
|
|
144
|
+
{ key: "quartilla", label: "A5", w: 14.8, h: 21.0 },
|
|
145
|
+
{ key: "folio", label: "A4", w: 21.0, h: 29.7 },
|
|
146
|
+
{ key: "doubleFolio", label: "A3", w: 29.7, h: 42.0 },
|
|
147
|
+
{ key: "smallPoster", label: "A2", w: 42.0, h: 59.4 },
|
|
148
|
+
{ key: "largePoster", label: "A1", w: 59.4, h: 84.1 },
|
|
149
|
+
{ key: "plane", label: "A0", w: 84.1, h: 118.9 },
|
|
147
150
|
];
|
|
148
151
|
|
|
149
152
|
function initPQCalc() {
|
|
153
|
+
console.log('DEBUG: initPQCalc called');
|
|
154
|
+
console.log('DEBUG: ui object:', ui);
|
|
155
|
+
console.log('DEBUG: ui.formatPostal:', ui.formatPostal);
|
|
156
|
+
|
|
157
|
+
function getFormatName(format) {
|
|
158
|
+
const keyMap = {
|
|
159
|
+
postal: 'formatPostal',
|
|
160
|
+
quartilla: 'formatQuartilla',
|
|
161
|
+
folio: 'formatFolio',
|
|
162
|
+
doubleFolio: 'formatDoubleFolio',
|
|
163
|
+
smallPoster: 'formatSmallPoster',
|
|
164
|
+
largePoster: 'formatLargePoster',
|
|
165
|
+
plane: 'formatPlane'
|
|
166
|
+
};
|
|
167
|
+
const uiKey = keyMap[format.key];
|
|
168
|
+
const result = format.label + ' (' + (ui[uiKey] || format.key) + ')';
|
|
169
|
+
console.log('DEBUG: getFormatName for', format.key, '=', result, '(uiKey:', uiKey, ', ui[uiKey]:', ui[uiKey], ')');
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
|
|
150
173
|
const dropZone = document.getElementById("drop-zone");
|
|
151
174
|
const fileInput = document.getElementById("file-input");
|
|
152
175
|
const resultsArea = document.getElementById("results-area");
|
|
@@ -209,7 +232,7 @@ const { ui } = Astro.props;
|
|
|
209
232
|
});
|
|
210
233
|
|
|
211
234
|
function processFile(file) {
|
|
212
|
-
if (!file.type.startsWith("image/")) { alert(
|
|
235
|
+
if (!file.type.startsWith("image/")) { alert(ui.invalidImageError); return; }
|
|
213
236
|
const reader = new FileReader();
|
|
214
237
|
reader.onload = function(e) {
|
|
215
238
|
const img = new Image();
|
|
@@ -269,30 +292,32 @@ const { ui } = Astro.props;
|
|
|
269
292
|
function updateQualityBadge(dpi) {
|
|
270
293
|
if (!qualityText || !qualityDesc || !qualityBadge) return;
|
|
271
294
|
if (dpi >= 300) {
|
|
272
|
-
qualityText.textContent =
|
|
273
|
-
qualityDesc.textContent =
|
|
295
|
+
qualityText.textContent = ui.qualityExcellent;
|
|
296
|
+
qualityDesc.textContent = ui.qualityExcellentDesc;
|
|
274
297
|
qualityBadge.className = "pq-quality-badge pq-badge-green";
|
|
275
298
|
} else if (dpi >= 150) {
|
|
276
|
-
qualityText.textContent =
|
|
277
|
-
qualityDesc.textContent =
|
|
299
|
+
qualityText.textContent = ui.qualityGood;
|
|
300
|
+
qualityDesc.textContent = ui.qualityGoodDesc;
|
|
278
301
|
qualityBadge.className = "pq-quality-badge pq-badge-yellow";
|
|
279
302
|
} else if (dpi >= 72) {
|
|
280
|
-
qualityText.textContent =
|
|
281
|
-
qualityDesc.textContent =
|
|
303
|
+
qualityText.textContent = ui.qualityFair;
|
|
304
|
+
qualityDesc.textContent = ui.qualityFairDesc;
|
|
282
305
|
qualityBadge.className = "pq-quality-badge pq-badge-red";
|
|
283
306
|
} else {
|
|
284
|
-
qualityText.textContent =
|
|
285
|
-
qualityDesc.textContent =
|
|
307
|
+
qualityText.textContent = ui.qualityPoor;
|
|
308
|
+
qualityDesc.textContent = ui.qualityPoorDesc;
|
|
286
309
|
qualityBadge.className = "pq-quality-badge pq-badge-slate";
|
|
287
310
|
}
|
|
288
311
|
}
|
|
289
312
|
|
|
290
313
|
function updateFormatsTable(cmW, cmH) {
|
|
314
|
+
console.log('DEBUG: updateFormatsTable called, ui.supportedText:', ui.supportedText);
|
|
291
315
|
if (!formatsTableBody) return;
|
|
292
316
|
formatsTableBody.innerHTML = "";
|
|
293
317
|
const imgMin = Math.min(cmW, cmH);
|
|
294
318
|
const imgMax = Math.max(cmW, cmH);
|
|
295
319
|
PAPER_FORMATS.forEach(function(paper) {
|
|
320
|
+
console.log('DEBUG: Processing paper format:', paper.key);
|
|
296
321
|
const paperMin = Math.min(paper.w, paper.h);
|
|
297
322
|
const paperMax = Math.max(paper.w, paper.h);
|
|
298
323
|
const covers = imgMin >= paperMin - 0.1 && imgMax >= paperMax - 0.1;
|
|
@@ -300,9 +325,9 @@ const { ui } = Astro.props;
|
|
|
300
325
|
const row = document.createElement("tr");
|
|
301
326
|
row.className = "pq-formats-row";
|
|
302
327
|
const statusHtml = covers
|
|
303
|
-
? '<span class="pq-status pq-status-ok"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/></svg>
|
|
304
|
-
: '<span class="pq-status pq-status-no"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16"/></svg>
|
|
305
|
-
row.innerHTML = '<td class="pq-td pq-td-name">' + paper
|
|
328
|
+
? '<span class="pq-status pq-status-ok"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/></svg> ' + ui.supportedText + '</span>'
|
|
329
|
+
: '<span class="pq-status pq-status-no"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16"/></svg> ' + ui.notSupportedPrefix + coverage.toFixed(0) + '%)</span>';
|
|
330
|
+
row.innerHTML = '<td class="pq-td pq-td-name">' + getFormatName(paper) + '</td><td class="pq-td pq-td-dim">' + paper.w + ' x ' + paper.h + '</td><td class="pq-td">' + statusHtml + '</td>';
|
|
306
331
|
formatsTableBody.appendChild(row);
|
|
307
332
|
});
|
|
308
333
|
}
|
|
@@ -333,7 +358,7 @@ const { ui } = Astro.props;
|
|
|
333
358
|
--pq-accent: #818cf8;
|
|
334
359
|
}
|
|
335
360
|
|
|
336
|
-
.pq-wrapper {
|
|
361
|
+
:global(.pq-wrapper) {
|
|
337
362
|
width: 100%;
|
|
338
363
|
max-width: 56rem;
|
|
339
364
|
margin: 0 auto;
|
|
@@ -347,7 +372,7 @@ const { ui } = Astro.props;
|
|
|
347
372
|
display: none;
|
|
348
373
|
}
|
|
349
374
|
|
|
350
|
-
.pq-drop-zone {
|
|
375
|
+
:global(.pq-drop-zone) {
|
|
351
376
|
position: relative;
|
|
352
377
|
cursor: pointer;
|
|
353
378
|
border: 2px dashed var(--pq-border);
|
|
@@ -356,15 +381,15 @@ const { ui } = Astro.props;
|
|
|
356
381
|
transition: border-color 0.3s, background 0.3s;
|
|
357
382
|
}
|
|
358
383
|
|
|
359
|
-
:global(.theme-dark
|
|
384
|
+
:global(.theme-dark .pq-drop-zone) {
|
|
360
385
|
border-color: var(--pq-border);
|
|
361
386
|
}
|
|
362
|
-
.pq-drop-zone:hover,
|
|
363
|
-
.pq-drop-zone.pq-drop-active {
|
|
387
|
+
:global(.pq-drop-zone:hover),
|
|
388
|
+
:global(.pq-drop-zone.pq-drop-active) {
|
|
364
389
|
border-color: var(--pq-primary);
|
|
365
390
|
background: rgba(99, 102, 241, 0.04);
|
|
366
391
|
}
|
|
367
|
-
.pq-drop-inner {
|
|
392
|
+
:global(.pq-drop-inner) {
|
|
368
393
|
display: flex;
|
|
369
394
|
flex-direction: column;
|
|
370
395
|
align-items: center;
|
|
@@ -372,7 +397,7 @@ const { ui } = Astro.props;
|
|
|
372
397
|
text-align: center;
|
|
373
398
|
gap: 1rem;
|
|
374
399
|
}
|
|
375
|
-
.pq-upload-icon-wrap {
|
|
400
|
+
:global(.pq-upload-icon-wrap) {
|
|
376
401
|
width: 5rem;
|
|
377
402
|
height: 5rem;
|
|
378
403
|
background: var(--pq-primary-light);
|
|
@@ -384,29 +409,29 @@ const { ui } = Astro.props;
|
|
|
384
409
|
transition: transform 0.3s;
|
|
385
410
|
}
|
|
386
411
|
|
|
387
|
-
:global(.theme-dark
|
|
412
|
+
:global(.theme-dark .pq-upload-icon-wrap) {
|
|
388
413
|
background: rgba(99, 102, 241, 0.2);
|
|
389
414
|
color: #818cf8;
|
|
390
415
|
}
|
|
391
|
-
.pq-drop-zone:hover .pq-upload-icon-wrap {
|
|
416
|
+
:global(.pq-drop-zone:hover .pq-upload-icon-wrap) {
|
|
392
417
|
transform: scale(1.1);
|
|
393
418
|
}
|
|
394
|
-
.pq-drop-title {
|
|
419
|
+
:global(.pq-drop-title) {
|
|
395
420
|
font-size: 1.25rem;
|
|
396
421
|
font-weight: 700;
|
|
397
422
|
color: #0f172a;
|
|
398
423
|
margin: 0;
|
|
399
424
|
}
|
|
400
425
|
|
|
401
|
-
:global(.theme-dark
|
|
426
|
+
:global(.theme-dark .pq-drop-title) {
|
|
402
427
|
color: #f1f5f9;
|
|
403
428
|
}
|
|
404
|
-
.pq-drop-sub {
|
|
429
|
+
:global(.pq-drop-sub) {
|
|
405
430
|
color: #64748b;
|
|
406
431
|
margin: 0.25rem 0 0;
|
|
407
432
|
font-size: 0.95rem;
|
|
408
433
|
}
|
|
409
|
-
.pq-drop-overlay {
|
|
434
|
+
:global(.pq-drop-overlay) {
|
|
410
435
|
position: absolute;
|
|
411
436
|
inset: 0;
|
|
412
437
|
background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(168,85,247,0.04));
|
|
@@ -415,9 +440,9 @@ const { ui } = Astro.props;
|
|
|
415
440
|
pointer-events: none;
|
|
416
441
|
transition: opacity 0.3s;
|
|
417
442
|
}
|
|
418
|
-
.pq-drop-zone:hover .pq-drop-overlay { opacity: 1; }
|
|
443
|
+
:global(.pq-drop-zone:hover .pq-drop-overlay) { opacity: 1; }
|
|
419
444
|
|
|
420
|
-
.pq-results {
|
|
445
|
+
:global(.pq-results) {
|
|
421
446
|
display: flex;
|
|
422
447
|
flex-direction: column;
|
|
423
448
|
gap: 2rem;
|
|
@@ -435,7 +460,7 @@ const { ui } = Astro.props;
|
|
|
435
460
|
}
|
|
436
461
|
}
|
|
437
462
|
|
|
438
|
-
.pq-file-card {
|
|
463
|
+
:global(.pq-file-card) {
|
|
439
464
|
background: #fff;
|
|
440
465
|
border: 1px solid #e2e8f0;
|
|
441
466
|
border-radius: 0.75rem;
|
|
@@ -443,29 +468,29 @@ const { ui } = Astro.props;
|
|
|
443
468
|
padding: 1.5rem;
|
|
444
469
|
}
|
|
445
470
|
|
|
446
|
-
:global(.theme-dark
|
|
471
|
+
:global(.theme-dark .pq-file-card) {
|
|
447
472
|
background: #0f172a;
|
|
448
473
|
border-color: #1e293b;
|
|
449
474
|
}
|
|
450
|
-
.pq-file-left {
|
|
475
|
+
:global(.pq-file-left) {
|
|
451
476
|
display: flex;
|
|
452
477
|
align-items: center;
|
|
453
478
|
gap: 1.5rem;
|
|
454
479
|
}
|
|
455
|
-
.pq-preview-wrap {
|
|
480
|
+
:global(.pq-preview-wrap) {
|
|
456
481
|
position: relative;
|
|
457
482
|
width: 8rem;
|
|
458
483
|
height: 8rem;
|
|
459
484
|
flex-shrink: 0;
|
|
460
485
|
}
|
|
461
|
-
.pq-preview-img {
|
|
486
|
+
:global(.pq-preview-img) {
|
|
462
487
|
width: 100%;
|
|
463
488
|
height: 100%;
|
|
464
489
|
object-fit: cover;
|
|
465
490
|
border-radius: 0.5rem;
|
|
466
491
|
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
|
|
467
492
|
}
|
|
468
|
-
.pq-file-name {
|
|
493
|
+
:global(.pq-file-name) {
|
|
469
494
|
font-weight: 700;
|
|
470
495
|
color: #0f172a;
|
|
471
496
|
font-size: 1rem;
|
|
@@ -476,15 +501,15 @@ const { ui } = Astro.props;
|
|
|
476
501
|
max-width: 20rem;
|
|
477
502
|
}
|
|
478
503
|
|
|
479
|
-
:global(.theme-dark
|
|
504
|
+
:global(.theme-dark .pq-file-name) {
|
|
480
505
|
color: #f1f5f9;
|
|
481
506
|
}
|
|
482
|
-
.pq-file-meta {
|
|
507
|
+
:global(.pq-file-meta) {
|
|
483
508
|
display: flex;
|
|
484
509
|
flex-wrap: wrap;
|
|
485
510
|
gap: 1rem;
|
|
486
511
|
}
|
|
487
|
-
.pq-meta-item {
|
|
512
|
+
:global(.pq-meta-item) {
|
|
488
513
|
display: flex;
|
|
489
514
|
align-items: center;
|
|
490
515
|
gap: 0.25rem;
|
|
@@ -492,7 +517,7 @@ const { ui } = Astro.props;
|
|
|
492
517
|
color: #64748b;
|
|
493
518
|
}
|
|
494
519
|
|
|
495
|
-
.pq-main-grid {
|
|
520
|
+
:global(.pq-main-grid) {
|
|
496
521
|
display: grid;
|
|
497
522
|
grid-template-columns: 1fr 1fr;
|
|
498
523
|
gap: 2rem;
|
|
@@ -502,18 +527,18 @@ const { ui } = Astro.props;
|
|
|
502
527
|
.pq-main-grid { grid-template-columns: 1fr; }
|
|
503
528
|
}
|
|
504
529
|
|
|
505
|
-
.pq-config-panel {
|
|
530
|
+
:global(.pq-config-panel) {
|
|
506
531
|
background: #f8fafc;
|
|
507
532
|
border: 1px solid #e2e8f0;
|
|
508
533
|
border-radius: 0.75rem;
|
|
509
534
|
padding: 1.5rem;
|
|
510
535
|
}
|
|
511
536
|
|
|
512
|
-
:global(.theme-dark
|
|
537
|
+
:global(.theme-dark .pq-config-panel) {
|
|
513
538
|
background: rgba(30, 41, 59, 0.5);
|
|
514
539
|
border-color: var(--pq-border);
|
|
515
540
|
}
|
|
516
|
-
.pq-config-label {
|
|
541
|
+
:global(.pq-config-label) {
|
|
517
542
|
display: block;
|
|
518
543
|
font-size: 0.875rem;
|
|
519
544
|
font-weight: 500;
|
|
@@ -521,10 +546,10 @@ const { ui } = Astro.props;
|
|
|
521
546
|
margin-bottom: 1rem;
|
|
522
547
|
}
|
|
523
548
|
|
|
524
|
-
:global(.theme-dark
|
|
549
|
+
:global(.theme-dark .pq-config-label) {
|
|
525
550
|
color: #94a3b8;
|
|
526
551
|
}
|
|
527
|
-
.pq-slider {
|
|
552
|
+
:global(.pq-slider) {
|
|
528
553
|
width: 100%;
|
|
529
554
|
height: 0.5rem;
|
|
530
555
|
background: #e2e8f0;
|
|
@@ -535,16 +560,16 @@ const { ui } = Astro.props;
|
|
|
535
560
|
margin-bottom: 1rem;
|
|
536
561
|
}
|
|
537
562
|
|
|
538
|
-
:global(.theme-dark
|
|
563
|
+
:global(.theme-dark .pq-slider) {
|
|
539
564
|
background: #334155;
|
|
540
565
|
}
|
|
541
|
-
.pq-dpi-row {
|
|
566
|
+
:global(.pq-dpi-row) {
|
|
542
567
|
display: flex;
|
|
543
568
|
align-items: center;
|
|
544
569
|
gap: 1rem;
|
|
545
570
|
margin-bottom: 1.5rem;
|
|
546
571
|
}
|
|
547
|
-
.pq-dpi-number {
|
|
572
|
+
:global(.pq-dpi-number) {
|
|
548
573
|
width: 6rem;
|
|
549
574
|
border: 1px solid #e2e8f0;
|
|
550
575
|
border-radius: 0.5rem;
|
|
@@ -556,23 +581,23 @@ const { ui } = Astro.props;
|
|
|
556
581
|
padding: 0.4rem 0.5rem;
|
|
557
582
|
outline: none;
|
|
558
583
|
}
|
|
559
|
-
.pq-dpi-number:focus { border-color: var(--pq-primary); }
|
|
584
|
+
:global(.pq-dpi-number:focus) { border-color: var(--pq-primary); }
|
|
560
585
|
|
|
561
|
-
:global(.theme-dark
|
|
586
|
+
:global(.theme-dark .pq-dpi-number) {
|
|
562
587
|
background: #0f172a;
|
|
563
588
|
border-color: var(--pq-border);
|
|
564
589
|
color: #f1f5f9;
|
|
565
590
|
}
|
|
566
|
-
.pq-dpi-label {
|
|
591
|
+
:global(.pq-dpi-label) {
|
|
567
592
|
font-size: 0.875rem;
|
|
568
593
|
color: #64748b;
|
|
569
594
|
}
|
|
570
|
-
.pq-presets {
|
|
595
|
+
:global(.pq-presets) {
|
|
571
596
|
display: flex;
|
|
572
597
|
flex-wrap: wrap;
|
|
573
598
|
gap: 0.5rem;
|
|
574
599
|
}
|
|
575
|
-
.pq-preset-btn {
|
|
600
|
+
:global(.pq-preset-btn) {
|
|
576
601
|
padding: 0.25rem 0.75rem;
|
|
577
602
|
font-size: 0.75rem;
|
|
578
603
|
font-weight: 500;
|
|
@@ -583,31 +608,31 @@ const { ui } = Astro.props;
|
|
|
583
608
|
cursor: pointer;
|
|
584
609
|
transition: background 0.15s, color 0.15s;
|
|
585
610
|
}
|
|
586
|
-
.pq-preset-btn:hover { background: #cbd5e1; }
|
|
611
|
+
:global(.pq-preset-btn:hover) { background: #cbd5e1; }
|
|
587
612
|
|
|
588
|
-
:global(.theme-dark
|
|
613
|
+
:global(.theme-dark .pq-preset-btn) {
|
|
589
614
|
background: #334155;
|
|
590
615
|
color: #94a3b8;
|
|
591
616
|
}
|
|
592
617
|
|
|
593
|
-
:global(.theme-dark
|
|
618
|
+
:global(.theme-dark .pq-preset-btn:hover) {
|
|
594
619
|
background: #475569;
|
|
595
620
|
}
|
|
596
|
-
.pq-preset-active {
|
|
621
|
+
:global(.pq-preset-active) {
|
|
597
622
|
background: var(--pq-primary-light);
|
|
598
623
|
color: #4338ca;
|
|
599
624
|
box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.2);
|
|
600
625
|
}
|
|
601
626
|
|
|
602
|
-
:global(.theme-dark
|
|
627
|
+
:global(.theme-dark .pq-preset-active) {
|
|
603
628
|
background: rgba(99, 102, 241, 0.3);
|
|
604
629
|
color: #a5b4fc;
|
|
605
630
|
}
|
|
606
631
|
|
|
607
|
-
.pq-output-panel {
|
|
632
|
+
:global(.pq-output-panel) {
|
|
608
633
|
display: flex;
|
|
609
634
|
}
|
|
610
|
-
.pq-output-gradient {
|
|
635
|
+
:global(.pq-output-gradient) {
|
|
611
636
|
flex: 1;
|
|
612
637
|
display: flex;
|
|
613
638
|
flex-direction: column;
|
|
@@ -620,7 +645,7 @@ const { ui } = Astro.props;
|
|
|
620
645
|
position: relative;
|
|
621
646
|
overflow: hidden;
|
|
622
647
|
}
|
|
623
|
-
.pq-output-blur-bg {
|
|
648
|
+
:global(.pq-output-blur-bg) {
|
|
624
649
|
position: absolute;
|
|
625
650
|
top: 0; right: 0;
|
|
626
651
|
width: 8rem; height: 8rem;
|
|
@@ -630,7 +655,7 @@ const { ui } = Astro.props;
|
|
|
630
655
|
transform: translate(2rem, -2rem);
|
|
631
656
|
pointer-events: none;
|
|
632
657
|
}
|
|
633
|
-
.pq-output-subtitle {
|
|
658
|
+
:global(.pq-output-subtitle) {
|
|
634
659
|
font-size: 0.75rem;
|
|
635
660
|
font-weight: 500;
|
|
636
661
|
text-transform: uppercase;
|
|
@@ -639,7 +664,7 @@ const { ui } = Astro.props;
|
|
|
639
664
|
margin: 0 0 0.5rem;
|
|
640
665
|
position: relative;
|
|
641
666
|
}
|
|
642
|
-
.pq-output-size {
|
|
667
|
+
:global(.pq-output-size) {
|
|
643
668
|
display: flex;
|
|
644
669
|
align-items: baseline;
|
|
645
670
|
gap: 0.5rem;
|
|
@@ -648,25 +673,25 @@ const { ui } = Astro.props;
|
|
|
648
673
|
margin-bottom: 0.25rem;
|
|
649
674
|
position: relative;
|
|
650
675
|
}
|
|
651
|
-
.pq-size-sep {
|
|
676
|
+
:global(.pq-size-sep) {
|
|
652
677
|
font-size: 1.5rem;
|
|
653
678
|
opacity: 0.5;
|
|
654
679
|
}
|
|
655
|
-
.pq-size-unit {
|
|
680
|
+
:global(.pq-size-unit) {
|
|
656
681
|
font-size: 1.5rem;
|
|
657
682
|
}
|
|
658
|
-
.pq-output-inches {
|
|
683
|
+
:global(.pq-output-inches) {
|
|
659
684
|
color: rgba(199, 210, 254, 0.8);
|
|
660
685
|
font-size: 0.875rem;
|
|
661
686
|
margin-bottom: 1.5rem;
|
|
662
687
|
position: relative;
|
|
663
688
|
}
|
|
664
|
-
.pq-quality-section {
|
|
689
|
+
:global(.pq-quality-section) {
|
|
665
690
|
padding-top: 1rem;
|
|
666
691
|
border-top: 1px solid rgba(255,255,255,0.2);
|
|
667
692
|
position: relative;
|
|
668
693
|
}
|
|
669
|
-
.pq-quality-badge {
|
|
694
|
+
:global(.pq-quality-badge) {
|
|
670
695
|
display: inline-flex;
|
|
671
696
|
align-items: center;
|
|
672
697
|
gap: 0.375rem;
|
|
@@ -678,44 +703,44 @@ const { ui } = Astro.props;
|
|
|
678
703
|
backdrop-filter: blur(4px);
|
|
679
704
|
margin-bottom: 0.5rem;
|
|
680
705
|
}
|
|
681
|
-
.pq-badge-green {
|
|
706
|
+
:global(.pq-badge-green) {
|
|
682
707
|
background: rgba(16, 185, 129, 0.25);
|
|
683
708
|
box-shadow: 0 0 0 1px rgba(52, 211, 153, 0.3);
|
|
684
709
|
}
|
|
685
710
|
|
|
686
|
-
.pq-badge-yellow {
|
|
711
|
+
:global(.pq-badge-yellow) {
|
|
687
712
|
background: rgba(234, 179, 8, 0.25);
|
|
688
713
|
box-shadow: 0 0 0 1px rgba(253, 224, 71, 0.3);
|
|
689
714
|
}
|
|
690
715
|
|
|
691
|
-
.pq-badge-red {
|
|
716
|
+
:global(.pq-badge-red) {
|
|
692
717
|
background: rgba(239, 68, 68, 0.25);
|
|
693
718
|
box-shadow: 0 0 0 1px rgba(252, 165, 165, 0.3);
|
|
694
719
|
}
|
|
695
720
|
|
|
696
|
-
.pq-badge-slate {
|
|
721
|
+
:global(.pq-badge-slate) {
|
|
697
722
|
background: rgba(100, 116, 139, 0.25);
|
|
698
723
|
box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.3);
|
|
699
724
|
}
|
|
700
|
-
.pq-quality-desc {
|
|
725
|
+
:global(.pq-quality-desc) {
|
|
701
726
|
font-size: 0.875rem;
|
|
702
727
|
color: rgba(199,210,254,0.9);
|
|
703
728
|
line-height: 1.4;
|
|
704
729
|
margin: 0;
|
|
705
730
|
}
|
|
706
731
|
|
|
707
|
-
.pq-formats-card {
|
|
732
|
+
:global(.pq-formats-card) {
|
|
708
733
|
background: #fff;
|
|
709
734
|
border: 1px solid #e2e8f0;
|
|
710
735
|
border-radius: 0.75rem;
|
|
711
736
|
padding: 1.5rem;
|
|
712
737
|
}
|
|
713
738
|
|
|
714
|
-
:global(.theme-dark
|
|
739
|
+
:global(.theme-dark .pq-formats-card) {
|
|
715
740
|
background: #0f172a;
|
|
716
741
|
border-color: #1e293b;
|
|
717
742
|
}
|
|
718
|
-
.pq-formats-title {
|
|
743
|
+
:global(.pq-formats-title) {
|
|
719
744
|
display: flex;
|
|
720
745
|
align-items: center;
|
|
721
746
|
gap: 0.5rem;
|
|
@@ -725,18 +750,18 @@ const { ui } = Astro.props;
|
|
|
725
750
|
margin: 0 0 1rem;
|
|
726
751
|
}
|
|
727
752
|
|
|
728
|
-
:global(.theme-dark
|
|
753
|
+
:global(.theme-dark .pq-formats-title) {
|
|
729
754
|
color: #f1f5f9;
|
|
730
755
|
}
|
|
731
|
-
.pq-formats-scroll {
|
|
756
|
+
:global(.pq-formats-scroll) {
|
|
732
757
|
overflow-x: auto;
|
|
733
758
|
}
|
|
734
|
-
.pq-formats-table {
|
|
759
|
+
:global(.pq-formats-table) {
|
|
735
760
|
width: 100%;
|
|
736
761
|
border-collapse: collapse;
|
|
737
762
|
font-size: 0.875rem;
|
|
738
763
|
}
|
|
739
|
-
.pq-formats-table th {
|
|
764
|
+
:global(.pq-formats-table th) {
|
|
740
765
|
text-align: left;
|
|
741
766
|
padding: 0.75rem 1rem;
|
|
742
767
|
font-size: 0.75rem;
|
|
@@ -747,57 +772,57 @@ const { ui } = Astro.props;
|
|
|
747
772
|
background: #f8fafc;
|
|
748
773
|
}
|
|
749
774
|
|
|
750
|
-
:global(.theme-dark
|
|
775
|
+
:global(.theme-dark .pq-formats-table th) {
|
|
751
776
|
background: #1e293b;
|
|
752
777
|
color: #94a3b8;
|
|
753
778
|
}
|
|
754
|
-
.pq-formats-row {
|
|
779
|
+
:global(.pq-formats-row) {
|
|
755
780
|
border-bottom: 1px solid #f1f5f9;
|
|
756
781
|
transition: background 0.15s;
|
|
757
782
|
}
|
|
758
783
|
|
|
759
|
-
.pq-formats-row:hover {
|
|
784
|
+
:global(.pq-formats-row:hover) {
|
|
760
785
|
background: #f8fafc;
|
|
761
786
|
}
|
|
762
787
|
|
|
763
|
-
:global(.theme-dark
|
|
788
|
+
:global(.theme-dark .pq-formats-row) {
|
|
764
789
|
border-color: #1e293b;
|
|
765
790
|
}
|
|
766
791
|
|
|
767
|
-
:global(.theme-dark
|
|
792
|
+
:global(.theme-dark .pq-formats-row:hover) {
|
|
768
793
|
background: #1e293b;
|
|
769
794
|
}
|
|
770
|
-
.pq-td {
|
|
795
|
+
:global(.pq-td) {
|
|
771
796
|
padding: 0.75rem 1rem;
|
|
772
797
|
color: #475569;
|
|
773
798
|
}
|
|
774
799
|
|
|
775
|
-
:global(.theme-dark
|
|
800
|
+
:global(.theme-dark .pq-td) {
|
|
776
801
|
color: #94a3b8;
|
|
777
802
|
}
|
|
778
|
-
.pq-td-name {
|
|
803
|
+
:global(.pq-td-name) {
|
|
779
804
|
font-weight: 600;
|
|
780
805
|
color: #0f172a;
|
|
781
806
|
}
|
|
782
807
|
|
|
783
|
-
:global(.theme-dark
|
|
808
|
+
:global(.theme-dark .pq-td-name) {
|
|
784
809
|
color: #f1f5f9;
|
|
785
810
|
}
|
|
786
|
-
.pq-status {
|
|
811
|
+
:global(.pq-status) {
|
|
787
812
|
display: inline-flex;
|
|
788
813
|
align-items: center;
|
|
789
814
|
gap: 0.35rem;
|
|
790
815
|
font-weight: 600;
|
|
791
816
|
font-size: 0.8rem;
|
|
792
817
|
}
|
|
793
|
-
.pq-status-ok
|
|
794
|
-
.pq-status-no
|
|
818
|
+
:global(.pq-status-ok) { color: #16a34a; }
|
|
819
|
+
:global(.pq-status-no) { color: #d97706; }
|
|
795
820
|
|
|
796
|
-
:global(.theme-dark
|
|
821
|
+
:global(.theme-dark .pq-status-ok) {
|
|
797
822
|
color: #4ade80;
|
|
798
823
|
}
|
|
799
824
|
|
|
800
|
-
:global(.theme-dark
|
|
825
|
+
:global(.theme-dark .pq-status-no) {
|
|
801
826
|
color: #fbbf24;
|
|
802
827
|
}
|
|
803
828
|
</style>
|
|
@@ -14,7 +14,7 @@ const ui: PrintQualityCalculatorUI = {
|
|
|
14
14
|
maxPrintTitle: "Maximum Print Size",
|
|
15
15
|
standardFormatsTitle: "Supported Standard Formats",
|
|
16
16
|
formatColumn: "Format",
|
|
17
|
-
measureColumn: "Measurements
|
|
17
|
+
measureColumn: "Measurements",
|
|
18
18
|
supportColumn: "Supported?",
|
|
19
19
|
qualityExcellent: "Excellent Quality",
|
|
20
20
|
qualityGood: "Good Quality",
|
|
@@ -26,6 +26,20 @@ const ui: PrintQualityCalculatorUI = {
|
|
|
26
26
|
qualityPoorDesc: "The image will look pixelated. Printing is not recommended.",
|
|
27
27
|
unitCm: "cm",
|
|
28
28
|
unitInches: "in",
|
|
29
|
+
dpiScreenLabel: "Screen",
|
|
30
|
+
dpiNewspaperLabel: "Newspaper",
|
|
31
|
+
dpiPrintLabel: "Printing",
|
|
32
|
+
dpiFineArtLabel: "Fine Art",
|
|
33
|
+
formatPostal: "Postcard",
|
|
34
|
+
formatQuartilla: "Quartilla",
|
|
35
|
+
formatFolio: "Folio",
|
|
36
|
+
formatDoubleFolio: "Double Folio",
|
|
37
|
+
formatSmallPoster: "Small Poster",
|
|
38
|
+
formatLargePoster: "Large Poster",
|
|
39
|
+
formatPlane: "Plane",
|
|
40
|
+
supportedText: "Yes (Covered)",
|
|
41
|
+
notSupportedPrefix: "No (",
|
|
42
|
+
invalidImageError: "Please select a valid image",
|
|
29
43
|
faqTitle: "Frequently Asked Questions",
|
|
30
44
|
bibliographyTitle: "References"
|
|
31
45
|
};
|
|
@@ -14,7 +14,7 @@ const ui: PrintQualityCalculatorUI = {
|
|
|
14
14
|
maxPrintTitle: "Tamaño Máximo de Impresión",
|
|
15
15
|
standardFormatsTitle: "Formatos Estándar Soportados",
|
|
16
16
|
formatColumn: "Formato",
|
|
17
|
-
measureColumn: "Medidas
|
|
17
|
+
measureColumn: "Medidas",
|
|
18
18
|
supportColumn: "¿Soportado?",
|
|
19
19
|
qualityExcellent: "Calidad Excelente",
|
|
20
20
|
qualityGood: "Calidad Buena",
|
|
@@ -25,7 +25,21 @@ const ui: PrintQualityCalculatorUI = {
|
|
|
25
25
|
qualityFairDesc: "Adecuado para visualización digital o vallas lejanas.",
|
|
26
26
|
qualityPoorDesc: "La imagen se verá pixelada. No se recomienda imprimir.",
|
|
27
27
|
unitCm: "cm",
|
|
28
|
-
unitInches: "pulg"
|
|
28
|
+
unitInches: "pulg",
|
|
29
|
+
dpiScreenLabel: "Pantalla",
|
|
30
|
+
dpiNewspaperLabel: "Periódico",
|
|
31
|
+
dpiPrintLabel: "Imprenta",
|
|
32
|
+
dpiFineArtLabel: "Fine Art",
|
|
33
|
+
formatPostal: "Postal",
|
|
34
|
+
formatQuartilla: "Cuartilla",
|
|
35
|
+
formatFolio: "Folio",
|
|
36
|
+
formatDoubleFolio: "Doble Folio",
|
|
37
|
+
formatSmallPoster: "Poster Pequeño",
|
|
38
|
+
formatLargePoster: "Poster Grande",
|
|
39
|
+
formatPlane: "Plano",
|
|
40
|
+
supportedText: "Sí (Cubierto)",
|
|
41
|
+
notSupportedPrefix: "No (",
|
|
42
|
+
invalidImageError: "Por favor selecciona una imagen válida"
|
|
29
43
|
};
|
|
30
44
|
|
|
31
45
|
const faq: PrintQualityCalculatorLocaleContent['faq'] = [
|