import { format } from 'date-fns'; import { CheckSquare, Calendar, Bell, ArrowRight } from 'lucide-react'; import type { UpcomingItem } from '@/types'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { ScrollArea } from '@/components/ui/scroll-area'; import { cn } from '@/lib/utils'; interface UpcomingWidgetProps { items: UpcomingItem[]; days?: number; } const typeConfig: Record = { todo: { icon: CheckSquare, color: 'text-blue-400', label: 'TODO' }, event: { icon: Calendar, color: 'text-purple-400', label: 'EVENT' }, reminder: { icon: Bell, color: 'text-orange-400', label: 'REMINDER' }, }; export default function UpcomingWidget({ items, days = 7 }: UpcomingWidgetProps) { return (
Upcoming
{days} days
{items.length === 0 ? (

Nothing upcoming

) : (
{items.map((item, index) => { const config = typeConfig[item.type] || typeConfig.todo; const Icon = config.icon; return (
{item.title} {item.datetime ? format(new Date(item.datetime), 'MMM d, h:mm a') : format(new Date(item.date), 'MMM d')} {config.label} {item.priority || ''}
); })}
)}
); }