إمكانية الوصول
متطلبات إمكانية الوصول التي يبنيها Tanrei في الرموز ومواصفات المكوّنات، والفحوص التي تفرضها.
إمكانية الوصول في Tanrei مجموعة قيود على النظام نفسه. يرفض بناء الرموز (tokens) إنتاج مخطط لوني يخفق في التباين، ولا تصحّ مواصفة مكوّن بلا دوره وجدول مفاتيحه وضمان هدفه.
يقيس بناء الرموز كل مخطط لوني، الفاتح والداكن عند التباين القياسي والمتوسط والعالي، بهذه العتبات، ويفشل حين يقصر عنها زوج:
| المحتوى | التباين القياسي والمتوسط | التباين العالي |
|---|---|---|
| النص، والأيقونات المرسومة بلون محتوى | 4.5:1 | 7:1 |
| علامة حالة على حاويتها اللونية الخاصة | 3:1 | 3:1 |
| الحدود والرسوم اللازمة لتمييز عنصر تحكم أو تشغيله | 3:1 | 3:1 |
| حلقة التركيز مقابل الأسطح المجاورة | 3:1 | 3:1 |
لا عتبة أدنى للنص الكبير. تقبل WCAG تباينًا أقل للنص الذي يبلغ نحو 24px بالوزن العادي، أو 19px بالوزن العريض، فما فوق، لكن البناء يُلزم كل أدوار النص بنسبة 4.5:1، و 7:1 عند التباين العالي: فدور اللون لا يعرف الحجم الذي سيُستخدم به.
العناصر المعطَّلة والزينة الخالصة معفاة، وكذلك الخط الرفيع بالدور outline-variant عند التباين القياسي. وهذا الإعفاء هو السبب في أن الحدّ الذي يكون العلامة الوحيدة على عنصر تحكم يجب أن يستخدم outline لا outline-variant.
تصحّ هذه الشروط لكل سمة عند كل مستوى تباين، أي ست تركيبات في المجموع، وإلا فشل البناء:
- كل زوج أدوار
(X, on-X)، وكل دور نص (on-surfaceوon-surface-variantوlinkولون أي غرض) على كل دور سطح، لا يقل عن 4.5:1، ولا يقل عن 7:1 في المخططين عاليي التباين؛ - لون كل حالة لا يقل عن 3:1 مقابل حاويتها اللونية الخاصة؛
outlineلا يقل عن 3:1 مقابل كل دور سطح؛- في النظام الافتراضي عند التباين المتوسط والعالي،
outline-variantلا يقل عن 3:1 و 4.5:1 مقابل كل دور سطح، ويبقىoutlineأقوى منه؛ focus-ringلا يقل عن 3:1 مقابل الأسطح.
تمنع قواعد المشروع تخفيف عتبة لكي ينجح فحص.
The least sizes of what a person presses. minimum is the least height (and, for an icon-only control, width) anything pressable is drawn at; touch and pointer are the least hit areas, which a control reaches past what it draws where it stands alone.
| الرمز | القيمة | معاينة |
|---|---|---|
--tanrei-sys-target-minimum | 32px | |
--tanrei-sys-target-pointer | 44px | |
--tanrei-sys-target-spacing | 8px | |
--tanrei-sys-target-touch | 48px |
مولَّد من design/tokens/tanrei.light.tokens.json, tokens/sys/measure.tokens.json
الحجم المرئي ليس مساحة اللمس. ارتفاع الزر الصغير في Tanrei هو 32 وحدة، وهذا يناسب شريط أدوات كثيفًا، لكنه يستجيب مع ذلك على امتداد 48 وحدة على الأقل للّمس و 44 للمؤشر. تمدّ المكوّنات مساحة لمسها على نحو غير مرئي، وتُبقي 8 وحدات على الأقل بين الأهداف المتجاورة. تعلن كل مواصفة هذا الضمان، وتختبره كل منصة.
يعرض كل مكوّن تفاعلي مؤشر التركيز المكوَّن من فجوة ثم حلقة عند التركيز بلوحة المفاتيح أو بالتقنيات المساعدة، فورًا وبلا حركة. يتبع ترتيب التركيز ترتيب القراءة. وتخرج المكوّنات المعطَّلة من ترتيب التركيز.
تحتوي مواصفة كل مكوّن على جدول بالمفاتيح والإجراءات، يُعرض في صفحة توثيقه تحت إمكانية الوصول. والمنصات التي تدعم لوحة مفاتيح مادية تنفّذ الجدول بحذافيره.
يجب أن تبقى الواجهات صالحة للاستخدام والنص عند 200%. تكبر الحاويات مع نصها، وتلتفّ التسميات على أسطر قبل أن تُقتطع، ولا شيء يعتمد على ارتفاع ثابت ليسع سطرًا من النص. وتستخدم التنفيذات الأصلية آلية النص القابل للتكبير في كل منصة.
حين يطلب النظام تقليل الحركة، تُزال الحركة المكانية أو يحلّ محلّها تلاشٍ وجيز، ولا يتكرر شيء في حلقة. انظر الحركة.
تسمّي المواصفة دور WAI-ARIA للمكوّن وطريقة تكوين اسمه المتاح للتقنيات المساعدة. وتقابل كل منصة الدور بنظيره الأصلي: صفات إمكانية الوصول (accessibility traits) في SwiftUI، وخصائص الدلالات (semantics) في Compose و Flutter، و accessibilityRole في React Native. وعلى الويب يفضّل Tanrei العناصر الأصلية داخل shadow root، حتى ترى المتصفحات وأدوات الاختبار دلالات حقيقية.
| المنصة | الفحص الآلي |
|---|---|
| Web | axe-core في Playwright |
| SwiftUI | تدقيق إمكانية الوصول في XCTest |
| Compose | فحوص Accessibility Test Framework |
| Flutter | مطابِقات meetsGuideline |
| React Native | تأكيدات الدور والتسمية، مع تدقيقات أصلية عبر تطبيق المعرض |
ملاحظة
تلتقط الفحوص الآلية قلّة من المشكلات الحقيقية. هي حدّ أدنى. استخدم قارئ شاشة ولوحة مفاتيح مع كل ما تبنيه بهذه المكوّنات.