'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip } from '@mantine/core'; import { useDebouncedValue, useShallowEffect } from '@mantine/hooks'; import { IconDeviceImacCog, IconPlus, IconSearch } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import DOMPurify from 'dompurify'; import HeaderSearch from '../../../_com/header'; import profileLandingPageState from '../../../_state/landing-page/profile'; function ProgramInovasi() { const [search, setSearch] = useState(""); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListProgramInovasi({ search }: { search: string }) { const stateProgramInovasi = useProxy(profileLandingPageState.programInovasi); const router = useRouter(); const [debouncedSearch] = useDebouncedValue(search, 1000); // 500ms delay const { data, page, totalPages, loading, load } = stateProgramInovasi.findMany; useShallowEffect(() => { load(page, 10, debouncedSearch); }, [page, debouncedSearch]); const filteredData = data || []; if (loading || !data) { return ( ); } return ( Daftar Program Inovasi Nama Program Deskripsi Link Aksi {filteredData.length === 0 ? (
Belum ada data program inovasi
) : ( filteredData.map((item) => ( {item.name} {item.link} )) )}
{filteredData.map((item) => ( {/* Title */} Nama Program {item.name} {/* Description */} Deskripsi {/* Link */} Link {item.link} {/* Action */} ))} {filteredData.length > 0 && (
{ load(newPage, 10); window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} color="blue" />
)}
); } export default ProgramInovasi;