Navigation Menu

منوی ناوبری سربرگ سایت: چند عنوان که هرکدام یک پنل محتوایی باز می‌کنند. برخلاف منوی کشویی، برای ناوبری بین بخش‌های سایت ساخته شده نه اجرای دستور، و ساختارش یک nav واقعی با فهرست لینک‌هاست.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API و Reka UISvelte ۵ با runes و Bits UIانگولار با signals و Angular CDK

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

نصب سریع با لینک سخت و دیسک مشترکپکیج‌منیجر پیش‌فرض Node.jsYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/navigation-menu.json
npx dig-ui@latest add https://design-system-tau-green.vercel.app/r/navigation-menu.json
yarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/navigation-menu.json
bunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/navigation-menu.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.

استفاده

import {
  NavigationMenu,
  NavigationMenuContent,
  NavigationMenuItem,
  NavigationMenuLink,
  NavigationMenuList,
  NavigationMenuTrigger,
} from "@/components/ui/navigation-menu"

<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>محصولات</NavigationMenuTrigger>
      <NavigationMenuContent>
        <ul className="grid w-80 gap-1 p-2">…</ul>
      </NavigationMenuContent>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.

ترکیب اجزا

پنل بازشو به‌طور پیش‌فرض داخل یک Viewport مشترک زیر نوار رندر می‌شود؛ برای همین جابه‌جایی بین منوها یک انیمیشن نرم دارد و ارتفاع پنل با محتوا تنظیم می‌شود. اگر می‌خواهید هر منو مستقیم زیر خودش باز شود، viewport={false} بدهید. برای لینک‌های ساده‌ای که پنل ندارند، NavigationMenuLink را با کلاس navigationMenuTriggerStyle() بگذارید تا ظاهرش با بقیهٔ عنوان‌ها یکی باشد. در Next.js همیشه Link را با asChild داخل NavigationMenuLink بگذارید تا ناوبری کلاینتی حفظ شود.

دسترس‌پذیری

  • ساختار یک nav با فهرست لینک‌هاست، پس صفحه‌خوان آن را به‌عنوان ناوبری معرفی می‌کند؛ برای منوی دستور از منوی کشویی استفاده کنید نه این.
  • کلیدهای چپ و راست بین عنوان‌ها حرکت می‌کنند و جهتشان از dir صفحه می‌آید؛ در راست‌به‌چپ برعکس می‌شود.
  • پنل با Escape بسته می‌شود و فوکوس به تریگر برمی‌گردد؛ با Tab هم می‌توان وارد لینک‌های داخل پنل شد.
  • برای صفحهٔ فعلی روی لینک data-active بگذارید؛ رنگ پس‌زمینهٔ متفاوت به‌تنهایی برای صفحه‌خوان کافی نیست، aria-current="page" هم بدهید.
  • روی موبایل این منو جا نمی‌شود؛ در عرض کم به کشو یا آکاردئون تبدیلش کنید.

مرجع API

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.