fun NormalErrorWithLoading()

in ui-components/src/commonMain/kotlin/org/jetbrains/kotlinconf/ui/components/ErrorLoading.kt [106:150]


fun NormalErrorWithLoading(
    message: String,
    modifier: Modifier = Modifier,
    isLoading: Boolean = false,
    loadingText: String = stringResource(UiRes.string.loading),
    retryText: String = stringResource(UiRes.string.action_error_reload),
    onRetry: (() -> Unit)? = null,
) {
    Column(
        modifier = modifier.animateContentSize(),
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Center,
    ) {
        Loading(enabled = isLoading)

        Spacer(Modifier.height(16.dp))

        AnimatedContent(
            isLoading,
            transitionSpec = {
                val animIn = fadeIn(
                    animationSpec = tween(220, delayMillis = 100)
                ) + expandVertically(
                    expandFrom = Alignment.CenterVertically,
                    animationSpec = tween(100, easing = EaseInCubic)
                )
                val animOut = fadeOut(animationSpec = tween(90))
                animIn togetherWith animOut
            },
            modifier = Modifier.fillMaxWidth(),
        ) { loadingState ->
            if (loadingState) {
                ErrorText(loadingText)
            } else {
                Column(horizontalAlignment = Alignment.CenterHorizontally) {
                    ErrorText(message)
                    if (onRetry != null) {
                        Spacer(Modifier.height(12.dp))
                        Button(retryText, onRetry)
                    }
                }
            }
        }
    }
}