'use client'; import { useState, useEffect } from 'react'; import { Reminder, CreateReminderData, UpdateReminderData, REMINDER_TYPES } from '@/types/reminder'; interface ReminderFormProps { reminder?: Reminder | null; packageName: string; onSubmit: (data: CreateReminderData | UpdateReminderData) => Promise; onCancel: () => void; isLoading: boolean; } export default function ReminderForm({ reminder, packageName, onSubmit, onCancel, isLoading }: ReminderFormProps) { const [formData, setFormData] = useState({ title: '', description: '', time: '', repeatable: false, repeat_days: null, type: 'reminder', }); useEffect(() => { if (reminder) { const formattedTime = reminder.time ? reminder.time.replace(/\.\d+/, '').slice(0, 16) : ''; setFormData({ title: reminder.title || '', description: reminder.description || '', time: formattedTime, repeatable: reminder.repeatable || false, repeat_days: reminder.repeat_days, type: reminder.type || 'reminder', }); } else { const defaultTime = new Date(); defaultTime.setHours(defaultTime.getHours() + 1); const year = defaultTime.getFullYear(); const month = String(defaultTime.getMonth() + 1).padStart(2, '0'); const day = String(defaultTime.getDate()).padStart(2, '0'); const hours = String(defaultTime.getHours()).padStart(2, '0'); const minutes = String(defaultTime.getMinutes()).padStart(2, '0'); setFormData({ title: '', description: '', time: `${year}-${month}-${day}T${hours}:${minutes}`, repeatable: false, repeat_days: null, type: 'reminder', }); } }, [reminder]); const handleInputChange = (e: React.ChangeEvent) => { const { name, value, type } = e.target; if (type === 'checkbox') { const checked = (e.target as HTMLInputElement).checked; setFormData(prev => ({ ...prev, [name]: checked })); } else { setFormData(prev => ({ ...prev, [name]: value })); } }; const handleNumberChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value ? parseInt(value, 10) : null })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); let formattedTime = ''; if (formData.time) { formattedTime = formData.time.replace('T', ' ') + ':00.000'; } await onSubmit({ ...formData, time: formattedTime }); }; const inputClass = 'block w-full px-4 py-2.5 text-sm text-gray-900 dark:text-gray-100 border border-gray-200 dark:border-gray-700 rounded-xl bg-gray-50 dark:bg-gray-800/60 placeholder-gray-400 dark:placeholder-gray-500 focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 dark:focus:border-indigo-400 transition-colors'; const labelClass = 'block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1.5'; return (

{reminder ? 'ویرایش یادآوری' : 'ایجاد یادآوری جدید'} برای پکیج {packageName}

{formData.repeatable && (
)}