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

View file

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

View file

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

View file

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