import React, { useState, useEffect, useRef } from 'react'; import { CustomReminder } from '../../types'; import { reminderIcons } from '../icons/Icons'; interface AddReminderModalProps { isOpen: boolean; onClose: () => void; onAdd: (reminder: Omit) => Promise; } const AddReminderModal: React.FC = ({ isOpen, onClose, onAdd, }) => { const [title, setTitle] = useState(''); const [icon, setIcon] = useState('bell'); const [frequencyMinutes, setFrequencyMinutes] = useState(60); const [startTime, setStartTime] = useState('09:00'); const [endTime, setEndTime] = useState('17:00'); const [isSaving, setIsSaving] = useState(false); const titleInputRef = useRef(null); useEffect(() => { if (isOpen) { setTitle(''); setIcon('bell'); setFrequencyMinutes(60); setStartTime('09:00'); setEndTime('17:00'); setIsSaving(false); setTimeout(() => titleInputRef.current?.focus(), 100); } }, [isOpen]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!title || isSaving) return; setIsSaving(true); try { await onAdd({ title, icon, frequencyMinutes, startTime, endTime, }); } catch (error) { console.error('Failed to add reminder', error); alert('There was an error saving your reminder. Please try again.'); } finally { setIsSaving(false); } }; if (!isOpen) return null; return (

Add New Reminder

setTitle(e.target.value)} required ref={titleInputRef} className='mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm bg-white dark:bg-slate-700 dark:border-slate-600 dark:placeholder-slate-400 dark:text-white' placeholder='e.g., Drink water' />
{Object.entries(reminderIcons).map(([key, IconComponent]) => ( ))}
setFrequencyMinutes(parseInt(e.target.value, 10)) } min='1' className='mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm bg-white dark:bg-slate-700 dark:border-slate-600' />
setStartTime(e.target.value)} required className='mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm bg-white dark:bg-slate-700 dark:border-slate-600' />
setEndTime(e.target.value)} required className='mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm bg-white dark:bg-slate-700 dark:border-slate-600' />
); }; export default AddReminderModal;