Accordion
نمای کلیimport { Accordion, AccordionGroup } from '@nili/ui';این همان صفحهی نمای کلیِ خود کتابخانه است که زنده رندر میشود. زبان یا تم را از هدر عوض کنید، همراهش میآید.
پایه
یک آکاردئون تنها به عنوان و محتوایش نیاز دارد. content نام دیگر children است؛ هرکدام در محل استفاده خواناتر بود همان را بدهید.
import { Accordion } from "@nili/ui"
export function Example() {
return (
<>
<Accordion
title="How long does delivery take?"
content="Orders placed before 14:00 ship the same day."
/>
{/* the same thing, as children */}
<Accordion title="What is the return policy?">
Anything unopened can be returned within thirty days.
</Accordion>
</>
)
}باز، کنترلشده و غیرفعال
defaultOpen آن را باز شروع میکند و بعد کاری به کارش ندارد. open بههمراه onOpenChange وضعیت را به شما میسپارد — مثلاً وقتی آیتم باز از پارامتر URL میآید.
پشتیبانی هر روز از ۹ تا ۲۱ از طریق چت یا ایمیل در دسترس است. بیشتر تیکتها زیر یک ساعت پاسخ میگیرند.
سفارشهای پیش از ساعت ۱۴ همان روز ارسال میشوند. تحویل داخل کشور دو تا چهار روز کاری طول میکشد.
import { Accordion } from "@nili/ui"
export function Example() {
const [open, setOpen] = useState(true)
return (
<>
<Accordion defaultOpen title={t('states.startsOpen')} content="…" />
<Accordion
open={open}
onOpenChange={setOpen}
title="Controlled"
content="…"
/>
<Accordion disabled title="Disabled" content="…" />
</>
)
}نشانگر و اسلات پیشرو
indicatorPosition از جهت خواندن پیروی میکند. indicator کاملاً جای گلیف + / - را میگیرد و startAdornment یک عنصر تزئینی پیش از عنوان اضافه میکند.
import { Accordion, Icon } from "@nili/ui"
import { RiQuestionLine, RiArrowDownSLine } from "@remixicon/react"
export function Example() {
return (
<>
<Accordion
indicatorPosition="start"
title={t('indicator.atStart')}
content="…"
/>
<Accordion
indicator={<Icon icon={RiArrowDownSLine} />}
title={t('indicator.custom')}
content="…"
/>
<Accordion
startAdornment={<Icon icon={RiQuestionLine} size={20} />}
title={t('indicator.withIcon')}
content="…"
/>
</>
)
}گروه — چندتایی
AccordionGroup یک مجموعه را هماهنگ میکند. هر فرزند به یک id یکتا نیاز دارد، چون گروه همان را دنبال میکند. multiple پیشفرض است: بازکردن یکی کاری به بقیه ندارد.
سفارشهای پیش از ساعت ۱۴ همان روز ارسال میشوند. تحویل داخل کشور دو تا چهار روز کاری طول میکشد.
import { Accordion, AccordionGroup } from "@nili/ui"
export function Example() {
return (
<AccordionGroup defaultValue={["shipping"]}>
<Accordion id="shipping" title="How long does delivery take?" content="…" />
<Accordion id="returns" title="What is the return policy?" content="…" />
<Accordion id="support" title="How do I reach support?" content="…" />
</AccordionGroup>
)
}گروه — تکی
single هنگام بازشدن یکی، بقیه را میبندد. collapsible={false} همیشه یک آیتم را باز نگه میدارد — برای پنلی که همواره باید چیزی نشان دهد.
سفارشهای پیش از ساعت ۱۴ همان روز ارسال میشوند. تحویل داخل کشور دو تا چهار روز کاری طول میکشد.
import { Accordion, AccordionGroup } from "@nili/ui"
export function Example() {
return (
<AccordionGroup type="single" collapsible={false} defaultValue={["shipping"]}>
<Accordion id="shipping" title="How long does delivery take?" content="…" />
<Accordion id="returns" title="What is the return policy?" content="…" />
</AccordionGroup>
)
}Accordion
extends Omit< ComponentPropsWithoutRef<'div'>, 'title' | 'content' | 'onToggle' >
محورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| open | boolean | false | Controlled open state. Pair with `onOpenChange`. |
| disabled | boolean | false |
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| title* | ReactNode | — | |
| content | ReactNode | — | Alias for `children`, kept for call sites that pass content as a prop. |
| defaultOpen | boolean | false | Uncontrolled initial state. |
| onOpenChange | (open: boolean) => void | — | |
| indicatorPosition | start | end | end | Where the expand/collapse indicator sits. Follows reading direction. |
| indicator | ReactNode | — | Replaces the default + / - indicator entirely. |
| startAdornment | ReactNode | — | Decorative element shown before the title (e.g. a category icon). |
| id | string | — | Override the generated ids used to wire `aria-controls`/`aria-labelledby`. |
AccordionContent
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| open | 'true' | 'false' | false |
AccordionGroup
extends Omit< ComponentPropsWithoutRef<'div'>, 'defaultValue' | 'onChange' >
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| type | single | multiple | multiple | `'single'` closes the others on open; `'multiple'` leaves them alone. |
| collapsible | boolean | true | In `'single'` mode, allow closing the open item by clicking it again. |
| value | string[] | — | |
| defaultValue | string[] | — | |
| onValueChange | (value: string[]) => void | — |
AccordionIndicator
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| position | start | end | end |
AccordionPanel
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| start | 0 | 1 | 2 | 0 | |
| end | 0 | 1 | 1 |
AccordionTrigger
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| open | 'true' | 'false' | false |