import { Link, useSearchParams } from "@remix-run/react"; import { Filter, Plus } 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 { httpClient } from "~/lib/http"; import { useGetAllMyProjects } from "~/services/my-projects/get-all"; import { formatImagePath } from "~/utils/prefix-file-path"; export default function MyProjectsPage() { 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 } = useGetAllMyProjects(currentPage, itemsPerPage); const handleDownloadFormat = async () => { const { data } = await httpClient.get("/formatan-dokumen-proyeksi"); const downloadFile = (url: string, filename: string) => { const anchor = document.createElement("a"); anchor.href = url; anchor.download = filename; document.body.appendChild(anchor); anchor.click(); document.body.removeChild(anchor); }; if (data) { downloadFile(formatImagePath(data.data), "format-dokumen-proyeksi.docx"); } }; 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 (

Proyek Yang Saya Ajukan

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

Tidak ada proyek yang ditemukan

)}
); }