@up_si_vale/sivale-componentes-angular 1.0.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.
Files changed (40) hide show
  1. package/README.md +81 -0
  2. package/ng-package.json +9 -0
  3. package/package.json +40 -0
  4. package/src/lib/atoms/button/button.component.html +21 -0
  5. package/src/lib/atoms/button/button.component.scss +242 -0
  6. package/src/lib/atoms/button/button.component.ts +43 -0
  7. package/src/lib/atoms/checkbox/checkbox.component.scss +131 -0
  8. package/src/lib/atoms/checkbox/checkbox.component.ts +130 -0
  9. package/src/lib/atoms/date-picker/date-picker.component.html +295 -0
  10. package/src/lib/atoms/date-picker/date-picker.component.scss +1002 -0
  11. package/src/lib/atoms/date-picker/date-picker.component.ts +942 -0
  12. package/src/lib/atoms/input/input.component.ts +239 -0
  13. package/src/lib/atoms/loader/loader.component.scss +144 -0
  14. package/src/lib/atoms/loader/loader.component.ts +44 -0
  15. package/src/lib/atoms/radio/radio.component.scss +115 -0
  16. package/src/lib/atoms/radio/radio.component.ts +103 -0
  17. package/src/lib/atoms/textarea/textarea.component.ts +155 -0
  18. package/src/lib/directives/asset-source.directive.ts +64 -0
  19. package/src/lib/directives/icon-source.directive.ts +74 -0
  20. package/src/lib/directives/no-leading-space.directive.ts +18 -0
  21. package/src/lib/directives/only-letters.directive.ts +21 -0
  22. package/src/lib/directives/only-number.directive.ts +15 -0
  23. package/src/lib/directives/rfc.directive.ts +60 -0
  24. package/src/lib/directives/tooltip.directive.ts +211 -0
  25. package/src/lib/models/snackbar.models.ts +16 -0
  26. package/src/lib/molecules/copy-input/copy-input.component.html +29 -0
  27. package/src/lib/molecules/copy-input/copy-input.component.scss +101 -0
  28. package/src/lib/molecules/copy-input/copy-input.component.ts +41 -0
  29. package/src/lib/molecules/multiselect/multiselect.component.scss +298 -0
  30. package/src/lib/molecules/multiselect/multiselect.component.ts +487 -0
  31. package/src/lib/molecules/option/option.component.ts +45 -0
  32. package/src/lib/molecules/phone-input/phone-input.component.scss +78 -0
  33. package/src/lib/molecules/phone-input/phone-input.component.ts +43 -0
  34. package/src/lib/molecules/select/select.component.ts +482 -0
  35. package/src/lib/molecules/snackbar/snackbar.component.scss +201 -0
  36. package/src/lib/molecules/snackbar/snackbar.component.ts +321 -0
  37. package/src/lib/services/snackbar.service.ts +103 -0
  38. package/src/lib/tokens/asset-base-url.token.ts +10 -0
  39. package/src/public-api.ts +38 -0
  40. package/tsconfig.json +31 -0
@@ -0,0 +1,1002 @@
1
+ .date-picker-wrapper {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ margin-bottom: 6px;
6
+ padding: 0 4px;
7
+
8
+ label {
9
+ display: block;
10
+ margin-bottom: 0.5rem;
11
+ font-family: 'Quicksand', sans-serif;
12
+ font-weight: 500;
13
+ font-size: 14px;
14
+ color: #585D61;
15
+ }
16
+ }
17
+
18
+ .date-picker-container {
19
+ position: relative;
20
+ width: 100%;
21
+ }
22
+
23
+ .date-picker-input {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 0.5rem;
27
+ width: 100%;
28
+ min-height: 44px;
29
+ height: 44px;
30
+ padding: 0 0.75rem;
31
+ border: 1px solid #EAECF5;
32
+ box-shadow: 0 1px 2px 0 #A1AFEC66;
33
+ border-radius: 8px;
34
+ background: white;
35
+ cursor: pointer;
36
+ transition: all 0.2s ease;
37
+ font-family: 'Quicksand', sans-serif;
38
+
39
+ &:hover:not(.disabled) {
40
+ border-color: #FBD399;
41
+ }
42
+
43
+ &.open {
44
+ border-color: #FBD399;
45
+ box-shadow: 0 0 0 4px #FFE8C8, 0 1px 2px 0 #0A0D120D;
46
+ }
47
+
48
+ &.error {
49
+ border-color: #F04438;
50
+ }
51
+
52
+ &.disabled {
53
+ background: #F9FAFB;
54
+ cursor: not-allowed;
55
+ opacity: 0.6;
56
+ }
57
+
58
+ .calendar-icon {
59
+ color: #A4A7AE;
60
+ flex-shrink: 0;
61
+ }
62
+
63
+ .date-picker-placeholder {
64
+ color: #A4A7AE;
65
+ font-size: 14px;
66
+ flex: 1;
67
+ }
68
+
69
+ .date-picker-value {
70
+ color: #2E353A;
71
+ font-size: 14px;
72
+ font-weight: 500;
73
+ flex: 1;
74
+ }
75
+ }
76
+
77
+ .field-error {
78
+ color: #F04438;
79
+ font-size: 0.875rem;
80
+ margin-top: 0.25rem;
81
+ font-family: 'Quicksand', sans-serif;
82
+ }
83
+
84
+ // Overlay (covers entire viewport)
85
+ .date-picker-overlay {
86
+ position: fixed;
87
+ top: 0;
88
+ left: 0;
89
+ right: 0;
90
+ bottom: 0;
91
+ z-index: 9999;
92
+ pointer-events: none;
93
+ }
94
+
95
+ // Dropdown styles
96
+ .date-picker-dropdown {
97
+ pointer-events: all;
98
+ background: white;
99
+ border-radius: 12px;
100
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
101
+ opacity: 0;
102
+ transform: translateY(-10px);
103
+ transition: all 0.2s ease;
104
+ overflow: visible;
105
+
106
+ &.open {
107
+ opacity: 1;
108
+ transform: translateY(0);
109
+ }
110
+ }
111
+
112
+ .date-picker-content {
113
+ display: flex;
114
+ font-family: 'Quicksand', sans-serif;
115
+ overflow: visible;
116
+ }
117
+
118
+ // Main content column (calendars + footer)
119
+ .date-picker-main {
120
+ display: flex;
121
+ flex-direction: column;
122
+ flex: 1;
123
+ overflow: visible;
124
+ }
125
+
126
+ // Sidebar (only for range mode)
127
+ .filter-sidebar {
128
+ padding: 0.5rem 0.8rem;
129
+ min-width: 170px;
130
+ display: flex;
131
+ flex-direction: column;
132
+ border-right: 1px solid #F3F4F6;
133
+
134
+ .filter-option {
135
+ font-family: Quicksand, sans-serif;
136
+ padding: 0.625rem 0.8rem;
137
+ color: #6B7280;
138
+ cursor: pointer;
139
+ transition: all 0.15s ease;
140
+ white-space: nowrap;
141
+ position: relative;
142
+ font-weight: 400;
143
+ font-size: 14px;
144
+
145
+ &:hover:not(.active) {
146
+ background: #F9FAFB;
147
+ }
148
+
149
+ &.active {
150
+ background: #FEF4E6;
151
+ color: #F7A733;
152
+ font-weight: 500;
153
+ border-radius: 6px;
154
+ }
155
+ }
156
+ }
157
+
158
+ // Calendars
159
+ .calendars-container {
160
+ display: flex;
161
+ gap: 3rem;
162
+ padding: 1rem;
163
+ overflow: visible;
164
+
165
+ // Single calendar mode - center the calendar
166
+ .date-picker-dropdown:not(.range-mode) & {
167
+ gap: 0;
168
+ justify-content: center;
169
+ }
170
+ }
171
+
172
+ .calendar {
173
+ display: flex;
174
+ flex-direction: column;
175
+ gap: 1rem;
176
+ position: relative;
177
+ overflow: visible;
178
+
179
+ .calendar-header {
180
+ display: flex;
181
+ align-items: center;
182
+ justify-content: space-between;
183
+ padding: 0 0.25rem;
184
+ margin-bottom: 0.5rem;
185
+ position: relative;
186
+ overflow: visible;
187
+
188
+ .month-year-selector {
189
+ position: relative;
190
+ flex: 1;
191
+ display: flex;
192
+ justify-content: center;
193
+ }
194
+
195
+ .month-year {
196
+ font-size: 0.9375rem;
197
+ font-weight: 600;
198
+ color: #1F2937;
199
+ min-width: 160px;
200
+ text-align: center;
201
+ background: transparent;
202
+ border: none;
203
+ cursor: pointer;
204
+ padding: 0.375rem 0.5rem;
205
+ border-radius: 6px;
206
+ transition: all 0.15s ease;
207
+
208
+ &:hover {
209
+ background: #F3F4F6;
210
+ }
211
+ }
212
+
213
+ .nav-button {
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: center;
217
+ width: 28px;
218
+ height: 28px;
219
+ border: none;
220
+ background: transparent;
221
+ border-radius: 6px;
222
+ cursor: pointer;
223
+ color: #6B7280;
224
+ transition: all 0.15s ease;
225
+ padding: 0;
226
+
227
+ &:hover:not(:disabled):not(.disabled) {
228
+ background: #F3F4F6;
229
+ color: #1F2937;
230
+ }
231
+
232
+ &.disabled,
233
+ &:disabled {
234
+ color: #D1D5DB;
235
+ cursor: not-allowed;
236
+ opacity: 0.4;
237
+ }
238
+
239
+ svg {
240
+ width: 10px;
241
+ height: 10px;
242
+ }
243
+ }
244
+
245
+ .nav-button-placeholder {
246
+ width: 28px;
247
+ height: 28px;
248
+ }
249
+ }
250
+
251
+ // Month/Year Picker Dropdown
252
+ .month-year-picker {
253
+ position: absolute;
254
+ top: 100%;
255
+ left: 50%;
256
+ transform: translateX(-50%);
257
+ margin-top: 0.5rem;
258
+ background: white;
259
+ border-radius: 8px;
260
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
261
+ z-index: 10002;
262
+ padding: 1rem;
263
+ min-width: 280px;
264
+ border: 1px solid #E5E7EB;
265
+
266
+ .picker-section {
267
+ margin-bottom: 1rem;
268
+
269
+ &:last-child {
270
+ margin-bottom: 0;
271
+ }
272
+
273
+ .picker-title {
274
+ font-size: 0.75rem;
275
+ font-weight: 600;
276
+ color: #6B7280;
277
+ text-transform: uppercase;
278
+ letter-spacing: 0.5px;
279
+ margin-bottom: 0.5rem;
280
+ }
281
+
282
+ .picker-header {
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: space-between;
286
+ margin-bottom: 0.5rem;
287
+
288
+ .picker-title {
289
+ margin-bottom: 0;
290
+ font-size: 0.75rem;
291
+ font-weight: 600;
292
+ color: #1F2937;
293
+ text-transform: none;
294
+ letter-spacing: 0;
295
+ }
296
+
297
+ .year-nav-button {
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: center;
301
+ width: 24px;
302
+ height: 24px;
303
+ border: none;
304
+ background: transparent;
305
+ border-radius: 4px;
306
+ cursor: pointer;
307
+ color: #6B7280;
308
+ transition: all 0.15s ease;
309
+ padding: 0;
310
+
311
+ &:hover:not(:disabled):not(.disabled) {
312
+ background: #F3F4F6;
313
+ color: #1F2937;
314
+ }
315
+
316
+ &.disabled,
317
+ &:disabled {
318
+ color: #D1D5DB;
319
+ cursor: not-allowed;
320
+ opacity: 0.5;
321
+ }
322
+
323
+ svg {
324
+ width: 10px;
325
+ height: 10px;
326
+ }
327
+ }
328
+ }
329
+ }
330
+
331
+ .months-grid {
332
+ display: grid;
333
+ grid-template-columns: repeat(4, 1fr);
334
+ gap: 0.375rem;
335
+
336
+ .month-option {
337
+ padding: 0.5rem;
338
+ border: 1px solid #E5E7EB;
339
+ background: white;
340
+ border-radius: 6px;
341
+ font-size: 0.75rem;
342
+ font-weight: 500;
343
+ color: #6B7280;
344
+ cursor: pointer;
345
+ transition: all 0.15s ease;
346
+
347
+ &:hover {
348
+ background: #F9FAFB;
349
+ border-color: #D1D5DB;
350
+ }
351
+
352
+ &.active {
353
+ background: #F59100;
354
+ color: white;
355
+ border-color: #F59100;
356
+ }
357
+
358
+ &.disabled,
359
+ &:disabled {
360
+ background: #F9FAFB;
361
+ color: #D1D5DB;
362
+ border-color: #E5E7EB;
363
+ cursor: not-allowed;
364
+ pointer-events: none;
365
+ }
366
+ }
367
+ }
368
+
369
+ .years-grid {
370
+ display: grid;
371
+ grid-template-columns: repeat(4, 1fr);
372
+ gap: 0.375rem;
373
+ max-height: 200px;
374
+ overflow-y: auto;
375
+
376
+ .year-option {
377
+ padding: 0.5rem;
378
+ border: 1px solid #E5E7EB;
379
+ background: white;
380
+ border-radius: 6px;
381
+ font-size: 0.75rem;
382
+ font-weight: 500;
383
+ color: #6B7280;
384
+ cursor: pointer;
385
+ transition: all 0.15s ease;
386
+
387
+ &:hover {
388
+ background: #F9FAFB;
389
+ border-color: #D1D5DB;
390
+ }
391
+
392
+ &.active {
393
+ background: #F59100;
394
+ color: white;
395
+ border-color: #F59100;
396
+ }
397
+
398
+ &.disabled,
399
+ &:disabled {
400
+ background: #F9FAFB;
401
+ color: #D1D5DB;
402
+ border-color: #E5E7EB;
403
+ cursor: not-allowed;
404
+ pointer-events: none;
405
+ }
406
+ }
407
+ }
408
+ }
409
+
410
+ .calendar-grid {
411
+ display: grid;
412
+ grid-template-columns: repeat(7, 1fr);
413
+ gap: 4px 0;
414
+
415
+ .weekday-header {
416
+ display: flex;
417
+ align-items: center;
418
+ justify-content: center;
419
+ font-size: 0.6875rem;
420
+ font-weight: 500;
421
+ color: #9CA3AF;
422
+ padding: 0.5rem 0;
423
+ text-transform: uppercase;
424
+ letter-spacing: 0.5px;
425
+ }
426
+
427
+ .calendar-day {
428
+ display: flex;
429
+ align-items: center;
430
+ justify-content: center;
431
+ width: 36px;
432
+ height: 36px;
433
+ font-size: 0.8125rem;
434
+ color: #1F2937;
435
+ cursor: pointer;
436
+ transition: all 0.15s ease;
437
+ position: relative;
438
+ font-weight: 400;
439
+ border-radius: 0;
440
+
441
+ &.other-month {
442
+ color: #D1D5DB;
443
+ }
444
+
445
+ &.today {
446
+ font-weight: 600;
447
+ color: #F59100;
448
+ background: transparent;
449
+
450
+ &::after {
451
+ content: '';
452
+ position: absolute;
453
+ bottom: 4px;
454
+ left: 50%;
455
+ transform: translateX(-50%);
456
+ width: 4px;
457
+ height: 4px;
458
+ background: #F59100;
459
+ border-radius: 50%;
460
+ }
461
+ }
462
+
463
+ &:hover:not(.disabled):not(.selected):not(.range-start):not(.range-end):not(.in-range) {
464
+ background: #FEF4E6;
465
+ border-radius: 50%;
466
+ }
467
+
468
+ &.in-range:hover:not(.disabled):not(.range-start):not(.range-end) {
469
+ position: relative;
470
+ background: transparent;
471
+
472
+ &::before {
473
+ content: '';
474
+ position: absolute;
475
+ left: 0;
476
+ top: 0;
477
+ bottom: 0;
478
+ right: 0;
479
+ background: #FEF4E6;
480
+ z-index: -1;
481
+ border-radius: 0;
482
+ }
483
+
484
+ &::after {
485
+ content: '';
486
+ position: absolute;
487
+ left: 50%;
488
+ top: 50%;
489
+ transform: translate(-50%, -50%);
490
+ width: 100%;
491
+ height: 100%;
492
+ background: #FEF4E6;
493
+ border-radius: 50%;
494
+ z-index: 0;
495
+ }
496
+
497
+ span {
498
+ position: relative;
499
+ z-index: 1;
500
+ color: #F59100;
501
+ }
502
+ }
503
+
504
+ &.in-range:not(.disabled):not(.range-start):not(.range-end) {
505
+ background: #FEF4E6;
506
+ color: #F59100;
507
+ border-radius: 0;
508
+ }
509
+
510
+ // Border radius for in-range days at row edges
511
+ &.in-range:not(.disabled):not(.range-start):not(.range-end):nth-child(7n+8) {
512
+ border-radius: 50% 0 0 50%;
513
+ }
514
+
515
+ &.in-range:not(.disabled):not(.range-start):not(.range-end):nth-child(7n+14) {
516
+ border-radius: 0 50% 50% 0;
517
+ }
518
+
519
+ &.in-range:not(.disabled):not(.range-start):not(.range-end):nth-child(7n+8):nth-child(7n+14) {
520
+ border-radius: 50%;
521
+ }
522
+
523
+ &.range-start:not(.disabled) {
524
+ position: relative;
525
+ background: transparent;
526
+ color: white;
527
+ font-weight: 600;
528
+ z-index: 2;
529
+
530
+ &::before {
531
+ content: '';
532
+ position: absolute;
533
+ left: 0;
534
+ top: 0;
535
+ bottom: 0;
536
+ right: 0;
537
+ background: #FEF4E6;
538
+ z-index: -1;
539
+ border-radius: 50% 0 0 50%;
540
+ }
541
+
542
+ &::after {
543
+ content: '';
544
+ position: absolute;
545
+ left: 50%;
546
+ top: 50%;
547
+ transform: translate(-50%, -50%);
548
+ width: 100%;
549
+ height: 100%;
550
+ background: #F59100;
551
+ border-radius: 50%;
552
+ z-index: 1;
553
+ }
554
+
555
+ span {
556
+ position: relative;
557
+ z-index: 2;
558
+ }
559
+
560
+ &.range-end::before {
561
+ border-radius: 50%;
562
+ }
563
+ }
564
+
565
+ &.range-end:not(.disabled) {
566
+ position: relative;
567
+ background: transparent;
568
+ color: white;
569
+ font-weight: 600;
570
+ z-index: 2;
571
+
572
+ &::before {
573
+ content: '';
574
+ position: absolute;
575
+ left: 0;
576
+ top: 0;
577
+ bottom: 0;
578
+ right: 0;
579
+ background: #FEF4E6;
580
+ z-index: -1;
581
+ border-radius: 0 50% 50% 0;
582
+ }
583
+
584
+ &::after {
585
+ content: '';
586
+ position: absolute;
587
+ left: 50%;
588
+ top: 50%;
589
+ transform: translate(-50%, -50%);
590
+ width: 100%;
591
+ height: 100%;
592
+ background: #F59100;
593
+ border-radius: 50%;
594
+ z-index: 1;
595
+ }
596
+
597
+ span {
598
+ position: relative;
599
+ z-index: 2;
600
+ }
601
+
602
+ &.range-start::before {
603
+ border-radius: 50%;
604
+ }
605
+ }
606
+
607
+ &.range-start.in-range:not(.disabled) {
608
+ position: relative;
609
+
610
+ &::before {
611
+ content: '';
612
+ position: absolute;
613
+ left: 50%;
614
+ top: 0;
615
+ bottom: 0;
616
+ right: -2px;
617
+ background: #FEF4E6;
618
+ z-index: -1;
619
+ }
620
+ }
621
+
622
+ &.range-end.in-range:not(.disabled) {
623
+ position: relative;
624
+
625
+ &::before {
626
+ content: '';
627
+ position: absolute;
628
+ right: 50%;
629
+ top: 0;
630
+ bottom: 0;
631
+ left: -2px;
632
+ background: #FEF4E6;
633
+ z-index: -1;
634
+ }
635
+ }
636
+
637
+ // Single date selection style
638
+ &.selected:not(.range-start):not(.range-end) {
639
+ background: #F59100;
640
+ color: white;
641
+ font-weight: 600;
642
+ border-radius: 50%;
643
+ }
644
+
645
+ &.disabled {
646
+ color: #E5E7EB;
647
+ cursor: not-allowed;
648
+ pointer-events: none;
649
+ }
650
+ }
651
+ }
652
+ }
653
+
654
+ // Footer (only for range mode)
655
+ .footer {
656
+ display: flex;
657
+ align-items: center;
658
+ justify-content: space-between;
659
+ padding: 1rem;
660
+ border-top: 1px solid #E5E7EB;
661
+
662
+ .selected-dates {
663
+ display: flex;
664
+ align-items: center;
665
+ gap: 0.75rem;
666
+
667
+ .date-display {
668
+ display: flex;
669
+ align-items: center;
670
+ gap: 0.5rem;
671
+ padding: 0.5rem 0.75rem;
672
+ background: white;
673
+ border: 1px solid #E5E7EB;
674
+ border-radius: 6px;
675
+ font-size: 0.8125rem;
676
+ color: #6B7280;
677
+
678
+ svg {
679
+ flex-shrink: 0;
680
+ color: #9CA3AF;
681
+ }
682
+
683
+ .date-text {
684
+ font-weight: 400;
685
+ white-space: nowrap;
686
+ user-select: none;
687
+ }
688
+ }
689
+
690
+ .date-separator {
691
+ color: #9CA3AF;
692
+ font-weight: 400;
693
+ font-size: 0.875rem;
694
+ }
695
+ }
696
+
697
+ .action-buttons {
698
+ display: flex;
699
+ gap: 0.75rem;
700
+
701
+ button {
702
+ padding: 0.625rem 1.75rem;
703
+ border-radius: 8px;
704
+ font-size: 0.875rem;
705
+ font-weight: 500;
706
+ font-family: 'Quicksand', sans-serif;
707
+ cursor: pointer;
708
+ transition: all 0.15s ease;
709
+ border: none;
710
+ outline: none;
711
+
712
+ &:focus-visible {
713
+ outline: 2px solid rgba(245, 145, 0, 0.3);
714
+ outline-offset: 2px;
715
+ }
716
+ }
717
+
718
+ .btn-cancel {
719
+ background: white;
720
+ color: #6B7280;
721
+ border: 1px solid #D1D5DB;
722
+
723
+ &:hover {
724
+ background: #F9FAFB;
725
+ border-color: #9CA3AF;
726
+ }
727
+ }
728
+
729
+ .btn-apply {
730
+ background: #F59100;
731
+ color: white;
732
+ border: 1px solid #F59100;
733
+
734
+ &:hover {
735
+ background: #E08500;
736
+ border-color: #E08500;
737
+ }
738
+
739
+ &:active {
740
+ background: #CC7A00;
741
+ border-color: #CC7A00;
742
+ }
743
+ }
744
+ }
745
+ }
746
+
747
+ // Responsive styles
748
+ @media (max-width: 768px) {
749
+ .date-picker-content {
750
+ flex-direction: column;
751
+ }
752
+
753
+ // Hide filter sidebar on mobile
754
+ .filter-sidebar {
755
+ display: none;
756
+ }
757
+
758
+ .calendars-container {
759
+ padding: 0.75rem;
760
+ gap: 0;
761
+ justify-content: center;
762
+
763
+ // Hide the second calendar on mobile (for range mode)
764
+ .calendar:last-child:not(:first-child) {
765
+ display: none;
766
+ }
767
+ }
768
+
769
+ .calendar {
770
+ .calendar-header {
771
+ .month-year-selector {
772
+ flex: 1;
773
+ }
774
+
775
+ .month-year {
776
+ min-width: auto;
777
+ font-size: 0.875rem;
778
+ padding: 0.25rem 0.375rem;
779
+ }
780
+
781
+ .nav-button {
782
+ width: 28px;
783
+ height: 28px;
784
+
785
+ svg {
786
+ width: 10px;
787
+ height: 10px;
788
+ }
789
+ }
790
+
791
+ .nav-button-placeholder {
792
+ display: none;
793
+ }
794
+ }
795
+
796
+ .month-year-picker {
797
+ min-width: 240px;
798
+ padding: 0.75rem;
799
+
800
+ .picker-section {
801
+ .picker-title {
802
+ font-size: 0.7rem;
803
+ }
804
+ }
805
+
806
+ .months-grid {
807
+ grid-template-columns: repeat(3, 1fr);
808
+ gap: 0.25rem;
809
+
810
+ .month-option {
811
+ padding: 0.4rem;
812
+ font-size: 0.7rem;
813
+ }
814
+ }
815
+
816
+ .years-grid {
817
+ grid-template-columns: repeat(3, 1fr);
818
+ gap: 0.25rem;
819
+ max-height: 150px;
820
+
821
+ .year-option {
822
+ padding: 0.4rem;
823
+ font-size: 0.7rem;
824
+ }
825
+ }
826
+ }
827
+
828
+ .calendar-grid {
829
+ gap: 2px 0;
830
+
831
+ .calendar-day {
832
+ width: 30px;
833
+ height: 30px;
834
+ font-size: 0.75rem;
835
+ }
836
+
837
+ .weekday-header {
838
+ font-size: 0.65rem;
839
+ }
840
+ }
841
+ }
842
+
843
+ .footer {
844
+ flex-direction: column;
845
+ gap: 0.75rem;
846
+ padding: 0.75rem;
847
+
848
+ .selected-dates {
849
+ width: 100%;
850
+ justify-content: center;
851
+ flex-wrap: wrap;
852
+ gap: 0.5rem;
853
+
854
+ .date-display {
855
+ font-size: 0.7rem;
856
+ padding: 0.35rem 0.5rem;
857
+
858
+ svg {
859
+ width: 12px;
860
+ height: 12px;
861
+ }
862
+ }
863
+
864
+ .date-separator {
865
+ font-size: 0.7rem;
866
+ }
867
+ }
868
+
869
+ .action-buttons {
870
+ width: 100%;
871
+ gap: 0.5rem;
872
+
873
+ button {
874
+ flex: 1;
875
+ padding: 0.625rem 0.75rem;
876
+ font-size: 0.75rem;
877
+ }
878
+ }
879
+ }
880
+
881
+ .date-picker-dropdown {
882
+ width: 280px !important;
883
+ max-width: calc(100vw - 2rem);
884
+ max-height: calc(100vh - 4rem);
885
+ overflow-y: auto;
886
+
887
+ &.range-mode {
888
+ width: 280px !important;
889
+ }
890
+ }
891
+ }
892
+
893
+ // Extra small devices
894
+ @media (max-width: 480px) {
895
+ .calendars-container {
896
+ padding: 0.5rem;
897
+ }
898
+
899
+ .calendar {
900
+ .calendar-header {
901
+ .month-year {
902
+ font-size: 0.8125rem;
903
+ padding: 0.2rem 0.3rem;
904
+ }
905
+
906
+ .nav-button {
907
+ width: 26px;
908
+ height: 26px;
909
+
910
+ svg {
911
+ width: 9px;
912
+ height: 9px;
913
+ }
914
+ }
915
+ }
916
+
917
+ .month-year-picker {
918
+ min-width: 220px;
919
+ padding: 0.625rem;
920
+
921
+ .picker-section {
922
+ margin-bottom: 0.75rem;
923
+
924
+ .picker-title {
925
+ font-size: 0.65rem;
926
+ margin-bottom: 0.375rem;
927
+ }
928
+ }
929
+
930
+ .months-grid {
931
+ gap: 0.2rem;
932
+
933
+ .month-option {
934
+ padding: 0.35rem;
935
+ font-size: 0.65rem;
936
+ }
937
+ }
938
+
939
+ .years-grid {
940
+ gap: 0.2rem;
941
+ max-height: 120px;
942
+
943
+ .year-option {
944
+ padding: 0.35rem;
945
+ font-size: 0.65rem;
946
+ }
947
+ }
948
+ }
949
+
950
+ .calendar-grid {
951
+ gap: 1px 0;
952
+
953
+ .weekday-header {
954
+ font-size: 0.6rem;
955
+ padding: 0.35rem 0;
956
+ }
957
+
958
+ .calendar-day {
959
+ width: 28px;
960
+ height: 28px;
961
+ font-size: 0.7rem;
962
+ }
963
+ }
964
+ }
965
+
966
+ .footer {
967
+ padding: 0.5rem;
968
+ gap: 0.5rem;
969
+
970
+ .selected-dates {
971
+ gap: 0.4rem;
972
+
973
+ .date-display {
974
+ font-size: 0.65rem;
975
+ padding: 0.3rem 0.4rem;
976
+
977
+ svg {
978
+ width: 11px;
979
+ height: 11px;
980
+ }
981
+ }
982
+
983
+ .date-separator {
984
+ font-size: 0.65rem;
985
+ }
986
+ }
987
+
988
+ .action-buttons {
989
+ gap: 0.4rem;
990
+
991
+ button {
992
+ padding: 0.5rem 0.625rem;
993
+ font-size: 0.7rem;
994
+ }
995
+ }
996
+ }
997
+
998
+ .date-picker-dropdown {
999
+ width: 260px !important;
1000
+ max-width: calc(100vw - 1rem);
1001
+ }
1002
+ }