style(ui): 列表项改用 Miuix BasicComponent(MD3 圆角卡片)

抽屉的会话行/入口行、设置页的主题选项统一换成 BasicComponent,间距 8dp,选中态用 ✓ 标记。
This commit is contained in:
AskaEth committed 2026-09-08 22:55:29 +08:00
1 parent 00856eeaf7
commit df2a26701c
2 files changed
+52 -54

No files matched your search

@@ -23,11 +23,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import top.yukonga.miuix.kmp.basic.BasicComponent
import top.yukonga.miuix.kmp.basic.Text
import top.yukonga.miuix.kmp.basic.TextButton
import top.yukonga.miuix.kmp.theme.MiuixTheme
/** 侧边栏内容:会话列表 + IoT/设置占位 + 登出。 */
/** 侧边栏内容:会话列表 + IoT/设置占位 + 登出。列表项统一用 Miuix 的 MD3 圆角卡片。 */
@Composable
fun ColumnScope.SessionDrawerContent(
state: SessionsUiState,
@@ -52,14 +53,17 @@ fun ColumnScope.SessionDrawerContent(
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp, vertical = 4.dp),
.padding(start = 20.dp, end = 12.dp, bottom = 4.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text("会话", style = MiuixTheme.textStyles.subtitle, modifier = Modifier.weight(1f))
TextButton("新建", onClick = onCreate)
}
LazyColumn(modifier = Modifier.weight(1f)) {
LazyColumn(
modifier = Modifier.weight(1f),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
items(items = state.sessions, key = { it.id }) { session ->
SessionRow(
session = session,
@@ -86,9 +90,11 @@ fun ColumnScope.SessionDrawerContent(
)
}
Spacer(Modifier.height(8.dp))
Spacer(Modifier.height(12.dp))
DrawerAction("IoT(规划中)", onOpenIot)
DrawerAction("App 设置(规划中)", onOpenSettings)
Spacer(Modifier.height(8.dp))
DrawerAction("App 设置", onOpenSettings)
Spacer(Modifier.height(8.dp))
DrawerAction("登出", onLogout)
Spacer(Modifier.height(16.dp))
@@ -113,42 +119,35 @@ private fun SessionRow(
onClick: () -> Unit,
onDelete: () -> Unit,
) {
Row(
modifier = Modifier
.fillMaxWidth()
.clickable(onClick = onClick)
.padding(horizontal = 20.dp, vertical = 12.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = session.title,
style = MiuixTheme.textStyles.main,
color = if (active) MiuixTheme.colorScheme.primary else MiuixTheme.colorScheme.onBackground,
modifier = Modifier.weight(1f),
)
if (!session.isMain) {
Text(
text = "删除",
style = MiuixTheme.textStyles.footnote1,
color = MiuixTheme.colorScheme.error,
modifier = Modifier
.clickable(onClick = onDelete)
.padding(horizontal = 8.dp, vertical = 4.dp),
)
}
}
BasicComponent(
title = session.title,
onClick = onClick,
endActions = {
if (active) {
Text(
text = "✓",
style = MiuixTheme.textStyles.main,
color = MiuixTheme.colorScheme.primary,
modifier = Modifier.padding(horizontal = 6.dp),
)
}
if (!session.isMain) {
Text(
text = "删除",
style = MiuixTheme.textStyles.footnote1,
color = MiuixTheme.colorScheme.error,
modifier = Modifier
.clickable(onClick = onDelete)
.padding(horizontal = 8.dp, vertical = 4.dp),
)
}
},
)
}
@Composable
private fun DrawerAction(label: String, onClick: () -> Unit) {
Text(
text = label,
style = MiuixTheme.textStyles.main,
modifier = Modifier
.fillMaxWidth()
.clickable(onClick = onClick)
.padding(horizontal = 20.dp, vertical = 14.dp),
)
BasicComponent(title = label, onClick = onClick)
}
@Composable
@@ -1,6 +1,5 @@
package top.yeij.cyrene.ui.settings
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
@@ -22,6 +21,7 @@ import top.yeij.cyrene.BuildConfig
import top.yeij.cyrene.app.AppContainer
import top.yeij.cyrene.core.prefs.AppPrefs
import top.yeij.cyrene.core.prefs.ThemeMode
import top.yukonga.miuix.kmp.basic.BasicComponent
import top.yukonga.miuix.kmp.basic.Scaffold
import top.yukonga.miuix.kmp.basic.SmallTopAppBar
import top.yukonga.miuix.kmp.basic.Text
@@ -59,6 +59,7 @@ fun SettingsScreen(
selected = prefs.themeMode == mode,
onClick = { scope.launch { settings.setThemeMode(mode) } },
)
Spacer(Modifier.height(8.dp))
}
SectionTitle("聊天")
@@ -68,6 +69,7 @@ fun SettingsScreen(
checked = prefs.showNarration,
onCheckedChange = { scope.launch { settings.setShowNarration(it) } },
)
Spacer(Modifier.height(8.dp))
SwitchPreference(
title = "思维链默认展开",
summary = "流式期间展开思维链,结束后自动折叠",
@@ -110,22 +112,19 @@ private fun ThemeOption(
selected: Boolean,
onClick: () -> Unit,
) {
Row(
modifier = Modifier
.fillMaxWidth()
.clickable(onClick = onClick)
.padding(horizontal = 20.dp, vertical = 14.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text(label, style = MiuixTheme.textStyles.main, modifier = Modifier.weight(1f))
if (selected) {
Text(
text = "✓",
style = MiuixTheme.textStyles.main,
color = MiuixTheme.colorScheme.primary,
)
}
}
BasicComponent(
title = label,
onClick = onClick,
endActions = {
if (selected) {
Text(
text = "✓",
style = MiuixTheme.textStyles.main,
color = MiuixTheme.colorScheme.primary,
)
}
},
)
}
private fun ThemeMode.label(): String = when (this) {