import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { motion } from 'framer-motion'; import { Link } from 'react-router-dom'; import { Loader2 } from 'lucide-react'; import PortfolioCard from '../../portfolio/components/PortfolioCard'; import { getAllProjects } from '../../portfolio/utils'; import type { Project } from '../../portfolio/utils'; // Erweiterter Typ: Wir gehen davon aus, dass jedes Project über einen 'slug' verfügt. // Falls doch ein 'id'-Feld existieren sollte, wird es beibehalten. interface ProjectWithId extends Project { id: string; } const Projects = () => { const { t } = useTranslation(); const [projects, setProjects] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const loadProjects = async () => { try { const projectsData = await getAllProjects(); // Ergänze das fehlende 'id'-Feld (als Fallback verwenden wir hier den 'slug') const projectsWithId: ProjectWithId[] = projectsData.map((project) => ({ ...project, id: project.slug, })); // Nur die ersten 3 Projekte für die Homepage setProjects(projectsWithId.slice(0, 3)); } catch (error) { console.error(t('pages.home.projects.error.loading'), error); } finally { setLoading(false); } }; loadProjects(); }, [t]); if (loading) { return (
{t('pages.home.projects.loading')}
); } return (

{t('pages.home.projects.title')}

{t('pages.home.projects.viewAll')}
{projects.map((project, index) => ( ))}
); }; export default Projects;