'use client';
import colors from '@/con/colors';
import {
Badge,
Box,
Button,
Center,
Pagination,
Paper,
Skeleton,
Stack,
Table,
TableTbody,
TableTd,
TableTh,
TableThead,
TableTr,
Text,
Title,
} from '@mantine/core';
import { useDebouncedValue, useShallowEffect } from '@mantine/hooks';
import { IconDeviceImacCog, IconSearch } from '@tabler/icons-react';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
import { useProxy } from 'valtio/utils';
import HeaderSearch from '../../../_com/header';
import perpustakaanDigitalState from '../../../_state/pendidikan/perpustakaan-digital';
function PeminjamBuku() {
const [search, setSearch] = useState('');
return (
}
value={search}
onChange={(e) => setSearch(e.currentTarget.value)}
/>
);
}
function ListPeminjamBuku({ search }: { search: string }) {
const statePeminjam = useProxy(perpustakaanDigitalState.peminjamanBuku);
const router = useRouter();
const { data, page, totalPages, loading, load } = statePeminjam.findMany;
const [debouncedSearch] = useDebouncedValue(search, 1000);
useShallowEffect(() => {
load(page, 10, debouncedSearch);
}, [page, debouncedSearch]);
const filteredData = data || [];
// 🔹 Fungsi helper untuk badge status
const renderStatusBadge = (status: string) => {
const normalized = status?.toUpperCase();
switch (normalized) {
case 'DIPINJAM':
return Dipinjam;
case 'DIKEMBALIKAN':
return Dikembalikan;
case 'TERLAMBAT':
return Terlambat;
case 'DIBATALKAN':
return Dibatalkan;
default:
return Tidak diketahui;
}
};
if (loading || !data) {
return (
);
}
return (
Daftar Peminjam Buku
{/* Desktop Table */}
No
Nama Peminjam
Status
Alamat
Detail
{filteredData.length > 0 ? (
filteredData.map((item, index) => (
{index + 1}
{item.nama}
{renderStatusBadge(item.status)}
{item.alamat}
))
) : (
Tidak ada data Peminjam buku yang cocok
)}
{/* Mobile Cards */}
{filteredData.length > 0 ? (
filteredData.map((item, index) => (
No
{index + 1}
Nama Peminjam
{item.nama}
Status
{renderStatusBadge(item.status)}
Alamat
{item.alamat}
Detail
))
) : (
Tidak ada data Peminjam buku yang cocok
)}
{
load(newPage, 10);
window.scrollTo({ top: 0, behavior: 'smooth' });
}}
total={totalPages}
mt="md"
mb="md"
color="blue"
radius="md"
/>
);
}
export default PeminjamBuku;