انتقل إلى المحتوى الرئيسي

Sistema diseño

#نظام التصميم

لوحة الألوان​

تم ضبط لوحة Trainium على ui/theme/Color.kt. إنه يتبع جمالية داكنة أحادية اللون مع اللون الأزرق الكهربائي كلون مميز.

النغمات الأساسية (موضوع مستقل)​

الرمز المميزقيمة HEXالاستخدام الرئيسي
BlueDark#0B1426خلفية موضوع داكن
BlueMid#121F3Dسطح المظهر الداكن
BlueDeep#162347سطح متغير للموضوع الداكن
BlueAccent#2196F3اللون الأساسي للإجراءات (الأزرار، الحدود النشطة)
BlueElectric#448AFFأزرار CTA متدرجة
BlueSoft#64B5F6النصوص الثانوية والعناوين الفرعية في موضوع مظلم
BlueGlow#332196F3تأثيرات التوهج والظل مع الشفافية
BlueLight#BBDEFBخلفيات ناعمة بموضوع فاتح
WhiteSoft#F0F4FFخلفية موضوع فاتح

نظام الألوان للموضوع الداكن​

مادة الدور 3الرمز المميزفالور هيكس
primaryDarkPrimary#448AFF
onPrimaryDarkOnPrimary#001E5F
primaryContainerDarkPrimaryContainer#1A3A6E
backgroundDarkBackground#0B1426
surfaceDarkSurface#121F3D
surfaceVariantDarkSurfaceVariant#1A2D54
errorDarkError#FF6B6B

نظام الألوان موضوع الضوء​

مادة الدور 3الرمز المميزفالور هيكس
primaryLightPrimary#1565C0
onPrimaryLightOnPrimary#FFFFFF
primaryContainerLightPrimaryContainer#D0E4FF
backgroundLightBackground#F0F4FF
surfaceLightSurface#FFFFFF
surfaceVariantLightSurfaceVariant#E3ECFA
errorLightError#D32F2F

الطباعة​

تم ضبط مقياس الخط على ui/theme/Type.kt ويستخدم FontFamily.SansSerif (الخط sans-serif الافتراضي لنظام Android، عادةً Roboto) لجميع المستويات.

نيفيلالوزنتامانيوانترليتراجي
displayLargeأسود (900)34 س-0.25 ليرة سورية
headlineLargeجريئة (700)28 س0 س
headlineMediumجريئة (700)24 س0 س
titleLargeنصف غامق (600)20 س0.15 ل.س
titleMediumنصف غامق (600)16 س0.15 ل.س
bodyLargeعادي (400)16 س0.5 س
bodyMediumعادي (400)14 س0.25 ل.س
labelLargeجريئة (700)14 س1.2 س
labelMediumمتوسطة (500)12 س0.5 س
labelSmallمتوسطة (500)11 س0.5 س

يتم استخدام labelLarge مع letterSpacing = 1.2 sp على أزرار CTA (مثل "ابدأ الآن"، "متابعة") لإعطاء تأثير النص الموسع المميز للواجهة.

الأشكال​

يحل نظام الشكل المخصص PremiumShapes محل نظام ركن المادة 3 الافتراضي:

نيفيلراديو الإسكينا
small10 موانئ دبي
medium16 موانئ دبي
large22 موانئ دبي
extraLarge28 موانئ دبي

تساهم هذه الأقطار الأكثر سخاءً من القيم الافتراضية للمادة 3 في المظهر المتميز المستدير للبطاقات والأزرار.

إدارة الموضوع​

تتم إدارة الموضوع في طبقتين:

MaterialTheme (ui/theme/Theme.kt): يحدد Trainium2Theme القابل للتركيب الذي يطبق ColorScheme، وTypography، وShapes وفقًا للمعلمة darkTheme.

ThemeManager (ThemeManager.kt): يحافظ على تفضيلات المستخدم في DataStore. تتم قراءة التفضيل كـ Flow<Boolean?> ويتم تجميعه في MainActivity.kt مع collectAsState(initial = null). القيمة الأولية null تعني أن التفضيلات لم تتم قراءتها من القرص بعد؛ في هذه الحالة، يتم استخدام سمة النظام (isSystemInDarkTheme()).

val savedDarkMode by themeManager.isDarkMode.collectAsState(initial = null)
val systemTheme = isSystemInDarkTheme()
var isDarkTheme by remember(savedDarkMode) {
mutableStateOf(savedDarkMode ?: systemTheme)
}

تدرجات الخلفية​

تستخدم كافة الشاشات التدرجات الرأسية بدلاً من الخلفيات المسطحة. يختلف التدرج اعتمادًا على الموضوع النشط:

موضوع مظلم:

Brush.verticalGradient(listOf(BlueDark, BlueMid, BlueDeep))
// #0B1426 → #121F3D → #162347

موضوع واضح:

Brush.verticalGradient(listOf(Color(0xFFF0F4FF), Color(0xFFE3ECFF), Color(0xFFD6E4FF)))

دخول الرسوم المتحركة​

تنفذ جميع الشاشات رسومًا متحركة مدخلة متداخلة باستخدام LaunchedEffect(Unit) + animateFloatAsState. النمط القياسي هو:

var elementoVisible by remember { mutableStateOf(false) }
val alpha by animateFloatAsState(
targetValue = if (elementoVisible) 1f else 0f,
animationSpec = tween(durationMillis = 500),
label = "elemento_alpha"
)

LaunchedEffect(Unit) {
delay(100)
elementoVisible = true
}

يتم الكشف عن العناصر بشكل تسلسلي مع تأخيرات تتراوح من 100 إلى 300 مللي ثانية بين كل عنصر، مما يؤدي إلى إنشاء تأثير مظهر متتالي.