@jjlmoya/utils-hardware 1.12.0 → 1.14.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.
@@ -12,48 +12,7 @@ const t = (ui ?? {}) as PixelesPantallaUI;
12
12
  ---
13
13
 
14
14
  <div class="pt-root" data-badge={t.badge} data-title={t.title} data-description={t.description} data-btn-start-test={t.btnStartTest} data-btn-start-fix={t.btnStartFix} data-kbd-fullscreen={t.kbdFullscreen} data-kbd-fullscreen-label={t.kbdFullscreenLabel} data-kbd-space={t.kbdSpace} data-kbd-space-label={t.kbdSpaceLabel} data-kbd-esc={t.kbdEsc} data-kbd-esc-label={t.kbdEscLabel} data-color-black={t.colorBlack} data-color-white={t.colorWhite} data-color-red={t.colorRed} data-color-green={t.colorGreen} data-color-blue={t.colorBlue} data-btn-toggle-fixer={t.btnToggleFixer} data-btn-exit={t.btnExit}>
15
- <style is:global>
16
- .pt-root {
17
- --pt-accent: #4f46e5;
18
- --pt-accent-hover: #4338ca;
19
- --pt-accent-bg: #e0e7ff;
20
- --pt-accent-text: #4338ca;
21
- --pt-surface: #fff;
22
- --pt-surface-alt: #f8fafc;
23
- --pt-border: #e2e8f0;
24
- --pt-text: #0f172a;
25
- --pt-text-muted: #64748b;
26
- --pt-kbd-bg: #f1f5f9;
27
- --pt-monitor-body: #1e293b;
28
- --pt-monitor-screen: #020617;
29
- --pt-shadow: rgba(0, 0, 0, 0.1);
30
- }
31
-
32
- .theme-dark .pt-root {
33
- --pt-surface: #0f172a;
34
- --pt-surface-alt: #1e293b;
35
- --pt-border: #334155;
36
- --pt-text: #f1f5f9;
37
- --pt-text-muted: #94a3b8;
38
- --pt-kbd-bg: #1e293b;
39
- --pt-accent-bg: rgba(79, 70, 229, 0.3);
40
- --pt-accent-text: #a5b4fc;
41
- --pt-monitor-body: #334155;
42
- --pt-monitor-screen: #1e293b;
43
- }
44
-
45
- body.is-widget .pt-root {
46
- padding: 0;
47
- }
48
-
49
- body.is-widget .pt-dashboard {
50
- background: transparent;
51
- box-shadow: none;
52
- border: none;
53
- padding: 1rem;
54
- }
55
- </style>
56
-
15
+
57
16
  <div class="pt-wrapper">
58
17
  <div class="pt-dashboard" id="dashboard">
59
18
  <div class="pt-grid">
@@ -157,409 +116,7 @@ const t = (ui ?? {}) as PixelesPantallaUI;
157
116
  </div>
158
117
  </div>
159
118
 
160
- <style>
161
- .pt-wrapper {
162
- width: 100%;
163
- max-width: 80rem;
164
- margin: 0 auto;
165
- padding: 1rem;
166
- color: var(--pt-text);
167
- }
168
-
169
- .pt-dashboard {
170
- background: var(--pt-surface);
171
- border-radius: 1.5rem;
172
- padding: 2rem;
173
- box-shadow: 0 20px 25px -5px var(--pt-shadow);
174
- border: 1px solid var(--pt-border);
175
- transition: all 0.5s ease;
176
- }
177
-
178
- .pt-grid {
179
- display: grid;
180
- grid-template-columns: 1fr 1fr;
181
- gap: 3rem;
182
- align-items: center;
183
- }
184
-
185
- @media (max-width: 640px) {
186
- .pt-grid {
187
- grid-template-columns: 1fr;
188
- }
189
- }
190
-
191
- .pt-badge-container {
192
- margin-bottom: 1.5rem;
193
- }
194
-
195
- .pt-badge {
196
- display: inline-flex;
197
- align-items: center;
198
- gap: 0.5rem;
199
- padding: 0.25rem 0.75rem;
200
- border-radius: 9999px;
201
- background-color: var(--pt-accent-bg);
202
- color: var(--pt-accent-text);
203
- font-size: 0.75rem;
204
- font-weight: 700;
205
- letter-spacing: 0.05em;
206
- text-transform: uppercase;
207
- }
208
-
209
- .pt-badge-icon {
210
- width: 1rem;
211
- height: 1rem;
212
- }
213
-
214
- .pt-title {
215
- font-size: 2.25rem;
216
- font-weight: 900;
217
- letter-spacing: -0.02em;
218
- margin-bottom: 1rem;
219
- line-height: 1.2;
220
- }
221
-
222
- @media (min-width: 768px) {
223
- .pt-title {
224
- font-size: 3rem;
225
- }
226
- }
227
-
228
- .pt-description {
229
- font-size: 1.125rem;
230
- color: var(--pt-text-muted);
231
- line-height: 1.625;
232
- margin-bottom: 1.5rem;
233
- }
234
-
235
- .pt-buttons {
236
- display: flex;
237
- gap: 1rem;
238
- margin-bottom: 1.5rem;
239
- flex-wrap: wrap;
240
- }
241
-
242
- @media (max-width: 640px) {
243
- .pt-buttons {
244
- flex-direction: column;
245
- }
246
- }
247
-
248
- .pt-btn {
249
- flex: 1;
250
- display: flex;
251
- align-items: center;
252
- justify-content: center;
253
- gap: 0.75rem;
254
- padding: 1rem 2rem;
255
- border-radius: 0.75rem;
256
- font-weight: 700;
257
- border: none;
258
- cursor: pointer;
259
- transition: all 0.3s ease;
260
- min-width: auto;
261
- }
262
-
263
- .pt-btn-primary {
264
- background-color: var(--pt-accent);
265
- color: white;
266
- }
267
-
268
- .pt-btn-primary:hover {
269
- background-color: var(--pt-accent-hover);
270
- box-shadow: 0 10px 15px -3px rgba(79, 70, 229, 0.3);
271
- }
272
-
273
- .pt-btn-secondary {
274
- background-color: var(--pt-surface-alt);
275
- color: var(--pt-text);
276
- border: 2px solid var(--pt-border);
277
- }
278
-
279
- .pt-btn-secondary:hover {
280
- border-color: #10b981;
281
- color: #059669;
282
- }
283
-
284
- .pt-btn-icon {
285
- width: 1.5rem;
286
- height: 1.5rem;
287
- }
288
-
289
- .pt-shortcuts {
290
- display: flex;
291
- align-items: center;
292
- gap: 1rem;
293
- font-size: 0.75rem;
294
- color: var(--pt-text-muted);
295
- flex-wrap: wrap;
296
- }
297
-
298
- .pt-shortcut {
299
- display: flex;
300
- align-items: center;
301
- gap: 0.25rem;
302
- }
303
-
304
- .pt-kbd {
305
- background-color: var(--pt-kbd-bg);
306
- padding: 0.125rem 0.375rem;
307
- border-radius: 0.25rem;
308
- border: 1px solid var(--pt-border);
309
- font-size: 0.75rem;
310
- }
311
-
312
- .pt-monitor-wrapper {
313
- position: relative;
314
- display: flex;
315
- justify-content: center;
316
- align-items: center;
317
- cursor: pointer;
318
- min-height: 250px;
319
- }
320
-
321
- .pt-monitor {
322
- position: relative;
323
- aspect-ratio: 16 / 9;
324
- width: 100%;
325
- max-width: 500px;
326
- background: var(--pt-monitor-body);
327
- border-radius: 1rem;
328
- border: 4px solid var(--pt-monitor-body);
329
- box-shadow: 0 25px 50px -12px var(--pt-shadow);
330
- display: flex;
331
- align-items: center;
332
- justify-content: center;
333
- overflow: hidden;
334
- }
335
-
336
- .pt-monitor-screen-wrapper {
337
- position: relative;
338
- width: 100%;
339
- height: 100%;
340
- display: flex;
341
- border-radius: 0.5rem;
342
- overflow: hidden;
343
- }
344
-
345
- .pt-monitor-shine {
346
- position: absolute;
347
- inset: 0;
348
- background: linear-gradient(to top right, rgba(255, 255, 255, 0.05), transparent);
349
- pointer-events: none;
350
- z-index: 10;
351
- border-radius: 0.5rem;
352
- }
353
-
354
- .pt-monitor-screen {
355
- width: 100%;
356
- height: 100%;
357
- display: flex;
358
- transition: background-color 0.5s ease;
359
- background-color: #000;
360
- }
361
-
362
- .pt-monitor-section {
363
- flex: 1;
364
- opacity: 0.9;
365
- }
366
-
367
- .pt-fixer-preview {
368
- position: absolute;
369
- width: 3rem;
370
- height: 3rem;
371
- background: white;
372
- animation: pulse-glow 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
373
- box-shadow: 0 0 20px rgba(255, 255, 255, 0.5);
374
- z-index: 20;
375
- display: none;
376
- }
377
-
378
- @keyframes pulse-glow {
379
- 0%,
380
- 100% {
381
- opacity: 1;
382
- }
383
- 50% {
384
- opacity: 0.7;
385
- }
386
- }
387
-
388
- .pt-monitor-stand {
389
- position: absolute;
390
- bottom: -1rem;
391
- left: 50%;
392
- transform: translateX(-50%);
393
- width: 6rem;
394
- height: 3rem;
395
- background: var(--pt-monitor-body);
396
- border-radius: 0 0 0.75rem 0.75rem;
397
- z-index: -1;
398
- }
399
-
400
- .pt-monitor-base {
401
- position: absolute;
402
- bottom: -1.25rem;
403
- left: 50%;
404
- transform: translateX(-50%);
405
- width: 12rem;
406
- height: 1rem;
407
- background: var(--pt-monitor-screen);
408
- border-radius: 9999px;
409
- margin-top: -1.25rem;
410
- }
411
-
412
- :global(.pt-overlay-hidden) {
413
- position: fixed;
414
- inset: 0;
415
- z-index: 50;
416
- background-color: black;
417
- cursor: none;
418
- display: none;
419
- }
420
-
421
- :global(.pt-overlay-active) {
422
- display: flex;
423
- }
424
-
425
- .pt-overlay-bg {
426
- position: absolute;
427
- inset: 0;
428
- background-color: black;
429
- transition: background-color 0s;
430
- }
431
-
432
- .pt-fixer-box {
433
- position: fixed;
434
- inset: 0;
435
- z-index: 55;
436
- background-color: white;
437
- cursor: none;
438
- overflow: hidden;
439
- display: none;
440
- }
441
-
442
- :global(.theme-dark) .pt-fixer-box {
443
- background-color: var(--pt-surface);
444
- }
445
-
446
- .pt-fixer-box:not(.pt-fixer-hidden) {
447
- display: flex;
448
- }
449
-
450
- .pt-fixer-hidden {
451
- display: none;
452
- }
453
-
454
- .pt-noise-canvas {
455
- position: absolute;
456
- inset: 0;
457
- width: 100%;
458
- height: 100%;
459
- }
460
-
461
- .pt-close-fixer {
462
- position: absolute;
463
- top: 0.5rem;
464
- right: 0.5rem;
465
- padding: 0.5rem;
466
- opacity: 0;
467
- transition: opacity 0.3s ease;
468
- background: rgba(0, 0, 0, 0.5);
469
- color: white;
470
- border: none;
471
- cursor: pointer;
472
- z-index: 60;
473
- display: flex;
474
- align-items: center;
475
- justify-content: center;
476
- }
477
-
478
- .pt-fixer-box:hover .pt-close-fixer {
479
- opacity: 1;
480
- }
481
-
482
- .pt-close-fixer svg {
483
- width: 1rem;
484
- height: 1rem;
485
- }
486
-
487
- .pt-controls {
488
- position: absolute;
489
- bottom: 3rem;
490
- left: 50%;
491
- transform: translateX(-50%);
492
- background: rgba(15, 23, 42, 0.8);
493
- backdrop-filter: blur(0.5rem);
494
- border: 1px solid rgba(255, 255, 255, 0.1);
495
- padding: 1rem;
496
- border-radius: 1rem;
497
- display: flex;
498
- align-items: center;
499
- gap: 1rem;
500
- transition: opacity 0.3s ease;
501
- opacity: 0;
502
- pointer-events: none;
503
- }
504
-
505
- :global(.pt-controls-visible) {
506
- opacity: 1;
507
- pointer-events: auto;
508
- }
509
-
510
- .pt-color-buttons {
511
- display: flex;
512
- gap: 0.5rem;
513
- }
514
-
515
- .pt-color-btn {
516
- width: 2.5rem;
517
- height: 2.5rem;
518
- border-radius: 9999px;
519
- border: 2px solid rgba(255, 255, 255, 0.2);
520
- cursor: pointer;
521
- transition: all 0.3s ease;
522
- }
523
-
524
- .pt-color-btn:hover {
525
- transform: scale(1.1);
526
- box-shadow: 0 0 15px rgba(255, 255, 255, 0.3);
527
- }
528
-
529
- .pt-divider {
530
- width: 1px;
531
- height: 2rem;
532
- background-color: rgba(255, 255, 255, 0.2);
533
- }
534
-
535
- .pt-control-btn {
536
- padding: 0.5rem;
537
- border-radius: 0.5rem;
538
- background: transparent;
539
- color: white;
540
- border: none;
541
- cursor: pointer;
542
- transition: all 0.3s ease;
543
- display: flex;
544
- align-items: center;
545
- justify-content: center;
546
- }
547
-
548
- .pt-control-btn:hover {
549
- color: #4ade80;
550
- background: rgba(255, 255, 255, 0.1);
551
- }
552
-
553
- .pt-control-btn-exit:hover {
554
- color: #ef4444;
555
- }
556
-
557
- .pt-control-btn svg {
558
- width: 1.5rem;
559
- height: 1.5rem;
560
- }
561
- </style>
562
-
119
+
563
120
  <script>
564
121
  const els = {
565
122
  btnStart: document.getElementById('btn-start-test'),