shadcn/ui'da menü göstermenin üç yolu vardır: DropdownMenu bir düğmeye basınca açılan eylem listesidir, ContextMenu aynı türden bir listeyi bir alana sağ tıklandığında açar, Menubar ise masaüstü uygulamalarındaki gibi sürekli görünen ve "Dosya", "Düzen" gibi başlıklardan oluşan bir menü çubuğudur. Üçü de Radix UI ilkellerine dayanır, neredeyse aynı parça adlarını kullanır ve npx shadcn@latest add dropdown-menu, add context-menu, add menubar komutlarıyla eklenir. Birini öğrendiğinizde diğer ikisini de büyük ölçüde öğrenmiş olursunuz.
Bu yazıda önce üç bileşenin ortak parçalarını, yani öğe, etiket, ayırıcı, kısayol, onay kutulu ve radyo öğeleri ile alt menüleri, ardından her bileşenin kendine özgü kullanımını ve belgedeki dialog açma notunu ele alıyoruz. Aranabilir komut listesi istiyorsanız Command yazısı daha uygun olabilir; serinin tamamı için shadcn/ui öğrenme rehberi sayfasına bakabilirsiniz.
Kurulum

Her bileşen kendi Radix paketini kullanır. CLI ile kurulumda paketler otomatik yüklenir; elle kurulumda ilgili paketi yükleyip kaynak dosyayı components/ui klasörüne kopyalarsınız.
npx shadcn@latest add dropdown-menu
npx shadcn@latest add context-menu
npx shadcn@latest add menubar| Bileşen | Belgedeki tanım | Radix paketi |
|---|---|---|
| Dropdown Menu | Bir düğmeyle tetiklenen eylem ya da işlev menüsü | @radix-ui/react-dropdown-menu |
| Context Menu | Aynı türden menü; belgedeki örnekte sağ tıklamayla açılır | @radix-ui/react-context-menu |
| Menubar | Masaüstü uygulamalarındaki gibi sürekli görünen komut çubuğu | @radix-ui/react-menubar |
Belge sayfalarında Dropdown Menu ile Context Menu aynı açıklama cümlesini paylaşır; aralarındaki fark tetikleme biçimidir. Davranışın ayrıntıları Radix UI: Dropdown Menu, Radix UI: Context Menu ve Radix UI: Menubar sayfalarında anlatılır. Bileşen dosyalarının hepsi "use client" satırıyla başlar.
Ortak parçalar
Üç dosya da aynı yapıyı izler ve parça adları yalnızca ön ekleriyle ayrılır: DropdownMenuItem, ContextMenuItem ve MenubarItem aynı işi yapar. Aşağıdaki tabloda Dropdown Menu adları kullanılmıştır; diğer iki bileşende ön eki değiştirmeniz yeterlidir.
| Parça | Görevi |
|---|---|
| DropdownMenuItem | Tıklanabilir menü öğesi; inset, variant ve disabled alabilir |
| DropdownMenuLabel | Bölüm başlığı; tıklanmaz, inset alabilir |
| DropdownMenuGroup | İlgili öğeleri gruplar |
| DropdownMenuSeparator | Gruplar arasına ince bir çizgi çeker |
| DropdownMenuShortcut | Öğenin sağında kısayol metni gösterir |
| DropdownMenuCheckboxItem | Onay kutulu öğe; checked ve onCheckedChange alır |
| DropdownMenuRadioGroup / RadioItem | Tek seçimli öğe grubu; value ve onValueChange alır |
| DropdownMenuSub / SubTrigger / SubContent | İç içe alt menü |
| DropdownMenuPortal | Alt menü içeriğini portal içinde çizmek için |
Kaynak koda göre menü öğeleri iki özel prop alır. inset verildiğinde öğe solda pl-8 boşluk bırakır; böylece onay işareti ya da simge taşımayan öğeler, işaretli öğelerle aynı hizada durur. variant ise "default" ya da "destructive" değerini alır; destructive öğeyi yıkıcı renkle, yani temadaki destructive değişkeniyle çizer. Silme gibi tehlikeli işlemleri bu varyantla işaretlemek, kullanıcının öğeyi diğerlerinden ayırt etmesini kolaylaştırır. disabled ise Radix'ten gelir ve öğeyi soluk, tıklanamaz gösterir.
DropdownMenuShortcut bileşeni yalnızca bir span öğesidir: sağa yaslanır, küçük ve geniş aralıklı yazılır. Klavye kısayolunu göstermekle yetinir, onu çalıştırmaz. Menüdeki "⌘B" yazısının gerçekten bir işe yaraması için klavye olayını kendiniz dinlemelisiniz; bunun bir örneği Command yazısındaki Ctrl/Cmd+K kancasıdır.
Hangisini seçmeli?

| Durum | Uygun bileşen |
|---|---|
| Bir düğmenin altında birkaç eylem | Dropdown Menu |
| Bir dosya, satır ya da kart üzerinde sağ tıklama eylemleri | Context Menu |
| Editör ya da yönetim aracı gibi kalıcı üst menü | Menubar |
| Arama yapılabilen uzun komut listesi | Command (ayrı yazı) |
| Form içinde tek değer seçimi | Select (ayrı yazı) |
Son iki satır sık karıştırılır: menüler eylem içindir, form değeri seçtirmek için Select ve Native Select bileşenlerini kullanın. Sitenin ana gezinmesi için ise Navigation Menu daha uygundur. Context Menu yalnızca sağ tıklamayla açıldığı için, aynı eylemlere başka bir yoldan da ulaşılabilmesi kullanıcılar açısından iyi bir pratiktir; örneğin aynı öğeleri bir Dropdown Menu ile de sunabilirsiniz.
Sık yapılan hatalar
- Shortcut'ın kısayolu çalıştırdığını sanmak:
DropdownMenuShortcut,ContextMenuShortcutveMenubarShortcutyalnızca metin gösterenspanöğeleridir; klavye olayını ayrıca dinlemelisiniz. - Menüden dialog açarken modal ayarını unutmak: Dropdown Menu sayfası bu durum için
modal={false}kullanılmasını söyler. - Onay kutulu öğeyi durumsuz bırakmak:
checkedsabit verilirse tıklama görünümü değiştirmez;onCheckedChangeile duruma bağlayın. - Hizasız öğeler: onay ya da radyo öğeleriyle aynı listedeki düz öğelere
insetvermezseniz metinler farklı hizalarda başlar. - Menubar'da MenubarMenu'yü atlamak: her başlık ve listesi ayrı bir
MenubarMenuiçinde olmalıdır. - Simgeli tetikleyicide erişilebilir ad vermemek: belgedeki dialog örneğinde yalnızca simge taşıyan düğme
aria-labelalır; siz de aynısını yapın. Ayrıntı için ARIA rehberine bakın.
Sık Sorulan Sorular
Dropdown Menu ile Context Menu arasındaki fark nedir?
Parçaları ve görünümleri neredeyse aynıdır; belge ikisini de aynı cümleyle tanımlar. Fark tetikleme biçimindedir: Dropdown Menu bir düğmeyle, Context Menu belgedeki örnekte bir alana sağ tıklamayla açılır.
Menü öğesine tıklandığında nasıl işlem yaparım?
Öğenin onSelect olayını kullanın; belgedeki dialog örneği bu olayla durum değiştirir. Öğe yeni bir sayfaya gidecekse asChild ile bir bağlantı bileşenini sarabilirsiniz.
Silme öğesini kırmızı nasıl gösteririm?
Öğeye variant="destructive" verin. Kaynak kod bu varyant için yazı ve odak rengini temadaki destructive değişkeninden alır.
Alt menü içeriğini neden Portal ile sarıyoruz?
Belgedeki Dropdown Menu demosu alt menü içeriğini DropdownMenuPortal ile sarar. Portal, içeriği belge ağacında üst menünün dışına taşır; böylece alt menü üst menünün sınırlarına takılmadan çizilir. Context Menu ve Menubar demolarında alt menü içeriği doğrudan kullanılır.
Radix dışında bir temel kullanılabiliyor mu?
Depo kopyası 19 Aralık 2025 tarihlidir ve bu kopyadaki new-york-v4 bileşenleri Radix paketlerini kullanır. Değişiklik günlüğünün Aralık 2025 bölümü, npx shadcn create ile Radix ya da Base UI arasında seçim yapılabildiğini duyurur; bu seçeneğin ayrıntıları shadcn/ui yenilikleri yazısında ele alınıyor.
Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: shadcn/ui öğrenme rehberi · Dialog ve Alert Dialog · Command paleti · Select ve Native Select · Navigation Menu, Breadcrumb ve Pagination · Data Table oluşturma
