@nomideusz/svelte-calendar 0.9.0 → 0.10.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.
@@ -1,15 +1,15 @@
1
1
  <script lang="ts">import { createClock } from "../../core/clock.svelte.js";
2
- import { sod, DAY_MS, startOfWeek, dayNum, isAllDay, isMultiDay } from "../../core/time.js";
3
- import { weekdayLong, monthLong, getLabels } from "../../core/locale.js";
2
+ import { sod, DAY_MS, startOfWeek, dayNum, isAllDay, isMultiDay, segmentForDay } from "../../core/time.js";
3
+ import { weekdayLong, monthLong } from "../../core/locale.js";
4
4
  import { useCalendarContext } from "../shared/context.svelte.js";
5
5
  import EventContent from "../shared/EventContent.svelte";
6
6
  import { fmtTime, duration, timeUntilMs, progress, groupIntoSlots } from "../shared/format.js";
7
- const L = $derived(getLabels());
8
7
  const ctx = useCalendarContext();
8
+ const L = $derived(ctx.labels);
9
9
  let {
10
10
  mondayStart = true,
11
11
  locale,
12
- height = 520,
12
+ height,
13
13
  events = [],
14
14
  style = "",
15
15
  focusDate,
@@ -29,14 +29,17 @@ const oneventhover = $derived(ctx.oneventhover);
29
29
  const disabledSet = $derived(ctx.disabledSet);
30
30
  let swipeStartX = 0;
31
31
  let swipeStartY = 0;
32
+ let swipeActive = false;
32
33
  const SWIPE_THRESHOLD = 50;
33
34
  function onPointerDown(e) {
34
- if (!isMobile) return;
35
+ if (!isMobile || e.pointerType !== "touch") return;
36
+ swipeActive = true;
35
37
  swipeStartX = e.clientX;
36
38
  swipeStartY = e.clientY;
37
39
  }
38
40
  function onPointerUp(e) {
39
- if (!isMobile) return;
41
+ if (!swipeActive || e.pointerType !== "touch") return;
42
+ swipeActive = false;
40
43
  const dx = e.clientX - swipeStartX;
41
44
  const dy = e.clientY - swipeStartY;
42
45
  if (Math.abs(dx) > SWIPE_THRESHOLD && Math.abs(dx) > Math.abs(dy) * 1.4) {
@@ -44,18 +47,19 @@ function onPointerUp(e) {
44
47
  else viewState?.next();
45
48
  }
46
49
  }
50
+ function onPointerCancel() {
51
+ swipeActive = false;
52
+ }
53
+ let expandedDays = $state([]);
54
+ function toggleDayExpand(ms) {
55
+ expandedDays = expandedDays.includes(ms) ? expandedDays.filter((m) => m !== ms) : [...expandedDays, ms];
56
+ }
47
57
  const fmt = (d) => fmtTime(d, locale);
48
- const eta = (ms) => timeUntilMs(ms, clock.tick);
58
+ const eta = (ms) => timeUntilMs(ms, clock.tick, L);
49
59
  const prog = (ev) => progress(ev, clock.tick);
50
60
  function handleClick(ev) {
51
61
  oneventclick?.(ev);
52
62
  }
53
- function handleKeydown(e, ev) {
54
- if (e.key === "Enter" || e.key === " ") {
55
- e.preventDefault();
56
- oneventclick?.(ev);
57
- }
58
- }
59
63
  const weekStartMs = $derived(
60
64
  focusDate ? viewState?.dayCount === 7 ? startOfWeek(sod(focusDate.getTime()), mondayStart) : sod(focusDate.getTime()) : viewState?.dayCount === 7 ? startOfWeek(clock.today, mondayStart) : clock.today
61
65
  );
@@ -101,6 +105,7 @@ const weekDays = $derived.by(() => {
101
105
  dayName: weekdayLong(ms, locale),
102
106
  dateLabel: `${monthLong(ms, locale)} ${dayNum(ms)}`,
103
107
  tier,
108
+ isToday: ms === todayMs,
104
109
  events: dayEvts,
105
110
  allDayEvents: allDayEvts,
106
111
  timedEvents: timedEvts,
@@ -123,7 +128,8 @@ const weekDays = $derived.by(() => {
123
128
 
124
129
  <!-- ═══ Shared event card snippet ═══ -->
125
130
  {#snippet eventCard(ev: TimelineEvent, isNow: boolean, eta?: string)}
126
- <div
131
+ <button
132
+ type="button"
127
133
  class="ag-card"
128
134
  class:ag-card--selected={selectedEventId === ev.id}
129
135
  class:ag-card--cancelled={ev.status === 'cancelled'}
@@ -131,12 +137,9 @@ const weekDays = $derived.by(() => {
131
137
  class:ag-card--full={ev.status === 'full'}
132
138
  class:ag-card--limited={ev.status === 'limited'}
133
139
  style:--ev-color={ev.color || 'var(--dt-accent)'}
134
- role="button"
135
- tabindex="0"
136
140
  aria-label="{ev.title}{ev.status === 'cancelled' ? ' (cancelled)' : ''}{ev.status === 'tentative' ? ' (tentative)' : ''}{ev.status === 'full' ? ' (full)' : ''}{ev.status === 'limited' ? ' (limited)' : ''}, {fmt(ev.start)} to {fmt(ev.end)}, {duration(ev)}"
137
141
  onclick={() => handleClick(ev)}
138
142
  onpointerenter={() => oneventhover?.(ev)}
139
- onkeydown={(e) => handleKeydown(e, ev)}
140
143
  >
141
144
  <div class="ag-card-body">
142
145
  <EventContent event={ev}>
@@ -168,11 +171,11 @@ const weekDays = $derived.by(() => {
168
171
  </EventContent>
169
172
  {#if isNow}
170
173
  <div class="ag-card-progress">
171
- <div class="ag-card-progress-fill" style:width="{prog(ev) * 100}%"></div>
174
+ <div class="ag-card-progress-fill" style:transform="scaleX({prog(ev)})"></div>
172
175
  </div>
173
176
  {/if}
174
177
  </div>
175
- </div>
178
+ </button>
176
179
  {/snippet}
177
180
 
178
181
  <!-- svelte-ignore a11y_no_static_element_interactions -->
@@ -181,8 +184,10 @@ const weekDays = $derived.by(() => {
181
184
  class:ag--mobile={isMobile}
182
185
  class:ag--auto={autoHeight}
183
186
  style={style || undefined}
187
+ style:height={height ? `${height}px` : undefined}
184
188
  onpointerdown={onPointerDown}
185
189
  onpointerup={onPointerUp}
190
+ onpointercancel={onPointerCancel}
186
191
  >
187
192
  <div class="ag-body" role="list" aria-label={L.weekAhead}>
188
193
  {#each weekDays as day (day.ms)}
@@ -201,6 +206,11 @@ const weekDays = $derived.by(() => {
201
206
  </div>
202
207
  {/if}
203
208
  </div>
209
+ {#if day.timedEvents.length > 0}
210
+ <div class="ag-wday-past-line ag-wday-past-line--summary">✓ {L.nCompleted(day.timedEvents.length)}</div>
211
+ {:else if day.events.length === 0}
212
+ <div class="ag-wday-past-line ag-wday-past-line--summary">{L.noEvents}</div>
213
+ {/if}
204
214
  </div>
205
215
  {:else}
206
216
  <div
@@ -214,7 +224,7 @@ const weekDays = $derived.by(() => {
214
224
  <!-- Day header -->
215
225
  <div class="ag-wday-head">
216
226
  <div class="ag-wday-head-left">
217
- {#if day.tier === 'today'}
227
+ {#if day.isToday}
218
228
  <span class="ag-wday-badge">{L.today}</span>
219
229
  {:else if day.tier === 'tomorrow'}
220
230
  <span class="ag-wday-badge ag-wday-badge--muted">{L.tomorrow}</span>
@@ -232,20 +242,23 @@ const weekDays = $derived.by(() => {
232
242
  {#if day.allDayEvents.length > 0}
233
243
  <div class="ag-allday">
234
244
  {#each day.allDayEvents as ev (ev.id)}
235
- <div
245
+ {@const seg = segmentForDay(ev, day.ms)}
246
+ {@const isCont = seg !== null && seg.totalDays > 1}
247
+ <button
248
+ type="button"
236
249
  class="ag-allday-chip"
237
250
  class:ag-allday-chip--selected={selectedEventId === ev.id}
238
251
  style:--ev-color={ev.color || 'var(--dt-accent)'}
239
- role="button"
240
- tabindex="0"
241
- aria-label="{ev.title}, {L.allDay}"
252
+ aria-label="{ev.title}, {isCont && seg ? L.dayNOfTotal(seg.dayIndex, seg.totalDays) : L.allDay}"
242
253
  onclick={() => handleClick(ev)}
243
254
  onpointerenter={() => oneventhover?.(ev)}
244
- onkeydown={(e) => handleKeydown(e, ev)}
245
255
  >
246
256
  <span class="ag-allday-dot"></span>
247
257
  <span class="ag-allday-title">{ev.title}</span>
248
- </div>
258
+ {#if isCont && seg}
259
+ <span class="ag-allday-span">{seg.dayIndex}/{seg.totalDays}</span>
260
+ {/if}
261
+ </button>
249
262
  {/each}
250
263
  </div>
251
264
  {/if}
@@ -256,7 +269,8 @@ const weekDays = $derived.by(() => {
256
269
  <!-- Compact: minimal dot + time + title rows for all days -->
257
270
  <div class="ag-wday-compact">
258
271
  {#each day.timedEvents as ev (ev.id)}
259
- <div
272
+ <button
273
+ type="button"
260
274
  class="ag-compact"
261
275
  class:ag-compact--selected={selectedEventId === ev.id}
262
276
  class:ag-compact--cancelled={ev.status === 'cancelled'}
@@ -264,12 +278,9 @@ const weekDays = $derived.by(() => {
264
278
  class:ag-compact--full={ev.status === 'full'}
265
279
  class:ag-compact--limited={ev.status === 'limited'}
266
280
  style:--ev-color={ev.color || 'var(--dt-accent)'}
267
- role="button"
268
- tabindex="0"
269
281
  aria-label="{ev.title}, {fmt(ev.start)}, {duration(ev)}"
270
282
  onclick={() => handleClick(ev)}
271
283
  onpointerenter={() => oneventhover?.(ev)}
272
- onkeydown={(e) => handleKeydown(e, ev)}
273
284
  >
274
285
  <EventContent event={ev}>
275
286
  <span class="ag-compact-dot"></span>
@@ -285,7 +296,7 @@ const weekDays = $derived.by(() => {
285
296
  {/if}
286
297
  <span class="ag-compact-dur">{duration(ev)}</span>
287
298
  </EventContent>
288
- </div>
299
+ </button>
289
300
  {/each}
290
301
  </div>
291
302
  {:else if equalDays}
@@ -331,9 +342,11 @@ const weekDays = $derived.by(() => {
331
342
  </div>
332
343
  {:else}
333
344
  <!-- Compact: future days get minimal rows -->
345
+ {@const dayExpanded = expandedDays.includes(day.ms)}
334
346
  <div class="ag-wday-compact">
335
- {#each day.timedEvents.slice(0, 4) as ev (ev.id)}
336
- <div
347
+ {#each (dayExpanded ? day.timedEvents : day.timedEvents.slice(0, 4)) as ev (ev.id)}
348
+ <button
349
+ type="button"
337
350
  class="ag-compact"
338
351
  class:ag-compact--selected={selectedEventId === ev.id}
339
352
  class:ag-compact--cancelled={ev.status === 'cancelled'}
@@ -341,10 +354,9 @@ const weekDays = $derived.by(() => {
341
354
  class:ag-compact--full={ev.status === 'full'}
342
355
  class:ag-compact--limited={ev.status === 'limited'}
343
356
  style:--ev-color={ev.color || 'var(--dt-accent)'}
344
- role="button"
345
- tabindex="0"
346
357
  aria-label="{ev.title}, {fmt(ev.start)}, {duration(ev)}"
347
- onclick={() => handleClick(ev)} onpointerenter={() => oneventhover?.(ev)} onkeydown={(e) => handleKeydown(e, ev)}
358
+ onclick={() => handleClick(ev)}
359
+ onpointerenter={() => oneventhover?.(ev)}
348
360
  >
349
361
  <EventContent event={ev}>
350
362
  <span class="ag-compact-dot"></span>
@@ -363,10 +375,17 @@ const weekDays = $derived.by(() => {
363
375
  {/if}
364
376
  <span class="ag-compact-dur">{duration(ev)}</span>
365
377
  </EventContent>
366
- </div>
378
+ </button>
367
379
  {/each}
368
380
  {#if day.timedEvents.length > 4}
369
- <div class="ag-compact-more">{L.nMore(day.timedEvents.length - 4)}</div>
381
+ <button
382
+ type="button"
383
+ class="ag-compact-more"
384
+ aria-expanded={dayExpanded}
385
+ onclick={() => toggleDayExpand(day.ms)}
386
+ >
387
+ {dayExpanded ? L.showLess : L.nMore(day.timedEvents.length - 4)}
388
+ </button>
370
389
  {/if}
371
390
  </div>
372
391
  {/if}
@@ -397,6 +416,22 @@ const weekDays = $derived.by(() => {
397
416
  overflow: visible;
398
417
  }
399
418
 
419
+ /* Button UA reset for interactive cards/rows (real <button>s for a11y).
420
+ Placed first so later component rules override it. */
421
+ .ag-card,
422
+ .ag-allday-chip,
423
+ .ag-compact,
424
+ .ag-compact-more {
425
+ font: inherit;
426
+ color: inherit;
427
+ text-align: left;
428
+ background: none;
429
+ border: none;
430
+ padding: 0;
431
+ margin: 0;
432
+ box-sizing: border-box;
433
+ }
434
+
400
435
  /* ═══ Body ═══ */
401
436
  .ag-body {
402
437
  flex: 1;
@@ -437,13 +472,14 @@ const weekDays = $derived.by(() => {
437
472
  cursor: pointer;
438
473
  transition: background 0.15s, border-color 0.15s;
439
474
  }
440
- .ag-allday-chip:hover {
475
+ .ag-allday-chip:hover,
476
+ .ag-allday-chip:active {
441
477
  background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
442
478
  border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
443
479
  }
444
480
  .ag-allday-chip:focus-visible {
445
- outline: 2px solid var(--dt-accent, #2563eb);
446
- outline-offset: 2px;
481
+ outline: none;
482
+ box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
447
483
  }
448
484
  .ag-allday-chip--selected {
449
485
  border-color: var(--ev-color);
@@ -461,6 +497,11 @@ const weekDays = $derived.by(() => {
461
497
  color: var(--dt-text, rgba(0, 0, 0, 0.87));
462
498
  white-space: nowrap;
463
499
  }
500
+ .ag-allday-span {
501
+ font: 500 10px/1.2 var(--dt-mono, monospace);
502
+ color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
503
+ white-space: nowrap;
504
+ }
464
505
 
465
506
  /* ═══ Shared: event card ═══ */
466
507
  .ag-card {
@@ -473,13 +514,14 @@ const weekDays = $derived.by(() => {
473
514
  cursor: pointer;
474
515
  transition: background 150ms, border-color 150ms;
475
516
  }
476
- .ag-card:hover {
517
+ .ag-card:hover,
518
+ .ag-card:active {
477
519
  background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
478
520
  border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
479
521
  }
480
522
  .ag-card:focus-visible {
481
- outline: 2px solid var(--dt-accent, #2563eb);
482
- outline-offset: 2px;
523
+ outline: none;
524
+ box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
483
525
  }
484
526
  .ag-card--selected {
485
527
  border-color: var(--ev-color);
@@ -517,6 +559,11 @@ const weekDays = $derived.by(() => {
517
559
  word-break: break-word;
518
560
  flex: 1;
519
561
  min-width: 0;
562
+ display: -webkit-box;
563
+ -webkit-box-orient: vertical;
564
+ -webkit-line-clamp: 2;
565
+ line-clamp: 2;
566
+ overflow: hidden;
520
567
  }
521
568
  .ag-card-meta {
522
569
  display: flex;
@@ -532,10 +579,9 @@ const weekDays = $derived.by(() => {
532
579
  }
533
580
  .ag-card-eta {
534
581
  margin-left: auto;
535
- font-size: 10px;
582
+ font-size: 11px;
536
583
  font-weight: 600;
537
- color: color-mix(in srgb, var(--ev-color) 80%, var(--dt-text));
538
- opacity: 0.85;
584
+ color: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 60%, var(--ev-color));
539
585
  letter-spacing: 0.02em;
540
586
  }
541
587
  .ag-card-sub {
@@ -554,7 +600,7 @@ const weekDays = $derived.by(() => {
554
600
  flex-wrap: wrap;
555
601
  }
556
602
  .ag-card-tag {
557
- font: 500 9px / 1 var(--dt-sans, system-ui, sans-serif);
603
+ font: 500 10px / 1 var(--dt-sans, system-ui, sans-serif);
558
604
  color: var(--ev-color, var(--dt-accent));
559
605
  background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
560
606
  padding: 2px 5px;
@@ -570,9 +616,16 @@ const weekDays = $derived.by(() => {
570
616
  }
571
617
  .ag-card-progress-fill {
572
618
  height: 100%;
619
+ width: 100%;
573
620
  background: var(--ev-color, var(--dt-accent));
574
621
  border-radius: 2px;
575
- transition: width 1s linear;
622
+ transform-origin: left;
623
+ transition: transform 1s linear;
624
+ }
625
+ @media (prefers-reduced-motion: reduce) {
626
+ .ag-card-progress-fill {
627
+ transition: none;
628
+ }
576
629
  }
577
630
 
578
631
  /* ═══ Week day groups ═══ */
@@ -588,11 +641,13 @@ const weekDays = $derived.by(() => {
588
641
  .ag-wday--tomorrow .ag-card {
589
642
  opacity: 0.82;
590
643
  }
591
- .ag-wday--past {
592
- opacity: 0.4;
644
+ /* Past days: token-based text dim instead of subtree opacity (readability) */
645
+ .ag-wday--past .ag-wday-name {
646
+ color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
647
+ font-weight: 500;
593
648
  }
594
649
  .ag-wday--past .ag-wday-head {
595
- padding: 8px 20px;
650
+ padding: 8px 20px 2px;
596
651
  }
597
652
  .ag-wday--disabled {
598
653
  position: relative;
@@ -605,8 +660,8 @@ const weekDays = $derived.by(() => {
605
660
  135deg,
606
661
  transparent,
607
662
  transparent 4px,
608
- rgba(128, 128, 128, 0.08) 4px,
609
- rgba(128, 128, 128, 0.08) 8px
663
+ color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 8%, transparent) 4px,
664
+ color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 8%, transparent) 8px
610
665
  );
611
666
  pointer-events: none;
612
667
  }
@@ -619,6 +674,10 @@ const weekDays = $derived.by(() => {
619
674
  justify-content: space-between;
620
675
  align-items: center;
621
676
  padding: 8px 20px;
677
+ position: sticky;
678
+ top: 0;
679
+ background: var(--dt-bg, #fff);
680
+ z-index: 1;
622
681
  }
623
682
  .ag-wday-head-left {
624
683
  display: flex;
@@ -676,7 +735,7 @@ const weekDays = $derived.by(() => {
676
735
  padding: 2px 0;
677
736
  }
678
737
  .ag-wslot-now {
679
- font-size: 9px;
738
+ font-size: 10px;
680
739
  font-weight: 700;
681
740
  letter-spacing: 0.08em;
682
741
  text-transform: uppercase;
@@ -693,10 +752,12 @@ const weekDays = $derived.by(() => {
693
752
  gap: 4px;
694
753
  }
695
754
  .ag-wday-past-line {
696
- font-size: 10px;
755
+ font-size: 11px;
697
756
  color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
698
757
  padding: 6px 0 0;
699
- opacity: 0.5;
758
+ }
759
+ .ag-wday-past-line--summary {
760
+ padding: 0 20px 8px;
700
761
  }
701
762
 
702
763
  /* Compact day events */
@@ -710,6 +771,7 @@ const weekDays = $derived.by(() => {
710
771
  padding: 3px 0;
711
772
  cursor: pointer;
712
773
  min-width: 0;
774
+ width: 100%;
713
775
  }
714
776
  .ag-compact--selected {
715
777
  background: color-mix(in srgb, var(--ev-color) 10%, transparent);
@@ -717,12 +779,18 @@ const weekDays = $derived.by(() => {
717
779
  padding-left: 6px;
718
780
  padding-right: 6px;
719
781
  }
720
- .ag-compact:hover .ag-compact-title {
782
+ .ag-compact:hover .ag-compact-title,
783
+ .ag-compact:active .ag-compact-title {
721
784
  color: var(--dt-text);
722
785
  }
786
+ .ag-compact:active {
787
+ background: color-mix(in srgb, var(--ev-color) 8%, transparent);
788
+ border-radius: 4px;
789
+ }
723
790
  .ag-compact:focus-visible {
724
- outline: 2px solid var(--dt-accent, #2563eb);
725
- outline-offset: 2px;
791
+ outline: none;
792
+ box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
793
+ border-radius: 4px;
726
794
  }
727
795
  .ag-compact-dot {
728
796
  width: 5px;
@@ -772,7 +840,7 @@ const weekDays = $derived.by(() => {
772
840
  line-height: 1.4;
773
841
  }
774
842
  .ag-compact-loc {
775
- font-size: 9px;
843
+ font-size: 10px;
776
844
  color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
777
845
  flex-shrink: 0;
778
846
  white-space: nowrap;
@@ -796,7 +864,7 @@ const weekDays = $derived.by(() => {
796
864
  opacity: 0.65;
797
865
  }
798
866
  .ag-compact-tag {
799
- font: 500 8px / 1 var(--dt-sans, system-ui, sans-serif);
867
+ font: 500 10px / 1 var(--dt-sans, system-ui, sans-serif);
800
868
  color: var(--ev-color, var(--dt-accent));
801
869
  background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 12%, transparent);
802
870
  padding: 1px 4px;
@@ -809,8 +877,19 @@ const weekDays = $derived.by(() => {
809
877
  }
810
878
  .ag-compact-more {
811
879
  font-size: 11px;
812
- color: var(--dt-text-3);
880
+ color: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 72%, transparent);
813
881
  padding: 2px 0 0 13px;
882
+ cursor: pointer;
883
+ display: block;
884
+ }
885
+ .ag-compact-more:hover,
886
+ .ag-compact-more:active {
887
+ color: var(--dt-text, rgba(0, 0, 0, 0.87));
888
+ }
889
+ .ag-compact-more:focus-visible {
890
+ outline: none;
891
+ box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
892
+ border-radius: 4px;
814
893
  }
815
894
 
816
895
  /* ═══ Mobile adaptations ═══ */
@@ -827,17 +906,63 @@ const weekDays = $derived.by(() => {
827
906
  padding: 12px 14px;
828
907
  }
829
908
  .ag--mobile .ag-card-title {
830
- font-size: 14px;
909
+ font-size: 15px;
910
+ }
911
+ .ag--mobile .ag-card-meta {
912
+ font-size: 12px;
913
+ }
914
+ .ag--mobile .ag-card-sub {
915
+ font-size: 12px;
916
+ }
917
+ .ag--mobile .ag-card-loc {
918
+ font-size: 12px;
919
+ }
920
+ .ag--mobile .ag-card-eta {
921
+ font-size: 12px;
922
+ }
923
+ .ag--mobile .ag-card-tag {
924
+ font-size: 11px;
831
925
  }
832
926
  .ag--mobile .ag-compact {
833
927
  padding: 8px 0;
834
928
  }
835
929
  .ag--mobile .ag-compact-title {
836
- font-size: 14px;
930
+ font-size: 15px;
837
931
  }
838
932
  .ag--mobile .ag-compact-time {
839
933
  font-size: 12px;
840
934
  }
935
+ .ag--mobile .ag-compact-dur {
936
+ font-size: 12px;
937
+ }
938
+ .ag--mobile .ag-compact-sub {
939
+ font-size: 12px;
940
+ }
941
+ .ag--mobile .ag-compact-loc {
942
+ font-size: 11px;
943
+ }
944
+ .ag--mobile .ag-compact-tag {
945
+ font-size: 11px;
946
+ }
947
+ .ag--mobile .ag-compact-more {
948
+ font-size: 12px;
949
+ padding-top: 6px;
950
+ }
951
+ .ag--mobile .ag-allday-span {
952
+ font-size: 11px;
953
+ }
954
+ .ag--mobile .ag-wday-badge {
955
+ font-size: 11px;
956
+ }
957
+ .ag--mobile .ag-wslot-now {
958
+ font-size: 11px;
959
+ }
960
+ .ag--mobile .ag-wday-empty {
961
+ font-size: 12px;
962
+ }
963
+ .ag--mobile .ag-wday-past-line {
964
+ font-size: 12px;
965
+ }
841
966
  .ag--mobile .ag-wslot-cards--multi {
842
967
  grid-template-columns: 1fr;
843
968
  }