"use client" import React from "react" import { useSortable } from "@dnd-kit/sortable" import { CSS } from "@dnd-kit/utilities" import { GripVertical, Settings, X, Eye, EyeOff } from "lucide-react" import { Button } from "@/components/ui/button" import { cn } from "@/lib/utils/styles" import { WidgetConfig } from "@/hooks/useWidgetLayout" interface DraggableWidgetProps { widget: WidgetConfig children: React.ReactNode isEditMode: boolean onRemove?: () => void onConfigure?: () => void onToggleVisibility?: () => void } export function DraggableWidget({ widget, children, isEditMode, onRemove, onConfigure, onToggleVisibility }: DraggableWidgetProps) { const { attributes, listeners, setNodeRef, transform, transition, isDragging, } = useSortable({ id: widget.id }) const style = { transform: CSS.Transform.toString(transform), transition, opacity: isDragging ? 0.5 : 1, zIndex: isDragging ? 1000 : 1, } const colSpanClasses = { 1: "lg:col-span-1", 2: "lg:col-span-2", 3: "lg:col-span-3", 4: "lg:col-span-4", }[widget.colSpan || 4] || "lg:col-span-4" return (
{isEditMode && ( <> {/* Edit Mode Overlay */}
{/* Drag Handle */}
{/* Widget Title Badge */}
{widget.title}
{/* Action Buttons */}
{onConfigure && ( )} {onToggleVisibility && ( )}
)} {/* Widget Content */}
{children}
) }