fix: mode pills are now multi-select toggles instead of single-select
Modes like Sampling, Bild, Suche can be combined — they're not mutually exclusive. Changed from single Int to Set<Int> with toggle logic.
This commit is contained in:
parent
78f03ada99
commit
3560665e83
2 changed files with 11 additions and 5 deletions
|
|
@ -144,7 +144,7 @@ fun EmptyHero(userName: String, onPick: (String) -> Unit, modifier: Modifier = M
|
|||
}
|
||||
|
||||
@Composable
|
||||
fun ModePillsRow(selected: Int, onSelect: (Int) -> Unit, modifier: Modifier = Modifier) {
|
||||
fun ModePillsRow(selected: Set<Int>, onToggle: (Int) -> Unit, modifier: Modifier = Modifier) {
|
||||
val cs = MaterialTheme.colorScheme
|
||||
val isDark = isSystemInDarkTheme()
|
||||
|
||||
|
|
@ -162,7 +162,7 @@ fun ModePillsRow(selected: Int, onSelect: (Int) -> Unit, modifier: Modifier = Mo
|
|||
) {
|
||||
chatModes.forEach { mode ->
|
||||
val label = stringResource(mode.labelRes)
|
||||
val active = mode.labelRes == selected
|
||||
val active = mode.labelRes in selected
|
||||
val backgroundFill = if (active) {
|
||||
if (isDark) cs.surface.copy(alpha = 0.8f) else cs.surface.copy(alpha = 0.88f)
|
||||
} else {
|
||||
|
|
@ -174,7 +174,7 @@ fun ModePillsRow(selected: Int, onSelect: (Int) -> Unit, modifier: Modifier = Mo
|
|||
.clip(KaizenShapes.pill)
|
||||
.background(backgroundFill)
|
||||
.border(1.2.dp, glassBorder, KaizenShapes.pill)
|
||||
.clickable { onSelect(mode.labelRes) }
|
||||
.clickable { onToggle(mode.labelRes) }
|
||||
.padding(horizontal = 13.dp, vertical = 8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ fun ChatScreen(
|
|||
var input by remember { mutableStateOf("") }
|
||||
var isStreaming by remember { mutableStateOf(false) }
|
||||
var nextId by remember { mutableStateOf(0L) }
|
||||
var selectedMode by remember { mutableStateOf(R.string.mode_standard) }
|
||||
var selectedModes by remember { mutableStateOf(setOf(R.string.mode_standard)) }
|
||||
|
||||
// Navigation State
|
||||
var currentScreen by remember { mutableStateOf(AppScreen.Chat) }
|
||||
|
|
@ -513,7 +513,13 @@ fun ChatScreen(
|
|||
.then(if (isTablet) Modifier.widthIn(max = 720.dp) else Modifier)
|
||||
) {
|
||||
Spacer(Modifier.height(24.dp))
|
||||
ModePillsRow(selected = selectedMode, onSelect = { selectedMode = it; haptics.tick() })
|
||||
ModePillsRow(
|
||||
selected = selectedModes,
|
||||
onToggle = { mode ->
|
||||
selectedModes = if (mode in selectedModes) selectedModes - mode else selectedModes + mode
|
||||
haptics.tick()
|
||||
},
|
||||
)
|
||||
Spacer(Modifier.height(10.dp))
|
||||
ChatInput(
|
||||
value = input,
|
||||
|
|
|
|||
Loading…
Reference in a new issue