"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Badge } from "@/components/ui/badge" import { Switch } from "@/components/ui/switch" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { useToast } from "@/components/ui/use-toast" import { criarCupom, atualizarCupom, deletarCupom } from "@/lib/actions" import type { Cupom } from "@/lib/supabase" import { Plus, Trash2, Star, Tag } from "lucide-react" import { useRouter } from "next/navigation" interface CupomTableProps { cupons: Cupom[] } function NovoCupomDialog() { const [open, setOpen] = useState(false) const [loading, setLoading] = useState(false) const { toast } = useToast() const router = useRouter() const [form, setForm] = useState({ codigo: "", descricao: "", percentual: "15", validade: "", destaque: false, }) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) try { await criarCupom({ codigo: form.codigo, descricao: form.descricao, percentual: Number(form.percentual), validade: form.validade, destaque: form.destaque, }) toast({ title: "Cupom criado!" }) setOpen(false) setForm({ codigo: "", descricao: "", percentual: "15", validade: "", destaque: false }) router.refresh() } catch (err) { toast({ title: "Erro", description: err instanceof Error ? err.message : "Erro ao criar cupom", variant: "destructive" }) } finally { setLoading(false) } } return ( Criar cupom de desconto
setForm({ ...form, codigo: e.target.value.toUpperCase() })} />
setForm({ ...form, descricao: e.target.value })} />
setForm({ ...form, percentual: e.target.value })} />
setForm({ ...form, validade: e.target.value })} />
setForm({ ...form, destaque: v })} />
) } export function CupomTable({ cupons }: CupomTableProps) { const { toast } = useToast() const router = useRouter() const handleToggleAtivo = async (cupom: Cupom) => { try { await atualizarCupom(cupom.id, { ativo: !cupom.ativo }) router.refresh() } catch { toast({ title: "Erro ao atualizar", variant: "destructive" }) } } const handleToggleDestaque = async (cupom: Cupom) => { try { await atualizarCupom(cupom.id, { destaque: !cupom.destaque }) router.refresh() } catch { toast({ title: "Erro ao atualizar", variant: "destructive" }) } } const handleDeletar = async (id: string) => { if (!confirm("Deletar este cupom?")) return try { await deletarCupom(id) toast({ title: "Cupom deletado" }) router.refresh() } catch { toast({ title: "Erro ao deletar", variant: "destructive" }) } } const hoje = new Date().toISOString().slice(0, 10) return ( Cupons de Desconto {cupons.length === 0 ? (

Nenhum cupom cadastrado.

) : (
{cupons.map((cupom) => { const vencido = cupom.validade < hoje const validadeFormatada = new Date(cupom.validade + "T12:00:00").toLocaleDateString("pt-BR") return (
{cupom.codigo} {cupom.percentual}% OFF {cupom.destaque && ( Destaque )} {vencido && Vencido} {!cupom.ativo && Inativo}
{cupom.descricao} · Até {validadeFormatada}
handleToggleDestaque(cupom)} title="Exibir em destaque" /> Destaque
handleToggleAtivo(cupom)} title="Ativo/Inativo" /> Ativo
) })}
)}
) }