"use client"; import { useState } from "react"; import { Plus, Edit2, Trash2, X, Image as ImageIcon } from "lucide-react"; import { createGalleryImage, updateGalleryImage, deleteGalleryImage } from "@/app/actions/gallery"; import ImageUpload from "@/components/admin/ImageUpload"; type GalleryImage = { id: string; src: string; alt: string | null; order: number; }; export default function GalleryClient({ initialImages }: { initialImages: GalleryImage[] }) { const [images] = useState(initialImages); const [isModalOpen, setIsModalOpen] = useState(false); const [editingImage, setEditingImage] = useState(null); const [editingImageSrc, setEditingImageSrc] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const openModal = (image?: GalleryImage) => { setEditingImage(image || null); setEditingImageSrc(image?.src || ""); setError(null); setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); setEditingImage(null); setEditingImageSrc(""); setError(null); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); const formData = new FormData(e.currentTarget); let result; if (editingImage) { result = await updateGalleryImage(editingImage.id, formData); } else { result = await createGalleryImage(formData); } if (result.success) { window.location.reload(); } else { setError(result.error || "Bir hata oluştu"); setLoading(false); } }; const handleDelete = async (id: string) => { if (!confirm("Bu görseli silmek istediğinize emin misiniz?")) return; setLoading(true); const result = await deleteGalleryImage(id); if (result.success) { window.location.reload(); } else { alert(result.error || "Silinirken hata oluştu"); setLoading(false); } }; return (

Galeri Görselleri

{images.map((image) => (
{image.src ? ( {image.alt ) : (
)}
{image.alt || Başlıksız}
Sıra: {image.order}
))} {images.length === 0 && (

Henüz galeriye görsel eklenmemiş.

)}
{/* Modal */} {isModalOpen && (

{editingImage ? "Görseli Düzenle" : "Yeni Görsel Ekle"}

{error && (
{error}
)}

Görsel bilgisayarınızdan veya kameradan seçilip yüklenebilir.

Küçük numaralar ilk sırada gösterilir.

)}
); }