پرتوپرتو

آکاردئون (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

Prop

Type

AccordionItem

Prop

Type

دسترسی‌پذیری

  • پیمایش با کلیدهای و بین 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 — برای گروه‌بندی محتوا بدون قابلیت تاشو