Resizable
Birbirinden ayırabileceğiniz paneller; hover'da uyanan sakin bir ayırıcı, sıfırlama ya da daraltmada kayarak değişen boyutlar ve kalıcı düzenler sunar.
pnpm dlx shadcn@latest add https://hextaui.com/r/resizable.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 react-resizable-panels cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/resizable.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Sayılar piksel, dizeler yüzdedir; dolayısıyla defaultSize="30%" ve minSize={240} ikisi de çalışır. Ayırıcı siz ona uzanana kadar ince bir çizgi kalır. Sürüklerken paneller imleci tam olarak izler; çift tıklamayla sıfırlama, klavye adımları ve koddan daraltma dahil diğer her değişiklik süzülerek gerçekleşir.
Collapsible
collapsible bir panel, minSize değerinin altına sürüklendiğinde kapanır. Onu usePanelRef ile bir düğmeden açıp kapatın; daralma animasyonludur.
Boyut göstergesi
showSize, sürüklerken veya klavye kullanırken ayırıcıdan önceki paneli "percent" veya "pixels" cinsinden gösterir.
Yerleşimi hatırla
useDefaultLayout boyutları localStorage'a kaydeder ve bir sonraki ziyarette animasyonsuz geri yükler. Her panele bir id verin.
Dikey
orientation="vertical" panelleri üst üste dizer. Gruplar, yukarıdaki demoda olduğu gibi iç içe geçebilir.
Görünür tutamaç
withHandle, tutamacı hover'da ortaya çıkarmak yerine sürekli gösterir.
Sağdan sola
Paneller ve ok tuşları okuma yönünü izler.
| Tuş | Action |
|---|---|
| ←→↑↓ | Odaktaki ayırıcıyı grubunun yönü boyunca %5 hareket ettirir. |
| HomeEnd | Ayırıcıyı panellerin izin verdiği kadar hareket ettirir. |
| Enter | Daraltılabilir bir paneli daraltır veya genişletir. |
| F6 | Gruptaki sonraki ayırıcıya geçer; Shift geri götürür. |
- Her ayırıcı, kendinden önceki panelin boyutunu bildiren, odaklanabilir bir
separator'dır. - Boyut göstergesi dekoratiftir; ekran okuyucular separator'ın kendi değerini alır.
- Azaltılmış harekette boyutlar anında değişir ve ayırıcı animasyonlanmaz.
| Prop | Tür | Varsayılan |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
defaultLayout | Layout | – |
onLayoutChangeSürükleme sırası dahil her değişiklik. | (layout) => void | – |
onLayoutChangedBir değişiklik oturduğunda. | (layout, meta) => void | – |
disabled | boolean | false |
groupRef | Ref<GroupImperativeHandle> | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="resizable-panel-group" | Grup. |
data-ready | Mount sonrasında ayarlanır; boyutlar o andan itibaren animasyonlanır. |
| Prop | Tür | Varsayılan |
|---|---|---|
defaultSize | number | string | – |
minSize | number | string | – |
maxSize | number | string | – |
collapsible | boolean | false |
collapsedSize | number | string | 0 |
onResize | (size, id, previous) => void | – |
panelRef | Ref<PanelImperativeHandle> | – |
idYerleşimleri hatırlamak için gerekir. | string | – |
| Prop | Tür | Varsayılan |
|---|---|---|
withHandleTutamacı her zaman göster. | boolean | false |
showSize | boolean | "percent" | "pixels" | false |
disableDoubleClickÇift tıklamanın panelleri sıfırlamasını engeller. | boolean | false |
disabled | boolean | false |
| Öznitelik | Açıklama |
|---|---|
data-slot="resizable-handle" | Ayırıcı. |
data-separator | "inactive", "hover", "active", "focus" veya "disabled". |
data-slot="resizable-handle-grip" | Tutamaç hapı. |
usePanelRef ve useGroupRef size collapse, expand, resize ve setLayout verir. useDefaultLayout bir grubun yerleşimini kalıcı kılar.
- AccordionHer biri bir panel gösteren yığılmış başlıklar; yarıda tersine çevrilebilen yükseklik hareketi ve kapalıyken de aranabilir kalan paneller.
- Aspect ratioMedya yüklenmeden önce şeklini koruyan, yüklenirken parıldayan, medyayı yumuşakça görünür kılan ve hata durumunda yedeğe düşen bir kutu.
- CarouselDokunmatik ekranda ivmeli, fare sürüklemeli, ok tuşlu, noktalı, küçük resimli yerel scroll-snap slaytları ve gerektiğinde duran bir otomatik oynatma.
- CollapsibleYüksekliği hareketle gösterilip gizlenen, yarıda tersine çevrilebilen ve yerleşimi zıplatmayan bir panel.
- Scroll areaMinimal bir kaydırma çubuğuyla yerel kaydırma, yalnızca görülecek daha fazla şey olan yerde solan kenarlar ve son öğeyi ikiye bölen isteğe bağlı bir göz atma payı.
- Separatorİçeriği yatay ya da dikey olarak ayıran ince bir çizgi; isteğe bağlı etiket ve yalnızca görsel çizgiler için dekoratif bir mod içerir.
Kullanıldığı bloklar
Resizable üzerine kurulan bloklar.
- 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.
- Diff ReviewBir ajanın dosyalardaki düzenlemelerini uygulanmadan önce gözden geçirin. Sayaçlı bir dosya ağacı, her değişikliği, her dosyayı ya da hepsini kabul veya reddetme, herhangi bir satıra ya da aralığa ajana geri giden yorumlar, birleşik ve bölünmüş görünümler, kelime düzeyinde vurgular, geri alma, akışla gelen düzenlemeler ve sohbet için bir “4 dosya düzenlendi” özeti.