قائمة منسدلة
قائمة منبثقة قابلة للتركيب مبنية على React Aria - حيث يختار Select قيمة في عنصر التشغيل الخاص به، وDropdown عبارة عن لوحة حرة من صفوف الإجراءات المجمّعة بسطح BoardUI (نصف قطر 16، ظل منسدل) وتأثير ظهور بمقياس 150ms + ضبابية. الوصفة ذاتها وراء قوائم الفريق والحساب في الشريط الجانبي للوحة التحكم وقائمة الإضافة في محرر دردشة الذكاء الاصطناعي.
التثبيت
يمكنك إضافة مكوّن القائمة المنسدلة هذا باستخدام CLI الخاص بنا أو يدويًا:
الوضع الداكن جاهز - هذا مكوّن يتبع رموز التصميم الدلالية لـ BoardUI تلقائياً. إعداد تبديل السمة.
تنسخ CLI مصدر المكوّن (مع تبعياته الداخلية) إلى مشروعك وتثبّت أي حزم npm مطلوبة.
npx boardui@latest add dropdownهل تستخدم حزمة واجهة مستخدم مشتركة أو أسماء استيراد مختصرة مخصصة؟ تهيئة مسارات التثبيت قبل تشغيل CLI. تستخدم أمثلة النسخ واللصق الاستيرادات الافتراضية.
منتقي النموذج
قائمة النماذج في محرر محادثة الذكاء الاصطناعي: تعمل الصفوف كمجموعة راديو - محدد يبقي الصف الحالي مميزاً ويجلس رمز الراديو في نهاية الصف عبر justify-between.
{/* Radio-group rows: selected state on the row + a radio glyph at the end */}const [model, setModel] = useState("Fable 5");
<Dropdown isOpen={isOpen} onOpenChange={setIsOpen}> <DropdownTrigger className="…pill trigger with the current model + chevron…"> {model} <ChevronDownSmall className={cx("size-4", isOpen && "rotate-180")} /> </DropdownTrigger>
<DropdownPopover aria-label="Models" placement="bottom start"> <DropdownGroup label="Models"> <div role="radiogroup" aria-label="Model" className="flex w-full flex-col gap-1"> {MODELS.map((name) => ( <DropdownItem key={name} selected={name === model} onSelect={() => { setModel(name); setIsOpen(false); }} className="justify-between gap-2.5" > <span className="truncate text-body-medium text-text-primary">{name}</span> <RadioDot selected={name === model} /> </DropdownItem> ))} </div> </DropdownGroup> </DropdownPopover></Dropdown>