MenüChevron Down
Clipboard Zwischenablage - Docs - Artefact

Clipboard Zwischenablage

Forms
Intelligente Auto-Erkennung

Einführung

Ein schreibgeschütztes Feld mit einem Auslöser zum Kopieren in die Zwischenablage und eingebauten Zuständen für „kopiert“ / „nicht kopiert“.

Verwendung

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

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

Eigene Zusammensetzung

Übergeben Sie children an Clipboard.Trigger, um den standardmäßigen Symbolwechsel zwischen Kopieren und Häkchen zu überschreiben, oder komponieren Sie die Teile direkt für vollständige Kontrolle:

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>
  );
}

Eigenschaften

Wurzel

EigenschaftTypBeschreibung
valuestringDer zu kopierende Text (kontrolliert).
defaultValuestringDer anfängliche zu kopierende Text (unkontrolliert).
disabledbooleanDeaktiviert den Auslöser.
timeoutnumberMillisekunden, die der kopierte Zustand aktiv bleibt, bevor er zurückgesetzt wird. Standard 3000.
translationsPartial<ClipboardTranslations>Überschreibungen für das aria-label des Auslösers.
onValueChange(details: { value: string }) => voidWird aufgerufen, wenn sich der Wert ändert (z. B. über ein benutzerdefiniertes Eingabefeld).
onStatusChange(details: { copied: boolean }) => voidWird aufgerufen, wenn der kopierte Zustand umschlägt.
size"sm" | "md" | "lg"Visuelle Größe. Standard "md".
colorPalettestringDas Farbschema. Standard "green".
interactivebooleanErzwingt (oder unterdrückt) die Hydration als Insel.
classstringBenutzerdefinierte CSS-Klassen für das Wurzelelement.

Standardzusammensetzung

Diese gelten nur für das oberste <Clipboard> (nicht Clipboard.Root), das Label + Control (Input + Trigger) für Sie rendert.

EigenschaftTypBeschreibung
labelJSX.Element | stringBeschriftung über dem Steuerelement.
childrenJSX.ElementBenutzerdefinierter Trigger-Inhalt, der den standardmäßigen Symbolwechsel zwischen Kopieren und Häkchen überschreibt.

Unterkomponenten

BestandteilBeschreibung
Clipboard.Label<label>, das an das schreibgeschützte Eingabefeld gebunden ist.
Clipboard.ControlUmschließt Input und Trigger.
Clipboard.InputSchreibgeschütztes <input>, das den aktuellen Wert anzeigt; markiert seinen Text beim Fokussieren. Manuelles Kopieren per Strg/Cmd+C löst ebenfalls den kopierten Zustand aus.
Clipboard.TriggerKopiert value beim Klick in die Zwischenablage. Akzeptiert asChild, um auf ein benutzerdefiniertes Kind zusammenzuführen, anstatt einen <button> zu rendern.
Clipboard.IndicatorRendert sowohl children als auch eine copied-Variante als nebengeordnete Knoten, umgeschaltet über hidden — nützlich für benutzerdefinierte Symbol- oder Textwechsel zwischen kopiert/nicht kopiert.
Clipboard.CopyTextBequemes Indicator, das zwischen dem Text „Copy“ / „Copied“ wechselt (überschreibbar über die Props children/copied).
Clipboard.ContextRender-Prop-Zugriff auf den Zwischenablage-Kontext: <Clipboard.Context>{(ctx) => ...}</Clipboard.Context>.

Barrierefreiheit

  • Trigger erhält ein aria-label von translations.triggerLabel(copied) (Standard „Copy to clipboard“ / „Copied to clipboard“), das die Zustandsänderung für assistive Technologien ankündigt.
  • Input ist readOnly, nicht disabled, sodass es fokussierbar bleibt und sein Text auch ohne Klick auf den Auslöser per nativer Tastenkombination ausgewählt und kopiert werden kann.
  • data-copied wird auf jedes Teil gespiegelt für zustandsbasierte Gestaltung.