From 9a81c7ab046f656c2d876ceb2f00b41e1fbf1994 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Mon, 27 Jan 2025 14:16:15 -0600 Subject: [PATCH] Copy button --- package.json | 2 +- src/components/CopyButton.tsx | 48 +++++++++++++++++++ .../features/invites/InviteCodes.tsx | 6 ++- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/components/CopyButton.tsx diff --git a/package.json b/package.json index faf5bee..d607e77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pdsmanager", "type": "module", - "version": "0.3.1", + "version": "0.3.2", "scripts": { "dev": "astro dev", "build": "astro build", diff --git a/src/components/CopyButton.tsx b/src/components/CopyButton.tsx new file mode 100644 index 0000000..5b1dabb --- /dev/null +++ b/src/components/CopyButton.tsx @@ -0,0 +1,48 @@ +import { useState } from "react"; + +export const CopyButton = ({ text }: { text: string }) => { + const [copied, setCopied] = useState(false); + + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch (err) { + console.error("Failed to copy text:", err); + } + }; + + return ( + + ); +}; diff --git a/src/components/features/invites/InviteCodes.tsx b/src/components/features/invites/InviteCodes.tsx index ac1e1ab..bf70748 100644 --- a/src/components/features/invites/InviteCodes.tsx +++ b/src/components/features/invites/InviteCodes.tsx @@ -1,6 +1,7 @@ import { useState, useEffect } from "react"; import { Settings } from "../../../lib/settings"; import { useRefresh } from "../../../lib/RefreshContext"; +import { CopyButton } from "../../CopyButton" interface InviteCodeUse { usedBy: string; @@ -251,8 +252,9 @@ export default function InviteCodes() { >
-
- {code.code} +
+ {code.code} +
{code.disabled ? (