import React, { useEffect, useState } from 'react' import style from '@styles/Project.module.scss' import type {ProjectTech, Category, ProjectProps } from '../untils/ProjectProps' interface ProjectCardProps { project: ProjectProps; onOpenDetails: (id: string) => void; } const ProjectCardTech: React.FC<{ technology: ProjectTech[] }> = ({ technology }) => (

// TECHNOLOGIES_USED

{technology.map((tech, index) => ( {tech.name} ))}
) const CategoryBadge: React.FC<{ category: Category[] }> = ({ category }) => ( < div className={style.categoryBadgeContainer} > { category.map((cat, index) => ( {cat.shortName} ))} ) const ProjectLinks: React.FC<{ links: { github?: string; demo?: string }, id: string, onOpenDetails: (id: string) => void }> = ({ links, id, onOpenDetails }) => (
{links.github && ( View Code )} {links.demo && ( Live Demo )}
) export const ProjectCard: React.FC = ({ project, onOpenDetails }) => { const [, setHovered] = useState(false); useEffect(() => { const createEmbers = () => { const embersContainer = document.querySelectorAll(`.${style.cardImgTop}`); embersContainer.forEach((container) => { for (let i = 0; i < 5; i++) { const ember = document.createElement('div'); ember.className = style.emberParticle; ember.style.left = `${Math.random() * 100}%`; ember.style.bottom = '0'; ember.style.animationDuration = `${Math.random() * 2 + 3}s`; ember.style.animationDelay = `${Math.random() * 3}s`; container.appendChild(ember); } }); }; createEmbers(); }, []); if (project.featured) { return (
setHovered(true)} onMouseLeave={() => setHovered(false)} >
{project.title}
Featured

{project.title}

{project.description}

) } return (
setHovered(true)} onMouseLeave={() => setHovered(false)}>
{project.title}

{project.title}

{project.description}

) };