{"id":"l-fig-4-2","courseId":"figma-ui-design","lang":"ar","kind":"lesson","summary":"افحص شاشات Steady من حيث التباين، والمعنى المعتمد على اللون وحده، وحجم الأهداف، وترتيب التركيز، وتكبير النص، ودوّن ما يحتاجه المطوّرون كي يصمد التصميم المراعي لإمكانية الوصول أثناء البناء.","html":"<p>نحو رجل من كل اثني عشر لديه شكل من أشكال قصور رؤية الألوان. وكثيرون يستخدمون هواتفهم بنص أكبر، أو بقارئ شاشة، أو بإبهام واحد مرتجف في حافلة، أو تحت شمس ساطعة. لا أحد من هؤلاء حالة هامشية؛ إنهم معًا نسبة كبيرة من مستخدمي Steady، ومعظم ما يساعدهم يجعل التطبيق أفضل للجميع.</p>\n<p>إمكانية الوصول (accessibility) أرخص ما تكون وقت التصميم. فشل التباين يكلّف تغيير لون في Figma، ويكلّف أكثر بكثير بعد أن يُطلق عبر اثنتي عشرة شاشة. في هذا الدرس تُخضِع Steady للفحوص التي تجريها صوفيا قبل أي تسليم.</p>\n<h2 id=\"sec-1\" tabindex=\"-1\">التباين، مرة أخرى، في كل مكان</h2>\n<p>تعلّمت الأرقام في الدرس 1.3 وأعدت فحصها في الوضع الداكن في الدرس 3.4. طبّقها الآن على الأشياء التي يسهل نسيانها:</p>\n<ul>\n<li><strong>حدود عناصر التحكم</strong>: دائرة التعليم غير المعلَّمة مجرّد حلقة. تحتاج 3:1 مقابل سطح الصف، وإلا لن يجدها الناس.</li>\n<li><strong>مؤشّرات التركيز</strong>: حلقة التركيز تحتاج 3:1 مقابل ما يحيط بها.</li>\n<li><strong>الحالات المعطّلة</strong>: تعفي WCAG عناصر التحكم المعطّلة من شرط التباين، لكن الزر المعطّل الذي لا يستطيع أحد قراءته يترك الناس حائرين فيما لا يستطيعون فعله. أبقِ التسمية مقروءة.</li>\n<li><strong>النص فوق الصور أو الرسوم التوضيحية</strong>: قِس مقابل أفتح جزء من الصورة تحت النص.</li>\n</ul>\n<p>أداة فحص التباين في منتقي الألوان في Figma تغطّي الأزواج المنفردة أثناء العمل. وفي خطتي Organization وEnterprise، وقت كتابة هذا الدرس، تستطيع ميزة Check designs أيضًا الإشارة إلى مشكلات التباين عبر تحديد كامل.</p>\n<h2 id=\"sec-2\" tabindex=\"-1\">لا تعتمد على اللون وحده أبدًا</h2>\n<p>أظهر التصميم الأول لـ Steady العادة الفائتة بدائرة تعليم حمراء ولا شيء غيرها. لمن لا يميّز الأحمر من التركوازي، تبدو كل العادات متشابهة. معيار Use of Color في WCAG يشترط ألّا يكون اللون <em>الطريقة الوحيدة</em> لنقل المعنى أبدًا.</p>\n<p>الإصلاح إشارة ثانية: يحصل الـ variant ‏Missed على أيقونة x داخل الدائرة وعلى تعليق “Missed yesterday” تحت الاسم؛ ويحصل Done على علامة صحّ والاسم بلون النص الثانوي. ما زال اللون يساعد، لكن الشكل والكلمات يحملان المعنى. اختبر ذلك بعرض الشاشة بتدرّجات الرمادي (grayscale): إن ظللت قادرًا على التمييز بين الحالات، فقد نجحت.</p>\n<h2 id=\"sec-3\" tabindex=\"-1\">أهداف كبيرة بما يكفي للإبهام</h2>\n<p>تضع WCAG 2.2 حدًّا أدنى في المستوى AA: أهداف تفاعلية لا تقلّ عن <strong>24 × 24 CSS pixels</strong>، أو مسافة كافية حول الأهداف الأصغر. وإرشادات المنصّات تذهب أبعد من أجل الراحة: توصي Apple بـ <strong>44 × 44 نقطة</strong>، ويوصي Material Design بـ <strong>48 × 48 dp</strong>. في تطبيق الهاتف، صمّم وفق إرشادات المنصّة.</p>\n<p>الشكل المرئي ومساحة النقر لا يلزم أن يتطابقا. دائرة التعليم في Steady تبقى بصريًا دائرة بقطر 32 px، لكن الـ component ‏Check button هو frame بحجم 44 × 44 تتوسّطه الدائرة. وحدود الـ frame تخبر المطوّرين بمساحة النقر الحقيقية.</p>\n<figure class=\"diagram\"><svg class=\"diagram-svg\" focusable=\"false\" viewBox=\"0 0 680 230\" role=\"img\" aria-labelledby=\"l-fig-4-2-t1\"><defs><marker id=\"arrow-l-fig-4-2-1\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 z\" class=\"d-arrowhead\"/></marker></defs>\n  <title id=\"l-fig-4-2-t1\">دائرة تعليم بقطر 32 بكسل تتوسّط مربّعًا متقطّعًا بضلع 44 بكسل يحدّد مساحة النقر. وبجانبها هدفان متجاوران بين مساحتي نقرهما 8 بكسل.</title>\n  <rect class=\"d-box d-dashed\" x=\"60\" y=\"40\" width=\"150\" height=\"150\" rx=\"8\"/>\n  <circle class=\"d-box-primary\" cx=\"135\" cy=\"115\" r=\"54\"/>\n  <text class=\"d-label-strong\" x=\"135\" y=\"120\" text-anchor=\"middle\">32 px</text>\n  <text class=\"d-label-muted\" x=\"135\" y=\"214\" text-anchor=\"middle\">مساحة نقر 44 × 44</text>\n  <rect class=\"d-box d-dashed\" x=\"330\" y=\"70\" width=\"100\" height=\"100\" rx=\"6\"/>\n  <circle class=\"d-box-accent\" cx=\"380\" cy=\"120\" r=\"36\"/>\n  <rect class=\"d-box d-dashed\" x=\"458\" y=\"70\" width=\"100\" height=\"100\" rx=\"6\"/>\n  <circle class=\"d-box-accent\" cx=\"508\" cy=\"120\" r=\"36\"/>\n  <path class=\"d-line\" d=\"M430 190 L458 190\"/>\n  <text class=\"d-label-muted\" x=\"444\" y=\"214\" text-anchor=\"middle\">بينهما 8 px</text>\n  <text class=\"d-label-muted\" x=\"444\" y=\"50\" text-anchor=\"middle\">مساحات النقر يجب ألّا تتداخل</text>\n</svg><figcaption>دائرة التعليم المرئية تقع داخل مساحة نقر أكبر</figcaption></figure>\n<aside class=\"callout callout-mistake\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg><span><span class=\"callout-kind\">خطأ شائع</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>أزرار أيقونات صغيرة في الترويسة</span></p>\n<p>أيقونة قلم بحجم 20 px لـ “Edit habit”، على بعد 4 px من أيقونة مشاركة بحجم 20 px، تبدو أنيقة ويصعب إصابتها. لُفّ كل أيقونة في frame بحجم 44 px ودع الـ frames تتجاور. تبقى الأيقونات بالشكل نفسه؛ وتتوقّف النقرات الخاطئة.</p>\n</aside>\n<h2 id=\"sec-4\" tabindex=\"-1\">ترتيب التركيز وحالات التركيز</h2>\n<p>من يستخدمون لوحة المفاتيح أو switch control أو قارئ الشاشة يتنقّلون في الشاشة عنصرًا تلو الآخر. قراران تصميميان يؤثّران فيهم مباشرة.</p>\n<p><strong>حالات التركيز.</strong> كل component تفاعلي يحتاج نمط تركيز مرئيًا، عادةً حلقة بسماكة 2 px بلون يحقّق 3:1. أضف <code dir=\"ltr\">Focused</code> إلى خاصية State في Button وChip وText field وCheck button، فتكون موجودة في المجموعة لا فكرة لاحقة.</p>\n<p><strong>ترتيب التركيز.</strong> يجب أن يتبع الترتيب ترتيب القراءة البصري: في لوحة New habit، هو زر الإغلاق، ثم حقل الاسم، ثم منتقي الأيقونات، ثم شرائح التكرار، ثم مفتاح التذكير، ثم Save habit. عادةً يضبط المطوّرون ذلك افتراضيًا إذا كان التخطيط منطقيًا؛ أما حين يكون تخطيطك غير معتاد، فدوّن الترتيب بعلامات مرقّمة. ملاحظات Figma التوضيحية (annotations) تتضمّن فئة <strong>Accessibility</strong> وقت كتابة هذا الدرس، فتبقى هذه الملاحظات منفصلة عن مواصفات المسافات (الدرس 4.3).</p>\n<h2 id=\"sec-5\" tabindex=\"-1\">الأسماء والتسميات وحجم النص</h2>\n<p>قارئات الشاشة تعلن العناصر بأسمائها. زر الإضافة الذي يحمل أيقونة فقط سيُقرأ “button” ما لم يعطه أحدهم اسمًا، فدوّن ذلك: <em>accessible name: “Add habit”</em>. وحقل النص يحتاج تسمية ظاهرة، “Habit name”، لا نصًا إرشاديًا فقط يختفي حين تبدأ الكتابة.</p>\n<p>وأخيرًا، تذكّر اختبار النص الأكبر بنسبة 30% من الدرس 2.4. يتيح كلٌّ من iOS وAndroid للناس تكبير النص على مستوى النظام كله. الصفوف المبنية بارتفاع Hug ونصوص Auto height تكبر بسلاسة؛ وأي شيء بارتفاع ثابت يُقصّ. ويدخل هنا أيضًا احترام إعداد تقليل الحركة (reduced motion): دوّن تلاشيًا أبسط كبديل لاحتفال الـ streak.</p>\n<aside class=\"callout callout-tip\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\"/><path d=\"M9 18h6\"/><path d=\"M10 22h4\"/></svg><span><span class=\"callout-kind\">نصيحة</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>صمّم الحالة المراعية لإمكانية الوصول أولًا</span></p>\n<p>حين تصمّم component، صمّم حالة التركيز وأكبر حجم نص له في الجلسة نفسها التي تصمّم فيها الحالة الافتراضية. إضافتها لاحقًا تعني العودة إلى كل component، ونادرًا ما يحدث ذلك قبل موعد التسليم.</p>\n</aside>\n<p>مع فحص الشاشات وتدوين الملاحظات عليها، صارت شبه جاهزة للمطوّرين. في الدرس التالي تسلّمها في Dev Mode.</p>\n","toc":[{"id":"sec-1","text":"التباين، مرة أخرى، في كل مكان","level":2},{"id":"sec-2","text":"لا تعتمد على اللون وحده أبدًا","level":2},{"id":"sec-3","text":"أهداف كبيرة بما يكفي للإبهام","level":2},{"id":"sec-4","text":"ترتيب التركيز وحالات التركيز","level":2},{"id":"sec-5","text":"الأسماء والتسميات وحجم النص","level":2}],"takeaways":["يجب ألّا يعتمد المعنى على اللون وحده أبدًا؛ اقرن اللون بأيقونة أو نص أو تغيير في الشكل.","يطلب المستوى AA في WCAG 2.2 أهداف لمس لا تقلّ عن 24 × 24 CSS pixels، بينما توصي Apple بـ 44 نقطة وGoogle بـ 48 dp، فصمّم وفق إرشادات المنصّة.","يمكن أن تكون مساحة النقر للهدف أكبر من شكله المرئي، وهذا يتيح لدائرة تعليم بقطر 32 px أن تقع داخل مساحة نقر 44 px.","كل عنصر تفاعلي يحتاج حالة تركيز (focus) مرئية، ويجب أن يتبع ترتيب التركيز ترتيب القراءة الذي تدوّنه.","الأزرار التي تحمل أيقونة فقط تحتاج accessible name (اسمًا يعلنه قارئ الشاشة)، والحقول تحتاج تسميات ظاهرة، وكلاهما ينتمي إلى ملاحظات التسليم."],"further":[{"title":"Understanding SC 1.4.1 Use of Color","url":"https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html"},{"title":"Understanding SC 2.5.8 Target Size (Minimum)","url":"https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html"},{"title":"Accessibility (Apple Human Interface Guidelines)","url":"https://developer.apple.com/design/human-interface-guidelines/accessibility"},{"title":"Accessibility designing (Material Design 3)","url":"https://m3.material.io/foundations/designing/structure"}],"quiz":[{"q":"<p>يعلّم Steady العادة الفائتة بتحويل دائرة التعليم في الصف إلى الأحمر. ولا يتغيّر شيء آخر. ماذا يطلب منك معيار Use of Color في WCAG أن تضيف؟</p>","options":[{"text":"أحمر أسطع ليبرز أكثر.","why":"أيّ أحمر، مهما كان ساطعًا، يبقى لونًا وحده. ومن لديهم قصور في رؤية الألوان قد لا يميّزونه عن التركوازي أو الرمادي."},{"text":"تلميح (tooltip) يظهر عند تمرير المؤشّر.","why":"الهواتف لا تعرف تمرير المؤشّر، ويجب أن يكون المعنى ظاهرًا دون خطوات إضافية."},{"text":"إشارة ثانية لا تعتمد على اللون، مثل أيقونة x داخل الدائرة وكلمة “Missed” تحت الاسم.","why":"صحيح. يمكن للّون أن يدعم المعنى، لكن يجب أن يحمله شكل أو نص أيضًا."},{"text":"لا شيء، لأن الأحمر يُفهم عالميًا على أنه تحذير.","why":"معنى الأحمر ثقافي، وكثيرون لا يستطيعون رؤيته بشكل موثوق. المعيار يطلب إشارة لا تعتمد على اللون."}],"answer":2},{"q":"<p>دائرة التعليم مرسومة بحجم 32 × 32 px. كيف تحقّق توصية Apple بـ 44 نقطة دون أن تبدو أكبر؟</p>","options":[{"text":"اجعل الـ component ‏Check button ‏frame بحجم 44 × 44 تتوسّطه الدائرة بقطر 32 px.","why":"صحيح. حدود الـ component تصبح مساحة النقر، والمطوّرون ينفّذون مساحة النقر الأكبر منها."},{"text":"كبّر الدائرة إلى 44 px.","why":"هذا يحقّق الحجم لكنه يغيّر التصميم البصري. يمكنك الحصول على الأمرين بـ frame أكبر غير مرئي."},{"text":"اتركها، لأن 32 px تتجاوز بالفعل الحدّ الأدنى في WCAG وهو 24 px.","why":"تتجاوز الحدّ الأدنى للمستوى AA، لكن إرشادات المنصّة للنقر المريح أكبر، وSteady تطبيق هاتف."},{"text":"أضف ملاحظة تطلب من المطوّرين تسهيل النقر عليها.","why":"الملاحظة المبهمة تترك الحجم للتخمين. بناء مساحة النقر داخل الـ component يجعلها دقيقة."}],"answer":0},{"q":"<p>مستخدم يعتمد على لوحة المفاتيح أو على switch control يتنقّل في لوحة New habit. أيّ مُخرَج تصميمي يساعد المطوّرين على ضبط الترتيب بشكل صحيح؟</p>","options":[{"text":"حجم خط أكبر لعنوان اللوحة.","why":"الحجم يؤثّر في التسلسل البصري، لا في الترتيب الذي ينتقل به التركيز."},{"text":"نسخة من اللوحة بالوضع الداكن.","why":"الـ modes تغيّر الألوان، لا ترتيب التنقّل."},{"text":"انتقال Smart animate بين الحقول.","why":"الحركة لا تخبر أحدًا أيّ عنصر يتلقّى التركيز تاليًا."},{"text":"ملاحظات مرقّمة لترتيب التركيز على اللوحة، مع حالة تركيز مصمّمة لكل عنصر تحكم.","why":"صحيح. يرى المطوّرون الترتيب المقصود ويعرفون بالضبط كيف يبدو التركيز."}],"answer":3},{"q":"<p>لماذا يجب أن يكون لحقل النص في New habit تسمية ظاهرة فوقه، لا نص إرشادي داخله فقط؟</p>","options":[{"text":"لأن النص الإرشادي غير مسموح في حقول النص في Figma.","why":"يتيح لك Figma تصميم النص الإرشادي بحرية. المشكلة في طريقة استخدام الناس للحقل."},{"text":"لأن النص الإرشادي يختفي بمجرّد أن يبدأ أحدهم الكتابة، فيفقد الحقل تعليماته، وألوان النص الإرشادي الفاتحة تفشل غالبًا في التباين.","why":"صحيح. التسمية الدائمة تُبقي الغرض ظاهرًا وتعطي قارئات الشاشة اسمًا موثوقًا."},{"text":"لأن التسميات تجعل الحقل أطول، وهذا يحسّن التخطيط.","why":"الارتفاع أثر جانبي لا سبب. السبب أن النصوص الإرشادية تختفي وكثيرًا ما تكون باهتة أكثر من اللازم."}],"answer":1}],"exercise":{"kind":"fill","language":"text","template":"Steady accessibility checklist, New habit sheet\n\nTargets\n  WCAG 2.2 AA minimum target size        {{0}} CSS px (each side)\n  Apple recommendation (iOS build)       {{1}} pt (each side)\n  Material recommendation (Android)      {{2}} dp (each side)\n\nContrast\n  \"Habit name\" label, 15 px              {{3}}:1\n  Focus ring against the sheet           {{4}}:1\n\nMeaning\n  Missed state = red circle + x icon + the word \"Missed\"\n  (never {{5}} alone)","blanks":[{"answers":["24"]},{"answers":["44"]},{"answers":["48"]},{"answers":["4.5"]},{"answers":["3","3.0"]},{"answers":["color","colour"]}],"title":"أكمل قائمة فحص إمكانية الوصول","prompt":"<p>قبل تسليم لوحة New habit، تملأ صوفيا قائمة الفحص هذه. أكملها بالأرقام من WCAG 2.2 ومن إرشادات المنصّات، وبالكلمة الواحدة التي تُكمل القاعدة الأخيرة (بالإنجليزية كما تظهر في القائمة). أرقام فقط في الفراغات الرقمية.</p>\n","hints":["الحدّ الأدنى لحجم الهدف في المستوى AA من WCAG أصغر من توصية أيّ من المنصّتين.","تسمية بحجم 15 px نص عادي. وحلقة التركيز مؤشّر بصري غير نصي.","الأهداف: 24 و44 و48. التباين: 4.5 و3. والقاعدة تتعلّق باللون (color)."],"explanation":"<p>المعيار SC 2.5.8 في WCAG 2.2 يضع الحدّ الأدنى للمستوى AA عند <strong>24 × 24</strong> CSS px (أو مسافة كافية حول الأهداف الأصغر). توصي Apple بـ <strong>44 × 44</strong> نقطة، ويوصي Material بـ <strong>48 × 48</strong> dp؛ وفي تطبيق الهاتف صمّم وفق رقم المنصّة. التسمية بحجم 15 px نص عادي، فتحتاج <strong>4.5:1</strong>. وحلقة التركيز مؤشّر غير نصي وتحتاج <strong>3:1</strong> مقابل ما يحيط بها. ويقول المعيار SC 1.4.1 إن المعنى لا يُنقل أبدًا بـ <strong>color</strong> (اللون) وحده، ولهذا تحمل حالة Missed أيضًا أيقونة وكلمة.</p>\n","checkLabels":{}},"words":744,"readMinutes":4}