@dodlhuat/basix 1.4.1 → 1.4.3

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 (90) hide show
  1. package/README.md +38 -1
  2. package/css/calendar.scss +4 -3
  3. package/css/code-viewer.scss +1 -1
  4. package/css/datepicker.scss +83 -70
  5. package/css/editor.scss +2 -1
  6. package/css/flyout-menu.scss +2 -1
  7. package/css/form.scss +11 -32
  8. package/css/mixins.scss +25 -0
  9. package/css/range-slider.scss +63 -6
  10. package/css/stepper.scss +2 -1
  11. package/css/style.css +124 -71
  12. package/css/style.css.map +1 -1
  13. package/css/style.min.css +1 -1
  14. package/css/style.min.css.map +1 -1
  15. package/css/timepicker.scss +1 -1
  16. package/css/virtual-dropdown.scss +6 -16
  17. package/js/bottom-sheet.d.ts +3 -5
  18. package/js/bottom-sheet.js +39 -58
  19. package/js/calendar.d.ts +1 -2
  20. package/js/calendar.js +77 -84
  21. package/js/carousel.d.ts +1 -1
  22. package/js/carousel.js +22 -14
  23. package/js/chart.d.ts +1 -1
  24. package/js/chart.js +104 -65
  25. package/js/code-viewer.d.ts +1 -1
  26. package/js/code-viewer.js +7 -18
  27. package/js/color-picker.d.ts +2 -2
  28. package/js/color-picker.js +20 -22
  29. package/js/context-menu.d.ts +1 -1
  30. package/js/context-menu.js +10 -12
  31. package/js/datepicker.d.ts +14 -3
  32. package/js/datepicker.js +180 -99
  33. package/js/dropdown.d.ts +1 -1
  34. package/js/dropdown.js +4 -5
  35. package/js/editor.d.ts +1 -1
  36. package/js/editor.js +30 -34
  37. package/js/file-uploader.d.ts +2 -9
  38. package/js/file-uploader.js +57 -86
  39. package/js/flyout-menu.d.ts +3 -3
  40. package/js/flyout-menu.js +20 -22
  41. package/js/gallery.d.ts +1 -2
  42. package/js/gallery.js +14 -20
  43. package/js/group-picker.d.ts +1 -1
  44. package/js/group-picker.js +22 -29
  45. package/js/lightbox.d.ts +2 -2
  46. package/js/lightbox.js +28 -27
  47. package/js/listeners.d.ts +7 -0
  48. package/js/listeners.js +14 -0
  49. package/js/modal.d.ts +2 -1
  50. package/js/modal.js +13 -20
  51. package/js/popover.d.ts +2 -2
  52. package/js/popover.js +42 -37
  53. package/js/position.js +3 -5
  54. package/js/push-menu.d.ts +2 -0
  55. package/js/push-menu.js +21 -15
  56. package/js/range-slider.d.ts +15 -1
  57. package/js/range-slider.js +67 -7
  58. package/js/scroll.js +4 -7
  59. package/js/scrollbar.d.ts +3 -3
  60. package/js/scrollbar.js +39 -42
  61. package/js/select.d.ts +1 -1
  62. package/js/select.js +19 -23
  63. package/js/sidebar-nav.d.ts +1 -1
  64. package/js/sidebar-nav.js +13 -9
  65. package/js/stepper.d.ts +1 -1
  66. package/js/stepper.js +9 -11
  67. package/js/table.d.ts +1 -1
  68. package/js/table.js +24 -23
  69. package/js/tabs.d.ts +1 -1
  70. package/js/tabs.js +10 -17
  71. package/js/theme.d.ts +1 -0
  72. package/js/theme.js +6 -15
  73. package/js/timepicker.d.ts +8 -6
  74. package/js/timepicker.js +36 -36
  75. package/js/toast.d.ts +2 -1
  76. package/js/toast.js +8 -4
  77. package/js/tooltip.d.ts +1 -4
  78. package/js/tooltip.js +14 -23
  79. package/js/tree.d.ts +0 -1
  80. package/js/tree.js +6 -11
  81. package/js/utils.js +7 -8
  82. package/js/virtual-dropdown.d.ts +1 -1
  83. package/js/virtual-dropdown.js +26 -28
  84. package/package.json +1 -1
  85. package/css/calendar.css +0 -928
  86. package/css/guitar-chords.css +0 -251
  87. package/js/form-builder.js +0 -107
  88. package/js/guitar-chords.js +0 -268
  89. package/js/lazy-loader.js +0 -121
  90. package/js/request.js +0 -51
package/css/calendar.css DELETED
@@ -1,928 +0,0 @@
1
- .cal {
2
- --cal-spacing-xs: 4px;
3
- --cal-spacing-sm: 8px;
4
- --cal-spacing-md: 12px;
5
- --cal-spacing-lg: 16px;
6
- --cal-bg: var(--background);
7
- --cal-bg-alt: var(--secondary-background);
8
- --cal-bg-hover: var(--hover);
9
- --cal-border: var(--divider);
10
- --cal-text: var(--primary-text);
11
- --cal-text-muted: var(--secondary-text);
12
- --cal-accent: var(--accent-color);
13
- --cal-accent-light: var(--accent-color-lighten);
14
- --cal-accent-text: #fff;
15
- --cal-today-ring: var(--accent-color);
16
- --cal-hour-height: 48px;
17
- --cal-time-col-width: 52px;
18
- --cal-radius: 0.4rem;
19
- --cal-radius-sm: calc(0.4rem * 0.5);
20
- font-family: var(--font-family, "Outfit", sans-serif);
21
- color: var(--cal-text);
22
- box-sizing: border-box;
23
- width: 100%;
24
- -webkit-tap-highlight-color: transparent;
25
- }
26
-
27
- .cal *,
28
- .cal *::before,
29
- .cal *::after {
30
- box-sizing: inherit;
31
- }
32
-
33
- .cal__header {
34
- display: flex;
35
- align-items: center;
36
- gap: var(--cal-spacing-sm);
37
- margin-bottom: var(--cal-spacing-lg);
38
- flex-wrap: wrap;
39
- }
40
-
41
- .cal__title {
42
- flex: 1;
43
- min-width: 120px;
44
- font-size: 1.25rem;
45
- font-weight: 700;
46
- color: var(--cal-text);
47
- margin: 0;
48
- letter-spacing: -0.02em;
49
- }
50
-
51
- .cal__nav {
52
- display: flex;
53
- gap: var(--cal-spacing-xs);
54
- align-items: center;
55
- }
56
-
57
- .cal__btn {
58
- display: inline-flex;
59
- align-items: center;
60
- justify-content: center;
61
- gap: var(--cal-spacing-xs);
62
- padding: 6px var(--cal-spacing-md);
63
- font-family: inherit;
64
- font-size: 0.8125rem;
65
- font-weight: 500;
66
- line-height: 1.5;
67
- cursor: pointer;
68
- border: 1px solid var(--cal-border);
69
- border-radius: var(--cal-radius);
70
- background: transparent;
71
- color: var(--cal-text);
72
- transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.1s ease;
73
- white-space: nowrap;
74
- }
75
- .cal__btn:hover {
76
- background: var(--cal-bg-hover);
77
- }
78
- .cal__btn:focus-visible {
79
- outline: 2px solid var(--cal-accent);
80
- outline-offset: 2px;
81
- }
82
- .cal__btn:active {
83
- transform: scale(0.95);
84
- }
85
- .cal__btn--active, .cal__btn[aria-pressed=true] {
86
- background: var(--cal-accent);
87
- border-color: var(--cal-accent);
88
- color: var(--cal-accent-text);
89
- font-weight: 600;
90
- }
91
- .cal__btn .icon-svg {
92
- width: 16px;
93
- height: 16px;
94
- fill: currentColor;
95
- vertical-align: middle;
96
- }
97
-
98
- .cal__view-toggle {
99
- display: flex;
100
- background: var(--cal-bg-alt);
101
- border-radius: var(--cal-radius);
102
- padding: 3px;
103
- gap: 2px;
104
- position: relative;
105
- }
106
- .cal__view-toggle .cal__btn {
107
- border: none;
108
- border-radius: calc(var(--cal-radius) - 2px);
109
- padding: 5px 14px;
110
- font-size: 0.75rem;
111
- background: transparent;
112
- color: var(--cal-text-muted);
113
- transition: color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
114
- position: relative;
115
- z-index: 1;
116
- }
117
- .cal__view-toggle .cal__btn--active, .cal__view-toggle .cal__btn[aria-pressed=true] {
118
- background: var(--cal-bg);
119
- color: var(--cal-text);
120
- font-weight: 600;
121
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.03);
122
- }
123
-
124
- .cal__body {
125
- width: 100%;
126
- }
127
-
128
- .cal__month-grid {
129
- border: 1px solid var(--cal-border);
130
- border-radius: var(--cal-radius);
131
- overflow: hidden;
132
- }
133
-
134
- .cal__month-head {
135
- display: grid;
136
- grid-template-columns: repeat(7, minmax(0, 1fr));
137
- gap: 1px;
138
- background: var(--cal-border);
139
- }
140
-
141
- .cal__weekday {
142
- background: var(--cal-bg-alt);
143
- padding: var(--cal-spacing-sm) var(--cal-spacing-xs);
144
- text-align: center;
145
- font-size: 0.6875rem;
146
- font-weight: 600;
147
- color: var(--cal-text-muted);
148
- letter-spacing: 0.06em;
149
- text-transform: uppercase;
150
- }
151
-
152
- .cal__week-row {
153
- display: grid;
154
- grid-template-columns: repeat(7, minmax(0, 1fr));
155
- gap: 1px;
156
- background: var(--cal-border);
157
- position: relative;
158
- border-top: 1px solid var(--cal-border);
159
- }
160
- .cal__week-row .cal__day-events {
161
- margin-top: calc(var(--span-lanes, 0) * var(--cal-span-lane-height, 20px));
162
- }
163
-
164
- .cal__day {
165
- background: var(--cal-bg);
166
- padding: var(--cal-spacing-xs) var(--cal-spacing-sm);
167
- min-height: 88px;
168
- cursor: default;
169
- position: relative;
170
- }
171
- .cal__day--empty {
172
- background: var(--cal-bg-alt);
173
- pointer-events: none;
174
- }
175
- .cal__day--outside .cal__day-num {
176
- opacity: 0.25;
177
- }
178
- .cal__day--outside .cal__day-events {
179
- opacity: 0.25;
180
- }
181
- .cal__day.is-today .cal__day-num {
182
- background: var(--cal-today-ring);
183
- color: var(--cal-accent-text);
184
- border-radius: 50%;
185
- font-weight: 700;
186
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
187
- }
188
- .cal__day.has-events::after {
189
- content: "";
190
- display: none;
191
- position: absolute;
192
- bottom: 6px;
193
- left: 50%;
194
- transform: translateX(-50%);
195
- width: 5px;
196
- height: 5px;
197
- border-radius: 50%;
198
- background: var(--cal-accent);
199
- }
200
-
201
- .cal__day-num {
202
- display: inline-flex;
203
- align-items: center;
204
- justify-content: center;
205
- width: 28px;
206
- height: 28px;
207
- font-size: 0.8125rem;
208
- font-weight: 500;
209
- color: var(--cal-text);
210
- margin-bottom: var(--cal-spacing-xs);
211
- flex-shrink: 0;
212
- border-radius: 50%;
213
- transition: background 0.2s ease, color 0.2s ease, box-shadow 0.25s ease, transform 0.15s ease;
214
- }
215
-
216
- .cal__day-events {
217
- display: flex;
218
- flex-direction: column;
219
- gap: 2px;
220
- overflow: hidden;
221
- }
222
-
223
- .cal__event-pill {
224
- font-size: 0.6875rem;
225
- line-height: 1.4;
226
- padding: 2px 6px;
227
- border-radius: var(--cal-radius-sm);
228
- background: var(--cal-bg-alt);
229
- color: var(--cal-text);
230
- white-space: nowrap;
231
- overflow: hidden;
232
- text-overflow: ellipsis;
233
- cursor: pointer;
234
- border: none;
235
- border-left: 2px solid var(--cal-accent-light);
236
- display: block;
237
- text-align: left;
238
- width: 100%;
239
- transition: background 0.12s ease, transform 0.1s ease;
240
- }
241
- .cal__event-pill:hover {
242
- background: var(--cal-bg-hover);
243
- }
244
- .cal__event-pill:active {
245
- transform: scale(0.97);
246
- }
247
- .cal__event-pill:focus-visible {
248
- outline: 2px solid var(--cal-accent);
249
- outline-offset: 1px;
250
- }
251
- .cal__event-pill.badge-success {
252
- border-left-color: var(--success);
253
- }
254
- .cal__event-pill.badge-warning {
255
- border-left-color: var(--warning);
256
- }
257
- .cal__event-pill.badge-error {
258
- border-left-color: var(--error);
259
- }
260
- .cal__event-pill.badge-info {
261
- border-left-color: var(--accent-color);
262
- }
263
-
264
- .cal__event-more {
265
- font-size: 0.625rem;
266
- font-weight: 600;
267
- color: var(--cal-accent);
268
- padding: 1px 6px;
269
- cursor: pointer;
270
- }
271
-
272
- .cal__span-bar {
273
- position: absolute;
274
- height: 18px;
275
- line-height: 18px;
276
- font-size: 0.6875rem;
277
- font-weight: 500;
278
- padding: 0 6px;
279
- border-radius: var(--cal-radius-sm);
280
- background: var(--cal-bg-alt);
281
- border-left: 2px solid var(--cal-accent-light);
282
- color: var(--cal-text);
283
- white-space: nowrap;
284
- overflow: hidden;
285
- text-overflow: ellipsis;
286
- cursor: pointer;
287
- z-index: 2;
288
- transition: filter 0.12s ease, transform 0.1s ease;
289
- left: calc(var(--span-col) * 100% / 7);
290
- width: calc(var(--span-len) * 100% / 7 - 4px);
291
- }
292
- .cal__span-bar:hover {
293
- filter: brightness(0.94);
294
- }
295
- .cal__span-bar:active {
296
- transform: scale(0.97);
297
- }
298
- .cal__span-bar:focus-visible {
299
- outline: 2px solid var(--cal-accent);
300
- outline-offset: 1px;
301
- }
302
- .cal__span-bar--cont-before {
303
- border-left: none;
304
- border-radius: 0 var(--cal-radius-sm) var(--cal-radius-sm) 0;
305
- padding-left: 4px;
306
- }
307
- .cal__span-bar--cont-after {
308
- border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm);
309
- }
310
- .cal__span-bar--cont-before.cal__span-bar--cont-after {
311
- border-radius: 0;
312
- }
313
- .cal__span-bar.badge-success {
314
- border-left-color: var(--success);
315
- background: color-mix(in srgb, var(--success) 14%, var(--cal-bg));
316
- }
317
- .cal__span-bar.badge-warning {
318
- border-left-color: var(--warning);
319
- background: color-mix(in srgb, var(--warning) 14%, var(--cal-bg));
320
- }
321
- .cal__span-bar.badge-error {
322
- border-left-color: var(--error);
323
- background: color-mix(in srgb, var(--error) 14%, var(--cal-bg));
324
- }
325
- .cal__span-bar.badge-info {
326
- border-left-color: var(--accent-color);
327
- background: color-mix(in srgb, var(--accent-color) 14%, var(--cal-bg));
328
- }
329
-
330
- .cal__week-row > .cal__span-bar {
331
- top: calc(36px + var(--span-lane) * var(--cal-span-lane-height, 20px));
332
- }
333
-
334
- .cal__event-time {
335
- font-weight: 600;
336
- margin-right: 3px;
337
- opacity: 0.7;
338
- }
339
-
340
- .cal__week {
341
- border: 1px solid var(--cal-border);
342
- border-radius: var(--cal-radius);
343
- overflow: hidden;
344
- }
345
-
346
- .cal__week-head {
347
- display: grid;
348
- grid-template-columns: var(--cal-time-col-width) repeat(7, minmax(0, 1fr));
349
- background: var(--cal-bg-alt);
350
- border-bottom: 1px solid var(--cal-border);
351
- overflow-y: auto;
352
- scrollbar-gutter: stable;
353
- scrollbar-width: thin;
354
- scrollbar-color: transparent transparent;
355
- }
356
- .cal__week-head::-webkit-scrollbar {
357
- width: 5px;
358
- }
359
- .cal__week-head::-webkit-scrollbar-track, .cal__week-head::-webkit-scrollbar-thumb {
360
- background: transparent;
361
- }
362
-
363
- .cal__week-head-time {
364
- padding: var(--cal-spacing-sm) var(--cal-spacing-xs);
365
- font-size: 0.6875rem;
366
- color: var(--cal-text-muted);
367
- }
368
-
369
- .cal__week-head-day {
370
- padding: var(--cal-spacing-sm) var(--cal-spacing-xs);
371
- text-align: center;
372
- font-size: 0.6875rem;
373
- font-weight: 600;
374
- color: var(--cal-text-muted);
375
- border-left: 1px solid var(--cal-border);
376
- cursor: default;
377
- text-transform: uppercase;
378
- letter-spacing: 0.04em;
379
- }
380
- .cal__week-head-day span {
381
- display: inline-flex;
382
- align-items: center;
383
- justify-content: center;
384
- font-size: 1.0625rem;
385
- font-weight: 600;
386
- color: var(--cal-text);
387
- line-height: 1;
388
- width: 32px;
389
- height: 32px;
390
- border-radius: 50%;
391
- margin-top: 2px;
392
- transition: background 0.2s ease, color 0.2s ease, box-shadow 0.25s ease;
393
- text-transform: none;
394
- letter-spacing: normal;
395
- }
396
- .cal__week-head-day.is-today span {
397
- background: var(--cal-today-ring);
398
- color: var(--cal-accent-text);
399
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
400
- }
401
-
402
- .cal__allday {
403
- display: grid;
404
- grid-template-columns: var(--cal-time-col-width) 1fr;
405
- border-bottom: 1px solid var(--cal-border);
406
- background: var(--cal-bg);
407
- overflow-y: auto;
408
- scrollbar-gutter: stable;
409
- scrollbar-width: thin;
410
- scrollbar-color: transparent transparent;
411
- }
412
- .cal__allday::-webkit-scrollbar {
413
- width: 5px;
414
- }
415
- .cal__allday::-webkit-scrollbar-track, .cal__allday::-webkit-scrollbar-thumb {
416
- background: transparent;
417
- }
418
-
419
- .cal__allday-label {
420
- padding: var(--cal-spacing-xs);
421
- font-size: 0.625rem;
422
- color: var(--cal-text-muted);
423
- display: flex;
424
- align-items: flex-start;
425
- padding-top: 6px;
426
- font-weight: 500;
427
- }
428
-
429
- .cal__allday-spans {
430
- position: relative;
431
- display: grid;
432
- grid-template-columns: repeat(7, minmax(0, 1fr));
433
- min-height: calc(max(var(--allday-lanes, 1), 1) * var(--cal-span-lane-height, 20px) + 6px);
434
- }
435
- .cal__allday-spans > .cal__span-bar {
436
- top: calc(var(--span-lane) * var(--cal-span-lane-height, 20px) + 3px);
437
- }
438
-
439
- .cal__allday-col {
440
- border-left: 1px solid var(--cal-border);
441
- min-height: 100%;
442
- }
443
- .cal__allday-col:first-child {
444
- border-left: none;
445
- }
446
-
447
- .cal__week-body {
448
- overflow-y: auto;
449
- max-height: 480px;
450
- position: relative;
451
- background: var(--cal-bg);
452
- scrollbar-width: thin;
453
- scrollbar-gutter: stable;
454
- scrollbar-color: var(--cal-border) transparent;
455
- }
456
- .cal__week-body::-webkit-scrollbar {
457
- width: 5px;
458
- }
459
- .cal__week-body::-webkit-scrollbar-track {
460
- background: transparent;
461
- }
462
- .cal__week-body::-webkit-scrollbar-thumb {
463
- background: var(--cal-border);
464
- border-radius: 3px;
465
- }
466
-
467
- .cal__week-grid {
468
- display: grid;
469
- grid-template-columns: var(--cal-time-col-width) repeat(7, minmax(0, 1fr));
470
- position: relative;
471
- }
472
-
473
- .cal__time-col {
474
- display: flex;
475
- flex-direction: column;
476
- background: var(--cal-bg-alt);
477
- }
478
-
479
- .cal__time-slot {
480
- height: var(--cal-hour-height);
481
- display: flex;
482
- align-items: flex-start;
483
- padding-top: 3px;
484
- padding-right: var(--cal-spacing-sm);
485
- font-size: 0.625rem;
486
- font-weight: 500;
487
- color: var(--cal-text-muted);
488
- justify-content: flex-end;
489
- border-top: 1px solid var(--cal-border);
490
- flex-shrink: 0;
491
- }
492
- .cal__time-slot:first-child {
493
- border-top: none;
494
- }
495
-
496
- .cal__day-col {
497
- border-left: 1px solid var(--cal-border);
498
- position: relative;
499
- }
500
-
501
- .cal__day-col-hour {
502
- height: var(--cal-hour-height);
503
- border-top: 1px solid var(--cal-border);
504
- flex-shrink: 0;
505
- position: relative;
506
- }
507
- .cal__day-col-hour:first-child {
508
- border-top: none;
509
- }
510
- .cal__day-col-hour::after {
511
- content: "";
512
- display: block;
513
- position: absolute;
514
- left: 0;
515
- right: 0;
516
- top: 50%;
517
- height: 1px;
518
- background: var(--cal-border);
519
- opacity: 0.4;
520
- pointer-events: none;
521
- }
522
-
523
- .cal__week-event {
524
- position: absolute;
525
- left: 2px;
526
- right: 2px;
527
- border-radius: var(--cal-radius-sm);
528
- font-size: 0.6875rem;
529
- line-height: 1.3;
530
- padding: 3px 6px;
531
- overflow: hidden;
532
- cursor: pointer;
533
- background: color-mix(in srgb, var(--cal-accent) 10%, var(--cal-bg));
534
- color: var(--cal-text);
535
- border-left: 3px solid var(--cal-accent);
536
- z-index: 1;
537
- transition: box-shadow 0.15s ease, transform 0.1s ease;
538
- }
539
- .cal__week-event:hover {
540
- z-index: 2;
541
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
542
- transform: translateY(-1px);
543
- }
544
- .cal__week-event:active {
545
- transform: scale(0.98);
546
- }
547
- .cal__week-event:focus-visible {
548
- outline: 2px solid var(--cal-accent);
549
- outline-offset: 1px;
550
- z-index: 3;
551
- }
552
- .cal__week-event.badge-success {
553
- border-left-color: var(--success);
554
- background: color-mix(in srgb, var(--success) 10%, var(--cal-bg));
555
- }
556
- .cal__week-event.badge-warning {
557
- border-left-color: var(--warning);
558
- background: color-mix(in srgb, var(--warning) 10%, var(--cal-bg));
559
- }
560
- .cal__week-event.badge-error {
561
- border-left-color: var(--error);
562
- background: color-mix(in srgb, var(--error) 10%, var(--cal-bg));
563
- }
564
- .cal__week-event.badge-info {
565
- border-left-color: var(--accent-color);
566
- background: color-mix(in srgb, var(--accent-color) 10%, var(--cal-bg));
567
- }
568
-
569
- .cal__now-line {
570
- position: absolute;
571
- left: var(--cal-time-col-width);
572
- right: 0;
573
- height: 2px;
574
- background: var(--error);
575
- z-index: 5;
576
- pointer-events: none;
577
- }
578
- .cal__now-line::before {
579
- content: "";
580
- display: block;
581
- position: absolute;
582
- left: -5px;
583
- top: -4px;
584
- width: 10px;
585
- height: 10px;
586
- border-radius: 50%;
587
- background: var(--error);
588
- animation: cal-now-pulse 2s ease-in-out infinite;
589
- }
590
-
591
- .cal__agenda {
592
- border: 1px solid var(--cal-border);
593
- border-radius: var(--cal-radius);
594
- overflow: hidden;
595
- }
596
-
597
- .cal__agenda-day {
598
- display: flex;
599
- gap: var(--cal-spacing-lg);
600
- padding: var(--cal-spacing-md) var(--cal-spacing-lg);
601
- border-bottom: 1px solid var(--cal-border);
602
- }
603
- .cal__agenda-day:last-child {
604
- border-bottom: none;
605
- }
606
- .cal__agenda-day.is-today {
607
- background: color-mix(in srgb, var(--cal-accent) 4%, var(--cal-bg));
608
- }
609
-
610
- .cal__agenda-date {
611
- display: flex;
612
- flex-direction: column;
613
- align-items: center;
614
- min-width: 44px;
615
- flex-shrink: 0;
616
- }
617
-
618
- .cal__agenda-dow {
619
- font-size: 0.625rem;
620
- color: var(--cal-text-muted);
621
- text-transform: uppercase;
622
- letter-spacing: 0.06em;
623
- font-weight: 600;
624
- }
625
-
626
- .cal__agenda-num {
627
- display: inline-flex;
628
- align-items: center;
629
- justify-content: center;
630
- width: 34px;
631
- height: 34px;
632
- font-size: 1rem;
633
- font-weight: 700;
634
- color: var(--cal-text);
635
- border-radius: 50%;
636
- margin-top: 2px;
637
- transition: background 0.2s ease, color 0.2s ease;
638
- }
639
- .cal__agenda-num.is-today {
640
- background: var(--cal-today-ring);
641
- color: var(--cal-accent-text);
642
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
643
- }
644
-
645
- .cal__agenda-events {
646
- flex: 1;
647
- display: flex;
648
- flex-direction: column;
649
- gap: var(--cal-spacing-sm);
650
- padding-top: 4px;
651
- min-width: 0;
652
- }
653
-
654
- .cal__agenda-event {
655
- display: flex;
656
- align-items: baseline;
657
- gap: var(--cal-spacing-sm);
658
- padding: var(--cal-spacing-sm) var(--cal-spacing-md);
659
- border-radius: var(--cal-radius-sm);
660
- background: var(--cal-bg-alt);
661
- border-left: 3px solid var(--cal-accent-light);
662
- cursor: pointer;
663
- transition: background 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease;
664
- }
665
- .cal__agenda-event:hover {
666
- background: var(--cal-bg-hover);
667
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
668
- }
669
- .cal__agenda-event:active {
670
- transform: scale(0.98);
671
- }
672
- .cal__agenda-event:focus-visible {
673
- outline: 2px solid var(--cal-accent);
674
- outline-offset: 1px;
675
- }
676
- .cal__agenda-event.badge-success {
677
- border-left-color: var(--success);
678
- }
679
- .cal__agenda-event.badge-warning {
680
- border-left-color: var(--warning);
681
- }
682
- .cal__agenda-event.badge-error {
683
- border-left-color: var(--error);
684
- }
685
- .cal__agenda-event.badge-info {
686
- border-left-color: var(--accent-color);
687
- }
688
-
689
- .cal__agenda-event-time {
690
- font-size: 0.75rem;
691
- color: var(--cal-text-muted);
692
- font-weight: 600;
693
- white-space: nowrap;
694
- min-width: 110px;
695
- flex-shrink: 0;
696
- }
697
-
698
- .cal__agenda-event-title {
699
- font-size: 0.875rem;
700
- color: var(--cal-text);
701
- font-weight: 500;
702
- white-space: nowrap;
703
- overflow: hidden;
704
- text-overflow: ellipsis;
705
- }
706
-
707
- .cal__agenda-empty {
708
- padding: var(--cal-spacing-lg);
709
- color: var(--cal-text-muted);
710
- font-size: 0.875rem;
711
- text-align: center;
712
- }
713
-
714
- @media (max-width: 600px) {
715
- .cal__header {
716
- gap: var(--cal-spacing-xs);
717
- }
718
- .cal__title {
719
- font-size: 1.0625rem;
720
- order: -1;
721
- width: 100%;
722
- }
723
- .cal__nav {
724
- flex: 1;
725
- }
726
- .cal__view-toggle {
727
- padding: 2px;
728
- gap: 1px;
729
- }
730
- .cal__view-toggle .cal__btn {
731
- padding: 4px 10px;
732
- font-size: 0.6875rem;
733
- }
734
- .cal__month-grid {
735
- border: none;
736
- border-radius: 0;
737
- }
738
- .cal__month-head {
739
- gap: 0;
740
- background: transparent;
741
- }
742
- .cal__week-row {
743
- gap: 0;
744
- background: transparent;
745
- border-top: none;
746
- }
747
- .cal__weekday {
748
- background: transparent;
749
- padding: var(--cal-spacing-sm) 0;
750
- font-size: 0.625rem;
751
- }
752
- .cal__day {
753
- min-height: 52px;
754
- padding: var(--cal-spacing-xs) 0;
755
- display: flex;
756
- flex-direction: column;
757
- align-items: center;
758
- justify-content: flex-start;
759
- background: transparent;
760
- }
761
- .cal__day--empty {
762
- background: transparent;
763
- }
764
- .cal__day--outside .cal__day-num {
765
- opacity: 0.25;
766
- }
767
- .cal__day.has-events::after {
768
- display: block;
769
- position: static;
770
- transform: none;
771
- margin-top: 3px;
772
- }
773
- .cal__day-num {
774
- width: 36px;
775
- height: 36px;
776
- font-size: 0.8125rem;
777
- margin-bottom: 0;
778
- }
779
- .cal__day-events,
780
- .cal__event-pill,
781
- .cal__event-more,
782
- .cal__span-bar {
783
- display: none;
784
- }
785
- .cal__week-row .cal__day-events {
786
- margin-top: 0;
787
- }
788
- .cal {
789
- --cal-time-col-width: 40px;
790
- }
791
- .cal__week-body {
792
- max-height: 360px;
793
- }
794
- .cal__week-head-day {
795
- font-size: 0.5625rem;
796
- padding: var(--cal-spacing-xs) 2px;
797
- }
798
- .cal__week-head-day span {
799
- font-size: 0.875rem;
800
- width: 28px;
801
- height: 28px;
802
- }
803
- .cal__time-slot {
804
- font-size: 0.5rem;
805
- padding-right: 3px;
806
- }
807
- .cal__agenda-day {
808
- padding: var(--cal-spacing-sm) var(--cal-spacing-md);
809
- gap: var(--cal-spacing-md);
810
- }
811
- .cal__agenda-event {
812
- padding: var(--cal-spacing-xs) var(--cal-spacing-sm);
813
- flex-direction: column;
814
- gap: 2px;
815
- }
816
- .cal__agenda-event-time {
817
- min-width: 0;
818
- font-size: 0.6875rem;
819
- }
820
- .cal__agenda-event-title {
821
- font-size: 0.8125rem;
822
- }
823
- }
824
- @media print {
825
- .cal__header .cal__view-toggle,
826
- .cal__header .cal__nav .cal__btn--today {
827
- display: none;
828
- }
829
- .cal__week-body {
830
- max-height: none;
831
- overflow: visible;
832
- }
833
- .cal__month-grid,
834
- .cal__week,
835
- .cal__agenda {
836
- border: 1px solid #ccc;
837
- }
838
- }
839
- @media (prefers-reduced-motion: no-preference) {
840
- .cal__body {
841
- animation: cal-slide-in 0.25s cubic-bezier(0.2, 0, 0, 1);
842
- }
843
- .cal__day,
844
- .cal__agenda-day {
845
- animation: cal-cell-in 0.3s cubic-bezier(0.2, 0, 0, 1) both;
846
- }
847
- .cal__week-row:nth-child(1) .cal__day {
848
- animation-delay: 0.01s;
849
- }
850
- .cal__week-row:nth-child(2) .cal__day {
851
- animation-delay: 0.04s;
852
- }
853
- .cal__week-row:nth-child(3) .cal__day {
854
- animation-delay: 0.07s;
855
- }
856
- .cal__week-row:nth-child(4) .cal__day {
857
- animation-delay: 0.1s;
858
- }
859
- .cal__week-row:nth-child(5) .cal__day {
860
- animation-delay: 0.13s;
861
- }
862
- .cal__week-row:nth-child(6) .cal__day {
863
- animation-delay: 0.16s;
864
- }
865
- .cal__week-row:nth-child(7) .cal__day {
866
- animation-delay: 0.19s;
867
- }
868
- .cal__agenda-day:nth-child(1) {
869
- animation-delay: 0.03s;
870
- }
871
- .cal__agenda-day:nth-child(2) {
872
- animation-delay: 0.06s;
873
- }
874
- .cal__agenda-day:nth-child(3) {
875
- animation-delay: 0.09s;
876
- }
877
- .cal__agenda-day:nth-child(4) {
878
- animation-delay: 0.12s;
879
- }
880
- .cal__agenda-day:nth-child(5) {
881
- animation-delay: 0.15s;
882
- }
883
- .cal__agenda-day:nth-child(6) {
884
- animation-delay: 0.18s;
885
- }
886
- .cal__agenda-day:nth-child(7) {
887
- animation-delay: 0.21s;
888
- }
889
- .cal__agenda-day:nth-child(8) {
890
- animation-delay: 0.24s;
891
- }
892
- .cal__agenda-day:nth-child(9) {
893
- animation-delay: 0.27s;
894
- }
895
- .cal__agenda-day:nth-child(10) {
896
- animation-delay: 0.3s;
897
- }
898
- }
899
- @keyframes cal-slide-in {
900
- from {
901
- opacity: 0;
902
- transform: translateY(8px);
903
- }
904
- to {
905
- opacity: 1;
906
- transform: translateY(0);
907
- }
908
- }
909
- @keyframes cal-cell-in {
910
- from {
911
- opacity: 0;
912
- transform: scale(0.96);
913
- }
914
- to {
915
- opacity: 1;
916
- transform: scale(1);
917
- }
918
- }
919
- @keyframes cal-now-pulse {
920
- 0%, 100% {
921
- opacity: 1;
922
- transform: scale(1);
923
- }
924
- 50% {
925
- opacity: 0.5;
926
- transform: scale(1.3);
927
- }
928
- }