import { useEffect, useState } from "react"; import AstralButton from "./AstralButton"; type ShareStatus = "initial" | "copying" | "copied"; export default function ShareButton({ onShare, }: { onShare: () => Promise; }) { const [status, setStatus] = useState("initial"); useEffect(() => { if (status === "copied") { const timeout = setTimeout(() => setStatus("initial"), 2000); return () => clearTimeout(timeout); } }, [status]); return status === "copied" ? ( Copied! ) : ( { setStatus("copying"); try { await onShare(); setStatus("copied"); } catch (error) { // eslint-disable-next-line no-console console.error("Failed to share playground", error); setStatus("initial"); } }} > Share ); }