Menubar
Açık menüler arasında kayan tek bir vurgu ve üzerinden geçerken anında geçiş sunan, masaüstü tarzı bir menü çubuğu.
pnpm dlx shadcn@latest add https://hextaui.com/r/menubar.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 @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/menubar.tsx components/ui/dropdown-menu.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Her <MenubarMenu /> bir Dropdown menu'dür; öğeler, onay kutusu ve radyo öğeleri, alt menüler, etiketler ve kısayollar aynı şekilde çalışır ve görünür. Bir menü açın, ardından çubuk boyunca gezmek için imleci hareket ettirin veya ok tuşlarına basın.
Tetikleyici simgeleri
Tetikleyicinin etiketinden önce bir simge koyun veya simgeyi aria-label ile tek başına kullanın. Yalnızca simgeli tetikleyiciler kare biçim alır.
Simgeler
Etiketten önce bir simge koyun. Silen veya geri alınamayan öğelerde variant="destructive" kullanın.
Devre dışı
Tek bir menüyü <MenubarMenu /> üzerinde disabled ile, tüm çubuğu ise <Menubar /> üzerinde devre dışı bırakın. Ok tuşları devre dışı menüleri atlar.
Dikey
orientation="vertical" menüleri üst üste dizer ve gezinmeyi yukarı ve aşağı oklarına çevirir. Menüleri side="inline-end" ile yana doğru açın.
Sağdan sola
Menüler, alt menüler ve ok tuşları okuma yönünü izler. Kısayollar klavye sırasında kalır.
| Tuş | Action |
|---|---|
| Tab | Odağı menü çubuğuna, sonra dışına taşır. |
| ←→ | Menüler arasında gezinir. Bir menü açıkken bunun yerine sonrakini açar. |
| EnterSpace↓ | Odaktaki menüyü açar. |
| ↑↓ | Açık bir menüde öğeler arasında gezinir. |
| → | Tetikleyicisinden bir alt menü açar. |
| Esc | Açık menüyü kapatır ve odağı tetikleyicisine döndürür. |
- Menü çubuğuna
aria-labelile bir ad verin.role="menubar"işler ve her tetikleyici bir menü öğesidir; böylece ekran okuyucular onu uygulama menüsü olarak duyurur. - Çubuk tek bir sekme durağıdır. Ok tuşları menüler arasında gezinir, böylece sayfanın sekme sırası kısa kalır.
- Kayan vurgu dekorasyondur. Azaltılmış harekette açık menüde doğrudan belirir.
Menü parçaları, Dropdown menu karşılıklarıyla aynı prop'ları kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
loopFocusSon menüden ilkine geri sarar. | boolean | true |
modalMenü açıkken sayfa kaydırmayı ve dış tıklamaları engeller. | boolean | true |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="menubar" | CSS'te çubuğu hedefler. |
data-orientation | Yönelim. |
data-has-submenu-open | Çubuktaki herhangi bir menü açıkken bulunur. |
data-slot="menubar-highlight" | Açık tetikleyicinin arkasındaki kayan arka plan; data-visible ile birlikte. |
--menubar-radius | Çubuğun köşe yarıçapı. Tetikleyiciler ve vurgu kendi yarıçaplarını bundan türetir. |
| Prop | Tür | Varsayılan |
|---|---|---|
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean, details) => void | – |
disabled | boolean | false |
| Öznitelik | Açıklama |
|---|---|
data-slot="menubar-trigger" | CSS'te tetikleyicileri hedefleyin. |
data-popup-open | Menüsü açıkken bulunur. |
data-disabled | Devre dışıyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
side | "top" | "bottom" | "left" | "right" | "inline-start" | "inline-end" | "bottom" |
align | "start" | "center" | "end" | "start" |
sideOffset | number | 8 |
alignOffsetMenü öğelerini tetikleyicinin etiketiyle hizalar. | number | -4 |
| Öznitelik | Açıklama |
|---|---|
data-slot="menubar-content" | CSS'te menüleri hedefler. |
data-instant="group" | Menü başka bir menüden geçilerek açıldığında bulunur. Animasyonsuz geçiş yapar. |
MenubarItem, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarGroup, MenubarLabel, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubTrigger ve MenubarSubContent, menubar-* slot'larına sahip Dropdown menu parçalarıdır. Prop'ları için Dropdown menu API'sine bakın.
- 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.
- MotionHer bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
- 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.