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.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
@@ -50,6 +49,7 @@ import androidx.compose.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LocalContentColor
@@ -1017,39 +1017,41 @@ private fun OfflineStrip(
onGoOnline: () -> Unit,
modifier: Modifier = Modifier,
) {
Surface(
onClick = onGoOnline,
color = Color.Transparent,
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),
Column(modifier.fillMaxWidth()) {
Surface(
onClick = onGoOnline,
color = Color.Transparent,
contentColor = MaterialTheme.colorScheme.onBackground,
modifier = Modifier.fillMaxWidth(),
) {
Icon(
imageVector = Icons.Rounded.CloudOff,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(18.dp),
)
Text(
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,
)
Row(
modifier =
Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 6.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
Icon(
imageVector = Icons.Rounded.CloudOff,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(18.dp),
)
Text(
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)
}
}