توفّر مكتبة Compose دوال composable و TanreiTheme وكائنات رموز (tokens) مولَّدة. تعتمد المكتبة على Compose Foundation لا على مكتبة مكوّنات Material، فلا تجلب إلى تطبيقك نظام تصميم ثانيًا.
لم يُنشر بعد
io.github.chnotchy:tanrei غير موجودة بعدُ على Maven Central. تُنشر المنصة حين تلحق بالمواصفات الحالية، والتكامل المستمر (CI) الخاص بـ Jetpack Compose متوقف حتى ذلك الحين. يبيّن قسم «من الشيفرة المصدرية» أدناه كيف تُضاف الحزمة من chnotchy/tanrei، ويبيّن قسم «بعد نشرها» طريقة التثبيت حينها.
لا تُبنى اليوم
لم تلحق مكتبة Compose بعد بالمواصفات والرموز (tokens) الحالية: كُتبت مصادرها على إصدار سابق من شيفرة الرموز المولَّدة، ولا تُترجَم (compile) على شيفرة اليوم. والتكامل المستمر (CI) الخاص بها متوقف إلى أن تلحق، وصفحة الحالة تَسِم مكوّناتها بأنها متأخرة. الخطوات أدناه هي طريقة إضافتها إلى تطبيق، وتعمل حين تلحق المكتبة.
استنسخ المستودع بجانب تطبيقك وضمِّن بناء Gradle الخاص به، الذي يحمل المكتبة بوصفها المشروع :tanrei:
// settings.gradle.kts
includeBuild("../tanrei/packages/compose") {
dependencySubstitution {
substitute(module("io.github.chnotchy:tanrei")).using(project(":tanrei"))
}
}// build.gradle.kts
dependencies {
implementation("io.github.chnotchy:tanrei")
}// build.gradle.kts
dependencies {
implementation("io.github.chnotchy:tanrei:<version>")
}ضع محتواك داخل TanreiTheme مرة واحدة قرب الجذر:
import io.github.chnotchy.tanrei.components.TanreiButton
import io.github.chnotchy.tanrei.theme.TanreiTheme
import io.github.chnotchy.tanrei.tokens.TanreiButtonVariant
@Composable
fun DeployScreen(isDeploying: Boolean, onDeploy: () -> Unit) {
TanreiTheme {
TanreiButton(
text = "نشر",
onClick = onDeploy,
variant = TanreiButtonVariant.Filled,
enabled = !isDeploying,
)
}
}العرف في Compose هو الراية الإيجابية enabled، وهي ما يستخدمه Tanrei؛ والخاصية disabled في المواصفة تقابل عكسها. وتوجد صيغة أخرى للدالة ذات منفذ (slot) تأخذ دالة content حين تحتاج إلى أكثر من تسمية نصية.
يتبع TanreiTheme افتراضيًّا السمة الداكنة للنظام وإعداد التباين فيه. ويمكن تثبيت الاثنين:
TanreiTheme(theme = TanreiThemeMode.Dark, contrast = TanreiContrast.High) {
App()
}يُحَلّ السلّم الطباعي افتراضيًّا إلى عائلة الخطوط الافتراضية للمنصة. مرِّر TanreiFontFamilies خاصًّا بك إلى TanreiTheme لاستخدام Inter (و Noto Sans JP و Roboto Mono) من موارد الخطوط في تطبيقك. تُسمّى أنماط النص بحسب المستوى (TanreiTheme.tokens.typescale.heading2 و .body و .label؛ و .toTextStyle() يحوّل أحدها إلى TextStyle في Compose)، و TanreiTheme.tokens.typescale.heading1.emphasized() هو النمط نفسه بوزنه مضافًا إليه درجة التوكيد الخاصة بفئة العناوين (وخارج التركيب: emphasized(system.typescale.emphasis)).