@zeyos/zx 4.1.1 → 4.3.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 (102) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/DESIGN-SYSTEM.md +33 -3
  3. package/README.md +22 -5
  4. package/dist/types/components/app-icon/app-icon.d.ts +8 -1
  5. package/dist/types/components/aurora/aurora.d.ts +72 -0
  6. package/dist/types/components/calendar/calendar-model.d.ts +202 -0
  7. package/dist/types/components/calendar/calendar.d.ts +517 -0
  8. package/dist/types/components/card-view/card-view.d.ts +303 -0
  9. package/dist/types/components/card-view/record-card.d.ts +242 -0
  10. package/dist/types/components/dialog/dialog.d.ts +6 -1
  11. package/dist/types/components/dropdown/dropdown.d.ts +5 -0
  12. package/dist/types/components/kanban-view/kanban-view.d.ts +572 -0
  13. package/dist/types/components/launcher/launcher.d.ts +5 -0
  14. package/dist/types/components/message/message.d.ts +9 -1
  15. package/dist/types/components/modal/modal.d.ts +44 -7
  16. package/dist/types/components/sheet/sheet.d.ts +22 -12
  17. package/dist/types/components/table/table.d.ts +120 -31
  18. package/dist/types/components/table-view/table-view.d.ts +192 -0
  19. package/dist/types/components/view/record-view.d.ts +464 -0
  20. package/dist/types/core/overlay-host.d.ts +12 -0
  21. package/dist/types/index.d.ts +7 -0
  22. package/dist/types/zeyos/calendar.d.ts +91 -0
  23. package/dist/types/zeyos/icons.d.ts +18 -2
  24. package/dist/types/zeyos/index.d.ts +4 -0
  25. package/dist/types/zeyos/legacy-saved-views.d.ts +66 -0
  26. package/dist/types/zeyos/saved-views.d.ts +331 -0
  27. package/dist/types/zeyos/view.d.ts +305 -0
  28. package/dist/zx-zeyos.esm.js +4742 -1470
  29. package/dist/zx-zeyos.esm.min.js +1 -1
  30. package/dist/zx.css +2536 -471
  31. package/dist/zx.esm.js +5193 -223
  32. package/dist/zx.esm.min.js +3 -3
  33. package/dist/zx.global.js +5193 -223
  34. package/dist/zx.global.min.js +3 -3
  35. package/dist/zx.min.css +1 -1
  36. package/docs/api.json +1729 -182
  37. package/docs/llms.md +236 -32
  38. package/docs/llms.txt +16 -6
  39. package/package.json +1 -1
  40. package/src/components/account-menu/account-menu.css +1 -1
  41. package/src/components/app-icon/app-icon.css +77 -51
  42. package/src/components/app-icon/app-icon.js +28 -4
  43. package/src/components/app-rail/app-rail.css +12 -3
  44. package/src/components/app-sidebar/app-sidebar.css +11 -2
  45. package/src/components/aurora/aurora.css +143 -0
  46. package/src/components/aurora/aurora.js +146 -0
  47. package/src/components/avatar/avatar.css +1 -1
  48. package/src/components/button/button.css +2 -2
  49. package/src/components/calendar/calendar-model.js +402 -0
  50. package/src/components/calendar/calendar.css +609 -0
  51. package/src/components/calendar/calendar.js +1619 -0
  52. package/src/components/card/card.css +2 -2
  53. package/src/components/card-view/card-view.css +389 -0
  54. package/src/components/card-view/card-view.js +527 -0
  55. package/src/components/card-view/record-card.js +392 -0
  56. package/src/components/context-menu/context-menu.css +4 -4
  57. package/src/components/context-menu/context-menu.js +5 -1
  58. package/src/components/date-picker/date-picker.css +31 -12
  59. package/src/components/datebox/date-range-box.css +17 -2
  60. package/src/components/datebox/datebox.css +18 -3
  61. package/src/components/dialog/dialog.css +4 -3
  62. package/src/components/dialog/dialog.js +2 -1
  63. package/src/components/dropdown/dropdown.css +17 -3
  64. package/src/components/dropdown/dropdown.js +7 -2
  65. package/src/components/kanban-view/kanban-view.css +216 -0
  66. package/src/components/kanban-view/kanban-view.js +1228 -0
  67. package/src/components/launcher/launcher.css +24 -9
  68. package/src/components/launcher/launcher.js +9 -2
  69. package/src/components/master-panel/master-panel.css +14 -3
  70. package/src/components/menu-button/menu-button.css +4 -4
  71. package/src/components/message/message.css +13 -21
  72. package/src/components/message/message.js +17 -11
  73. package/src/components/modal/modal.css +19 -5
  74. package/src/components/modal/modal.js +99 -25
  75. package/src/components/navigation-bar/navigation-bar.css +17 -5
  76. package/src/components/panel/panel.css +10 -2
  77. package/src/components/select/select.css +26 -8
  78. package/src/components/sheet/sheet.css +28 -7
  79. package/src/components/sheet/sheet.js +43 -23
  80. package/src/components/table/table.css +83 -5
  81. package/src/components/table/table.js +322 -37
  82. package/src/components/table-view/table-view.css +18 -0
  83. package/src/components/table-view/table-view.js +347 -0
  84. package/src/components/tag-picker/tag-picker.css +18 -4
  85. package/src/components/tooltip/tooltip.css +17 -3
  86. package/src/components/tooltip/tooltip.js +4 -1
  87. package/src/components/view/record-view.css +114 -0
  88. package/src/components/view/record-view.js +770 -0
  89. package/src/core/overlay-host.js +23 -0
  90. package/src/index.js +15 -0
  91. package/src/zeyos/calendar.js +115 -0
  92. package/src/zeyos/icons.js +11 -4
  93. package/src/zeyos/index.js +13 -0
  94. package/src/zeyos/launcher.js +2 -2
  95. package/src/zeyos/legacy-saved-views.js +155 -0
  96. package/src/zeyos/saved-views.js +815 -0
  97. package/src/zeyos/table.js +3 -1
  98. package/src/zeyos/view.js +543 -0
  99. package/styles/icons.css +3 -10
  100. package/styles/tokens/dark.css +4 -0
  101. package/styles/tokens/semantic.css +142 -3
  102. package/styles/zx.css +6 -0
@@ -0,0 +1,609 @@
1
+ .zx-calendar {
2
+ --zx-calendar-time-axis: 4.75rem;
3
+ --zx-calendar-slot-height: 24px;
4
+ --zx-calendar-event-color: var(--zx-color-accent);
5
+ position: relative;
6
+ container-type: inline-size;
7
+ display: grid;
8
+ inline-size: 100%;
9
+ min-inline-size: 0;
10
+ overflow: hidden;
11
+ border: 1px solid var(--zx-color-border);
12
+ border-radius: var(--zx-radius-lg);
13
+ background: var(--zx-color-bg-surface);
14
+ color: var(--zx-color-text);
15
+ font-size: var(--zx-text-sm);
16
+ }
17
+
18
+ .zx-calendar__toolbar {
19
+ display: grid;
20
+ grid-template-columns: 1fr auto 1fr;
21
+ align-items: center;
22
+ gap: var(--zx-space-3);
23
+ min-inline-size: 0;
24
+ padding: var(--zx-space-3);
25
+ border-block-end: 1px solid var(--zx-color-border);
26
+ }
27
+
28
+ .zx-calendar__navigation,
29
+ .zx-calendar__commands,
30
+ .zx-calendar__views {
31
+ display: flex;
32
+ align-items: center;
33
+ min-inline-size: 0;
34
+ }
35
+
36
+ .zx-calendar__navigation { justify-self: start; gap: var(--zx-space-1); }
37
+ .zx-calendar__commands { justify-self: end; gap: var(--zx-space-3); }
38
+ .zx-calendar__views { overflow-x: auto; }
39
+
40
+ .zx-calendar__toolbar-button,
41
+ .zx-calendar__view-button,
42
+ .zx-calendar__new {
43
+ display: inline-flex;
44
+ min-block-size: var(--zx-control-height);
45
+ align-items: center;
46
+ justify-content: center;
47
+ border: 1px solid var(--zx-color-border-control);
48
+ background: var(--zx-color-bg-control);
49
+ color: var(--zx-color-text);
50
+ font: inherit;
51
+ font-size: var(--zx-text-sm);
52
+ cursor: pointer;
53
+ }
54
+
55
+ .zx-calendar__toolbar-button {
56
+ min-inline-size: var(--zx-control-height);
57
+ border-radius: var(--zx-control-radius);
58
+ padding-inline: var(--zx-space-3);
59
+ }
60
+
61
+ .zx-calendar__toolbar-button:has(.zx-icon) { padding-inline: var(--zx-space-2); }
62
+ .zx-calendar__view-button { border-inline-end-width: 0; padding-inline: var(--zx-space-3); }
63
+ .zx-calendar__view-button:first-child { border-start-start-radius: var(--zx-control-radius); border-end-start-radius: var(--zx-control-radius); }
64
+ .zx-calendar__view-button:last-child { border-inline-end-width: 1px; border-start-end-radius: var(--zx-control-radius); border-end-end-radius: var(--zx-control-radius); }
65
+ .zx-calendar__view-button[aria-pressed="true"] {
66
+ position: relative;
67
+ z-index: 1;
68
+ border-color: var(--zx-color-accent);
69
+ background: var(--zx-color-bg-selected);
70
+ color: var(--zx-color-accent);
71
+ }
72
+
73
+ .zx-calendar__new {
74
+ gap: var(--zx-space-2);
75
+ border-color: var(--zx-color-accent);
76
+ border-radius: var(--zx-control-radius);
77
+ background: var(--zx-color-accent);
78
+ color: var(--zx-color-on-accent);
79
+ padding-inline: var(--zx-space-3);
80
+ font-weight: 650;
81
+ }
82
+
83
+ .zx-calendar__toolbar-button:hover:not(:disabled),
84
+ .zx-calendar__view-button:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
85
+ .zx-calendar__new:hover:not(:disabled) { background: var(--zx-color-accent-hover); }
86
+ .zx-calendar button:disabled { cursor: default; opacity: .55; }
87
+
88
+ .zx-calendar__toolbar-button:focus-visible,
89
+ .zx-calendar__view-button:focus-visible,
90
+ .zx-calendar__new:focus-visible,
91
+ .zx-calendar__event-action:focus-visible,
92
+ .zx-calendar__event-resize:focus-visible,
93
+ .zx-calendar__slot:focus-visible,
94
+ .zx-calendar__day-heading:focus-visible,
95
+ .zx-calendar__month-day:focus-visible,
96
+ .zx-calendar__year-day:focus-visible,
97
+ .zx-calendar__agenda-heading:focus-visible,
98
+ .zx-calendar__more:focus-visible,
99
+ .zx-calendar__month-week-number:focus-visible {
100
+ z-index: 4;
101
+ outline: none;
102
+ box-shadow: var(--zx-focus-ring);
103
+ }
104
+
105
+ .zx-calendar__heading {
106
+ min-inline-size: 0;
107
+ margin: 0;
108
+ overflow: hidden;
109
+ color: var(--zx-color-text);
110
+ font-size: var(--zx-text-lg);
111
+ font-weight: 700;
112
+ line-height: 1.25;
113
+ text-align: center;
114
+ text-overflow: ellipsis;
115
+ white-space: nowrap;
116
+ }
117
+
118
+ .zx-calendar__body { min-inline-size: 0; overflow-x: auto; }
119
+
120
+ .zx-calendar__time-surface {
121
+ display: grid;
122
+ min-inline-size: 42rem;
123
+ }
124
+
125
+ .zx-calendar__time-header,
126
+ .zx-calendar__all-day,
127
+ .zx-calendar__time-scroller {
128
+ display: grid;
129
+ grid-template-columns: var(--zx-calendar-time-axis) minmax(0, 1fr);
130
+ }
131
+
132
+ .zx-calendar__time-header,
133
+ .zx-calendar__all-day { border-block-end: 1px solid var(--zx-color-border); }
134
+ .zx-calendar__time-corner,
135
+ .zx-calendar__all-day-label {
136
+ border-inline-end: 1px solid var(--zx-color-border);
137
+ color: var(--zx-color-text-muted);
138
+ }
139
+
140
+ .zx-calendar__day-headings {
141
+ display: grid;
142
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
143
+ }
144
+
145
+ .zx-calendar__day-heading {
146
+ display: grid;
147
+ gap: 1px;
148
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-2));
149
+ place-content: center;
150
+ border: 0;
151
+ border-inline-end: 1px solid var(--zx-color-border);
152
+ background: var(--zx-color-bg-surface);
153
+ color: var(--zx-color-text);
154
+ font: inherit;
155
+ cursor: pointer;
156
+ }
157
+
158
+ .zx-calendar__day-heading:last-child { border-inline-end: 0; }
159
+ .zx-calendar__day-heading:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
160
+ .zx-calendar__day-heading[aria-current="date"] .zx-calendar__day-number { color: var(--zx-color-accent); font-weight: 750; }
161
+ .zx-calendar__day-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs); text-transform: uppercase; letter-spacing: .04em; }
162
+ .zx-calendar__day-number { font-size: var(--zx-text-sm); }
163
+
164
+ .zx-calendar__all-day { min-block-size: calc(var(--zx-control-height) + var(--zx-space-2)); }
165
+ .zx-calendar__all-day-label {
166
+ display: grid;
167
+ place-items: center end;
168
+ padding-inline: var(--zx-space-2);
169
+ font-size: var(--zx-text-xs);
170
+ }
171
+
172
+ .zx-calendar__all-day-grid {
173
+ display: grid;
174
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
175
+ grid-auto-rows: calc(var(--zx-control-height) - var(--zx-space-2));
176
+ gap: 2px 0;
177
+ min-block-size: var(--zx-control-height);
178
+ padding-block: var(--zx-space-1);
179
+ overflow: hidden;
180
+ }
181
+
182
+ .zx-calendar__all-day-cell { border-inline-end: 1px solid var(--zx-color-border); }
183
+ .zx-calendar__all-day-cell:last-of-type { border-inline-end: 0; }
184
+
185
+ .zx-calendar__time-scroller {
186
+ position: relative;
187
+ max-block-size: min(68vh, 46rem);
188
+ overflow: auto;
189
+ overscroll-behavior: contain;
190
+ scrollbar-gutter: stable;
191
+ }
192
+
193
+ .zx-calendar__time-axis {
194
+ position: relative;
195
+ z-index: 2;
196
+ border-inline-end: 1px solid var(--zx-color-border);
197
+ background: var(--zx-color-bg-surface);
198
+ }
199
+
200
+ .zx-calendar__time-label {
201
+ display: block;
202
+ block-size: var(--zx-calendar-slot-height);
203
+ padding-block-start: var(--zx-space-1);
204
+ padding-inline-end: var(--zx-space-2);
205
+ color: var(--zx-color-text-muted);
206
+ font-size: var(--zx-text-xs);
207
+ text-align: end;
208
+ transform: translateY(-.65em);
209
+ }
210
+
211
+ .zx-calendar__time-label:first-child { transform: none; }
212
+
213
+ .zx-calendar__time-grid {
214
+ position: relative;
215
+ block-size: calc(var(--zx-calendar-slot-count) * var(--zx-calendar-slot-height));
216
+ min-inline-size: 0;
217
+ }
218
+
219
+ .zx-calendar__slots {
220
+ position: absolute;
221
+ inset: 0;
222
+ display: grid;
223
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
224
+ grid-template-rows: repeat(var(--zx-calendar-slot-count), var(--zx-calendar-slot-height));
225
+ }
226
+
227
+ .zx-calendar__slot {
228
+ min-inline-size: 0;
229
+ border: 0;
230
+ border-block-start: 1px solid var(--zx-color-border);
231
+ border-inline-end: 1px solid var(--zx-color-border);
232
+ background: var(--zx-color-bg-surface);
233
+ padding: 0;
234
+ cursor: crosshair;
235
+ }
236
+
237
+ .zx-calendar__slot:not([data-major="true"]) { border-block-start-style: dotted; }
238
+ .zx-calendar__slot[aria-selected="true"] { background: var(--zx-color-bg-selected); }
239
+ .zx-calendar__slot:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
240
+ .zx-calendar__timed-events { position: absolute; inset: 0; pointer-events: none; }
241
+
242
+ .zx-calendar__event {
243
+ --zx-calendar-event-color: var(--zx-color-accent);
244
+ position: relative;
245
+ z-index: 2;
246
+ min-inline-size: 0;
247
+ pointer-events: auto;
248
+ }
249
+
250
+ .zx-calendar__event[data-variant="timed"] {
251
+ position: absolute;
252
+ min-block-size: calc(var(--zx-calendar-slot-height) - 2px);
253
+ padding: 1px 2px;
254
+ }
255
+
256
+ .zx-calendar__event-action {
257
+ display: grid;
258
+ grid-template-columns: minmax(0, 1fr);
259
+ align-content: start;
260
+ gap: 1px;
261
+ inline-size: 100%;
262
+ block-size: 100%;
263
+ min-inline-size: 0;
264
+ min-block-size: 0;
265
+ overflow: hidden;
266
+ border: 1px solid color-mix(in srgb, var(--zx-calendar-event-color) 65%, var(--zx-color-border));
267
+ border-inline-start: 3px solid var(--zx-calendar-event-color);
268
+ border-radius: var(--zx-radius-sm);
269
+ background: color-mix(in srgb, var(--zx-calendar-event-color) 11%, var(--zx-color-bg-surface));
270
+ color: var(--zx-color-text);
271
+ padding: var(--zx-space-1) var(--zx-space-2);
272
+ font: inherit;
273
+ font-size: var(--zx-text-xs);
274
+ line-height: 1.25;
275
+ text-align: start;
276
+ cursor: pointer;
277
+ }
278
+
279
+ .zx-calendar__event[data-draggable="true"] > .zx-calendar__event-action { cursor: grab; touch-action: none; }
280
+ .zx-calendar__event[data-state="dragging"] > .zx-calendar__event-action,
281
+ .zx-calendar__event[data-state="grabbed"] > .zx-calendar__event-action {
282
+ border-color: var(--zx-color-accent);
283
+ box-shadow: var(--zx-focus-ring);
284
+ cursor: grabbing;
285
+ }
286
+
287
+ .zx-calendar__event[data-preview]::after {
288
+ position: absolute;
289
+ inset-inline: var(--zx-space-1);
290
+ inset-block-end: var(--zx-space-1);
291
+ z-index: 5;
292
+ overflow: hidden;
293
+ border-radius: var(--zx-radius-sm);
294
+ background: var(--zx-color-bg-raised);
295
+ color: var(--zx-color-text);
296
+ content: attr(data-preview);
297
+ font-size: var(--zx-text-xs);
298
+ padding: 1px var(--zx-space-1);
299
+ text-overflow: ellipsis;
300
+ white-space: nowrap;
301
+ }
302
+
303
+ .zx-calendar__event-time { overflow: hidden; color: var(--zx-color-text-muted); text-overflow: ellipsis; white-space: nowrap; }
304
+ .zx-calendar__event-title { overflow: hidden; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }
305
+ .zx-calendar__event-location { overflow: hidden; color: var(--zx-color-text-muted); text-overflow: ellipsis; white-space: nowrap; }
306
+
307
+ .zx-calendar__event-resize {
308
+ position: absolute;
309
+ inset-inline: var(--zx-space-2);
310
+ inset-block-end: 1px;
311
+ z-index: 3;
312
+ display: grid;
313
+ block-size: 8px;
314
+ min-block-size: 0;
315
+ place-items: center;
316
+ appearance: none;
317
+ border: 0;
318
+ border-radius: 0;
319
+ background: transparent;
320
+ padding: 0;
321
+ cursor: ns-resize;
322
+ touch-action: none;
323
+ }
324
+
325
+ .zx-calendar__event-resize > span {
326
+ inline-size: 1.5rem;
327
+ border-block-start: 2px solid var(--zx-calendar-event-color);
328
+ }
329
+
330
+ .zx-calendar__event[data-variant="span"],
331
+ .zx-calendar__event[data-variant="month"] { min-inline-size: 0; padding-inline: 2px; }
332
+ .zx-calendar__event[data-variant="span"] { z-index: 2; }
333
+ .zx-calendar__event[data-variant="span"] .zx-calendar__event-action,
334
+ .zx-calendar__event[data-variant="month"] .zx-calendar__event-action {
335
+ display: flex;
336
+ min-block-size: 0;
337
+ align-items: center;
338
+ gap: var(--zx-space-1);
339
+ padding-block: 2px;
340
+ white-space: nowrap;
341
+ }
342
+ .zx-calendar__event[data-variant="span"] .zx-calendar__event-location,
343
+ .zx-calendar__event[data-variant="month"] .zx-calendar__event-location { display: none; }
344
+ .zx-calendar__event[data-variant="month"] .zx-calendar__event-time { flex: 0 0 auto; }
345
+ .zx-calendar__event[data-variant="month"] .zx-calendar__event-title { flex: 1 1 auto; }
346
+
347
+ .zx-calendar__now {
348
+ position: absolute;
349
+ inset-inline: 0;
350
+ z-index: 3;
351
+ border-block-start: 1px solid var(--zx-color-danger);
352
+ pointer-events: none;
353
+ }
354
+
355
+ .zx-calendar__now[hidden] { display: none; }
356
+ .zx-calendar__now-time {
357
+ position: absolute;
358
+ inset-inline-start: var(--zx-space-1);
359
+ color: var(--zx-color-danger);
360
+ font-size: var(--zx-text-xs);
361
+ font-weight: 700;
362
+ transform: translateY(-100%);
363
+ }
364
+
365
+ .zx-calendar__agenda { display: grid; }
366
+ .zx-calendar__agenda-day {
367
+ display: grid;
368
+ grid-template-columns: minmax(10rem, 22%) minmax(0, 1fr);
369
+ border-block-end: 1px solid var(--zx-color-border);
370
+ }
371
+ .zx-calendar__agenda-heading {
372
+ align-self: stretch;
373
+ appearance: none;
374
+ border: 0;
375
+ border-inline-end: 1px solid var(--zx-color-border);
376
+ border-radius: 0;
377
+ background: var(--zx-color-bg-muted);
378
+ color: var(--zx-color-text);
379
+ padding: var(--zx-space-3);
380
+ font: inherit;
381
+ font-weight: 700;
382
+ text-align: start;
383
+ cursor: pointer;
384
+ }
385
+ .zx-calendar__agenda-heading[aria-current="date"] { color: var(--zx-color-accent); }
386
+ .zx-calendar__agenda-events {
387
+ display: grid;
388
+ min-inline-size: 0;
389
+ }
390
+ .zx-calendar__agenda-empty { margin: 0; color: var(--zx-color-text-muted); padding: var(--zx-space-3); }
391
+ .zx-calendar__agenda-events > .zx-calendar__event { border-block-end: 1px solid var(--zx-color-border); }
392
+ .zx-calendar__agenda-events > .zx-calendar__event:last-child { border-block-end: 0; }
393
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-action {
394
+ grid-template-columns: minmax(6rem, 18%) minmax(0, 1fr);
395
+ grid-template-areas: "time title" "time location";
396
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-4));
397
+ border: 0;
398
+ border-inline-start: 4px solid var(--zx-calendar-event-color);
399
+ border-radius: 0;
400
+ background: var(--zx-color-bg-surface);
401
+ padding: var(--zx-space-3);
402
+ }
403
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-time { grid-area: time; align-self: center; }
404
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-title { grid-area: title; align-self: end; font-size: var(--zx-text-sm); }
405
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-location { grid-area: location; align-self: start; }
406
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-action:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
407
+
408
+ .zx-calendar__month {
409
+ display: grid;
410
+ min-inline-size: 42rem;
411
+ }
412
+
413
+ .zx-calendar__month-weekdays {
414
+ display: grid;
415
+ grid-template-columns: 2.5rem repeat(7, minmax(0, 1fr));
416
+ }
417
+
418
+ .zx-calendar__month-week {
419
+ display: grid;
420
+ grid-template-columns: auto minmax(0, 1fr);
421
+ }
422
+
423
+ .zx-calendar__month-weekdays { border-block-end: 1px solid var(--zx-color-border); }
424
+ .zx-calendar__month-week-gutter,
425
+ .zx-calendar__month-week-number { inline-size: 2.5rem; }
426
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) { grid-template-columns: repeat(7, minmax(0, 1fr)); }
427
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) { grid-template-columns: minmax(0, 1fr); }
428
+ .zx-calendar__month-weekday {
429
+ padding: var(--zx-space-2);
430
+ color: var(--zx-color-text-muted);
431
+ font-size: var(--zx-text-xs);
432
+ font-weight: 650;
433
+ text-align: center;
434
+ text-transform: uppercase;
435
+ letter-spacing: .04em;
436
+ }
437
+ .zx-calendar__month-week { min-block-size: 7.5rem; border-block-end: 1px solid var(--zx-color-border); }
438
+ .zx-calendar__month-week-number {
439
+ grid-row: 1;
440
+ appearance: none;
441
+ border: 0;
442
+ border-inline-end: 1px solid var(--zx-color-border);
443
+ border-radius: 0;
444
+ background: var(--zx-color-bg-muted);
445
+ color: var(--zx-color-text-muted);
446
+ font: inherit;
447
+ font-size: var(--zx-text-xs);
448
+ cursor: pointer;
449
+ }
450
+ .zx-calendar__month-days,
451
+ .zx-calendar__month-events {
452
+ grid-column: 2;
453
+ display: grid;
454
+ grid-template-columns: repeat(7, minmax(0, 1fr));
455
+ }
456
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) .zx-calendar__month-days,
457
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) .zx-calendar__month-events { grid-column: 1; }
458
+ .zx-calendar__month-days {
459
+ grid-row: 1;
460
+ min-block-size: 7.5rem;
461
+ align-items: stretch;
462
+ }
463
+ .zx-calendar__month-day {
464
+ display: flex;
465
+ block-size: 100%;
466
+ appearance: none;
467
+ align-items: flex-start;
468
+ justify-content: flex-end;
469
+ min-block-size: var(--zx-control-height);
470
+ border: 0;
471
+ border-inline-end: 1px solid var(--zx-color-border);
472
+ border-radius: 0;
473
+ background: var(--zx-color-bg-surface);
474
+ color: var(--zx-color-text);
475
+ padding: var(--zx-space-2);
476
+ font: inherit;
477
+ text-align: end;
478
+ cursor: pointer;
479
+ }
480
+ .zx-calendar__month-day:last-child { border-inline-end: 0; }
481
+ .zx-calendar__month-day[data-other-month="true"] { color: var(--zx-color-text-muted); background: var(--zx-color-bg-muted); }
482
+ .zx-calendar__month-day[aria-current="date"] {
483
+ color: var(--zx-color-accent);
484
+ font-weight: 750;
485
+ }
486
+ .zx-calendar__month-day:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
487
+ .zx-calendar__month-events {
488
+ grid-row: 1;
489
+ z-index: 2;
490
+ grid-auto-rows: calc(var(--zx-control-height) - var(--zx-space-2));
491
+ align-content: start;
492
+ gap: 2px 0;
493
+ padding-block: calc(var(--zx-control-height) + var(--zx-space-1)) var(--zx-space-1);
494
+ pointer-events: none;
495
+ }
496
+ .zx-calendar__month-events > .zx-calendar__event,
497
+ .zx-calendar__month-events > .zx-calendar__more { pointer-events: auto; }
498
+ .zx-calendar__event[data-variant="month"] .zx-calendar__event-action {
499
+ border-color: color-mix(in srgb, var(--zx-calendar-event-color) 55%, var(--zx-color-border));
500
+ border-inline-start-width: 1px;
501
+ border-radius: 0;
502
+ background: color-mix(in srgb, var(--zx-calendar-event-color) 13%, var(--zx-color-bg-surface));
503
+ }
504
+ .zx-calendar__event[data-variant="month"][data-all-day="true"] .zx-calendar__event-time { display: none; }
505
+ .zx-calendar__more {
506
+ align-self: center;
507
+ min-block-size: 0;
508
+ overflow: hidden;
509
+ border: 0;
510
+ background: transparent;
511
+ color: var(--zx-color-accent);
512
+ padding-inline: var(--zx-space-2);
513
+ font: inherit;
514
+ font-size: var(--zx-text-xs);
515
+ text-align: start;
516
+ text-overflow: ellipsis;
517
+ white-space: nowrap;
518
+ cursor: pointer;
519
+ }
520
+
521
+ .zx-calendar__year {
522
+ display: grid;
523
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
524
+ gap: var(--zx-space-5);
525
+ padding: var(--zx-space-5);
526
+ }
527
+ .zx-calendar__year-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; align-content: start; }
528
+ .zx-calendar__year-heading { grid-column: 1 / -1; margin: 0 0 var(--zx-space-2); font-size: var(--zx-text-md); }
529
+ .zx-calendar__year-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs); font-weight: 650; text-align: center; }
530
+ .zx-calendar__year-day,
531
+ .zx-calendar__year-blank { aspect-ratio: 1; }
532
+ .zx-calendar__year-day {
533
+ display: grid;
534
+ place-items: center;
535
+ border: 0;
536
+ border-radius: var(--zx-radius-sm);
537
+ background: transparent;
538
+ color: var(--zx-color-text);
539
+ font: inherit;
540
+ font-size: var(--zx-text-xs);
541
+ cursor: pointer;
542
+ }
543
+ .zx-calendar__year-day[data-activity="1"] { background: color-mix(in srgb, var(--zx-color-accent) 10%, var(--zx-color-bg-surface)); }
544
+ .zx-calendar__year-day[data-activity="2"] { background: color-mix(in srgb, var(--zx-color-accent) 20%, var(--zx-color-bg-surface)); }
545
+ .zx-calendar__year-day[data-activity="3"] { background: color-mix(in srgb, var(--zx-color-accent) 32%, var(--zx-color-bg-surface)); font-weight: 700; }
546
+ .zx-calendar__year-day[aria-current="date"] { outline: 2px solid var(--zx-color-accent); outline-offset: -2px; }
547
+ .zx-calendar__year-day:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
548
+
549
+ .zx-calendar__loading {
550
+ position: absolute;
551
+ inset: 0;
552
+ z-index: 10;
553
+ display: grid;
554
+ place-items: center;
555
+ background: color-mix(in srgb, var(--zx-color-bg-surface) 82%, transparent);
556
+ color: var(--zx-color-text);
557
+ font-weight: 650;
558
+ }
559
+ .zx-calendar__loading[hidden] { display: none; }
560
+ .zx-calendar[data-state="loading"] .zx-calendar__body { opacity: .55; }
561
+ .zx-calendar__status {
562
+ position: absolute;
563
+ inline-size: 1px;
564
+ block-size: 1px;
565
+ overflow: hidden;
566
+ clip-path: inset(50%);
567
+ white-space: nowrap;
568
+ }
569
+
570
+ @container (max-width: 44rem) {
571
+ .zx-calendar__toolbar { grid-template-columns: 1fr auto; align-items: start; }
572
+ .zx-calendar__navigation { grid-column: 1; grid-row: 1; }
573
+ .zx-calendar__heading { grid-column: 1 / -1; grid-row: 2; justify-self: start; max-inline-size: 100%; text-align: start; }
574
+ .zx-calendar__commands { display: contents; }
575
+ .zx-calendar__views {
576
+ grid-column: 1 / -1;
577
+ grid-row: 3;
578
+ max-inline-size: 100%;
579
+ }
580
+ .zx-calendar__new { grid-column: 2; grid-row: 1; justify-self: end; }
581
+ .zx-calendar__view-button { flex: 1 0 auto; }
582
+ .zx-calendar__new span { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
583
+ .zx-calendar__agenda-day { grid-template-columns: 1fr; }
584
+ .zx-calendar__agenda-heading {
585
+ position: sticky;
586
+ inset-block-start: 0;
587
+ z-index: 3;
588
+ border-inline-end: 0;
589
+ border-block-end: 1px solid var(--zx-color-border);
590
+ }
591
+ .zx-calendar__agenda-events { grid-column: 1; }
592
+ .zx-calendar__event[data-variant="agenda"] .zx-calendar__event-action { grid-template-columns: 5.5rem minmax(0, 1fr); }
593
+ .zx-calendar__year { grid-template-columns: 1fr; padding: var(--zx-space-3); }
594
+ }
595
+
596
+ [data-zx-density="compact"] .zx-calendar { --zx-calendar-slot-height: 20px; }
597
+
598
+ @media (prefers-reduced-motion: no-preference) {
599
+ .zx-calendar__event { transition: transform var(--zx-dur-fast) var(--zx-ease), opacity var(--zx-dur-fast) var(--zx-ease); }
600
+ .zx-calendar__toolbar-button,
601
+ .zx-calendar__view-button,
602
+ .zx-calendar__new { transition: background var(--zx-dur-fast) var(--zx-ease), border-color var(--zx-dur-fast) var(--zx-ease); }
603
+ }
604
+
605
+ @media (forced-colors: active) {
606
+ .zx-calendar__event-action { border: 1px solid CanvasText; border-inline-start-width: 4px; }
607
+ .zx-calendar__now { border-color: Highlight; }
608
+ .zx-calendar__year-day[data-activity] { outline: 1px solid CanvasText; }
609
+ }