import type { Snippet } from 'svelte'; import type { CalendarEvent } from './calendar.types.js'; interface CalendarTimeGridInternalProps { dates: Date[]; onEventClick?: (event: CalendarEvent) => void; /** * Head cell for one date, rendered as the top row of the grid (the week * view's weekday buttons). It belongs *inside* this component rather than * above it because the grid is the horizontal scroll container: a head row * living outside it would keep its own seven equal columns and drift out of * step with the day columns the moment the grid scrolls. Sticky to the top, * so it survives the vertical scroll it now shares with the hours. */ columnHeader?: Snippet<[{ date: Date; index: number; }]>; /** * All-day band cell for one date — same alignment argument as * `columnHeader`, and rendered into the *same* cell as it, below the head. * One pinned strip rather than two stacked sticky rows: the second would * need the first's measured height as its `top`, and an unpinned band * scrolls out of sight the moment the grid jumps to the current time. * Either snippet alone builds the strip on its own. */ columnAllDay?: Snippet<[{ date: Date; index: number; }]>; /** * Reports whether the day columns currently overflow the grid sideways. * The week layout owns a swipe gesture on the same axis and has to know * which of the two the finger belongs to — and that cannot be inferred from * the viewport, only measured: it depends on the card's width, the day count * and `--blocks-calendar-day-min-width`. Called on mount and whenever the * grid resizes, only on change. */ onHorizontalOverflow?: (overflowing: boolean) => void; class?: string; } declare const CalendarTimeGrid: import("svelte").Component; type CalendarTimeGrid = ReturnType; export default CalendarTimeGrid;