Skip to content

Commit 67e19bb

Browse files
committed
refactor(chat): replace only default theme colors
1 parent 608abf6 commit 67e19bb

File tree

4 files changed

+33
-38
lines changed

4 files changed

+33
-38
lines changed

src/components/chat/extras/markdown-renderer.ts

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ export async function createMarkdownRenderer(
6060
if (!options?.noHighlighter) {
6161
const themes = options?.theme ?? DEFAULT_THEME;
6262
const langs = options?.languages ?? DEFAULT_LANGUAGES;
63+
const colorReplacements = {
64+
'#6f42c1': 'var(--shiki-purple)',
65+
'#032f62': 'var(--shiki-dark-blue)',
66+
'#24292e': 'var(--shiki-navy)',
67+
'#d73a49': 'var(--shiki-red)',
68+
'#005cc5': 'var(--shiki-blue)',
69+
'#22863a': 'var(--shiki-green)',
70+
'#e36209': 'var(--shiki-orange)',
71+
};
6372

6473
const highlighter = await createHighlighter({
6574
langs,
@@ -70,33 +79,15 @@ export async function createMarkdownRenderer(
7079
markedShiki({
7180
highlight(code, lang, _) {
7281
try {
73-
const html = highlighter.codeToHtml(code, { lang, themes });
74-
75-
const colorMap: Record<string, string> = {
76-
'6f42c1': 'var(--shiki-purple)',
77-
'032f62': 'var(--shiki-dark-blue)',
78-
'24292e': 'var(--shiki-navy)',
79-
'd73a49': 'var(--shiki-red)',
80-
'005cc5': 'var(--shiki-blue)',
81-
'22863a': 'var(--shiki-green)',
82-
'e36209': 'var(--shiki-orange)',
83-
};
84-
85-
const processed = html.replace(
86-
/style="([^"]*)"/g,
87-
(_m, styleContent) => {
88-
const replaced = styleContent.replace(
89-
/#([0-9a-fA-F]{6})/g,
90-
(_full: any, hex: string) => {
91-
const rep = colorMap[hex.toLowerCase()];
92-
return rep ?? `#${hex}`;
93-
}
94-
);
95-
return `style="${replaced}"`;
96-
}
97-
);
98-
99-
return processed;
82+
return highlighter.codeToHtml(code, {
83+
lang,
84+
themes,
85+
colorReplacements: {
86+
'github-light': colorReplacements,
87+
'github-dark': colorReplacements,
88+
},
89+
defaultColor: 'light-dark()',
90+
});
10091
} catch {
10192
return `<pre><code>${sanitizer(code)}</code></pre>`;
10293
}

src/components/chat/themes/dark/chat.shared.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
$theme: $base;
55

66
:host {
7+
color-scheme: dark;
8+
79
@include css-vars-from-theme($theme, 'ig-chat');
810

911
igc-chat-message::part(message-container) {

src/components/chat/themes/light/chat.shared.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,17 @@
44
$theme: $base;
55

66
:host {
7+
color-scheme: light;
8+
79
@include css-vars-from-theme($theme, 'ig-chat');
10+
11+
igc-chat-message::part(message-container) {
12+
--shiki-purple: #6f42c1;
13+
--shiki-navy: #24292e;
14+
--shiki-dark-blue: #032f62;
15+
--shiki-red: #d73a49;
16+
--shiki-blue: #005cc5;
17+
--shiki-green: #22863a;
18+
--shiki-orange: #e36209;
19+
}
820
}

src/components/chat/themes/shared/chat-message/chat-message.common.scss

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,6 @@
33

44
$theme: $material;
55

6-
:host {
7-
--shiki-navy: #24292e;
8-
--shiki-dark-blue: #032F62;
9-
--shiki-purple: #6f42c1;
10-
--shiki-red: #d73a49;
11-
--shiki-blue: #005cc5;
12-
--shiki-green: #22863a;
13-
--shiki-orange: #e36209;
14-
}
15-
166
[part~='sent'] {
177
background: var-get($theme, 'message-background');
188
}
@@ -31,4 +21,4 @@ $theme: $material;
3121
igc-icon-button::part(icon) {
3222
color: var-get($theme, 'message-actions-color');
3323
}
34-
}
24+
}

0 commit comments

Comments
 (0)