"use client"; 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 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 */} {links.map((link, i) => ( { const el = e.currentTarget as HTMLElement; el.style.background = "rgba(200,169,110,0.04)"; el.style.color = "#c8a96e"; el.style.borderLeftColor = "#c8a96e"; }} onMouseLeave={(e) => { const el = e.currentTarget as HTMLElement; el.style.background = "#0e1014"; el.style.color = "#6b7280"; el.style.borderLeftColor = "#1c1f26"; }} > {link.icon} {link.label} {link.value} ↗ ))} {/* Footer */} © {new Date().getFullYear()} {fullName}. All rights reserved. ACHRAF ACHKARI ); }
Open to new opportunities, collaborations, and interesting conversations. Drop a line — I'd love to hear from you.