Tooltip
Hover ya da klavye odağında, kısa bir bekleyişten sonra açılan, komşular arasında anında geçen ve kısayolları gösteren kısa bir ipucu.
pnpm dlx shadcn@latest add https://hextaui.com/r/tooltip.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @base-ui/react cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/tooltip.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Tooltip, tetikleyicide kısa bir bekleyişten sonra veya tetikleyici klavye odağı alınca hemen açılır. Biri gösterilirken komşuları anında ve animasyonsuz açılır; böylece bir araç çubuğunu taramak her birini beklemek yerine etiket okumak gibi hissedilir.
Bu anlık geçiş, bir TooltipProvider paylaşan tooltip'ler arasında çalışır. Gecikmeyi paylaşmak için uygulamanızı (veya bir araç çubuğunu) birine sarın. Sağlayıcısız bir tooltip aynı varsayılanlarla tek başına yine çalışır.
Kenarlar
TooltipContent üzerinde side ayarlayın. Mantıksal taraflar okuma yönünü izler ve yer olmadığında tooltip çevrilir.
Okla
arrow, tooltip ekrana sığmak için kaysa bile tetikleyicide kalan bir işaretçi ekler.
Klavye kısayolu
Etiketten sonra bir Kbd veya KbdGroup koyun. Tooltip'in renklerini alır ve sonda durur; Apple cihazlarında ⌘, diğerlerinde Ctrl gösterir.
Araç çubuğu
Bir düğmede bekleyin, sonra grup boyunca kayın. Tek bir TooltipProvider altındaki tooltip'ler aralarında gezinirken anında değişir.
Devre dışı
Devre dışı bir düğme yine de focusableWhenDisabled ile nedenini açıklayabilir; bu onu hover edilebilir ve sekme sırasında tutar. Tooltip üzerindeki disabled tooltip'i kapatır.
Uzun içerik
Metin rahat bir genişlikte sarar ve uzun URL'ler dahil ekran kenarını asla aşmaz.
Kontrollü
Tooltip'i kendiniz yönetmek için open ve onOpenChange verin. Neden, onu neyin açtığını veya kapattığını söyler.
Bir tooltip, çok tetikleyici
createTooltipHandle ile bir handle oluşturun ve tek bir tooltip paylaşmak için her tetikleyiciden bir payload geçirin.
Sağdan sola
dir="rtl" içinde inline-end solda açılır ve kısayol diğer uca geçer.
| Tuş | Action |
|---|---|
| Tab | Tetikleyiciye klavyeden odaklanmak tooltip'ini hemen açar. |
| Esc | Tooltip'i kapatır ve odağı tetikleyicide tutar. |
| EnterSpace | Tetikleyiciyi etkinleştirir ve tooltip'i kapatır, böylece sonrasında olanı örtmez. |
- Tooltip görsel bir ipucudur, etiket değildir. Yalnızca simgeli tetikleyicilere tooltip metniyle eşleşen bir
aria-labelverin. - Dokunmatikte hiçbir şey açılmaz ve dokunuş yalnızca tetikleyicinin yaptığını yapar. İnsanların ihtiyaç duyduğu hiçbir şeyi tooltip'e koymayın; bunun için popover kullanın.
- İşaretçi kullanıcıları tooltip'i okumak veya seçmek için kapanmadan üzerine gidebilir.
- Azaltılmış hareket açıkken tooltip ölçeklenmeden solar.
Base UI tooltip üzerine kuruludur. Her parça sardığı ilkelin prop'larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
delayAçılmadan önce bir tetikleyicide beklenecek milisaniye. | number | 300 |
closeDelayAyrıldıktan sonra kapanmadan önceki milisaniye. | number | 0 |
timeoutBiri kapandıktan sonra sonrakinin ne kadar süre anında açılacağı. | number | 400 |
| Prop | Tür | Varsayılan |
|---|---|---|
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open, details) => void | – |
onOpenChangeCompleteAçma ya da kapatma animasyonundan sonra çağrılır. | (open) => void | – |
disabledTooltip'i kapatır. | boolean | false |
disableHoverablePopupİşaretçi tetikleyiciden ayrılır ayrılmaz kapanır. | boolean | false |
trackCursorAxis | "none" | "x" | "y" | "both" | "none" |
handlecreateTooltipHandle'dan. | TooltipHandle<Payload> | – |
children | ReactNode | ({ payload }) => ReactNode | – |
| Prop | Tür | Varsayılan |
|---|---|---|
delayBu tetikleyici için sağlayıcı gecikmesini geçersiz kılar. | number | – |
closeDelay | number | – |
closeOnClick | boolean | true |
disabledBu tetikleyicinin tooltip'i açmasını durdurur. Öğe etkin kalır. | boolean | false |
handle | TooltipHandle<Payload> | – |
payload | Payload | – |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="tooltip-trigger" | Tetikleyici. |
data-popup-open | Tooltip'i açıkken bulunur. |
data-trigger-disabled | Tetikleyici tooltip'i açamadığında bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
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 |
portalPropscontainer veya keepMounted gibi. | TooltipPortal props | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tooltip-content" | Açılır pencere. |
data-slot="tooltip-positioner" | Açılır pencerenin çevresindeki konumlandırma sarmalayıcısı. |
data-side | Çevrildikten sonra açıldığı taraf. |
data-align | Hizalama. |
data-instant | Animasyonsuz açıldığında veya kapandığında "delay", "focus" veya "dismiss". |
data-starting-style | Animasyonla belirirken bulunur. |
data-ending-style | Animasyonla kaybolurken bulunur. |
--available-width | Tetikleyici ile ekran kenarı arasındaki boşluk. |
--transform-origin | Tooltip'in ölçeklendiği nokta. |
arrow tarafından sizin için işlenir. Yalnızca kendi içerik parçanızı birleştirirken doğrudan kullanın.
| Öznitelik | Açıklama |
|---|---|
data-slot="tooltip-arrow" | Ok. |
data-uncentered | Tetikleyicinin merkezini işaret edemediğinde bulunur. |
- Alert dialogYıkıcı ya da önemli eylemler için, asenkron işin bitmesini bekleyen ve telefonlarda alt sayfaya dönüşen bir onay iletişim kutusu.
- CommandSatır içi ya da ⌘K paleti olarak eylemlerin aranabilir listesi; sayfalar, kısayollar ve vurgulanmış eşleşmeler içerir.
- Context menuSağ tık ya da uzun basışla açılan eylem menüsü; alt menüler, onay kutusu ve radyo öğeleri ile dokunmatik ekranda basılı tutma geri bildirimi içerir.
- DialogFormlar ve odaklı görevler için sayfanın üzerinde bir pencere; sabit üst bilgi ve alt bilgi, iç içe geçme ve telefonlarda kaydırılabilir bir alt sayfa içerir.
- DrawerHerhangi bir kenardan kayarak gelen ve parmağınızı izleyen bir panel; yapışma noktaları, çalışan bir tutamaç ve üst üste binen iç içe çekmeceler içerir.
- Dropdown menuBir düğmenin ardındaki eylem ve seçenek menüsü; gruplar, alt menüler, onay kutusu ve radyo öğeleri ile kısayollar içerir.
Kullanıldığı bloklar
Tooltip üzerine kurulan bloklar.
- Prompt InputTek sakin bir satır olarak başlayan, yazdıkça karta dönüşen ve konuşma başladığında aşağı inen bir sohbet yazma alanı. Enter gönderir; Japonca ve Çince girişle de güvenle çalışır. Dosyaları yapıştırın, bırakın ya da seçin; önizleme, ilerleme ve yeniden deneme desteği vardır. @ dosya ekler, / ise imleçte açılan bir menüden komut çalıştırır. Sayı tuşlarıyla çalışan bir model seçici, Max'ta canlanan bir efor kaydırıcısı, bir bağlam halkası, canlı dalga biçimli dikte, araç çipleri, yanıt akarken yazılan mesajlar için bir kuyruk ve yeniden yüklemeden sağ çıkan taslaklar.
- Agent TodosBir ajanın planını çalışırken gösterin. Her adım backlog'dan yapılacak, devam eden ve tamamlanana ilerler; canlı süreler, başarısızlıklar ve arkasındaki araç çağrıları ile birlikte. Yazma alanının üstü için bir durum hapı, görebildiğiniz plan değişiklikleri ve çalışmadan önce planı düzenlemek için bir gözden geçirme adımı.
- API keysOpenAI ve Anthropic konsolları gibi bir yapay zeka ürününün API anahtarları sayfası. Kapsamlı izinler ve son kullanma tarihiyle anahtar oluşturun, gizli anahtarı bir kez görün ve kopyalama onaylansın, geri alınabilir şekilde iptal edin, yerinde yeniden adlandırın, ek süreyle döndürün ve anahtar başına kullanımı görün.
- ArtifactModelin ürettiğini gösteren, yapay zeka sohbetinin yanındaki panel. Web sayfaları, SVG'ler, belgeler ve kod canlı olarak akar, ardından korumalı bir önizlemeye geçer; karşılaştırıp geri yükleyebileceğiniz sürümler, yeniden boyutlandırılabilir bir bölme ve telefonlarda alt sayfa sunar.