MenuChevron Down
Clipboard 剪贴板 - Docs - Artefact

Clipboard 剪贴板

Forms
智能自动检测

简介

一个只读字段,配合复制到剪贴板的触发器使用,内置已复制/未复制的提示状态。

用法

import { Clipboard } from "../components/ui";

export default function MyPage() {
  return (
    <Clipboard
      label="Clone Command"
      value="git clone https://github.com/honojs/honox"
    />
  );
}

自定义组合

Clipboard.Trigger 传入 children 以覆盖默认的复制/对勾图标切换,或直接组合各个部分以获得完全控制:

import { Clipboard } from "../components/ui";

export default function MyPage() {
  return (
    <Clipboard.Root value="npm install honox">
      <Clipboard.Label>Install Command</Clipboard.Label>
      <Clipboard.Control>
        <Clipboard.Input />
        <Clipboard.Trigger>
          <Clipboard.CopyText />
        </Clipboard.Trigger>
      </Clipboard.Control>
    </Clipboard.Root>
  );
}

属性

Root

属性类型说明
valuestring要复制的文本(受控)。
defaultValuestring初始要复制的文本(非受控)。
disabledboolean禁用触发器。
timeoutnumber已复制状态在恢复前保持激活的毫秒数。默认 3000
translationsPartial<ClipboardTranslations>触发器 aria-label 的覆盖值。
onValueChange(details: { value: string }) => void值变化时调用(例如通过自定义输入框)。
onStatusChange(details: { copied: boolean }) => void复制状态切换时调用。
size"sm" | "md" | "lg"视觉尺寸。默认 "md"
colorPalettestring颜色主题。默认 "green"
interactiveboolean强制(或抑制)作为岛屿进行水合。
classstring根元素的自定义 CSS 类。

默认组合

这些仅适用于顶层 <Clipboard>(而非 Clipboard.Root),它会为你渲染 Label + ControlInput + Trigger)。

属性类型说明
labelJSX.Element | string渲染在控件上方的标签。
childrenJSX.Element自定义 Trigger 内容,覆盖默认的复制/对勾图标切换。

子组件

部分说明
Clipboard.Label绑定到只读输入框的 <label>
Clipboard.Control包裹 InputTrigger
Clipboard.Input只读 <input>,显示当前值;聚焦时选中其文本。通过 Ctrl/Cmd+C 手动复制也会触发已复制状态。
Clipboard.Trigger点击时将 value 复制到剪贴板。接受 asChild,可合并到自定义子元素上,而不是渲染 <button>
Clipboard.Indicatorchildren 和一个 copied 变体都作为同级节点渲染,通过 hidden 切换——用于自定义的已复制/未复制图标或文本切换。
Clipboard.CopyText便捷的 Indicator,在 "Copy" / "Copied" 文本之间切换(通过 children/copied 属性覆盖)。
Clipboard.Context通过渲染属性访问剪贴板上下文:<Clipboard.Context>{(ctx) => ...}</Clipboard.Context>

无障碍

  • Triggertranslations.triggerLabel(copied) 获取 aria-label(默认 "Copy to clipboard" / "Copied to clipboard"),向辅助技术播报状态变化。
  • InputreadOnly 而非 disabled,因此它保持可聚焦,其文本可通过原生键盘快捷键选择和复制,即使不点击触发器也可以。
  • data-copied 会镜像到每个部分,以便基于状态进行样式设置。