"use client"; import { useState, useEffect } from "react"; interface DateRangePickerProps { minDate: string; maxDate: string; onDateRangeChange: (startDate: string, endDate: string) => void; initialStartDate?: string; initialEndDate?: string; } export default function DateRangePicker({ minDate, maxDate, onDateRangeChange, initialStartDate, initialEndDate, }: DateRangePickerProps) { const [startDate, setStartDate] = useState(initialStartDate || minDate); const [endDate, setEndDate] = useState(initialEndDate || maxDate); useEffect(() => { // Notify parent component when dates change onDateRangeChange(startDate, endDate); }, [startDate, endDate, onDateRangeChange]); const handleStartDateChange = (newStartDate: string) => { // Ensure start date is not before min date if (newStartDate < minDate) { setStartDate(minDate); return; } // Ensure start date is not after end date if (newStartDate > endDate) { setEndDate(newStartDate); } setStartDate(newStartDate); }; const handleEndDateChange = (newEndDate: string) => { // Ensure end date is not after max date if (newEndDate > maxDate) { setEndDate(maxDate); return; } // Ensure end date is not before start date if (newEndDate < startDate) { setStartDate(newEndDate); } setEndDate(newEndDate); }; const resetToFullRange = () => { setStartDate(minDate); setEndDate(maxDate); }; const setLast30Days = () => { const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); const thirtyDaysAgoStr = thirtyDaysAgo.toISOString().split("T")[0]; // Use the later of 30 days ago or minDate const newStartDate = thirtyDaysAgoStr > minDate ? thirtyDaysAgoStr : minDate; setStartDate(newStartDate); setEndDate(maxDate); }; const setLast7Days = () => { const sevenDaysAgo = new Date(); sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7); const sevenDaysAgoStr = sevenDaysAgo.toISOString().split("T")[0]; // Use the later of 7 days ago or minDate const newStartDate = sevenDaysAgoStr > minDate ? sevenDaysAgoStr : minDate; setStartDate(newStartDate); setEndDate(maxDate); }; return (