انتقل إلى المحتوى
TopClass UI

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

معيار WCAG 2.2 AA، مفحوص في متصفح حقيقي: axe وحجم الهدف وحلقة التركيز والتباين.

التباين

يُقاس التباين من القيم الحقيقية لمتغيّرات التصميم في كل وضع، كجزء من البناء. وكل قيمة تقع ضمن 0.15 من الحد تُعدّ راسبة.

العنصر, الحد الأدنى
العنصرالحد الأدنى
النص الأساسي والنص الخافت4.5:1
نص النبرة فوق صبغتها الخفيفة4.5:1
حدود عنصر التحكم، على كل سطح يمكن أن يوضع عليه3:1
حلقة التركيز3:1
الأيقونات التي تحمل معنى3:1

حجم الهدف

لا يقل أي عنصر تفاعلي عن 24 × 24 بكسل CSS، ويكبر إلى 44 مع مؤشر اللمس وغيره من المؤشرات غير الدقيقة.

save-button.tsx
import { TOUCH_TARGET } from 'topclassui/classes'

export function SaveButton() {
  return <button type="button" className={TOUCH_TARGET}>حفظ</button>
}

الصنف المشترك الذي يحمله كل عنصر تحكم، ويمكن أن تحمله عناصر التحكم الخاصة بك أيضًا. قيمته: min-h-[var(--tc-target-min,24px)] min-w-[var(--tc-target-min,24px)] pointer-coarse:min-h-[var(--tc-target-coarse,44px)] pointer-coarse:min-w-[var(--tc-target-coarse,44px)]

لكل سحب مسار عبر لوحة المفاتيح

WCAG 2.5.7. يستجيب Slider لمفاتيح الأسهم. ويعرض كلٌّ من Drawer وToast زر إغلاق دائمًا.

التركيز ظاهر دائمًا

حلقة تركيز واحدة على كل عنصر تحكم: إطار CSS خارجي (outline) مع إزاحة، فتُظهر الفجوة الخلفية الحقيقية على أي سطح. ويبلغ --tc-ring تباين 3:1 على كل سطح.

home-link.tsx
import { FOCUS_RING } from 'topclassui/classes'

export function HomeLink() {
  return <a href="/ar" className={FOCUS_RING}>الرئيسية</a>
}

قيمته: outline-none focus-visible:outline-solid focus-visible:outline-(length:--tc-ring-width) focus-visible:outline-offset-(length:--tc-ring-offset) focus-visible:outline-ring

الأنواع تفرض التسميات

يحتاج Input خارج Field إلى id أو aria-label أو aria-labelledby، ويرفض TypeScript أي حقل بدونها.

خطأ
<Input placeholder="البريد الإلكتروني" />
// Type error: id, aria-label or aria-labelledby is required
صواب
import { Field } from 'topclassui/field'
import { Input } from 'topclassui/input'

export function Email() {
  return (
    <Field name="email" label="البريد الإلكتروني">
      {(control) => <Input {...control} type="email" />}
    </Field>
  )
}

الفحص الآلي والفحص اليدوي

الفحص, الطريقة, التوقيت
الفحصالطريقةالتوقيت
التباينcheck-contrast.tsفي كل تشغيل لـ pnpm check
ARIA والأدوارaxe-core في كل مثالفي كل تشغيل لـ pnpm check
حجم الهدفاختبار في المتصفح يقيس كل عنصر قابل للتركيزفي كل تشغيل لـ pnpm check
سلوك لوحة المفاتيحاختبار لكل مكوّن تفاعلي، وفق ممارسات ARIA للتأليف (ARIA Authoring Practices)في كل تشغيل لـ pnpm check
قارئ الشاشةNVDA وVoiceOver، يدويًاقبل كل إصدار
الألوان القسريةوضع التباين العالي في Windows، يدويًاقبل كل إصدار

الثغرات المعروفة

يُقاس التباين في كل بناء. وتُفحص axe وحجم الهدف وحلقة التركيز والنص الطويل داخل عنصر التحكم في متصفح حقيقي على كل مثال، في 3 أوضاع واتجاهين، وللمكوّنات التفاعلية اختبارات للوحة المفاتيح. أما قارئات الشاشة (NVDA وVoiceOver) والألوان القسرية فتُفحص يدويًا، ولم يُنجز ذلك بعد.

وضع الألوان القسرية فحص يدوي. فالتخطيط الذي يعتمد على تعبئة الخلفيات يختفي فيه، لذلك يُرسم كل مكوّن بحدود.
التاليالمكوّنات