"use client"; import { motion } from "motion/react"; import { BentoGrid, BentoGridItem } from "@/components/magicui/bento-grid"; import { ExternalLink, Github, Star, Zap, Globe, Cpu, Code2, } from "lucide-react"; import { usePortfolioData } from "@/lib/usePortfolioData"; // Configuração de cores e ícones por categoria const categoryConfig = { "full-stack": { color: "from-blue-500 to-blue-600", bgColor: "bg-blue-500/10", borderColor: "border-blue-500/20", icon: Globe, iconColor: "text-blue-400", }, iot: { color: "from-purple-500 to-purple-600", bgColor: "bg-purple-500/10", borderColor: "border-purple-500/20", icon: Cpu, iconColor: "text-purple-400", }, api: { color: "from-orange-500 to-orange-600", bgColor: "bg-orange-500/10", borderColor: "border-orange-500/20", icon: Code2, iconColor: "text-orange-400", }, web: { color: "from-green-500 to-green-600", bgColor: "bg-green-500/10", borderColor: "border-green-500/20", icon: Globe, iconColor: "text-green-400", }, desktop: { color: "from-emerald-500 to-emerald-600", bgColor: "bg-emerald-500/10", borderColor: "border-emerald-500/20", icon: Code2, iconColor: "text-emerald-400", }, }; // Função para gerar estrelas de complexidade const ComplexityStars = ({ complexity }: { complexity: number }) => { return (
{[...Array(5)].map((_, i) => ( ))}
); }; // Componente de Badge const ProjectBadge = ({ badge, index }: { badge: string; index: number }) => { const badgeColors = [ "bg-blue-500/20 text-blue-400 border-blue-500/30", "bg-green-500/20 text-green-400 border-green-500/30", "bg-purple-500/20 text-purple-400 border-purple-500/30", "bg-orange-500/20 text-orange-400 border-orange-500/30", "bg-red-500/20 text-red-400 border-red-500/30", ]; return ( {badge} ); }; export default function Projects() { const { data, loading, error } = usePortfolioData(); if (loading) { return (
); } if (error || !data) { return (

Erro ao carregar dados de projetos.

); } const projects = data.projects.filter((project) => project.featured); return (

Projetos em Destaque

Uma seleção dos projetos que desenvolvi, demonstrando minha evolução técnica e capacidade de entregar soluções completas em diferentes domínios

{projects.map((project, index) => { const config = categoryConfig[project.category as keyof typeof categoryConfig] || categoryConfig["web"]; const IconComponent = config.icon; return ( {/* Header com ícone e badges */}

{project.title}

{project.subtitle}

{project.demoUrl && ( )} {project.githubUrl && ( )}
{/* Badges */}
{project.badges.map((badge, idx) => ( ))}
{/* Description */}

{project.description}

{/* Tecnologias principais */}

Stack Principal

{project.technologies.slice(0, 4).map((tech) => ( {tech} ))} {project.technologies.length > 4 && ( +{project.technologies.length - 4} )}
{/* Features principais */}

Destaques

    {project.features.slice(0, 3).map((feature, idx) => (
  • {feature}
  • ))}
{/* Footer com complexidade e status */}
Complexidade:
{project.status}
); })}
{/* Call to Action */}
Todos os projetos são desenvolvidos individualmente, demonstrando capacidade full-stack completa
); }