import React, { useState, useEffect } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { MoreVertical, X, RotateCw } from 'lucide-react'; import { needsRefresh, updateWidgetCache } from '@/lib/widget-utils'; interface WidgetContainerProps { id: string; title: string; widgetType: string; size: 'small' | 'medium' | 'large' | 'full_width'; isEditing: boolean; onRemove: () => void; onRefresh?: () => Promise; refreshInterval?: number; lastRefresh?: Date | null; children: React.ReactNode; } export function WidgetContainer({ id, title, size, isEditing, onRemove, onRefresh, refreshInterval = 300, lastRefresh, children, }: WidgetContainerProps) { const [isRefreshing, setIsRefreshing] = useState(false); const [showMenu, setShowMenu] = useState(false); const sizeClasses = { small: 'col-span-1', medium: 'col-span-2', large: 'col-span-3', full_width: 'col-span-full', }; const handleRefresh = async () => { if (!onRefresh) return; setIsRefreshing(true); try { await onRefresh(); } catch (error) { console.error('[v0] Widget refresh failed:', error); } finally { setIsRefreshing(false); } }; return ( {title} {isEditing && (
{onRefresh && ( )}
)}
{children}
); }