Disclosures
Disclosuresanimated

Spoiler reveal

Blurred text that sharpens into view when the reader taps to reveal it.

The killer was the lighthouse keeper all along.

Tap to reveal

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 Spoiler(text: String) {
    var revealed by remember { mutableStateOf(false) }
    val blur by animateDpAsState(if (revealed) 0.dp else 8.dp, label = "blur")
    Surface(
        onClick = { revealed = true },
        shape = MaterialTheme.shapes.small,
        color = MaterialTheme.colorScheme.surfaceVariant,
    ) {
        Text(
            text,
            Modifier.padding(12.dp).blur(blur),
            style = MaterialTheme.typography.bodyMedium,
        )
    }
}