@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.
@@ -14,7 +14,7 @@ const ui: PrintQualityCalculatorUI = {
14
14
  maxPrintTitle: "Taille d'Impression Maximale",
15
15
  standardFormatsTitle: "Formats Standards Supportés",
16
16
  formatColumn: "Format",
17
- measureColumn: "Mesures (cm)",
17
+ measureColumn: "Mesures",
18
18
  supportColumn: "Supporté ?",
19
19
  qualityExcellent: "Qualité Excellente",
20
20
  qualityGood: "Bonne Qualité",
@@ -25,7 +25,21 @@ const ui: PrintQualityCalculatorUI = {
25
25
  qualityFairDesc: "Adapté pour la visualisation numérique ou les panneaux lointains.",
26
26
  qualityPoorDesc: "L'image aura l'air pixelisée. L'impression n'est pas recommandée.",
27
27
  unitCm: "cm",
28
- unitInches: "po"
28
+ unitInches: "po",
29
+ dpiScreenLabel: "Écran",
30
+ dpiNewspaperLabel: "Journal",
31
+ dpiPrintLabel: "Impression",
32
+ dpiFineArtLabel: "Fine Art",
33
+ formatPostal: "Carte Postale",
34
+ formatQuartilla: "Quille",
35
+ formatFolio: "Folio",
36
+ formatDoubleFolio: "Double Folio",
37
+ formatSmallPoster: "Petit Poster",
38
+ formatLargePoster: "Grand Poster",
39
+ formatPlane: "Plane",
40
+ supportedText: "Oui (Couvert)",
41
+ notSupportedPrefix: "Non (",
42
+ invalidImageError: "Veuillez sélectionner une image valide"
29
43
  };
30
44
 
31
45
  const faq: PrintQualityCalculatorLocaleContent['faq'] = [
@@ -24,6 +24,20 @@ export interface PrintQualityCalculatorUI {
24
24
  qualityPoorDesc: string;
25
25
  unitCm: string;
26
26
  unitInches: string;
27
+ dpiScreenLabel: string;
28
+ dpiNewspaperLabel: string;
29
+ dpiPrintLabel: string;
30
+ dpiFineArtLabel: string;
31
+ formatPostal: string;
32
+ formatQuartilla: string;
33
+ formatFolio: string;
34
+ formatDoubleFolio: string;
35
+ formatSmallPoster: string;
36
+ formatLargePoster: string;
37
+ formatPlane: string;
38
+ supportedText: string;
39
+ notSupportedPrefix: string;
40
+ invalidImageError: string;
27
41
  [key: string]: string;
28
42
  }
29
43
 
@@ -229,7 +229,7 @@ const { ui } = Astro.props;
229
229
  </script>
230
230
 
231
231
  <style>
232
- .pb-root {
232
+ :global(.pb-root) {
233
233
  --pb-bg: #fff;
234
234
  --pb-bg-muted: #f8fafc;
235
235
  --pb-border: #e2e8f0;
@@ -250,7 +250,7 @@ const { ui } = Astro.props;
250
250
  min-height: 600px;
251
251
  }
252
252
 
253
- :global(.theme-dark) .pb-root {
253
+ :global(.theme-dark .pb-root) {
254
254
  --pb-bg: #09090b;
255
255
  --pb-bg-muted: #18181b;
256
256
  --pb-border: #27272a;
@@ -262,7 +262,7 @@ const { ui } = Astro.props;
262
262
  --pb-toolbar-bg: rgba(9,9,11,0.92);
263
263
  }
264
264
 
265
- .pb-toolbar {
265
+ :global(.pb-toolbar) {
266
266
  position: sticky;
267
267
  top: 0.5rem;
268
268
  z-index: 100;
@@ -282,7 +282,7 @@ const { ui } = Astro.props;
282
282
  gap: 0.75rem;
283
283
  }
284
284
 
285
- .pb-tool-selector {
285
+ :global(.pb-tool-selector) {
286
286
  display: flex;
287
287
  gap: 0.25rem;
288
288
  background: var(--pb-bg-muted);
@@ -290,7 +290,7 @@ const { ui } = Astro.props;
290
290
  padding: 0.25rem;
291
291
  }
292
292
 
293
- .pb-tool-btn {
293
+ :global(.pb-tool-btn) {
294
294
  display: flex;
295
295
  align-items: center;
296
296
  gap: 0.4rem;
@@ -305,31 +305,31 @@ const { ui } = Astro.props;
305
305
  transition: all 0.15s;
306
306
  }
307
307
 
308
- .pb-tool-btn-active {
308
+ :global(.pb-tool-btn-active) {
309
309
  background: var(--pb-bg);
310
310
  color: var(--pb-text);
311
311
  box-shadow: 0 2px 8px var(--pb-shadow);
312
312
  }
313
313
 
314
- .pb-settings-row {
314
+ :global(.pb-settings-row) {
315
315
  display: flex;
316
316
  align-items: center;
317
317
  gap: 0.875rem;
318
318
  }
319
319
 
320
- .pb-intensity-wrap {
320
+ :global(.pb-intensity-wrap) {
321
321
  display: flex;
322
322
  align-items: center;
323
323
  gap: 0.5rem;
324
324
  color: var(--pb-text-muted);
325
325
  }
326
326
 
327
- .pb-slider {
327
+ :global(.pb-slider) {
328
328
  width: 90px;
329
329
  accent-color: var(--pb-primary);
330
330
  }
331
331
 
332
- .pb-auto-btn {
332
+ :global(.pb-auto-btn) {
333
333
  display: flex;
334
334
  align-items: center;
335
335
  gap: 0.4rem;
@@ -344,17 +344,17 @@ const { ui } = Astro.props;
344
344
  transition: opacity 0.15s;
345
345
  }
346
346
 
347
- .pb-auto-btn:hover {
347
+ :global(.pb-auto-btn:hover) {
348
348
  opacity: 0.8;
349
349
  }
350
350
 
351
- .pb-action-group {
351
+ :global(.pb-action-group) {
352
352
  display: flex;
353
353
  align-items: center;
354
354
  gap: 0.625rem;
355
355
  }
356
356
 
357
- .pb-undo-btn {
357
+ :global(.pb-undo-btn) {
358
358
  width: 2.5rem;
359
359
  height: 2.5rem;
360
360
  border-radius: 0.75rem;
@@ -368,17 +368,17 @@ const { ui } = Astro.props;
368
368
  transition: all 0.15s;
369
369
  }
370
370
 
371
- .pb-undo-btn:hover:not(:disabled) {
371
+ :global(.pb-undo-btn:hover:not(:disabled)) {
372
372
  border-color: var(--pb-primary);
373
373
  color: var(--pb-primary);
374
374
  }
375
375
 
376
- .pb-undo-btn:disabled {
376
+ :global(.pb-undo-btn:disabled) {
377
377
  opacity: 0.35;
378
378
  cursor: not-allowed;
379
379
  }
380
380
 
381
- .pb-download-btn {
381
+ :global(.pb-download-btn) {
382
382
  display: flex;
383
383
  align-items: center;
384
384
  gap: 0.5rem;
@@ -394,24 +394,24 @@ const { ui } = Astro.props;
394
394
  transition: all 0.2s;
395
395
  }
396
396
 
397
- .pb-download-btn:hover:not(:disabled) {
397
+ :global(.pb-download-btn:hover:not(:disabled)) {
398
398
  transform: translateY(-1px);
399
399
  box-shadow: 0 6px 20px rgba(99,102,241,0.45);
400
400
  }
401
401
 
402
- .pb-download-btn:disabled {
402
+ :global(.pb-download-btn:disabled) {
403
403
  opacity: 0.4;
404
404
  cursor: not-allowed;
405
405
  box-shadow: none;
406
406
  }
407
407
 
408
- .pb-icon {
408
+ :global(.pb-icon) {
409
409
  width: 1.1rem;
410
410
  height: 1.1rem;
411
411
  flex-shrink: 0;
412
412
  }
413
413
 
414
- .pb-workspace {
414
+ :global(.pb-workspace) {
415
415
  flex: 1;
416
416
  position: relative;
417
417
  background: var(--pb-bg-muted);
@@ -425,12 +425,12 @@ const { ui } = Astro.props;
425
425
  transition: border-color 0.2s;
426
426
  }
427
427
 
428
- .pb-dragging .pb-workspace {
428
+ :global(.pb-dragging .pb-workspace) {
429
429
  border-color: var(--pb-primary);
430
430
  background: var(--pb-primary-light);
431
431
  }
432
432
 
433
- .pb-empty {
433
+ :global(.pb-empty) {
434
434
  width: 100%;
435
435
  height: 100%;
436
436
  display: flex;
@@ -443,7 +443,7 @@ const { ui } = Astro.props;
443
443
  gap: 0.75rem;
444
444
  }
445
445
 
446
- .pb-upload-icon {
446
+ :global(.pb-upload-icon) {
447
447
  width: 5rem;
448
448
  height: 5rem;
449
449
  background: var(--pb-bg);
@@ -457,31 +457,31 @@ const { ui } = Astro.props;
457
457
  margin-bottom: 0.5rem;
458
458
  }
459
459
 
460
- .pb-icon-lg {
460
+ :global(.pb-icon-lg) {
461
461
  width: 2.5rem;
462
462
  height: 2.5rem;
463
463
  }
464
464
 
465
- .pb-empty-title {
465
+ :global(.pb-empty-title) {
466
466
  font-size: 1.75rem;
467
467
  font-weight: 900;
468
468
  color: var(--pb-text);
469
469
  margin: 0;
470
470
  }
471
471
 
472
- .pb-empty-sub {
472
+ :global(.pb-empty-sub) {
473
473
  font-size: 1rem;
474
474
  color: var(--pb-text-muted);
475
475
  margin: 0;
476
476
  }
477
477
 
478
- .pb-badges {
478
+ :global(.pb-badges) {
479
479
  display: flex;
480
480
  gap: 0.75rem;
481
481
  margin-top: 0.5rem;
482
482
  }
483
483
 
484
- .pb-badge {
484
+ :global(.pb-badge) {
485
485
  display: flex;
486
486
  align-items: center;
487
487
  gap: 0.35rem;
@@ -494,12 +494,12 @@ const { ui } = Astro.props;
494
494
  color: var(--pb-text-muted);
495
495
  }
496
496
 
497
- .pb-badge-icon {
497
+ :global(.pb-badge-icon) {
498
498
  width: 0.875rem;
499
499
  height: 0.875rem;
500
500
  }
501
501
 
502
- .pb-loader {
502
+ :global(.pb-loader) {
503
503
  position: absolute;
504
504
  inset: 0;
505
505
  background: rgba(0,0,0,0.5);
@@ -511,7 +511,7 @@ const { ui } = Astro.props;
511
511
  z-index: 10;
512
512
  }
513
513
 
514
- .pb-spinner {
514
+ :global(.pb-spinner) {
515
515
  width: 2.5rem;
516
516
  height: 2.5rem;
517
517
  border: 3px solid rgba(255,255,255,0.2);
@@ -524,14 +524,14 @@ const { ui } = Astro.props;
524
524
  to { transform: rotate(360deg); }
525
525
  }
526
526
 
527
- .pb-loader-text {
527
+ :global(.pb-loader-text) {
528
528
  color: #fff;
529
529
  font-weight: 800;
530
530
  font-size: 0.9rem;
531
531
  margin: 0;
532
532
  }
533
533
 
534
- .pb-canvas-wrap {
534
+ :global(.pb-canvas-wrap) {
535
535
  position: absolute;
536
536
  inset: 0;
537
537
  background: #000;
@@ -540,14 +540,14 @@ const { ui } = Astro.props;
540
540
  justify-content: center;
541
541
  }
542
542
 
543
- .pb-canvas-wrap canvas {
543
+ :global(.pb-canvas-wrap canvas) {
544
544
  width: 100%;
545
545
  height: 100%;
546
546
  object-fit: contain;
547
547
  cursor: crosshair;
548
548
  }
549
549
 
550
- .pb-hidden {
550
+ :global(.pb-hidden) {
551
551
  display: none;
552
552
  }
553
553
 
@@ -186,7 +186,7 @@ const { ui } = Astro.props;
186
186
  </script>
187
187
 
188
188
  <style>
189
- .ss-root {
189
+ :global(.ss-root) {
190
190
  --ss-bg: #fff;
191
191
  --ss-bg-elevated: #f8fafc;
192
192
  --ss-border: #e2e8f0;
@@ -202,7 +202,7 @@ const { ui } = Astro.props;
202
202
  margin: 0 auto;
203
203
  }
204
204
 
205
- :global(.theme-dark) .ss-root {
205
+ :global(.theme-dark .ss-root) {
206
206
  --ss-bg: #18181b;
207
207
  --ss-bg-elevated: #27272a;
208
208
  --ss-border: #3f3f46;
@@ -214,7 +214,7 @@ const { ui } = Astro.props;
214
214
  --ss-shadow: rgba(0, 0, 0, 0.3);
215
215
  }
216
216
 
217
- .ss-card {
217
+ :global(.ss-card) {
218
218
  background: var(--ss-bg);
219
219
  border: 1px solid var(--ss-border);
220
220
  border-radius: 2.5rem;
@@ -225,7 +225,7 @@ const { ui } = Astro.props;
225
225
  gap: 3rem;
226
226
  }
227
227
 
228
- .ss-drop {
228
+ :global(.ss-drop) {
229
229
  border: 3px dashed var(--ss-border);
230
230
  padding: 3.5rem 2.5rem;
231
231
  border-radius: 2.25rem;
@@ -239,13 +239,13 @@ const { ui } = Astro.props;
239
239
  text-align: center;
240
240
  }
241
241
 
242
- .ss-drop:hover,
243
- .ss-drop-active {
242
+ :global(.ss-drop:hover),
243
+ :global(.ss-drop-active) {
244
244
  border-color: var(--ss-accent);
245
245
  background: var(--ss-accent-alpha);
246
246
  }
247
247
 
248
- .ss-drop-icon {
248
+ :global(.ss-drop-icon) {
249
249
  width: 4.5rem;
250
250
  height: 4.5rem;
251
251
  background: var(--ss-accent-alpha);
@@ -256,19 +256,19 @@ const { ui } = Astro.props;
256
256
  color: var(--ss-accent);
257
257
  }
258
258
 
259
- .ss-drop-icon svg {
259
+ :global(.ss-drop-icon svg) {
260
260
  width: 2.25rem;
261
261
  height: 2.25rem;
262
262
  }
263
263
 
264
- .ss-drop-title {
264
+ :global(.ss-drop-title) {
265
265
  font-size: 1.75rem;
266
266
  font-weight: 950;
267
267
  color: var(--ss-text);
268
268
  margin: 0;
269
269
  }
270
270
 
271
- .ss-drop-sub {
271
+ :global(.ss-drop-sub) {
272
272
  font-size: 1rem;
273
273
  color: var(--ss-text-muted);
274
274
  max-width: 320px;
@@ -276,7 +276,7 @@ const { ui } = Astro.props;
276
276
  font-weight: 700;
277
277
  }
278
278
 
279
- .ss-controls {
279
+ :global(.ss-controls) {
280
280
  display: grid;
281
281
  grid-template-columns: 1fr 1fr;
282
282
  gap: 3rem;
@@ -284,18 +284,18 @@ const { ui } = Astro.props;
284
284
  }
285
285
 
286
286
  @media (max-width: 800px) {
287
- .ss-controls {
287
+ :global(.ss-controls) {
288
288
  grid-template-columns: 1fr;
289
289
  }
290
290
  }
291
291
 
292
- .ss-control-group {
292
+ :global(.ss-control-group) {
293
293
  display: flex;
294
294
  flex-direction: column;
295
295
  gap: 1.5rem;
296
296
  }
297
297
 
298
- .ss-control-label {
298
+ :global(.ss-control-label) {
299
299
  font-size: 0.8rem;
300
300
  font-weight: 900;
301
301
  text-transform: uppercase;
@@ -303,7 +303,7 @@ const { ui } = Astro.props;
303
303
  letter-spacing: 0.1em;
304
304
  }
305
305
 
306
- .ss-offset-wrap {
306
+ :global(.ss-offset-wrap) {
307
307
  display: flex;
308
308
  align-items: center;
309
309
  gap: 1rem;
@@ -313,7 +313,7 @@ const { ui } = Astro.props;
313
313
  padding: 0.75rem 1.25rem;
314
314
  }
315
315
 
316
- .ss-offset-btn {
316
+ :global(.ss-offset-btn) {
317
317
  width: 2.5rem;
318
318
  height: 2.5rem;
319
319
  background: none;
@@ -327,16 +327,16 @@ const { ui } = Astro.props;
327
327
  flex-shrink: 0;
328
328
  }
329
329
 
330
- .ss-offset-btn:hover {
330
+ :global(.ss-offset-btn:hover) {
331
331
  color: var(--ss-accent);
332
332
  }
333
333
 
334
- .ss-offset-btn svg {
334
+ :global(.ss-offset-btn svg) {
335
335
  width: 1.5rem;
336
336
  height: 1.5rem;
337
337
  }
338
338
 
339
- .ss-offset-input {
339
+ :global(.ss-offset-input) {
340
340
  flex: 1;
341
341
  background: transparent;
342
342
  border: none;
@@ -348,28 +348,28 @@ const { ui } = Astro.props;
348
348
  text-align: center;
349
349
  }
350
350
 
351
- .ss-stats {
351
+ :global(.ss-stats) {
352
352
  display: flex;
353
353
  gap: 2rem;
354
354
  justify-content: center;
355
355
  margin-top: 1rem;
356
356
  }
357
357
 
358
- .ss-stat {
358
+ :global(.ss-stat) {
359
359
  display: flex;
360
360
  flex-direction: column;
361
361
  align-items: center;
362
362
  gap: 0.25rem;
363
363
  }
364
364
 
365
- .ss-stat-value {
365
+ :global(.ss-stat-value) {
366
366
  display: block;
367
367
  font-weight: 900;
368
368
  color: var(--ss-accent);
369
369
  font-size: 1.25rem;
370
370
  }
371
371
 
372
- .ss-stat-label {
372
+ :global(.ss-stat-label) {
373
373
  font-size: 0.7rem;
374
374
  font-weight: 800;
375
375
  text-transform: uppercase;
@@ -377,33 +377,33 @@ const { ui } = Astro.props;
377
377
  letter-spacing: 0.05em;
378
378
  }
379
379
 
380
- .ss-status-card {
380
+ :global(.ss-status-card) {
381
381
  display: flex;
382
382
  flex-direction: column;
383
383
  gap: 1.5rem;
384
384
  }
385
385
 
386
- .ss-file-row {
386
+ :global(.ss-file-row) {
387
387
  display: flex;
388
388
  align-items: center;
389
389
  gap: 1.5rem;
390
390
  }
391
391
 
392
- .ss-file-icon {
392
+ :global(.ss-file-icon) {
393
393
  width: 3rem;
394
394
  height: 3rem;
395
395
  color: var(--ss-accent);
396
396
  flex-shrink: 0;
397
397
  }
398
398
 
399
- .ss-file-info {
399
+ :global(.ss-file-info) {
400
400
  display: flex;
401
401
  flex-direction: column;
402
402
  gap: 0.25rem;
403
403
  min-width: 0;
404
404
  }
405
405
 
406
- .ss-file-name {
406
+ :global(.ss-file-name) {
407
407
  font-weight: 950;
408
408
  color: var(--ss-text);
409
409
  font-size: 0.95rem;
@@ -412,13 +412,13 @@ const { ui } = Astro.props;
412
412
  text-overflow: ellipsis;
413
413
  }
414
414
 
415
- .ss-file-times {
415
+ :global(.ss-file-times) {
416
416
  font-size: 0.8rem;
417
417
  font-weight: 700;
418
418
  color: var(--ss-text-muted);
419
419
  }
420
420
 
421
- .ss-btn-primary {
421
+ :global(.ss-btn-primary) {
422
422
  width: 100%;
423
423
  padding: 1.25rem;
424
424
  background: var(--ss-accent);
@@ -435,17 +435,17 @@ const { ui } = Astro.props;
435
435
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s;
436
436
  }
437
437
 
438
- .ss-btn-primary:hover {
438
+ :global(.ss-btn-primary:hover) {
439
439
  transform: translateY(-4px) scale(1.02);
440
440
  box-shadow: 0 15px 35px -10px var(--ss-accent);
441
441
  }
442
442
 
443
- .ss-btn-primary svg {
443
+ :global(.ss-btn-primary svg) {
444
444
  width: 1.25rem;
445
445
  height: 1.25rem;
446
446
  }
447
447
 
448
- .ss-previews {
448
+ :global(.ss-previews) {
449
449
  grid-column: 1 / -1;
450
450
  display: grid;
451
451
  grid-template-columns: 1fr 1fr;
@@ -453,13 +453,13 @@ const { ui } = Astro.props;
453
453
  }
454
454
 
455
455
  @media (max-width: 800px) {
456
- .ss-previews {
456
+ :global(.ss-previews) {
457
457
  grid-column: auto;
458
458
  grid-template-columns: 1fr;
459
459
  }
460
460
  }
461
461
 
462
- .ss-preview-box {
462
+ :global(.ss-preview-box) {
463
463
  background: var(--ss-bg-elevated);
464
464
  padding: 1.5rem;
465
465
  border-radius: 1.75rem;
@@ -469,7 +469,7 @@ const { ui } = Astro.props;
469
469
  gap: 1rem;
470
470
  }
471
471
 
472
- .ss-preview-label {
472
+ :global(.ss-preview-label) {
473
473
  font-size: 0.75rem;
474
474
  font-weight: 950;
475
475
  text-transform: uppercase;
@@ -478,11 +478,11 @@ const { ui } = Astro.props;
478
478
  letter-spacing: 0.05em;
479
479
  }
480
480
 
481
- .ss-preview-label-modified {
481
+ :global(.ss-preview-label-modified) {
482
482
  color: var(--ss-accent);
483
483
  }
484
484
 
485
- .ss-preview-scroll {
485
+ :global(.ss-preview-scroll) {
486
486
  max-height: 250px;
487
487
  overflow-y: auto;
488
488
  display: flex;
@@ -490,25 +490,25 @@ const { ui } = Astro.props;
490
490
  gap: 1rem;
491
491
  }
492
492
 
493
- .ss-preview-item {
493
+ :global(.ss-preview-item) {
494
494
  font-size: 0.85rem;
495
495
  line-height: 1.5;
496
496
  }
497
497
 
498
- .ss-preview-time {
498
+ :global(.ss-preview-time) {
499
499
  font-weight: 950;
500
500
  color: var(--ss-accent);
501
501
  font-size: 0.75rem;
502
502
  margin: 0 0 0.25rem;
503
503
  }
504
504
 
505
- .ss-preview-text {
505
+ :global(.ss-preview-text) {
506
506
  font-weight: 700;
507
507
  color: var(--ss-text);
508
508
  margin: 0;
509
509
  }
510
510
 
511
- .ss-hidden {
511
+ :global(.ss-hidden) {
512
512
  display: none;
513
513
  }
514
514
  </style>