'use client' import { useState } from 'react' import { Star, Trash2, Calendar, User, MessageCircle } from 'lucide-react' import { deleteReview } from './action-admin-review' import { showSwal } from '@/lib/swal' interface Review { id: string rating: number ulasan: string nama_pengulas: string created_at: string } interface Props { posyanduId: string initialReviews: Review[] } export function AdminReviewList({ posyanduId, initialReviews }: Props) { const [isDeleting, setIsDeleting] = useState(null) const handleDelete = async (reviewId: string) => { const result = await showSwal.confirm( 'Hapus Ulasan?', 'Apakah Anda yakin ingin menghapus ulasan ini? Tindakan ini tidak dapat dibatalkan.' ) if (!result.isConfirmed) return setIsDeleting(reviewId) try { const res = await deleteReview(reviewId, posyanduId) if (res.success) { showSwal.success('Berhasil!', 'Ulasan telah dihapus.') } else { showSwal.error('Gagal!', res.error || 'Gagal menghapus ulasan.') } } catch (err) { showSwal.error('Gagal!', 'Terjadi kesalahan sistem.') } finally { setIsDeleting(null) } } return (

Ulasan Masyarakat

{initialReviews.length} TOTAL
{initialReviews.length > 0 ? ( initialReviews.map((rev) => (
{rev.nama_pengulas?.[0] || 'A'}

{rev.nama_pengulas || 'Orang Tua'}

{[...Array(5)].map((_, i) => ( ))}
{new Date(rev.created_at).toLocaleDateString('id-ID', { day: 'numeric', month: 'long', year: 'numeric' })}

"{rev.ulasan}"

)) ) : (

Belum Ada Ulasan

Posyandu ini belum memiliki riwayat ulasan dari masyarakat.

)}
) }