آکاردئون (Accordion)
محتوای تاشو برای نمایش بخشهای قابل گسترش — مناسب برای FAQ، تنظیمات، و محتوای چندبخشی
معرفی
Accordion محتوا را در بخشهای تاشو سازماندهی میکند که کاربر میتواند هر بخش را جداگانه باز و بسته کند.
چه زمانی استفاده کنیم:
- نمایش سوالات متداول (FAQ) در یک صفحه
- بخشهای تنظیمات که کاربر فقط به بعضی از آنها نیاز دارد
- محتوای طولانی که نیاز به گروهبندی دارد (مثل لیست پلتفرمها با جزئیات هر کدام)
چه زمانی استفاده نکنیم:
- وقتی کاربر باید بین بخشهای مختلف رفتوبرگشت کند — از
Tabsاستفاده کنید - وقتی فقط یک بخش تاشو دارید — از
Collapsibleاستفاده کنید - وقتی محتوا باید همیشه دیده شود — accordion پیشفرض محتوا را مخفی میکند
استفاده
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<Accordion type="single" collapsible>
<AccordionItem value="item-1">
<AccordionTrigger>سوال اول</AccordionTrigger>
<AccordionContent>پاسخ سوال اول در اینجا قرار میگیرد.</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>سوال دوم</AccordionTrigger>
<AccordionContent>پاسخ سوال دوم در اینجا قرار میگیرد.</AccordionContent>
</AccordionItem>
</Accordion>
)
}Props
Accordion
AccordionItem
دسترسیپذیری
- پیمایش با کلیدهای
↑و↓بین trigger ها - با
EnterیاSpaceباز و بسته میشود - از
role="region"وaria-expandedاستفاده میشود - سازگار با screen reader ها
- سازگار با RTL
تعامل با کیبورد
EnterیاSpace: باز/بسته کردن آیتم -Arrow Down/Arrow Up: حرکت بین سرتیترهای آکوردئون -Home: رفتن به اولین آیتم -End: رفتن به آخرین آیتم
راهنمای انتخاب: Accordion در مقابل Tabs و Collapsible
| سناریو | کامپوننت |
|---|---|
| چند بخش تاشو با محتوای مستقل | Accordion |
| ناوبری بین view های موازی | Tabs |
| یک بخش تاشوی منفرد | Collapsible |
| جداسازی محتوا در یک ستون | Accordion |
| محتوایی که کاربر بین آنها جابجا میشود | Tabs |
حالتها و انواع
بخش FAQ
<Accordion type="single" collapsible className="w-full">
<AccordionItem value="q1">
<AccordionTrigger>نرخ تعامل چطور محاسبه میشود؟</AccordionTrigger>
<AccordionContent>
نسبت تعاملات (لایک، کامنت، ذخیره) به تعداد فالوورها در دوره انتخابشده. این عدد به صورت درصد نمایش داده میشود.
</AccordionContent>
</AccordionItem>
<AccordionItem value="q2">
<AccordionTrigger>چه پلتفرمهایی پشتیبانی میشوند؟</AccordionTrigger>
<AccordionContent>اینستاگرام، توییتر، تیکتاک، یوتیوب، لینکدین، تلگرام، و تردز.</AccordionContent>
</AccordionItem>
</Accordion>چند بخش قابل باز شدن همزمان
<Accordion type="multiple">
<AccordionItem value="instagram">
<AccordionTrigger>اینستاگرام</AccordionTrigger>
<AccordionContent>تنظیمات مربوط به اینستاگرام...</AccordionContent>
</AccordionItem>
<AccordionItem value="twitter">
<AccordionTrigger>توییتر</AccordionTrigger>
<AccordionContent>تنظیمات مربوط به توییتر...</AccordionContent>
</AccordionItem>
</Accordion>راهنمای استفاده
بکنید
- از
type="single" collapsibleاستفاده کنید تا کاربر بتواند همه بخشها را ببندد - عناوین trigger را کوتاه و گویا نگه دارید - محتوای مرتبط را در یک AccordionItem گروهبندی کنید
نکنید
- از Accordion برای ناوبری بین صفحات استفاده نکنید — از Tabs استفاده کنید - بیش از ۷-۸ آیتم در یک Accordion نگذارید — بهجای آن صفحه را تجدید ساختار دهید - محتوای بسیار مهم را در Accordion پنهان نکنید — کاربر ممکن است آن را نبیند
کامپوننتهای مرتبط
- Tabs — وقتی کاربر باید بین view های موازی ناوبری کند (نه فقط محتوا را گسترش دهد)
- Collapsible — وقتی فقط یک بخش تاشو دارید
- Card — برای گروهبندی محتوا بدون قابلیت تاشو