diff --git a/apps/ios/SimpleXChat/Theme/ChatWallpaperTypes.swift b/apps/ios/SimpleXChat/Theme/ChatWallpaperTypes.swift index 2b64627dc2..7acdedf88c 100644 --- a/apps/ios/SimpleXChat/Theme/ChatWallpaperTypes.swift +++ b/apps/ios/SimpleXChat/Theme/ChatWallpaperTypes.swift @@ -50,7 +50,12 @@ public enum PresetWallpaper: CaseIterable { case .flowers: wallpaperBackgrounds(light: "#ffE2FFE4") case .hearts: wallpaperBackgrounds(light: "#ffFDECEC") case .kids: wallpaperBackgrounds(light: "#ffdbfdfb") - case .school: wallpaperBackgrounds(light: "#ffE7F5FF") + case .school: [ + DefaultTheme.LIGHT: oklch(0.9626785, 0.02004578, 238.6614), + DefaultTheme.DARK: oklch(0.2024453, 0.03849037, 273.4875), + DefaultTheme.SIMPLEX: oklch(0.2024453, 0.03849037, 273.4875), + DefaultTheme.BLACK: oklch(0.1285578, 0, 0) + ] case .travel: wallpaperBackgrounds(light: "#fff9eeff") } } @@ -82,10 +87,10 @@ public enum PresetWallpaper: CaseIterable { DefaultTheme.BLACK: "#ff16404B".colorFromReadableHex() ] case .school: [ - DefaultTheme.LIGHT: "#ffCEEBFF".colorFromReadableHex(), - DefaultTheme.DARK: "#ff0F293B".colorFromReadableHex(), - DefaultTheme.SIMPLEX: "#ff112f43".colorFromReadableHex(), - DefaultTheme.BLACK: "#ff0F293B".colorFromReadableHex() + DefaultTheme.LIGHT: oklch(0.9252349, 0.04096641, 238.0518), + DefaultTheme.DARK: oklch(0.2700986, 0.04630937, 241.5568), + DefaultTheme.SIMPLEX: oklch(0.2929108, 0.05102392, 240.8139), + DefaultTheme.BLACK: oklch(0.2700986, 0.04630937, 241.5568) ] case .travel: [ DefaultTheme.LIGHT: "#ffeedbfe".colorFromReadableHex(), @@ -204,28 +209,28 @@ public enum PresetWallpaper: CaseIterable { ] case .school: [ DefaultTheme.LIGHT: ThemeColors.from( - sentMessage: "#ffeef9ff", - sentQuote: "#ffD6EDFA", - receivedMessage: "#ffF3F5F9", - receivedQuote: "#ffe4e8ee" + sentMessage: "oklch(0.9756479, 0.01416295, 231.2013)", + sentQuote: "oklch(0.9331527, 0.03006113, 232.4212)", + receivedMessage: "oklch(0.9697657, 0.005748723, 264.5325)", + receivedQuote: "oklch(0.9296755, 0.00918803, 258.3366)" ), DefaultTheme.DARK: ThemeColors.from( - sentMessage: "#ff172833", - sentQuote: "#ff1C3E4F", - receivedMessage: "#ff26282c", - receivedQuote: "#ff393c40" + sentMessage: "oklch(0.267226, 0.03061943, 237.8609)", + sentQuote: "oklch(0.3464064, 0.04943852, 232.4005)", + receivedMessage: "oklch(0.2764251, 0.007910622, 264.4375)", + receivedQuote: "oklch(0.3548081, 0.008034593, 255.5451)" ), DefaultTheme.SIMPLEX: ThemeColors.from( - sentMessage: "#ff1A3C5D", - sentQuote: "#ff235b80", - receivedMessage: "#ff26282c", - receivedQuote: "#ff393c40" + sentMessage: "oklch(0.3481476, 0.07023845, 249.9259)", + sentQuote: "oklch(0.4520089, 0.08394516, 241.1934)", + receivedMessage: "oklch(0.2764251, 0.007910622, 264.4375)", + receivedQuote: "oklch(0.3548081, 0.008034593, 255.5451)" ), DefaultTheme.BLACK: ThemeColors.from( - sentMessage: "#ff1A3C5D", - sentQuote: "#ff235b80", - receivedMessage: "#ff1d1e22", - receivedQuote: "#ff292b2f" + sentMessage: "oklch(0.3481476, 0.07023845, 249.9259)", + sentQuote: "oklch(0.4520089, 0.08394516, 241.1934)", + receivedMessage: "oklch(0.2356588, 0.007789041, 274.6063)", + receivedQuote: "oklch(0.2886546, 0.007823012, 264.445)" ) ] case .travel: [ diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Theme.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Theme.kt index ee97ae8c9f..74ffe3150c 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Theme.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/Theme.kt @@ -219,6 +219,40 @@ data class ThemeColors( } } +/** Resolved preset colors — Color objects, not strings. Used for presets defined in code. */ +data class ResolvedColors( + val primary: Color? = null, + val primaryVariant: Color? = null, + val secondary: Color? = null, + val secondaryVariant: Color? = null, + val background: Color? = null, + val surface: Color? = null, + val title: Color? = null, + val primaryVariant2: Color? = null, + val sentMessage: Color? = null, + val sentQuote: Color? = null, + val receivedMessage: Color? = null, + val receivedQuote: Color? = null, +) { + companion object { + /** Temporary: convert hex ThemeColors to ResolvedColors. Replace with oklch() values. */ + fun fromThemeColors(tc: ThemeColors): ResolvedColors = ResolvedColors( + primary = tc.primary?.colorFromReadableHex(), + primaryVariant = tc.primaryVariant?.colorFromReadableHex(), + secondary = tc.secondary?.colorFromReadableHex(), + secondaryVariant = tc.secondaryVariant?.colorFromReadableHex(), + background = tc.background?.colorFromReadableHex(), + surface = tc.surface?.colorFromReadableHex(), + title = tc.title?.colorFromReadableHex(), + primaryVariant2 = tc.primaryVariant2?.colorFromReadableHex(), + sentMessage = tc.sentMessage?.colorFromReadableHex(), + sentQuote = tc.sentQuote?.colorFromReadableHex(), + receivedMessage = tc.receivedMessage?.colorFromReadableHex(), + receivedQuote = tc.receivedQuote?.colorFromReadableHex(), + ) + } +} + // Spec: spec/services/theme.md#ThemeWallpaper @Serializable data class ThemeWallpaper ( @@ -340,7 +374,7 @@ data class ThemeOverrides ( ) } - fun toColors(base: DefaultTheme, perChatTheme: ThemeColors?, perUserTheme: ThemeColors?, presetWallpaperTheme: ThemeColors?): Colors { + fun toColors(base: DefaultTheme, perChatTheme: ThemeColors?, perUserTheme: ThemeColors?, presetWallpaperTheme: ResolvedColors?): Colors { val baseColors = when (base) { DefaultTheme.LIGHT -> LightColorPalette DefaultTheme.DARK -> DarkColorPalette @@ -348,16 +382,16 @@ data class ThemeOverrides ( DefaultTheme.BLACK -> BlackColorPalette } return baseColors.copy( - primary = perChatTheme?.primary?.colorFromReadableHex() ?: perUserTheme?.primary?.colorFromReadableHex() ?: colors.primary?.colorFromReadableHex() ?: presetWallpaperTheme?.primary?.colorFromReadableHex() ?: baseColors.primary, - primaryVariant = perChatTheme?.primaryVariant?.colorFromReadableHex() ?: perUserTheme?.primaryVariant?.colorFromReadableHex() ?: colors.primaryVariant?.colorFromReadableHex() ?: presetWallpaperTheme?.primaryVariant?.colorFromReadableHex() ?: baseColors.primaryVariant, - secondary = perChatTheme?.secondary?.colorFromReadableHex() ?: perUserTheme?.secondary?.colorFromReadableHex() ?: colors.secondary?.colorFromReadableHex() ?: presetWallpaperTheme?.secondary?.colorFromReadableHex() ?: baseColors.secondary, - secondaryVariant = perChatTheme?.secondaryVariant?.colorFromReadableHex() ?: perUserTheme?.secondaryVariant?.colorFromReadableHex() ?: colors.secondaryVariant?.colorFromReadableHex() ?: presetWallpaperTheme?.secondaryVariant?.colorFromReadableHex() ?: baseColors.secondaryVariant, - background = perChatTheme?.background?.colorFromReadableHex() ?: perUserTheme?.background?.colorFromReadableHex() ?: colors.background?.colorFromReadableHex() ?: presetWallpaperTheme?.background?.colorFromReadableHex() ?: baseColors.background, - surface = perChatTheme?.surface?.colorFromReadableHex() ?: perUserTheme?.surface?.colorFromReadableHex() ?: colors.surface?.colorFromReadableHex() ?: presetWallpaperTheme?.surface?.colorFromReadableHex() ?: baseColors.surface, + primary = perChatTheme?.primary?.colorFromReadableHex() ?: perUserTheme?.primary?.colorFromReadableHex() ?: colors.primary?.colorFromReadableHex() ?: presetWallpaperTheme?.primary ?: baseColors.primary, + primaryVariant = perChatTheme?.primaryVariant?.colorFromReadableHex() ?: perUserTheme?.primaryVariant?.colorFromReadableHex() ?: colors.primaryVariant?.colorFromReadableHex() ?: presetWallpaperTheme?.primaryVariant ?: baseColors.primaryVariant, + secondary = perChatTheme?.secondary?.colorFromReadableHex() ?: perUserTheme?.secondary?.colorFromReadableHex() ?: colors.secondary?.colorFromReadableHex() ?: presetWallpaperTheme?.secondary ?: baseColors.secondary, + secondaryVariant = perChatTheme?.secondaryVariant?.colorFromReadableHex() ?: perUserTheme?.secondaryVariant?.colorFromReadableHex() ?: colors.secondaryVariant?.colorFromReadableHex() ?: presetWallpaperTheme?.secondaryVariant ?: baseColors.secondaryVariant, + background = perChatTheme?.background?.colorFromReadableHex() ?: perUserTheme?.background?.colorFromReadableHex() ?: colors.background?.colorFromReadableHex() ?: presetWallpaperTheme?.background ?: baseColors.background, + surface = perChatTheme?.surface?.colorFromReadableHex() ?: perUserTheme?.surface?.colorFromReadableHex() ?: colors.surface?.colorFromReadableHex() ?: presetWallpaperTheme?.surface ?: baseColors.surface, ) } - fun toAppColors(base: DefaultTheme, perChatTheme: ThemeColors?, perChatWallpaperType: WallpaperType?, perUserTheme: ThemeColors?, perUserWallpaperType: WallpaperType?, presetWallpaperTheme: ThemeColors?): AppColors { + fun toAppColors(base: DefaultTheme, perChatTheme: ThemeColors?, perChatWallpaperType: WallpaperType?, perUserTheme: ThemeColors?, perUserWallpaperType: WallpaperType?, presetWallpaperTheme: ResolvedColors?): AppColors { val baseColors = when (base) { DefaultTheme.LIGHT -> LightColorPaletteApp DefaultTheme.DARK -> DarkColorPaletteApp @@ -365,13 +399,13 @@ data class ThemeOverrides ( DefaultTheme.BLACK -> BlackColorPaletteApp } - val sentMessageFallback = colors.sentMessage?.colorFromReadableHex() ?: presetWallpaperTheme?.sentMessage?.colorFromReadableHex() ?: baseColors.sentMessage - val sentQuoteFallback = colors.sentQuote?.colorFromReadableHex() ?: presetWallpaperTheme?.sentQuote?.colorFromReadableHex() ?: baseColors.sentQuote - val receivedMessageFallback = colors.receivedMessage?.colorFromReadableHex() ?: presetWallpaperTheme?.receivedMessage?.colorFromReadableHex() ?: baseColors.receivedMessage - val receivedQuoteFallback = colors.receivedQuote?.colorFromReadableHex() ?: presetWallpaperTheme?.receivedQuote?.colorFromReadableHex() ?: baseColors.receivedQuote + val sentMessageFallback = colors.sentMessage?.colorFromReadableHex() ?: presetWallpaperTheme?.sentMessage ?: baseColors.sentMessage + val sentQuoteFallback = colors.sentQuote?.colorFromReadableHex() ?: presetWallpaperTheme?.sentQuote ?: baseColors.sentQuote + val receivedMessageFallback = colors.receivedMessage?.colorFromReadableHex() ?: presetWallpaperTheme?.receivedMessage ?: baseColors.receivedMessage + val receivedQuoteFallback = colors.receivedQuote?.colorFromReadableHex() ?: presetWallpaperTheme?.receivedQuote ?: baseColors.receivedQuote return baseColors.copy( - title = perChatTheme?.title?.colorFromReadableHex() ?: perUserTheme?.title?.colorFromReadableHex() ?: colors.title?.colorFromReadableHex() ?: presetWallpaperTheme?.title?.colorFromReadableHex() ?: baseColors.title, - primaryVariant2 = perChatTheme?.primaryVariant2?.colorFromReadableHex() ?: perUserTheme?.primaryVariant2?.colorFromReadableHex() ?: colors.primaryVariant2?.colorFromReadableHex() ?: presetWallpaperTheme?.primaryVariant2?.colorFromReadableHex() ?: baseColors.primaryVariant2, + title = perChatTheme?.title?.colorFromReadableHex() ?: perUserTheme?.title?.colorFromReadableHex() ?: colors.title?.colorFromReadableHex() ?: presetWallpaperTheme?.title ?: baseColors.title, + primaryVariant2 = perChatTheme?.primaryVariant2?.colorFromReadableHex() ?: perUserTheme?.primaryVariant2?.colorFromReadableHex() ?: colors.primaryVariant2?.colorFromReadableHex() ?: presetWallpaperTheme?.primaryVariant2 ?: baseColors.primaryVariant2, sentMessage = if (perChatTheme?.sentMessage != null) perChatTheme.sentMessage.colorFromReadableHex() else if (perUserTheme != null && (perChatWallpaperType == null || perUserWallpaperType == null || perChatWallpaperType.sameType(perUserWallpaperType))) perUserTheme.sentMessage?.colorFromReadableHex() ?: sentMessageFallback else sentMessageFallback, @@ -416,7 +450,7 @@ data class ThemeOverrides ( ) } - fun withFilledColors(base: DefaultTheme, perChatTheme: ThemeColors?, perChatWallpaperType: WallpaperType?, perUserTheme: ThemeColors?, perUserWallpaperType: WallpaperType?, presetWallpaperTheme: ThemeColors?): ThemeColors { + fun withFilledColors(base: DefaultTheme, perChatTheme: ThemeColors?, perChatWallpaperType: WallpaperType?, perUserTheme: ThemeColors?, perUserWallpaperType: WallpaperType?, presetWallpaperTheme: ResolvedColors?): ThemeColors { val c = toColors(base, perChatTheme, perUserTheme, presetWallpaperTheme) val ac = toAppColors(base, perChatTheme, perChatWallpaperType, perUserTheme, perUserWallpaperType, presetWallpaperTheme) return ThemeColors( diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt index ba7c7d1b13..e1f8734bd3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt @@ -2,10 +2,8 @@ package chat.simplex.common.ui.theme import androidx.compose.material.Colors import androidx.compose.runtime.MutableState -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.* import androidx.compose.ui.graphics.colorspace.ColorSpaces -import androidx.compose.ui.graphics.convert -import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.text.font.FontFamily import chat.simplex.common.model.* import chat.simplex.common.platform.* diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt index c1a76d7bf8..f7f254a8fd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt @@ -28,7 +28,7 @@ enum class PresetWallpaper( val scale: Float, val background: Map, val tint: Map, - val colors: Map, + val colors: Map, ) { CATS(MR.images.wallpaper_cats, "cats", 0.63f, wallpaperBackgrounds(light = "#ffF8F6EA"), @@ -39,30 +39,30 @@ enum class PresetWallpaper( DefaultTheme.BLACK to "#ff4b3b0e".colorFromReadableHex() ), mapOf( - DefaultTheme.LIGHT to ThemeColors( + DefaultTheme.LIGHT to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#fffffaed", sentQuote = "#fffaf0d6", receivedMessage = "#ffF8F7F4", receivedQuote = "#ffefede9", - ), - DefaultTheme.DARK to ThemeColors( + )), + DefaultTheme.DARK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff2f2919", sentQuote = "#ff473a1d", receivedMessage = "#ff272624", receivedQuote = "#ff373633", - ), - DefaultTheme.SIMPLEX to ThemeColors( + )), + DefaultTheme.SIMPLEX to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff41371b", sentQuote = "#ff654f1c", receivedMessage = "#ff272624", receivedQuote = "#ff373633", - ), - DefaultTheme.BLACK to ThemeColors( + )), + DefaultTheme.BLACK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff41371b", sentQuote = "#ff654f1c", receivedMessage = "#ff1f1e1b", receivedQuote = "#ff2f2d27", - ), + )), ) ), FLOWERS(MR.images.wallpaper_flowers, "flowers", 0.53f, @@ -74,30 +74,30 @@ enum class PresetWallpaper( DefaultTheme.BLACK to "#ff31560D".colorFromReadableHex() ), mapOf( - DefaultTheme.LIGHT to ThemeColors( + DefaultTheme.LIGHT to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#fff1ffe5", sentQuote = "#ffdcf9c4", receivedMessage = "#ffF4F8F2", receivedQuote = "#ffe7ece7", - ), - DefaultTheme.DARK to ThemeColors( + )), + DefaultTheme.DARK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff163521", sentQuote = "#ff1B5330", receivedMessage = "#ff242523", receivedQuote = "#ff353733", - ), - DefaultTheme.SIMPLEX to ThemeColors( + )), + DefaultTheme.SIMPLEX to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff184739", sentQuote = "#ff1F6F4B", receivedMessage = "#ff242523", receivedQuote = "#ff353733", - ), - DefaultTheme.BLACK to ThemeColors( + )), + DefaultTheme.BLACK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff184739", sentQuote = "#ff1F6F4B", receivedMessage = "#ff1c1f1a", receivedQuote = "#ff282b25", - ), + )), ) ), HEARTS(MR.images.wallpaper_hearts, "hearts", 0.59f, @@ -109,30 +109,30 @@ enum class PresetWallpaper( DefaultTheme.BLACK to "#ff3C0F0F".colorFromReadableHex() ), mapOf( - DefaultTheme.LIGHT to ThemeColors( + DefaultTheme.LIGHT to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#fffff4f4", sentQuote = "#ffffdfdf", receivedMessage = "#fff8f6f6", receivedQuote = "#ffefebeb", - ), - DefaultTheme.DARK to ThemeColors( + )), + DefaultTheme.DARK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff301515", sentQuote = "#ff4C1818", receivedMessage = "#ff242121", receivedQuote = "#ff3b3535", - ), - DefaultTheme.SIMPLEX to ThemeColors( + )), + DefaultTheme.SIMPLEX to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff491A28", sentQuote = "#ff761F29", receivedMessage = "#ff242121", receivedQuote = "#ff3b3535", - ), - DefaultTheme.BLACK to ThemeColors( + )), + DefaultTheme.BLACK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff491A28", sentQuote = "#ff761F29", receivedMessage = "#ff1f1b1b", receivedQuote = "#ff2e2626", - ), + )), ) ), KIDS(MR.images.wallpaper_kids, "kids", 0.53f, @@ -144,64 +144,69 @@ enum class PresetWallpaper( DefaultTheme.BLACK to "#ff16404B".colorFromReadableHex() ), mapOf( - DefaultTheme.LIGHT to ThemeColors( + DefaultTheme.LIGHT to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ffeafeff", sentQuote = "#ffcbf4f7", receivedMessage = "#fff3fafa", receivedQuote = "#ffe4efef", - ), - DefaultTheme.DARK to ThemeColors( + )), + DefaultTheme.DARK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff16302F", sentQuote = "#ff1a4a49", receivedMessage = "#ff252626", receivedQuote = "#ff373A39", - ), - DefaultTheme.SIMPLEX to ThemeColors( + )), + DefaultTheme.SIMPLEX to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff1a4745", sentQuote = "#ff1d6b69", receivedMessage = "#ff252626", receivedQuote = "#ff373a39", - ), - DefaultTheme.BLACK to ThemeColors( + )), + DefaultTheme.BLACK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff1a4745", sentQuote = "#ff1d6b69", receivedMessage = "#ff1e1f1f", receivedQuote = "#ff262b29", - ), + )), ) ), SCHOOL(MR.images.wallpaper_school, "school", 0.53f, - wallpaperBackgrounds(light = "#ffE7F5FF"), + mapOf( + DefaultTheme.LIGHT to oklch(0.9626785f, 0.02004578f, 238.6614f), + DefaultTheme.DARK to oklch(0.2024453f, 0.03849037f, 273.4875f), + DefaultTheme.SIMPLEX to oklch(0.2024453f, 0.03849037f, 273.4875f), + DefaultTheme.BLACK to oklch(0.1285578f, 0f, 0f) + ), tint = mapOf( - DefaultTheme.LIGHT to "#ffCEEBFF".colorFromReadableHex(), - DefaultTheme.DARK to "#ff0F293B".colorFromReadableHex(), - DefaultTheme.SIMPLEX to "#ff112f43".colorFromReadableHex(), - DefaultTheme.BLACK to "#ff0F293B".colorFromReadableHex() + DefaultTheme.LIGHT to oklch(0.9252349f, 0.04096641f, 238.0518f), + DefaultTheme.DARK to oklch(0.2700986f, 0.04630937f, 241.5568f), + DefaultTheme.SIMPLEX to oklch(0.2929108f, 0.05102392f, 240.8139f), + DefaultTheme.BLACK to oklch(0.2700986f, 0.04630937f, 241.5568f) ), mapOf( - DefaultTheme.LIGHT to ThemeColors( - sentMessage = "#ffeef9ff", - sentQuote = "#ffD6EDFA", - receivedMessage = "#ffF3F5F9", - receivedQuote = "#ffe4e8ee", + DefaultTheme.LIGHT to ResolvedColors( + sentMessage = oklch(0.9756479f, 0.01416295f, 231.2013f), + sentQuote = oklch(0.9331527f, 0.03006113f, 232.4212f), + receivedMessage = oklch(0.9697657f, 0.005748723f, 264.5325f), + receivedQuote = oklch(0.9296755f, 0.00918803f, 258.3366f), ), - DefaultTheme.DARK to ThemeColors( - sentMessage = "#ff172833", - sentQuote = "#ff1C3E4F", - receivedMessage = "#ff26282c", - receivedQuote = "#ff393c40", + DefaultTheme.DARK to ResolvedColors( + sentMessage = oklch(0.267226f, 0.03061943f, 237.8609f), + sentQuote = oklch(0.3464064f, 0.04943852f, 232.4005f), + receivedMessage = oklch(0.2764251f, 0.007910622f, 264.4375f), + receivedQuote = oklch(0.3548081f, 0.008034593f, 255.5451f), ), - DefaultTheme.SIMPLEX to ThemeColors( - sentMessage = "#ff1A3C5D", - sentQuote = "#ff235b80", - receivedMessage = "#ff26282c", - receivedQuote = "#ff393c40", + DefaultTheme.SIMPLEX to ResolvedColors( + sentMessage = oklch(0.3481476f, 0.07023845f, 249.9259f), + sentQuote = oklch(0.4520089f, 0.08394516f, 241.1934f), + receivedMessage = oklch(0.2764251f, 0.007910622f, 264.4375f), + receivedQuote = oklch(0.3548081f, 0.008034593f, 255.5451f), ), - DefaultTheme.BLACK to ThemeColors( - sentMessage = "#ff1A3C5D", - sentQuote = "#ff235b80", - receivedMessage = "#ff1d1e22", - receivedQuote = "#ff292b2f", + DefaultTheme.BLACK to ResolvedColors( + sentMessage = oklch(0.3481476f, 0.07023845f, 249.9259f), + sentQuote = oklch(0.4520089f, 0.08394516f, 241.1934f), + receivedMessage = oklch(0.2356588f, 0.007789041f, 274.6063f), + receivedQuote = oklch(0.2886546f, 0.007823012f, 264.445f), ), ) ), @@ -214,30 +219,30 @@ enum class PresetWallpaper( DefaultTheme.BLACK to "#ff311E48".colorFromReadableHex() ), mapOf( - DefaultTheme.LIGHT to ThemeColors( + DefaultTheme.LIGHT to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#fffcf6ff", sentQuote = "#fff2e0fc", receivedMessage = "#ffF6F4F7", receivedQuote = "#ffede9ee", - ), - DefaultTheme.DARK to ThemeColors( + )), + DefaultTheme.DARK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff33263B", sentQuote = "#ff53385E", receivedMessage = "#ff272528", receivedQuote = "#ff3B373E", - ), - DefaultTheme.SIMPLEX to ThemeColors( + )), + DefaultTheme.SIMPLEX to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff3C255D", sentQuote = "#ff623485", receivedMessage = "#ff26273B", receivedQuote = "#ff3A394F", - ), - DefaultTheme.BLACK to ThemeColors( + )), + DefaultTheme.BLACK to ResolvedColors.fromThemeColors(ThemeColors( sentMessage = "#ff3C255D", sentQuote = "#ff623485", receivedMessage = "#ff231f23", receivedQuote = "#ff2c2931", - ), + )), ) );