import { useState } from 'react'; import { Pencil } from 'lucide-react'; import { Checkbox } from '@/components/ui/checkbox'; import type { SharedCalendarMembership } from '@/types'; import SharedCalendarSettings from './SharedCalendarSettings'; const STORAGE_KEY = 'umbra_shared_cal_visibility'; function loadVisibility(): Record { try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}'); } catch { return {}; } } function saveVisibility(v: Record) { localStorage.setItem(STORAGE_KEY, JSON.stringify(v)); } interface SharedCalendarSectionProps { memberships: SharedCalendarMembership[]; visibleSharedIds: Set; onVisibilityChange: (calendarId: number, visible: boolean) => void; } export default function SharedCalendarSection({ memberships, visibleSharedIds, onVisibilityChange, }: SharedCalendarSectionProps) { const [settingsFor, setSettingsFor] = useState(null); if (memberships.length === 0) return null; return ( <>
Shared Calendars
{memberships.map((m) => { const color = m.local_color || m.calendar_color; const isVisible = visibleSharedIds.has(m.calendar_id); return (
onVisibilityChange(m.calendar_id, !isVisible)} className="shrink-0" style={{ accentColor: color, borderColor: isVisible ? color : undefined, backgroundColor: isVisible ? color : undefined, }} /> {m.calendar_name}
); })}
{settingsFor && ( setSettingsFor(null)} /> )} ); } export { STORAGE_KEY, loadVisibility, saveVisibility };