/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import stateDashboardKegiatan from '@/app/admin/(dashboard)/_state/desa/kegiatanDesa'; import colors from '@/con/colors'; import { Box, Button, Center, Image, Pagination, Paper, SimpleGrid, Skeleton, Stack, Text, Title } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { useTransitionRouter } from 'next-view-transitions'; import { useSearchParams } from 'next/navigation'; import { useProxy } from 'valtio/utils'; function Semua() { const router = useTransitionRouter(); const searchParams = useSearchParams(); const search = searchParams.get('search') || ''; const kategori = searchParams.get('kategori') || ''; const page = parseInt(searchParams.get('page') || '1'); const state = useProxy(stateDashboardKegiatan.kegiatan); const loading = state.findMany.loading; const items = state.findMany.data || []; const totalPages = state.findMany.totalPages || 1; useShallowEffect(() => { state.findMany.load(page, 9, search, kategori); }, [page, search, kategori]); const toDetail = (item: { id: string; kategoriKegiatan?: { nama: string } | null }) => `/darmasaba/desa/kegiatan-desa/${item.kategoriKegiatan?.nama?.toLowerCase() || 'semua'}/${item.id}`; const handlePageChange = (newPage: number) => { const params = new URLSearchParams(searchParams.toString()); if (newPage > 1) params.set('page', newPage.toString()); else params.delete('page'); router.replace(`/darmasaba/desa/kegiatan-desa/semua?${params.toString()}`); }; return ( {loading ? ( {Array(6).fill(0).map((_, i) => )} ) : items.length === 0 ? (
Belum ada kegiatan desa.
) : ( {items.map((item) => ( {item.image?.link && ( {item.judul} )} {item.judul} {item.deskripsiSingkat}
))}
)}
); } export default Semua;