Data

Calendar

A month grid on react-day-picker: pine selections, soft mint ranges, bordered today. Single, multiple, or range.

July 2026

Penciled in for July 20. The ferns approve.

Show code
"use client";

import { useState } from "react";

import { Calendar } from "@/registry/lilt/ui/calendar";

export default function CalendarDemo() {
  const [date, setDate] = useState<Date | undefined>(new Date());

  return (
    <div className="flex flex-col items-center gap-3">
      <div className="rounded-[var(--radius-card)] border border-[var(--lilt-border)] bg-[var(--lilt-surface)]">
        <Calendar mode="single" onSelect={setDate} selected={date} />
      </div>
      <p className="text-sm text-[var(--lilt-text-muted)]">
        {date
          ? `Penciled in for ${date.toLocaleDateString("en-US", {
              day: "numeric",
              month: "long",
            })}. The ferns approve.`
          : "Pick a day — the seedlings can wait."}
      </p>
    </div>
  );
}

Installation

npx shadcn@latest add @lilt/calendar

Accessibility

  • A real date grid: arrow keys move by day, PageUp/PageDown by month — roving focus comes from react-day-picker.
  • Today is marked with a border, not color alone; selected days announce via aria-selected and the nav buttons carry labels.