انتقل إلى المحتوى
TopClass UI

الأكورديون

أقسام يفتحها القارئ واحدًا تلو الآخر. اللوحات المغلقة تبقى في HTML، فيقرؤها الزاحف ويفتحها البحث في الصفحة.

split - الحجم لم يُقَس بعد

الأكورديون

split - الحجم لم يُقَس بعد

أقسام يفتحها القارئ واحدًا تلو الآخر. اللوحات المغلقة تبقى في HTML، فيقرؤها الزاحف ويفتحها البحث في الصفحة.

تثبيت

جرّبه

hiddenUntilFound
headingLevel

الشيفرة

accordion.tsx
import { AccordionItem, AccordionRoot } from 'topclassui/accordion'

<AccordionRoot className="max-w-105">
  <AccordionItem value="server" title="What is a server component?">
    <p>A component that renders on the server and sends HTML, with no JavaScript of its own.</p>
  </AccordionItem>
  <AccordionItem value="arabic" title="Does it work in Arabic?">
    <p>Yes. The caret moves to the left edge and the text starts at the right one.</p>
  </AccordionItem>
  <AccordionItem value="bundle" title="How big is the bundle?">
    <p>About one kilobyte in the browser. The answers cost nothing: they are plain HTML.</p>
  </AccordionItem>
</AccordionRoot>

اللوحة المغلقة hidden="until-found": بحث المتصفح أو رابط #id أو جزء نصي في العنوان يفتحها.

كل الحالات، بدون تمرير الفأرة

حالتان

The panel of an open item is shown under its trigger.

أو استورده من الحزمة

topclassui/accordion
import { AccordionRoot, AccordionItem } from 'topclassui/accordion'

ثبّت مرة واحدة:npm i topclassui@beta zod

أمثلة

  • جزءان بأسماء مسطّحة، ولا يوجد Accordion وحده: AccordionRoot وAccordionItem. العنصر يحتاج value وtitle، وأبناؤه هم اللوحة.
  • مفتوح من البداية: defaultValue={['install']} على الجذر، وهي قيم value للعناصر التي تبدأ مفتوحة. بيانات بسيطة، فتمرّرها صفحة خادم.
  • عنصر واحد في كل مرة هو الافتراضي، والضغط على العنصر المفتوح يغلقه. multiple يترك العناصر الأخرى كما هي.
  • العنوان نص أو عناصر سطرية، مثل أيقونة أو Badge. لا رابط ولا زر: العنوان داخل زر. ضع الرابط في اللوحة.
  • الجدول الأعرض من الصندوق يمرّر أفقيًا داخل لوحته. العنوان الطويل يلتف على أسطر ولا يُقصّ أبدًا.
  • hiddenUntilFound={false} على الجذر يُخرج اللوحات المغلقة من الصفحة، وkeepMounted يبقيها حينها مخفية عن البحث أيضًا.
  • من صفحة خادم مرّر النصوص والقيم المنطقية وdefaultValue. أما value مع onValueChange، وonOpenChange، فتحتاج ملفًا فيه 'use client'.
basic

first-open

Run npx topclassui add accordion. The files land in your own repository.

multiple

Team, billed every month.

Twelve of twenty are in use.

disabled

long-content

See every order

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Three invoices arrived since your last visit.

many-items

بالعربية، من اليمين إلى اليسار

مكوّن يُعرض على الخادم ويرسل HTML فقط، دون أي JavaScript خاص به.

الخصائص

AccordionRoot

خصائص AccordionRoot
الخاصيةالنوعالافتراضيالحدودالوصف
hiddenUntilFoundbooleantrue-AccordionRoot: closed panels stay in the HTML, where find-in-page and a crawler read them.

AccordionItem

خصائص AccordionItem
الخاصيةالنوعالافتراضيالحدودالوصف
title*ReactNode--The text of the trigger. It sits inside a button: text and inline elements, never a link or a control.
value*string--The name of this item in the root's value and defaultValue.
childrenReactNode--What the panel holds. It stays in the HTML while the panel is closed.
headingLevelinteger, min 2, max 63min 2, max 6AccordionItem: the level of the heading its trigger sits in, clamped to h2 through h6.

لوحة المفاتيح وإمكانية الوصول

لوحة مفاتيح Accordion
المفاتيحما يفعله
Tabينتقل من زر فتح إلى الذي يليه.
ShiftTabيعود إلى الخلف.
Enterيفتح العنصر الذي عليه التركيز أو يغلقه.
Spaceيفتح العنصر الذي عليه التركيز أو يغلقه.
  • اضبط headingLevel على كل عنصر، من 2 إلى 6 (الافتراضي 3): أعلى بدرجة من العنوان الذي فوق الأكورديون. القيمة محصورة في هذا المدى.
  • يسمع قارئ الشاشة زر الفتح زرًّا داخل عنوان، موسَّعًا أو مطويًّا، واللوحة المفتوحة منطقة اسمها عنوانها.
  • العنصر المعطّل بـdisabled يبقي زره في ترتيب التنقل ويعلن أنه معطّل. تقليل الحركة يلغي التلاشي ذا 150 ms.

من اليمين إلى اليسار

لا شيء يُخبَر بالاتجاه: مع dir="rtl" يبدأ العنوان من اليمين ويجلس السهم على اليسار، في نهاية السطر.

الخادم والمتصفح

يُعرض على الخادم، والجزء التفاعلي مكوّن متصفح لا يُرسل إلا عند استخدامه.

الملفات: index.tsx, client.tsx.

على الشارة: split - الحجم لم يُقَس بعد.