@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.
@@ -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
 
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import type { PrivacyBlurUI } from './index';
3
- import './style.css';
4
3
 
5
4
  interface Props {
6
5
  ui: PrivacyBlurUI;
@@ -228,3 +227,338 @@ const { ui } = Astro.props;
228
227
  init();
229
228
  document.addEventListener('astro:page-load', init);
230
229
  </script>
230
+
231
+ <style>
232
+ :global(.pb-root) {
233
+ --pb-bg: #fff;
234
+ --pb-bg-muted: #f8fafc;
235
+ --pb-border: #e2e8f0;
236
+ --pb-text: #0f172a;
237
+ --pb-text-muted: #64748b;
238
+ --pb-primary: #6366f1;
239
+ --pb-primary-light: rgba(99,102,241,0.1);
240
+ --pb-shadow: rgba(0,0,0,0.06);
241
+ --pb-toolbar-bg: rgba(255,255,255,0.92);
242
+ --pb-radius: 1.25rem;
243
+
244
+ width: 100%;
245
+ padding: 1rem;
246
+ display: flex;
247
+ flex-direction: column;
248
+ gap: 1rem;
249
+ height: 90vh;
250
+ min-height: 600px;
251
+ }
252
+
253
+ :global(.theme-dark .pb-root) {
254
+ --pb-bg: #09090b;
255
+ --pb-bg-muted: #18181b;
256
+ --pb-border: #27272a;
257
+ --pb-text: #fafafa;
258
+ --pb-text-muted: #71717a;
259
+ --pb-primary: #818cf8;
260
+ --pb-primary-light: rgba(129,140,248,0.12);
261
+ --pb-shadow: rgba(0,0,0,0.4);
262
+ --pb-toolbar-bg: rgba(9,9,11,0.92);
263
+ }
264
+
265
+ :global(.pb-toolbar) {
266
+ position: sticky;
267
+ top: 0.5rem;
268
+ z-index: 100;
269
+ max-width: 1200px;
270
+ margin: 0 auto;
271
+ width: 100%;
272
+ background: var(--pb-toolbar-bg);
273
+ backdrop-filter: blur(20px);
274
+ border: 1px solid var(--pb-border);
275
+ border-radius: var(--pb-radius);
276
+ padding: 0.5rem 1rem;
277
+ box-shadow: 0 8px 32px var(--pb-shadow);
278
+ display: flex;
279
+ flex-wrap: wrap;
280
+ align-items: center;
281
+ justify-content: space-between;
282
+ gap: 0.75rem;
283
+ }
284
+
285
+ :global(.pb-tool-selector) {
286
+ display: flex;
287
+ gap: 0.25rem;
288
+ background: var(--pb-bg-muted);
289
+ border-radius: 0.75rem;
290
+ padding: 0.25rem;
291
+ }
292
+
293
+ :global(.pb-tool-btn) {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 0.4rem;
297
+ padding: 0.4rem 0.875rem;
298
+ border-radius: 0.625rem;
299
+ font-size: 0.8rem;
300
+ font-weight: 700;
301
+ color: var(--pb-text-muted);
302
+ border: none;
303
+ background: transparent;
304
+ cursor: pointer;
305
+ transition: all 0.15s;
306
+ }
307
+
308
+ :global(.pb-tool-btn-active) {
309
+ background: var(--pb-bg);
310
+ color: var(--pb-text);
311
+ box-shadow: 0 2px 8px var(--pb-shadow);
312
+ }
313
+
314
+ :global(.pb-settings-row) {
315
+ display: flex;
316
+ align-items: center;
317
+ gap: 0.875rem;
318
+ }
319
+
320
+ :global(.pb-intensity-wrap) {
321
+ display: flex;
322
+ align-items: center;
323
+ gap: 0.5rem;
324
+ color: var(--pb-text-muted);
325
+ }
326
+
327
+ :global(.pb-slider) {
328
+ width: 90px;
329
+ accent-color: var(--pb-primary);
330
+ }
331
+
332
+ :global(.pb-auto-btn) {
333
+ display: flex;
334
+ align-items: center;
335
+ gap: 0.4rem;
336
+ padding: 0.45rem 0.875rem;
337
+ background: var(--pb-primary-light);
338
+ color: var(--pb-primary);
339
+ border: none;
340
+ border-radius: 0.75rem;
341
+ font-size: 0.8rem;
342
+ font-weight: 700;
343
+ cursor: pointer;
344
+ transition: opacity 0.15s;
345
+ }
346
+
347
+ :global(.pb-auto-btn:hover) {
348
+ opacity: 0.8;
349
+ }
350
+
351
+ :global(.pb-action-group) {
352
+ display: flex;
353
+ align-items: center;
354
+ gap: 0.625rem;
355
+ }
356
+
357
+ :global(.pb-undo-btn) {
358
+ width: 2.5rem;
359
+ height: 2.5rem;
360
+ border-radius: 0.75rem;
361
+ background: var(--pb-bg-muted);
362
+ border: 1px solid var(--pb-border);
363
+ color: var(--pb-text-muted);
364
+ cursor: pointer;
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ transition: all 0.15s;
369
+ }
370
+
371
+ :global(.pb-undo-btn:hover:not(:disabled)) {
372
+ border-color: var(--pb-primary);
373
+ color: var(--pb-primary);
374
+ }
375
+
376
+ :global(.pb-undo-btn:disabled) {
377
+ opacity: 0.35;
378
+ cursor: not-allowed;
379
+ }
380
+
381
+ :global(.pb-download-btn) {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 0.5rem;
385
+ padding: 0.55rem 1.25rem;
386
+ background: var(--pb-primary);
387
+ color: #fff;
388
+ border: none;
389
+ border-radius: 0.75rem;
390
+ font-size: 0.875rem;
391
+ font-weight: 700;
392
+ cursor: pointer;
393
+ box-shadow: 0 4px 14px rgba(99,102,241,0.35);
394
+ transition: all 0.2s;
395
+ }
396
+
397
+ :global(.pb-download-btn:hover:not(:disabled)) {
398
+ transform: translateY(-1px);
399
+ box-shadow: 0 6px 20px rgba(99,102,241,0.45);
400
+ }
401
+
402
+ :global(.pb-download-btn:disabled) {
403
+ opacity: 0.4;
404
+ cursor: not-allowed;
405
+ box-shadow: none;
406
+ }
407
+
408
+ :global(.pb-icon) {
409
+ width: 1.1rem;
410
+ height: 1.1rem;
411
+ flex-shrink: 0;
412
+ }
413
+
414
+ :global(.pb-workspace) {
415
+ flex: 1;
416
+ position: relative;
417
+ background: var(--pb-bg-muted);
418
+ border: 2px dashed var(--pb-border);
419
+ border-radius: var(--pb-radius);
420
+ display: flex;
421
+ flex-direction: column;
422
+ align-items: center;
423
+ justify-content: center;
424
+ overflow: hidden;
425
+ transition: border-color 0.2s;
426
+ }
427
+
428
+ :global(.pb-dragging .pb-workspace) {
429
+ border-color: var(--pb-primary);
430
+ background: var(--pb-primary-light);
431
+ }
432
+
433
+ :global(.pb-empty) {
434
+ width: 100%;
435
+ height: 100%;
436
+ display: flex;
437
+ flex-direction: column;
438
+ align-items: center;
439
+ justify-content: center;
440
+ text-align: center;
441
+ cursor: pointer;
442
+ padding: 2rem;
443
+ gap: 0.75rem;
444
+ }
445
+
446
+ :global(.pb-upload-icon) {
447
+ width: 5rem;
448
+ height: 5rem;
449
+ background: var(--pb-bg);
450
+ border: 1px solid var(--pb-border);
451
+ border-radius: 1.25rem;
452
+ display: flex;
453
+ align-items: center;
454
+ justify-content: center;
455
+ color: var(--pb-primary);
456
+ box-shadow: 0 8px 24px var(--pb-shadow);
457
+ margin-bottom: 0.5rem;
458
+ }
459
+
460
+ :global(.pb-icon-lg) {
461
+ width: 2.5rem;
462
+ height: 2.5rem;
463
+ }
464
+
465
+ :global(.pb-empty-title) {
466
+ font-size: 1.75rem;
467
+ font-weight: 900;
468
+ color: var(--pb-text);
469
+ margin: 0;
470
+ }
471
+
472
+ :global(.pb-empty-sub) {
473
+ font-size: 1rem;
474
+ color: var(--pb-text-muted);
475
+ margin: 0;
476
+ }
477
+
478
+ :global(.pb-badges) {
479
+ display: flex;
480
+ gap: 0.75rem;
481
+ margin-top: 0.5rem;
482
+ }
483
+
484
+ :global(.pb-badge) {
485
+ display: flex;
486
+ align-items: center;
487
+ gap: 0.35rem;
488
+ background: var(--pb-bg);
489
+ border: 1px solid var(--pb-border);
490
+ border-radius: 9999px;
491
+ padding: 0.35rem 0.75rem;
492
+ font-size: 0.75rem;
493
+ font-weight: 700;
494
+ color: var(--pb-text-muted);
495
+ }
496
+
497
+ :global(.pb-badge-icon) {
498
+ width: 0.875rem;
499
+ height: 0.875rem;
500
+ }
501
+
502
+ :global(.pb-loader) {
503
+ position: absolute;
504
+ inset: 0;
505
+ background: rgba(0,0,0,0.5);
506
+ display: flex;
507
+ flex-direction: column;
508
+ align-items: center;
509
+ justify-content: center;
510
+ gap: 1rem;
511
+ z-index: 10;
512
+ }
513
+
514
+ :global(.pb-spinner) {
515
+ width: 2.5rem;
516
+ height: 2.5rem;
517
+ border: 3px solid rgba(255,255,255,0.2);
518
+ border-top-color: #fff;
519
+ border-radius: 50%;
520
+ animation: pb-spin 0.7s linear infinite;
521
+ }
522
+
523
+ @keyframes pb-spin {
524
+ to { transform: rotate(360deg); }
525
+ }
526
+
527
+ :global(.pb-loader-text) {
528
+ color: #fff;
529
+ font-weight: 800;
530
+ font-size: 0.9rem;
531
+ margin: 0;
532
+ }
533
+
534
+ :global(.pb-canvas-wrap) {
535
+ position: absolute;
536
+ inset: 0;
537
+ background: #000;
538
+ display: flex;
539
+ align-items: center;
540
+ justify-content: center;
541
+ }
542
+
543
+ :global(.pb-canvas-wrap canvas) {
544
+ width: 100%;
545
+ height: 100%;
546
+ object-fit: contain;
547
+ cursor: crosshair;
548
+ }
549
+
550
+ :global(.pb-hidden) {
551
+ display: none;
552
+ }
553
+
554
+ @media (max-width: 640px) {
555
+ .pb-root {
556
+ padding: 0.5rem;
557
+ height: auto;
558
+ min-height: 500px;
559
+ }
560
+ .pb-empty-title {
561
+ font-size: 1.25rem;
562
+ }
563
+ }
564
+ </style>
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import type { SubtitleSyncUI } from './index';
3
- import './style.css';
4
3
 
5
4
  interface Props {
6
5
  ui: SubtitleSyncUI;
@@ -185,3 +184,331 @@ const { ui } = Astro.props;
185
184
  init();
186
185
  document.addEventListener('astro:page-load', init);
187
186
  </script>
187
+
188
+ <style>
189
+ :global(.ss-root) {
190
+ --ss-bg: #fff;
191
+ --ss-bg-elevated: #f8fafc;
192
+ --ss-border: #e2e8f0;
193
+ --ss-text: #0f172a;
194
+ --ss-text-muted: #64748b;
195
+ --ss-accent: #6366f1;
196
+ --ss-accent-alpha: rgba(99, 102, 241, 0.1);
197
+ --ss-accent-alpha-hover: rgba(99, 102, 241, 0.03);
198
+ --ss-shadow: rgba(0, 0, 0, 0.1);
199
+
200
+ padding: 2.5rem 1.5rem;
201
+ max-width: 900px;
202
+ margin: 0 auto;
203
+ }
204
+
205
+ :global(.theme-dark .ss-root) {
206
+ --ss-bg: #18181b;
207
+ --ss-bg-elevated: #27272a;
208
+ --ss-border: #3f3f46;
209
+ --ss-text: #f4f4f5;
210
+ --ss-text-muted: #71717a;
211
+ --ss-accent: #818cf8;
212
+ --ss-accent-alpha: rgba(129, 140, 248, 0.12);
213
+ --ss-accent-alpha-hover: rgba(129, 140, 248, 0.04);
214
+ --ss-shadow: rgba(0, 0, 0, 0.3);
215
+ }
216
+
217
+ :global(.ss-card) {
218
+ background: var(--ss-bg);
219
+ border: 1px solid var(--ss-border);
220
+ border-radius: 2.5rem;
221
+ padding: 3rem;
222
+ box-shadow: 0 45px 110px -30px var(--ss-shadow);
223
+ display: flex;
224
+ flex-direction: column;
225
+ gap: 3rem;
226
+ }
227
+
228
+ :global(.ss-drop) {
229
+ border: 3px dashed var(--ss-border);
230
+ padding: 3.5rem 2.5rem;
231
+ border-radius: 2.25rem;
232
+ display: flex;
233
+ flex-direction: column;
234
+ align-items: center;
235
+ gap: 1.25rem;
236
+ cursor: pointer;
237
+ background: var(--ss-accent-alpha-hover);
238
+ transition: all 0.2s ease;
239
+ text-align: center;
240
+ }
241
+
242
+ :global(.ss-drop:hover),
243
+ :global(.ss-drop-active) {
244
+ border-color: var(--ss-accent);
245
+ background: var(--ss-accent-alpha);
246
+ }
247
+
248
+ :global(.ss-drop-icon) {
249
+ width: 4.5rem;
250
+ height: 4.5rem;
251
+ background: var(--ss-accent-alpha);
252
+ border-radius: 1.25rem;
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: center;
256
+ color: var(--ss-accent);
257
+ }
258
+
259
+ :global(.ss-drop-icon svg) {
260
+ width: 2.25rem;
261
+ height: 2.25rem;
262
+ }
263
+
264
+ :global(.ss-drop-title) {
265
+ font-size: 1.75rem;
266
+ font-weight: 950;
267
+ color: var(--ss-text);
268
+ margin: 0;
269
+ }
270
+
271
+ :global(.ss-drop-sub) {
272
+ font-size: 1rem;
273
+ color: var(--ss-text-muted);
274
+ max-width: 320px;
275
+ margin: 0;
276
+ font-weight: 700;
277
+ }
278
+
279
+ :global(.ss-controls) {
280
+ display: grid;
281
+ grid-template-columns: 1fr 1fr;
282
+ gap: 3rem;
283
+ align-items: start;
284
+ }
285
+
286
+ @media (max-width: 800px) {
287
+ :global(.ss-controls) {
288
+ grid-template-columns: 1fr;
289
+ }
290
+ }
291
+
292
+ :global(.ss-control-group) {
293
+ display: flex;
294
+ flex-direction: column;
295
+ gap: 1.5rem;
296
+ }
297
+
298
+ :global(.ss-control-label) {
299
+ font-size: 0.8rem;
300
+ font-weight: 900;
301
+ text-transform: uppercase;
302
+ color: var(--ss-text-muted);
303
+ letter-spacing: 0.1em;
304
+ }
305
+
306
+ :global(.ss-offset-wrap) {
307
+ display: flex;
308
+ align-items: center;
309
+ gap: 1rem;
310
+ background: var(--ss-bg-elevated);
311
+ border: 1px solid var(--ss-border);
312
+ border-radius: 1.5rem;
313
+ padding: 0.75rem 1.25rem;
314
+ }
315
+
316
+ :global(.ss-offset-btn) {
317
+ width: 2.5rem;
318
+ height: 2.5rem;
319
+ background: none;
320
+ border: none;
321
+ color: var(--ss-text);
322
+ cursor: pointer;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ transition: color 0.2s;
327
+ flex-shrink: 0;
328
+ }
329
+
330
+ :global(.ss-offset-btn:hover) {
331
+ color: var(--ss-accent);
332
+ }
333
+
334
+ :global(.ss-offset-btn svg) {
335
+ width: 1.5rem;
336
+ height: 1.5rem;
337
+ }
338
+
339
+ :global(.ss-offset-input) {
340
+ flex: 1;
341
+ background: transparent;
342
+ border: none;
343
+ font-size: 1.75rem;
344
+ font-weight: 950;
345
+ color: var(--ss-text);
346
+ outline: none;
347
+ width: 100px;
348
+ text-align: center;
349
+ }
350
+
351
+ :global(.ss-stats) {
352
+ display: flex;
353
+ gap: 2rem;
354
+ justify-content: center;
355
+ margin-top: 1rem;
356
+ }
357
+
358
+ :global(.ss-stat) {
359
+ display: flex;
360
+ flex-direction: column;
361
+ align-items: center;
362
+ gap: 0.25rem;
363
+ }
364
+
365
+ :global(.ss-stat-value) {
366
+ display: block;
367
+ font-weight: 900;
368
+ color: var(--ss-accent);
369
+ font-size: 1.25rem;
370
+ }
371
+
372
+ :global(.ss-stat-label) {
373
+ font-size: 0.7rem;
374
+ font-weight: 800;
375
+ text-transform: uppercase;
376
+ color: var(--ss-text-muted);
377
+ letter-spacing: 0.05em;
378
+ }
379
+
380
+ :global(.ss-status-card) {
381
+ display: flex;
382
+ flex-direction: column;
383
+ gap: 1.5rem;
384
+ }
385
+
386
+ :global(.ss-file-row) {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: 1.5rem;
390
+ }
391
+
392
+ :global(.ss-file-icon) {
393
+ width: 3rem;
394
+ height: 3rem;
395
+ color: var(--ss-accent);
396
+ flex-shrink: 0;
397
+ }
398
+
399
+ :global(.ss-file-info) {
400
+ display: flex;
401
+ flex-direction: column;
402
+ gap: 0.25rem;
403
+ min-width: 0;
404
+ }
405
+
406
+ :global(.ss-file-name) {
407
+ font-weight: 950;
408
+ color: var(--ss-text);
409
+ font-size: 0.95rem;
410
+ white-space: nowrap;
411
+ overflow: hidden;
412
+ text-overflow: ellipsis;
413
+ }
414
+
415
+ :global(.ss-file-times) {
416
+ font-size: 0.8rem;
417
+ font-weight: 700;
418
+ color: var(--ss-text-muted);
419
+ }
420
+
421
+ :global(.ss-btn-primary) {
422
+ width: 100%;
423
+ padding: 1.25rem;
424
+ background: var(--ss-accent);
425
+ color: #fff;
426
+ border-radius: 1.5rem;
427
+ font-weight: 950;
428
+ font-size: 1.15rem;
429
+ border: none;
430
+ cursor: pointer;
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: center;
434
+ gap: 0.75rem;
435
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s;
436
+ }
437
+
438
+ :global(.ss-btn-primary:hover) {
439
+ transform: translateY(-4px) scale(1.02);
440
+ box-shadow: 0 15px 35px -10px var(--ss-accent);
441
+ }
442
+
443
+ :global(.ss-btn-primary svg) {
444
+ width: 1.25rem;
445
+ height: 1.25rem;
446
+ }
447
+
448
+ :global(.ss-previews) {
449
+ grid-column: 1 / -1;
450
+ display: grid;
451
+ grid-template-columns: 1fr 1fr;
452
+ gap: 2rem;
453
+ }
454
+
455
+ @media (max-width: 800px) {
456
+ :global(.ss-previews) {
457
+ grid-column: auto;
458
+ grid-template-columns: 1fr;
459
+ }
460
+ }
461
+
462
+ :global(.ss-preview-box) {
463
+ background: var(--ss-bg-elevated);
464
+ padding: 1.5rem;
465
+ border-radius: 1.75rem;
466
+ border: 1px solid var(--ss-border);
467
+ display: flex;
468
+ flex-direction: column;
469
+ gap: 1rem;
470
+ }
471
+
472
+ :global(.ss-preview-label) {
473
+ font-size: 0.75rem;
474
+ font-weight: 950;
475
+ text-transform: uppercase;
476
+ color: var(--ss-text-muted);
477
+ margin: 0;
478
+ letter-spacing: 0.05em;
479
+ }
480
+
481
+ :global(.ss-preview-label-modified) {
482
+ color: var(--ss-accent);
483
+ }
484
+
485
+ :global(.ss-preview-scroll) {
486
+ max-height: 250px;
487
+ overflow-y: auto;
488
+ display: flex;
489
+ flex-direction: column;
490
+ gap: 1rem;
491
+ }
492
+
493
+ :global(.ss-preview-item) {
494
+ font-size: 0.85rem;
495
+ line-height: 1.5;
496
+ }
497
+
498
+ :global(.ss-preview-time) {
499
+ font-weight: 950;
500
+ color: var(--ss-accent);
501
+ font-size: 0.75rem;
502
+ margin: 0 0 0.25rem;
503
+ }
504
+
505
+ :global(.ss-preview-text) {
506
+ font-weight: 700;
507
+ color: var(--ss-text);
508
+ margin: 0;
509
+ }
510
+
511
+ :global(.ss-hidden) {
512
+ display: none;
513
+ }
514
+ </style>