11package com.crosspaste.ui.theme
22
33import androidx.compose.ui.graphics.Color
4- import androidx.compose.ui.graphics.toArgb
54import com.crosspaste.paste.PasteTypeExt
6- import com.materialkolor.ktx.harmonize
7- import com.materialkolor.ktx.toneColor
8- import com.materialkolor.palettes.TonalPalette
9-
10- enum class SemanticColorPolicy {
11- Dynamic ,
12- FixedHue ,
13- }
14-
15- data class SemanticColorGroup (
16- val color : Color ,
17- val onColor : Color ,
18- val container : Color ,
19- val onContainer : Color ,
20- ) {
21- companion object {
22- fun create (
23- sourceColor : Color ,
24- primary : Color ,
25- isDark : Boolean ,
26- policy : SemanticColorPolicy ,
27- isWarning : Boolean = false,
28- ): SemanticColorGroup {
29- val seed =
30- when (policy) {
31- SemanticColorPolicy .Dynamic -> sourceColor.harmonize(primary)
32- SemanticColorPolicy .FixedHue -> sourceColor
33- }
34- val palette = TonalPalette .fromInt(seed.toArgb())
35-
36- return if (isDark) {
37- SemanticColorGroup (
38- color = palette.toneColor(80 ),
39- onColor = palette.toneColor(20 ),
40- container = palette.toneColor(30 ),
41- onContainer = palette.toneColor(90 ),
42- )
43- } else {
44- if (isWarning) {
45- SemanticColorGroup (
46- color = palette.toneColor(80 ),
47- onColor = palette.toneColor(10 ),
48- container = palette.toneColor(90 ),
49- onContainer = palette.toneColor(10 ),
50- )
51- } else {
52- SemanticColorGroup (
53- color = palette.toneColor(40 ),
54- onColor = palette.toneColor(100 ),
55- container = palette.toneColor(90 ),
56- onContainer = palette.toneColor(10 ),
57- )
58- }
59- }
60- }
61- }
62- }
635
646data class ThemeExt (
657 val success : SemanticColorGroup ,
@@ -74,6 +16,7 @@ data class ThemeExt(
7416 val colorPasteTypeExt : PasteTypeExt ,
7517 val htmlPasteTypeExt : PasteTypeExt ,
7618 val rtfPasteTypeExt : PasteTypeExt ,
19+ val mutedText : Color ,
7720) {
7821 companion object {
7922 private val COLOR_SUCCESS = Color (0xFF2E7D32 )
@@ -112,6 +55,8 @@ data class ThemeExt(
11255 if (isDark) PasteTypeExt .DARK_HTML_PASTE_TYPE_EXT else PasteTypeExt .LIGHT_HTML_PASTE_TYPE_EXT ,
11356 rtfPasteTypeExt =
11457 if (isDark) PasteTypeExt .DARK_RTF_PASTE_TYPE_EXT else PasteTypeExt .LIGHT_RTF_PASTE_TYPE_EXT ,
58+ mutedText =
59+ if (isDark) Color (0xFF9CA3AF ) else Color (0xFF6B7280 ),
11560 )
11661 }
11762 }
0 commit comments