From 438948cab5313592b031c1dacfe4c769afe9821d Mon Sep 17 00:00:00 2001 From: Antoine BERNIER Date: Sun, 6 Oct 2024 19:44:40 +0200 Subject: [PATCH] links --- apps/website/app/demos/[demoname]/Social.tsx | 120 +++++++++++++++++++ apps/website/app/demos/[demoname]/layout.tsx | 10 +- apps/website/app/demos/[demoname]/page.tsx | 33 ++++- apps/website/package.json | 1 + package-lock.json | 10 ++ 5 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 apps/website/app/demos/[demoname]/Social.tsx diff --git a/apps/website/app/demos/[demoname]/Social.tsx b/apps/website/app/demos/[demoname]/Social.tsx new file mode 100644 index 00000000..62b1d3a5 --- /dev/null +++ b/apps/website/app/demos/[demoname]/Social.tsx @@ -0,0 +1,120 @@ +"use client"; + +import { Style } from "@/components/Style"; +import { useEffect, useState } from "react"; +import { GoCommandPalette } from "react-icons/go"; +import { RxOpenInNewWindow } from "react-icons/rx"; +import { SiCodesandbox, SiGithub, SiStackblitz } from "react-icons/si"; + +export function Social({ + demoname, + embed_url, +}: { + demoname: string; + embed_url: string; +}) { + const [copied, setCopied] = useState(false); + + const handleClick = async () => { + await navigator.clipboard.writeText( + `npx -y degit pmndrs/examples/demos/${demoname}` + ); + setCopied(true); + }; + + useEffect(() => { + if (!copied) return; + const int = setTimeout(() => setCopied(false), 2000); + return () => clearTimeout(int); + }, [copied]); + + return ( +