import { useState } from "react"; import type { Calendar } from "@/jmap/types"; import { useCalendar } from "@/store/calendar"; import { Dialog } from "@/ui/dialog"; import { ColorSwatches } from "@/ui/misc"; import { toast } from "@/ui/toast"; import { browserTimeZone, listTimeZones } from "@/lib/dates"; import { t as translate } from "@/lib/i18n"; export function CalendarDialog({ calendar, onClose }: { calendar: Partial; onClose: () => void }) { const cal = useCalendar(); const [name, setName] = useState(calendar.name ?? ""); const [color, setColor] = useState(calendar.color ?? "#0f766e"); const [description, setDescription] = useState(calendar.description ?? ""); const [tz, setTz] = useState(calendar.timeZone ?? ""); const [avail, setAvail] = useState(calendar.includeInAvailability ?? "all"); const [busy, setBusy] = useState(false); const save = async () => { if (!name.trim()) return; setBusy(true); try { const data: Partial = { name: name.trim(), color, description: description || null, timeZone: tz || null, includeInAvailability: avail }; if (calendar.id) await cal.updateCalendar(calendar.id, data); else await cal.createCalendar(data); toast.success("Calendar saved"); onClose(); } catch (err) { toast.error((err as Error).message); } finally { setBusy(false); } }; return ( }>
setName(e.target.value)} />
setDescription(e.target.value)} />
); }