Cards
Cardsanimated

Profile Completion Ring

Onboarding card with a circular progress ring sweeping to profile completeness.

75%
Profile setup
Add a bio to finish

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 ProfileCompletionCard() {
    val p = remember { Animatable(0f) }
    LaunchedEffect(Unit) {
        p.animateTo(0.75f, tween(1200))
    }
    Card(
        modifier = Modifier.width(260.dp),
        shape = RoundedCornerShape(20.dp)
    ) {
        Row(
            Modifier.padding(20.dp),
            verticalAlignment = Alignment.CenterVertically
        ) {
            Box(
                Modifier.size(64.dp),
                contentAlignment = Alignment.Center
            ) {
                CircularProgressIndicator(
                    progress = { p.value },
                    modifier = Modifier.size(64.dp),
                    strokeWidth = 6.dp
                )
                Text(
                    "${(p.value * 100).toInt()}%",
                    style = MaterialTheme.typography.labelMedium
                )
            }
            Spacer(Modifier.width(16.dp))
            Column {
                Text(
                    "Profile setup",
                    style = MaterialTheme.typography.titleSmall
                )
                Text(
                    "Add a bio to finish",
                    style = MaterialTheme.typography.bodySmall,
                    color = MaterialTheme.colorScheme
                        .onSurfaceVariant
                )
            }
        }
    }
}