Tooltip
Ein kurzer Hinweis bei Hover oder Tastaturfokus, der sich nach kurzer Ruhezeit öffnet, zwischen benachbarten Elementen sofort wechselt und Tastenkürzel anzeigt.
pnpm dlx shadcn@latest add https://hextaui.com/r/tooltip.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add @base-ui/react cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/tooltip.tsx Passe die Importpfade an dein Projekt-Setup an.
Ein Tooltip öffnet nach kurzem Verweilen auf dem Trigger oder sofort, wenn der Trigger Tastaturfokus erhält. Sobald einer angezeigt wird, öffnen seine Nachbarn sofort und ohne Animation, sodass das Durchgehen einer Toolbar wie das Lesen von Labels wirkt, statt auf jedes zu warten.
Dieser sofortige Wechsel funktioniert zwischen Tooltips, die sich einen TooltipProvider teilen. Umschließe deine App (oder eine Toolbar) mit einem, um die Verzögerung zu teilen. Ein Tooltip ohne Provider funktioniert weiterhin allein mit denselben Standardwerten.
Seiten
Setze side an TooltipContent. Logische Seiten folgen der Leserichtung, und der Tooltip klappt um, wenn kein Platz ist.
Mit einem Pfeil
arrow fügt einen Zeiger hinzu, der auf dem Trigger bleibt, auch wenn sich der Tooltip verschiebt, um auf den Bildschirm zu passen.
Tastenkürzel
Setze ein Kbd oder KbdGroup nach das Label. Es übernimmt die Farben des Tooltips und sitzt am Ende und zeigt ⌘ auf Apple-Geräten und sonst Strg.
Toolbar
Verweile auf einem Button und gleite dann an der Gruppe entlang. Tooltips unter einem TooltipProvider wechseln sofort, während du dich zwischen ihnen bewegst.
Deaktiviert
Ein deaktivierter Button kann mit focusableWhenDisabled trotzdem erklären, warum, was ihn hoverbar und in der Tab-Reihenfolge hält. disabled an Tooltip schaltet den Tooltip ab.
Langer Inhalt
Text bricht in angenehmer Breite um und läuft nie über den Bildschirmrand, auch bei langen URLs.
Kontrolliert
Übergib open und onOpenChange, um den Tooltip selbst zu steuern. Der Grund sagt dir, was ihn geöffnet oder geschlossen hat.
Ein Tooltip, viele Trigger
Erstelle mit createTooltipHandle ein Handle und übergib von jedem Trigger einen payload, um einen einzelnen Tooltip zu teilen.
Rechts nach links
In dir="rtl" öffnet inline-end links, und das Tastenkürzel wandert ans andere Ende.
| Taste | Aktion |
|---|---|
| Tab | Das Fokussieren des Triggers per Tastatur öffnet seinen Tooltip sofort. |
| Esc | Schließt den Tooltip und lässt den Fokus auf dem Trigger. |
| EnterSpace | Aktiviert den Trigger und schließt den Tooltip, damit er nicht verdeckt, was als Nächstes passiert. |
- Ein Tooltip ist ein visueller Hinweis, kein Label. Gib Triggern nur mit Icon ein
aria-label, das dem Tooltip-Text entspricht. - Bei Touch öffnet sich nichts, und ein Tippen tut nur, was der Trigger tut. Setze nichts in einen Tooltip, was Leute brauchen; nutze dafür ein Popover.
- Zeigernutzer können auf den Tooltip fahren, um ihn zu lesen oder zu markieren, ohne dass er schließt.
- Bei aktivierter reduzierter Bewegung blendet der Tooltip ohne Skalierung ein.
Gebaut auf dem Base UI Tooltip. Jeder Teil akzeptiert die Props des Primitivs, das er umschließt.
| Prop | Typ | Standard |
|---|---|---|
delayMillisekunden, die auf einem Trigger verweilt wird, bevor er öffnet. | number | 300 |
closeDelayMillisekunden bis zum Schließen nach dem Verlassen. | number | 0 |
timeoutWie lange nach dem Schließen eines Tooltips der nächste sofort öffnet. | number | 400 |
| Prop | Typ | Standard |
|---|---|---|
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open, details) => void | – |
onOpenChangeCompleteWird nach der Öffnen- oder Schließen-Animation aufgerufen. | (open) => void | – |
disabledSchaltet den Tooltip ab. | boolean | false |
disableHoverablePopupSchließt, sobald der Zeiger den Trigger verlässt. | boolean | false |
trackCursorAxis | "none" | "x" | "y" | "both" | "none" |
handleVon createTooltipHandle. | TooltipHandle<Payload> | – |
children | ReactNode | ({ payload }) => ReactNode | – |
| Prop | Typ | Standard |
|---|---|---|
delayÜberschreibt die Provider-Verzögerung für diesen Trigger. | number | – |
closeDelay | number | – |
closeOnClick | boolean | true |
disabledVerhindert, dass dieser Trigger den Tooltip öffnet. Das Element bleibt aktiviert. | boolean | false |
handle | TooltipHandle<Payload> | – |
payload | Payload | – |
render | ReactElement | (props, state) => ReactElement | <button> |
| Attribut | Beschreibung |
|---|---|
data-slot="tooltip-trigger" | Der Trigger. |
data-popup-open | Vorhanden, solange sein Tooltip offen ist. |
data-trigger-disabled | Vorhanden, wenn der Trigger den Tooltip nicht öffnen kann. |
| Prop | Typ | Standard |
|---|---|---|
side | "top" | "bottom" | "left" | "right" | "inline-start" | "inline-end" | "top" |
align | "start" | "center" | "end" | "center" |
sideOffset | number | (data) => number | 6, or 8 with arrow |
alignOffset | number | 0 |
arrow | boolean | false |
collisionPadding | number | 8 |
arrowPadding | number | 8 |
portalPropsEtwa container oder keepMounted. | TooltipPortal props | – |
| Attribut | Beschreibung |
|---|---|
data-slot="tooltip-content" | Das Popup. |
data-slot="tooltip-positioner" | Der Positionierungs-Wrapper um das Popup. |
data-side | Die Seite, auf der er nach dem Umklappen geöffnet wurde. |
data-align | Die Ausrichtung. |
data-instant | "delay", "focus" oder "dismiss", wenn es ohne Animation öffnet oder schließt. |
data-starting-style | Vorhanden, während es einanimiert. |
data-ending-style | Vorhanden, während es ausanimiert. |
--available-width | Platz zwischen dem Trigger und dem Bildschirmrand. |
--transform-origin | Der Punkt, von dem der Tooltip skaliert. |
Wird von arrow für dich gerendert. Nutze es direkt nur, wenn du einen eigenen Content-Teil zusammensetzt.
| Attribut | Beschreibung |
|---|---|
data-slot="tooltip-arrow" | Der Pfeil. |
data-uncentered | Vorhanden, wenn er nicht auf die Mitte des Triggers zeigen kann. |
- Alert dialogEin Bestätigungsdialog für destruktive oder wichtige Aktionen, der auf asynchrone Arbeit wartet und auf Smartphones zum Bottom Sheet wird.
- CommandEine durchsuchbare Liste von Aktionen, inline oder als ⌘K-Palette, mit Seiten, Tastenkürzeln und hervorgehobenen Treffern.
- Context menuEin Menü mit Aktionen per Rechtsklick oder langem Drücken, mit Untermenüs, Checkbox- und Radio-Einträgen sowie Halte-Feedback auf Touch-Geräten.
- DialogEin Fenster über der Seite für Formulare und fokussierte Aufgaben, mit fixiertem Header und Footer, Verschachtelung und einem wischbaren Bottom Sheet auf Smartphones.
- DrawerEin Panel, das von jeder Kante hereingleitet und deinem Finger folgt, mit Snap-Punkten, einem funktionierenden Griff und verschachtelten Drawern, die sich stapeln.
- Dropdown menuEin Menü mit Aktionen und Optionen hinter einem Button, mit Gruppen, Untermenüs, Checkbox- und Radio-Einträgen sowie Tastenkürzeln.
In Blocks verwendet
Blocks, die auf Tooltip aufbauen.
- Prompt InputEin Chat-Composer, der als ruhige einzelne Zeile beginnt, beim Schreiben zu einer Karte wächst und nach unten wandert, sobald die Unterhaltung beginnt. Enter sendet, sicher bei japanischer und chinesischer Eingabe. Dateien per Einfügen, Ablegen oder Auswählen hinzufügen, mit Vorschau, Fortschritt und Wiederholen. @ fügt Dateien hinzu und / führt Befehle aus einem Menü an der Einfügemarke aus. Ein Modellwähler mit Zifferntasten, ein Effort-Slider, der bei Max lebendig wird, ein Kontextring, Diktat mit Live-Wellenform, Tool-Chips, eine Warteschlange für Nachrichten, die während einer streamenden Antwort getippt werden, und Entwürfe, die einen Reload überstehen.
- Agent TodosZeige den Plan eines Agenten, während er arbeitet. Jeder Schritt wandert von Backlog über To do und In Arbeit zu Erledigt, mit Live-Zeiten, Fehlern und den dahinterliegenden Tool-Aufrufen. Eine Status-Pille für über dem Composer, sichtbare Planänderungen und ein Review-Schritt, um den Plan vor der Ausführung zu bearbeiten.
- API keysDie API-Schlüssel-Seite eines KI-Produkts, wie in den Konsolen von OpenAI und Anthropic. Schlüssel mit eingeschränkten Berechtigungen und Ablaufdatum erstellen, das Secret einmal sehen mit einem Kopieren, das sich bestätigt, mit Rückgängig widerrufen, direkt umbenennen, mit Übergangsfrist rotieren und die Nutzung pro Schlüssel sehen.
- ArtifactDas Panel neben einem KI-Chat, das zeigt, was das Modell erzeugt hat. Webseiten, SVGs, Dokumente und Code streamen live ein und wechseln dann zu einer Sandbox-Vorschau, mit Versionen zum Vergleichen und Wiederherstellen, einem anpassbaren Split und einem Bottom Sheet auf Smartphones.