ناوبری بخشی — SegmentedNavigation
ناوبری بخشی برای تغییر نمای همان داده یا انتخاب یک بازهٔ زمانی ساده با دو تا پنج گزینه به کار میرود. کامپوننت روی کپی کد از React Aria ساخته شده، همیشه یک بخش را انتخابشده نگه میدارد و وضعیت انتخاب را با پسزمینهٔ برجسته و وزن متن نشان میدهد، نه فقط با رنگ. ظاهر آن با Tabs یکی است: یک حباب متحرک پشت گزینهٔ فعال که با توکنهای حرکت جابهجا میشود. برای بخشهایی که محتوای جدا و پنل دارند از Tabs استفاده کنید، نه این کامپوننت.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { SegmentedNavigation } from '@tokapps/tuk';نمونهٔ زنده
کد قابل کپی
import { SegmentedNavigation } from '@tokapps/tuk';export function ResultsViewSwitch() { return ( <SegmentedNavigation aria-label="نمای نتایج" items={[ { id: 'list', label: 'فهرست' }, { id: 'grid', label: 'شبکه' }, { id: 'timeline', label: 'زمانبندی' }, ]} defaultSelectedKey="list" /> );}import { useState } from 'react';import { Icon } from '@tokapps/icons';import { SegmentedNavigation } from '@tokapps/tuk';const views = [ { id: 'list', label: 'فهرست', icon: <Icon name="ranking" size="sm" /> }, { id: 'grid', label: 'شبکه', icon: <Icon name="docs.templates" size="sm" /> }, { id: 'timeline', label: 'زمانبندی', icon: <Icon name="time" size="sm" /> },];export function ControlledViewSwitch() { const [view, setView] = useState('list'); return ( <SegmentedNavigation aria-label="نمای نتایج" items={views} selectedKey={view} onSelectionChange={setView} fullWidth /> );}import { SegmentedNavigation } from '@tokapps/tuk';// حالت کوچک با گزینهٔ غیرفعال؛ گزینهٔ غیرفعال قابل انتخاب نیستexport function CompactDisabledSegmented() { return ( <SegmentedNavigation aria-label="وضعیت" size="sm" items={[ { id: 'all', label: 'همه' }, { id: 'open', label: 'باز' }, { id: 'archived', label: 'بایگانی', disabled: true }, ]} defaultSelectedKey="all" /> );}همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — (الزامی) | گزینهها؛ هر گزینه کپی کد، کپی کد، کپی کد و کپی کد دارد. |
| کپی کد | کپی کد | — | مقدار کنترلشده. اگر داده شود، کپی کد نادیده گرفته میشود. |
| کپی کد | کپی کد | اولین گزینه (کپی کد) | انتخاب اولیه در حالت غیرکنترلشده. |
| کپی کد | کپی کد | — | فراخوانی با شناسهٔ گزینهٔ جدید. |
| کپی کد | کپی کد | — (الزامی) | برچسب گروه برای صفحهخوان. |
| کپی کد | کپی کد | کپی کد | اندازهٔ ارتفاع بخشها. |
| کپی کد | کپی کد | کپی کد | کشیده شدن به عرض کامل والد. |
| کپی کد | کپی کد | کپی کد | پیشفرض کد نمایش است. فایل کپی کد رفتار پنهانسازی را ثبت کرده است؛ برای پنهانکردن در چاپ کپی کد بدهید. |
| کپی کد | کپی کد | — | کلاس اضافی روی گروه. |
پراپهای کپی کد:
| فیلد | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — (الزامی) | شناسهٔ یکتای گزینه؛ مقدار کپی کد و کپی کد است. |
| کپی کد | کپی کد | — (الزامی) | متن گزینه. |
| کپی کد | کپی کد | — | آیکون کنار متن؛ با کپی کد و نام معنایی داده شود. |
| کپی کد | کپی کد | کپی کد | گزینهٔ غیرفعال قابل انتخاب نیست. |
ساختار و اسلاتها
- کپی کد با کپی کد
- برای هر گزینه: کپی کد (کپی کد از React Aria)
- آیکون اختیاری (کپی کد با اندازهٔ کپی کد)
- کپی کد
- برای هر گزینه: کپی کد (کپی کد از React Aria)
بنیان ثابت: گروه toggle با انتخاب تکی، همیشه یک گزینهٔ فعال، مدیریت کیبورد و ARIA از React Aria.
بخش قابلتغییر: متن و آیکون گزینهها، اندازه، عرض کامل و توکنهای سطح کامپوننت.
همهٔ حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| پیشفرض | بدون data-attribute خاص | متن با رنگ کپی کد روی پسزمینهٔ کپی کد. |
| hover | کپی کد روی بخش | رنگ متن کپی کد. |
| selected | کپی کد روی کپی کد | پسزمینهٔ کپی کد، متن کپی کد با وزن پررنگتر. |
| focus-visible | کپی کد روی بخش | حلقهٔ فوکوس کپی کد. |
| disabled | کپی کد روی کپی کد | کدری با کپی کد و نشانگر کپی کد. |
| sm | کپی کد | ارتفاع کپی کد. |
| md | کپی کد | ارتفاع کپی کد (پیشفرض). |
| full width | کپی کد | گروه تمام عرض والد را میگیرد. |
| چاپ | کپی کد | در چاپ پنهان میشود. |
کامپوننت حالتهای loading، invalid و readonly ندارد؛ در کد تعریف نشدهاند.
تغییرات مجاز برای توسعهدهنده
- variant: یک ظاهر؛ variant جداگانه در کد تعریف نشده است.
- size: کپی کد و کپی کد.
- عرض: کپی کد برای کشیدن به عرض کامل.
- کنترل انتخاب: کپی کد با کپی کد (کنترلشده) یا کپی کد (غیرکنترلشده).
- محتوای گزینه: کپی کد و کپی کد (هر کپی کد).
- نقاط توسعه: کپی کد، کپی کد و کپی کد برای استایل، توکنهای کپی کد، کپی کد، کپی کد.
- صدا و handler: رویداد صوتی ندارد (انتخاب فقط بصری است)؛ handler انتخاب کپی کد است.
تغییرات ممنوع (بنیان ثابت)
- تغییر گروه به چند انتخابی یا اجازهٔ خالیبودن انتخاب (در کد کپی کد و کپی کد ثابتاند).
- حذف کپی کد از گروه (الزامی است).
- تکیه بر رنگ برای نشاندادن بخش فعال؛ باید وزن متن و پسزمینه هم باشد.
- حذف فوکوس مرئی یا فعالکردن گزینهٔ غیرفعال.
- کوچککردن ارتفاع بخشها زیر مقدار توکن کنترل (کپی کد) بدون بازبینی دسترسپذیری.
RTL، کیبورد و صفحهخوان
- RTL: ترتیب بخشها بر پایهٔ جهت خوانش است و در RTL از راست به چپ میچیند.
- کیبورد: کپی کد وارد گروه و خارج میشود؛ کلیدهای فلش جابهجا میکنند (در RTL جهت فلشها معکوس است)؛ کپی کد یا کپی کد بخش را انتخاب میکنند.
- صفحهخوان: گروه با کپی کد معرفی میشود و هر بخش وضعیت انتخاب (کپی کد از کپی کد) را اعلام میکند.
- هدف لمسی: ارتفاع بخشها از توکن کنترل میآید؛ قرارداد کپی کد عدد حداقل لمسی مشخصی ندارد و بازبینی انسانی لازم است.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: بیصدا (کپی کد). انتخاب بخش با تغییر حالت بصری همراه است (کپی کد). prop صدا در سطح Provider در کد تعریف نشده است.
- حرکت: نام معنایی کپی کد با تغییر کپی کد (کپی کد). با کپی کد یا کپی کد تغییر بدون انتقال و فوری است.
- چاپ: در فایل کپی کد پنهان ثبت شده است؛ پیشفرض کد اما کپی کد است. برای پنهانکردن در چاپ کپی کد بدهید.
توکنها
- فایل توکن: کپی کد و مقدارهای مرجع در کپی کد.
- توکنهای معنایی مصرفی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- توکنهای سطح کامپوننت (کپی کد): کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
قرارداد ARCH
- آیکون گزینه فقط با کپی کد و نام معنایی رندر میشود؛ مسیر asset در کد مصرفکننده نمیآید.
- تم فقط حرکت و توکن را تغییر میدهد؛ ساختار گروه، انتخاب تکی و ARIA ثابت است.
- gesture ندارد؛ انتخاب با کیبورد و pointer یکسان است.
نکات
- برای بخشهای با محتوای جدا و پنل از Tabs استفاده کنید.
- برای گزینههای بیشتر از پنج مورد از Select استفاده کنید.
- برای اعمال یکباره (نه انتخاب وضعیت) از Button استفاده کنید.
- اگر در کد برچسب گروه کپی کد را فراموش کنید، TypeScript خطا میدهد؛ مقدار آن باید متن معنادار فارسی باشد.
باید و نباید
باید
- برای انتخاب یک مقدار یا نمای همان داده (جهت، تراکم، ارقام، فهرست/شبکه) از این کامپوننت استفاده کنید.
- کپی کد معنادار بدهید؛ این برچسب گروه برای صفحهخوان است.
- گزینهها را بین دو تا پنج نگه دارید.
- در تنظیمات داک (کپی کد) و شیت، از همین کامپوننت استفاده کنید تا ظاهر یکسان بماند.
نباید
- این کامپوننت را برای جابهجایی بین بخشهای دارای پنل به کار ببرید (بهجای آن کپی کد).
- کنترل قرص یا تب محلی بسازید (مثل کپی کد در کپی کد).
- ظاهر حباب را در کامپوننت یا تم با رنگ خام یا گرادیان بازتعریف کنید؛ حباب از CSS مشترک با کپی کد میآید.
- حالت انتخاب را فقط با رنگ نشان دهید؛ پسزمینه و وزن متن باید تغییر کنند.
موارد استفاده در سامانه
| محل | استفاده |
|---|---|
| کپی کد، تنظیمات داک | جهت، تراکم، حرکت، کنتراست، ارقام |
| کپی کد، شیت «تنظیمات سریع» | همان پنج ردیف (با کپی کد) |
| کپی کد | باقیمانده: هنوز کپی کد محلی؛ باید تبدیل شود |
فهرست کامل و وضعیت موارد باقیمانده در ARCH.md بند ۱۶ آمده است.