import { useState, useMemo } from "react"; import { mockCourses } from "./mockData"; import FilterSection from "./components/FilterSection"; import CourseList from "./components/CourseList"; import { api } from "@nice/client"; import { LectureType, PostType } from "@nice/common"; export default function CoursesPage() { const [currentPage, setCurrentPage] = useState(1); const [selectedCategory, setSelectedCategory] = useState(""); const [selectedLevel, setSelectedLevel] = useState(""); const pageSize = 12; const { data, isLoading } = api.post.findManyWithPagination.useQuery({ where: { type: PostType.COURSE, terms: { some: { AND: [ ...(selectedCategory ? [ { name: selectedCategory, }, ] : []), ...(selectedLevel ? [ { name: selectedLevel, }, ] : []), ], }, }, }, }); const filteredCourses = useMemo(() => { return mockCourses.filter((course) => { const matchCategory = !selectedCategory || course.category === selectedCategory; const matchLevel = !selectedLevel || course.level === selectedLevel; return matchCategory && matchLevel; }); }, [selectedCategory, selectedLevel]); const paginatedCourses = useMemo(() => { const startIndex = (currentPage - 1) * pageSize; return filteredCourses.slice(startIndex, startIndex + pageSize); }, [filteredCourses, currentPage]); const handlePageChange = (page: number) => { setCurrentPage(page); window.scrollTo({ top: 0, behavior: "smooth" }); }; return (