Drawer
نمای کلیimport { Drawer, DrawerFooter, DrawerHeader, DrawerSide } from '@nili/ui';این همان صفحهی نمای کلیِ خود کتابخانه است که زنده رندر میشود. زبان یا تم را از هدر عوض کنید، همراهش میآید.
پایه
پنلی که از یک لبه میلغزد تو. مثل Modal با open و onOpenChange کنترل میشود — پرتال میشود، فوکوس را نگه میدارد و آن را به تریگر برمیگرداند.
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>
</>
)
}سمتها
side منطقی است: end در انگلیسی راست و در فارسی چپ است، پس کشو همیشه از لبهای باز میشود که خواننده انتظار دارد. top و bottom فیزیکیاند، چون روی آن محور جهت خواندنی وجود ندارد.
import { Drawer } from "@nili/ui"
export function Example() {
return (
<>
<Drawer side="end" … />
<Drawer side="start" … />
<Drawer side="top" … />
<Drawer side="bottom" … />
</>
)
}اندازهها و چگالی سربرگ
چهار اندازهٔ پنل، و یک headerSize جدا برای سربرگ Small / Large فیگما.
import { Drawer } from "@nili/ui"
export function Example() {
return (
<>
<Drawer size="sm" headerSize="sm" … />
<Drawer size="lg" headerSize="lg" … />
<Drawer size="full" … />
</>
)
}پابرگ کشیده
stretchFooter کاری میکند کنشها تمام عرض را پر کنند — همان Stretch پابرگ فیگما. روی کشوی باریک درست است، جایی که دو دکمهٔ چسبیده فاصلهای بدریخت باقی میگذارند.
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>
</>
}
/>
)
}کنترل بستهشدن
closeOnOutsideClick و closeOnEscape پیشفرض روشناند. showClose علامت ✕ را نگه میدارد — وقتی آن دوتا را خاموش میکنید این را بگذارید، وگرنه کشو راه خروج ندارد.
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' >
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| 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
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| size | sm | lg | sm |
DrawerFooter
محورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| stretch | 'true' | 'false' | false |
DrawerHeader
محورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| size | sm | lg | sm |
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| 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
داخلیDrawerPanel
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| side | start | end | top | bottom | end | |
| size | sm | md | lg | full | md |