package com.craigvg.lichun_android.ui.components.overlays import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ErrorOutline import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppSpacing import com.craigvg.lichun_android.ui.theme.AppTypography @Composable fun ErrorRecoveryView( message: String = "Something went wrong", onRetry: () -> Unit, modifier: Modifier = Modifier ) { Box( modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(AppSpacing.xl) ) { Icon( imageVector = Icons.Default.ErrorOutline, contentDescription = null, tint = AppColors.error, modifier = Modifier.size(64.dp) ) Spacer(modifier = Modifier.height(AppSpacing.md)) Text( text = message, style = AppTypography.headline, color = AppColors.secondaryText, textAlign = TextAlign.Center ) Spacer(modifier = Modifier.height(AppSpacing.lg)) Button( onClick = onRetry, shape = RoundedCornerShape(AppSpacing.pillCornerRadius), colors = ButtonDefaults.buttonColors( containerColor = AppColors.primary, contentColor = Color.White ) ) { Icon( imageVector = Icons.Default.Refresh, contentDescription = null, modifier = Modifier.size(20.dp) ) Spacer(modifier = Modifier.width(AppSpacing.xs)) Text(text = "Try Again", style = AppTypography.bodyBold) } } } }