الألوان
كل رمز لوني في كل وضع، مع التباين الذي يُفحص مقابله.
يضبط المنزلقان --tc-radius و--tc-density على هذه الصفحة فقط. مبدّل الوضع في الشريط العلوي.
الطبقات الثلاث
لا يسمّي المكوّن لونًا أبدًا، بل يسمّي دورًا، ويُحَلّ هذا الدور بشكل مختلف في كل وضع.
لوحة الألوان هي تدرّج oklch في Tailwind v4. تربط الطبقة الدلالية كل دور بدرجة لونية، ثم يحوّل @theme inline كل دور إلى صنف مساعد.
/* palette - never referenced by a component */
--color-blue-600: oklch(54.6% 0.245 262.881);
/* semantic - what a component means */
--tc-primary-solid: var(--color-blue-600);
--tc-primary-on-solid: var(--color-white);
/* utility - what Tailwind generates */
@theme inline {
--color-primary-solid: var(--tc-primary-solid);
}
/* what you write */
className="bg-primary-solid text-primary-on-solid"لا يستخدم أي مكوّن إلا الطبقة الدلالية، لذا لا يحتاج أي وضع جديد إلى تغيير في المكوّنات.
كل الأصناف
صنف واحد لكل دور. هذه هي الأسماء التي تستخدمها المكوّنات، وهي نفسها التي تستخدمها أنت بجانبها.
النبرات الست
لكل نبرة المجموعة نفسها من الأدوار، لذا يستخدم كلٌّ من Badge وAlert وButton النبرة بالطريقة نفسها.
معروضة في وضع الصفحة. كل صف متغيّر حيّ، لا صورة له.
أين يُستخدم كل لون
شاشة واحدة، وعلى كل دور فيها اسمه.
bg-pagebg-surfacetext-bodyاختر طريقة نشر هذا المشروع.text-mutedbg-primary-solidborder-linebg-primary-softالمعاينةالتطويرbg-surface-raisedbg-surface: الشريط العلوي، صندوق يستقر فوق الصفحة.border-line: الخط الرفيع تحت الشريط وحول البطاقة.text-body: العناوين والنص العادي.text-muted: سطر الوصف الرمادي.bg-primary-solid+text-primary-on-solid: زر «حفظ».bg-primary-soft+text-primary-on-soft: الصف المحدد في القائمة المنسدلة.bg-surface-raised: القائمة المنسدلة، طافيةً فوق البطاقة، أفتح منها بدرجة واحدة ومعها ظل.bg-page: الشاشة كلها، خلف كل شيء.
الأوضاع الثلاثة
الفاتح والداكن والمحيط ثلاث كتل CSS تضبط أسماء المتغيّرات نفسها. يتبع هذا الموقع وضع نظامك إلى أن تختار وضعًا.
وضع المحيط هو الوضع الفاتح بلون أساسي سماوي وزوايا على شكل كبسولة. لا يحتاج الوضع المخصّص إلى أكثر من كتلة CSS واحدة.
[data-theme='dark'] {
--tc-page: var(--color-neutral-950);
--tc-surface: var(--color-neutral-900);
--tc-surface-raised: var(--color-neutral-800);
--tc-body: var(--color-neutral-50);
--tc-muted: var(--color-neutral-400);
--tc-line: var(--color-neutral-800);
/* neutral-400 not neutral-500: on a raised card neutral-500 measured only 3.19:1. */
--tc-line-strong: var(--color-neutral-400);
--tc-overlay: oklch(0 0 0 / 0.7);
--tc-neutral-solid: var(--color-neutral-100);
--tc-neutral-on-solid: var(--color-neutral-950);
--tc-neutral-on-soft: var(--color-neutral-200);
--tc-primary-on-soft: var(--color-blue-400);
--tc-success-on-soft: var(--color-emerald-400);
--tc-warning-on-soft: var(--color-amber-400);
--tc-danger-on-soft: var(--color-red-400);
--tc-info-on-soft: var(--color-sky-400);
/* At the light percentages every dark tint measured 1.01-1.03 on --tc-surface. */
--tc-primary-mix: 24%;
--tc-neutral-mix: 12%;
--tc-success-mix: 24%;
--tc-warning-mix: 14%;
--tc-danger-mix: 22%;
--tc-info-mix: 24%;
/* Near-white in dark, so it steps toward the middle from the other side. */
--tc-neutral-hover: var(--color-neutral-200);
--tc-neutral-active: var(--color-neutral-300);
/* neutral-400 not neutral-500: on a raised card neutral-500 measured only 3.19:1. */
--tc-scrollbar-thumb: var(--color-neutral-400);
--tc-scrollbar-track: transparent;
}ما يفرضه فحص التباين
يُفحص التباين عند كل تغيير في المكتبة، وأي إخفاق يوقف ذلك التغيير. ويعتمد الفحص على ربط النطاق اللوني (gamut mapping) وفق CSS Color 4، لأن بعض الدرجات تقع خارج sRGB.
أضف سمتك الخاصة
أضف كتلة CSS واحدة، وضع data-theme="brand" على العنصر الذي تغطيه. يمكن للوضع أن يغيّر مفاتيح الضبط كما يغيّر الألوان.
--tc-primary-solid يجب أن يضبط --tc-primary-on-solid أيضًا، وإلا فقد ينزل تباين تسميته عن 4.5:1 فوق التعبئة الجديدة./* after the three imports */
[data-theme="brand"] {
color-scheme: dark;
--tc-page: var(--color-slate-950);
--tc-surface: var(--color-slate-900);
--tc-surface-raised: var(--color-slate-800);
--tc-body: var(--color-slate-50);
--tc-muted: var(--color-slate-400);
--tc-line: var(--color-slate-800);
--tc-line-strong: var(--color-slate-600);
--tc-primary-solid: var(--color-teal-500);
--tc-primary-on-solid: var(--color-slate-950);
--tc-primary-on-soft: var(--color-teal-300);
--tc-radius: 1rem;
}ThemeScript إلا light وdark وocean، لذا ضع الوضع المخصّص على قسم من الصفحة، أو على html في تخطيط لا يعرض ThemeScript.