المحتوى
التسمية اسم قصير بلا علامات ترقيم، لا جملة كاملة أبدا. سطر المساعدة الاختياري عبارة قصيرة ثانوية لا تكرر التسمية. رسالة الخطأ تسمي المتطلب الدقيق الذي فشل، لا رسالة عامة.
لا رسالة خطأ عامة
المكونات
مربع قابل للمس يبدّل تحديدا فرديا (نعم/لا)، أو يلخّص كأداة أب تحديدا جزئيا لمجموعة عبر شرطة غير محدد. يُرافقه دائما تسمية.
محاور المتغيرات في فيغما
مربع الاختيار هو الطريقة الأساسية لتحديد عنصر واحد أو أكثر من قائمة، أو لتلخيص تحديد جزئي لمجموعة فرعية عبر أداة أب. يحمل دائما حالة واضحة غير معتمدة على اللون وحده.
| الحالة | المظهر |
|---|---|
| default | حدود رمادية فاتحة، بلا تعبئة. |
| checked | تعبئة زرقاء أساسية مع علامة صح بيضاء. |
| indeterminate | تعبئة زرقاء مع شرطة بيضاء، تحديد جزئي لمجموعة. |
| focus | حلقة تركيز حول المربع، تُبنى برمز brand.primary. |
| error | لون أحمر مع رسالة مضمنة تسمي المتطلب. |
| disabled | تعبئة رمادية باهتة، غير قابل للتفاعل. |
يتوفر بشكلين: مربع (زاوية دائرية 4 بكسل) هو الشكل الافتراضي، ودائري كمعالجة بديلة. كلا الشكلين يدعمان كل الحالات أعلاه.
| الخاصية | النوع | الافتراضي |
|---|---|---|
| checked | boolean | false |
| indeterminate | boolean | false |
| disabled | boolean | false |
| error | boolean | false |
| shape | square | circle | square |
| label | string | — |
| description | string | — |
indeterminate يُستخدم فقط على مربع أب يلخّص تحديدا جزئيا لمجموعة أبناء، ويظل يحمل قيمة checked حقيقية عند إرسال النموذج.
يعرّف مربع الاختيار سبع حالات: الافتراضية، والتحويم، والمحدد، وغير المحدد جزئيا، والتركيز، والمعطّل، والخطأ.
مربع الاختيار قابل للتركيز بلوحة المفاتيح ويبدّل حالته بمفتاح Space، وتُعلن حالته (محدد، وسطي، معطّل) عبر aria-checked لتقنية المساعدة. النقر يعمل على كامل الصف (المربع والتسمية والوصف) لا المربع وحده، فالنقر على التسمية يبدّل التحديد أيضا. عند التحويم أو التركيز تظهر حلقة واضحة مبنية من brand.primary، وتتبدّل التعبئة عبر رموز الحركة (feedback). عند التعطيل يفقد التفاعل ولا يستجيب للمس.
التسمية اسم قصير بلا علامات ترقيم، لا جملة كاملة أبدا. سطر المساعدة الاختياري عبارة قصيرة ثانوية لا تكرر التسمية. رسالة الخطأ تسمي المتطلب الدقيق الذي فشل، لا رسالة عامة.
لا رسالة خطأ عامة
الاتجاه منطقي: يبقى المربع عند حافة البداية والتسمية بعده في كل من الاتجاهين، والمنصة تعكس الموضع تلقائيا. علامة الصح نفسها ثابتة ولا تُعكس أبدا.
| الدور | الرمز | القيمة |
|---|---|---|
| التعبئة عند التحديد | brand.primary | #1B79F5 |
| التعبئة عند الضغط | brand.primary-hover | #3399FF |
| علامة الصح | brand.primary-on | #EEF8FF |
| حدود غير المحدد | brand.hairline | #EDEDF1 |
| حلقة التركيز | brand.primary | #1B79F5 |
| لون الخطأ | brand.danger-out | #FF3450 |
| درجة الخطأ الفاتحة | color.red-ribbon.100 | #FFE2E4 |
| تعبئة المعطّل | color.black-oud.50 | #F7F8F8 |
| أيقونة المعطّل | color.black-oud.300 | #B4B7C5 |
لا نستخدم البنفسجي الخام من فيغما
<Checkbox label="تذكرني" />
<Checkbox label="تحديد الكل" indeterminate />
<Checkbox label="أوافق على الشروط" error>
يجب الموافقة على الشروط للمتابعة
</Checkbox>
<Checkbox label="الطلبية رقم 1042" description="غير متوفر حاليا" disabled />مربع الاختيار يُستورد من حزمة المكوّنات. الاستخدام في React أولا، ثم منطق تنسيق الصندوق: كل تقاطع حالة وتحديد يُشتق من رمز دلالي، فالتحديد تعبئة primary والخطأ يحوّل الصندوق إلى danger-out.
import { Checkbox } from "@mercato/components";
<Checkbox label="تذكرني" />
<Checkbox label="تحديد الكل" indeterminate />
<Checkbox label="أوافق على الشروط" checked error description="يجب الموافقة على الشروط للمتابعة" />
<Checkbox label="الطلبية رقم 1042" description="غير متوفر حاليا" disabled />
<Checkbox label="خيار دائري" shape="circle" />// Box styling per state x check, tokens only. Checked fills with the
// brand primary; error turns the box red; disabled dims it.
function boxClass(state, check) {
const filled = check !== "unchecked";
let base;
if (state === "error")
base = filled ? "border-danger-out bg-danger-out text-white"
: "border-danger-out bg-black-oud-50 dark:bg-black-oud-900";
else if (state === "disabled")
base = filled ? "border-hairline bg-surface text-faint" : "border-hairline bg-surface";
else
base = filled ? "border-primary bg-primary text-primary-on"
: "border-black-oud-300 bg-black-oud-50 dark:border-black-oud-600 dark:bg-black-oud-900";
return `grid h-4 w-4 place-items-center rounded-full border ${base}`;
}لا يحمل الصندوق قيمة لون خام: تبديل الوضع الداكن أو إعادة العلامة يسري تلقائيا لأن كل حالة تمرّ عبر رمز دلالي.
| الخطأ | ما يفسد | الصواب |
|---|---|---|
| الاعتماد على اللون وحده للمحدد أو الخطأ | يفشل مستخدمو عمى الألوان | الصندوق يحمل علامة صح أو شرطة، والتسمية تحمل الحالة |
| لون أزرق ثابت للتعبئة (#1B79F5) | يكسر الوضع الداكن وإعادة العلامة | bg-primary |
| وسطي على مربع مفرد بلا أبناء | يُعلن حالة مختلطة بلا مجموعة | استخدم الوسطي على مربع أب فقط |
| رسالة خطأ عامة "حقل غير صحيح" | لا يعرف المستخدم المتطلب | سمّ المتطلب: يجب الموافقة على الشروط للمتابعة |