"use client"; import { useState } from "react"; import { MoreHorizontal, Plus, Pencil, Trash2 } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { deleteCustomerAction } from "@/lib/appwrite/customer-actions"; import { CustomerFormSheet } from "./customer-form-sheet"; import type { Customer } from "@/lib/appwrite/schema"; import { CUSTOMER_TYPE_LABELS } from "@/lib/appwrite/schema"; interface CustomersClientProps { initialCustomers: Customer[]; } export function CustomersClient({ initialCustomers }: CustomersClientProps) { const [customers, setCustomers] = useState(initialCustomers); const [sheetOpen, setSheetOpen] = useState(false); const [editing, setEditing] = useState(null); function openCreate() { setEditing(null); setSheetOpen(true); } function openEdit(c: Customer) { setEditing(c); setSheetOpen(true); } async function handleDelete(c: Customer) { if (!confirm(`"${c.name}" silinsin mi?`)) return; const result = await deleteCustomerAction(c.$id); if (result.ok) { setCustomers((prev) => prev.filter((x) => x.$id !== c.$id)); toast.success("Müşteri silindi."); } else { toast.error(result.error ?? "Silinemedi."); } } return (

Müşteriler

Ad Soyad Tip Telefon Email {customers.length === 0 && ( Henüz müşteri yok. )} {customers.map((c) => ( {c.name} {CUSTOMER_TYPE_LABELS[c.type] ?? c.type} {c.phone ?? "—"} {c.email ?? "—"} openEdit(c)}> Düzenle handleDelete(c)} className="text-destructive focus:text-destructive" > Sil ))}
); }