"use client" import { useState } from "react" import Link from "next/link" import { useRouter } from "next/navigation" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@/components/ui/dialog" import { deleteProduto } from "@/lib/actions" import { toast } from "@/components/ui/use-toast" import type { Produto } from "@/lib/supabase" interface ProductTableProps { products: Produto[] } export function ProductTable({ products }: ProductTableProps) { const router = useRouter() const [selectedProduct, setSelectedProduct] = useState(null) const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false) const handleDelete = async () => { if (!selectedProduct) return const result = await deleteProduto(selectedProduct.id) if (result.success) { toast({ title: "Produto excluído com sucesso." }) setIsDeleteDialogOpen(false) setSelectedProduct(null) router.refresh() } else { toast({ title: "Erro ao excluir produto.", variant: "destructive" }) } } const precoFormatado = (centavos: number) => (centavos / 100).toLocaleString("pt-BR", { style: "currency", currency: "BRL" }) return ( <>
Nome Tipo Validade Mídia Preço Status {products.length === 0 ? ( Nenhum produto cadastrado. ) : ( products.map((product) => ( setSelectedProduct(product)}> {product.nome} {product.tipo} {product.validade} {product.midia ?? "—"} {precoFormatado(product.preco_centavos)} {product.ativo ? "Ativo" : "Inativo"} )) )}
{/* Modal de detalhes */} !open && setSelectedProduct(null)}> {selectedProduct && ( <> {selectedProduct.nome} {selectedProduct.descricao ?? "Sem descrição"}
Tipo: {selectedProduct.tipo}
Validade: {selectedProduct.validade}
Mídia: {selectedProduct.midia ?? "—"}
Preço: {precoFormatado(selectedProduct.preco_centavos)}
Status: {selectedProduct.ativo ? "Ativo" : "Inativo"}
)}
{/* Confirm delete */} Confirmar Exclusão Tem certeza que deseja excluir "{selectedProduct?.nome}"? Esta ação não pode ser desfeita. ) }