"use client"; import { useEffect, useRef } from "react"; import SafeImage from "./SafeImage"; interface ContactInfo { email: string; phone: string; linkedin: string; github: string; Address: string; } interface ContactProps { contact: ContactInfo; fullName: string; image?: string; } export default function Contact({ contact, fullName, image }: ContactProps) { const ref = useRef(null); useEffect(() => { const el = ref.current; if (!el) return; const obs = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { el.classList.add("visible"); obs.disconnect(); } }, { threshold: 0.1 } ); obs.observe(el); return () => obs.disconnect(); }, []); const links = [ { label: "Email", value: contact.email, href: `mailto:${contact.email}`, icon: ( ), }, { label: "Phone", value: contact.phone, href: `tel:${contact.phone}`, icon: ( ), }, { label: "LinkedIn", value: "achraf-achkari", href: contact.linkedin, icon: ( ), }, { label: "GitHub", value: "achachraf", href: contact.github, icon: ( ), }, ]; return (
Let's Connect

Contact

{/* Left: profile */}
{image && ( n[0]).join("")} style={{ width: "72px", height: "72px", objectFit: "cover", filter: "grayscale(0.3)" }} containerStyle={{ border: "1px solid #1c1f26", fontSize: "1.2rem", }} /> )}

{fullName}

Technical Lead · Kereval
{contact.Address}

Open to new opportunities, collaborations, and interesting conversations. Drop a line — I'd love to hear from you.

{/* Right: links */}
{/* Footer */}
© {new Date().getFullYear()} {fullName}. All rights reserved.
ACHRAF ACHKARI
); }