تخطَّ إلى المحتوى

Tooltip

تلميح قصير لعنصر، عند التمرير وتركيز لوحة المفاتيح. فاتح أو داكن، مع عنوان وسهم اختياريين، وموضع ينعكس في RTL.

الإصدار 0.4.1 ·

المواضع

التثبيت

bunx --bun shadcn@latest add @dga/tooltip

الاستخدام

page.tsx
tsx
import { Button } from "@/components/ui/button";
import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from "@/components/ui/tooltip";

export function SaveHint() {
  return (
    <TooltipProvider>
      <Tooltip>
        <TooltipTrigger render={<Button variant="outline" />}>المسودات</TooltipTrigger>
        <TooltipContent side="end" title="المسودات">يفتح المسودات المحفوظة.</TooltipContent>
      </Tooltip>
    </TooltipProvider>
  );
}

استخدم Tooltip لتسمية زر بأيقونة فقط أو لإضافة تلميح قصير لعنصر. اجعله جملة واحدة. فهو تلميح لمستخدمي الفأرة ولوحة المفاتيح المبصرين، وليس مكانًا للروابط أو الأزرار أو أي شيء يجب أن يقرأه الناس: فلا يعتمد عليه قارئ الشاشة ولا شاشات اللمس. وضع TooltipProvider حول التطبيق أو شريط الأدوات ليفتح التلميح الثاني فورًا أثناء انتقال المؤشر. ولعلامة الاستفهام التي تشرح تسمية استخدم TooltipHelp: فهي تفتح بالنقر واللمس أيضًا ويقرؤها قارئ الشاشة.

البنية

  • الزر: العنصر الذي يصفه التلميح. أي زر أو رابط أو حقل.
  • الفقاعة: عرضها 240px على الأكثر (و160px على الأقل)، وانحناؤها radius-xs وshadow-lg.
  • العنوان (اختياري): بخط عريض فوق النص.
  • السهم: الرأس بحجم 14px نحو العنصر. أوقفه بـ showArrow={false}.
  • أيقونة المساعدة: TooltipHelp، زر علامة استفهام بحجم 20px يفتح الفقاعة نفسها بوصفها popover.

أمثلة

النمطان

قيمة tone إما light (أبيض) أو dark (التلميح المعكوس). وفي الوضع الداكن يتبادلان. مرّر على الأزرار أو ركّز عليها.

النمطان

أيقونة المساعدة

TooltipHelp بجانب تسمية. وهو زر حقيقي له اسم يفتح عند التمرير والتركيز والنقر واللمس، فيصل إلى النص مستخدمو لوحة المفاتيح واللمس وقارئ الشاشة.

أيقونة المساعدة

السهم والعنوان والتعطيل

يُفتح التلميح بالتمرير وبتركيز لوحة المفاتيح، ويُغلق عند فقدان التركيز أو بمفتاح Escape أو عند مغادرة المؤشر. القيمة showArrow={false} تُسقط السهم، وtitle يضيف سطرًا أول عريضًا للنص الأطول، وdisabled على Tooltip يوقفه مع إبقاء الزر.

السهم والعنوان والتعطيل

RTL

يقبل side القيمتين start وend إضافة إلى top وbottom. وهما جهتا النص، فيفتح end إلى اليسار في الصفحات العربية ويتبعه السهم. وalign="start" يحاذي الحافة اليمنى للعنصر في RTL.

LTR (الإنجليزية)
RTL (العربية)

إمكانية الوصول

المفتاحالإجراء
Tabتركيز العنصر يفتح التلميح. والانتقال عنه يغلقه.
Escapeيغلق التلميح دون تحريك التركيز.
Enterعلى أيقونة المساعدة يفتح الشرح (ويغلقه ثانية).
  • التلميح لمستخدمي الفأرة ولوحة المفاتيح المبصرين (وتقول Base UI الشيء نفسه): فضع كل ما هو مهم في نص الصفحة. ويحتاج العنصر بأيقونة فقط إلى aria-label لأن التلميح لا يسمّيه.
  • TooltipHelp عبارة عن popover، فيفتح أيضًا بالنقر وEnter واللمس، ويُعلَن بوصفه نافذة منبثقة بعنوانها ونصها، ويغلقه Escape. وله اسم (label).
  • يفتح عند تركيز لوحة المفاتيح وعند التمرير، ويبقى مفتوحًا ما دام المؤشر على الفقاعة، ويغلقه Escape (WCAG 1.4.13: قابل للإغلاق وللتمرير ودائم).
  • النص بنسبة 4.5:1 أو أفضل على النمطين، فاتحًا وداكنًا. وأيقونة المساعدة 3:1 أو أفضل على كل سطح ولها حلقة تركيز.
  • تظهر الفقاعة بالتلاشي؛ ومع تقليل الحركة تظهر دون حركة.

مرجع API

Tooltip

تلميح قصير لعنصر، يظهر عند التمرير وعند تركيز لوحة المفاتيح (في DGA: Tooltip). التلميحات لمستخدمي الفأرة ولوحة المفاتيح المبصرين: فلا يعتمد عليها قارئ الشاشة ولا شاشات اللمس، فلا تحمل النسخة الوحيدة مما يحتاجه الناس، وليست للمحتوى التفاعلي. ويحتاج العنصر بأيقونة فقط إلى `aria-label`.

خصائص Tooltip
الخاصيةالنوعالقيمة الافتراضية
boolean

حالة الفتح بتحكّم خارجي.

لا توجد قيمة افتراضية
boolean

مفتوح في البداية (دون تحكم).

لا توجد قيمة افتراضية
boolean

لا يفتح أبدًا.

لا توجد قيمة افتراضية

يقبل أيضًا جميع خصائص Base UI Popover (يفتح في نافذة جديدة).

TooltipContent

الفقاعة. عرضها 240px على الأكثر وتبقى بعيدة عن حواف الشاشة.

خصائص TooltipContent
الخاصيةالنوعالقيمة الافتراضية
"light" | "dark"

`light` أبيض (neutral-800 في الوضع الداكن)؛ و`dark` التلميح المعكوس.

"light"
string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<AwaitedReactNode>

عنوان بخط عريض فوق النص.

لا توجد قيمة افتراضية
"top" | "bottom" | "start" | "end"

الجهة التي يفتح عليها. `start` و`end` جهتا النص، فتتبادلان في الصفحات العربية.

"top"
boolean

يعرض السهم الذي يشير إلى العنصر.

true

يقبل أيضًا جميع خصائص Base UI Popover (يفتح في نافذة جديدة).

TooltipHelp

أيقونة المساعدة في DGA: زر بعلامة استفهام بحجم 20px بجانب تسمية، يفتح شرحًا في فقاعة التلميح نفسها. وهو Popover يفتح أيضًا عند التمرير لا Tooltip: فالزر موجود ليعرض النص، فيجب أن يستطيع فتحه وقراءته مستخدمو لوحة المفاتيح واللمس وقارئ الشاشة.

خصائص TooltipHelp
الخاصيةالنوعالقيمة الافتراضية
"light" | "dark"

`light` أبيض (neutral-800 في الوضع الداكن)؛ و`dark` التلميح المعكوس.

"light"
string

الاسم الذي يقرؤه قارئ الشاشة للزر. ترجمه في الصفحات العربية.

"More information"
string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<AwaitedReactNode>

عنوان بخط عريض فوق النص.

لا توجد قيمة افتراضية
"top" | "bottom" | "start" | "end"

الجهة التي يفتح عليها. `start` و`end` جهتا النص، فتتبادلان في الصفحات العربية.

"top"
string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<AwaitedReactNode>

الشرح. يفتح عند التمرير والتركيز والنقر واللمس، ويستطيع قارئ الشاشة قراءته.

لا توجد قيمة افتراضية

يقبل أيضًا جميع خصائص Base UI Popover (يفتح في نافذة جديدة).

TooltipProvider

يحدد مدة التمرير قبل فتح التلميح، ويتيح فتح التالي فورًا عند الانتقال بين العناصر. ضعه حول الصفحة أو شريط أدوات.

خصائص TooltipProvider
الخاصيةالنوعالقيمة الافتراضية
number

بالملّي ثانية قبل فتح التلميح عند التمرير. الافتراضي 300.

300

يقبل أيضًا جميع خصائص Base UI Popover (يفتح في نافذة جديدة).

TooltipTrigger

العنصر الذي يصفه التلميح. اعرض الزر أو الرابط الخاص بك عبر `render`.

يقبل أيضًا جميع خصائص Base UI Popover (يفتح في نافذة جديدة).

الاختلافات عن DGA

  • ترسم DGA الموضع بهامش مادي 14px لكل اتجاه. أما هنا فـ start وend منطقيتان، فتتبادلان بالعربية ويتبعهما السهم.
  • ويفتح أيضًا عند تركيز لوحة المفاتيح. وتُبنى أيقونة المساعدة popover يفتح عند التمرير ليقرأها مستخدمو اللمس وقارئ الشاشة أيضًا؛ أما Figma فتعرض التمرير فقط.
التغييرالسبب
Tooltip: placement and behaviourA tooltip that shows only on hover is invisible to keyboard users, and a physical margin would sit on the wrong side in RTL. Base UI also advises that an info icon whose purpose is to show the text be a popover, so touch and screen reader users can read it.

عرض جميع الاختلافات (1) لهذا المكوّن أسباب الاختلافات مكتوبة بالإنجليزية.

التباين

26 زوجًا لونيًا فُحص · جميعها تجتاز WCAG 2.1 AAعرض 7 حالة
النمط / الحالةالفاتحالداكن
light / heading14.53:1 AAA14.42:1 AAA
light / text10.17:1 AAA10.95:1 AAA
dark / heading13.91:1 AAA14.00:1 AAA
dark / text13.20:1 AAA10.57:1 AAA
help icon4.57:1 3:19.38:1 3:1
help icon, hovered and open17.31:1 3:115.87:1 3:1
focus ring17.31:1 3:117.49:1 3:1

يحتاج النص إلى تباين 4.5:1، والأيقونات وحلقات التركيز إلى 3:1. الحالات المعطّلة مستثناة. تقرير التباين الكامل