← Orion

registry:hook

useCopyToClipboard

A hook for copying text to the clipboard with a temporary copied state.

Rendered example

use-copy-to-clipboard()

Install

Open registry JSON

registry/hooks/use-copy-to-clipboard.ts

"use client"

import * as React from "react"

export function useCopyToClipboard({ timeout = 2000 }: { timeout?: number } = {}) {
  const [isCopied, setIsCopied] = React.useState(false)

  const copyToClipboard = React.useCallback(
    async (value: string) => {
      if (!(navigator?.clipboard && value)) return

      await navigator.clipboard.writeText(value)
      setIsCopied(true)

      setTimeout(() => setIsCopied(false), timeout)
    },
    [timeout],
  )

  return { isCopied, copyToClipboard }
}