ناوبری بخشها (SectionNavigator)
ناوبری درونصفحهای sticky برای صفحات طولانی با بخشهای متعدد
معرفی
کامپوننت SectionNavigator یک ناوبری درونصفحهای sticky ارائه میدهد که بخش فعلی را بر اساس موقعیت اسکرول برجسته میکند. مناسب برای صفحات تحلیلی، گزارشها، و هر صفحهی طولانی با بخشهای مشخص.
چه زمانی استفاده کنیم:
- برای صفحات طولانی با ۳ بخش یا بیشتر
- در صفحات گزارش و تحلیل که کاربر نیاز به پرش سریع بین بخشها دارد
- وقتی میخواهید موقعیت فعلی کاربر در صفحه را نمایش دهید
چه زمانی استفاده نکنیم:
- برای تعداد section های کم (کمتر از ۳) — از
Tabsاستفاده کنید - برای flow های ترتیبی — از
Stepperاستفاده کنید
استفاده
import { SectionNavigator } from '@parto-system-design/ui'const sections = [
{ id: 'overview', label: 'خلاصه' },
{ id: 'engagement', label: 'تعامل' },
{ id: 'content', label: 'محتوا' },
]
<SectionNavigator sections={sections} />حالتها و انواع
در کنار محتوا
<div className="grid grid-cols-1 lg:grid-cols-[220px_1fr] gap-6">
<aside className="hidden lg:block sticky top-20 h-fit">
<SectionNavigator sections={sections} offset={80} />
</aside>
<div>
<section id="overview">...</section>
<section id="engagement">...</section>
<section id="content">...</section>
</div>
</div>با آیکون
import { BarChart3, Users, FileText } from 'lucide-react'
const sections = [
{ id: 'stats', label: 'آمار', icon: <BarChart3 className="size-4" /> },
{ id: 'audience', label: 'مخاطبان', icon: <Users className="size-4" /> },
{ id: 'reports', label: 'گزارشها', icon: <FileText className="size-4" /> },
]
<SectionNavigator sections={sections} />Props
SectionItem
interface SectionItem {
id: string // باید با id عنصر HTML مطابقت داشته باشد
label: string // متن نمایشی
icon?: React.ReactNode // آیکون اختیاری
}راهنمای استفاده
بکنید
offsetرا برابر با ارتفاع هدر sticky تنظیم کنید تا بخش فعال به درستی تشخیص داده شود -idهر section در HTML باید دقیقاً باidدر آرایهsectionsمطابقت داشته باشد - از آیکون برای بخشهایی استفاده کنید که معنای بصری مشخصی دارند
نکنید
- برای کمتر از ۳ بخش از SectionNavigator استفاده نکنید — از
Tabsاستفاده کنید - label ها را طولانی ننویسید — حداکثر ۲-۳ کلمه کافی است
دسترسیپذیری
- دارای
aria-label="ناوبری بخشها"روی عنصر<nav> - بخش فعال با
aria-current="true"مشخص میشود - با کیبورد قابل ناوبری