shadcn/ui Sidebar, uygulamanızın yan menüsünü tek parça bir kutu olarak değil, birbirine takılan küçük parçalar hâlinde verir. Kurmak için npx shadcn@latest add sidebar komutunu çalıştırırsınız; ardından uygulamanın kökünü SidebarProvider ile sarar, içine kendi AppSidebar bileşeninizi ve açıp kapatan SidebarTrigger düğmesini koyarsınız. Genişlik, klavye kısayolu ve çerezle kalıcı açık/kapalı durumu doğrudan components/ui/sidebar.tsx dosyasındaki sabitlerle ayarlanır.
Bu yazı, Sidebar ailesinin iskeletini anlatıyor: kurulum, parçaların yerleşimi, SidebarProvider ve Sidebar bileşenlerinin özellikleri, useSidebar kancası ve ilk çalışan menü. Menü öğeleri, gruplar, alt menüler, rozetler, iskelet yükleme durumu, kontrollü kullanım ve tema değişkenleri ise devam yazısı Sidebar menü ve grupları içinde. Serinin tamamı için shadcn/ui öğrenme rehberi sayfasına bakabilirsiniz.
Kurulum: CLI ve CSS renkleri
CLI ile kurulum tek komuttur. Komut components/ui/sidebar.tsx dosyasını projenize ekler. Depodaki kayıt tanımına göre Sidebar; button, separator, sheet, tooltip, input, skeleton bileşenlerine ve use-mobile kancasına bağımlıdır, npm tarafında da @radix-ui/react-slot, class-variance-authority ve lucide-react paketlerini ister. CLI bu kayıt bağımlılıklarını da birlikte çözer; CLI'nin genel çalışması için shadcn CLI komutları yazısına bakın.
npx shadcn@latest add sidebarİkinci adım renkler. Belgeye göre komut, kenar çubuğuna özel CSS değişkenlerini sizin için eklemelidir; eklemediyse aşağıdaki bloğu app/globals.css dosyanıza kendiniz kopyalarsınız. Değerler oklch biçimindedir ve hem açık tema (:root) hem de koyu tema (.dark) için tanımlanır.
@layer base {
:root {
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
}
.dark {
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.439 0 0);
}
}Elle kurulumda ise belge, bileşen kaynağını components/ui/sidebar.tsx olarak kopyalamanızı, içe aktarma yollarını projenize göre düzeltmenizi ve aynı CSS değişkenlerini eklemenizi ister. Bu değişkenlerin uygulamanın geri kalanından neden ayrı tutulduğu devam yazısının tema bölümünde, genel tema sistemi ise shadcn tema ve CSS değişkenleri yazısında anlatılıyor.
Sık yapılan hatalar
- Sağlayıcı dışında kullanmak:
useSidebar,SidebarTrigger,Sidebarve menü düğmeleri bağlama ihtiyaç duyar.SidebarProviderdışında kullanıldıklarında kaynaktaki kancauseSidebar must be used within a SidebarProvider.hatasını fırlatır. Bu mesaj belgede, Ekim 2024'te düzeltilen bir yazım hatasının sonucu olarak da geçer. - inset varyantında SidebarInset'i unutmak: Belge bu varyantta ana içeriğin
SidebarInsetile sarılmasını açıkça ister; aksi hâlde içerik beklenen kart görünümünü almaz. - CSS değişkenlerini eksik bırakmak: CLI renkleri eklemediyse
--sidebarve diğer değişkenler tanımsız kalır. Kurulum bölümündeki bloğuglobals.cssdosyasına ekleyin. - Çerez karşılaştırmasını yanlış okumak: Belgedeki
=== "true"ifadesi çerez yokkenfalseverir; ilk ziyaret davranışını bilinçli seçin. - Kancayı sunucu bileşeninde çağırmak:
sidebar.tsxdosyası"use client"ile başlar, amauseSidebarçağıran kendi bileşeniniz de istemci bileşeni olmalıdır. Next.js'te o dosyanın başına"use client"ekleyin. - Birden çok kenar çubuğunda sabitleri değiştirmek:
SIDEBAR_WIDTHtüm kenar çubuklarını etkiler; her biri için farklı genişlik istiyorsanızstyleile CSS değişkeni verin.
Sık Sorulan Sorular
Kenar çubuğunu sağ tarafa alabilir miyim?
Evet. Sidebar bileşenine side="right" verin. Kaynakta bu değer hem masaüstü yerleşimini hem de mobilde açılan Sheet panelinin yönünü belirler.
Simgelere daralan kenar çubuğu nasıl yapılır?
collapsible="icon" kullanın. Daraldığında genişlik --sidebar-width-icon değişkenine iner. Daralmış hâlde hangi parçaların gizlendiği ve menü düğmelerine ipucu (tooltip) eklemek, Sidebar menü yazısında anlatılıyor.
Mobilde kenar çubuğu neden çekmece gibi açılıyor?
Çünkü kaynak, mobil eşiğin altında kenar çubuğunu Sheet içinde render eder ve durumu openMobile ile ayrı tutar. Bunu istemiyorsanız collapsible="none" ile sabit bir kenar çubuğu kullanabilir ya da kodu kendi ihtiyacınıza göre düzenleyebilirsiniz.
Sidebar hangi framework ile çalışır?
Sürüm geçmişi Next.js, Remix, Vite ve Laravel'i sayar. Çerezle kalıcı durumun sunucuda okunması için belge yalnızca Next.js örneği verir; diğer ortamlarda çerezi kendi sunucu kodunuzla okumanız gerekir. Kurulum adımları için Next.js kurulumu ve Vite kurulumu yazılarına bakın.
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 · Sidebar menü ve grupları · Sheet ve Drawer · Navigation Menu, Breadcrumb ve Pagination · shadcn blocks · Next.js App Router


