Skip to content

Commit 1fa28ed

Browse files
feat(chat): code snippets styles (#1868)
--------- Co-authored-by: Simeon Simeonoff <[email protected]>
1 parent 13d0c4b commit 1fa28ed

File tree

11 files changed

+86
-19
lines changed

11 files changed

+86
-19
lines changed

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

Lines changed: 26 additions & 1 deletion
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,7 +79,23 @@ export async function createMarkdownRenderer(
7079
markedShiki({
7180
highlight(code, lang, _) {
7281
try {
73-
return highlighter.codeToHtml(code, { lang, themes });
82+
return highlighter.codeToHtml(code, {
83+
lang,
84+
themes,
85+
colorReplacements: {
86+
'github-light': {
87+
...colorReplacements,
88+
'#fff': 'var(--shiki-bg)',
89+
'#24292e': 'var(--shiki-fg)',
90+
},
91+
'github-dark': {
92+
...colorReplacements,
93+
'#24292e': 'var(--shiki-bg)',
94+
'#e1e4e8': 'var(--shiki-fg)',
95+
},
96+
},
97+
defaultColor: 'light-dark()',
98+
});
7499
} catch {
75100
return `<pre><code>${sanitizer(code)}</code></pre>`;
76101
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
@use 'styles/utilities' as *;
22
@use 'igniteui-theming/sass/themes/schemas/components/dark/chat' as *;
33

4+
$base: digest-schema($dark-base-chat);
45
$material: digest-schema($dark-material-chat);
56
$bootstrap: digest-schema($dark-bootstrap-chat);
67
$fluent: digest-schema($dark-fluent-chat);
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
@use 'styles/utilities' as *;
22
@use 'themes' as *;
3-
@use '../light/themes' as light;
43

54
$theme: $bootstrap;
65

76
:host {
8-
@include css-vars-from-theme(diff(light.$base, $theme), 'ig-chat');
7+
@include css-vars-from-theme(diff($base, $theme), 'ig-chat');
98
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
@use 'styles/utilities' as *;
22
@use 'themes' as *;
3-
@use '../light/themes' as light;
43

54
$theme: $fluent;
65

76
:host {
8-
@include css-vars-from-theme(diff(light.$base, $theme), 'ig-chat');
7+
@include css-vars-from-theme(diff($base, $theme), 'ig-chat');
98
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
@use 'styles/utilities' as *;
22
@use 'themes' as *;
3-
@use '../light/themes' as light;
43

54
$theme: $indigo;
65

76
:host {
8-
@include css-vars-from-theme(diff(light.$base, $theme), 'ig-chat');
7+
@include css-vars-from-theme(diff($base, $theme), 'ig-chat');
98
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
@use 'styles/utilities' as *;
22
@use 'themes' as *;
3-
@use '../light/themes' as light;
43

54
$theme: $material;
65

76
:host {
8-
@include css-vars-from-theme(diff(light.$base, $theme), 'ig-chat');
7+
@include css-vars-from-theme(diff($base, $theme), 'ig-chat');
98
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
@use 'styles/utilities' as *;
2+
@use './themes' as *;
3+
4+
$theme: $base;
5+
6+
:host {
7+
color-scheme: dark;
8+
9+
@include css-vars-from-theme($theme, 'ig-chat');
10+
11+
igc-chat-message::part(message-container) {
12+
--shiki-purple: #b392f0;
13+
--shiki-navy: #e1e4e8;
14+
--shiki-dark-blue: #9ecbff;
15+
--shiki-red: #f97583;
16+
--shiki-blue: #79bbff;
17+
--shiki-green: #85e89d;
18+
--shiki-orange: #ffab70;
19+
}
20+
}

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/message.base.scss

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,21 @@
3535
color: color(primary, 500);
3636
}
3737

38-
pre, code {
39-
white-space: pre-wrap;
40-
overflow-wrap: break-word;
41-
overflow-x: auto;
42-
margin-block: unset;
38+
pre.shiki {
39+
font-size: rem(14px);
40+
line-height: rem(24px);
41+
padding: rem(16px);
42+
border-radius: rem(4px);
43+
max-height: rem(320px);
44+
max-width: rem(680px);
45+
overflow-y: auto;
4346
}
4447
}
4548

4649
[part~='message-header'],
4750
[part~='message-attachments'],
48-
[part~='message-actions'] {
51+
[part~='message-actions'],
52+
[part~='plain-text'] {
4953
&:empty {
5054
display: none;
5155
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,24 @@
33

44
$theme: $material;
55

6+
:host {
7+
--shiki-bg: #{var-get($theme, 'code-background')};
8+
}
9+
610
[part~='sent'] {
711
background: var-get($theme, 'message-background');
812
}
913

1014
[part~='message-container'] {
1115
color: var-get($theme, 'message-color');
16+
17+
pre.shiki {
18+
border: rem(1px) solid var-get($theme, 'code-border');
19+
}
1220
}
1321

1422
[part~='message-actions'] {
1523
igc-icon-button::part(icon) {
1624
color: var-get($theme, 'message-actions-color');
1725
}
18-
}
26+
}

0 commit comments

Comments
 (0)