ui: tighten the offline strip and separate it from the tabs

Drop the strip's fixed 44dp height so it wraps its content, and draw a
divider between the strip and the tab bar. The label now sits 6dp above
the rule instead of 12dp above the tab icons, which read as one gap.
This commit is contained in:
austinried
2026-10-21 10:14:10 +00:00
parent be08e50314
commit bb3abe39b6
@@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
@@ -50,6 +49,7 @@ import androidx.compose.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
@@ -1017,39 +1017,41 @@ private fun OfflineStrip(
onGoOnline: () -> Unit, onGoOnline: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
Surface( Column(modifier.fillMaxWidth()) {
onClick = onGoOnline, Surface(
color = Color.Transparent, onClick = onGoOnline,
contentColor = MaterialTheme.colorScheme.onBackground, color = Color.Transparent,
modifier = modifier.fillMaxWidth(), contentColor = MaterialTheme.colorScheme.onBackground,
) { modifier = Modifier.fillMaxWidth(),
Row(
modifier =
Modifier
.fillMaxWidth()
.heightIn(min = 44.dp)
.padding(horizontal = 16.dp, vertical = 6.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(8.dp),
) { ) {
Icon( Row(
imageVector = Icons.Rounded.CloudOff, modifier =
contentDescription = null, Modifier
tint = MaterialTheme.colorScheme.primary, .fillMaxWidth()
modifier = Modifier.size(18.dp), .padding(horizontal = 16.dp, vertical = 6.dp),
) verticalAlignment = Alignment.CenterVertically,
Text( horizontalArrangement = Arrangement.spacedBy(8.dp),
text = stringResource(R.string.offline_mode_banner), ) {
style = MaterialTheme.typography.bodyMedium, Icon(
maxLines = 2, imageVector = Icons.Rounded.CloudOff,
modifier = Modifier.weight(1f), contentDescription = null,
) tint = MaterialTheme.colorScheme.primary,
Text( modifier = Modifier.size(18.dp),
text = stringResource(R.string.offline_go_online), )
style = MaterialTheme.typography.labelLarge, Text(
color = MaterialTheme.colorScheme.primary, text = stringResource(R.string.offline_mode_banner),
) style = MaterialTheme.typography.bodyMedium,
maxLines = 2,
modifier = Modifier.weight(1f),
)
Text(
text = stringResource(R.string.offline_go_online),
style = MaterialTheme.typography.labelLarge,
color = MaterialTheme.colorScheme.primary,
)
}
} }
HorizontalDivider(color = MaterialTheme.colorScheme.outlineVariant)
} }
} }