Getting Started
App Providerglobal.d.tsThemesTypes
cn(...args)Text ParserUnits Converters
AnchorAvatarBreadcrumbBurgerButtonCardCarouselCheckerCodeColor PickerCommandConfettiCopyButtonDouble Helix WordsFloating IndicatorGroupHighlight TextIndicatorInputKbdLabelLoaderPaginationPassword RequirementPolymorphic SlotProgressProseRatingRunning AreaScroll AreaSheetsSkeletonSliderStackSvgTableTabsTextareaTimelineTimesToasterTooltipTyping WordsTypography
useClickOutsideuseClipboarduseDeviceInfouseDialoguseDidUpdateuseDirectionuseDisclosureuseDocumentTitleuseDocumentVisibilityuseElementInfouseEyeDropperuseFetchuseFullscreenuseGeoLocationuseHotkeysuseHoveruseIduseImagePopupuseInputStateuseIntersectionuseIntervaluseIsomorphicEffectuseListStateuseLocalStorageuseMeasureScrollbaruseMediaQueryuseMergedRefuseMouseuseMoveuseMutationObserveruseNetworkuseOpenStateuseOrientationuseOSusePaginationusePWAInstalleruseRandomColorsuseReducedMotionuseReloaduseResizeObserveruseScrollIntoViewuseStateHistoryuseTimeoutuseTouchuseTriggeruseUncontrolleduseValidatedStateuseViewportSizeuseWindowEventuseWindowScroll
Docs
Web
Hooks
useClipboard
useClickOutside

Detects and handles clicks outside a given element.

useDeviceInfo

Retrieves information about the current device and environment.


Edit this page on GitHub
  • Started
  • Utilities
  • Configuration
  • Components
  • Hooks
  • Examples
  • Github
  • Contributing
⌘+J

© 2025 oeri rights MIT


Designed in Earth-616

Built by oeri

useClipboard

Provides functionality to copy text to the clipboard and track copy status.

Usage

Basic usage example to quickly see how the useClipboard works.

"use client";
import { useState } from "react";
import { Button } from "@/ui/button";
import { Input } from "@/ui/input";
import { Stack } from "@/ui/stack";
import { Typography } from "@/ui/typography";
import { CheckIcon, CopyIcon } from "@/icons/*";
import { useClipboard } from "@/hooks/use-clipboard";

export function UseClipboardDemo() {
  const { copy, copied, error } = useClipboard();
  const [text, setText] = useState<string | undefined>(undefined);

  if (error) return <Typography className="text-sm text-destructive">{error.message}</Typography>;

  return (
    <Stack className="m-auto size-full max-w-96">
      <Button
        title="copy"
        variant="outline"
        color="green"
        size="icon"
        aria-label="copy button"
        disabled={!text}
        onClick={() => {
          if (text) copy(text);
        }}
      >
        {copied ? <CheckIcon /> : <CopyIcon />}
      </Button>

      <Input id="set-text" title="input text" placeholder="input text to copy" onChange={e => setText(e.target.value)} />
    </Stack>
  );
}

API References

  • mdn

Source Codes

Full working code example, including necessary markup and styles. You can copy and paste this code directly to start using the component immediately.

use-clipboard.ts