@nomideusz/svelte-calendar 1.3.0 → 1.4.1
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/README.md +164 -91
- package/dist/adapters/mapped.d.ts +7 -7
- package/dist/adapters/mapped.js +5 -2
- package/dist/adapters/memory.d.ts +7 -6
- package/dist/adapters/memory.js +3 -4
- package/dist/adapters/recurring.d.ts +6 -6
- package/dist/adapters/recurring.js +12 -14
- package/dist/calendar/Calendar.svelte +65 -18
- package/dist/calendar/Calendar.svelte.d.ts +1 -1
- package/dist/core/locale.d.ts +5 -0
- package/dist/core/locale.js +68 -17
- package/dist/primitives/DayHeader.svelte +9 -9
- package/dist/primitives/EmptySlot.svelte +6 -6
- package/dist/primitives/EventBlock.svelte +19 -19
- package/dist/primitives/FloatingPanel.svelte +4 -4
- package/dist/primitives/NowIndicator.svelte +5 -5
- package/dist/primitives/TimeGutter.svelte +4 -4
- package/dist/theme/auto.d.ts +5 -0
- package/dist/theme/auto.js +32 -4
- package/dist/views/agenda/AgendaDay.svelte +83 -74
- package/dist/views/agenda/AgendaWeek.svelte +53 -52
- package/dist/views/mobile/MobileDay.svelte +34 -34
- package/dist/views/mobile/MobileWeek.svelte +41 -41
- package/dist/views/month/MonthGrid.svelte +49 -23
- package/dist/views/planner/PlannerScroll.svelte +47 -47
- package/dist/views/planner/PlannerWeek.svelte +101 -73
- package/dist/views/shared/context.svelte.d.ts +2 -0
- package/dist/views/shared/context.svelte.js +1 -0
- package/package.json +1 -1
- package/widget/widget.js +376 -223
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Answers: "What's coming up and when do I need to be ready?"
|
|
10
10
|
*/
|
|
11
11
|
import { createClock } from "../../core/clock.svelte.js";
|
|
12
|
-
import { sod, addDaysMs, startOfWeek,
|
|
13
|
-
import { weekdayLong, monthLong } from "../../core/locale.js";
|
|
12
|
+
import { sod, addDaysMs, startOfWeek, isAllDay, isMultiDay, segmentForDay } from "../../core/time.js";
|
|
13
|
+
import { weekdayLong, monthLong, fmtDayNum } from "../../core/locale.js";
|
|
14
14
|
import { useCalendarContext } from "../shared/context.svelte.js";
|
|
15
15
|
import EventContent from "../shared/EventContent.svelte";
|
|
16
16
|
import { fmtTime, duration, timeUntilMs, progress, groupIntoSlots } from "../shared/format.js";
|
|
@@ -165,9 +165,10 @@ const weekDays = $derived.by(() => {
|
|
|
165
165
|
ms,
|
|
166
166
|
dayName: weekdayLong(ms, locale),
|
|
167
167
|
month: monthLong(ms, locale),
|
|
168
|
-
num:
|
|
168
|
+
num: fmtDayNum(ms, locale),
|
|
169
169
|
tier,
|
|
170
|
-
|
|
170
|
+
// A dateless weekly template (showDates=false) has no today to mark.
|
|
171
|
+
isToday: showDates && ms === todayMs,
|
|
171
172
|
events: dayEvts,
|
|
172
173
|
allDayEvents: allDayEvts,
|
|
173
174
|
timedEvents: timedEvts,
|
|
@@ -199,7 +200,7 @@ const weekDays = $derived.by(() => {
|
|
|
199
200
|
class:ag-card--tentative={ev.status === 'tentative'}
|
|
200
201
|
class:ag-card--full={ev.status === 'full'}
|
|
201
202
|
class:ag-card--limited={ev.status === 'limited'}
|
|
202
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
203
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
203
204
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)} – {fmt(ev.end)}, {duration(ev)}"
|
|
204
205
|
class:ag-card--drag={dragId === String(ev.id)}
|
|
205
206
|
draggable={canDrag(ev)}
|
|
@@ -256,7 +257,7 @@ const weekDays = $derived.by(() => {
|
|
|
256
257
|
class:ag-compact--tentative={ev.status === 'tentative'}
|
|
257
258
|
class:ag-compact--full={ev.status === 'full'}
|
|
258
259
|
class:ag-compact--limited={ev.status === 'limited'}
|
|
259
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
260
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
260
261
|
aria-label="{ev.title}{statusText(ev)}{done ? `, ${L.completed}` : ''}, {fmt(ev.start)}, {duration(ev)}"
|
|
261
262
|
onclick={() => handleClick(ev)}
|
|
262
263
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -387,7 +388,7 @@ const weekDays = $derived.by(() => {
|
|
|
387
388
|
{#if showDates}<span class="ag-wday-num">{day.num}</span>{/if}
|
|
388
389
|
{#if day.isToday}
|
|
389
390
|
<span class="ag-wday-badge">{L.today}</span>
|
|
390
|
-
{:else if day.tier === 'tomorrow'}
|
|
391
|
+
{:else if showDates && day.tier === 'tomorrow'}
|
|
391
392
|
<span class="ag-wday-badge ag-wday-badge--muted">{L.tomorrow}</span>
|
|
392
393
|
{/if}
|
|
393
394
|
<span class="ag-wday-name">{day.dayName}</span>
|
|
@@ -529,7 +530,7 @@ const weekDays = $derived.by(() => {
|
|
|
529
530
|
width: 100%;
|
|
530
531
|
min-width: 0;
|
|
531
532
|
box-sizing: border-box;
|
|
532
|
-
color: var(--dt-text, rgba(
|
|
533
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
533
534
|
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
534
535
|
}
|
|
535
536
|
.ag--auto {
|
|
@@ -606,7 +607,7 @@ const weekDays = $derived.by(() => {
|
|
|
606
607
|
}
|
|
607
608
|
.ag-allday-chip:focus-visible {
|
|
608
609
|
outline: none;
|
|
609
|
-
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #
|
|
610
|
+
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
610
611
|
}
|
|
611
612
|
.ag-allday-chip--selected {
|
|
612
613
|
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff);
|
|
@@ -639,7 +640,7 @@ const weekDays = $derived.by(() => {
|
|
|
639
640
|
border-radius: 0;
|
|
640
641
|
background: transparent;
|
|
641
642
|
border: none;
|
|
642
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
643
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
643
644
|
overflow: hidden;
|
|
644
645
|
cursor: pointer;
|
|
645
646
|
transition: background 150ms, box-shadow 150ms;
|
|
@@ -655,18 +656,18 @@ const weekDays = $derived.by(() => {
|
|
|
655
656
|
}
|
|
656
657
|
.ag-card:hover,
|
|
657
658
|
.ag-card:active {
|
|
658
|
-
background: var(--dt-hover, rgba(
|
|
659
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
659
660
|
}
|
|
660
661
|
.ag-card:focus-visible {
|
|
661
662
|
outline: none;
|
|
662
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
663
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
663
664
|
}
|
|
664
665
|
.ag-card--selected {
|
|
665
666
|
box-shadow: inset 0 0 0 1px var(--ev-color);
|
|
666
667
|
}
|
|
667
668
|
.ag-card--cancelled .ag-card-title {
|
|
668
669
|
text-decoration: line-through;
|
|
669
|
-
color: var(--dt-text-2, rgba(
|
|
670
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
670
671
|
}
|
|
671
672
|
.ag-card--cancelled::before,
|
|
672
673
|
.ag-card--full::before {
|
|
@@ -675,7 +676,7 @@ const weekDays = $derived.by(() => {
|
|
|
675
676
|
.ag-card--tentative .ag-card-title,
|
|
676
677
|
.ag-card--limited .ag-card-title,
|
|
677
678
|
.ag-card--full .ag-card-title {
|
|
678
|
-
color: var(--dt-text-2, rgba(
|
|
679
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
679
680
|
}
|
|
680
681
|
.ag-card--tentative::before,
|
|
681
682
|
.ag-card--limited::before {
|
|
@@ -694,7 +695,7 @@ const weekDays = $derived.by(() => {
|
|
|
694
695
|
}
|
|
695
696
|
.ag-card-title {
|
|
696
697
|
font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
697
|
-
color: var(--dt-text, rgba(
|
|
698
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
698
699
|
word-break: break-word;
|
|
699
700
|
flex: 1;
|
|
700
701
|
min-width: 0;
|
|
@@ -712,7 +713,7 @@ const weekDays = $derived.by(() => {
|
|
|
712
713
|
row-gap: 2px;
|
|
713
714
|
font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
714
715
|
font-variant-numeric: tabular-nums;
|
|
715
|
-
color: var(--dt-text, rgba(
|
|
716
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
716
717
|
}
|
|
717
718
|
.ag-card-dur,
|
|
718
719
|
.ag-card-eta,
|
|
@@ -720,7 +721,7 @@ const weekDays = $derived.by(() => {
|
|
|
720
721
|
.ag-card-loc,
|
|
721
722
|
.ag-card-tag {
|
|
722
723
|
font: 400 12.5px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
723
|
-
color: var(--dt-text-2, rgba(
|
|
724
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
724
725
|
}
|
|
725
726
|
.ag-card-tags {
|
|
726
727
|
display: flex;
|
|
@@ -733,7 +734,7 @@ const weekDays = $derived.by(() => {
|
|
|
733
734
|
}
|
|
734
735
|
.ag-card-progress {
|
|
735
736
|
height: 3px;
|
|
736
|
-
background: var(--dt-border, rgba(
|
|
737
|
+
background: var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
737
738
|
border-radius: 0;
|
|
738
739
|
overflow: hidden;
|
|
739
740
|
margin-top: 2px;
|
|
@@ -754,17 +755,17 @@ const weekDays = $derived.by(() => {
|
|
|
754
755
|
|
|
755
756
|
/* ═══ Week day groups ═══ */
|
|
756
757
|
.ag-wday {
|
|
757
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
758
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
758
759
|
}
|
|
759
760
|
.ag-wday:last-child {
|
|
760
761
|
border-bottom: none;
|
|
761
762
|
}
|
|
762
763
|
.ag-wday--today {
|
|
763
|
-
background: color-mix(in srgb, var(--dt-accent, #
|
|
764
|
+
background: color-mix(in srgb, var(--dt-accent, #1d4fd7) 2%, transparent);
|
|
764
765
|
}
|
|
765
766
|
/* Past days: quieter ink from the text tokens, no subtree opacity */
|
|
766
767
|
.ag-wday--past .ag-wday-num {
|
|
767
|
-
color: var(--dt-text-2, rgba(
|
|
768
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
768
769
|
}
|
|
769
770
|
.ag-wday--past .ag-wday-head {
|
|
770
771
|
padding: 8px 20px 2px;
|
|
@@ -780,8 +781,8 @@ const weekDays = $derived.by(() => {
|
|
|
780
781
|
135deg,
|
|
781
782
|
transparent,
|
|
782
783
|
transparent 4px,
|
|
783
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
784
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
784
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 8%, transparent) 4px,
|
|
785
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 8%, transparent) 8px
|
|
785
786
|
);
|
|
786
787
|
pointer-events: none;
|
|
787
788
|
}
|
|
@@ -795,9 +796,9 @@ const weekDays = $derived.by(() => {
|
|
|
795
796
|
}
|
|
796
797
|
.ag-wday-head--click:focus-visible,
|
|
797
798
|
.ag-wday-empty--click:focus-visible {
|
|
798
|
-
outline: 2px solid var(--dt-
|
|
799
|
+
outline: 2px solid var(--dt-text, #0f0f0f);
|
|
799
800
|
outline-offset: -2px;
|
|
800
|
-
border-radius:
|
|
801
|
+
border-radius: 0;
|
|
801
802
|
}
|
|
802
803
|
.ag-wday-head {
|
|
803
804
|
display: flex;
|
|
@@ -806,7 +807,7 @@ const weekDays = $derived.by(() => {
|
|
|
806
807
|
padding: 8px 20px;
|
|
807
808
|
position: sticky;
|
|
808
809
|
top: 0;
|
|
809
|
-
background: var(--dt-bg, #
|
|
810
|
+
background: var(--dt-bg, #efebe9);
|
|
810
811
|
z-index: 1;
|
|
811
812
|
/* Own compositor layer: without it, fast (async) scrolling repaints
|
|
812
813
|
the pinned header a frame late and a gap flashes above it. */
|
|
@@ -825,7 +826,7 @@ const weekDays = $derived.by(() => {
|
|
|
825
826
|
font-stretch: 90%;
|
|
826
827
|
letter-spacing: -0.02em;
|
|
827
828
|
font-variant-numeric: tabular-nums;
|
|
828
|
-
color: var(--dt-text, rgba(
|
|
829
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
829
830
|
margin-inline-end: 4px;
|
|
830
831
|
}
|
|
831
832
|
.ag-wday-badge,
|
|
@@ -833,25 +834,25 @@ const weekDays = $derived.by(() => {
|
|
|
833
834
|
font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
|
|
834
835
|
letter-spacing: 0.08em;
|
|
835
836
|
text-transform: uppercase;
|
|
836
|
-
color: var(--dt-text-2, rgba(
|
|
837
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
837
838
|
}
|
|
838
839
|
.ag-wday--today .ag-wday-num,
|
|
839
840
|
.ag-wday--today .ag-wday-name,
|
|
840
841
|
.ag-wday-badge {
|
|
841
|
-
color: var(--dt-accent, #
|
|
842
|
+
color: var(--dt-accent, #1d4fd7);
|
|
842
843
|
}
|
|
843
844
|
.ag-wday .ag-wday-badge--muted {
|
|
844
|
-
color: var(--dt-text-2, rgba(
|
|
845
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
845
846
|
}
|
|
846
847
|
.ag-wday-date {
|
|
847
848
|
font: 400 12.5px/1 var(--dt-sans, system-ui, sans-serif);
|
|
848
|
-
color: var(--dt-text-2, rgba(
|
|
849
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
849
850
|
}
|
|
850
851
|
|
|
851
852
|
.ag-wday-empty {
|
|
852
853
|
padding: 2px 20px 8px;
|
|
853
854
|
font-size: 12.5px;
|
|
854
|
-
color: var(--dt-text-2, rgba(
|
|
855
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
855
856
|
}
|
|
856
857
|
|
|
857
858
|
/* Expanded day */
|
|
@@ -871,7 +872,7 @@ const weekDays = $derived.by(() => {
|
|
|
871
872
|
font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
872
873
|
letter-spacing: 0.08em;
|
|
873
874
|
text-transform: uppercase;
|
|
874
|
-
color: var(--dt-accent, #
|
|
875
|
+
color: var(--dt-accent, #1d4fd7);
|
|
875
876
|
}
|
|
876
877
|
.ag-wslot-cards {
|
|
877
878
|
display: flex;
|
|
@@ -885,7 +886,7 @@ const weekDays = $derived.by(() => {
|
|
|
885
886
|
}
|
|
886
887
|
.ag-wday-past-line {
|
|
887
888
|
font-size: 12.5px;
|
|
888
|
-
color: var(--dt-text-2, rgba(
|
|
889
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
889
890
|
padding: 6px 0 0;
|
|
890
891
|
}
|
|
891
892
|
.ag-wday-past-line--summary {
|
|
@@ -903,12 +904,12 @@ const weekDays = $derived.by(() => {
|
|
|
903
904
|
}
|
|
904
905
|
.ag-past-toggle:hover,
|
|
905
906
|
.ag-past-toggle:active {
|
|
906
|
-
color: var(--dt-text, rgba(
|
|
907
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
907
908
|
}
|
|
908
909
|
.ag-past-toggle:focus-visible {
|
|
909
910
|
outline: none;
|
|
910
|
-
box-shadow: 0 0 0 2px var(--dt-
|
|
911
|
-
border-radius:
|
|
911
|
+
box-shadow: 0 0 0 2px var(--dt-text, #0f0f0f);
|
|
912
|
+
border-radius: 0;
|
|
912
913
|
}
|
|
913
914
|
.ag-past-chevron {
|
|
914
915
|
transition: transform 120ms;
|
|
@@ -923,7 +924,7 @@ const weekDays = $derived.by(() => {
|
|
|
923
924
|
is kept for cancelled only, so "done" and "called off" never read alike. */
|
|
924
925
|
.ag-compact--done .ag-compact-title,
|
|
925
926
|
.ag-compact--done .ag-compact-time {
|
|
926
|
-
color: var(--dt-text-2, rgba(
|
|
927
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
927
928
|
}
|
|
928
929
|
.ag-compact--done::before {
|
|
929
930
|
opacity: 0.45;
|
|
@@ -940,7 +941,7 @@ const weekDays = $derived.by(() => {
|
|
|
940
941
|
align-items: baseline;
|
|
941
942
|
gap: 10px;
|
|
942
943
|
padding: 5px 0 5px 11px;
|
|
943
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
944
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
944
945
|
cursor: pointer;
|
|
945
946
|
min-width: 0;
|
|
946
947
|
width: 100%;
|
|
@@ -963,16 +964,16 @@ const weekDays = $derived.by(() => {
|
|
|
963
964
|
}
|
|
964
965
|
.ag-compact:hover,
|
|
965
966
|
.ag-compact:active {
|
|
966
|
-
background: var(--dt-hover, rgba(
|
|
967
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
967
968
|
}
|
|
968
969
|
.ag-compact:focus-visible {
|
|
969
970
|
outline: none;
|
|
970
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
971
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
971
972
|
}
|
|
972
973
|
.ag-compact-time {
|
|
973
974
|
font: 400 14px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
974
975
|
font-variant-numeric: tabular-nums;
|
|
975
|
-
color: var(--dt-text, rgba(
|
|
976
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
976
977
|
min-width: 4.4em;
|
|
977
978
|
flex-shrink: 0;
|
|
978
979
|
white-space: nowrap;
|
|
@@ -1007,7 +1008,7 @@ const weekDays = $derived.by(() => {
|
|
|
1007
1008
|
}
|
|
1008
1009
|
.ag-compact-title {
|
|
1009
1010
|
font: 500 15px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
1010
|
-
color: var(--dt-text, rgba(
|
|
1011
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1011
1012
|
flex: 0 1 auto;
|
|
1012
1013
|
/* The title is the row's identity — never let subtitle/tags/duration
|
|
1013
1014
|
squeeze it out on narrow screens (min-width: 0 resolves to 0px). */
|
|
@@ -1022,7 +1023,7 @@ const weekDays = $derived.by(() => {
|
|
|
1022
1023
|
.ag-compact-loc,
|
|
1023
1024
|
.ag-compact-tag {
|
|
1024
1025
|
font: 400 12.5px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
1025
|
-
color: var(--dt-text-2, rgba(
|
|
1026
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1026
1027
|
white-space: nowrap;
|
|
1027
1028
|
}
|
|
1028
1029
|
.ag-compact-dur {
|
|
@@ -1045,7 +1046,7 @@ const weekDays = $derived.by(() => {
|
|
|
1045
1046
|
}
|
|
1046
1047
|
.ag-compact--cancelled .ag-compact-title {
|
|
1047
1048
|
text-decoration: line-through;
|
|
1048
|
-
color: var(--dt-text-2, rgba(
|
|
1049
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1049
1050
|
}
|
|
1050
1051
|
.ag-compact--cancelled::before,
|
|
1051
1052
|
.ag-compact--full::before {
|
|
@@ -1054,7 +1055,7 @@ const weekDays = $derived.by(() => {
|
|
|
1054
1055
|
.ag-compact--tentative .ag-compact-title,
|
|
1055
1056
|
.ag-compact--limited .ag-compact-title,
|
|
1056
1057
|
.ag-compact--full .ag-compact-title {
|
|
1057
|
-
color: var(--dt-text-2, rgba(
|
|
1058
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1058
1059
|
}
|
|
1059
1060
|
.ag-compact--tentative::before,
|
|
1060
1061
|
.ag-compact--limited::before {
|
|
@@ -1069,18 +1070,18 @@ const weekDays = $derived.by(() => {
|
|
|
1069
1070
|
}
|
|
1070
1071
|
.ag-compact-more {
|
|
1071
1072
|
font-size: 12.5px;
|
|
1072
|
-
color: var(--dt-text-2, rgba(
|
|
1073
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1073
1074
|
padding: 4px 0 0 11px;
|
|
1074
1075
|
cursor: pointer;
|
|
1075
1076
|
display: block;
|
|
1076
1077
|
}
|
|
1077
1078
|
.ag-compact-more:hover,
|
|
1078
1079
|
.ag-compact-more:active {
|
|
1079
|
-
color: var(--dt-text, rgba(
|
|
1080
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1080
1081
|
}
|
|
1081
1082
|
.ag-compact-more:focus-visible {
|
|
1082
1083
|
outline: none;
|
|
1083
|
-
box-shadow: 0 0 0 2px var(--dt-
|
|
1084
|
+
box-shadow: 0 0 0 2px var(--dt-text, #0f0f0f);
|
|
1084
1085
|
border-radius: 0;
|
|
1085
1086
|
}
|
|
1086
1087
|
|
|
@@ -1089,8 +1090,8 @@ const weekDays = $derived.by(() => {
|
|
|
1089
1090
|
opacity: 0.4;
|
|
1090
1091
|
}
|
|
1091
1092
|
.ag-wday--drop {
|
|
1092
|
-
background: var(--dt-hover, rgba(
|
|
1093
|
-
box-shadow: inset 0 0 0 1px var(--dt-accent, #
|
|
1093
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
1094
|
+
box-shadow: inset 0 0 0 1px var(--dt-accent, #1d4fd7);
|
|
1094
1095
|
}
|
|
1095
1096
|
|
|
1096
1097
|
/* ═══ Timetable columns (desktop) ═══ */
|
|
@@ -1101,7 +1102,7 @@ const weekDays = $derived.by(() => {
|
|
|
1101
1102
|
/* Columns stretch to the tallest day, so the separator runs full height */
|
|
1102
1103
|
.ag--cols .ag-wday {
|
|
1103
1104
|
border-bottom: none;
|
|
1104
|
-
border-inline-start: 1px solid var(--dt-border, rgba(
|
|
1105
|
+
border-inline-start: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
1105
1106
|
min-width: 0;
|
|
1106
1107
|
}
|
|
1107
1108
|
.ag--cols .ag-wday:first-child {
|
|
@@ -581,7 +581,7 @@ $effect(() => {
|
|
|
581
581
|
style:height="{p.height}px"
|
|
582
582
|
style:left={p.left}
|
|
583
583
|
style:width={p.width}
|
|
584
|
-
style:--ev-color={p.ev.color ?? 'var(--dt-accent)'}
|
|
584
|
+
style:--ev-color={p.ev.color ?? 'var(--dt-event, var(--dt-accent))'}
|
|
585
585
|
onclick={(e) => { e.stopPropagation(); if (suppressEventClick) { suppressEventClick = false; return; } oneventclick?.(p.ev); }}
|
|
586
586
|
onpointerenter={() => oneventhover?.(p.ev)}
|
|
587
587
|
aria-label="{p.ev.title}{statusText(p.ev)}, {fmtTime(p.ev.start, locale)} – {fmtTime(p.ev.end, locale)}{p.isCurrent ? `, ${L.inProgress}` : ''}{p.isNext ? `, ${L.upNext}` : ''}"
|
|
@@ -671,7 +671,7 @@ $effect(() => {
|
|
|
671
671
|
user-select: none;
|
|
672
672
|
font-variant-numeric: tabular-nums;
|
|
673
673
|
overflow: hidden;
|
|
674
|
-
background: var(--dt-bg, #
|
|
674
|
+
background: var(--dt-bg, #efebe9);
|
|
675
675
|
-webkit-tap-highlight-color: transparent;
|
|
676
676
|
touch-action: pan-y pinch-zoom;
|
|
677
677
|
}
|
|
@@ -699,7 +699,7 @@ $effect(() => {
|
|
|
699
699
|
padding: 4px 8px;
|
|
700
700
|
overflow-x: auto;
|
|
701
701
|
scrollbar-width: none;
|
|
702
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
702
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
703
703
|
flex-shrink: 0;
|
|
704
704
|
align-items: center;
|
|
705
705
|
}
|
|
@@ -745,7 +745,7 @@ $effect(() => {
|
|
|
745
745
|
}
|
|
746
746
|
.mb-allday-chip:focus-visible {
|
|
747
747
|
outline: none;
|
|
748
|
-
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #
|
|
748
|
+
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
749
749
|
}
|
|
750
750
|
|
|
751
751
|
/* The band is the colour; no dot. */
|
|
@@ -771,7 +771,7 @@ $effect(() => {
|
|
|
771
771
|
|
|
772
772
|
.mb-allday-more {
|
|
773
773
|
font: 400 12.5px/1 var(--dt-sans, system-ui, sans-serif);
|
|
774
|
-
color: var(--dt-text-2, rgba(
|
|
774
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
775
775
|
white-space: nowrap;
|
|
776
776
|
flex-shrink: 0;
|
|
777
777
|
padding: 0 6px;
|
|
@@ -793,7 +793,7 @@ $effect(() => {
|
|
|
793
793
|
}
|
|
794
794
|
.mb-allday-more:focus-visible {
|
|
795
795
|
outline: none;
|
|
796
|
-
box-shadow: 0 0 0 2px var(--dt-
|
|
796
|
+
box-shadow: 0 0 0 2px var(--dt-text, #0f0f0f);
|
|
797
797
|
}
|
|
798
798
|
|
|
799
799
|
/* ─── Grid ───────────────────────────────────────── */
|
|
@@ -804,14 +804,14 @@ $effect(() => {
|
|
|
804
804
|
overscroll-behavior: contain;
|
|
805
805
|
-webkit-overflow-scrolling: touch;
|
|
806
806
|
scrollbar-width: thin;
|
|
807
|
-
scrollbar-color: var(--dt-scrollbar, rgba(
|
|
807
|
+
scrollbar-color: var(--dt-scrollbar, rgba(15, 15, 15, 0.1)) transparent;
|
|
808
808
|
position: relative;
|
|
809
809
|
padding-top: 8px;
|
|
810
810
|
}
|
|
811
811
|
.mb--auto .mb-grid { overflow-y: visible; }
|
|
812
812
|
.mb-grid:focus-visible {
|
|
813
813
|
outline: none;
|
|
814
|
-
box-shadow: inset 0 0 0 2px var(--dt-
|
|
814
|
+
box-shadow: inset 0 0 0 2px var(--dt-text, #0f0f0f);
|
|
815
815
|
}
|
|
816
816
|
|
|
817
817
|
.mb-grid-inner {
|
|
@@ -831,7 +831,7 @@ $effect(() => {
|
|
|
831
831
|
}
|
|
832
832
|
.mb-empty-text {
|
|
833
833
|
font: 500 13px/1.4 var(--dt-sans, system-ui, sans-serif);
|
|
834
|
-
color: var(--dt-text-2, rgba(
|
|
834
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
835
835
|
}
|
|
836
836
|
|
|
837
837
|
/* ─── Hour row ───────────────────────────────────── */
|
|
@@ -852,7 +852,7 @@ $effect(() => {
|
|
|
852
852
|
vertical-align: top;
|
|
853
853
|
margin-left: 1px;
|
|
854
854
|
letter-spacing: 0;
|
|
855
|
-
color: var(--dt-text-2, rgba(
|
|
855
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
856
856
|
}
|
|
857
857
|
.mb-hour-label {
|
|
858
858
|
width: 40px;
|
|
@@ -864,7 +864,7 @@ $effect(() => {
|
|
|
864
864
|
font-stretch: 90%;
|
|
865
865
|
font-variant-numeric: tabular-nums;
|
|
866
866
|
letter-spacing: -0.02em;
|
|
867
|
-
color: var(--dt-text, rgba(
|
|
867
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
868
868
|
text-align: right;
|
|
869
869
|
padding-right: 8px;
|
|
870
870
|
padding-top: 0;
|
|
@@ -875,14 +875,14 @@ $effect(() => {
|
|
|
875
875
|
.mb-hour-line {
|
|
876
876
|
flex: 1;
|
|
877
877
|
height: 1px;
|
|
878
|
-
background: var(--dt-border, rgba(
|
|
878
|
+
background: var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
879
879
|
}
|
|
880
880
|
|
|
881
881
|
.mb-hour--blocked {
|
|
882
882
|
background: repeating-linear-gradient(
|
|
883
883
|
-45deg,
|
|
884
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
885
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
884
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 3%, transparent),
|
|
885
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 3%, transparent) 4px,
|
|
886
886
|
transparent 4px,
|
|
887
887
|
transparent 8px
|
|
888
888
|
);
|
|
@@ -894,7 +894,7 @@ $effect(() => {
|
|
|
894
894
|
top: 50%;
|
|
895
895
|
transform: translateY(-50%);
|
|
896
896
|
font: 500 11px/1 var(--dt-sans, system-ui, sans-serif);
|
|
897
|
-
color: var(--dt-text-2, rgba(
|
|
897
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
898
898
|
text-transform: uppercase;
|
|
899
899
|
letter-spacing: 0.04em;
|
|
900
900
|
}
|
|
@@ -932,13 +932,13 @@ $effect(() => {
|
|
|
932
932
|
height: 8px;
|
|
933
933
|
margin-top: -4px;
|
|
934
934
|
border-radius: 50%;
|
|
935
|
-
background: var(--dt-accent, #
|
|
935
|
+
background: var(--dt-accent, #1d4fd7);
|
|
936
936
|
}
|
|
937
937
|
.mb-now-label span {
|
|
938
938
|
display: inline-block;
|
|
939
939
|
padding: 2px 3px;
|
|
940
940
|
border-radius: 0;
|
|
941
|
-
background: var(--dt-accent, #
|
|
941
|
+
background: var(--dt-accent, #1d4fd7);
|
|
942
942
|
font: 500 11px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
943
943
|
font-variant-numeric: tabular-nums;
|
|
944
944
|
color: var(--dt-btn-text, #ffffff);
|
|
@@ -947,7 +947,7 @@ $effect(() => {
|
|
|
947
947
|
.mb-now-line {
|
|
948
948
|
flex: 1;
|
|
949
949
|
height: 0;
|
|
950
|
-
border-top: 2px solid var(--dt-accent, #
|
|
950
|
+
border-top: 2px solid var(--dt-accent, #1d4fd7);
|
|
951
951
|
box-shadow: none;
|
|
952
952
|
position: relative;
|
|
953
953
|
z-index: 4;
|
|
@@ -961,7 +961,7 @@ $effect(() => {
|
|
|
961
961
|
cursor: pointer;
|
|
962
962
|
background: transparent;
|
|
963
963
|
border: none;
|
|
964
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
964
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
965
965
|
box-sizing: border-box;
|
|
966
966
|
display: flex;
|
|
967
967
|
align-items: stretch;
|
|
@@ -974,7 +974,7 @@ $effect(() => {
|
|
|
974
974
|
}
|
|
975
975
|
.mb-event:hover,
|
|
976
976
|
.mb-event:active {
|
|
977
|
-
background: var(--dt-hover, rgba(
|
|
977
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
978
978
|
}
|
|
979
979
|
/* Short blocks keep their duration-proportional height, but get a 44px
|
|
980
980
|
transparent hit-slop so taps still land. */
|
|
@@ -1001,29 +1001,29 @@ $effect(() => {
|
|
|
1001
1001
|
laid over the paper, opaque, so the line runs beneath its text. */
|
|
1002
1002
|
.mb-event.mb-event--current {
|
|
1003
1003
|
background:
|
|
1004
|
-
linear-gradient(var(--dt-accent-dim, rgba(
|
|
1004
|
+
linear-gradient(var(--dt-accent-dim, rgba(29, 79, 215, 0.12)), var(--dt-accent-dim, rgba(29, 79, 215, 0.12))),
|
|
1005
1005
|
var(--dt-paper, none),
|
|
1006
|
-
var(--dt-bg, #
|
|
1006
|
+
var(--dt-bg, #efebe9);
|
|
1007
1007
|
}
|
|
1008
1008
|
.mb-event.mb-event--current:hover,
|
|
1009
1009
|
.mb-event.mb-event--current:active {
|
|
1010
1010
|
background:
|
|
1011
|
-
linear-gradient(var(--dt-hover, rgba(
|
|
1011
|
+
linear-gradient(var(--dt-hover, rgba(15, 15, 15, 0.04)), var(--dt-hover, rgba(15, 15, 15, 0.04))),
|
|
1012
1012
|
var(--dt-paper, none),
|
|
1013
|
-
var(--dt-bg, #
|
|
1013
|
+
var(--dt-bg, #efebe9);
|
|
1014
1014
|
}
|
|
1015
1015
|
/* Printed states: a cancelled class is struck through; a tentative or
|
|
1016
1016
|
limited one is set in grey with a dashed bar — never a bare opacity. */
|
|
1017
1017
|
.mb-event--cancelled .mb-ev-title {
|
|
1018
1018
|
text-decoration: line-through;
|
|
1019
|
-
color: var(--dt-text-2, rgba(
|
|
1019
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1020
1020
|
}
|
|
1021
1021
|
.mb-event--cancelled .mb-ev-stripe {
|
|
1022
1022
|
opacity: 0.45; /* decorative bar only */
|
|
1023
1023
|
}
|
|
1024
1024
|
.mb-event--tentative .mb-ev-title,
|
|
1025
1025
|
.mb-event--full .mb-ev-title {
|
|
1026
|
-
color: var(--dt-text-2, rgba(
|
|
1026
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1027
1027
|
}
|
|
1028
1028
|
.mb-event--tentative .mb-ev-stripe,
|
|
1029
1029
|
.mb-event--limited .mb-ev-stripe {
|
|
@@ -1103,8 +1103,8 @@ $effect(() => {
|
|
|
1103
1103
|
right: 4px;
|
|
1104
1104
|
z-index: 40;
|
|
1105
1105
|
border-radius: 0;
|
|
1106
|
-
background: color-mix(in srgb, var(--dt-accent, #
|
|
1107
|
-
border: 1px dashed color-mix(in srgb, var(--dt-accent, #
|
|
1106
|
+
background: color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent);
|
|
1107
|
+
border: 1px dashed color-mix(in srgb, var(--dt-accent, #1d4fd7) 55%, transparent);
|
|
1108
1108
|
display: flex;
|
|
1109
1109
|
align-items: flex-start;
|
|
1110
1110
|
overflow: hidden;
|
|
@@ -1113,7 +1113,7 @@ $effect(() => {
|
|
|
1113
1113
|
.mb-create-ghost-time {
|
|
1114
1114
|
font: 500 11px/1 var(--dt-sans, system-ui, sans-serif);
|
|
1115
1115
|
font-variant-numeric: tabular-nums;
|
|
1116
|
-
color: var(--dt-accent, #
|
|
1116
|
+
color: var(--dt-accent, #1d4fd7);
|
|
1117
1117
|
padding: 4px 8px;
|
|
1118
1118
|
white-space: nowrap;
|
|
1119
1119
|
}
|
|
@@ -1137,7 +1137,7 @@ $effect(() => {
|
|
|
1137
1137
|
|
|
1138
1138
|
.mb-ev-title {
|
|
1139
1139
|
font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
1140
|
-
color: var(--dt-text, rgba(
|
|
1140
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1141
1141
|
white-space: nowrap;
|
|
1142
1142
|
overflow: hidden;
|
|
1143
1143
|
text-overflow: ellipsis;
|
|
@@ -1146,12 +1146,12 @@ $effect(() => {
|
|
|
1146
1146
|
.mb-ev-time {
|
|
1147
1147
|
font: 400 14px/1 var(--dt-sans, system-ui, sans-serif);
|
|
1148
1148
|
font-variant-numeric: tabular-nums;
|
|
1149
|
-
color: var(--dt-text, rgba(
|
|
1149
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1150
1150
|
}
|
|
1151
1151
|
|
|
1152
1152
|
.mb-ev-sub {
|
|
1153
1153
|
font: 400 12.5px/1.1 var(--dt-sans, system-ui, sans-serif);
|
|
1154
|
-
color: var(--dt-text-2, rgba(
|
|
1154
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1155
1155
|
white-space: nowrap;
|
|
1156
1156
|
overflow: hidden;
|
|
1157
1157
|
text-overflow: ellipsis;
|
|
@@ -1159,7 +1159,7 @@ $effect(() => {
|
|
|
1159
1159
|
|
|
1160
1160
|
.mb-ev-loc {
|
|
1161
1161
|
font: 400 12.5px/1 var(--dt-sans, system-ui, sans-serif);
|
|
1162
|
-
color: var(--dt-text-2, rgba(
|
|
1162
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1163
1163
|
white-space: nowrap;
|
|
1164
1164
|
overflow: hidden;
|
|
1165
1165
|
text-overflow: ellipsis;
|
|
@@ -1213,6 +1213,6 @@ $effect(() => {
|
|
|
1213
1213
|
/* ─── Focus ──────────────────────────────────────── */
|
|
1214
1214
|
.mb-event:focus-visible {
|
|
1215
1215
|
outline: none;
|
|
1216
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
1216
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
1217
1217
|
}
|
|
1218
1218
|
</style>
|