@zeyos/zx 4.4.0 → 5.2.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.
- package/CHANGELOG.md +447 -0
- package/README.md +44 -11
- package/dist/types/components/account-menu/account-menu.d.ts +8 -0
- package/dist/types/components/activity-list/activity-list.d.ts +31 -1
- package/dist/types/components/app-icon/app-icon.d.ts +14 -2
- package/dist/types/components/app-sidebar/app-sidebar.d.ts +293 -17
- package/dist/types/components/avatar/avatar.d.ts +46 -7
- package/dist/types/components/badge/badge.d.ts +21 -1
- package/dist/types/components/button/button.d.ts +15 -0
- package/dist/types/components/calendar/calendar.d.ts +67 -5
- package/dist/types/components/card-view/card-view.d.ts +7 -4
- package/dist/types/components/card-view/record-card.d.ts +11 -0
- package/dist/types/components/chart/chart.d.ts +10 -0
- package/dist/types/components/checklist/checklist.d.ts +9 -0
- package/dist/types/components/code-editor/code-editor.d.ts +6 -17
- package/dist/types/components/context-menu/context-menu.d.ts +6 -2
- package/dist/types/components/data-filter/data-filter.d.ts +4 -4
- package/dist/types/components/datebox/date-range-box.d.ts +5 -1
- package/dist/types/components/datebox/datebox.d.ts +7 -2
- package/dist/types/components/dialog/dialog.d.ts +46 -6
- package/dist/types/components/dropdown/dropdown.d.ts +24 -9
- package/dist/types/components/entity-ref/entity-ref.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +54 -2
- package/dist/types/components/fieldset/external-adapter.d.ts +83 -0
- package/dist/types/components/fieldset/fieldset.d.ts +26 -1
- package/dist/types/components/file-item/file-item.d.ts +34 -6
- package/dist/types/components/file-list/file-list.d.ts +35 -3
- package/dist/types/components/filter/filter.d.ts +127 -3
- package/dist/types/components/filter-panel/filter-panel.d.ts +36 -7
- package/dist/types/components/form/form.d.ts +12 -1
- package/dist/types/components/kanban-view/kanban-card.d.ts +8 -0
- package/dist/types/components/launcher/launcher.d.ts +268 -15
- package/dist/types/components/list-toolbar/list-toolbar.d.ts +16 -7
- package/dist/types/components/menu-button/menu-button.d.ts +39 -5
- package/dist/types/components/message/message.d.ts +132 -17
- package/dist/types/components/modal/modal.d.ts +43 -2
- package/dist/types/components/module-bar/module-bar.d.ts +395 -0
- package/dist/types/components/pagination/pagination.d.ts +17 -3
- package/dist/types/components/select/color.d.ts +12 -0
- package/dist/types/components/select/glyphs.d.ts +124 -0
- package/dist/types/components/select/select.d.ts +17 -3
- package/dist/types/components/sheet/sheet.d.ts +15 -0
- package/dist/types/components/stat-tile/stat-tile.d.ts +16 -5
- package/dist/types/components/tabbox/tabbox.d.ts +9 -0
- package/dist/types/components/table/table.d.ts +311 -18
- package/dist/types/components/tag-picker/tag-picker.d.ts +21 -4
- package/dist/types/components/tree/tree.d.ts +13 -0
- package/dist/types/components/view/record-view.d.ts +59 -2
- package/dist/types/components/view-settings/view-settings.d.ts +879 -0
- package/dist/types/components/workspace-switcher/workspace-switcher.d.ts +327 -0
- package/dist/types/core/breakpoint.d.ts +1 -1
- package/dist/types/core/component.d.ts +12 -2
- package/dist/types/core/i18n.d.ts +27 -3
- package/dist/types/core/icons.d.ts +23 -25
- package/dist/types/core/keyboard.d.ts +98 -1
- package/dist/types/core/messages.d.ts +382 -0
- package/dist/types/core/motion.d.ts +59 -0
- package/dist/types/core/overlay-host.d.ts +42 -1
- package/dist/types/core/overlay-stack.d.ts +260 -0
- package/dist/types/index.d.ts +10 -5
- package/dist/types/internal/app-rail.d.ts +38 -0
- package/dist/types/internal/menu-items.d.ts +71 -3
- package/dist/types/zeyos/connect.d.ts +6 -0
- package/dist/types/zeyos/form.d.ts +50 -9
- package/dist/types/zeyos/index.d.ts +2 -1
- package/dist/types/zeyos/launcher.d.ts +9 -0
- package/dist/types/zeyos/module-bar.d.ts +176 -0
- package/dist/types/zeyos/query.d.ts +110 -5
- package/dist/types/zeyos/schema.d.ts +24 -1
- package/dist/types/zeyos/table.d.ts +345 -22
- package/dist/types/zeyos/view.d.ts +26 -2
- package/dist/zx-zeyos.esm.js +6178 -1008
- package/dist/zx-zeyos.esm.min.js +53 -5
- package/dist/zx.css +2861 -827
- package/dist/zx.esm.js +8909 -1480
- package/dist/zx.esm.min.js +55 -7
- package/dist/zx.global.js +8911 -1482
- package/dist/zx.global.min.js +55 -7
- package/dist/zx.min.css +1 -1
- package/docs/api.json +1079 -117
- package/docs/llms.md +956 -154
- package/docs/llms.txt +9 -5
- package/package.json +1 -1
- package/src/components/account-menu/account-menu.css +35 -10
- package/src/components/account-menu/account-menu.js +12 -0
- package/src/components/activity-item/activity-item.css +1 -1
- package/src/components/activity-item/activity-item.js +3 -0
- package/src/components/activity-list/activity-list.css +38 -3
- package/src/components/activity-list/activity-list.js +61 -1
- package/src/components/app-icon/app-icon.css +14 -3
- package/src/components/app-icon/app-icon.js +11 -1
- package/src/components/app-rail/app-rail.css +59 -79
- package/src/components/app-sidebar/app-sidebar.css +304 -168
- package/src/components/app-sidebar/app-sidebar.js +667 -46
- package/src/components/aurora/aurora.css +5 -3
- package/src/components/avatar/avatar.css +32 -7
- package/src/components/avatar/avatar.js +72 -8
- package/src/components/badge/badge.css +54 -2
- package/src/components/badge/badge.js +29 -2
- package/src/components/breadcrumb/breadcrumb.css +1 -1
- package/src/components/button/button.css +67 -9
- package/src/components/button/button.js +38 -0
- package/src/components/calendar/calendar.css +47 -47
- package/src/components/calendar/calendar.js +26 -52
- package/src/components/card/card.css +4 -4
- package/src/components/card-view/card-view.css +14 -12
- package/src/components/card-view/card-view.js +13 -9
- package/src/components/card-view/record-card.js +14 -3
- package/src/components/chart/chart.css +4 -1
- package/src/components/chart/chart.js +12 -0
- package/src/components/check-button/check-button.css +10 -2
- package/src/components/checklist/checklist.css +9 -2
- package/src/components/checklist/checklist.js +11 -5
- package/src/components/checklist/field-adapter.js +3 -1
- package/src/components/code-editor/code-editor.css +7 -6
- package/src/components/code-editor/code-editor.js +19 -1
- package/src/components/code-editor/field-adapter.js +9 -2
- package/src/components/context-menu/context-menu.css +9 -4
- package/src/components/context-menu/context-menu.js +8 -2
- package/src/components/copy/copy-button.css +6 -0
- package/src/components/copy/copy-input.css +9 -4
- package/src/components/data-filter/data-filter.css +5 -4
- package/src/components/data-filter/data-filter.js +2 -2
- package/src/components/date-picker/date-picker.css +6 -6
- package/src/components/date-picker/date-range-picker.css +3 -3
- package/src/components/date-picker/time-picker.css +3 -3
- package/src/components/datebox/date-range-box.css +79 -2
- package/src/components/datebox/date-range-box.js +13 -2
- package/src/components/datebox/datebox.css +79 -2
- package/src/components/datebox/datebox.js +13 -2
- package/src/components/dialog/dialog.css +26 -0
- package/src/components/dialog/dialog.js +99 -17
- package/src/components/dock/dock.css +5 -4
- package/src/components/dropdown/dropdown.css +1 -1
- package/src/components/dropdown/dropdown.js +159 -72
- package/src/components/empty-state/empty-state.css +2 -2
- package/src/components/entity-ref/entity-ref.css +1 -1
- package/src/components/entity-ref/entity-ref.js +1 -1
- package/src/components/field/field.css +28 -9
- package/src/components/field/field.js +101 -29
- package/src/components/field-upload/field-upload.css +1 -1
- package/src/components/fieldset/external-adapter.js +363 -0
- package/src/components/fieldset/fieldset.css +5 -3
- package/src/components/fieldset/fieldset.js +38 -64
- package/src/components/file-item/file-item.js +144 -10
- package/src/components/file-list/file-list.js +144 -21
- package/src/components/filter/filter.css +86 -2
- package/src/components/filter/filter.js +307 -11
- package/src/components/filter-panel/filter-panel.css +1 -1
- package/src/components/filter-panel/filter-panel.js +149 -32
- package/src/components/finder/finder.css +16 -14
- package/src/components/form/form.css +5 -4
- package/src/components/form/form.js +11 -2
- package/src/components/grid/grid.css +1 -1
- package/src/components/groupbox/groupbox.css +1 -1
- package/src/components/kanban-view/kanban-card.js +11 -3
- package/src/components/kanban-view/kanban-view.css +42 -18
- package/src/components/kanban-view/kanban-view.js +9 -6
- package/src/components/launcher/launcher.css +108 -26
- package/src/components/launcher/launcher.js +530 -42
- package/src/components/list-toolbar/list-toolbar.css +13 -8
- package/src/components/list-toolbar/list-toolbar.js +40 -14
- package/src/components/master-panel/master-panel.css +2 -0
- package/src/components/master-panel/master-panel.js +0 -1
- package/src/components/menu-button/menu-button.css +72 -4
- package/src/components/menu-button/menu-button.js +160 -18
- package/src/components/message/message.css +33 -3
- package/src/components/message/message.js +264 -22
- package/src/components/modal/modal.css +1 -1
- package/src/components/modal/modal.js +83 -15
- package/src/components/module-bar/module-bar.css +486 -0
- package/src/components/module-bar/module-bar.js +1074 -0
- package/src/components/multi-value-editor/multi-value-editor.css +1 -1
- package/src/components/navigation-bar/navigation-bar.css +18 -9
- package/src/components/number-field/field-adapter.js +3 -1
- package/src/components/number-field/number-field.css +70 -0
- package/src/components/number-field/number-field.js +2 -0
- package/src/components/pagination/pagination.css +13 -11
- package/src/components/pagination/pagination.js +20 -4
- package/src/components/panel/panel.css +4 -3
- package/src/components/questionnaire/questionnaire.css +4 -4
- package/src/components/rating/field-adapter.js +2 -1
- package/src/components/rating/rating.css +8 -1
- package/src/components/search/search.css +4 -1
- package/src/components/select/color.js +22 -0
- package/src/components/select/field-adapter.js +2 -0
- package/src/components/select/glyphs.js +165 -0
- package/src/components/select/select.css +138 -45
- package/src/components/select/select.js +92 -47
- package/src/components/sheet/sheet.css +12 -9
- package/src/components/sheet/sheet.js +74 -32
- package/src/components/slider/field-adapter.js +6 -1
- package/src/components/slider/slider.css +18 -4
- package/src/components/slider/slider.js +1 -1
- package/src/components/sort-control/sort-control.css +4 -1
- package/src/components/split-view/split-view.css +1 -1
- package/src/components/stat-tile/stat-tile.css +42 -47
- package/src/components/stat-tile/stat-tile.js +17 -6
- package/src/components/stepper/stepper.css +1 -1
- package/src/components/tabbox/tabbox.css +41 -32
- package/src/components/tabbox/tabbox.js +5 -1
- package/src/components/table/table.css +187 -37
- package/src/components/table/table.js +718 -73
- package/src/components/tag-picker/field-adapter.js +2 -1
- package/src/components/tag-picker/tag-picker.css +83 -5
- package/src/components/tag-picker/tag-picker.js +25 -8
- package/src/components/timebox/timebox.css +22 -2
- package/src/components/toggle/toggle.css +12 -1
- package/src/components/toolbar/toolbar.js +2 -2
- package/src/components/tooltip/tooltip.css +4 -0
- package/src/components/tooltip/tooltip.js +44 -19
- package/src/components/tree/tree.css +26 -17
- package/src/components/tree/tree.js +31 -0
- package/src/components/value-list/value-list.css +3 -3
- package/src/components/view/record-view.css +1 -1
- package/src/components/view/record-view.js +178 -18
- package/src/components/view-settings/view-settings.css +285 -0
- package/src/components/view-settings/view-settings.js +1830 -0
- package/src/components/workspace-switcher/workspace-switcher.css +188 -0
- package/src/components/workspace-switcher/workspace-switcher.js +463 -0
- package/src/core/breakpoint.js +1 -1
- package/src/core/component.js +88 -17
- package/src/core/fontawesome.js +5 -1
- package/src/core/i18n.js +47 -4
- package/src/core/icons.js +204 -61
- package/src/core/keyboard.js +206 -11
- package/src/core/messages.js +427 -0
- package/src/core/motion.js +147 -0
- package/src/core/overlay-host.js +77 -3
- package/src/core/overlay-stack.js +487 -0
- package/src/core/position.js +22 -3
- package/src/index.js +10 -5
- package/src/internal/app-rail.js +135 -55
- package/src/internal/menu-items.js +61 -3
- package/src/zeyos/connect.js +6 -2
- package/src/zeyos/form.js +69 -27
- package/src/zeyos/index.js +4 -1
- package/src/zeyos/launcher.js +8 -3
- package/src/zeyos/module-bar.js +181 -0
- package/src/zeyos/query.js +197 -13
- package/src/zeyos/schema.js +144 -27
- package/src/zeyos/table.js +287 -84
- package/src/zeyos/view.js +49 -93
- package/styles/base.css +72 -1
- package/styles/icons.css +11 -1
- package/styles/print.css +1 -1
- package/styles/tokens/dark.css +117 -37
- package/styles/tokens/global.css +121 -27
- package/styles/tokens/semantic.css +140 -43
- package/styles/tokens/themes.css +7 -6
- package/styles/zx.css +3 -1
- package/styles/tokens/density.css +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.zx-calendar {
|
|
2
2
|
--zx-calendar-time-axis: 4.75rem;
|
|
3
|
-
--zx-calendar-slot-height:
|
|
3
|
+
--zx-calendar-slot-height: var(--zx-space-6);
|
|
4
4
|
--zx-calendar-event-color: var(--zx-color-accent);
|
|
5
5
|
position: relative;
|
|
6
6
|
container-type: inline-size;
|
|
@@ -40,13 +40,15 @@
|
|
|
40
40
|
|
|
41
41
|
.zx-calendar__navigation { justify-self: start; gap: var(--zx-space-1); }
|
|
42
42
|
.zx-calendar__commands { justify-self: end; gap: var(--zx-space-3); }
|
|
43
|
+
/* The view switch is one framed control with the current view on the neutral current fill — the
|
|
44
|
+
same recipe as ListToolbar's view switch and the segmented Tabbox. */
|
|
43
45
|
.zx-calendar__views {
|
|
44
46
|
block-size: var(--zx-control-height);
|
|
45
47
|
gap: 2px;
|
|
46
48
|
overflow-x: auto;
|
|
47
|
-
border
|
|
48
|
-
|
|
49
|
-
padding:
|
|
49
|
+
border: 1px solid var(--zx-color-border-control);
|
|
50
|
+
border-radius: var(--zx-control-radius);
|
|
51
|
+
padding: 2px;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
.zx-calendar__toolbar-button,
|
|
@@ -75,32 +77,32 @@
|
|
|
75
77
|
block-size: 100%;
|
|
76
78
|
min-block-size: 0;
|
|
77
79
|
border-color: transparent;
|
|
78
|
-
border-radius:
|
|
80
|
+
border-radius: max(0px, calc(var(--zx-control-radius) - 2px));
|
|
79
81
|
background: transparent;
|
|
82
|
+
color: var(--zx-color-text-muted);
|
|
80
83
|
padding-inline: var(--zx-space-3);
|
|
84
|
+
font-weight: var(--zx-weight-medium);
|
|
81
85
|
}
|
|
86
|
+
.zx-calendar__view-button:hover:not(:disabled) { color: var(--zx-color-text); }
|
|
82
87
|
.zx-calendar__view-button[aria-pressed="true"] {
|
|
83
|
-
|
|
84
|
-
z-index: 1;
|
|
85
|
-
border-color: var(--zx-color-border-control);
|
|
86
|
-
background: var(--zx-color-bg-control);
|
|
87
|
-
box-shadow: var(--zx-shadow-2);
|
|
88
|
+
background: var(--zx-color-bg-current);
|
|
88
89
|
color: var(--zx-color-text);
|
|
90
|
+
font-weight: var(--zx-weight-semibold);
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
.zx-calendar__new {
|
|
92
94
|
gap: var(--zx-space-2);
|
|
93
|
-
border-color: var(--zx-color-accent);
|
|
95
|
+
border-color: var(--zx-color-accent-solid);
|
|
94
96
|
border-radius: var(--zx-control-radius);
|
|
95
|
-
background: var(--zx-color-accent);
|
|
96
|
-
color: var(--zx-color-on-accent);
|
|
97
|
+
background: var(--zx-color-accent-solid);
|
|
98
|
+
color: var(--zx-color-on-accent-solid);
|
|
97
99
|
padding-inline: var(--zx-space-3);
|
|
98
|
-
font-weight:
|
|
100
|
+
font-weight: var(--zx-weight-medium);
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
.zx-calendar__toolbar-button:hover:not(:disabled),
|
|
102
104
|
.zx-calendar__view-button:hover:not(:disabled):not([aria-pressed="true"]) { background: var(--zx-color-bg-hover); }
|
|
103
|
-
.zx-calendar__new:hover:not(:disabled) { background: var(--zx-color-accent-hover); }
|
|
105
|
+
.zx-calendar__new:hover:not(:disabled) { border-color: var(--zx-color-accent-solid-hover); background: var(--zx-color-accent-solid-hover); }
|
|
104
106
|
.zx-calendar button:disabled { cursor: default; opacity: .55; }
|
|
105
107
|
|
|
106
108
|
.zx-calendar__toolbar-button:focus-visible,
|
|
@@ -116,7 +118,7 @@
|
|
|
116
118
|
.zx-calendar__more:focus-visible,
|
|
117
119
|
.zx-calendar__month-week-number:focus-visible {
|
|
118
120
|
z-index: 4;
|
|
119
|
-
outline:
|
|
121
|
+
outline-color: transparent;
|
|
120
122
|
box-shadow: var(--zx-focus-ring);
|
|
121
123
|
}
|
|
122
124
|
|
|
@@ -126,7 +128,8 @@
|
|
|
126
128
|
overflow: hidden;
|
|
127
129
|
color: var(--zx-color-text);
|
|
128
130
|
font-size: var(--zx-text-lg);
|
|
129
|
-
font-weight:
|
|
131
|
+
font-weight: var(--zx-weight-semibold);
|
|
132
|
+
letter-spacing: var(--zx-tracking-title);
|
|
130
133
|
line-height: 1.25;
|
|
131
134
|
text-align: center;
|
|
132
135
|
text-overflow: ellipsis;
|
|
@@ -148,10 +151,10 @@
|
|
|
148
151
|
}
|
|
149
152
|
|
|
150
153
|
.zx-calendar__time-header,
|
|
151
|
-
.zx-calendar__all-day { border-block-end: 1px solid var(--zx-color-border); }
|
|
154
|
+
.zx-calendar__all-day { border-block-end: 1px solid var(--zx-color-border-subtle); }
|
|
152
155
|
.zx-calendar__time-corner,
|
|
153
156
|
.zx-calendar__all-day-label {
|
|
154
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
157
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
155
158
|
color: var(--zx-color-text-muted);
|
|
156
159
|
}
|
|
157
160
|
|
|
@@ -167,7 +170,7 @@
|
|
|
167
170
|
place-content: center;
|
|
168
171
|
border: 0;
|
|
169
172
|
border-radius: 0;
|
|
170
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
173
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
171
174
|
background: var(--zx-color-bg-surface);
|
|
172
175
|
color: var(--zx-color-text);
|
|
173
176
|
font: inherit;
|
|
@@ -176,8 +179,8 @@
|
|
|
176
179
|
|
|
177
180
|
.zx-calendar__day-heading:last-child { border-inline-end: 0; }
|
|
178
181
|
.zx-calendar__day-heading:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
|
|
179
|
-
.zx-calendar__day-heading[aria-current="date"] .zx-calendar__day-number { color: var(--zx-color-accent); font-weight:
|
|
180
|
-
.zx-calendar__day-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs);
|
|
182
|
+
.zx-calendar__day-heading[aria-current="date"] .zx-calendar__day-number { color: var(--zx-color-accent); font-weight: 650; }
|
|
183
|
+
.zx-calendar__day-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs); font-weight: var(--zx-weight-medium); }
|
|
181
184
|
.zx-calendar__day-number { font-size: var(--zx-text-sm); }
|
|
182
185
|
|
|
183
186
|
.zx-calendar__all-day { min-block-size: calc(var(--zx-control-height) + var(--zx-space-2)); }
|
|
@@ -198,7 +201,7 @@
|
|
|
198
201
|
overflow: hidden;
|
|
199
202
|
}
|
|
200
203
|
|
|
201
|
-
.zx-calendar__all-day-cell { border-inline-end: 1px solid var(--zx-color-border); }
|
|
204
|
+
.zx-calendar__all-day-cell { border-inline-end: 1px solid var(--zx-color-border-subtle); }
|
|
202
205
|
.zx-calendar__all-day-cell:last-of-type { border-inline-end: 0; }
|
|
203
206
|
|
|
204
207
|
.zx-calendar__time-scroller {
|
|
@@ -212,7 +215,7 @@
|
|
|
212
215
|
.zx-calendar__time-axis {
|
|
213
216
|
position: relative;
|
|
214
217
|
z-index: 2;
|
|
215
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
218
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
216
219
|
background: var(--zx-color-bg-surface);
|
|
217
220
|
}
|
|
218
221
|
|
|
@@ -247,8 +250,8 @@
|
|
|
247
250
|
min-inline-size: 0;
|
|
248
251
|
border: 0;
|
|
249
252
|
border-radius: 0;
|
|
250
|
-
border-block-start: 1px solid var(--zx-color-border);
|
|
251
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
253
|
+
border-block-start: 1px solid var(--zx-color-border-subtle);
|
|
254
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
252
255
|
background: var(--zx-color-bg-surface);
|
|
253
256
|
padding: 0;
|
|
254
257
|
cursor: crosshair;
|
|
@@ -321,7 +324,7 @@
|
|
|
321
324
|
}
|
|
322
325
|
|
|
323
326
|
.zx-calendar__event-time { overflow: hidden; color: var(--zx-color-text-muted); text-overflow: ellipsis; white-space: nowrap; }
|
|
324
|
-
.zx-calendar__event-title { overflow: hidden; font-weight:
|
|
327
|
+
.zx-calendar__event-title { overflow: hidden; font-weight: var(--zx-weight-semibold); text-overflow: ellipsis; white-space: nowrap; }
|
|
325
328
|
.zx-calendar__event-location { overflow: hidden; color: var(--zx-color-text-muted); text-overflow: ellipsis; white-space: nowrap; }
|
|
326
329
|
|
|
327
330
|
.zx-calendar__event-resize {
|
|
@@ -378,7 +381,8 @@
|
|
|
378
381
|
inset-inline-start: var(--zx-space-1);
|
|
379
382
|
color: var(--zx-color-danger);
|
|
380
383
|
font-size: var(--zx-text-xs);
|
|
381
|
-
font-weight:
|
|
384
|
+
font-weight: var(--zx-weight-semibold);
|
|
385
|
+
font-variant-numeric: tabular-nums;
|
|
382
386
|
transform: translateY(-100%);
|
|
383
387
|
}
|
|
384
388
|
|
|
@@ -386,19 +390,19 @@
|
|
|
386
390
|
.zx-calendar__agenda-day {
|
|
387
391
|
display: grid;
|
|
388
392
|
grid-template-columns: minmax(10rem, 22%) minmax(0, 1fr);
|
|
389
|
-
border-block-end: 1px solid var(--zx-color-border);
|
|
393
|
+
border-block-end: 1px solid var(--zx-color-border-subtle);
|
|
390
394
|
}
|
|
391
395
|
.zx-calendar__agenda-heading {
|
|
392
396
|
align-self: stretch;
|
|
393
397
|
appearance: none;
|
|
394
398
|
border: 0;
|
|
395
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
399
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
396
400
|
border-radius: 0;
|
|
397
401
|
background: var(--zx-color-bg-muted);
|
|
398
402
|
color: var(--zx-color-text);
|
|
399
403
|
padding: var(--zx-space-3);
|
|
400
404
|
font: inherit;
|
|
401
|
-
font-weight:
|
|
405
|
+
font-weight: var(--zx-weight-semibold);
|
|
402
406
|
text-align: start;
|
|
403
407
|
cursor: pointer;
|
|
404
408
|
}
|
|
@@ -408,7 +412,7 @@
|
|
|
408
412
|
min-inline-size: 0;
|
|
409
413
|
}
|
|
410
414
|
.zx-calendar__agenda-empty { margin: 0; color: var(--zx-color-text-muted); padding: var(--zx-space-3); }
|
|
411
|
-
.zx-calendar__agenda-events > .zx-calendar__event { border-block-end: 1px solid var(--zx-color-border); }
|
|
415
|
+
.zx-calendar__agenda-events > .zx-calendar__event { border-block-end: 1px solid var(--zx-color-border-subtle); }
|
|
412
416
|
.zx-calendar__agenda-events > .zx-calendar__event:last-child { border-block-end: 0; }
|
|
413
417
|
.zx-calendar__event[data-variant="agenda"] .zx-calendar__event-action {
|
|
414
418
|
grid-template-columns: minmax(6rem, 18%) minmax(0, 1fr);
|
|
@@ -440,7 +444,7 @@
|
|
|
440
444
|
grid-template-columns: auto minmax(0, 1fr);
|
|
441
445
|
}
|
|
442
446
|
|
|
443
|
-
.zx-calendar__month-weekdays { border-block-end: 1px solid var(--zx-color-border); }
|
|
447
|
+
.zx-calendar__month-weekdays { border-block-end: 1px solid var(--zx-color-border-subtle); }
|
|
444
448
|
.zx-calendar__month-week-gutter,
|
|
445
449
|
.zx-calendar__month-week-number { inline-size: 2.5rem; }
|
|
446
450
|
.zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) { grid-template-columns: repeat(7, minmax(0, 1fr)); }
|
|
@@ -449,17 +453,15 @@
|
|
|
449
453
|
padding: var(--zx-space-2);
|
|
450
454
|
color: var(--zx-color-text-muted);
|
|
451
455
|
font-size: var(--zx-text-xs);
|
|
452
|
-
font-weight:
|
|
456
|
+
font-weight: var(--zx-weight-medium);
|
|
453
457
|
text-align: center;
|
|
454
|
-
text-transform: uppercase;
|
|
455
|
-
letter-spacing: .04em;
|
|
456
458
|
}
|
|
457
|
-
.zx-calendar__month-week { min-block-size: 7.5rem; border-block-end: 1px solid var(--zx-color-border); }
|
|
459
|
+
.zx-calendar__month-week { min-block-size: 7.5rem; border-block-end: 1px solid var(--zx-color-border-subtle); }
|
|
458
460
|
.zx-calendar__month-week-number {
|
|
459
461
|
grid-row: 1;
|
|
460
462
|
appearance: none;
|
|
461
463
|
border: 0;
|
|
462
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
464
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
463
465
|
border-radius: 0;
|
|
464
466
|
background: var(--zx-color-bg-muted);
|
|
465
467
|
color: var(--zx-color-text-muted);
|
|
@@ -488,7 +490,7 @@
|
|
|
488
490
|
justify-content: flex-end;
|
|
489
491
|
min-block-size: var(--zx-control-height);
|
|
490
492
|
border: 0;
|
|
491
|
-
border-inline-end: 1px solid var(--zx-color-border);
|
|
493
|
+
border-inline-end: 1px solid var(--zx-color-border-subtle);
|
|
492
494
|
border-radius: 0;
|
|
493
495
|
background: var(--zx-color-bg-surface);
|
|
494
496
|
color: var(--zx-color-text);
|
|
@@ -501,7 +503,7 @@
|
|
|
501
503
|
.zx-calendar__month-day[data-other-month="true"] { color: var(--zx-color-text-muted); background: var(--zx-color-bg-muted); }
|
|
502
504
|
.zx-calendar__month-day[aria-current="date"] {
|
|
503
505
|
color: var(--zx-color-accent);
|
|
504
|
-
font-weight:
|
|
506
|
+
font-weight: 650;
|
|
505
507
|
}
|
|
506
508
|
.zx-calendar__month-day:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
|
|
507
509
|
.zx-calendar__month-events {
|
|
@@ -545,8 +547,8 @@
|
|
|
545
547
|
padding: var(--zx-space-5);
|
|
546
548
|
}
|
|
547
549
|
.zx-calendar__year-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; align-content: start; }
|
|
548
|
-
.zx-calendar__year-heading { grid-column: 1 / -1; margin: 0 0 var(--zx-space-2); font-size: var(--zx-text-md); }
|
|
549
|
-
.zx-calendar__year-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs); font-weight:
|
|
550
|
+
.zx-calendar__year-heading { grid-column: 1 / -1; margin: 0 0 var(--zx-space-2); font-size: var(--zx-text-md); font-weight: var(--zx-weight-semibold); }
|
|
551
|
+
.zx-calendar__year-weekday { color: var(--zx-color-text-muted); font-size: var(--zx-text-xs); font-weight: var(--zx-weight-medium); text-align: center; }
|
|
550
552
|
.zx-calendar__year-day,
|
|
551
553
|
.zx-calendar__year-blank { aspect-ratio: 1; }
|
|
552
554
|
.zx-calendar__year-day {
|
|
@@ -562,7 +564,7 @@
|
|
|
562
564
|
}
|
|
563
565
|
.zx-calendar__year-day[data-activity="1"] { background: color-mix(in srgb, var(--zx-color-accent) 10%, var(--zx-color-bg-surface)); }
|
|
564
566
|
.zx-calendar__year-day[data-activity="2"] { background: color-mix(in srgb, var(--zx-color-accent) 20%, var(--zx-color-bg-surface)); }
|
|
565
|
-
.zx-calendar__year-day[data-activity="3"] { background: color-mix(in srgb, var(--zx-color-accent) 32%, var(--zx-color-bg-surface)); font-weight:
|
|
567
|
+
.zx-calendar__year-day[data-activity="3"] { background: color-mix(in srgb, var(--zx-color-accent) 32%, var(--zx-color-bg-surface)); font-weight: var(--zx-weight-semibold); }
|
|
566
568
|
.zx-calendar__year-day[aria-current="date"] { outline: 2px solid var(--zx-color-accent); outline-offset: -2px; }
|
|
567
569
|
.zx-calendar__year-day:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
|
|
568
570
|
|
|
@@ -574,7 +576,7 @@
|
|
|
574
576
|
place-items: center;
|
|
575
577
|
background: color-mix(in srgb, var(--zx-color-bg-surface) 82%, transparent);
|
|
576
578
|
color: var(--zx-color-text);
|
|
577
|
-
font-weight:
|
|
579
|
+
font-weight: var(--zx-weight-medium);
|
|
578
580
|
}
|
|
579
581
|
.zx-calendar__loading[hidden] { display: none; }
|
|
580
582
|
.zx-calendar[data-state="loading"] .zx-calendar__body { opacity: .55; }
|
|
@@ -606,15 +608,13 @@
|
|
|
606
608
|
inset-block-start: 0;
|
|
607
609
|
z-index: 3;
|
|
608
610
|
border-inline-end: 0;
|
|
609
|
-
border-block-end: 1px solid var(--zx-color-border);
|
|
611
|
+
border-block-end: 1px solid var(--zx-color-border-subtle);
|
|
610
612
|
}
|
|
611
613
|
.zx-calendar__agenda-events { grid-column: 1; }
|
|
612
614
|
.zx-calendar__event[data-variant="agenda"] .zx-calendar__event-action { grid-template-columns: 5.5rem minmax(0, 1fr); }
|
|
613
615
|
.zx-calendar__year { grid-template-columns: 1fr; padding: var(--zx-space-3); }
|
|
614
616
|
}
|
|
615
617
|
|
|
616
|
-
[data-zx-density="compact"] .zx-calendar { --zx-calendar-slot-height: 20px; }
|
|
617
|
-
|
|
618
618
|
@media (prefers-reduced-motion: no-preference) {
|
|
619
619
|
.zx-calendar__event { transition: transform var(--zx-dur-fast) var(--zx-ease), opacity var(--zx-dur-fast) var(--zx-ease); }
|
|
620
620
|
.zx-calendar__toolbar-button,
|
|
@@ -47,7 +47,9 @@ import {
|
|
|
47
47
|
* @property {CalendarReader} [eventEditable='editable'] Per-event move reader.
|
|
48
48
|
* @property {CalendarReader} [eventDurationEditable='durationEditable'] Per-event resize reader.
|
|
49
49
|
* @property {'milliseconds'|'seconds'} [dateUnit='milliseconds'] Unit for numeric event dates.
|
|
50
|
-
* @property {Record<string, string>} [msg]
|
|
50
|
+
* @property {Record<string, string>} [msg] Per-instance messages, keyed `calendar.*` (`calendar.today`,
|
|
51
|
+
* `calendar.next`, …). The bare keys of earlier versions (`today`, `next`) are still read, after the
|
|
52
|
+
* namespaced key, until the next major version.
|
|
51
53
|
* @property {(event: CalendarEvent) => Node|string|null} [renderEvent] Optional safe event-content renderer.
|
|
52
54
|
* @property {(event: CustomEvent<{events: CalendarEvent[]}>) => void} [oneventschange] Programmatic event-data listener.
|
|
53
55
|
* @property {(event: CustomEvent<{view: CalendarView, oldView: CalendarView}>) => void} [onviewchange] View listener.
|
|
@@ -73,31 +75,6 @@ import {
|
|
|
73
75
|
|
|
74
76
|
/** @typedef {{silent?: boolean}} CalendarSetOptions */
|
|
75
77
|
|
|
76
|
-
const DEFAULT_MESSAGES = {
|
|
77
|
-
today: 'Today',
|
|
78
|
-
new: 'New',
|
|
79
|
-
agenda: 'Agenda',
|
|
80
|
-
day: 'Day',
|
|
81
|
-
week: 'Week',
|
|
82
|
-
month: 'Month',
|
|
83
|
-
year: 'Year',
|
|
84
|
-
previous: 'Previous period',
|
|
85
|
-
next: 'Next period',
|
|
86
|
-
allDay: 'All day',
|
|
87
|
-
noEvents: 'No events',
|
|
88
|
-
more: '+%1 more',
|
|
89
|
-
loading: 'Loading calendar…',
|
|
90
|
-
move: 'Move %1',
|
|
91
|
-
resize: 'Resize %1',
|
|
92
|
-
moveStarted: 'Moving %1. Use arrow keys, Space to drop, or Escape to cancel.',
|
|
93
|
-
resizeStarted: 'Resizing %1. Use arrow keys, Space to drop, or Escape to cancel.',
|
|
94
|
-
editPreview: '%1, %2 to %3',
|
|
95
|
-
editCancelled: 'Calendar edit cancelled.',
|
|
96
|
-
editCommitted: '%1 updated.',
|
|
97
|
-
calendar: 'Calendar',
|
|
98
|
-
weekNumber: 'Week %1'
|
|
99
|
-
};
|
|
100
|
-
|
|
101
78
|
/**
|
|
102
79
|
* Accessible, dependency-free agenda/day/week/month/year scheduling surface.
|
|
103
80
|
* @fires Calendar#viewchange
|
|
@@ -147,8 +124,7 @@ export class Calendar extends Component {
|
|
|
147
124
|
eventLocation: 'location',
|
|
148
125
|
eventEditable: 'editable',
|
|
149
126
|
eventDurationEditable: 'durationEditable',
|
|
150
|
-
dateUnit: 'milliseconds'
|
|
151
|
-
msg: DEFAULT_MESSAGES
|
|
127
|
+
dateUnit: 'milliseconds'
|
|
152
128
|
};
|
|
153
129
|
|
|
154
130
|
/** @returns {HTMLElement} */
|
|
@@ -178,9 +154,9 @@ export class Calendar extends Component {
|
|
|
178
154
|
this._nowTimer = null;
|
|
179
155
|
|
|
180
156
|
const navigation = h('div', { class: 'zx-calendar__navigation' },
|
|
181
|
-
this._toolbarButton('previous', this.msg('previous'), 'chevron-left'),
|
|
182
|
-
this._toolbarButton('today', this.msg('today')),
|
|
183
|
-
this._toolbarButton('next', this.msg('next'), 'chevron-right'));
|
|
157
|
+
this._toolbarButton('previous', this.msg('calendar.previous'), 'chevron-left'),
|
|
158
|
+
this._toolbarButton('today', this.msg('calendar.today')),
|
|
159
|
+
this._toolbarButton('next', this.msg('calendar.next'), 'chevron-right'));
|
|
184
160
|
const heading = h('h2', {
|
|
185
161
|
ref: 'heading',
|
|
186
162
|
class: 'zx-calendar__heading',
|
|
@@ -196,14 +172,14 @@ export class Calendar extends Component {
|
|
|
196
172
|
class: 'zx-calendar__view-button',
|
|
197
173
|
dataset: { calendarAction: 'view', view },
|
|
198
174
|
disabled: this.options.disabled
|
|
199
|
-
}, this.msg(view))));
|
|
175
|
+
}, this.msg(`calendar.${view}`))));
|
|
200
176
|
const commands = h('div', { class: 'zx-calendar__commands' }, views,
|
|
201
177
|
h('button', {
|
|
202
178
|
type: 'button',
|
|
203
179
|
class: 'zx-calendar__new',
|
|
204
180
|
dataset: { calendarAction: 'new' },
|
|
205
181
|
disabled: this.options.disabled
|
|
206
|
-
}, icon('plus'), h('span', {}, this.msg('new'))));
|
|
182
|
+
}, icon('plus'), h('span', {}, this.msg('calendar.new'))));
|
|
207
183
|
const toolbar = h('header', { class: 'zx-calendar__toolbar' }, navigation, heading, commands);
|
|
208
184
|
const body = h('div', { ref: 'body', class: 'zx-calendar__body' });
|
|
209
185
|
const loading = h('div', {
|
|
@@ -211,7 +187,7 @@ export class Calendar extends Component {
|
|
|
211
187
|
class: 'zx-calendar__loading',
|
|
212
188
|
role: 'status',
|
|
213
189
|
hidden: true
|
|
214
|
-
}, this.msg('loading'));
|
|
190
|
+
}, this.msg('calendar.loading'));
|
|
215
191
|
const status = h('div', {
|
|
216
192
|
ref: 'status',
|
|
217
193
|
class: 'zx-calendar__status',
|
|
@@ -220,7 +196,7 @@ export class Calendar extends Component {
|
|
|
220
196
|
ariaAtomic: 'true'
|
|
221
197
|
});
|
|
222
198
|
root.replaceChildren(toolbar, body, loading, status);
|
|
223
|
-
root.setAttribute('aria-label', this.msg('calendar'));
|
|
199
|
+
root.setAttribute('aria-label', this.msg('calendar.label'));
|
|
224
200
|
root.dataset.view = this._view;
|
|
225
201
|
root.dataset.state = 'ready';
|
|
226
202
|
|
|
@@ -470,7 +446,7 @@ export class Calendar extends Component {
|
|
|
470
446
|
}, this._format(day, { weekday: 'long', day: 'numeric', month: 'long' })));
|
|
471
447
|
const entries = h('div', { class: 'zx-calendar__agenda-events', role: 'gridcell' });
|
|
472
448
|
if (!events.length) {
|
|
473
|
-
entries.append(h('p', { class: 'zx-calendar__agenda-empty' }, this.msg('noEvents')));
|
|
449
|
+
entries.append(h('p', { class: 'zx-calendar__agenda-empty' }, this.msg('calendar.noEvents')));
|
|
474
450
|
} else {
|
|
475
451
|
for (const event of events) entries.append(this._eventElement(event, { variant: 'agenda', day }));
|
|
476
452
|
}
|
|
@@ -576,7 +552,7 @@ export class Calendar extends Component {
|
|
|
576
552
|
/** @param {Date[]} days @returns {HTMLElement} */
|
|
577
553
|
_renderAllDayRail(days) {
|
|
578
554
|
const rail = h('div', { class: 'zx-calendar__all-day' },
|
|
579
|
-
h('span', { class: 'zx-calendar__all-day-label' }, this.msg('allDay')));
|
|
555
|
+
h('span', { class: 'zx-calendar__all-day-label' }, this.msg('calendar.allDay')));
|
|
580
556
|
const layer = h('div', {
|
|
581
557
|
class: 'zx-calendar__all-day-grid',
|
|
582
558
|
role: 'row',
|
|
@@ -625,7 +601,7 @@ export class Calendar extends Component {
|
|
|
625
601
|
type: 'button',
|
|
626
602
|
class: 'zx-calendar__month-week-number',
|
|
627
603
|
dataset: { calendarAction: 'week', date: calendarDayKey(start) },
|
|
628
|
-
ariaLabel: this.msg('weekNumber', isoWeek(start)),
|
|
604
|
+
ariaLabel: this.msg('calendar.weekNumber', isoWeek(start)),
|
|
629
605
|
disabled: this.options.disabled
|
|
630
606
|
}, String(isoWeek(start))));
|
|
631
607
|
const days = h('div', { class: 'zx-calendar__month-days' });
|
|
@@ -666,7 +642,7 @@ export class Calendar extends Component {
|
|
|
666
642
|
dataset: { calendarAction: 'more', date: calendarDayKey(day), count: String(count) },
|
|
667
643
|
style: { gridColumn: String(index + 1), gridRow: String(eventLimit + 1) },
|
|
668
644
|
disabled: this.options.disabled
|
|
669
|
-
}, this.msg('more', count)));
|
|
645
|
+
}, this.msg('calendar.more', count)));
|
|
670
646
|
}
|
|
671
647
|
row.append(days, lanes);
|
|
672
648
|
wrapper.append(row);
|
|
@@ -758,7 +734,7 @@ export class Calendar extends Component {
|
|
|
758
734
|
type: 'button',
|
|
759
735
|
class: 'zx-calendar__event-resize',
|
|
760
736
|
dataset: { eventAction: 'resize', eventId: key },
|
|
761
|
-
ariaLabel: this.msg('resize', event.title),
|
|
737
|
+
ariaLabel: this.msg('calendar.resize', event.title),
|
|
762
738
|
disabled: this.options.disabled
|
|
763
739
|
}, h('span', { ariaHidden: 'true' })));
|
|
764
740
|
}
|
|
@@ -886,7 +862,7 @@ export class Calendar extends Component {
|
|
|
886
862
|
};
|
|
887
863
|
control.setAttribute('aria-grabbed', 'true');
|
|
888
864
|
control.closest('.zx-calendar__event')?.setAttribute('data-state', 'grabbed');
|
|
889
|
-
this._announce(this.msg(resize ? 'resizeStarted' : 'moveStarted', item.title));
|
|
865
|
+
this._announce(this.msg(resize ? 'calendar.resizeStarted' : 'calendar.moveStarted', item.title));
|
|
890
866
|
return;
|
|
891
867
|
}
|
|
892
868
|
if (!this._keyboardEdit || String(this._keyboardEdit.event.id) !== String(item.id)) return;
|
|
@@ -919,7 +895,7 @@ export class Calendar extends Component {
|
|
|
919
895
|
if (proposed.end > proposed.start) edit.event = proposed;
|
|
920
896
|
}
|
|
921
897
|
edit.control.closest('.zx-calendar__event')?.setAttribute('data-preview', this._eventTime(edit.event, edit.event.start));
|
|
922
|
-
this._announce(this.msg('editPreview', edit.event.title,
|
|
898
|
+
this._announce(this.msg('calendar.editPreview', edit.event.title,
|
|
923
899
|
this._dateTimeLabel(edit.event.start), this._dateTimeLabel(edit.event.end)));
|
|
924
900
|
}
|
|
925
901
|
|
|
@@ -1065,7 +1041,7 @@ export class Calendar extends Component {
|
|
|
1065
1041
|
}
|
|
1066
1042
|
wrapper.dataset.preview = this._eventTime(proposed, proposed.start);
|
|
1067
1043
|
}
|
|
1068
|
-
this._announce(this.msg('editPreview', proposed.title,
|
|
1044
|
+
this._announce(this.msg('calendar.editPreview', proposed.title,
|
|
1069
1045
|
this._dateTimeLabel(proposed.start), this._dateTimeLabel(proposed.end)));
|
|
1070
1046
|
}
|
|
1071
1047
|
|
|
@@ -1255,7 +1231,7 @@ export class Calendar extends Component {
|
|
|
1255
1231
|
edit.control.removeAttribute('aria-grabbed');
|
|
1256
1232
|
edit.control.closest('.zx-calendar__event')?.removeAttribute('data-state');
|
|
1257
1233
|
this._keyboardEdit = null;
|
|
1258
|
-
this._announce(this.msg('editCancelled'));
|
|
1234
|
+
this._announce(this.msg('calendar.editCancelled'));
|
|
1259
1235
|
this._renderView({ preserveFocus: true });
|
|
1260
1236
|
}
|
|
1261
1237
|
|
|
@@ -1286,7 +1262,7 @@ export class Calendar extends Component {
|
|
|
1286
1262
|
this._replaceNormalizedEvent(oldEvent);
|
|
1287
1263
|
this._mutationVersions.delete(key);
|
|
1288
1264
|
this._renderView({ preserveFocus: true });
|
|
1289
|
-
this._announce(this.msg('editCancelled'));
|
|
1265
|
+
this._announce(this.msg('calendar.editCancelled'));
|
|
1290
1266
|
return true;
|
|
1291
1267
|
};
|
|
1292
1268
|
const detail = {
|
|
@@ -1299,7 +1275,7 @@ export class Calendar extends Component {
|
|
|
1299
1275
|
};
|
|
1300
1276
|
const emitted = this.emit('eventchange', detail);
|
|
1301
1277
|
if (emitted.defaultPrevented) revert();
|
|
1302
|
-
else this._announce(this.msg('editCommitted', proposed.title));
|
|
1278
|
+
else this._announce(this.msg('calendar.editCommitted', proposed.title));
|
|
1303
1279
|
}
|
|
1304
1280
|
|
|
1305
1281
|
/** @param {CalendarEvent} event @returns {void} */
|
|
@@ -1364,11 +1340,11 @@ export class Calendar extends Component {
|
|
|
1364
1340
|
|
|
1365
1341
|
/** @param {CalendarEvent} event @param {Date} day @returns {string} */
|
|
1366
1342
|
_eventTime(event, day) {
|
|
1367
|
-
if (event.allDay) return this.msg('allDay');
|
|
1343
|
+
if (event.allDay) return this.msg('calendar.allDay');
|
|
1368
1344
|
if (calendarEventSpansDays(event)) {
|
|
1369
1345
|
if (sameCalendarDay(event.start, day)) return `${formatDateTime(event.start, this.options.locale)} →`;
|
|
1370
1346
|
if (sameCalendarDay(event.end, day)) return `→ ${formatDateTime(event.end, this.options.locale)}`;
|
|
1371
|
-
return this.msg('allDay');
|
|
1347
|
+
return this.msg('calendar.allDay');
|
|
1372
1348
|
}
|
|
1373
1349
|
const start = formatTimeDate(event.start, this.options.locale);
|
|
1374
1350
|
if (event.end <= event.start) return start;
|
|
@@ -1490,10 +1466,8 @@ export class Calendar extends Component {
|
|
|
1490
1466
|
}
|
|
1491
1467
|
|
|
1492
1468
|
/**
|
|
1493
|
-
* Resolves a message through
|
|
1494
|
-
*
|
|
1495
|
-
* Distinct from `msg()`: the built-in `msg` option answers the calendar's own vocabulary, so a
|
|
1496
|
-
* dotted key falls past it to the host translator, which is what these strings never had.
|
|
1469
|
+
* Resolves a message through `msg()`, falling back to the built-in English text. Redundant now
|
|
1470
|
+
* that `msg()` ends in the default catalogue; kept until the private copies are removed.
|
|
1497
1471
|
* @param {string} key Message key.
|
|
1498
1472
|
* @param {string} fallback Built-in text, with `%1`-style placeholders.
|
|
1499
1473
|
* @param {...unknown} args Interpolation values.
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.zx-card:has(.zx-card__primary:focus-visible) {
|
|
54
|
-
outline:
|
|
54
|
+
outline-color: transparent;
|
|
55
55
|
box-shadow: var(--zx-focus-ring);
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -107,9 +107,9 @@
|
|
|
107
107
|
min-inline-size: 0;
|
|
108
108
|
margin: 0;
|
|
109
109
|
font-size: var(--zx-text-lg);
|
|
110
|
-
font-weight:
|
|
110
|
+
font-weight: 650;
|
|
111
111
|
line-height: 1.3;
|
|
112
|
-
letter-spacing: -
|
|
112
|
+
letter-spacing: var(--zx-tracking-title);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
.zx-card__primary,
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
.zx-card__primary:focus-visible {
|
|
132
|
-
outline:
|
|
132
|
+
outline-color: transparent;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
.zx-card__actions,
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.zx-card-view__sort select:focus-visible {
|
|
41
|
-
outline:
|
|
41
|
+
outline-color: transparent;
|
|
42
42
|
box-shadow: var(--zx-focus-ring);
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -103,13 +103,15 @@
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.zx-record-card:focus-visible {
|
|
106
|
-
outline:
|
|
106
|
+
outline-color: transparent;
|
|
107
107
|
box-shadow: var(--zx-focus-ring);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
/* A selected card is a pick, so it keeps the accent — as a tint over the card and its outline,
|
|
111
|
+
not a doubled frame. */
|
|
110
112
|
.zx-record-card[data-selected="true"] {
|
|
111
113
|
border-color: var(--zx-color-accent);
|
|
112
|
-
|
|
114
|
+
background: var(--zx-color-bg-selected);
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
.zx-record-card__preview {
|
|
@@ -177,7 +179,7 @@
|
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
.zx-record-card__selection input:focus-visible {
|
|
180
|
-
outline:
|
|
182
|
+
outline-color: transparent;
|
|
181
183
|
box-shadow: var(--zx-focus-ring);
|
|
182
184
|
}
|
|
183
185
|
|
|
@@ -224,7 +226,7 @@
|
|
|
224
226
|
margin: 0;
|
|
225
227
|
overflow-wrap: anywhere;
|
|
226
228
|
font-size: var(--zx-text-lg);
|
|
227
|
-
font-weight:
|
|
229
|
+
font-weight: 650;
|
|
228
230
|
line-height: 1.35;
|
|
229
231
|
}
|
|
230
232
|
|
|
@@ -244,7 +246,7 @@
|
|
|
244
246
|
|
|
245
247
|
.zx-record-card__primary:focus-visible {
|
|
246
248
|
border-radius: var(--zx-radius-sm);
|
|
247
|
-
outline:
|
|
249
|
+
outline-color: transparent;
|
|
248
250
|
box-shadow: var(--zx-focus-ring);
|
|
249
251
|
}
|
|
250
252
|
|
|
@@ -289,7 +291,7 @@
|
|
|
289
291
|
}
|
|
290
292
|
|
|
291
293
|
.zx-record-card__action:focus-visible {
|
|
292
|
-
outline:
|
|
294
|
+
outline-color: transparent;
|
|
293
295
|
box-shadow: var(--zx-focus-ring);
|
|
294
296
|
}
|
|
295
297
|
|
|
@@ -317,7 +319,7 @@
|
|
|
317
319
|
overflow: hidden;
|
|
318
320
|
color: var(--zx-color-text-muted);
|
|
319
321
|
font-size: var(--zx-text-xs);
|
|
320
|
-
font-weight:
|
|
322
|
+
font-weight: var(--zx-weight-medium);
|
|
321
323
|
line-height: 1.35;
|
|
322
324
|
text-overflow: ellipsis;
|
|
323
325
|
white-space: nowrap;
|
|
@@ -475,7 +477,7 @@
|
|
|
475
477
|
|
|
476
478
|
.zx-card-view .zx-record-card__heading {
|
|
477
479
|
font-size: var(--zx-text-md);
|
|
478
|
-
font-weight:
|
|
480
|
+
font-weight: var(--zx-weight-semibold);
|
|
479
481
|
line-height: 1.3;
|
|
480
482
|
}
|
|
481
483
|
|
|
@@ -521,8 +523,8 @@
|
|
|
521
523
|
align-items: center;
|
|
522
524
|
gap: var(--zx-space-1);
|
|
523
525
|
max-inline-size: 100%;
|
|
524
|
-
|
|
525
|
-
border-radius: var(--zx-radius-
|
|
526
|
+
/* A tinted label/value pair, not a box inside the card's box: the fill alone separates it. */
|
|
527
|
+
border-radius: var(--zx-radius-sm);
|
|
526
528
|
background: var(--zx-color-bg-muted);
|
|
527
529
|
padding: calc(var(--zx-space-1) / 2) var(--zx-space-2);
|
|
528
530
|
}
|
|
@@ -530,7 +532,7 @@
|
|
|
530
532
|
.zx-card-view .zx-record-card__label {
|
|
531
533
|
flex: none;
|
|
532
534
|
font-size: var(--zx-text-xs);
|
|
533
|
-
font-weight:
|
|
535
|
+
font-weight: var(--zx-weight-medium);
|
|
534
536
|
line-height: 1.2;
|
|
535
537
|
}
|
|
536
538
|
|