Drawer
Genel görünümimport { Drawer, DrawerFooter, DrawerHeader, DrawerSide } from '@nili/ui';Bu, kütüphanenin kendi genel görünüm sayfası — canlı olarak render ediliyor. Üstten dili veya temayı değiştirin, o da değişir.
Temel
Bir kenardan kayarak gelen panel. Modal gibi open ve onOpenChange ile denetlenir — taşınır, odağı hapseder ve odağı tetikleyiciye döndürür.
import { Drawer, Button, TextInput } from "@nili/ui"
export function Example() {
const [open, setOpen] = useState(false)
return (
<>
<Button onClick={() => setOpen(true)}>Open drawer</Button>
<Drawer
open={open}
onOpenChange={setOpen}
title="Filters"
description="Narrow the list down."
closeLabel="Close"
footer={
<>
<Button appearance="stroke" onClick={() => setOpen(false)}>Reset</Button>
<Button onClick={() => setOpen(false)}>Apply</Button>
</>
}
>
<TextInput
label={t('filters.search')}
placeholder={t('filters.searchPlaceholder')}
/>
</Drawer>
</>
)
}Yönler
side mantıksaldır: end, İngilizcede sağ, Farsçada soldur; böylece çekmece hep okuyucunun beklediği kenardan açılır. top ve bottom fizikseldir, çünkü o eksende okuma yönü yoktur.
import { Drawer } from "@nili/ui"
export function Example() {
return (
<>
<Drawer side="end" … />
<Drawer side="start" … />
<Drawer side="top" … />
<Drawer side="bottom" … />
</>
)
}Boyutlar ve başlık yoğunluğu
Dört panel boyutu ve Figma’nın Small / Large başlığı için ayrı bir headerSize.
import { Drawer } from "@nili/ui"
export function Example() {
return (
<>
<Drawer size="sm" headerSize="sm" … />
<Drawer size="lg" headerSize="lg" … />
<Drawer size="full" … />
</>
)
}Genişletilmiş alt bilgi
stretchFooter eylemlerin genişliği doldurmasını sağlar — Figma’nın alt bilgi Stretch’i. İki bitişik düğmenin tuhaf bir boşluk bıraktığı dar bir çekmecede doğrudur.
import { Drawer, Button } from "@nili/ui"
export function Example() {
return (
<Drawer
open={open}
onOpenChange={setOpen}
title="Settings"
stretchFooter
footer={
<>
<Button appearance="stroke" onClick={close}>Cancel</Button>
<Button onClick={close}>Save</Button>
</>
}
/>
)
}Kapatmayı denetlemek
closeOnOutsideClick ve closeOnEscape varsayılan olarak açıktır. showClose ✕’i tutar — diğer ikisini kapatırken onu bırakın, yoksa çekmecenin çıkışı olmaz.
import { Drawer } from "@nili/ui"
export function Example() {
return (
<Drawer
open={open}
onOpenChange={setOpen}
closeOnOutsideClick={false}
closeOnEscape={false}
showClose
closeLabel="Close"
title="Editing"
…
/>
)
}Drawer
extends Omit< ComponentPropsWithoutRef<'div'>, 'title' | 'children' >
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| open* | boolean | — | |
| onOpenChange* | (open: boolean) => void | — | |
| side | start | end | top | bottom | end | Logical: `end` is right in English, left in Persian. |
| size | lg | md | sm | full | md | |
| title | ReactNode | — | |
| description | ReactNode | — | |
| icon | ReactNode | — | Figma header "Left Icon" — leading slot before the title. |
| headerSize | sm | lg | sm | Header density: Figma's Small / Large. |
| footer | ReactNode | — | |
| stretchFooter | boolean | false | Figma footer "Stretch": actions fill the width. |
| showClose | boolean | true | |
| closeLabel | string | Close | |
| closeOnOutsideClick | boolean | true | |
| closeOnEscape | boolean | true | |
| container | HTMLElement | null | — | Where to portal the drawer. Defaults to `document.body`. |
DrawerBody
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| size | sm | lg | sm |
DrawerFooter
Varyant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| stretch | 'true' | 'false' | false |
DrawerHeader
Varyant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| size | sm | lg | sm |
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| title | ReactNode | — | |
| description | ReactNode | — | |
| icon | ReactNode | — | A 20px icon, or a 48px key icon. |
| titleId | string | — | |
| descriptionId | string | — | |
| onClose | () => void | — | Shows the × when set. |
| closeLabel | string | Close | |
| className | string | — |
DrawerOverlay
dahiliDrawerPanel
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| side | start | end | top | bottom | end | |
| size | sm | md | lg | full | md |