تبها — Tabs
کپی کد بین بخشهای همسطح یک صفحه یا یک موجودیت جابهجا میشود، و هر بخش پنل محتوای خودش را دارد؛ فقط پنل انتخابشده نمایش داده میشود. ظاهر آن همان ظاهر SegmentedNavigation است: یک حباب متحرک پشت تب فعال. ظاهر دومی برای تب وجود ندارد.
- برای انتخاب یک مقدار یا نمای همان داده (بدون پنل)، از SegmentedNavigation استفاده کنید.
- برای ناوبری بین صفحهها، از TopNavigation یا Sidebar.
- برای مراحل ترتیبی، از Stepper.
نقشهای ARIA، roving tabindex و جهت کلیدها را React Aria تأمین میکند.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Tabs } from '@tokapps/tuk';نمونهٔ زنده
فهرست ایدههای فعال.
فهرست ایدههای فعال.
فهرست ایدههای فعال.
فهرست ایدههای فعال.
کد قابل کپی
پایه
import { Icon } from '@tokapps/icons';import { Tabs } from '@tokapps/tuk';const items = [ { id: 'ideas', label: 'ایدهها', icon: <Icon name="product.ideation" size="sm" />, badge: '۱۲', content: <p>فهرست ایدههای فعال.</p> }, { id: 'comments', label: 'نظرها', icon: <Icon name="comment" size="sm" />, content: <p>گفتگوهای اخیر.</p> }, { id: 'archive', label: 'بایگانی', content: <p>موارد بستهشده.</p> }, { id: 'soon', label: 'بهزودی', disabled: true, content: null },];export function ProfileTabs() { return <Tabs items={items} aria-label="بخشهای پروفایل" />;}عرض کامل
import { Tabs } from '@tokapps/tuk';export function FullWidthTabs() { return ( <Tabs fullWidth aria-label="بخشهای پروفایل" items={[ { id: 'ideas', label: 'ایدهها', content: <p>فهرست ایدههای فعال.</p> }, { id: 'comments', label: 'نظرها', content: <p>گفتگوهای اخیر.</p> }, ]} /> );}عمودی با فعالسازی دستی
import { Tabs } from '@tokapps/tuk';export function SettingsTabs() { return ( <Tabs orientation="vertical" keyboardActivation="manual" defaultSelectedKey="general" aria-label="بخشهای تنظیمات" items={[ { id: 'general', label: 'عمومی', content: <p>تنظیمات عمومی.</p> }, { id: 'privacy', label: 'حریم خصوصی', content: <p>تنظیمات حریم خصوصی.</p> }, { id: 'billing', label: 'پرداخت', href: '/settings/billing', content: null }, ]} /> );}کنترلشده
import { useState } from 'react';import { Tabs } from '@tokapps/tuk';export function ControlledTabs() { const [section, setSection] = useState('general'); return ( <Tabs selectedKey={section} onSelectionChange={setSection} aria-label="بخشهای تنظیمات داک" fullWidth items={[ { id: 'general', label: 'کلی', content: <p>تم، جهت، حرکت.</p> }, { id: 'alerts', label: 'هشدارها', content: <p>محل نمایش هشدارها.</p> }, ]} /> );}همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — (الزامی) | فهرست تبها. هر آیتم: کپی کد و کپی کد و کپی کد (الزامی)، کپی کد، کپی کد، کپی کد، کپی کد. |
| کپی کد | کپی کد | — | کلید تب انتخابشده؛ کامپوننت را کنترلشده میکند. |
| کپی کد | کپی کد | اولین تب غیرفعال | تب اولیه در حالت غیرکنترلشده. |
| کپی کد | کپی کد | — | با تغییر تب اجرا میشود. |
| کپی کد | کپی کد · کپی کد | کپی کد | جهت فهرست. در عمودی کلیدهای کپی کد و کپی کد کار میکنند. |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد با فوکوس تب را انتخاب میکند؛ کپی کد با کپی کد یا کپی کد. |
| کپی کد | کپی کد | کپی کد | تبها عرض را مساوی پر میکنند. |
| کپی کد | کپی کد | کپی کد | نام کپی کد برای صفحهخوان. |
| کپی کد | کپی کد | — | مقصد صدای کپی کد برای همین نمونه. |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد همهٔ پنلها را در چاپ نشان میدهد؛ کپی کد کل کامپوننت را پنهان میکند. |
| کپی کد | کپی کد · کپی کد | از محیط | جهت محلی. |
| کپی کد | کپی کد | — | کلاس روی ریشه. |
پراپ کپی کد وجود ندارد: ظاهر تبها یکی است (بند «باید و نباید»). پراپ کپی کد روی Tabs نیست؛ برای بیصدا کردن، کپی کد ندهید و مقصد سراسری ثبت نکنید.
ساختار و اسلاتها
div[data-tds="tabs"][data-orientation][data-full-width]? [data-print] ├─ div[role=tablist][data-part="list"][data-indicator="bubble"] │ ├─ حباب متحرک (::before، از CSS مشترک) │ └─ div[role=tab][data-part="tab"] × N │ ├─ آیکون؟ │ ├─ span[data-part="label"] │ └─ span[data-part="badge"]? └─ div[role=tabpanel][data-part="panel"] × N (فقط پنل فعال نمایش داده میشود)کپی کد، کپی کد، کپی کد، کپی کد و کپی کد بنیان ثابتاند. آیکون، برچسب، نشان و محتوای پنل قابل تغییرند.
همهٔ حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| پیشفرض | کپی کد | متن کپی کد |
| hover | کپی کد | متن کپی کد |
| selected | کپی کد و کپی کد | حباب کپی کد پشت تب؛ متن پررنگ |
| focus-visible | کپی کد | حلقهٔ فوکوس کپی کد |
| disabled | کپی کد و کپی کد | کمرنگ با کپی کد؛ خارج از پیمایش |
| جابهجایی | تغییر کپی کد | حباب با کپی کد و کپی کد به تب بعدی سُر میخورد |
| کاهش حرکت | کپی کد یا کپی کد | جابهجایی فوری |
RTL، کیبورد و صفحهخوان
- RTL: کپی کد و کپی کد در RTL معکوس میشوند. ترتیب تبها از راست است و حباب از همان جهت جابهجا میشود.
- کیبورد: کپی کد (در عمودی کپی کد) حرکت بین تبها؛ کپی کد و کپی کد اولین و آخرین؛ کپی کد وارد کپی کد و سپس پنل. در کپی کد، کپی کد یا کپی کد انتخاب میکند.
- صفحهخوان: کپی کد با کپی کد؛ هر تب کپی کد و کپی کد؛ پنل با کپی کد از تب.
صدا، حرکت، چاپ
- صدا: کپی کد هنگام تغییر تب پخش میشود؛ opt-in است. معادل بصری: حباب و کپی کد.
- حرکت: حباب با توکنهای حرکت جابهجا میشود. تم فقط این حرکت را از راه توکن عوض میکند؛ کپی کد و تنظیم کاربر همیشه برندهاند.
- چاپ: پیشفرض کپی کد؛ همهٔ پنلها در چاپ دیده میشوند.
باید و نباید
باید
- برای بخشهای دارای پنل کپی کد و برای انتخاب مقدار یا نمای همان داده کپی کد بگذارید.
- کپی کد معنادار بدهید؛ برچسب هر تب متن مرئی باشد.
- بیش از حدود ۷ تب نگذارید؛ اگر بیشتر شد، فهرست را کوتاه کنید یا ناوبری دیگری انتخاب کنید.
- هدف لمسی را با کپی کد-معادل (حداقل ۴۴px) نگه دارید.
نباید
- کپی کد را برای انتخاب یک مقدار بدون پنل به کار ببرید (از کپی کد استفاده کنید).
- ظاهر دیگری مثل خط زیرین یا قرص محلی بسازید؛ کپی کد محلی در کپی کد هم باید به کپی کد تبدیل شود.
- رنگ خام، گرادیان یا کپی کد منفی برای نشانگر بنویسید؛ نشانگر از CSS مشترک میآید.
- نشانگر یا حباب را در تم پنهان کنید یا وزن و پسزمینهٔ تب فعال را حذف کنید؛ انتخاب نباید فقط با رنگ نشان داده شود.
- تب را فقط با کلیک قابل دسترس کنید؛ کیبورد باید همان کار را بکند.
موارد استفاده در سامانه
| محل | استفاده |
|---|---|
| شیت داک، تنظیمات سریع | کپی کد: «کلی» و «هشدارها» |
| کپی کد نمونهها و مستندات | کپی کد با کپی کد، کپی کد، کپی کد، کپی کد |
فهرست کامل و وضعیت تبدیل موارد باقیمانده در ARCH.md بند ۱۶ آمده است.
توکنها
- معنایی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- کامپوننتی (ظاهر مشترک): کپی کد (padding، gap، radius، bg، fg، selected-bg، selected-fg، block-size، font-size، transition، disabled-opacity).
- حرکت: کپی کد، کپی کد.
- فهرست مصرفی: کپی کد و کپی کد.