"use client"; import { MailIcon, Rss, GitBranch, Copy, Check } from "lucide-react"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import Image from "next/image"; import { Dialog, DialogContent, DialogHeader, DialogDescription, DialogFooter, DialogClose, DialogTitle } from "./ui/dialog"; import React from "react"; import { Button } from "./ui/button"; import { Item, ItemActions, ItemContent, ItemMedia, ItemTitle, } from "@/components/ui/item" type ContactMethod = { name: string; icon: React.ReactNode; url?: string; onClick?: () => void; }; type EmailContact = { label: string; address: string; }; export default function Contact() { const [isDialogOpen, setIsDialogOpen] = React.useState(false); const [copiedEmail, setCopiedEmail] = React.useState(null); const emailContacts: EmailContact[] = [ { label: "Personal", address: "me@imnya.ng" }, { label: "ADOFAI.gg", address: "imnyang@adofai.gg" }, { label: "Dazzle.st", address: "imnyang@dazzle.st" }, ]; const contact: ContactMethod[] = [ { "name": "Email", "onClick": () => setIsDialogOpen(true), "icon": , }, { "name": "Blog", "url": "https://blog.imnya.ng", "icon": }, { "name": "GitHub", "url": "https://github.com/imnyang", "icon": GitHub }, { "name": "git.mizuki.guru", "url": "https://git.mizuki.guru/imnyang", "icon": }, { "name": "Instagram", "url": "https://instagram.com/imnya.ng", "icon": Instagram }, { "name": "𝕏", "url": "https://x.com/imnya_ng", "icon":

𝕏

} ] const handleClick = (method: ContactMethod) => { if (method.onClick) { method.onClick(); } else if (method.url) { window.open(method.url, "_blank", "noopener,noreferrer"); } }; const copyEmail = (email: string) => { void navigator.clipboard.writeText(email); setCopiedEmail(email); setTimeout(() => { setCopiedEmail((currentEmail) => (currentEmail === email ? null : currentEmail)); }, 1200); }; const openMailTo = (email: string) => { window.location.href = `mailto:${email}`; }; return (
{contact.map((method) => (

{method.name}

))} Contact Me
{emailContacts.map((emailContact) => (

{emailContact.label} :

))}
); }