da67ad86d8
- Updated LoginInternify to remove unnecessary state initialization. - Cleaned up NotificationList by removing unused code and fixing button click handler. - Added project_id prop to InternClaimCert for better data handling. - Enhanced CertificateNotAvailable to include claim functionality with loading and error states. - Modified HomeHeader to display a default user name. - Corrected ProjectTimeline to import ProjectTask from the correct type file. - Implemented loading and error handling in CertificateListPage. - Improved MentorProjectDetailPage to handle task updates and navigation correctly. - Enhanced MentorSettingsPage to manage profile picture errors and state. - Updated AddInternsDialog to use the correct hook for fetching interns. - Refactored EditSubmissionTask to handle task updates and errors more effectively. - Improved MentorProjectCard to include project archiving functionality. - Removed deprecated useInterns hook and replaced it with useUser for fetching user data. - Added new useMentors hook for managing mentor-related operations. - Cleaned up CertificateService by removing unused verifyCertificate function. - Created MentorServices for managing mentor data operations. - Updated UserService to include fetching Mahasiswa data and removed unused UserServices file.
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
// src/pages/mentor/CertificateListPage.tsx
|
|
import { useNavigate } from "react-router-dom";
|
|
import CertificateProjectCard from "./components/CertificateProjectCard";
|
|
import { useProjects } from "../../../hooks/useProjects";
|
|
|
|
// ─── Main Page ────────────────────────────────────────────────────────────────
|
|
export default function CertificateList() {
|
|
const navigate = useNavigate();
|
|
const { projects, loading, error } = useProjects();
|
|
|
|
const handleCardClick = (slug: string) => {
|
|
navigate(`/mentor/certificates/${slug}`);
|
|
};
|
|
|
|
if (loading){
|
|
<p>on loading</p>
|
|
}
|
|
|
|
if (error){
|
|
<p>error: {error}</p>
|
|
}
|
|
return (
|
|
<div>
|
|
{/* Page Header */}
|
|
<div className="mb-6">
|
|
<h1 className="page-title">Certificates</h1>
|
|
<p className="page-title-desc">
|
|
Administrate, issue, and track professional certifications for all interns.
|
|
</p>
|
|
</div>
|
|
|
|
{/* Section: List Projects */}
|
|
<div>
|
|
<h2 className="text-base font-bold text-font-shade mb-4">List Projects</h2>
|
|
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-4">
|
|
{projects.map((project) => (
|
|
<CertificateProjectCard
|
|
key={project.id}
|
|
project={project}
|
|
onClick={() => handleCardClick(project.slug)}
|
|
/>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
} |