"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { getLayoutConfigurations, deleteLayoutConfiguration } from "@/app/actions/layout-configurations"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Skeleton } from "@/components/ui/skeleton"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog"; import { toast } from "@/hooks/use-toast"; import { Trash2, Eye, Edit } from "lucide-react"; interface LayoutConfiguration { id: number; name: string; sections: LayoutSection[]; createdAt: string; updatedAt: string; } interface LayoutSection { id: number; name: string; type: string; sheetName: string; fields: LayoutSectionField[]; } interface LayoutSectionField { id: number; name: string; dataType: string; cellPosition: string; } export function LayoutConfigurationsTable() { const [configurations, setConfigurations] = useState([]); const [loading, setLoading] = useState(true); const router = useRouter(); useEffect(() => { loadConfigurations(); }, []); async function loadConfigurations() { try { const result = await getLayoutConfigurations(); if (result.success) { setConfigurations(result.data || []); } else { toast({ title: "Error", description: result.error, variant: "destructive", }); } } catch (error) { toast({ title: "Error", description: "Failed to load configurations", variant: "destructive", }); } finally { setLoading(false); } } async function handleDelete(id: number) { try { const result = await deleteLayoutConfiguration(id); if (result.success) { toast({ title: "Success", description: "Configuration deleted successfully", }); loadConfigurations(); } else { toast({ title: "Error", description: result.error, variant: "destructive", }); } } catch (error) { toast({ title: "Error", description: "Failed to delete configuration", variant: "destructive", }); } } if (loading) { return (
{[...Array(3)].map((_, i) => ( ))}
); } if (configurations.length === 0) { return (

No layout configurations found

); } return (
{configurations.map((config) => (
{config.name} Created: {new Date(config.createdAt).toLocaleDateString()}
Delete Configuration Are you sure you want to delete "{config.name}"? This action cannot be undone. Cancel handleDelete(config.id)} className="bg-destructive text-destructive-foreground" > Delete
{config.sections.length} sections {config.sections.reduce((total, section) => total + section.fields.length, 0)} fields
))}
); }