import { useState } from 'react'; import { LogOut } from 'lucide-react'; import { useQuery } from '@tanstack/react-query'; import api from '@/lib/api'; import type { SharedCalendarMembership, CalendarMemberInfo, Connection } from '@/types'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogClose, } from '@/components/ui/dialog'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { useConfirmAction } from '@/hooks/useConfirmAction'; import { useSharedCalendars } from '@/hooks/useSharedCalendars'; import { useConnections } from '@/hooks/useConnections'; import PermissionBadge from './PermissionBadge'; import CalendarMemberList from './CalendarMemberList'; import CalendarMemberSearch from './CalendarMemberSearch'; const colorSwatches = [ '#3b82f6', '#ef4444', '#f97316', '#eab308', '#22c55e', '#8b5cf6', '#ec4899', '#06b6d4', ]; interface SharedCalendarSettingsProps { membership: SharedCalendarMembership; onClose: () => void; } export default function SharedCalendarSettings({ membership, onClose }: SharedCalendarSettingsProps) { const [localColor, setLocalColor] = useState(membership.local_color || membership.calendar_color); const { updateColor, leaveCalendar, invite, isInviting } = useSharedCalendars(); const { connections } = useConnections(); const membersQuery = useQuery({ queryKey: ['calendar-members', membership.calendar_id], queryFn: async () => { const { data } = await api.get( `/shared-calendars/${membership.calendar_id}/members` ); return data; }, }); const members = membersQuery.data ?? []; const { confirming: leaveConfirming, handleClick: handleLeaveClick } = useConfirmAction( async () => { await leaveCalendar({ calendarId: membership.calendar_id, memberId: membership.id }); onClose(); } ); const handleColorSelect = async (color: string) => { setLocalColor(color); await updateColor({ calendarId: membership.calendar_id, localColor: color }); }; const handleInvite = async (conn: Connection) => { await invite({ calendarId: membership.calendar_id, connectionId: conn.id, permission: 'read_only', canAddOthers: false, }); membersQuery.refetch(); }; return ( Shared Calendar Settings

{membership.calendar_name}

Your permission:
{colorSwatches.map((c) => (
{membership.can_add_others && (
)}
); }