"use client"; import React, { useEffect, useRef, useState } from "react"; import { Check, Copy } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { siteConfig } from "@/lib/site"; import { cn } from "@/lib/utils"; export function CopyEmailButton({ className, variant = "outline", }: { className?: string; variant?: "outline" | "ghost" | "secondary"; }) { const [copied, setCopied] = useState(false); const timeout = useRef | null>(null); useEffect(() => { return () => { if (timeout.current) clearTimeout(timeout.current); }; }, []); const copy = async () => { try { await navigator.clipboard.writeText(siteConfig.email); } catch { // Clipboard API is unavailable outside secure contexts; fall back to a // hidden textarea so the button still works. const field = document.createElement("textarea"); field.value = siteConfig.email; field.setAttribute("readonly", ""); field.style.position = "fixed"; field.style.opacity = "0"; document.body.appendChild(field); field.select(); document.execCommand("copy"); document.body.removeChild(field); } setCopied(true); if (timeout.current) clearTimeout(timeout.current); timeout.current = setTimeout(() => setCopied(false), 2000); }; return ( {copied ? ( ); }