import { useSearchParams } from "@remix-run/react"; import { Filter } from "lucide-react"; import { useState } from "react"; import ProjectCard from "~/components/cards/project-card"; import PageContainer from "~/components/page-container"; import { Button } from "~/components/ui/button"; import Spinner from "~/components/ui/spinner"; import StyledPagination from "~/components/ui/styled-pagination"; import { useGetAllPaginatedProject } from "~/services/projects/get-all"; import { StatusProject } from "~/types/constants/status-project"; export default function ProjectsPage() { const [searchParams, setSearchParams] = useSearchParams(); const [currentPage, setCurrentPage] = useState( Number.parseInt(searchParams.get("page") ?? "1", 10), ); const [itemsPerPage, setItemsPerPage] = useState( Number.parseInt(searchParams.get("itemsPerPage") ?? "10", 10), ); const { data, isLoading } = useGetAllPaginatedProject({ page: currentPage, itemsPerPage, filter: StatusProject.PENDANAAN_DIBUKA, }); const handlePageChange = (page: number) => { setCurrentPage(page); const params = new URLSearchParams(searchParams); params.set("page", page.toString()); setSearchParams(params); }; const handleItemsPerPageChange = (newItemsPerPage: number) => { setItemsPerPage(newItemsPerPage); setCurrentPage(1); const params = new URLSearchParams(searchParams); params.set("itemsPerPage", newItemsPerPage.toString()); params.set("page", "1"); setSearchParams(params); }; return (

Daftar Proyek Yang Ditawarkan

{isLoading ? (
) : ( data?.projects.map((project) => ( )) )} {!data && !isLoading && (

Tidak ada proyek yang ditemukan

)}
); }