Skip to content

Commit cea703f

Browse files
guiyanakuangclaude
andauthored
✨ Add PasteTypeExt constants for all paste types (#3724)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 758bdf7 commit cea703f

File tree

2 files changed

+140
-0
lines changed

2 files changed

+140
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package com.crosspaste.paste
2+
3+
import androidx.compose.material.icons.Icons
4+
import androidx.compose.material.icons.automirrored.outlined.Article
5+
import androidx.compose.material.icons.outlined.Code
6+
import androidx.compose.material.icons.outlined.Description
7+
import androidx.compose.material.icons.outlined.Image
8+
import androidx.compose.material.icons.outlined.Link
9+
import androidx.compose.material.icons.outlined.Palette
10+
import androidx.compose.material.icons.outlined.TextFields
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.compose.ui.graphics.vector.ImageVector
13+
14+
data class PasteTypeExt(
15+
val imageVector: ImageVector,
16+
val color: Color,
17+
val bgColor: Color,
18+
) {
19+
companion object {
20+
// Text
21+
val LIGHT_TEXT_PASTE_TYPE_EXT =
22+
PasteTypeExt(
23+
imageVector = Icons.Outlined.TextFields,
24+
color = Color(0xFF1B6EF3),
25+
bgColor = Color(0xFFE8F0FE),
26+
)
27+
val DARK_TEXT_PASTE_TYPE_EXT =
28+
PasteTypeExt(
29+
imageVector = Icons.Outlined.TextFields,
30+
color = Color(0xFF60A5FA),
31+
bgColor = Color(0xFF1E3A5F),
32+
)
33+
34+
// Image
35+
val LIGHT_IMAGE_PASTE_TYPE_EXT =
36+
PasteTypeExt(
37+
imageVector = Icons.Outlined.Image,
38+
color = Color(0xFFEF4444),
39+
bgColor = Color(0xFFFEE2E2),
40+
)
41+
val DARK_IMAGE_PASTE_TYPE_EXT =
42+
PasteTypeExt(
43+
imageVector = Icons.Outlined.Image,
44+
color = Color(0xFFF87171),
45+
bgColor = Color(0xFF5C1A1A),
46+
)
47+
48+
// File
49+
val LIGHT_FILE_PASTE_TYPE_EXT =
50+
PasteTypeExt(
51+
imageVector = Icons.Outlined.Description,
52+
color = Color(0xFF7C3AED),
53+
bgColor = Color(0xFFF3E8FF),
54+
)
55+
val DARK_FILE_PASTE_TYPE_EXT =
56+
PasteTypeExt(
57+
imageVector = Icons.Outlined.Description,
58+
color = Color(0xFFA78BFA),
59+
bgColor = Color(0xFF3B1F6E),
60+
)
61+
62+
// URL
63+
val LIGHT_URL_PASTE_TYPE_EXT =
64+
PasteTypeExt(
65+
imageVector = Icons.Outlined.Link,
66+
color = Color(0xFF1EA446),
67+
bgColor = Color(0xFFE6F4EA),
68+
)
69+
val DARK_URL_PASTE_TYPE_EXT =
70+
PasteTypeExt(
71+
imageVector = Icons.Outlined.Link,
72+
color = Color(0xFF4ADE80),
73+
bgColor = Color(0xFF14412A),
74+
)
75+
76+
// Color
77+
val LIGHT_COLOR_PASTE_TYPE_EXT =
78+
PasteTypeExt(
79+
imageVector = Icons.Outlined.Palette,
80+
color = Color(0xFFD97706),
81+
bgColor = Color(0xFFFEF3C7),
82+
)
83+
val DARK_COLOR_PASTE_TYPE_EXT =
84+
PasteTypeExt(
85+
imageVector = Icons.Outlined.Palette,
86+
color = Color(0xFFFBBF24),
87+
bgColor = Color(0xFF4A3310),
88+
)
89+
90+
// HTML
91+
val LIGHT_HTML_PASTE_TYPE_EXT =
92+
PasteTypeExt(
93+
imageVector = Icons.Outlined.Code,
94+
color = Color(0xFFE8710A),
95+
bgColor = Color(0xFFFEF0E1),
96+
)
97+
val DARK_HTML_PASTE_TYPE_EXT =
98+
PasteTypeExt(
99+
imageVector = Icons.Outlined.Code,
100+
color = Color(0xFFFB923C),
101+
bgColor = Color(0xFF4A2A0A),
102+
)
103+
104+
// RTF
105+
val LIGHT_RTF_PASTE_TYPE_EXT =
106+
PasteTypeExt(
107+
imageVector = Icons.AutoMirrored.Outlined.Article,
108+
color = Color(0xFF0891B2),
109+
bgColor = Color(0xFFE0F7FA),
110+
)
111+
val DARK_RTF_PASTE_TYPE_EXT =
112+
PasteTypeExt(
113+
imageVector = Icons.AutoMirrored.Outlined.Article,
114+
color = Color(0xFF22D3EE),
115+
bgColor = Color(0xFF164E63),
116+
)
117+
}
118+
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.crosspaste.ui.theme
22

33
import androidx.compose.ui.graphics.Color
44
import androidx.compose.ui.graphics.toArgb
5+
import com.crosspaste.paste.PasteTypeExt
56
import com.materialkolor.ktx.harmonize
67
import com.materialkolor.ktx.toneColor
78
import com.materialkolor.palettes.TonalPalette
@@ -66,6 +67,13 @@ data class ThemeExt(
6667
val neutral: SemanticColorGroup,
6768
val warning: SemanticColorGroup,
6869
val special: SemanticColorGroup,
70+
val textPasteTypeExt: PasteTypeExt,
71+
val imagePasteTypeExt: PasteTypeExt,
72+
val filePasteTypeExt: PasteTypeExt,
73+
val urlPasteTypeExt: PasteTypeExt,
74+
val colorPasteTypeExt: PasteTypeExt,
75+
val htmlPasteTypeExt: PasteTypeExt,
76+
val rtfPasteTypeExt: PasteTypeExt,
6977
) {
7078
companion object {
7179
private val COLOR_SUCCESS = Color(0xFF2E7D32)
@@ -90,6 +98,20 @@ data class ThemeExt(
9098
neutral = createGroup(COLOR_NEUTRAL, SemanticColorPolicy.Dynamic),
9199
warning = createGroup(COLOR_WARNING, SemanticColorPolicy.FixedHue, isWarning = true),
92100
special = createGroup(COLOR_SPECIAL, SemanticColorPolicy.Dynamic),
101+
textPasteTypeExt =
102+
if (isDark) PasteTypeExt.DARK_TEXT_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_TEXT_PASTE_TYPE_EXT,
103+
imagePasteTypeExt =
104+
if (isDark) PasteTypeExt.DARK_IMAGE_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_IMAGE_PASTE_TYPE_EXT,
105+
filePasteTypeExt =
106+
if (isDark) PasteTypeExt.DARK_FILE_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_FILE_PASTE_TYPE_EXT,
107+
urlPasteTypeExt =
108+
if (isDark) PasteTypeExt.DARK_URL_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_URL_PASTE_TYPE_EXT,
109+
colorPasteTypeExt =
110+
if (isDark) PasteTypeExt.DARK_COLOR_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_COLOR_PASTE_TYPE_EXT,
111+
htmlPasteTypeExt =
112+
if (isDark) PasteTypeExt.DARK_HTML_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_HTML_PASTE_TYPE_EXT,
113+
rtfPasteTypeExt =
114+
if (isDark) PasteTypeExt.DARK_RTF_PASTE_TYPE_EXT else PasteTypeExt.LIGHT_RTF_PASTE_TYPE_EXT,
93115
)
94116
}
95117
}

0 commit comments

Comments
 (0)