'use client'; import { Box, Button, Group, Paper, Skeleton, Stack, Text, Alert } from '@mantine/core'; import Image from 'next/image'; import { useShallowEffect } from '@mantine/hooks'; import { IconArrowBack, IconEdit, IconTrash, IconPhoto } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus'; import colors from '@/con/colors'; import stateGallery from '@/app/admin/(dashboard)/_state/desa/gallery'; function DetailFoto() { const FotoState = useProxy(stateGallery.foto); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); const [imageError, setImageError] = useState(false); const params = useParams(); const router = useRouter(); useShallowEffect(() => { FotoState.findUnique.load(params?.id as string); }, []); const handleHapus = () => { if (selectedId) { FotoState.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); router.push("/admin/desa/gallery/foto"); } }; if (!FotoState.findUnique.data) { return ( ); } const data = FotoState.findUnique.data; const imageUrl = data.imageGalleryFoto?.link; return ( Detail Foto Judul Foto {data.name || '-'} Deskripsi Gambar {imageUrl ? ( {data.name setImageError(true)} /> ) : imageError ? ( } title="Gagal memuat gambar" radius="md" > Gambar tidak dapat ditampilkan. ) : ( Tidak ada gambar )} {/* Action Buttons */} setModalHapus(false)} onConfirm={handleHapus} text="Apakah Anda yakin ingin menghapus foto ini?" /> ); } export default DetailFoto;