@brickclay-org/ui 0.1.87 → 0.1.89

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.
@@ -0,0 +1,1025 @@
1
+ /* @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); */
2
+
3
+ .calendar-container,
4
+ .calendar-container * {
5
+ font-family: 'Inter', sans-serif !important;
6
+ }
7
+
8
+ /* --------------------------
9
+ CALENDAR CONTAINER
10
+ ---------------------------*/
11
+ .calendar-container {
12
+ position: relative;
13
+ display: inline-block;
14
+ width: 100%;
15
+ }
16
+
17
+ /* --------------------------
18
+ INPUT WRAPPER
19
+ ---------------------------*/
20
+ .input-wrapper {
21
+ position: relative;
22
+ display: flex;
23
+ align-items: center;
24
+ }
25
+
26
+ .calendar-input {
27
+ width: 100%;
28
+ padding: 9px 14px 9px 40px;
29
+ border: 1px solid #ddd;
30
+ border-radius: 8px;
31
+ font-size: 14px;
32
+ cursor: pointer;
33
+ background: #fff;
34
+ transition: all 0.2s;
35
+ }
36
+
37
+ .calendar-input:hover {
38
+ border-color: #999;
39
+ }
40
+
41
+ .calendar-input:focus {
42
+ outline: none;
43
+ border-color: #999;
44
+ /* box-shadow: 0 0 0 3px rgb(106 106 106 / 10%); */
45
+ }
46
+
47
+ .calendar-icon {
48
+ position: absolute;
49
+ left: 12px;
50
+ pointer-events: none;
51
+ font-size: 18px;
52
+ }
53
+
54
+ .clear-btn {
55
+ position: absolute;
56
+ right: 9px;
57
+ background: none;
58
+ border: none;
59
+ font-size: 20px;
60
+ color: #999;
61
+ cursor: pointer;
62
+ padding: 0;
63
+ width: 20px;
64
+ height: 20px;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ line-height: 1;
69
+ transition: color 0.2s;
70
+ top: 8px;
71
+ }
72
+
73
+ .clear-btn:hover {
74
+ color: #333;
75
+ }
76
+
77
+ /* --------------------------
78
+ CALENDAR POPUP
79
+ ---------------------------*/
80
+ .calendar-popup {
81
+ /* Position is owned by whichever render path is active — CDK's overlay pane positions itself
82
+ for the non-inline path (see the component's cdkConnectedOverlay template), and
83
+ .inline-calendar below sets its own position for the inline path. No position/top/left here. */
84
+ width: 320px;
85
+ background: #fff;
86
+ border-radius: 12px;
87
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
88
+ /* padding: 16px; */
89
+ /* Only load-bearing for .inline-calendar (position: relative, normal document flow) — a static
90
+ element's z-index is a no-op, and the non-inline path has no position here at all (see above).
91
+ For that path, stacking is CDK's job: .cdk-overlay-pane defaults to z-index:1000 on its own;
92
+ to go higher, raise it via the `panelClass` input (e.g. panelClass="!z-[1100]"), not here. */
93
+ z-index: 1000;
94
+ animation: slideDown 0.2s ease-out;
95
+ /* CDK's overlay container lives outside .calendar-container, so the inherited font from
96
+ `.calendar-container *` no longer reaches this element in the (non-inline) common case —
97
+ re-declare it unconditionally. */
98
+ font-family: 'Inter', sans-serif;
99
+ /* Only takes effect once max-width:1024px's `overflow: auto` makes this scroll — thin instead
100
+ of the browser's default scrollbar, matching .ranges below. */
101
+ scrollbar-width: thin;
102
+ scrollbar-color: #c1c1c1 transparent;
103
+ }
104
+
105
+ .calendar-popup::-webkit-scrollbar {
106
+ width: 6px;
107
+ }
108
+
109
+ .calendar-popup::-webkit-scrollbar-track {
110
+ background: transparent;
111
+ }
112
+
113
+ .calendar-popup::-webkit-scrollbar-thumb {
114
+ background: #c1c1c1;
115
+ border-radius: 3px;
116
+ }
117
+
118
+ .calendar-popup::-webkit-scrollbar-thumb:hover {
119
+ background: #a8a8a8;
120
+ }
121
+
122
+ .calendar-popup:focus-visible {
123
+ outline: 0 !important;
124
+ }
125
+
126
+ /* Inline Calendar Mode */
127
+ .calendar-popup.inline-calendar {
128
+ position: relative;
129
+ top: 0;
130
+ left: 0;
131
+ width: 100%;
132
+ margin-top: 0;
133
+ animation: none;
134
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
135
+ }
136
+
137
+ .calendar-container.inline-mode {
138
+ display: block;
139
+ width: 100%;
140
+ }
141
+
142
+ /* Increase width for dual calendar */
143
+ .calendar-popup.dual-calendar-mode {
144
+ width: 600px;
145
+ }
146
+
147
+ .calendar-popup.dual-calendar-mode.has-ranges {
148
+ width: 730px;
149
+ }
150
+
151
+ .calendar-popup.has-ranges {
152
+ width: 450px;
153
+ }
154
+
155
+ /* .calendar-popup.dual-calendar-mode.has-ranges .dual-calendar {
156
+ border-left: 1px solid #eee;
157
+ } */
158
+
159
+ /* Vertical placement itself is CDK's job now (see .calendar-popup above) — this only swaps the
160
+ open animation direction to match whichever side CDK actually landed the popup on. */
161
+ .calendar-popup.drop-up {
162
+ animation: slideUp 0.2s ease-out;
163
+ }
164
+
165
+ @keyframes slideDown {
166
+ from {
167
+ opacity: 0;
168
+ transform: translateY(-10px);
169
+ }
170
+
171
+ to {
172
+ opacity: 1;
173
+ transform: translateY(0);
174
+ }
175
+ }
176
+
177
+ @keyframes slideUp {
178
+ from {
179
+ opacity: 0;
180
+ transform: translateY(10px);
181
+ }
182
+
183
+ to {
184
+ opacity: 1;
185
+ transform: translateY(0);
186
+ }
187
+ }
188
+
189
+ /* --------------------------
190
+ RANGES SECTION
191
+ ---------------------------*/
192
+ .ranges {
193
+ display: flex;
194
+ flex-direction: column;
195
+ gap: 4px;
196
+ margin-bottom: 16px;
197
+ padding-bottom: 16px;
198
+ border-bottom: 1px solid #eee;
199
+ /* max-height: 300px; */
200
+ /* overflow-y: auto; */
201
+ min-width: 150px;
202
+ padding-right: 8px;
203
+ scrollbar-width: thin;
204
+ scrollbar-color: #888 #f1f1f1;
205
+ }
206
+
207
+ .range-btn {
208
+ padding: 7px 10px;
209
+ border: 1px solid transparent;
210
+ background: transparent;
211
+ border-radius: 4px;
212
+ cursor: pointer;
213
+ text-align: left;
214
+ font-size: 14px;
215
+ transition: all 0.2s;
216
+ color: #838383;
217
+ font-weight: 500;
218
+ }
219
+
220
+ .range-btn:hover {
221
+ background: #f5f5f5;
222
+ color: #000;
223
+ }
224
+
225
+ .range-btn.active {
226
+ background: #f0f0f0;
227
+ color: #000;
228
+ font-weight: 500;
229
+ }
230
+
231
+ /* --------------------------
232
+ CALENDAR WRAPPER
233
+ ---------------------------*/
234
+ .calendar-wrapper {
235
+ /*width: 100%;*/
236
+ padding: 0 12px 12px 12px;
237
+ /* border-left: 1px solid #eee; */
238
+ }
239
+
240
+ /* --------------------------
241
+ HEADER (Month + Year + Arrows)
242
+ ---------------------------*/
243
+ .header {
244
+ display: flex;
245
+ justify-content: space-between;
246
+ align-items: center;
247
+ padding: 12px 0;
248
+ /* margin-bottom: 8px; */
249
+ /* The bk-month-grid header has no nav-btn children (just centered text) — pin the same
250
+ height as the day/year headers (30px nav-btn + this padding) so it doesn't shrink. */
251
+ min-height: 54px;
252
+ box-sizing: border-box;
253
+ }
254
+
255
+ .month-year {
256
+ font-size: 15px;
257
+ font-weight: 500;
258
+ color: #333;
259
+ flex: 1;
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ /* gap: 4px; */
264
+ text-align: center;
265
+ text-transform: capitalize;
266
+ }
267
+
268
+ /* Clickable month / year labels — open the bk-month-grid / bk-year-grid quick-pick. */
269
+ .bk-month-year-btn {
270
+ @apply bg-transparent border-0 rounded py-1 px-1 cursor-pointer transition-all duration-200;
271
+ font: inherit;
272
+ color: inherit;
273
+ text-transform: inherit;
274
+ }
275
+
276
+ .bk-month-year-btn:hover:not(:disabled) {
277
+ @apply text-black;
278
+ }
279
+
280
+ .bk-month-year-btn:disabled {
281
+ @apply cursor-not-allowed text-[#ccc] opacity-50;
282
+ }
283
+
284
+ .nav-btn {
285
+ background: none;
286
+ border: none;
287
+ font-size: 24px;
288
+ cursor: pointer;
289
+ padding: 11.5px 14px;
290
+ color: #666;
291
+ border-radius: 4px;
292
+ transition: all 0.2s;
293
+ line-height: 1;
294
+ height: 30px;
295
+ width: 30px;
296
+ display: flex;
297
+ justify-content: center;
298
+ align-items: center;
299
+ }
300
+
301
+ .nav-btn:hover {
302
+ background: #f0f0f0;
303
+ color: #000;
304
+ }
305
+
306
+ /* Shared bounding box for every header chevron ("<", ">", "<<", ">>") so the
307
+ single-chevron icons (native 7x12) and double-chevron icons (native 16x16)
308
+ read as the same size instead of the double ones looming larger. */
309
+ .nav-btn img {
310
+ /* width: 9px; */
311
+ /* height: 14px; */
312
+ /* object-fit: contain; */
313
+ max-width: none !important;
314
+ }
315
+
316
+ .nav-btn:disabled {
317
+ cursor: not-allowed;
318
+ opacity: 0.35;
319
+ pointer-events: none;
320
+ }
321
+
322
+ /* --------------------------
323
+ MONTH / YEAR QUICK-PICK GRIDS
324
+ Shown in place of the day table when the header's month or year
325
+ label is clicked. Cell styling mirrors .calendar-day so the picker
326
+ reads as the same control, just at a coarser granularity.
327
+ ---------------------------*/
328
+ /* Wraps a bk-month-grid/bk-year-grid together with its "Today" quick-jump button. Fixed (not min)
329
+ height, matching the day table's rendered height (thead + 6 rows) — so switching between
330
+ the day/month/year views never resizes the popup. The grid takes the remaining space
331
+ above the button instead of the button adding extra height on top. */
332
+ .bk-grid-picker {
333
+ @apply flex flex-col box-border h-[256px];
334
+ }
335
+
336
+ /* Both grids: 3 cols x 4 rows (12 months / a 12-year page), same orientation. Rows size to
337
+ their own (short) content and pack tightly at the top instead of stretching/spreading to
338
+ fill the box — cells stay short like day cells, and the "Today" button sits right under
339
+ the packed rows instead of being pushed to the bottom by spread-out gaps. */
340
+ .bk-month-grid,
341
+ .bk-year-grid {
342
+ @apply grid grid-cols-3 auto-rows-min shrink-0 gap-[18px];
343
+ }
344
+
345
+ /* "Today" quick-jump — full width, sits right under the grid; any leftover height in the
346
+ fixed-height .bk-grid-picker box collapses below it instead of spreading through the grid. */
347
+ .bk-today-btn {
348
+ @apply shrink-0 w-full p-2 mt-2 border border-[#eee] rounded-md bg-transparent text-[#333] text-[13px] font-medium cursor-pointer transition-all duration-200;
349
+ }
350
+
351
+ .bk-today-btn:hover:not(:disabled) {
352
+ @apply bg-[#efefef] text-black;
353
+ }
354
+
355
+ .bk-today-btn:disabled {
356
+ @apply text-[#ddd] cursor-not-allowed opacity-50;
357
+ }
358
+
359
+ /* Short, pill-like cells so the picker reads like the day-grid's cells, just at a
360
+ coarser granularity. */
361
+ .bk-month-cell,
362
+ .bk-year-cell {
363
+ @apply flex items-center justify-center py-2.5 px-1 text-[13px] font-medium text-[#333] bg-transparent border-0 rounded-md cursor-pointer text-center transition-all duration-200;
364
+ }
365
+
366
+ /* Excludes .active/.current so hovering a selected or today cell can't override its own
367
+ look — without :not(.active), :hover:not(:disabled) actually outranks .active alone on
368
+ specificity (three class-level selectors vs two), so hovering a selected month/year briefly
369
+ turned it back to the plain hover gray, losing the black "selected" indicator. */
370
+ .bk-month-cell:hover:not(:disabled):not(.active):not(.current),
371
+ .bk-year-cell:hover:not(:disabled):not(.active):not(.current) {
372
+ @apply bg-[#efefef] text-black;
373
+ }
374
+
375
+ .bk-month-cell.active,
376
+ .bk-year-cell.active {
377
+ @apply bg-black text-white font-semibold;
378
+ }
379
+
380
+ /* Today's month / year — same gray-background "current" marker as .calendar-day.today gives the
381
+ day grid, independent of .active (the picked/displayed month or year). */
382
+ .bk-month-cell.current:not(.active),
383
+ .bk-year-cell.current:not(.active) {
384
+ @apply bg-[#e5e4e4] font-semibold;
385
+ }
386
+
387
+ .bk-month-cell:disabled,
388
+ .bk-year-cell:disabled {
389
+ @apply text-[#ddd] cursor-not-allowed opacity-50;
390
+ }
391
+
392
+ /* --------------------------
393
+ CALENDAR TABLE
394
+ ---------------------------*/
395
+ .calendar-table {
396
+ width: 100%;
397
+ border-collapse: collapse;
398
+ text-align: center;
399
+ }
400
+
401
+ .weekday-header {
402
+ font-size: 12px;
403
+ color: #7e7e7e;
404
+ font-weight: 600;
405
+ padding: 8px 4px;
406
+ /*text-transform: uppercase;*/
407
+ letter-spacing: 0.3px;
408
+ }
409
+
410
+ /* --------------------------
411
+ DATE CELLS
412
+ ---------------------------*/
413
+ .calendar-day {
414
+ padding: 8px 4px;
415
+ font-size: 14px;
416
+ cursor: pointer;
417
+ border-radius: 6px;
418
+ transition: all 0.2s;
419
+ position: relative;
420
+ color: #333;
421
+ font-weight: 500;
422
+ line-height: 1.5;
423
+ /* text-align: center; */
424
+ /* width: 40px; */
425
+ /* height: 40px; */
426
+ /* display: flex; */
427
+ /* align-items: center; */
428
+ /* justify-content: center; */
429
+ }
430
+
431
+ .calendar-day:hover:not(.disabled):not(.other-month) {
432
+ background: #efefef;
433
+ color: #000;
434
+ }
435
+
436
+ .calendar-day.other-month {
437
+ color: #ccc;
438
+ cursor: default;
439
+ }
440
+
441
+ .calendar-day.disabled {
442
+ color: #ddd;
443
+ cursor: not-allowed;
444
+ opacity: 0.5;
445
+ }
446
+
447
+ /* --------------------------
448
+ SELECTED DATE (Active) - Start and End dates
449
+ ---------------------------*/
450
+ .calendar-day.active {
451
+ background: #000 !important;
452
+ color: white !important;
453
+ font-weight: 600;
454
+ /* border-radius: 50%;
455
+ width: 32px;
456
+ height: 32px;
457
+ display: flex;
458
+ align-items: center;
459
+ justify-content: center;
460
+ margin: 0 auto; */
461
+ }
462
+
463
+ /* --------------------------
464
+ TODAY DATE
465
+ ---------------------------*/
466
+ .calendar-day.today {
467
+ /* border: 2px solid #007bff; */
468
+ font-weight: 600;
469
+ }
470
+
471
+ .calendar-day.today:not(.active) {
472
+ background: #e5e4e4;
473
+ /* color: #007bff; */
474
+ }
475
+
476
+ .calendar-day.active:hover {
477
+ background: #000 !important;
478
+ }
479
+
480
+ .calendar-day.today.disabled,
481
+ .bk-month-cell.current:disabled,
482
+ .bk-year-cell.current:disabled {
483
+ color: #a9a9a9;
484
+ }
485
+
486
+ /* --------------------------
487
+ IN-RANGE DATES - Dates between start and end
488
+ ---------------------------*/
489
+ .calendar-day.in-range {
490
+ background: #f5f5f5;
491
+ color: #333;
492
+ border-radius: 0;
493
+ position: relative;
494
+ }
495
+
496
+ .calendar-day.in-range:hover {
497
+ background: #e8e8e8;
498
+ }
499
+
500
+ /* Make in-range dates span full width */
501
+ .calendar-day.in-range::before {
502
+ content: '';
503
+ position: absolute;
504
+ left: 0;
505
+ right: 0;
506
+ top: 0;
507
+ bottom: 0;
508
+ background: #f5f5f5;
509
+ z-index: -1;
510
+ }
511
+
512
+ .calendar-day.in-range:hover::before {
513
+ background: #e8e8e8;
514
+ }
515
+
516
+ /* --------------------------
517
+ MULTI-SELECTED DATES
518
+ ---------------------------*/
519
+ .calendar-day.multi-selected {
520
+ background: #4caf50;
521
+ color: white;
522
+ font-weight: 600;
523
+ border-radius: 6px;
524
+ }
525
+
526
+ .calendar-day.multi-selected:hover {
527
+ background: #45a049;
528
+ }
529
+
530
+ /* --------------------------
531
+ DUAL CALENDAR
532
+ ---------------------------*/
533
+ .dual-calendar {
534
+ display: flex;
535
+ /* gap: 24px; */
536
+ width: 100%;
537
+ /* border-left: 1px solid #eee; */
538
+ }
539
+
540
+ .calendar-left,
541
+ .calendar-right {
542
+ flex: 1;
543
+ min-width: 0;
544
+ padding: 0 12px 12px;
545
+ }
546
+
547
+ /* When ranges are shown, adjust layout */
548
+ .calendar-popup.has-ranges {
549
+ display: flex;
550
+ flex-direction: row;
551
+ /* gap: 16px; */
552
+ /* padding: 20px; */
553
+ }
554
+
555
+ .calendar-popup.has-ranges .ranges {
556
+ margin-bottom: 0;
557
+ padding-bottom: 0;
558
+ border-bottom: none;
559
+ /* border-right: 1px solid #993535; */
560
+ padding: 10px;
561
+ }
562
+
563
+ .calendar-popup.has-ranges .dual-calendar,
564
+ .calendar-popup.has-ranges .calendar-wrapper {
565
+ flex: 1;
566
+ }
567
+
568
+ .calendar-right .header {
569
+ justify-content: space-between;
570
+ }
571
+
572
+ .calendar-right .header .month-year {
573
+ text-align: center;
574
+ flex: 1;
575
+ }
576
+
577
+ /* --------------------------
578
+ TIMEPICKER SECTION
579
+ ---------------------------*/
580
+ .timepicker-section {
581
+ margin-top: 12px;
582
+ padding-top: 12px;
583
+ /* padding-bottom: 16px; */
584
+ border-top: 1px solid #eee;
585
+ }
586
+
587
+ .timepicker-label {
588
+ font-size: 12px;
589
+ font-weight: 500;
590
+ color: #000000;
591
+ margin-bottom: 4px;
592
+ /* text-transform: uppercase; */
593
+ letter-spacing: -0.28px;
594
+ }
595
+
596
+ /* .timepicker-controls {
597
+ display: flex;
598
+ justify-content: center;
599
+ } */
600
+
601
+ /* --------------------------
602
+ CUSTOM TIME PICKER
603
+ ---------------------------*/
604
+ .custom-time-picker {
605
+ display: flex;
606
+ flex-direction: column;
607
+ gap: 8px;
608
+ align-items: start;
609
+ }
610
+
611
+ .time-input-group {
612
+ display: flex;
613
+ align-items: center;
614
+ justify-content: center;
615
+ /*width: 100%;*/
616
+ gap: 8px;
617
+ background: #f8f9fa;
618
+ padding: 12px;
619
+ border-radius: 8px;
620
+ border: 1px solid #e0e0e0;
621
+ }
622
+
623
+ .time-control {
624
+ display: flex;
625
+ flex-direction: column;
626
+ align-items: center;
627
+ /* gap: 4px; */
628
+ }
629
+
630
+ .time-btn {
631
+ background: #fff;
632
+ border: 1px solid #ddd;
633
+ width: 28px;
634
+ height: 20px;
635
+ cursor: pointer;
636
+ font-size: 10px;
637
+ color: #666;
638
+ border-radius: 4px;
639
+ transition: all 0.2s;
640
+ display: flex;
641
+ align-items: center;
642
+ justify-content: center;
643
+ padding: 0;
644
+ line-height: 1;
645
+ }
646
+
647
+ .time-btn:hover {
648
+ background: #e4e4e4;
649
+ color: white;
650
+ border-color: #e4e4e4;
651
+ }
652
+
653
+ .time-btn.up {
654
+ border-bottom-left-radius: 0;
655
+ border-bottom-right-radius: 0;
656
+ border-bottom: none;
657
+ }
658
+
659
+ .time-btn.down {
660
+ border-top-left-radius: 0;
661
+ border-top-right-radius: 0;
662
+ border-top: none;
663
+ }
664
+
665
+ .time-input {
666
+ width: 40px;
667
+ height: 32px;
668
+ text-align: center;
669
+ border: 1px solid #ddd;
670
+ border-radius: 4px;
671
+ font-size: 16px;
672
+ font-weight: 600;
673
+ background: #fff;
674
+ color: #333;
675
+ }
676
+
677
+ .time-separator {
678
+ font-size: 18px;
679
+ font-weight: 600;
680
+ color: #666;
681
+ margin: 0 2px;
682
+ }
683
+
684
+ .ampm-control {
685
+ display: flex;
686
+ flex-direction: column;
687
+ gap: 4px;
688
+ margin-left: 8px;
689
+ }
690
+
691
+ .ampm-btn {
692
+ padding: 6px 12px;
693
+ border: 1px solid #ddd;
694
+ background: #fff;
695
+ border-radius: 4px;
696
+ cursor: pointer;
697
+ font-size: 12px;
698
+ font-weight: 600;
699
+ color: #666;
700
+ transition: all 0.2s;
701
+ min-width: 45px;
702
+ }
703
+
704
+ .ampm-btn:hover {
705
+ background: #f0f0f0;
706
+ }
707
+
708
+ .ampm-btn.active {
709
+ background: #000;
710
+ color: white;
711
+ border-color: #000;
712
+ }
713
+
714
+ .html5-time-input {
715
+ margin-top: 8px;
716
+ padding: 8px;
717
+ border: 1px solid #ddd;
718
+ border-radius: 6px;
719
+ font-size: 14px;
720
+ width: 100%;
721
+ max-width: 120px;
722
+ }
723
+
724
+ /* --------------------------
725
+ FOOTER (Apply/Cancel Buttons)
726
+ ---------------------------*/
727
+ .footer {
728
+ padding: 12px;
729
+ /* margin-top: 12px; */
730
+ display: flex;
731
+ justify-content: flex-end;
732
+ gap: 8px;
733
+ border-top: 1px solid #eee;
734
+ /* padding-top: 16px; */
735
+ /*width: 100%;*/
736
+ }
737
+
738
+ .btn-cancel,
739
+ .btn-apply {
740
+ padding: 8px 16px;
741
+ border: none;
742
+ border-radius: 4px;
743
+ font-size: 14px;
744
+ font-weight: 500;
745
+ cursor: pointer;
746
+ transition: all 0.2s;
747
+ min-width: 80px;
748
+ }
749
+
750
+ .btn-cancel {
751
+ background: #fff;
752
+ color: #666;
753
+ border: 1px solid #ddd;
754
+ }
755
+
756
+ /* .btn-cancel:hover {
757
+ background: #f5f5f5;
758
+ border-color: #bbb;
759
+ } */
760
+
761
+ .btn-apply {
762
+ background: #000;
763
+ color: #fff;
764
+ }
765
+
766
+ /* .btn-apply:hover {
767
+ background: #333;
768
+ } */
769
+
770
+ .btn-apply:active {
771
+ transform: translateY(0);
772
+ }
773
+
774
+ /* --------------------------
775
+ RESPONSIVE DESIGN
776
+ ---------------------------*/
777
+ @media (max-width: 576px) {
778
+ .calendar-popup.dual-calendar-mode {
779
+ max-width: 300px;
780
+ }
781
+ }
782
+
783
+ @media (max-width: 768px) {
784
+ .dual-calendar {
785
+ flex-direction: column;
786
+ }
787
+
788
+ /* .calendar-popup.dual-calendar-mode.append-to-body {
789
+ max-width: 350px;
790
+ } */
791
+ }
792
+
793
+ @media (min-width: 577px) and (max-width: 1024px) {
794
+ .calendar-popup.dual-calendar-mode {
795
+ max-width: 500px;
796
+ }
797
+ }
798
+
799
+
800
+ /* @media (min-width: 1025px) {
801
+ .calendar-popup.dual-calendar-mode.append-to-body {
802
+ max-width: 600px;
803
+ }
804
+ } */
805
+
806
+ @media (max-width: 1024px) {
807
+ .calendar-popup {
808
+ width: 100%;
809
+ max-width: 320px;
810
+ max-height: 300px;
811
+ overflow: auto;
812
+ }
813
+
814
+ .calendar-popup.dual-calendar-mode {
815
+ width: 100%;
816
+ max-width: 100%;
817
+ }
818
+
819
+
820
+ .calendar-popup.has-ranges {
821
+ flex-direction: column;
822
+ }
823
+
824
+ .calendar-popup.has-ranges .ranges {
825
+ border-right: none;
826
+ border-bottom: 1px solid #eee;
827
+ padding-right: 0;
828
+ margin-right: 0;
829
+ padding-bottom: 16px;
830
+ margin-bottom: 16px;
831
+ }
832
+
833
+ .time-input-group {
834
+ flex-wrap: wrap;
835
+ justify-content: center;
836
+ }
837
+ }
838
+
839
+ /* --------------------------
840
+ SCROLLBAR STYLING
841
+ ---------------------------*/
842
+ .ranges::-webkit-scrollbar {
843
+ width: 6px;
844
+ }
845
+
846
+ .ranges::-webkit-scrollbar-track {
847
+ background: #f1f1f1;
848
+ border-radius: 3px;
849
+ }
850
+
851
+ .ranges::-webkit-scrollbar-thumb {
852
+ background: #888;
853
+ border-radius: 3px;
854
+ }
855
+
856
+ .ranges::-webkit-scrollbar-thumb:hover {
857
+ background: #555;
858
+ }
859
+
860
+ .w-100 {
861
+ width: 100%;
862
+ }
863
+
864
+ .flex-grow-1 {
865
+ flex-grow: 1;
866
+ }
867
+
868
+ .calendar-input.calendar-input-has-error {
869
+ @apply border-[#d11e14];
870
+ }
871
+
872
+ .calendar-input:disabled {
873
+ cursor: not-allowed;
874
+ border-color: rgb(227 227 231);
875
+ background-color: rgb(244 244 246);
876
+ color: rgb(161 163 174);
877
+ }
878
+
879
+ .btn-apply:disabled {
880
+ cursor: not-allowed !important;
881
+ opacity: 0.7;
882
+ }
883
+
884
+ .calendar-day.calendar-day-keyboard-focus:not(.disabled):not(.other-month) {
885
+ outline: 0px solid #000;
886
+ /* outline-offset: 0.5px; */
887
+ }
888
+
889
+ /* --------------------------
890
+ COMPACT VARIANT
891
+ Opt-in via [compact]="true". All rules are scoped to
892
+ .calendar-popup.compact so the default layout is never affected.
893
+ ---------------------------*/
894
+ .calendar-popup.compact {
895
+ width: 240px;
896
+ }
897
+
898
+ .calendar-popup.compact.has-ranges {
899
+ width: 380px;
900
+ }
901
+
902
+ .calendar-popup.compact.dual-calendar-mode {
903
+ width: 480px;
904
+ }
905
+
906
+ .calendar-popup.compact.dual-calendar-mode.has-ranges {
907
+ width: 600px;
908
+ }
909
+
910
+ /* Header */
911
+ .calendar-popup.compact .header {
912
+ padding: 8px 0;
913
+ min-height: 40px;
914
+ }
915
+
916
+ .calendar-popup.compact .month-year {
917
+ font-size: 13px;
918
+ }
919
+
920
+ .calendar-popup.compact .nav-btn {
921
+ height: 24px;
922
+ width: 24px;
923
+ padding: 6px 8px;
924
+ }
925
+
926
+ /* Wrapper padding */
927
+ .calendar-popup.compact .calendar-wrapper {
928
+ padding: 0 8px 8px 8px;
929
+ }
930
+
931
+ .calendar-popup.compact .calendar-left,
932
+ .calendar-popup.compact .calendar-right {
933
+ padding: 0 8px 8px;
934
+ }
935
+
936
+ /* Weekday + day cells */
937
+ .calendar-popup.compact .weekday-header {
938
+ font-size: 11px;
939
+ padding: 4px 2px;
940
+ }
941
+
942
+ .calendar-popup.compact .calendar-day {
943
+ font-size: 12px;
944
+ padding: 5px 2px;
945
+ line-height: 1.3;
946
+ }
947
+
948
+ /* Ranges */
949
+ .calendar-popup.compact .ranges {
950
+ min-width: 120px;
951
+ gap: 2px;
952
+ margin-bottom: 8px;
953
+ padding-bottom: 8px;
954
+ }
955
+
956
+ .calendar-popup.compact.has-ranges .ranges {
957
+ padding: 6px;
958
+ }
959
+
960
+ .calendar-popup.compact .range-btn {
961
+ font-size: 12px;
962
+ padding: 5px 8px;
963
+ }
964
+
965
+ /* Timepicker */
966
+ .calendar-popup.compact .timepicker-section {
967
+ margin-top: 8px;
968
+ padding-top: 8px;
969
+ }
970
+
971
+ .calendar-popup.compact .timepicker-label {
972
+ font-size: 11px;
973
+ }
974
+
975
+ /* Footer */
976
+ .calendar-popup.compact .footer {
977
+ padding: 8px;
978
+ gap: 6px;
979
+ }
980
+
981
+ .calendar-popup.compact .btn-cancel,
982
+ .calendar-popup.compact .btn-apply {
983
+ font-size: 11px;
984
+ padding: 6px 12px;
985
+ min-width: 64px;
986
+ }
987
+
988
+ /* Month / year quick-pick */
989
+ .calendar-popup.compact .bk-month-year-btn {
990
+ @apply text-[13px] py-px px-1;
991
+ }
992
+
993
+ .calendar-popup.compact .nav-btn img {
994
+ width: 12px;
995
+ height: 8px;
996
+ }
997
+
998
+ .calendar-popup.compact .bk-nav-btn-year img {
999
+ width: 12px;
1000
+ height: 12px;
1001
+ }
1002
+
1003
+ .calendar-popup.compact .bk-grid-picker {
1004
+ /* Matches the compact day table's rendered height (thead + 6 rows). */
1005
+ @apply h-[178px];
1006
+ /* Unlike the default size — where the month/year grid's natural height already fills its
1007
+ 256px box almost exactly — compact's smaller gap/cell padding renders noticeably shorter
1008
+ than 178px. Top-packing (the base .bk-grid-picker behaviour) then leaves an ugly empty band
1009
+ dangling below the Today button. Center the grid + button in the leftover space instead. */
1010
+ @apply justify-center;
1011
+ }
1012
+
1013
+ .calendar-popup.compact .bk-month-grid,
1014
+ .calendar-popup.compact .bk-year-grid {
1015
+ @apply gap-1;
1016
+ }
1017
+
1018
+ .calendar-popup.compact .bk-month-cell,
1019
+ .calendar-popup.compact .bk-year-cell {
1020
+ @apply text-[11px] py-1.5 px-0.5;
1021
+ }
1022
+
1023
+ .calendar-popup.compact .bk-today-btn {
1024
+ @apply text-[11px] p-[5px];
1025
+ }