'use client'; import { useEffect, useState, useCallback } from 'react'; import { subDays } from 'date-fns'; import type { CoilReceiptRow } from '@/types/coil-activity'; import { ReceiptsTable } from '@/components/coil-activity/receipts-table'; import { DateRangePicker } from '@/components/ui/date-range-picker'; import { Card, CardContent } from '@/components/ui/card'; function LoadingSkeleton() { return ( {[...Array(10)].map((_, i) => ( ))} ); } export default function CoilReceiptsPage() { const [data, setData] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const [dateRange, setDateRange] = useState(() => ({ from: subDays(new Date(), 9), to: new Date(), })); const fetchData = useCallback(async () => { setLoading(true); setError(null); try { const startDate = dateRange.from.toISOString().split('T')[0]; const endDate = dateRange.to.toISOString().split('T')[0]; const res = await fetch( `/api/coil-activity/receipts?startDate=${startDate}&endDate=${endDate}` ); if (!res.ok) { const body = await res.json().catch(() => ({})); throw new Error(body.error || `HTTP ${res.status}`); } const json = await res.json(); setData(json); } catch (err) { setError(err instanceof Error ? err.message : String(err)); } finally { setLoading(false); } }, [dateRange]); useEffect(() => { fetchData(); }, [fetchData]); return ( Coil Activity — Receipts View coil material receipts for the selected date range {error ? ( Failed to load receipts data: {error} ) : loading || data === null ? ( ) : ( )} ); }
View coil material receipts for the selected date range