Getting Started
svelte5plus-calendar is a full-featured calendar component built on Svelte 5 runes — no runtime dependencies, TypeScript-first, and themeable down to the last pixel.
Installation
npm install svelte5plus-calendarRequires Svelte 5. The stylesheet is imported automatically with the component.
Your first calendar
<script lang="ts">
import { Calendar, type CalendarEvent } from 'svelte5plus-calendar';
let events = $state<CalendarEvent[]>([
{
id: '1',
title: 'Kickoff meeting',
start: new Date(2026, 7, 13, 10, 0),
end: new Date(2026, 7, 13, 11, 0)
}
]);
</script>
<!-- The calendar fills its parent — give the wrapper a height. -->
<div style="height: 640px">
<Calendar bind:events view="month" locale="en" />
</div>Sizing —
the calendar stretches to fill its parent element, so the wrapper needs an explicit height (or a flex/grid track).
Live example
Here it is running — click the Code button to see the exact source of this demo:
Hello, calendar
Sun
Mon
Tue
Wed
Thu
Fri
Sat
30
31
Sep 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Oct 1
2
3
The three bindable props
Almost everything you do with the calendar flows through three bindable props:
| Prop | Type | Purpose |
|---|---|---|
bind:events | CalendarEvent[] | Your data. Drag & drop edits write back into this array. |
bind:date | Date | The focused date — navigation buttons update it. |
bind:view | 'day' | 'week' | 'month' | 'year' | 'agenda' | The active view — switch it from your own UI at any time. |