GitHub

/ calendar

Calendar

@kumiki/headless/calendar

Svelte 5 attachments for Calendar — grid + day factories with focused-date keyboard navigation and locale-aware first-day-of-week.

This component, layer by layer

Styled, copy-paste presets (preview). Run pnpm kumiki add to drop the source into your project, then edit freely.

Live preview

Live preview…

Install
pnpm add @kumiki/atelier
Internationalised Calendar
<script lang="ts">
  import { Tailwind as Calendar } from '@kumiki/atelier/calendar';
  import { type CalendarDate, today, getLocalTimeZone } from '@internationalized/date';

  let value = $state<CalendarDate | null>(today(getLocalTimeZone()));
</script>

<Calendar.Root bind:value>
  <Calendar.Header />
  <Calendar.Grid>
    {#snippet day(cell)}
      <Calendar.Day date={cell.date} inMonth={cell.inMonth} />
    {/snippet}
  </Calendar.Grid>
</Calendar.Root>

/ accessibility

Accessibility

axe-core — run on every PR (LTR + RTL × every documented state).

Keyboard

No component-specific keymap. Inherits standard browser focus / activation behaviour.

Test discipline

  • axe-core — run on every PR (LTR + RTL × every documented state).
  • APG keyboard tests — Playwright, hand-written per pattern.
  • VoiceOver / NVDA — Guidepup nightly schedule.
  • Type-level required names — title / aria-label / aria-labelledby.
Read the W3C ARIA APG pattern ↗