@baneung-pack

CopyButton

클릭 시 navigator.clipboard로 복사 + 아이콘이 copy → check로 모핑. 일정 시간 후 자동 복원, "Copied!" 툴팁 옵션.

라이브 미리보기

마지막 이벤트:

코드 블록 + Copy

pnpm add @baneung-pack/ui

사용

import { CopyButton } from '@baneung-pack/ui';

// 기본
<CopyButton value="hello world">Copy</CopyButton>

// 아이콘만 + 툴팁
<CopyButton value={code} iconOnly />

// 콜백
<CopyButton
  value={url}
  onCopied={(v) => console.log('copied:', v)}
  onError={(e) => console.error('clipboard failed:', e)}
>
  링크 복사
</CopyButton>

// 코드 블록 우측 상단 패턴
<div className="relative">
  <pre>{code}</pre>
  <div className="absolute right-2 top-2">
    <CopyButton value={code} iconOnly size="sm" />
  </div>
</div>

API

CopyButtonProps

PropertyType기본값설명
valuestring복사할 텍스트 (필수).
onCopied(value: string) => void복사 완료 콜백.
onError(error: unknown) => void복사 실패 콜백 (clipboard 미지원/거부).
durationnumber1800copied 상태 유지 시간 (ms).
size'sm' | 'md' | 'lg''md'크기.
showTooltipbooleantrueiconOnly + copied 시 floating 툴팁.
tooltipLabelstring'Copied!'툴팁/copied 라벨.
iconOnlybooleanfalsetrue면 아이콘만 (정사각 버튼).
childrenReactNodeidle 상태 라벨 (iconOnly=false).
disabledbooleanfalse비활성화.