@nomideusz/svelte-calendar 0.6.4 → 0.6.5
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 +9 -5
- package/dist/assets/favicon.svg +9 -1
- package/dist/calendar/Calendar.svelte +14 -14
- package/dist/primitives/DayHeader.svelte +6 -6
- package/dist/primitives/EmptySlot.svelte +3 -3
- package/dist/primitives/EventBlock.svelte +16 -16
- package/dist/primitives/NowIndicator.svelte +5 -5
- package/dist/views/agenda/AgendaDay.svelte +33 -28
- package/dist/views/agenda/AgendaWeek.svelte +18 -18
- package/dist/views/mobile/MobileDay.svelte +3 -6
- package/dist/views/mobile/MobileWeek.svelte +53 -18
- package/dist/views/planner/PlannerDay.svelte +30 -29
- package/dist/views/planner/PlannerWeek.svelte +124 -37
- package/package.json +78 -76
|
@@ -484,7 +484,7 @@
|
|
|
484
484
|
z-index: 20;
|
|
485
485
|
display: flex;
|
|
486
486
|
gap: 2px;
|
|
487
|
-
background: color-mix(in srgb, var(--dt-surface, #
|
|
487
|
+
background: color-mix(in srgb, var(--dt-surface, var(--dt-bg, #ffffff)) 85%, transparent);
|
|
488
488
|
backdrop-filter: blur(6px);
|
|
489
489
|
-webkit-backdrop-filter: blur(6px);
|
|
490
490
|
border-radius: 8px;
|
|
@@ -496,7 +496,7 @@
|
|
|
496
496
|
background: transparent;
|
|
497
497
|
color: var(--dt-text-2, rgba(148, 163, 184, 0.55));
|
|
498
498
|
cursor: pointer;
|
|
499
|
-
font: 600 11px / 1 var(--dt-sans,
|
|
499
|
+
font: 600 11px / 1 var(--dt-sans, system-ui, sans-serif);
|
|
500
500
|
padding: 6px 12px;
|
|
501
501
|
border-radius: 6px;
|
|
502
502
|
letter-spacing: 0.04em;
|
|
@@ -523,7 +523,7 @@
|
|
|
523
523
|
pointer-events: none;
|
|
524
524
|
}
|
|
525
525
|
.ag-nav-pill:focus-visible {
|
|
526
|
-
outline: 2px solid color-mix(in srgb, var(--dt-accent, #
|
|
526
|
+
outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
|
|
527
527
|
outline-offset: 2px;
|
|
528
528
|
}
|
|
529
529
|
|
|
@@ -552,6 +552,8 @@
|
|
|
552
552
|
min-width: 0;
|
|
553
553
|
overflow-y: auto;
|
|
554
554
|
overflow-x: hidden;
|
|
555
|
+
box-sizing: border-box;
|
|
556
|
+
padding-top: 44px;
|
|
555
557
|
scrollbar-width: thin;
|
|
556
558
|
scrollbar-color: var(--dt-border) transparent;
|
|
557
559
|
}
|
|
@@ -579,22 +581,22 @@
|
|
|
579
581
|
gap: 4px;
|
|
580
582
|
padding: 2px 8px;
|
|
581
583
|
border-radius: 5px;
|
|
582
|
-
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, #
|
|
584
|
+
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
583
585
|
border: 1px solid color-mix(in srgb, var(--ev-color) 18%, transparent);
|
|
584
586
|
cursor: pointer;
|
|
585
587
|
transition: background 0.15s, border-color 0.15s;
|
|
586
588
|
}
|
|
587
589
|
.ag-allday-chip:hover {
|
|
588
|
-
background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, #
|
|
590
|
+
background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
589
591
|
border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
|
|
590
592
|
}
|
|
591
593
|
.ag-allday-chip:focus-visible {
|
|
592
|
-
outline: 2px solid var(--dt-accent, #
|
|
594
|
+
outline: 2px solid var(--dt-accent, #2563eb);
|
|
593
595
|
outline-offset: 2px;
|
|
594
596
|
}
|
|
595
597
|
.ag-allday-chip--selected {
|
|
596
598
|
border-color: var(--ev-color);
|
|
597
|
-
background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, #
|
|
599
|
+
background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
598
600
|
}
|
|
599
601
|
.ag-allday-dot {
|
|
600
602
|
width: 5px;
|
|
@@ -614,23 +616,23 @@
|
|
|
614
616
|
display: flex;
|
|
615
617
|
align-items: stretch;
|
|
616
618
|
border-radius: 6px;
|
|
617
|
-
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, #
|
|
619
|
+
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
618
620
|
border: 1px solid color-mix(in srgb, var(--ev-color) 8%, var(--dt-border, rgba(255, 255, 255, 0.06)));
|
|
619
621
|
overflow: hidden;
|
|
620
622
|
cursor: pointer;
|
|
621
623
|
transition: background 150ms, border-color 150ms;
|
|
622
624
|
}
|
|
623
625
|
.ag-card:hover {
|
|
624
|
-
background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, #
|
|
626
|
+
background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
625
627
|
border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
|
|
626
628
|
}
|
|
627
629
|
.ag-card:focus-visible {
|
|
628
|
-
outline: 2px solid var(--dt-accent, #
|
|
630
|
+
outline: 2px solid var(--dt-accent, #2563eb);
|
|
629
631
|
outline-offset: 2px;
|
|
630
632
|
}
|
|
631
633
|
.ag-card--selected {
|
|
632
634
|
border-color: var(--ev-color);
|
|
633
|
-
background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, #
|
|
635
|
+
background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
634
636
|
}
|
|
635
637
|
.ag-card--cancelled {
|
|
636
638
|
opacity: 0.5;
|
|
@@ -727,7 +729,7 @@
|
|
|
727
729
|
border-bottom: 1px solid var(--dt-border, rgba(255, 255, 255, 0.06));
|
|
728
730
|
}
|
|
729
731
|
.ag-wday--today {
|
|
730
|
-
background: color-mix(in srgb, var(--dt-accent, #
|
|
732
|
+
background: color-mix(in srgb, var(--dt-accent, #2563eb) 2%, transparent);
|
|
731
733
|
}
|
|
732
734
|
.ag-wday--tomorrow .ag-card {
|
|
733
735
|
opacity: 0.82;
|
|
@@ -739,8 +741,6 @@
|
|
|
739
741
|
padding: 8px 20px;
|
|
740
742
|
}
|
|
741
743
|
.ag-wday--disabled {
|
|
742
|
-
opacity: 0.35;
|
|
743
|
-
pointer-events: none;
|
|
744
744
|
position: relative;
|
|
745
745
|
}
|
|
746
746
|
.ag-wday--disabled::after {
|
|
@@ -776,8 +776,8 @@
|
|
|
776
776
|
font-weight: 600;
|
|
777
777
|
letter-spacing: 0.08em;
|
|
778
778
|
text-transform: uppercase;
|
|
779
|
-
color: var(--dt-accent, #
|
|
780
|
-
background: color-mix(in srgb, var(--dt-accent, #
|
|
779
|
+
color: var(--dt-accent, #2563eb);
|
|
780
|
+
background: color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent);
|
|
781
781
|
padding: 2px 7px;
|
|
782
782
|
border-radius: 3px;
|
|
783
783
|
}
|
|
@@ -824,7 +824,7 @@
|
|
|
824
824
|
font-weight: 700;
|
|
825
825
|
letter-spacing: 0.08em;
|
|
826
826
|
text-transform: uppercase;
|
|
827
|
-
color: var(--dt-accent, #
|
|
827
|
+
color: var(--dt-accent, #2563eb);
|
|
828
828
|
}
|
|
829
829
|
.ag-wslot-cards {
|
|
830
830
|
display: flex;
|
|
@@ -866,7 +866,7 @@
|
|
|
866
866
|
color: var(--dt-text);
|
|
867
867
|
}
|
|
868
868
|
.ag-compact:focus-visible {
|
|
869
|
-
outline: 2px solid var(--dt-accent, #
|
|
869
|
+
outline: 2px solid var(--dt-accent, #2563eb);
|
|
870
870
|
outline-offset: 2px;
|
|
871
871
|
}
|
|
872
872
|
.ag-compact-dot {
|
|
@@ -6,12 +6,10 @@
|
|
|
6
6
|
Events positioned absolutely within hour lanes.
|
|
7
7
|
-->
|
|
8
8
|
<script lang="ts">
|
|
9
|
-
import { onMount
|
|
9
|
+
import { onMount } from 'svelte';
|
|
10
10
|
import { useCalendarContext } from '../shared/context.svelte.js';
|
|
11
11
|
import { createClock } from '../../core/clock.svelte.js';
|
|
12
12
|
import type { TimelineEvent, BlockedSlot } from '../../core/types.js';
|
|
13
|
-
import type { DragState } from '../../engine/drag.svelte.js';
|
|
14
|
-
import type { ViewState } from '../../engine/view-state.svelte.js';
|
|
15
13
|
import { DAY_MS, HOUR_MS, sod, isAllDay, isMultiDay, segmentForDay } from '../../core/time.js';
|
|
16
14
|
import type { DaySegment } from '../../core/time.js';
|
|
17
15
|
import { fmtH, fmtTime, getLabels } from '../../core/locale.js';
|
|
@@ -181,8 +179,8 @@
|
|
|
181
179
|
ev: info.ev,
|
|
182
180
|
top: info.top,
|
|
183
181
|
height: info.height,
|
|
184
|
-
left: `calc(${GUTTER_W}px + ${(info.col / info.totalCols) * 100}%
|
|
185
|
-
width: `calc(
|
|
182
|
+
left: `calc(${GUTTER_W}px + ${(info.col / info.totalCols) * 100}% - ${(GUTTER_W * info.col) / info.totalCols}px)`,
|
|
183
|
+
width: `calc(${100 / info.totalCols}% - ${GUTTER_W / info.totalCols + 2}px)`,
|
|
186
184
|
isCurrent: info.isCurrent,
|
|
187
185
|
isNext: info.isNext,
|
|
188
186
|
col: info.col,
|
|
@@ -316,7 +314,6 @@
|
|
|
316
314
|
onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') handleGridClick(e as unknown as MouseEvent); }}
|
|
317
315
|
role="grid"
|
|
318
316
|
tabindex="-1"
|
|
319
|
-
style:--mb-grid-w="300"
|
|
320
317
|
>
|
|
321
318
|
<div class="mb-grid-inner" style:height="{gridHeight}px">
|
|
322
319
|
<!-- Hour lanes -->
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
import { useCalendarContext } from '../shared/context.svelte.js';
|
|
10
10
|
import { createClock } from '../../core/clock.svelte.js';
|
|
11
11
|
import type { TimelineEvent } from '../../core/types.js';
|
|
12
|
-
import type { ViewState } from '../../engine/view-state.svelte.js';
|
|
13
12
|
import { DAY_MS, sod, isAllDay, isMultiDay } from '../../core/time.js';
|
|
14
13
|
import { startOfWeek as sowFn } from '../../core/time.js';
|
|
15
14
|
import { fmtTime as _fmtTime, weekdayShort, getLabels } from '../../core/locale.js';
|
|
@@ -186,6 +185,12 @@
|
|
|
186
185
|
viewState.setView(dayView);
|
|
187
186
|
}
|
|
188
187
|
}
|
|
188
|
+
|
|
189
|
+
function handleDayKeydown(e: KeyboardEvent, dayMs: number) {
|
|
190
|
+
if (e.key !== 'Enter' && e.key !== ' ') return;
|
|
191
|
+
e.preventDefault();
|
|
192
|
+
handleDayTap(dayMs);
|
|
193
|
+
}
|
|
189
194
|
</script>
|
|
190
195
|
|
|
191
196
|
<div
|
|
@@ -202,15 +207,21 @@
|
|
|
202
207
|
<!-- Vertical day list -->
|
|
203
208
|
<div class="mw-list" role="list">
|
|
204
209
|
{#each dayCells as cell (cell.ms)}
|
|
205
|
-
<
|
|
210
|
+
<div
|
|
206
211
|
class="mw-row"
|
|
207
212
|
class:mw-row--today={cell.isToday}
|
|
208
213
|
class:mw-row--past={cell.isPast}
|
|
209
214
|
class:mw-row--weekend={cell.isWeekend}
|
|
210
215
|
class:mw-row--disabled={cell.isDisabled}
|
|
211
|
-
|
|
212
|
-
aria-label="{cell.dayName} {cell.dayNum}"
|
|
216
|
+
role="listitem"
|
|
213
217
|
>
|
|
218
|
+
<button
|
|
219
|
+
class="mw-row-target"
|
|
220
|
+
disabled={cell.isDisabled}
|
|
221
|
+
onclick={() => handleDayTap(cell.ms)}
|
|
222
|
+
onkeydown={(e) => handleDayKeydown(e, cell.ms)}
|
|
223
|
+
aria-label="{cell.dayName} {cell.dayNum}"
|
|
224
|
+
></button>
|
|
214
225
|
<!-- Date column -->
|
|
215
226
|
<div class="mw-date">
|
|
216
227
|
<span class="mw-day-name" class:mw-day-name--today={cell.isToday}>{cell.dayName}</span>
|
|
@@ -225,7 +236,8 @@
|
|
|
225
236
|
<span class="mw-empty">{L.noEvents}</span>
|
|
226
237
|
{:else}
|
|
227
238
|
{#each cell.events.slice(0, MAX_EVENTS) as ev (ev.id)}
|
|
228
|
-
<
|
|
239
|
+
<button
|
|
240
|
+
type="button"
|
|
229
241
|
class="mw-ev"
|
|
230
242
|
class:mw-ev--selected={selectedEventId === ev.id}
|
|
231
243
|
class:mw-ev--allday={isAllDay(ev) || isMultiDay(ev)}
|
|
@@ -235,8 +247,6 @@
|
|
|
235
247
|
class:mw-ev--full={ev.status === 'full'}
|
|
236
248
|
class:mw-ev--limited={ev.status === 'limited'}
|
|
237
249
|
style:--ev-color={ev.color ?? 'var(--dt-accent)'}
|
|
238
|
-
role="button"
|
|
239
|
-
tabindex="0"
|
|
240
250
|
onclick={(e) => { e.stopPropagation(); oneventclick?.(ev); }}
|
|
241
251
|
onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); e.stopPropagation(); oneventclick?.(ev); } }}
|
|
242
252
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -250,7 +260,7 @@
|
|
|
250
260
|
<span class="mw-ev-time">{fmtTime(ev.start)}</span>
|
|
251
261
|
{/if}
|
|
252
262
|
</div>
|
|
253
|
-
</
|
|
263
|
+
</button>
|
|
254
264
|
{/each}
|
|
255
265
|
{#if cell.totalCount > MAX_EVENTS}
|
|
256
266
|
<span class="mw-ev-more">{L.nMore(cell.totalCount - MAX_EVENTS)}</span>
|
|
@@ -260,7 +270,7 @@
|
|
|
260
270
|
|
|
261
271
|
<!-- Chevron -->
|
|
262
272
|
<svg class="mw-chevron" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14" aria-hidden="true"><path d="M6 3l5 5-5 5"/></svg>
|
|
263
|
-
</
|
|
273
|
+
</div>
|
|
264
274
|
{/each}
|
|
265
275
|
</div>
|
|
266
276
|
</div>
|
|
@@ -294,10 +304,9 @@
|
|
|
294
304
|
display: flex;
|
|
295
305
|
align-items: center;
|
|
296
306
|
gap: 12px;
|
|
307
|
+
position: relative;
|
|
297
308
|
padding: 10px 12px;
|
|
298
|
-
border: none;
|
|
299
309
|
background: transparent;
|
|
300
|
-
cursor: pointer;
|
|
301
310
|
transition: background 120ms;
|
|
302
311
|
text-align: left;
|
|
303
312
|
width: 100%;
|
|
@@ -308,7 +317,7 @@
|
|
|
308
317
|
.mw-row:last-child {
|
|
309
318
|
border-bottom: none;
|
|
310
319
|
}
|
|
311
|
-
.mw-row:active {
|
|
320
|
+
.mw-row:has(.mw-row-target:active) {
|
|
312
321
|
background: color-mix(in srgb, var(--dt-accent, #2563eb) 6%, transparent);
|
|
313
322
|
}
|
|
314
323
|
.mw-row--today {
|
|
@@ -318,8 +327,30 @@
|
|
|
318
327
|
opacity: 0.5;
|
|
319
328
|
}
|
|
320
329
|
.mw-row--disabled {
|
|
321
|
-
|
|
322
|
-
|
|
330
|
+
background-image: repeating-linear-gradient(
|
|
331
|
+
135deg,
|
|
332
|
+
transparent,
|
|
333
|
+
transparent 6px,
|
|
334
|
+
color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 6px,
|
|
335
|
+
color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 12px
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
.mw-row-target {
|
|
339
|
+
position: absolute;
|
|
340
|
+
inset: 0;
|
|
341
|
+
z-index: 0;
|
|
342
|
+
border: none;
|
|
343
|
+
background: transparent;
|
|
344
|
+
cursor: pointer;
|
|
345
|
+
padding: 0;
|
|
346
|
+
-webkit-tap-highlight-color: transparent;
|
|
347
|
+
}
|
|
348
|
+
.mw-row-target:disabled {
|
|
349
|
+
cursor: default;
|
|
350
|
+
}
|
|
351
|
+
.mw-row-target:focus-visible {
|
|
352
|
+
outline: 2px solid var(--dt-accent, #2563eb);
|
|
353
|
+
outline-offset: -2px;
|
|
323
354
|
}
|
|
324
355
|
|
|
325
356
|
/* ─── Date column ────────────────────────────────── */
|
|
@@ -330,6 +361,9 @@
|
|
|
330
361
|
width: 40px;
|
|
331
362
|
flex-shrink: 0;
|
|
332
363
|
gap: 2px;
|
|
364
|
+
position: relative;
|
|
365
|
+
z-index: 1;
|
|
366
|
+
pointer-events: none;
|
|
333
367
|
}
|
|
334
368
|
|
|
335
369
|
.mw-day-name {
|
|
@@ -365,6 +399,8 @@
|
|
|
365
399
|
display: flex;
|
|
366
400
|
flex-direction: column;
|
|
367
401
|
gap: 4px;
|
|
402
|
+
position: relative;
|
|
403
|
+
z-index: 2;
|
|
368
404
|
}
|
|
369
405
|
|
|
370
406
|
.mw-empty {
|
|
@@ -462,13 +498,12 @@
|
|
|
462
498
|
.mw-chevron {
|
|
463
499
|
flex-shrink: 0;
|
|
464
500
|
color: var(--dt-text-3, rgba(0, 0, 0, 0.2));
|
|
501
|
+
position: relative;
|
|
502
|
+
z-index: 1;
|
|
503
|
+
pointer-events: none;
|
|
465
504
|
}
|
|
466
505
|
|
|
467
506
|
/* ─── Focus ──────────────────────────────────────── */
|
|
468
|
-
.mw-row:focus-visible {
|
|
469
|
-
outline: 2px solid var(--dt-accent, #2563eb);
|
|
470
|
-
outline-offset: -2px;
|
|
471
|
-
}
|
|
472
507
|
.mw-ev:focus-visible {
|
|
473
508
|
outline: 2px solid var(--ev-color, var(--dt-accent));
|
|
474
509
|
outline-offset: 1px;
|
|
@@ -297,15 +297,14 @@
|
|
|
297
297
|
const result: PositionedEvent[] = infos.map(({ startMs: _s, endMs: _e, ...info }) => {
|
|
298
298
|
const laneH = Math.max(MIN_EVENT_H, availH / info.groupMaxRow - EVENT_GAP);
|
|
299
299
|
const topPx = contentTop + info.row * (availH / info.groupMaxRow);
|
|
300
|
-
// Vertical text: text "width" = heightPx, content "height" = width
|
|
301
300
|
const fit = measure.fitContent({
|
|
302
301
|
title: info.ev.title,
|
|
303
302
|
subtitle: info.ev.subtitle,
|
|
304
303
|
location: info.ev.location,
|
|
305
304
|
time: `${fmtTime(info.ev.start, locale)} – ${fmtTime(info.ev.end, locale)}`,
|
|
306
305
|
tags: info.ev.tags,
|
|
307
|
-
maxWidth:
|
|
308
|
-
maxHeight:
|
|
306
|
+
maxWidth: info.width - 16,
|
|
307
|
+
maxHeight: laneH - 16,
|
|
309
308
|
});
|
|
310
309
|
return { ...info, topPx, heightPx: laneH, isNext: info.isNext, fit };
|
|
311
310
|
});
|
|
@@ -328,8 +327,8 @@
|
|
|
328
327
|
subtitle: draggedEv.subtitle,
|
|
329
328
|
location: draggedEv.location,
|
|
330
329
|
tags: draggedEv.tags,
|
|
331
|
-
maxWidth:
|
|
332
|
-
maxHeight:
|
|
330
|
+
maxWidth: dragW - 16,
|
|
331
|
+
maxHeight: dragH - 16,
|
|
333
332
|
}),
|
|
334
333
|
});
|
|
335
334
|
}
|
|
@@ -894,7 +893,7 @@
|
|
|
894
893
|
bottom: 0;
|
|
895
894
|
left: 0;
|
|
896
895
|
width: 2px;
|
|
897
|
-
background: var(--dt-accent, #
|
|
896
|
+
background: var(--dt-accent, #2563eb);
|
|
898
897
|
box-shadow: 0 0 8px var(--dt-glow, rgba(239, 68, 68, 0.35));
|
|
899
898
|
}
|
|
900
899
|
.fs-now-tag {
|
|
@@ -902,8 +901,8 @@
|
|
|
902
901
|
top: 8px;
|
|
903
902
|
left: 8px;
|
|
904
903
|
font: 700 11px/1 var(--dt-mono, ui-monospace, monospace);
|
|
905
|
-
color: var(--dt-accent, #
|
|
906
|
-
background: color-mix(in srgb, var(--dt-bg, #
|
|
904
|
+
color: var(--dt-accent, #2563eb);
|
|
905
|
+
background: color-mix(in srgb, var(--dt-bg, #ffffff) 92%, var(--dt-accent, #2563eb));
|
|
907
906
|
border: 1px solid var(--dt-accent-dim, rgba(239, 68, 68, 0.18));
|
|
908
907
|
padding: 3px 6px;
|
|
909
908
|
border-radius: 4px;
|
|
@@ -927,7 +926,7 @@
|
|
|
927
926
|
letter-spacing: 0.04em;
|
|
928
927
|
text-transform: uppercase;
|
|
929
928
|
color: var(--dt-text, rgba(226, 232, 240, 0.85));
|
|
930
|
-
background: color-mix(in srgb, var(--dt-surface, #
|
|
929
|
+
background: color-mix(in srgb, var(--dt-surface, var(--dt-bg, #ffffff)) 85%, transparent);
|
|
931
930
|
backdrop-filter: blur(6px);
|
|
932
931
|
-webkit-backdrop-filter: blur(6px);
|
|
933
932
|
padding: 8px 16px;
|
|
@@ -945,7 +944,7 @@
|
|
|
945
944
|
z-index: 20;
|
|
946
945
|
display: flex;
|
|
947
946
|
gap: 2px;
|
|
948
|
-
background: color-mix(in srgb, var(--dt-surface, #
|
|
947
|
+
background: color-mix(in srgb, var(--dt-surface, var(--dt-bg, #ffffff)) 85%, transparent);
|
|
949
948
|
backdrop-filter: blur(6px);
|
|
950
949
|
-webkit-backdrop-filter: blur(6px);
|
|
951
950
|
border-radius: 8px;
|
|
@@ -957,7 +956,7 @@
|
|
|
957
956
|
background: transparent;
|
|
958
957
|
color: var(--dt-text-2, rgba(148, 163, 184, 0.55));
|
|
959
958
|
cursor: pointer;
|
|
960
|
-
font: 600 11px / 1 var(--dt-sans,
|
|
959
|
+
font: 600 11px / 1 var(--dt-sans, system-ui, sans-serif);
|
|
961
960
|
padding: 6px 12px;
|
|
962
961
|
border-radius: 6px;
|
|
963
962
|
letter-spacing: 0.04em;
|
|
@@ -984,7 +983,7 @@
|
|
|
984
983
|
pointer-events: none;
|
|
985
984
|
}
|
|
986
985
|
.fs-nav-pill:focus-visible {
|
|
987
|
-
outline: 2px solid color-mix(in srgb, var(--dt-accent, #
|
|
986
|
+
outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
|
|
988
987
|
outline-offset: 2px;
|
|
989
988
|
}
|
|
990
989
|
|
|
@@ -1009,7 +1008,7 @@
|
|
|
1009
1008
|
gap: 4px;
|
|
1010
1009
|
padding: 2px 8px;
|
|
1011
1010
|
border-radius: 4px;
|
|
1012
|
-
background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, #
|
|
1011
|
+
background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1013
1012
|
border-left: 3px solid var(--ev-color);
|
|
1014
1013
|
white-space: nowrap;
|
|
1015
1014
|
flex-shrink: 0;
|
|
@@ -1017,14 +1016,14 @@
|
|
|
1017
1016
|
transition: background 0.15s;
|
|
1018
1017
|
}
|
|
1019
1018
|
.fs-ad:hover {
|
|
1020
|
-
background: color-mix(in srgb, var(--ev-color) 28%, var(--dt-surface, #
|
|
1019
|
+
background: color-mix(in srgb, var(--ev-color) 28%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1021
1020
|
}
|
|
1022
1021
|
.fs-ad:focus-visible {
|
|
1023
|
-
outline: 2px solid color-mix(in srgb, var(--dt-accent, #
|
|
1022
|
+
outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
|
|
1024
1023
|
outline-offset: 2px;
|
|
1025
1024
|
}
|
|
1026
1025
|
.fs-ad--selected {
|
|
1027
|
-
background: color-mix(in srgb, var(--ev-color) 30%, var(--dt-surface, #
|
|
1026
|
+
background: color-mix(in srgb, var(--ev-color) 30%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1028
1027
|
border-left-width: 4px;
|
|
1029
1028
|
}
|
|
1030
1029
|
|
|
@@ -1057,7 +1056,7 @@
|
|
|
1057
1056
|
z-index: 6;
|
|
1058
1057
|
border-radius: 6px;
|
|
1059
1058
|
cursor: pointer;
|
|
1060
|
-
background: color-mix(in srgb, var(--ev-color) 15%, var(--dt-surface, #
|
|
1059
|
+
background: color-mix(in srgb, var(--ev-color) 15%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1061
1060
|
overflow: hidden;
|
|
1062
1061
|
display: flex;
|
|
1063
1062
|
align-items: center;
|
|
@@ -1065,18 +1064,18 @@
|
|
|
1065
1064
|
transition: box-shadow 120ms, background 120ms;
|
|
1066
1065
|
}
|
|
1067
1066
|
.fs-event:hover {
|
|
1068
|
-
background: color-mix(in srgb, var(--ev-color) 25%, var(--dt-surface, #
|
|
1067
|
+
background: color-mix(in srgb, var(--ev-color) 25%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1069
1068
|
box-shadow: 0 2px 12px color-mix(in srgb, var(--ev-color) 25%, transparent);
|
|
1070
1069
|
}
|
|
1071
1070
|
.fs-event--selected {
|
|
1072
1071
|
box-shadow: 0 0 0 2px var(--ev-color), 0 2px 14px color-mix(in srgb, var(--ev-color) 35%, transparent);
|
|
1073
1072
|
}
|
|
1074
1073
|
.fs-event--current {
|
|
1075
|
-
background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, #
|
|
1074
|
+
background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1076
1075
|
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ev-color) 20%, transparent);
|
|
1077
1076
|
}
|
|
1078
1077
|
.fs-event--next {
|
|
1079
|
-
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, #
|
|
1078
|
+
background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
|
|
1080
1079
|
border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
|
|
1081
1080
|
}
|
|
1082
1081
|
.fs-event--dragging {
|
|
@@ -1107,16 +1106,18 @@
|
|
|
1107
1106
|
cursor: default;
|
|
1108
1107
|
}
|
|
1109
1108
|
|
|
1110
|
-
/* Event inner
|
|
1109
|
+
/* Event inner */
|
|
1111
1110
|
.fs-ev-inner {
|
|
1112
|
-
writing-mode: vertical-rl;
|
|
1113
|
-
transform: rotate(180deg);
|
|
1114
1111
|
display: flex;
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1112
|
+
flex-direction: column;
|
|
1113
|
+
align-items: flex-start;
|
|
1114
|
+
justify-content: center;
|
|
1115
|
+
gap: 3px;
|
|
1116
|
+
width: 100%;
|
|
1117
|
+
height: 100%;
|
|
1118
1118
|
overflow: hidden;
|
|
1119
|
-
|
|
1119
|
+
box-sizing: border-box;
|
|
1120
|
+
padding: 6px 8px;
|
|
1120
1121
|
}
|
|
1121
1122
|
.fs-ev-live {
|
|
1122
1123
|
flex-shrink: 0;
|
|
@@ -1164,7 +1165,7 @@
|
|
|
1164
1165
|
overflow: hidden;
|
|
1165
1166
|
text-overflow: ellipsis;
|
|
1166
1167
|
}
|
|
1167
|
-
.fs-ev-tags { display: flex; gap: 4px; }
|
|
1168
|
+
.fs-ev-tags { display: flex; gap: 4px; flex-wrap: wrap; }
|
|
1168
1169
|
.fs-ev-tag {
|
|
1169
1170
|
font: 500 8px/1 var(--dt-sans, system-ui, sans-serif);
|
|
1170
1171
|
color: var(--ev-color, var(--dt-accent));
|
|
@@ -1176,7 +1177,7 @@
|
|
|
1176
1177
|
|
|
1177
1178
|
/* ─── Focus-visible ──────────────────────────────── */
|
|
1178
1179
|
.fs-event:focus-visible {
|
|
1179
|
-
outline: 2px solid var(--dt-accent, #
|
|
1180
|
+
outline: 2px solid var(--dt-accent, #2563eb);
|
|
1180
1181
|
outline-offset: 2px;
|
|
1181
1182
|
}
|
|
1182
1183
|
</style>
|