import React, { useState, useRef, useEffect } from 'react'; interface SettingsPopoverProps { dayStart: string; dayEnd: string; wakeupRef: string; bedtimeRef: string; onSave: (settings: { dayStart: string; dayEnd: string; wakeupRef: string; bedtimeRef: string }) => void; } export function SettingsPopover({ dayStart, dayEnd, wakeupRef, bedtimeRef, onSave }: SettingsPopoverProps) { const [isOpen, setIsOpen] = useState(false); const [localDayStart, setLocalDayStart] = useState(dayStart); const [localDayEnd, setLocalDayEnd] = useState(dayEnd); const [localWakeupRef, setLocalWakeupRef] = useState(wakeupRef); const [localBedtimeRef, setLocalBedtimeRef] = useState(bedtimeRef); const popoverRef = useRef(null); useEffect(() => { setLocalDayStart(dayStart); setLocalDayEnd(dayEnd); setLocalWakeupRef(wakeupRef); setLocalBedtimeRef(bedtimeRef); }, [dayStart, dayEnd, wakeupRef, bedtimeRef]); useEffect(() => { const handleClickOutside = (e: MouseEvent) => { if (popoverRef.current && !popoverRef.current.contains(e.target as Node)) { setIsOpen(false); } }; if (isOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => document.removeEventListener('mousedown', handleClickOutside); }, [isOpen]); const handleSave = () => { onSave({ dayStart: localDayStart, dayEnd: localDayEnd, wakeupRef: localWakeupRef, bedtimeRef: localBedtimeRef, }); setIsOpen(false); }; return (
{isOpen && (

Settings

setLocalDayStart(e.target.value)} className="w-full p-2 border rounded-md text-sm" />
setLocalDayEnd(e.target.value)} className="w-full p-2 border rounded-md text-sm" />
setLocalWakeupRef(e.target.value)} className="w-full p-2 border rounded-md text-sm" />
setLocalBedtimeRef(e.target.value)} className="w-full p-2 border rounded-md text-sm" />
)}
); }