Jetpack Compose
Añade Tanrei a una aplicación de Android construida con Jetpack Compose.
La biblioteca de Compose proporciona funciones composables, un TanreiTheme y objetos de tokens generados. Depende de Compose Foundation y no de una biblioteca de componentes Material, así que no introduce un segundo sistema de diseño en tu aplicación.
Aún no publicado
io.github.chnotchy:tanrei todavía no está en Maven Central. Una plataforma se publica cuando se ha puesto al día con las especificaciones actuales, y hasta entonces la CI de Jetpack Compose está en pausa. «Desde el código fuente», más abajo, muestra cómo se añade el paquete desde chnotchy/tanrei; «Cuando se publique» muestra cómo se instalará entonces.
Hoy no se compila
La biblioteca de Compose todavía no se ha puesto al día con las especificaciones y los tokens actuales: su código fuente se escribió para una versión anterior del código de tokens generado y no compila con el de hoy. Su CI está en pausa hasta que se ponga al día, y la página de estado marca sus componentes como rezagados. Los pasos siguientes muestran cómo se añade a una aplicación; funcionarán cuando la biblioteca se haya puesto al día.
Clona el repositorio junto a tu aplicación e incluye su compilación de Gradle, que contiene la biblioteca como el proyecto :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>")
}Envuelve tu contenido en TanreiTheme una sola vez, cerca de la raíz:
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 = "Desplegar",
onClick = onDeploy,
variant = TanreiButtonVariant.Filled,
enabled = !isDeploying,
)
}
}La convención de Compose es el indicador en positivo enabled, y eso es lo que usa Tanrei; la propiedad disabled de la especificación corresponde a su inverso. Una sobrecarga con slot acepta una lambda content cuando necesitas algo más que una etiqueta de texto.
De forma predeterminada, TanreiTheme sigue el tema oscuro del sistema y el ajuste de contraste del sistema. Ambos se pueden fijar:
TanreiTheme(theme = TanreiThemeMode.Dark, contrast = TanreiContrast.High) {
App()
}De forma predeterminada, la escala tipográfica se resuelve con la familia de fuentes predeterminada de la plataforma. Pasa tus propias TanreiFontFamilies a TanreiTheme para usar Inter (y Noto Sans JP, Roboto Mono) desde los recursos de fuentes de tu aplicación. Los estilos de texto se nombran por nivel (TanreiTheme.tokens.typescale.heading2, .body, .label; .toTextStyle() convierte uno en un TextStyle de Compose), y TanreiTheme.tokens.typescale.heading1.emphasized() es el mismo estilo con su peso más el paso de énfasis de la familia de títulos (fuera de la composición, emphasized(system.typescale.emphasis)).