برچسب راهنما — Tooltip
Tooltip یک حباب کوتاه و غیرتعاملی است که با hover یا فوکوس صفحهکلید روی یک محرک ظاهر میشود، برای نام یک دکمهٔ فقطآیکون یا توضیح یک اصطلاح. محتوای آن فوکوس نمیگیرد، روی لمس دیده نمیشود و بسته به کپی کد و کپی کد باز و بسته میشود. ساختار حباب، ارتباط کپی کد با محرک و بستن با کپی کد ثابت است؛ ظاهر آن فقط از توکنهای overlay میآید.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Tooltip } from '@tokapps/tuk';نمونهٔ زنده
کد قابل کپی
پایه: نام دکمهٔ فقطآیکون
import { Button, Tooltip } from '@tokapps/tuk';import { Icon } from '@tokapps/icons';export function NotificationButton() { return ( <Tooltip content="اعلانها"> <Button variant="ghost" aria-label="اعلانها" icon={<Icon name="notification" />} /> </Tooltip> );}حالت پیشرفته: جهت، تأخیرها و فاصله
import { Button, Tooltip } from '@tokapps/tuk';export function SaveDraftButton() { return ( <Tooltip content="ذخیرهٔ پیشنویس در این دستگاه" placement="bottom start" delay={300} closeDelay={100} offset={6}> <Button variant="secondary">ذخیره</Button> </Tooltip> );}حالت غیرفعال: توضیح بدون نمایش
import { Button, Tooltip } from '@tokapps/tuk';export function SubmitHint({ canSubmit }: { canSubmit: boolean }) { return ( <Tooltip content="ابتدا فیلدهای الزامی را تکمیل کنید" disabled={canSubmit}> <Button variant="primary">ثبت ایده</Button> </Tooltip> );}همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — (الزامی) | متن کوتاه و غیرتعاملی. اطلاعات ضروری را فقط در Tooltip نگذارید. |
| کپی کد | کپی کد | — (الزامی) | محرک فوکوسپذیر (دکمه، لینک و مانند آن). |
| کپی کد | کپی کد (React Aria) | کپی کد | مکان نسبت به محرک؛ مقادیر منطقی مانند کپی کد پشتیبانی میشوند. |
| کپی کد | کپی کد (ms) | کپی کد | تأخیر نمایش پس از hover. |
| کپی کد | کپی کد (ms) | کپی کد | تأخیر بستن پس از خروج اشارهگر. |
| کپی کد | کپی کد | کپی کد | فاصله از محرک. |
| کپی کد | کپی کد | کپی کد | اگر کپی کد باشد Tooltip نمایش داده نمیشود. |
| کپی کد | کپی کد (کپی کد یا کپی کد) | کپی کد | رفتار چاپ؛ پیشفرض پنهان است (ر.ک. بخش چاپ). |
| کپی کد | کپی کد | — | جهت صریح؛ بدون مقدار، جهت از ساختار صفحه میآید. |
| کپی کد | کپی کد | — | کلاس روی حباب. |
پراپهای بیشتری در کپی کد تعریف نشدهاند.
ساختار و اسلاتها
ترتیب اجزا: کپی کد و در کنار آن حباب کپی کد با محتوای کپی کد. حباب اسلات کپی کد ندارد و یک بلوک متنی یکپارچه است.
- بنیان ثابت: حباب کپی کد با کپی کد و کپی کد · نقش کپی کد (از React Aria) · کپی کد روی محرک · محرک فوکوسپذیر از طریق کپی کد (بدون press).
- قابلتغییر: کپی کد، کپی کد، کپی کد روی حباب، و توکنهای کپی کد.
همهٔ حالتها
| حالت | نشانه (data-attribute یا prop) | نمایش |
|---|---|---|
| پیشفرض (بسته) | بدون کپی کد یا کپی کد | حباب دیده نمیشود. |
| hover روی محرک | پس از کپی کد میلیثانیه | حباب باز میشود. |
| فوکوس صفحهکلید روی محرک | فوکوس با کپی کد | حباب بدون تأخیر باز میشود. |
| visible | کپی کد · کپی کد · کپی کد روی محرک | حباب با محو و بزرگشدن کوچک ظاهر میشود. |
| exiting | کپی کد | حباب محو میشود و پس از آن حذف میشود. |
| focus-visible روی محرک | کپی کد (حلقهٔ کپی کد) | حلقهٔ فوکوس روی محرک دیده میشود؛ خود حباب فوکوس نمیگیرد. |
| disabled | prop کپی کد | Tooltip هیچوقت باز نمیشود. |
| کپی کد (پیشفرض) | در چاپ پنهان است. | |
| کاهش حرکت | کپی کد یا کپی کد | بدون انیمیشن ورود و خروج. |
قرارداد پوشش (Overlay Contract)
- دام فوکوس: Tooltip فوکوس نمیگیرد و دام فوکوس ندارد؛ محرک فوکوسپذیر همچنان فوکوس را نگه میدارد.
- Escape: Escape حباب باز را میبندد، بیآنکه مودال والد بسته شود.
- پسزمینه (backdrop): پرده ندارد؛ با خروج اشارهگر یا فوکوس، یا با Escape بسته میشود.
- قفل اسکرول: قفل اسکرول ندارد؛ موقعیت با اسکرول محرک بهروز میشود یا حباب بسته میشود.
- نمایش واکنشگرا: در موبایل از کپی کد یا برگهٔ زندهٔ داک (کپی کد) استفاده کنید؛ حباب فقط برای مکانیابی نسبت به محرک است.
- کشیدن برای بستن: ندارد.
- تودرتو: درون مودال دیده میشود، چون z-index آن بالاتر از مودال و شناورهاست.
تغییرات مجاز برای توسعهدهنده
- موقعیت و زمانبندی: کپی کد (مقادیر React Aria)، کپی کد، کپی کد، کپی کد.
- وضعیت: کپی کد برای توقف نمایش.
- محتوا: هر کپی کد کوتاه و غیرتعاملی در کپی کد. متن را در کد ترجمهپذیر نگه دارید.
- نقاط توسعه: کپی کد روی حباب؛ توکنهای سطح کامپوننت کپی کد، کپی کد، کپی کد و کپی کد؛ کپی کد؛ کپی کد.
- variant و size: فقط یک ظاهر (کپی کد) و یک اندازه (کپی کد) وجود دارد.
تغییرات ممنوع (بنیان ثابت)
- ساختار DOM حباب و نقش کپی کد از React Aria.
- ارتباط کپی کد بین محرک و حباب.
- محرک باید فوکوسپذیر باشد؛ Tooltip روی عنصر غیرفوکوسپذیر کار نمیکند.
- Tooltip نباید فوکوس بگیرد یا دام فوکوس بسازد.
- رفتار کپی کد و بستن با خروج اشارهگر یا فوکوس.
- حذف انیمیشن در کپی کد.
- هدف لمسی ۴۴px برای محرک (در قرارداد a11y ثبت شده است).
- هیچ صدایی برای Tooltip تعریف نشده و نباید افزوده شود.
RTL، کیبورد و صفحهخوان
- RTL: ویژگیهای منطقی (inline/block) و کپی کد. کپی کد منطقی است؛ آیکونهای جهتدار داخل محرک در RTL برمیگردند.
- کیبورد: فوکوس روی محرک حباب را نمایش میدهد؛ کپی کد آن را میبندد. کپی کد از محرک عبور میکند.
- صفحهخوان: محتوای حباب از طریق کپی کد بهعنوان توضیح محرک خوانده میشود؛ نام محرک از خود محرک میآید. برای دکمهٔ فقطآیکون، کپی کد روی محرک الزامی است.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: Tooltip بیصداست؛ هیچ رویداد صوتی ندارد (کپی کد) و hover هرگز صدا ایجاد نمیکند.
- حرکت: نام معنایی کپی کد با خواص کپی کد و کپی کد. با کپی کد یا کپی کد بدون انیمیشن است.
- چاپ: پیشفرض کپی کد و در چاپ پنهان است. در کد کپی کد قاعدهٔ کپی کد بدون شرط کپی کد حباب را پنهان میکند؛ یعنی کپی کد عملاً اثری ندارد.
توکنها
- فایل توکنهای کامپوننتی: کپی کد (گروه overlays؛ این کامپوننت توکن کپی کد اختصاصی ندارد).
- توکنهای سطح کامپوننت مصرفی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد (= modal + 2)، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد و سایر موارد در کپی کد.
- توکنهای معنایی مصرفی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- فهرست کامل: کپی کد.
قرارداد ARCH
- آیکون داخل محرک فقط با کپی کد و نام معنایی (مثلاً کپی کد) تعیین میشود؛ مسیر asset مستقیم در کد مصرفکننده نمیآید.
- تم فقط حرکت و توکنهای مجاز را تغییر میدهد؛ ساختار DOM و ARIA ثابت است.
- Tooltip gesture ندارد؛ معادل صفحهکلید فوکوس است.
نکات
- برای محتوای تعاملی یا بلند از Popover استفاده کنید.
- برای کنشهای ثانویهٔ یک ناحیه از ContextMenu استفاده کنید؛ Tooltip جایگزین منوی کنش نیست.
- اگر اطلاعی ضروری است، در متن صفحه یا در Toast هم نمایش دهید؛ روی لمس Tooltip دیده نمیشود.