Skip to content

Commit fc009be

Browse files
authored
✨ Add mutedText color to ThemeExt (#3728)
1 parent a77d9f2 commit fc009be

File tree

2 files changed

+64
-58
lines changed

2 files changed

+64
-58
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.crosspaste.ui.theme
2+
3+
import androidx.compose.ui.graphics.Color
4+
import androidx.compose.ui.graphics.toArgb
5+
import com.materialkolor.ktx.harmonize
6+
import com.materialkolor.ktx.toneColor
7+
import com.materialkolor.palettes.TonalPalette
8+
9+
enum class SemanticColorPolicy {
10+
Dynamic,
11+
FixedHue,
12+
}
13+
14+
data class SemanticColorGroup(
15+
val color: Color,
16+
val onColor: Color,
17+
val container: Color,
18+
val onContainer: Color,
19+
) {
20+
companion object {
21+
fun create(
22+
sourceColor: Color,
23+
primary: Color,
24+
isDark: Boolean,
25+
policy: SemanticColorPolicy,
26+
isWarning: Boolean = false,
27+
): SemanticColorGroup {
28+
val seed =
29+
when (policy) {
30+
SemanticColorPolicy.Dynamic -> sourceColor.harmonize(primary)
31+
SemanticColorPolicy.FixedHue -> sourceColor
32+
}
33+
val palette = TonalPalette.fromInt(seed.toArgb())
34+
35+
return if (isDark) {
36+
SemanticColorGroup(
37+
color = palette.toneColor(80),
38+
onColor = palette.toneColor(20),
39+
container = palette.toneColor(30),
40+
onContainer = palette.toneColor(90),
41+
)
42+
} else {
43+
if (isWarning) {
44+
SemanticColorGroup(
45+
color = palette.toneColor(80),
46+
onColor = palette.toneColor(10),
47+
container = palette.toneColor(90),
48+
onContainer = palette.toneColor(10),
49+
)
50+
} else {
51+
SemanticColorGroup(
52+
color = palette.toneColor(40),
53+
onColor = palette.toneColor(100),
54+
container = palette.toneColor(90),
55+
onContainer = palette.toneColor(10),
56+
)
57+
}
58+
}
59+
}
60+
}
61+
}

app/src/commonMain/kotlin/com/crosspaste/ui/theme/ThemeExt.kt

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,7 @@
11
package com.crosspaste.ui.theme
22

33
import androidx.compose.ui.graphics.Color
4-
import androidx.compose.ui.graphics.toArgb
54
import 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

646
data 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

Comments
 (0)