mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-21 10:16:44 +00:00
[AI-assisted] fix(android): polish home overview layout (#100059)
* fix(android): polish home overview layout * chore(android): refresh native i18n inventory --------- Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
This commit is contained in:
co-authored by
IWhatsskill
parent
fe8234621e
commit
b550c829b2
@@ -4051,7 +4051,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 404,
|
||||
"line": 408,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Overview",
|
||||
"surface": "android",
|
||||
@@ -4059,7 +4059,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 449,
|
||||
"line": 453,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "No recent sessions",
|
||||
"surface": "android",
|
||||
@@ -4067,7 +4067,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 451,
|
||||
"line": 455,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Start Chat",
|
||||
"surface": "android",
|
||||
@@ -4075,7 +4075,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 511,
|
||||
"line": 515,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "OpenClaw",
|
||||
"surface": "android",
|
||||
@@ -4083,7 +4083,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 519,
|
||||
"line": 523,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Search",
|
||||
"surface": "android",
|
||||
@@ -4091,7 +4091,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 571,
|
||||
"line": 575,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "ACTIVE AGENT",
|
||||
"surface": "android",
|
||||
@@ -4099,7 +4099,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 580,
|
||||
"line": 584,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "View",
|
||||
"surface": "android",
|
||||
@@ -4107,7 +4107,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 583,
|
||||
"line": 587,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$pendingRunCount active",
|
||||
"surface": "android",
|
||||
@@ -4115,7 +4115,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 583,
|
||||
"line": 587,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Idle",
|
||||
"surface": "android",
|
||||
@@ -4123,7 +4123,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 583,
|
||||
"line": 587,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Runs",
|
||||
"surface": "android",
|
||||
@@ -4131,7 +4131,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 584,
|
||||
"line": 588,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$sessionCount recent",
|
||||
"surface": "android",
|
||||
@@ -4139,7 +4139,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 584,
|
||||
"line": 588,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Sessions",
|
||||
"surface": "android",
|
||||
@@ -4147,7 +4147,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 585,
|
||||
"line": 589,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Cron",
|
||||
"surface": "android",
|
||||
@@ -4155,7 +4155,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 588,
|
||||
"line": 592,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Chat",
|
||||
"surface": "android",
|
||||
@@ -4163,7 +4163,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 592,
|
||||
"line": 596,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Reconnect gateway",
|
||||
"surface": "android",
|
||||
@@ -4171,7 +4171,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 737,
|
||||
"line": 744,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Open ${card.title}",
|
||||
"surface": "android",
|
||||
@@ -4179,7 +4179,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 805,
|
||||
"line": 812,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Talk",
|
||||
"surface": "android",
|
||||
@@ -4187,7 +4187,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 806,
|
||||
"line": 813,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Open Talk",
|
||||
"surface": "android",
|
||||
@@ -4195,7 +4195,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 808,
|
||||
"line": 815,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Talk settings",
|
||||
"surface": "android",
|
||||
@@ -4203,7 +4203,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 816,
|
||||
"line": 823,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Recent Sessions",
|
||||
"surface": "android",
|
||||
@@ -4211,7 +4211,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 826,
|
||||
"line": 833,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "View all",
|
||||
"surface": "android",
|
||||
@@ -4219,7 +4219,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 944,
|
||||
"line": 951,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$onlineNodes/$nodeCount",
|
||||
"surface": "android",
|
||||
@@ -4227,7 +4227,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 944,
|
||||
"line": 951,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "None",
|
||||
"surface": "android",
|
||||
@@ -4235,7 +4235,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 976,
|
||||
"line": 983,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Recent conversations",
|
||||
"surface": "android",
|
||||
@@ -4243,7 +4243,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1027,
|
||||
"line": 1034,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Working · $pendingRunCount active ${pluralize(\"run\", pendingRunCount)}",
|
||||
"surface": "android",
|
||||
@@ -4251,7 +4251,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1148,
|
||||
"line": 1155,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Needs attention",
|
||||
"surface": "android",
|
||||
@@ -4259,7 +4259,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1213,
|
||||
"line": 1220,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Open ${row.title}",
|
||||
"surface": "android",
|
||||
@@ -4267,7 +4267,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1287,
|
||||
"line": 1294,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Open session",
|
||||
"surface": "android",
|
||||
@@ -4275,7 +4275,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1399,
|
||||
"line": 1406,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Back",
|
||||
"surface": "android",
|
||||
@@ -4283,7 +4283,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1402,
|
||||
"line": 1409,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Settings",
|
||||
"surface": "android",
|
||||
@@ -4291,7 +4291,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1405,
|
||||
"line": 1412,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Search settings",
|
||||
"surface": "android",
|
||||
@@ -4299,7 +4299,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1429,
|
||||
"line": 1436,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$readyProviderCount ready",
|
||||
"surface": "android",
|
||||
@@ -4307,7 +4307,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1429,
|
||||
"line": 1436,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Review readiness",
|
||||
"surface": "android",
|
||||
@@ -4315,7 +4315,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1439,
|
||||
"line": 1446,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Speaker muted",
|
||||
"surface": "android",
|
||||
@@ -4323,7 +4323,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1439,
|
||||
"line": 1446,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Speaker on",
|
||||
"surface": "android",
|
||||
@@ -4331,7 +4331,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1441,
|
||||
"line": 1448,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Off",
|
||||
"surface": "android",
|
||||
@@ -4339,7 +4339,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1441,
|
||||
"line": 1448,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Smart delivery",
|
||||
"surface": "android",
|
||||
@@ -4347,7 +4347,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1442,
|
||||
"line": 1449,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Camera enabled",
|
||||
"surface": "android",
|
||||
@@ -4355,7 +4355,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1442,
|
||||
"line": 1449,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Locked",
|
||||
"surface": "android",
|
||||
@@ -4363,7 +4363,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1484,
|
||||
"line": 1491,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "OpenClaw ${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})",
|
||||
"surface": "android",
|
||||
@@ -4371,7 +4371,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1487,
|
||||
"line": 1494,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "All systems operational",
|
||||
"surface": "android",
|
||||
@@ -4379,7 +4379,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1487,
|
||||
"line": 1494,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Gateway not connected",
|
||||
"surface": "android",
|
||||
@@ -4387,7 +4387,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1519,
|
||||
"line": 1526,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "No provider usage",
|
||||
"surface": "android",
|
||||
@@ -4395,7 +4395,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1520,
|
||||
"line": 1527,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "1 provider",
|
||||
"surface": "android",
|
||||
@@ -4403,7 +4403,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1521,
|
||||
"line": 1528,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$count providers",
|
||||
"surface": "android",
|
||||
@@ -4411,7 +4411,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1527,
|
||||
"line": 1534,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "$ready/${skills.size} ready",
|
||||
"surface": "android",
|
||||
@@ -4419,7 +4419,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1527,
|
||||
"line": 1534,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "No skills",
|
||||
"surface": "android",
|
||||
@@ -4427,7 +4427,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1704,
|
||||
"line": 1711,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "OpenClaw mobile",
|
||||
"surface": "android",
|
||||
@@ -4435,7 +4435,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "ui-named-argument",
|
||||
"line": 1708,
|
||||
"line": 1715,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Open profile",
|
||||
"surface": "android",
|
||||
@@ -4443,7 +4443,7 @@
|
||||
},
|
||||
{
|
||||
"kind": "conditional-branch",
|
||||
"line": 1793,
|
||||
"line": 1800,
|
||||
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt",
|
||||
"source": "Main session",
|
||||
"surface": "android",
|
||||
|
||||
@@ -122,6 +122,10 @@ private val shellNavTabs = listOf(Tab.Overview, Tab.Chat, Tab.Voice, Tab.Setting
|
||||
private val shellContentInsets: WindowInsets
|
||||
@Composable get() = WindowInsets.safeDrawing.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal)
|
||||
|
||||
private val overviewMetricTileMinHeight = 96.dp
|
||||
private val overviewTalkPanelMinHeight = 72.dp
|
||||
private val overviewListRowMinHeight = 54.dp
|
||||
|
||||
internal fun shellBottomNavVisible(
|
||||
keyboardVisible: Boolean,
|
||||
commandOpen: Boolean,
|
||||
@@ -394,7 +398,7 @@ private fun OverviewScreen(
|
||||
contentWindowInsets = shellContentInsets,
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.spacedBy(9.dp), contentPadding = PaddingValues(bottom = 4.dp)) {
|
||||
LazyColumn(modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.spacedBy(10.dp), contentPadding = PaddingValues(bottom = 6.dp)) {
|
||||
item {
|
||||
OverviewHeader(status = headerState, onOpenStatus = { onOpenSettingsRoute(headerRoute) }, onOpenCommand = onOpenCommand)
|
||||
}
|
||||
@@ -566,8 +570,8 @@ private fun OverviewPrimaryPanel(
|
||||
onOpenAgent: () -> Unit,
|
||||
onOpenGateway: () -> Unit,
|
||||
) {
|
||||
OverviewLayeredPanel(contentPadding = PaddingValues(14.dp), elevated = true) {
|
||||
Column(verticalArrangement = Arrangement.spacedBy(10.dp)) {
|
||||
OverviewLayeredPanel(contentPadding = PaddingValues(ClawTheme.spacing.sm), elevated = true) {
|
||||
Column(verticalArrangement = Arrangement.spacedBy(ClawTheme.spacing.xs)) {
|
||||
Text(text = "ACTIVE AGENT", style = ClawTheme.type.caption.copy(fontSize = 12.sp, lineHeight = 15.sp), color = ClawTheme.colors.textMuted)
|
||||
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(9.dp)) {
|
||||
OverviewAgentBadge(text = agentBadge, active = isConnected)
|
||||
@@ -579,12 +583,12 @@ private fun OverviewPrimaryPanel(
|
||||
}
|
||||
ClawSecondaryButton(text = "View", onClick = onOpenAgent)
|
||||
}
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(10.dp)) {
|
||||
OverviewStateChip(label = "Runs", value = if (pendingRunCount > 0) "$pendingRunCount active" else "Idle", modifier = Modifier.weight(1f))
|
||||
OverviewStateChip(label = "Sessions", value = if (sessionCount == 0) "None" else "$sessionCount recent", modifier = Modifier.weight(1f))
|
||||
OverviewStateChip(label = "Cron", value = cronJobsSummary(cronJobCount), modifier = Modifier.weight(1f))
|
||||
}
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(10.dp)) {
|
||||
OverviewActionPill(text = "Chat", icon = Icons.Outlined.ChatBubbleOutline, emphasized = true, onClick = onOpenChat, modifier = Modifier.weight(1f))
|
||||
OverviewActionPill(text = "Talk", icon = Icons.Outlined.MicNone, emphasized = false, onClick = onOpenVoice, modifier = Modifier.weight(1f))
|
||||
}
|
||||
@@ -643,7 +647,7 @@ private fun OverviewLayeredPanel(
|
||||
) {
|
||||
Surface(
|
||||
modifier = modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(7.dp),
|
||||
shape = RoundedCornerShape(ClawTheme.radii.button),
|
||||
color = if (elevated) ClawTheme.colors.surfaceRaised.copy(alpha = 0.98f) else ClawTheme.colors.surfaceRaised.copy(alpha = 0.86f),
|
||||
contentColor = ClawTheme.colors.text,
|
||||
tonalElevation = if (elevated) 4.dp else 1.dp,
|
||||
@@ -685,11 +689,14 @@ private fun OverviewStateChip(
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Surface(
|
||||
modifier = modifier,
|
||||
modifier = modifier.heightIn(min = ClawTheme.spacing.touchTarget),
|
||||
shape = RoundedCornerShape(ClawTheme.radii.control),
|
||||
color = ClawTheme.colors.surfacePressed.copy(alpha = 0.58f),
|
||||
) {
|
||||
Column(modifier = Modifier.padding(horizontal = 9.dp, vertical = 6.dp), verticalArrangement = Arrangement.spacedBy(1.dp)) {
|
||||
Column(
|
||||
modifier = Modifier.padding(horizontal = 10.dp, vertical = 7.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(1.dp),
|
||||
) {
|
||||
Text(text = label.uppercase(), style = ClawTheme.type.caption.copy(fontSize = 10.5.sp, lineHeight = 13.sp), color = ClawTheme.colors.textSubtle, maxLines = 1)
|
||||
Text(text = value, style = ClawTheme.type.caption.copy(fontSize = 14.sp, lineHeight = 17.sp), color = ClawTheme.colors.text, maxLines = 1, overflow = TextOverflow.Ellipsis)
|
||||
}
|
||||
@@ -701,9 +708,9 @@ private fun OverviewMetricGrid(
|
||||
cards: List<OverviewMetricCard>,
|
||||
onOpen: (OverviewMetricCard) -> Unit,
|
||||
) {
|
||||
Column(verticalArrangement = Arrangement.spacedBy(7.dp)) {
|
||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
cards.chunked(2).forEach { row ->
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(7.dp)) {
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
row.forEach { card ->
|
||||
OverviewMetricTile(card = card, onClick = { onOpen(card) }, modifier = Modifier.weight(1f))
|
||||
}
|
||||
@@ -723,14 +730,14 @@ private fun OverviewMetricTile(
|
||||
) {
|
||||
Surface(
|
||||
onClick = onClick,
|
||||
modifier = modifier.heightIn(min = 88.dp),
|
||||
shape = RoundedCornerShape(7.dp),
|
||||
modifier = modifier.heightIn(min = overviewMetricTileMinHeight),
|
||||
shape = RoundedCornerShape(ClawTheme.radii.button),
|
||||
color = ClawTheme.colors.surfaceRaised.copy(alpha = 0.84f),
|
||||
contentColor = ClawTheme.colors.text,
|
||||
tonalElevation = 2.dp,
|
||||
shadowElevation = 3.dp,
|
||||
) {
|
||||
Column(modifier = Modifier.padding(10.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Column(modifier = Modifier.padding(ClawTheme.spacing.xs), verticalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Icon(imageVector = card.icon, contentDescription = null, modifier = Modifier.size(17.dp), tint = card.tint)
|
||||
Text(text = card.title.uppercase(), style = ClawTheme.type.caption.copy(fontSize = 10.5.sp, lineHeight = 13.sp), color = ClawTheme.colors.textMuted, maxLines = 1, overflow = TextOverflow.Ellipsis, modifier = Modifier.weight(1f))
|
||||
@@ -782,16 +789,16 @@ private fun TalkEntryPanel(
|
||||
) {
|
||||
Surface(
|
||||
onClick = onOpenVoice,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(7.dp),
|
||||
modifier = Modifier.fillMaxWidth().heightIn(min = overviewTalkPanelMinHeight),
|
||||
shape = RoundedCornerShape(ClawTheme.radii.button),
|
||||
color = ClawTheme.colors.surfaceRaised.copy(alpha = 0.9f),
|
||||
contentColor = ClawTheme.colors.text,
|
||||
tonalElevation = 2.dp,
|
||||
shadowElevation = 3.dp,
|
||||
) {
|
||||
Row(modifier = Modifier.fillMaxWidth().padding(12.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp)) {
|
||||
Row(modifier = Modifier.fillMaxWidth().padding(horizontal = 14.dp, vertical = 12.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp)) {
|
||||
Surface(
|
||||
modifier = Modifier.size(48.dp),
|
||||
modifier = Modifier.size(44.dp),
|
||||
shape = CircleShape,
|
||||
color = Color(0xFF1976D2),
|
||||
tonalElevation = 2.dp,
|
||||
@@ -1231,7 +1238,7 @@ private fun RecentSessionList(
|
||||
rows: List<RecentSessionListItem>,
|
||||
onOpen: (String) -> Unit,
|
||||
) {
|
||||
OverviewLayeredPanel(contentPadding = PaddingValues(horizontal = 12.dp, vertical = 3.dp)) {
|
||||
OverviewLayeredPanel(contentPadding = PaddingValues(horizontal = 12.dp, vertical = 4.dp)) {
|
||||
Column {
|
||||
rows.forEachIndexed { index, row ->
|
||||
RecentSessionRowContent(
|
||||
@@ -1260,7 +1267,7 @@ private fun RecentSessionRowContent(
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.heightIn(min = 50.dp)
|
||||
.heightIn(min = overviewListRowMinHeight)
|
||||
.clip(RoundedCornerShape(ClawTheme.radii.row))
|
||||
.clickable(onClick = onClick)
|
||||
.padding(horizontal = 0.dp, vertical = 5.dp),
|
||||
@@ -1268,7 +1275,7 @@ private fun RecentSessionRowContent(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
Surface(
|
||||
modifier = Modifier.size(28.dp),
|
||||
modifier = Modifier.size(30.dp),
|
||||
shape = CircleShape,
|
||||
color = ClawTheme.colors.canvas,
|
||||
border = BorderStroke(1.dp, ClawTheme.colors.border.copy(alpha = 0.7f)),
|
||||
|
||||
Reference in New Issue
Block a user