RedactionReveal

fun RedactionReveal(value: String, modifier: Modifier = Modifier, reducedMotion: Boolean = false)

Animates onto an already-masked value (e.g. "9f••••3a") by scrambling the visible characters through a few random glyphs before settling — makes the redaction happen visibly instead of the masked string just appearing, which is the whole point of showing it at all.

Extracted from PaymentsLab's core/designsystem/RedactionReveal.kt (backlog #31). The original read a LocalReducedMotion CompositionLocal owned by that app; a shared component shouldn't bind to one host's CompositionLocal instance, so reducedMotion is now an explicit parameter — the caller passes its own LocalReducedMotion.current.