import { motion } from "framer-motion"; import React, { useEffect, useState } from "react"; import Section from "@app/components/layout/Section"; import { useTranslation } from "react-i18next"; import Window from "@app/components/ui/Window"; interface ProjectProps { name: string; description: string; html_url: string; language: string | null; } type ProjectsProps = { id: string; open: boolean; onClose: () => void; }; export default function Projects({ id, open, onClose }: ProjectsProps) { const [repos, setRepos] = useState([]); useEffect(() => { const fetchRepos = async () => { try { const res = await fetch(`https://api.github.com/users/guezoloic/repos?per_page=100`); const data = await res.json(); const sorted = data .filter((repo: any) => !repo.fork) .sort((a: any, b: any) => b.stargazers_count - a.stargazers_count) .slice(0, 6) .map((repo: any) => ({ name: repo.name, description: repo.description, html_url: repo.html_url, language: repo.language, })); setRepos(sorted); } catch (err) { console.error("Error while loading repos", err); } }; fetchRepos(); }, []); const { t } = useTranslation(); return (
{repos.map((repo, i) => (

{repo.name}

{repo.description || "No description"}

{repo.language && ( {repo.language} )}
))}
); };