Template genérico de checkout com ASAAS, parametrizado via env vars. Inclui fluxo completo: checkout → pedido → polling → webhook → admin. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
"use client"
|
|
|
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
|
import type { Cliente } from "@/lib/supabase"
|
|
|
|
interface CustomerTableProps {
|
|
customers: Cliente[]
|
|
}
|
|
|
|
export function CustomerTable({ customers }: CustomerTableProps) {
|
|
if (customers.length === 0) {
|
|
return (
|
|
<div className="rounded-md border p-8 text-center text-muted-foreground">
|
|
Nenhum cliente cadastrado.
|
|
</div>
|
|
)
|
|
}
|
|
|
|
return (
|
|
<div className="rounded-md border">
|
|
<Table>
|
|
<TableHeader>
|
|
<TableRow>
|
|
<TableHead>Nome</TableHead>
|
|
<TableHead>E-mail</TableHead>
|
|
<TableHead>CPF/CNPJ</TableHead>
|
|
<TableHead>Telefone</TableHead>
|
|
<TableHead>Cadastro</TableHead>
|
|
</TableRow>
|
|
</TableHeader>
|
|
<TableBody>
|
|
{customers.map((c) => (
|
|
<TableRow key={c.id}>
|
|
<TableCell className="font-medium">{c.nome}</TableCell>
|
|
<TableCell>{c.email}</TableCell>
|
|
<TableCell>{c.cpf_cnpj ?? "—"}</TableCell>
|
|
<TableCell>{c.telefone ?? "—"}</TableCell>
|
|
<TableCell className="text-sm text-muted-foreground">
|
|
{new Date(c.created_at).toLocaleDateString("pt-BR")}
|
|
</TableCell>
|
|
</TableRow>
|
|
))}
|
|
</TableBody>
|
|
</Table>
|
|
</div>
|
|
)
|
|
}
|