Stylish Content State Host
fun <T> StylishContentStateHost(state: StylishContentState<T>, modifier: Modifier = Modifier, loadingContent: @Composable () -> Unit = {
Box(Modifier.fillMaxWidth().padding(24.dp), contentAlignment = Alignment.Center) {
CircularProgressIndicator()
}
}, emptyContent: @Composable (String?) -> Unit = { message ->
Box(Modifier.fillMaxWidth().padding(24.dp), contentAlignment = Alignment.Center) {
Text(message ?: StylishTheme.strings.empty, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
}, errorContent: @Composable (StylishContentState.Error) -> Unit = { error ->
Box(Modifier.fillMaxWidth().padding(24.dp), contentAlignment = Alignment.Center) {
Text(error.message, color = MaterialTheme.colorScheme.error)
}
}, content: @Composable (T) -> Unit)
Renders the shared Loading/Empty/Error/Content state machine.
Use this at the boundary between a screen's state holder and its visual content. The default branches are deliberately modest and localization-aware; production screens can replace each branch with a slot without changing their state model or introducing boolean combinations.