
Brandable design system with seed-driven light/dark theming, comprehensive design tokens and ready-made UI blocks rendered from one shared codebase; accessibility (contrast, touch targets) enforced.
A Kotlin Multiplatform and Compose Multiplatform design system. Brandable design tokens and
ready-made Jenga* blocks that render the same on Android, iOS, Desktop and the Web (Wasm), from one shared
commonMain codebase.
Jenga is Swahili for "to build". You build screens out of Jenga blocks, not out of raw Compose or Material primitives.
JengaTheme(
content = {
// light and dark follow the system
JengaScaffold(
topBar = {
JengaTopAppBar(
title = "Events",
)
},
content = { padding ->
JengaStack(
modifier = Modifier.padding(
paddingValues = padding,
),
content = {
JengaText(
text = "Tonight",
style = JengaTheme.typography.headingMedium,
)
JengaButton(
text = "Scan a ticket",
onClick = { },
)
},
)
},
)
},
)Brand it from one seed, and every block re-themes in light and dark:
JengaTheme(
brand = jengaBrand(
seed = Color(
color = 0xFF6D28D9,
),
),
content = { App() },
)Jenga is on Maven Central. Add mavenCentral() to your repositories, then the dependency.
Kotlin Multiplatform:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("io.github.joelkanyi:jenga:<version>")
}
}
}Android only (the same coordinate resolves the Android variant automatically):
dependencies {
implementation("io.github.joelkanyi:jenga:<version>")
}Everything else lives on the site: joelkanyi.github.io/jenga
Apache 2.0. See LICENSE.
A Kotlin Multiplatform and Compose Multiplatform design system. Brandable design tokens and
ready-made Jenga* blocks that render the same on Android, iOS, Desktop and the Web (Wasm), from one shared
commonMain codebase.
Jenga is Swahili for "to build". You build screens out of Jenga blocks, not out of raw Compose or Material primitives.
JengaTheme(
content = {
// light and dark follow the system
JengaScaffold(
topBar = {
JengaTopAppBar(
title = "Events",
)
},
content = { padding ->
JengaStack(
modifier = Modifier.padding(
paddingValues = padding,
),
content = {
JengaText(
text = "Tonight",
style = JengaTheme.typography.headingMedium,
)
JengaButton(
text = "Scan a ticket",
onClick = { },
)
},
)
},
)
},
)Brand it from one seed, and every block re-themes in light and dark:
JengaTheme(
brand = jengaBrand(
seed = Color(
color = 0xFF6D28D9,
),
),
content = { App() },
)Jenga is on Maven Central. Add mavenCentral() to your repositories, then the dependency.
Kotlin Multiplatform:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("io.github.joelkanyi:jenga:<version>")
}
}
}Android only (the same coordinate resolves the Android variant automatically):
dependencies {
implementation("io.github.joelkanyi:jenga:<version>")
}Everything else lives on the site: joelkanyi.github.io/jenga
Apache 2.0. See LICENSE.