import * as React from 'react';
import { type CategoricalHue } from '../../tokens/categorical-color';
/**
 * Calendar — 事件檢視 canvas(月 view MVP)
 *
 * 定位:看事件的 page-level canvas,對齊 Notion Calendar / Google Calendar。
 * 完整 spec 見 `event-calendar.spec.md`。
 *
 * ── Layout Family ──
 * 非 4-Family,屬 page-composite(多區塊 Toolbar + Grid + EventTile)。
 *
 * ── MVP scope(本次 session)──
 * - 月 view 完整(toolbar / grid / event tile / today highlight / outside days)
 * - 週 / 日 view 是 tech debt
 * - 拖拉增刪 event 是 tech debt
 *
 * ── 與 DatePicker 的區分 ──
 * DatePicker 是「選日期」form control;Calendar 是「看事件」page canvas。
 * 名字相近但職責完全不同,spec 頂段明示分界。
 */
export interface CalendarEvent {
    id: string;
    title: string;
    /** ISO 字串 "YYYY-MM-DD"(all-day)或 "YYYY-MM-DDTHH:mm"(timed) */
    start: string | Date;
    end: string | Date;
    allDay?: boolean;
    /**
     * 事件類別色(categorical 色相,1:1 對 `--color-{hue}-*`)。**消費 categorical-color SSOT**,
     * 與 Tag / Avatar 共用同一組 12 色相。2026-06-04 修:原 `orange` 與 `red` 都誤接 deep-orange;
     * 改消費 SSOT 後 orange→`--color-orange-*`、red→`--color-red-*`(品牌紅 hue 25),各自獨立。
     */
    color?: CategoricalHue;
    metadata?: Record<string, unknown>;
}
export type CalendarView = 'month' | 'week' | 'day';
export interface CalendarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
    /** 當前 view(MVP 只 'month',其餘 view tech debt) */
    view?: CalendarView;
    defaultView?: CalendarView;
    onViewChange?: (view: CalendarView) => void;
    /** 聚焦日期(月 view 的那個月) */
    referenceDate?: Date;
    defaultReferenceDate?: Date;
    onReferenceDateChange?: (date: Date) => void;
    /** 事件資料 */
    events?: CalendarEvent[];
    /** 點 event tile 回調 */
    onEventClick?: (event: CalendarEvent) => void;
    /** 點月 cell 回調(用於新增) */
    onDateClick?: (date: Date) => void;
    /** 點新事件 CTA 回調 */
    onCreateEvent?: () => void;
    /** 0 = Sunday, 1 = Monday。預設 0(對齊 Google Calendar 美系預設) */
    weekStartsOn?: 0 | 1;
    /** 自訂 event tile 渲染 */
    renderEventTile?: (event: CalendarEvent) => React.ReactNode;
    /** size(MVP 只 md;lg 為 tech debt) */
    size?: 'md' | 'lg';
    className?: string;
    /** locale(預設 'en-US') */
    locale?: string;
    /** ARIA labels for chrome controls. Override for i18n. */
    prevAriaLabel?: string;
    nextAriaLabel?: string;
    /** 月份導覽 <nav> landmark 的 aria-label。Override for i18n. */
    navAriaLabel?: string;
    viewToggleAriaLabel?: string;
    todayLabel?: string;
}
declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<HTMLDivElement>>;
export declare const calendarMeta: {
    readonly component: "Calendar";
    readonly family: null;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-muted", "bg-neutral-hover", "bg-info", "bg-surface"];
        readonly fg: readonly ["text-fg-disabled", "text-fg-muted", "text-foreground"];
        readonly ring: readonly ["ring-ring"];
    };
};
export { Calendar };
//# sourceMappingURL=calendar.d.ts.map