import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useQuery } from "@tanstack/react-query"; import { projectsService } from "@/services/projects.service"; import { ProjectCard } from "@/components/cards/ProjectCard"; import { ProjectModal } from "@/components/modals/ProjectModal"; import { FadeIn } from "@/components/animations/FadeIn"; import { Skeleton } from "@/components/common/Skeleton"; import type { Project } from "@/types"; import { Search } from "lucide-react"; export function ProjectsSection() { const { t } = useTranslation(); const [search, setSearch] = useState(""); const [category, setCategory] = useState(""); const [selectedProject, setSelectedProject] = useState(null); const { data, isLoading } = useQuery({ queryKey: ["projects", search, category], queryFn: () => projectsService.getAll({ search, category }), }); const projects: Project[] = data?.data?.data || []; const categories = [...new Set(projects.map((p) => p.categoryEn))]; return (

{t("projects.title")}

setSearch(e.target.value)} className="w-full pl-10 pr-4 py-2 rounded-lg border border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-800 text-slate-900 dark:text-white focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none" />
{categories.map((cat) => ( ))}
{isLoading ? (
{Array.from({ length: 6 }).map((_, i) => (
))}
) : (
{projects.map((project, i) => ( setSelectedProject(project)} /> ))}
)} setSelectedProject(null)} />
); }