10LOC

#clipboard

Web Platformintermediate

navigator.clipboard for real copy/paste, no execCommand

export const copyToClipboard = (text: string) =>
  navigator.clipboard.writeText(text).then(() => true).catch(() => false);

export const pasteFromClipboard = () =>
  navigator.clipboard.readText().then((text) => text).catch(() => null);

Copy text, read it back, and copy raw image data to the system clipboard with a promise-based API — no hidden textarea, no execCommand.

Web Platformintermediate

The Web Share API for a native share sheet

export const shareOrCopy = async (data: ShareData) => {
  if (!navigator.canShare?.(data)) {
    await navigator.clipboard.writeText(data.url ?? data.text ?? "");
    return "copied";
  }

Open the OS-native share sheet on a button click, and fall back to copying the link on browsers — Firefox desktop included — that don't support it.