Hints
Filters live here
Narrow results by date, type or owner without leaving the page.
Next
Installation
caveui components are copy-paste Jetpack Compose built entirely on Material 3 — there's no caveui dependency to add. Make sure Material 3 is on your classpath (it ships with the Compose BOM), then copy the Usage snippet below into your project.
kotlin
// build.gradle.kts (module)
dependencies {
implementation(platform("androidx.compose:compose-bom:2025.06.00"))
implementation("androidx.compose.material3:material3")
}Usage
kotlin
@Composable
fun Coachmark(step: Int, total: Int, title: String, body: String, onNext: () -> Unit) {
val accent = Color(0xFF6366F1)
Surface(
shape = RoundedCornerShape(14.dp),
color = MaterialTheme.colorScheme.surface,
shadowElevation = 6.dp,
modifier = Modifier.widthIn(max = 240.dp),
) {
Column(Modifier.padding(14.dp)) {
Text(title, style = MaterialTheme.typography.titleSmall)
Text(
body,
Modifier.padding(top = 4.dp),
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
)
Row(
Modifier.fillMaxWidth().padding(top = 12.dp),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
) {
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
repeat(total) { i ->
Box(
Modifier.size(if (i == step) 18.dp else 6.dp, 6.dp)
.clip(CircleShape)
.background(if (i == step) accent
else MaterialTheme.colorScheme.outlineVariant),
)
}
}
FilledTonalButton(
onClick = onNext,
contentPadding = PaddingValues(horizontal = 14.dp, vertical = 4.dp),
) { Text("Next") }
}
}
}
}