"use client"; import { useState, useTransition } from "react"; import { Event } from "@prisma/client"; import { Plus, Edit2, Trash2, X, Save } from "lucide-react"; import { loadMockEvents, addEvent, updateEvent, deleteEvent } from "@/app/actions/events"; export default function EventsClient({ events }: { events: Event[] }) { const [isModalOpen, setIsModalOpen] = useState(false); const [editingEvent, setEditingEvent] = useState(null); const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); const openAddModal = () => { setEditingEvent(null); setError(null); setIsModalOpen(true); }; const openEditModal = (event: Event) => { setEditingEvent(event); setError(null); setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); setEditingEvent(null); setError(null); }; const handleDelete = (id: number) => { if (confirm("Bu etkinliği silmek istediğinize emin misiniz?")) { startTransition(async () => { const result = await deleteEvent(id); if (result.error) { alert(result.error); } }); } }; const handleSubmit = async (formData: FormData) => { setError(null); if (editingEvent) { formData.append("id", editingEvent.id.toString()); const result = await updateEvent(null, formData); if (result.error) { setError(result.error); } else { closeModal(); } } else { const result = await addEvent(null, formData); if (result.error) { setError(result.error); } else { closeModal(); } } }; return ( <>

Etkinlikler

{events.length === 0 ? (
Henüz etkinlik eklenmemiş. Sağ üstten yeni ekleyebilir veya örnek verileri yükleyebilirsiniz.
) : (
{events.map(ev => ( ))}
Etkinlik Adı Dil Tarih İşlemler
{ev.title} {ev.lang} {ev.date} {ev.time}
)} {/* Modal */} {isModalOpen && (

{editingEvent ? "Etkinlik Düzenle" : "Yeni Etkinlik Ekle"}

{error && (
{error}
)}