@jjlmoya/utils-babies 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.
@@ -1,5 +1,4 @@
1
1
  ---
2
- import './style.css';
3
2
  import { Icon } from 'astro-icon/components';
4
3
  import type { FertileDaysEstimatorUI } from './index';
5
4
  interface Props { ui: FertileDaysEstimatorUI; }
@@ -265,3 +264,555 @@ const { ui } = Astro.props;
265
264
 
266
265
  renderCalendars();
267
266
  </script>
267
+
268
+ <style>
269
+ .fde-container {
270
+ width: 100%;
271
+ max-width: 1000px;
272
+ margin: 0 auto;
273
+ background: #fff;
274
+ border-radius: 32px;
275
+ box-shadow: 0 25px 70px rgba(0, 0, 0, 0.08);
276
+ display: flex;
277
+ flex-direction: column;
278
+ overflow: hidden;
279
+ color: #111827;
280
+ border: 1px solid #e5e7eb;
281
+ min-height: 600px;
282
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
283
+ }
284
+
285
+ .fde-step-indicator {
286
+ padding: 1.5rem 2.5rem;
287
+ background: #fdf2f8;
288
+ border-bottom: 1px solid #fbcfe8;
289
+ display: flex;
290
+ justify-content: center;
291
+ gap: 3rem;
292
+ }
293
+
294
+ .fde-step-item {
295
+ display: flex;
296
+ align-items: center;
297
+ gap: 0.75rem;
298
+ font-size: 0.9rem;
299
+ font-weight: 700;
300
+ color: #9d174d;
301
+ opacity: 0.4;
302
+ transition: opacity 0.3s ease;
303
+ }
304
+
305
+ .fde-step-item.fde-step-active {
306
+ opacity: 1;
307
+ }
308
+
309
+ .fde-step-number {
310
+ width: 28px;
311
+ height: 28px;
312
+ background: #db2777;
313
+ color: white;
314
+ border-radius: 50%;
315
+ display: flex;
316
+ align-items: center;
317
+ justify-content: center;
318
+ font-size: 0.75rem;
319
+ }
320
+
321
+ .fde-step-first {
322
+ flex: 1;
323
+ display: flex;
324
+ flex-direction: column;
325
+ align-items: center;
326
+ justify-content: center;
327
+ padding: 4rem 2rem;
328
+ text-align: center;
329
+ gap: 3rem;
330
+ background: radial-gradient(circle at top right, #fff1f2, transparent),
331
+ radial-gradient(circle at bottom left, #fdf2f8, transparent);
332
+ transition: opacity 0.4s ease, transform 0.4s ease;
333
+ }
334
+
335
+ .fde-step-first.fde-hidden {
336
+ display: none;
337
+ }
338
+
339
+ :global(.theme-dark) .fde-step-first {
340
+ background: radial-gradient(circle at top right, rgba(88, 28, 135, 0.15), transparent),
341
+ radial-gradient(circle at bottom left, rgba(124, 58, 202, 0.1), transparent);
342
+ }
343
+
344
+ .fde-step-header h2 {
345
+ font-size: 2.5rem;
346
+ font-weight: 950;
347
+ letter-spacing: -0.04em;
348
+ color: #9d174d;
349
+ margin-bottom: 0.75rem;
350
+ line-height: 1;
351
+ }
352
+
353
+ .fde-step-header p {
354
+ font-size: 1.15rem;
355
+ color: #64748b;
356
+ max-width: 400px;
357
+ margin: 0 auto;
358
+ }
359
+
360
+ .fde-calendar-card {
361
+ max-width: 500px;
362
+ width: 100%;
363
+ background: #fff;
364
+ padding: 2.5rem;
365
+ border-radius: 32px;
366
+ border: 1px solid rgba(251, 207, 232, 0.5);
367
+ box-shadow: 0 30px 60px -12px rgba(219, 39, 119, 0.15),
368
+ 0 18px 36px -18px rgba(0, 0, 0, 0.1);
369
+ transform: translateY(0);
370
+ transition: transform 0.3s ease;
371
+ }
372
+
373
+ .fde-calendar-card:hover {
374
+ transform: translateY(-5px);
375
+ }
376
+
377
+ .fde-pulse-hint {
378
+ font-size: 0.95rem;
379
+ font-weight: 800;
380
+ color: #db2777;
381
+ background: #fdf2f8;
382
+ padding: 0.75rem 1.5rem;
383
+ border-radius: 100px;
384
+ border: 1px solid #fbcfe8;
385
+ animation: fde-pulse 2s infinite;
386
+ }
387
+
388
+ @keyframes fde-pulse {
389
+ 0% { opacity: 0.4; }
390
+ 50% { opacity: 1; }
391
+ 100% { opacity: 0.4; }
392
+ }
393
+
394
+ .fde-layout {
395
+ display: none;
396
+ grid-template-columns: 350px 1fr;
397
+ flex: 1;
398
+ opacity: 0;
399
+ transition: opacity 0.5s ease;
400
+ }
401
+
402
+ .fde-layout.fde-active {
403
+ display: grid;
404
+ opacity: 1;
405
+ }
406
+
407
+ .fde-sidebar {
408
+ background: #fdf2f8;
409
+ padding: 2.5rem;
410
+ display: flex;
411
+ flex-direction: column;
412
+ gap: 2.5rem;
413
+ border-right: 1px solid #fbcfe8;
414
+ }
415
+
416
+ .fde-sidebar-header h2 {
417
+ font-size: 1.5rem;
418
+ font-weight: 800;
419
+ color: #9d174d;
420
+ margin: 0 0 0.5rem;
421
+ }
422
+
423
+ .fde-sidebar-header p {
424
+ font-size: 0.85rem;
425
+ color: #be123c;
426
+ opacity: 0.8;
427
+ margin: 0;
428
+ }
429
+
430
+ .fde-input-card {
431
+ background: #fff;
432
+ padding: 1.5rem;
433
+ border-radius: 20px;
434
+ border: 1px solid #fbcfe8;
435
+ box-shadow: 0 4px 15px rgba(219, 39, 119, 0.05);
436
+ }
437
+
438
+ .fde-input-card label {
439
+ display: flex;
440
+ align-items: center;
441
+ gap: 0.75rem;
442
+ font-size: 0.9rem;
443
+ font-weight: 700;
444
+ color: #9d174d;
445
+ margin-bottom: 1rem;
446
+ }
447
+
448
+ .fde-input-card label svg,
449
+ .fde-input-card label [data-icon] {
450
+ width: 1.25rem;
451
+ height: 1.25rem;
452
+ }
453
+
454
+ .fde-range-control {
455
+ display: flex;
456
+ flex-direction: column;
457
+ gap: 1rem;
458
+ }
459
+
460
+ .fde-range-control input[type='range'] {
461
+ width: 100%;
462
+ accent-color: #db2777;
463
+ cursor: pointer;
464
+ }
465
+
466
+ .fde-range-value {
467
+ text-align: center;
468
+ font-size: 2rem;
469
+ font-weight: 800;
470
+ color: #db2777;
471
+ }
472
+
473
+ .fde-range-value span {
474
+ font-size: 0.9rem;
475
+ font-weight: 600;
476
+ color: #be123c;
477
+ }
478
+
479
+ .fde-results {
480
+ display: flex;
481
+ flex-direction: column;
482
+ gap: 1rem;
483
+ }
484
+
485
+ .fde-stat {
486
+ display: flex;
487
+ align-items: center;
488
+ gap: 1rem;
489
+ padding: 1.25rem;
490
+ background: #fff;
491
+ border-radius: 16px;
492
+ border: 1px solid #fce7f3;
493
+ }
494
+
495
+ .fde-stat svg,
496
+ .fde-stat [data-icon] {
497
+ width: 2rem;
498
+ height: 2rem;
499
+ border-radius: 10px;
500
+ padding: 0.4rem;
501
+ flex-shrink: 0;
502
+ }
503
+
504
+ .fde-stat-ovulation svg,
505
+ .fde-stat-ovulation [data-icon] {
506
+ background: #db2777;
507
+ color: #fff;
508
+ }
509
+
510
+ .fde-stat-fertile svg,
511
+ .fde-stat-fertile [data-icon] {
512
+ background: #fdf2f8;
513
+ color: #db2777;
514
+ border: 1px solid #f9a8d4;
515
+ }
516
+
517
+ .fde-stat-period svg,
518
+ .fde-stat-period [data-icon] {
519
+ background: #ffe4e6;
520
+ color: #be123c;
521
+ border: 1px solid #fca5a5;
522
+ }
523
+
524
+ .fde-stat-info {
525
+ display: flex;
526
+ flex-direction: column;
527
+ }
528
+
529
+ .fde-stat-label {
530
+ font-size: 0.75rem;
531
+ font-weight: 700;
532
+ text-transform: uppercase;
533
+ color: #64748b;
534
+ }
535
+
536
+ .fde-stat-value {
537
+ font-size: 1.1rem;
538
+ font-weight: 900;
539
+ color: #1e293b;
540
+ }
541
+
542
+ .fde-main {
543
+ background: #fff;
544
+ padding: 2.5rem;
545
+ display: flex;
546
+ flex-direction: column;
547
+ gap: 2rem;
548
+ }
549
+
550
+ .fde-calendar-wrapper {
551
+ background: #fff;
552
+ }
553
+
554
+ .fde-cal-nav {
555
+ display: flex;
556
+ justify-content: space-between;
557
+ align-items: center;
558
+ margin-bottom: 2rem;
559
+ }
560
+
561
+ .fde-cal-nav h3 {
562
+ font-size: 1.5rem;
563
+ font-weight: 900;
564
+ color: #111827;
565
+ margin: 0;
566
+ text-transform: capitalize;
567
+ }
568
+
569
+ .fde-nav-buttons {
570
+ display: flex;
571
+ gap: 0.5rem;
572
+ }
573
+
574
+ .fde-nav-btn {
575
+ width: 40px;
576
+ height: 40px;
577
+ border-radius: 10px;
578
+ border: 1px solid #e5e7eb;
579
+ background: #fff;
580
+ display: flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ cursor: pointer;
584
+ transition: 0.2s all ease;
585
+ color: #374151;
586
+ }
587
+
588
+ .fde-nav-btn:hover {
589
+ background: #f3f4f6;
590
+ border-color: #d1d5db;
591
+ }
592
+
593
+ .fde-grid {
594
+ display: grid;
595
+ grid-template-columns: repeat(7, 1fr);
596
+ gap: 8px;
597
+ }
598
+
599
+ :global(.fde-day-header) {
600
+ text-align: center;
601
+ font-size: 0.8rem;
602
+ font-weight: 800;
603
+ color: #9ca3af;
604
+ text-transform: uppercase;
605
+ padding-bottom: 1rem;
606
+ }
607
+
608
+ :global(.fde-day) {
609
+ aspect-ratio: 1;
610
+ display: flex;
611
+ align-items: center;
612
+ justify-content: center;
613
+ font-size: 1rem;
614
+ font-weight: 700;
615
+ border-radius: 14px;
616
+ background: #fff;
617
+ color: #374151;
618
+ cursor: pointer;
619
+ transition: 0.2s all ease;
620
+ border: 1px solid #f3f4f6;
621
+ }
622
+
623
+ :global(.fde-day:hover:not(.fde-day-empty)) {
624
+ border-color: #db2777;
625
+ background: #fdf2f8;
626
+ }
627
+
628
+ :global(.fde-day-empty) {
629
+ background: transparent;
630
+ border: none;
631
+ cursor: default;
632
+ }
633
+
634
+ :global(.fde-day-selected) {
635
+ background: #be123c;
636
+ color: #fff;
637
+ border: none;
638
+ box-shadow: 0 8px 20px rgba(190, 18, 60, 0.3);
639
+ }
640
+
641
+ :global(.fde-day-period) {
642
+ background: #ffe4e6;
643
+ color: #be123c;
644
+ border: none;
645
+ }
646
+
647
+ :global(.fde-day-fertile) {
648
+ background: #fdf2f8;
649
+ color: #db2777;
650
+ border: none;
651
+ }
652
+
653
+ :global(.fde-day-ovulation) {
654
+ background: #db2777;
655
+ color: #fff;
656
+ box-shadow: 0 8px 20px rgba(219, 39, 119, 0.3);
657
+ border: none;
658
+ }
659
+
660
+ :global(.fde-day-today) {
661
+ border: 2px solid #111827;
662
+ }
663
+
664
+ .fde-legend {
665
+ display: flex;
666
+ justify-content: center;
667
+ gap: 2rem;
668
+ margin-top: 2rem;
669
+ padding: 1.25rem;
670
+ background: #f9fafb;
671
+ border-radius: 20px;
672
+ }
673
+
674
+ .fde-legend-item {
675
+ display: flex;
676
+ align-items: center;
677
+ gap: 0.5rem;
678
+ font-size: 0.85rem;
679
+ font-weight: 700;
680
+ color: #4b5563;
681
+ }
682
+
683
+ .fde-legend-dot {
684
+ width: 12px;
685
+ height: 12px;
686
+ border-radius: 4px;
687
+ }
688
+
689
+ .fde-dot-period { background: #ffe4e6; }
690
+ .fde-dot-fertile { background: #fdf2f8; }
691
+ .fde-dot-ovulation { background: #db2777; }
692
+ .fde-dot-selected { background: #be123c; }
693
+
694
+ :global(.theme-dark) .fde-container {
695
+ background: #18181b;
696
+ border-color: #27272a;
697
+ box-shadow: 0 25px 70px rgba(0, 0, 0, 0.5);
698
+ color: #fff;
699
+ }
700
+
701
+ :global(.theme-dark) .fde-sidebar {
702
+ background: #111113;
703
+ border-right-color: #27272a;
704
+ }
705
+
706
+ :global(.theme-dark) .fde-main { background: #18181b; }
707
+
708
+ :global(.theme-dark) .fde-sidebar-header h2 { color: #f472b6; }
709
+ :global(.theme-dark) .fde-sidebar-header p { color: #f9a8d4; }
710
+
711
+ :global(.theme-dark) .fde-input-card {
712
+ background: #1e1e21;
713
+ border-color: #27272a;
714
+ }
715
+
716
+ :global(.theme-dark) .fde-stat {
717
+ background: #1e1e21;
718
+ border-color: #27272a;
719
+ }
720
+
721
+ :global(.theme-dark) .fde-stat-value { color: #fff; }
722
+ :global(.theme-dark) .fde-cal-nav h3 { color: #fff; }
723
+
724
+ :global(.theme-dark) .fde-day {
725
+ background: #1e1e21;
726
+ border-color: #27272a;
727
+ color: #e5e7eb;
728
+ }
729
+
730
+ :global(.theme-dark) .fde-day:hover:not(.fde-day-empty) { background: #27272a; }
731
+ :global(.theme-dark) .fde-legend { background: #111113; }
732
+ :global(.theme-dark) .fde-legend-item { color: #9ca3af; }
733
+
734
+ @media (max-width: 900px) {
735
+ .fde-layout { grid-template-columns: 1fr; }
736
+ .fde-sidebar {
737
+ border-right: none;
738
+ border-bottom: 1px solid #fbcfe8;
739
+ }
740
+ }
741
+
742
+ @media (max-width: 768px) {
743
+ .fde-container { border-radius: 1.5rem; }
744
+
745
+ .fde-step-indicator {
746
+ padding: 1rem;
747
+ gap: 1rem;
748
+ flex-wrap: wrap;
749
+ }
750
+
751
+ .fde-step-first {
752
+ padding: 2rem 1rem;
753
+ gap: 1.5rem;
754
+ }
755
+
756
+ .fde-calendar-card {
757
+ padding: 1rem;
758
+ border-radius: 1.5rem;
759
+ }
760
+
761
+ .fde-step-header h2 { font-size: 1.75rem; }
762
+ .fde-step-header p { font-size: 0.95rem; }
763
+
764
+ .fde-sidebar {
765
+ padding: 1.25rem;
766
+ gap: 1.5rem;
767
+ }
768
+
769
+ .fde-sidebar-header h2 { font-size: 1.25rem; }
770
+
771
+ .fde-main {
772
+ padding: 1.25rem;
773
+ gap: 1.25rem;
774
+ }
775
+
776
+ .fde-input-card {
777
+ padding: 1rem;
778
+ border-radius: 1rem;
779
+ }
780
+
781
+ .fde-cal-nav { margin-bottom: 1rem; }
782
+ .fde-cal-nav h3 { font-size: 1.2rem; }
783
+ .fde-nav-btn {
784
+ width: 32px;
785
+ height: 32px;
786
+ }
787
+
788
+ .fde-grid { gap: 4px; }
789
+
790
+ .fde-day-header {
791
+ padding-bottom: 0.5rem;
792
+ font-size: 0.7rem;
793
+ }
794
+
795
+ .fde-day {
796
+ font-size: 0.85rem;
797
+ border-radius: 8px;
798
+ }
799
+
800
+ .fde-legend {
801
+ flex-direction: column;
802
+ gap: 0.75rem;
803
+ padding: 1rem;
804
+ align-items: flex-start;
805
+ border-radius: 1rem;
806
+ }
807
+
808
+ .fde-stat {
809
+ padding: 1rem;
810
+ gap: 0.75rem;
811
+ flex-direction: column;
812
+ text-align: center;
813
+ align-items: center;
814
+ }
815
+
816
+ .fde-stat-info { align-items: center; }
817
+ }
818
+ </style>