package com.craigvg.lichun_android.ui.components.indicators import androidx.compose.animation.core.InfiniteTransition import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp 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 CozyConnectingView( modifier: Modifier = Modifier, onRetry: (() -> Unit)? = null ) { val transition: InfiniteTransition = rememberInfiniteTransition(label = "pulse") val scale by transition.animateFloat( initialValue = 0.85f, targetValue = 1.15f, animationSpec = infiniteRepeatable( animation = tween(durationMillis = 800), repeatMode = RepeatMode.Reverse ), label = "pulseScale" ) Column( modifier = modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text( text = "\uD83C\uDF19", fontSize = 48.sp, modifier = Modifier.scale(scale) ) Spacer(Modifier.height(AppSpacing.md)) Text( text = "Connecting...", style = AppTypography.headline, color = AppColors.secondaryText ) onRetry?.let { Spacer(Modifier.height(AppSpacing.md)) TextButton(onClick = it) { Text( text = "Retry", style = AppTypography.bodyBold, color = AppColors.primary ) } } } }