@jjlmoya/utils-creative 1.3.0 → 1.5.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.
@@ -1,5 +1,4 @@
1
1
  ---
2
- import './style.css';
3
2
  ---
4
3
 
5
4
  <div id="dice-roller-root" class="dr-root">
@@ -228,3 +227,481 @@ import './style.css';
228
227
  historyList.innerHTML = '<p class="dr-history-empty">El historial de tiradas aparecerá aquí</p>';
229
228
  });
230
229
  </script>
230
+
231
+ <style>
232
+ .dr-root {
233
+ --dr-bg: #fff;
234
+ --dr-bg-muted: #f8fafc;
235
+ --dr-bg-card: #fff;
236
+ --dr-text: #0f172a;
237
+ --dr-text-muted: #64748b;
238
+ --dr-border: #e2e8f0;
239
+ --dr-primary: #7c3aed;
240
+ --dr-primary-light: #ede9fe;
241
+ --dr-primary-dark: #5b21b6;
242
+ --dr-accent: #f59e0b;
243
+ --dr-danger: #ef4444;
244
+ --dr-success: #10b981;
245
+ --dr-shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
246
+ --dr-shadow-md: 0 4px 16px rgba(0,0,0,0.1);
247
+ --dr-shadow-lg: 0 8px 32px rgba(0,0,0,0.12);
248
+ --dr-radius: 1rem;
249
+ --dr-radius-sm: 0.5rem;
250
+
251
+ display: grid;
252
+ grid-template-columns: 1fr 1fr;
253
+ gap: 1.5rem;
254
+ max-width: 900px;
255
+ margin: 0 auto;
256
+ padding: 1rem;
257
+ }
258
+
259
+ :global(.theme-dark) .dr-root {
260
+ --dr-bg: #0f172a;
261
+ --dr-bg-muted: #1e293b;
262
+ --dr-bg-card: #1e293b;
263
+ --dr-text: #f1f5f9;
264
+ --dr-text-muted: #94a3b8;
265
+ --dr-border: #334155;
266
+ --dr-primary: #a78bfa;
267
+ --dr-primary-light: #2d1b69;
268
+ --dr-primary-dark: #7c3aed;
269
+ --dr-accent: #fbbf24;
270
+ --dr-shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
271
+ --dr-shadow-md: 0 4px 16px rgba(0,0,0,0.4);
272
+ --dr-shadow-lg: 0 8px 32px rgba(0,0,0,0.5);
273
+ }
274
+
275
+ @media (max-width: 680px) {
276
+ .dr-root {
277
+ grid-template-columns: 1fr;
278
+ }
279
+ }
280
+
281
+ .dr-panel {
282
+ background: var(--dr-bg-card);
283
+ border: 1px solid var(--dr-border);
284
+ border-radius: var(--dr-radius);
285
+ box-shadow: var(--dr-shadow-md);
286
+ padding: 1.5rem;
287
+ display: flex;
288
+ flex-direction: column;
289
+ gap: 1.25rem;
290
+ }
291
+
292
+ .dr-label {
293
+ font-size: 0.75rem;
294
+ font-weight: 600;
295
+ text-transform: uppercase;
296
+ letter-spacing: 0.08em;
297
+ color: var(--dr-text-muted);
298
+ margin: 0 0 0.625rem;
299
+ }
300
+
301
+ .dr-dice-grid {
302
+ display: grid;
303
+ grid-template-columns: repeat(4, 1fr);
304
+ gap: 0.5rem;
305
+ }
306
+
307
+ .dr-die-btn {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ padding: 0.75rem 0.5rem;
312
+ background: var(--dr-bg-muted);
313
+ border: 1px solid var(--dr-border);
314
+ border-radius: var(--dr-radius-sm);
315
+ cursor: pointer;
316
+ transition: background 0.15s, border-color 0.15s, transform 0.1s;
317
+ color: var(--dr-primary);
318
+ font-size: 0.85rem;
319
+ font-weight: 700;
320
+ }
321
+
322
+ .dr-die-btn:hover {
323
+ background: var(--dr-primary-light);
324
+ border-color: var(--dr-primary);
325
+ transform: translateY(-2px);
326
+ }
327
+
328
+ .dr-die-btn:active {
329
+ transform: translateY(0);
330
+ }
331
+
332
+ .dr-pool-section {
333
+ border: 1px solid var(--dr-border);
334
+ border-radius: var(--dr-radius-sm);
335
+ padding: 0.875rem;
336
+ background: var(--dr-bg-muted);
337
+ }
338
+
339
+ .dr-pool-header {
340
+ display: flex;
341
+ justify-content: space-between;
342
+ align-items: center;
343
+ margin-bottom: 0.5rem;
344
+ }
345
+
346
+ .dr-pool-header .dr-label {
347
+ margin-bottom: 0;
348
+ }
349
+
350
+ .dr-clear-btn {
351
+ font-size: 0.7rem;
352
+ font-weight: 600;
353
+ color: var(--dr-text-muted);
354
+ background: none;
355
+ border: 1px solid var(--dr-border);
356
+ border-radius: 0.375rem;
357
+ padding: 0.2rem 0.5rem;
358
+ cursor: pointer;
359
+ transition: color 0.15s, border-color 0.15s;
360
+ }
361
+
362
+ .dr-clear-btn:hover {
363
+ color: var(--dr-danger);
364
+ border-color: var(--dr-danger);
365
+ }
366
+
367
+ .dr-pool-display {
368
+ display: flex;
369
+ flex-wrap: wrap;
370
+ gap: 0.5rem;
371
+ min-height: 2.5rem;
372
+ align-items: center;
373
+ }
374
+
375
+ .dr-pool-empty {
376
+ font-size: 0.8rem;
377
+ color: var(--dr-text-muted);
378
+ font-style: italic;
379
+ }
380
+
381
+ .dr-pool-chip {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 0.25rem;
385
+ background: var(--dr-primary-light);
386
+ border: 1px solid var(--dr-primary);
387
+ border-radius: 2rem;
388
+ padding: 0.2rem 0.5rem 0.2rem 0.75rem;
389
+ }
390
+
391
+ .dr-chip-label {
392
+ font-size: 0.8rem;
393
+ font-weight: 700;
394
+ color: var(--dr-primary);
395
+ }
396
+
397
+ .dr-chip-remove {
398
+ width: 1.125rem;
399
+ height: 1.125rem;
400
+ border-radius: 50%;
401
+ border: none;
402
+ background: var(--dr-primary);
403
+ color: #fff;
404
+ font-size: 0.8rem;
405
+ line-height: 1;
406
+ cursor: pointer;
407
+ display: flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ transition: background 0.15s;
411
+ padding: 0;
412
+ }
413
+
414
+ .dr-chip-remove:hover {
415
+ background: var(--dr-primary-dark);
416
+ }
417
+
418
+ .dr-modifier-section {
419
+ display: flex;
420
+ align-items: center;
421
+ justify-content: space-between;
422
+ }
423
+
424
+ .dr-modifier-controls {
425
+ display: flex;
426
+ align-items: center;
427
+ gap: 0.75rem;
428
+ background: var(--dr-bg-muted);
429
+ border: 1px solid var(--dr-border);
430
+ border-radius: 2rem;
431
+ padding: 0.25rem 0.5rem;
432
+ }
433
+
434
+ .dr-mod-btn {
435
+ width: 1.75rem;
436
+ height: 1.75rem;
437
+ border-radius: 50%;
438
+ border: 1px solid var(--dr-border);
439
+ background: var(--dr-bg-card);
440
+ color: var(--dr-text);
441
+ font-size: 1rem;
442
+ font-weight: 700;
443
+ cursor: pointer;
444
+ display: flex;
445
+ align-items: center;
446
+ justify-content: center;
447
+ transition: background 0.15s, border-color 0.15s;
448
+ line-height: 1;
449
+ padding: 0;
450
+ }
451
+
452
+ .dr-mod-btn:hover {
453
+ background: var(--dr-primary-light);
454
+ border-color: var(--dr-primary);
455
+ }
456
+
457
+ .dr-modifier-display {
458
+ min-width: 2rem;
459
+ text-align: center;
460
+ font-weight: 700;
461
+ font-size: 1rem;
462
+ color: var(--dr-text);
463
+ }
464
+
465
+ .dr-roll-btn {
466
+ display: flex;
467
+ align-items: center;
468
+ justify-content: center;
469
+ gap: 0.5rem;
470
+ width: 100%;
471
+ padding: 0.875rem;
472
+ background: linear-gradient(135deg, var(--dr-primary), var(--dr-primary-dark));
473
+ color: #fff;
474
+ border: none;
475
+ border-radius: var(--dr-radius-sm);
476
+ font-size: 1rem;
477
+ font-weight: 700;
478
+ cursor: pointer;
479
+ transition: opacity 0.2s, transform 0.1s;
480
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.35);
481
+ margin-top: auto;
482
+ }
483
+
484
+ .dr-roll-btn:disabled {
485
+ opacity: 0.5;
486
+ cursor: not-allowed;
487
+ box-shadow: none;
488
+ }
489
+
490
+ .dr-roll-btn:not(:disabled):hover {
491
+ transform: translateY(-1px);
492
+ box-shadow: 0 6px 18px rgba(124, 58, 237, 0.45);
493
+ }
494
+
495
+ .dr-roll-btn:not(:disabled):active {
496
+ transform: translateY(0);
497
+ }
498
+
499
+ @keyframes dr-shake {
500
+ 0%, 100% { transform: rotate(0deg); }
501
+ 20% { transform: rotate(-15deg); }
502
+ 40% { transform: rotate(15deg); }
503
+ 60% { transform: rotate(-10deg); }
504
+ 80% { transform: rotate(10deg); }
505
+ }
506
+
507
+ .dr-rolling {
508
+ animation: dr-shake 0.4s ease-in-out;
509
+ }
510
+
511
+ .dr-results-panel {
512
+ display: flex;
513
+ flex-direction: column;
514
+ gap: 1.25rem;
515
+ }
516
+
517
+ .dr-result-card {
518
+ background: var(--dr-bg-card);
519
+ border: 1px solid var(--dr-border);
520
+ border-radius: var(--dr-radius);
521
+ box-shadow: var(--dr-shadow-md);
522
+ padding: 1.5rem;
523
+ min-height: 12rem;
524
+ display: flex;
525
+ align-items: center;
526
+ justify-content: center;
527
+ }
528
+
529
+ .dr-result-empty {
530
+ display: flex;
531
+ flex-direction: column;
532
+ align-items: center;
533
+ gap: 0.5rem;
534
+ color: var(--dr-text-muted);
535
+ }
536
+
537
+ .dr-result-empty p {
538
+ font-size: 0.9rem;
539
+ margin: 0;
540
+ }
541
+
542
+ .dr-result-content {
543
+ width: 100%;
544
+ flex-direction: column;
545
+ align-items: center;
546
+ gap: 1rem;
547
+ }
548
+
549
+ .dr-total-area {
550
+ display: flex;
551
+ flex-direction: column;
552
+ align-items: center;
553
+ gap: 0.25rem;
554
+ }
555
+
556
+ .dr-total-label {
557
+ font-size: 0.75rem;
558
+ font-weight: 600;
559
+ text-transform: uppercase;
560
+ letter-spacing: 0.08em;
561
+ color: var(--dr-text-muted);
562
+ }
563
+
564
+ .dr-total-val {
565
+ font-size: 4rem;
566
+ font-weight: 900;
567
+ color: var(--dr-primary);
568
+ line-height: 1;
569
+ }
570
+
571
+ .dr-roll-expr {
572
+ font-size: 0.8rem;
573
+ color: var(--dr-text-muted);
574
+ font-style: italic;
575
+ }
576
+
577
+ .dr-dice-results {
578
+ display: flex;
579
+ flex-wrap: wrap;
580
+ gap: 0.5rem;
581
+ justify-content: center;
582
+ }
583
+
584
+ .dr-result-pip {
585
+ display: flex;
586
+ flex-direction: column;
587
+ align-items: center;
588
+ gap: 0.15rem;
589
+ padding: 0.5rem 0.75rem;
590
+ background: var(--dr-bg-muted);
591
+ border: 2px solid var(--dr-border);
592
+ border-radius: var(--dr-radius-sm);
593
+ min-width: 3rem;
594
+ transition: border-color 0.2s;
595
+ }
596
+
597
+ .dr-pip-max {
598
+ border-color: var(--dr-success);
599
+ background: rgba(16, 185, 129, 0.1);
600
+ }
601
+
602
+ .dr-pip-min {
603
+ border-color: var(--dr-danger);
604
+ background: rgba(239, 68, 68, 0.1);
605
+ }
606
+
607
+ .dr-pip-val {
608
+ font-size: 1.25rem;
609
+ font-weight: 800;
610
+ color: var(--dr-text);
611
+ line-height: 1;
612
+ }
613
+
614
+ .dr-pip-die {
615
+ font-size: 0.65rem;
616
+ color: var(--dr-text-muted);
617
+ font-weight: 600;
618
+ }
619
+
620
+ .dr-history-section {
621
+ background: var(--dr-bg-card);
622
+ border: 1px solid var(--dr-border);
623
+ border-radius: var(--dr-radius);
624
+ box-shadow: var(--dr-shadow-sm);
625
+ padding: 1.25rem;
626
+ flex: 1;
627
+ }
628
+
629
+ .dr-history-header {
630
+ display: flex;
631
+ justify-content: space-between;
632
+ align-items: center;
633
+ margin-bottom: 0.75rem;
634
+ }
635
+
636
+ .dr-history-header .dr-label {
637
+ margin-bottom: 0;
638
+ }
639
+
640
+ .dr-history-list {
641
+ display: flex;
642
+ flex-direction: column;
643
+ gap: 0.375rem;
644
+ max-height: 220px;
645
+ overflow-y: auto;
646
+ }
647
+
648
+ .dr-history-list::-webkit-scrollbar {
649
+ width: 4px;
650
+ }
651
+
652
+ .dr-history-list::-webkit-scrollbar-thumb {
653
+ background: var(--dr-border);
654
+ border-radius: 2px;
655
+ }
656
+
657
+ .dr-history-empty {
658
+ font-size: 0.8rem;
659
+ color: var(--dr-text-muted);
660
+ font-style: italic;
661
+ text-align: center;
662
+ margin: 1rem 0;
663
+ }
664
+
665
+ .dr-history-item {
666
+ display: grid;
667
+ grid-template-columns: 1fr auto auto;
668
+ align-items: center;
669
+ gap: 0.75rem;
670
+ padding: 0.4rem 0.6rem;
671
+ background: var(--dr-bg-muted);
672
+ border-radius: var(--dr-radius-sm);
673
+ font-size: 0.8rem;
674
+ animation: dr-fadein 0.2s ease-out;
675
+ }
676
+
677
+ @keyframes dr-fadein {
678
+ from {
679
+ opacity: 0;
680
+ transform: translate-y(-4px);
681
+ }
682
+
683
+ to {
684
+ opacity: 1;
685
+ transform: translateY(0);
686
+ }
687
+ }
688
+
689
+ .dr-hist-expr {
690
+ color: var(--dr-text-muted);
691
+ font-size: 0.75rem;
692
+ overflow: hidden;
693
+ text-overflow: ellipsis;
694
+ white-space: nowrap;
695
+ }
696
+
697
+ .dr-hist-result {
698
+ font-weight: 800;
699
+ font-size: 1rem;
700
+ color: var(--dr-primary);
701
+ }
702
+
703
+ .dr-hist-time {
704
+ font-size: 0.7rem;
705
+ color: var(--dr-text-muted);
706
+ }
707
+ </style>