Change some theming stuff

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2025-03-19 12:53:58 +01:00
parent 2b37dc2529
commit 2d164b265e
10 changed files with 81 additions and 51 deletions

View file

@ -212,6 +212,7 @@
<string name="game_master__title">Admin</string> <string name="game_master__title">Admin</string>
<string name="game_master__action">GameMaster</string> <string name="game_master__action">GameMaster</string>
<string name="game_master__character__filter">Filtrer par nom :</string>
<string name="game_master__character_level__label">niv: %1$d</string> <string name="game_master__character_level__label">niv: %1$d</string>
<string name="game_master__character_tag__character_search">Joueur</string> <string name="game_master__character_tag__character_search">Joueur</string>
<string name="game_master__character_tag__character_label">Joueur-%1$d</string> <string name="game_master__character_tag__character_label">Joueur-%1$d</string>

View file

@ -1,19 +1,18 @@
package com.pixelized.desktop.lwa.ui.composable.textfield package com.pixelized.desktop.lwa.ui.composable.textfield
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.TextField import androidx.compose.material.TextField
import androidx.compose.material.TextFieldDefaults import androidx.compose.material.TextFieldColors
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusDirection import androidx.compose.ui.focus.FocusDirection
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaTextFieldColors
import com.pixelized.desktop.lwa.utils.rememberKeyboardActions import com.pixelized.desktop.lwa.utils.rememberKeyboardActions
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ -29,13 +28,13 @@ data class LwaTextFieldUio(
@Composable @Composable
fun LwaTextField( fun LwaTextField(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
colors: TextFieldColors = LwaTextFieldColors(),
leadingIcon: @Composable (() -> Unit)? = null, leadingIcon: @Composable (() -> Unit)? = null,
trailingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null,
singleLine: Boolean = true, singleLine: Boolean = true,
field: LwaTextFieldUio, field: LwaTextFieldUio,
) { ) {
val focus = LocalFocusManager.current val focus = LocalFocusManager.current
val colorScheme = MaterialTheme.colors
val localModifier = if (singleLine) { val localModifier = if (singleLine) {
Modifier.height(height = 56.dp) Modifier.height(height = 56.dp)
@ -49,14 +48,7 @@ fun LwaTextField(
TextField( TextField(
modifier = localModifier.then(other = modifier), modifier = localModifier.then(other = modifier),
colors = TextFieldDefaults.textFieldColors( colors = colors,
backgroundColor = remember(field.enable) {
when (field.enable) {
true -> colorScheme.onSurface.copy(alpha = 0.03f)
else -> colorScheme.surface
}
},
),
keyboardActions = rememberKeyboardActions { keyboardActions = rememberKeyboardActions {
focus.moveFocus(FocusDirection.Next) focus.moveFocus(FocusDirection.Next)
}, },

View file

@ -9,6 +9,7 @@ import androidx.compose.runtime.Stable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaCheckboxColors
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
@Stable @Stable
@ -32,6 +33,7 @@ fun LevelUpField(
text = field.label, text = field.label,
) )
Checkbox( Checkbox(
colors = LwaCheckboxColors(),
checked = field.checked.value, checked = field.checked.value,
onCheckedChange = field.onCheck, onCheckedChange = field.onCheck,
) )

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
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.padding import androidx.compose.foundation.layout.padding
@ -30,7 +29,9 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import androidx.compose.material.Surface import androidx.compose.material.Surface
import androidx.compose.material.Switch import androidx.compose.material.Switch
import androidx.compose.material.SwitchColors
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material.TopAppBar import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Add
@ -42,6 +43,8 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.LocalWindowController import com.pixelized.desktop.lwa.LocalWindowController
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField
@ -51,6 +54,7 @@ import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMCharacter
import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMCharacterUio import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMCharacterUio
import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTag import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTag
import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTagUio import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTagUio
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaSwitchColors
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.Res
@ -110,6 +114,8 @@ fun GameMasterScreen(
@Composable @Composable
private fun GameMasterContent( private fun GameMasterContent(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
padding: Dp = 16.dp,
spacing: Dp = 8.dp,
filterChipsState: LazyListState = rememberLazyListState(), filterChipsState: LazyListState = rememberLazyListState(),
filter: LwaTextFieldUio, filter: LwaTextFieldUio,
tags: State<List<GMTagUio>>, tags: State<List<GMTagUio>>,
@ -147,8 +153,8 @@ private fun GameMasterContent(
text = stringResource(Res.string.game_master__action), text = stringResource(Res.string.game_master__action),
) )
Switch( Switch(
colors = LwaSwitchColors(),
checked = gameMaster.value, checked = gameMaster.value,
colors = MaterialTheme.lwa.colorScheme.component.switch,
onCheckedChange = null, onCheckedChange = null,
) )
} }
@ -195,8 +201,10 @@ private fun GameMasterContent(
}, },
), ),
state = filterChipsState, state = filterChipsState,
contentPadding = remember { PaddingValues(all = 8.dp) }, contentPadding = remember(padding, spacing) {
horizontalArrangement = Arrangement.spacedBy(space = 8.dp), PaddingValues(horizontal = padding, vertical = spacing)
},
horizontalArrangement = Arrangement.spacedBy(space = spacing),
) { ) {
items( items(
items = tags.value, items = tags.value,
@ -217,13 +225,13 @@ private fun GameMasterContent(
modifier = Modifier.matchParentSize(), modifier = Modifier.matchParentSize(),
contentPadding = remember { contentPadding = remember {
PaddingValues( PaddingValues(
start = 8.dp, start = padding,
top = 8.dp, top = padding,
end = 8.dp, end = padding,
bottom = 8.dp + 48.dp + 8.dp, bottom = padding + 48.dp + padding,
) )
}, },
verticalArrangement = Arrangement.spacedBy(space = 8.dp), verticalArrangement = Arrangement.spacedBy(space = spacing),
) { ) {
items( items(
items = characters.value, items = characters.value,
@ -243,11 +251,10 @@ private fun GameMasterContent(
) )
} }
} }
IconButton( IconButton(
modifier = Modifier modifier = Modifier
.align(alignment = Alignment.BottomEnd) .align(alignment = Alignment.BottomEnd)
.padding(all = 8.dp) .padding(all = padding)
.background( .background(
color = MaterialTheme.lwa.colorScheme.base.primary, color = MaterialTheme.lwa.colorScheme.base.primary,
shape = CircleShape, shape = CircleShape,

View file

@ -13,10 +13,11 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.Res
import lwacharactersheet.composeapp.generated.resources.game_master__character__filter
import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__character_search import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__character_search
import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__npc_search import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__npc_search
import org.jetbrains.compose.resources.getString import org.jetbrains.compose.resources.getString
@ -32,7 +33,7 @@ class GameMasterViewModel(
private val _filter = MutableStateFlow("") private val _filter = MutableStateFlow("")
val filter = LwaTextFieldUio( val filter = LwaTextFieldUio(
enable = true, enable = true,
labelFlow = MutableStateFlow("Filtre"), labelFlow = MutableStateFlow(runBlocking { getString(Res.string.game_master__character__filter) }),
valueFlow = _filter, valueFlow = _filter,
placeHolderFlow = MutableStateFlow(null), placeHolderFlow = MutableStateFlow(null),
onValueChange = { _filter.value = it }, onValueChange = { _filter.value = it },

View file

@ -1,7 +1,6 @@
package com.pixelized.desktop.lwa.ui.theme.color package com.pixelized.desktop.lwa.ui.theme.color
import androidx.compose.material.Colors import androidx.compose.material.Colors
import androidx.compose.material.SwitchColors
import androidx.compose.material.darkColors import androidx.compose.material.darkColors
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.ReadOnlyComposable
@ -11,23 +10,16 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.graphics.compositeOver
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.theme.color.component.lwaSwitch
import kotlin.math.ln import kotlin.math.ln
@Stable @Stable
data class LwaColors( data class LwaColors(
val base: Colors, val base: Colors,
val component: Component,
val elevated: Elevated, val elevated: Elevated,
val portrait: Portrait, val portrait: Portrait,
val portraitBackgroundBrush: Brush, val portraitBackgroundBrush: Brush,
val chat: Chat, val chat: Chat,
) { ) {
@Stable
data class Component(
val switch: SwitchColors,
)
@Stable @Stable
data class Elevated( data class Elevated(
val base1dp: Color, val base1dp: Color,
@ -80,9 +72,6 @@ fun darkLwaColorTheme(
elevation = 4.dp, elevation = 4.dp,
), ),
), ),
component: LwaColors.Component = LwaColors.Component(
switch = lwaSwitch(base = base),
),
portraitBackgroundBrush: Brush = Brush.verticalGradient( portraitBackgroundBrush: Brush = Brush.verticalGradient(
listOf( listOf(
elevated.base1dp.copy(alpha = 0.0f), elevated.base1dp.copy(alpha = 0.0f),
@ -107,7 +96,6 @@ fun darkLwaColorTheme(
), ),
): LwaColors = LwaColors( ): LwaColors = LwaColors(
base = base, base = base,
component = component,
elevated = elevated, elevated = elevated,
portrait = portrait, portrait = portrait,
portraitBackgroundBrush = portraitBackgroundBrush, portraitBackgroundBrush = portraitBackgroundBrush,

View file

@ -0,0 +1,17 @@
package com.pixelized.desktop.lwa.ui.theme.color.component
import androidx.compose.material.CheckboxColors
import androidx.compose.material.CheckboxDefaults
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import com.pixelized.desktop.lwa.ui.theme.color.LwaColors
import com.pixelized.desktop.lwa.ui.theme.lwa
@Composable
@Stable
fun LwaCheckboxColors(
colors: LwaColors = MaterialTheme.lwa.colorScheme,
): CheckboxColors = CheckboxDefaults.colors(
checkedColor = colors.base.primary,
)

View file

@ -1,14 +0,0 @@
package com.pixelized.desktop.lwa.ui.theme.color.component
import androidx.compose.material.Colors
import androidx.compose.material.SwitchDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
@Composable
@Stable
fun lwaSwitch(
base: Colors
) = SwitchDefaults.colors(
checkedThumbColor = base.primary,
)

View file

@ -0,0 +1,16 @@
package com.pixelized.desktop.lwa.ui.theme.color.component
import androidx.compose.material.MaterialTheme
import androidx.compose.material.SwitchDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import com.pixelized.desktop.lwa.ui.theme.color.LwaColors
import com.pixelized.desktop.lwa.ui.theme.lwa
@Composable
@Stable
fun LwaSwitchColors(
colors: LwaColors = MaterialTheme.lwa.colorScheme,
) = SwitchDefaults.colors(
checkedThumbColor = colors.base.primary,
)

View file

@ -0,0 +1,20 @@
package com.pixelized.desktop.lwa.ui.theme.color.component
import androidx.compose.material.MaterialTheme
import androidx.compose.material.TextFieldColors
import androidx.compose.material.TextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.ui.graphics.Color
import com.pixelized.desktop.lwa.ui.theme.color.LwaColors
import com.pixelized.desktop.lwa.ui.theme.lwa
@Composable
@Stable
fun LwaTextFieldColors(
colors: LwaColors = MaterialTheme.lwa.colorScheme,
): TextFieldColors = TextFieldDefaults.textFieldColors(
backgroundColor = colors.elevated.base1dp,
disabledIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
)