From e46ea9987a004f51b06aa14dc0e9b0c3169a194f Mon Sep 17 00:00:00 2001 From: April Hall Date: Mon, 10 Feb 2025 13:29:09 -0500 Subject: [PATCH] feat: Codeblock syntax highlighting with HLJS --- bun.lockb | Bin 221492 -> 222255 bytes package.json | 1 + src/app.css | 2 ++ src/lib/components/message.svelte | 2 +- src/lib/functions/renderMarkdown.ts | 6 +++++- tailwind.config.ts | 13 +++++++++++++ 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bun.lockb b/bun.lockb index 5c6b35a0d2b8888e9becdd5fc8bf02d0563e3a95..8f677ae27bcdad3c23b99037f23c6fded5b46763 100755 GIT binary patch delta 39065 zcmeIbd3;T0+cvz{l1(;(AS4n)5F#Wp??l)UGcg5`n3J$YB7;oCm;@oF5=&g>StaIF zl~yNIt20`vs8(Awl$xqliuX9yT3g(`^?9EA_kPd&{nPz(?DIO0>%8Xk8rI6%)~iPx z_8fOu;?wHj_&(M#osPQtzR|8(+B?CY0i(?wg zp9B@>dgk@BGZ^X_4EdqDY!2xJy{0Z7A_eu!x;&xFHzDhSFV$rUWF6=;bvXgDHuRCY z?5)doy7bg!UVeQ99AQ{lm-l5&zYJLm{Apbt(`9AI>fo~`T2r#E27@1zYS29($-fT8 z719X`)0=euOYjcRty!7z6VM0NtWtI#PgLTCJMl9p~4+Qak(iX_*MSgUKb&^_#tNm(2Me4x|nCQ_Lo zE$B{mL=Yr(6s}sjC`06yd0j9_tXn%>rY5CYy~iXNF2Wks%QvGUZ2lLzehIl!{|J(G zOmf!rx1g)tkUJsMnw4d6ZJ>?Y0yK>IRE5r3JcQ2L-GD^j9-EYzm7SyO(;Mpc+40#qS=Owiv~kwVr0lFQ)(L9*WZkYeB%43R znw6cIKG`r9)f{I~(kgj{+M;&Bghl71O-Pym7ucxl%k?Zq>2kZf)@P5Ela(6hU2m#Y zEJN@AxMo@|KSH9@^1p;+i}yp)8wNDj8amg*V8B44U!E_OxGHa z1)UX-(d~C4ALs zd^PZC>0_+k@d-&;*3^ksWtWI4 z?G1(|;3{{}@_q!JX;(m}>TAn?e>qHik^lWfw^1;|YoK z^72i3#LWn;0;eFkvQ9|P${vlSqidwrHDQqKg0%Rw^d$6-H7g+}DP@d7?yEKDRv)dI z=OH=KK7?d5_v`w4NDj?HNOs30NGC%cmJkGJ7zN3MVURRzsq3{MIiYNO*W=z=2G<~I z{}m+DAJz3;kW9Y{k_8n)IzeXW@x%0Zbx*@2&F=|<8H8h?IRw+A4F=3+tW60yiQuxM zmFxCCc@Z)CROzTqT@oGqtIZ3!deTu}+Ln$*~$nr>Bokg2j074&V)t>{zUH z=_wPfhM7aPk;#Q*$0kG47pp+hZ~hpf=|4dt-+=sq!?lQRkj(HVD$D}UK(d2ud*IkH zNtvjZVc`hnBU7V1_joP;*^r!)Db|T;jGm(NiMq^yWVvIk)(PH8S%%usId@DtpFLXB z&qA`kA3?IdkK?qJ<}4(;GbzhEF(p00&*qieqxzvkd2{VfW*lpzb+&T{;Nw(%+(4Gn4&en=IIHU z@uRJ%+!dYoo~reD9;7J`8Kqh?6RrLgF4YW%YBn{Pm zM#iV1vmzfra+18R%g~ux3n#Etd_17Di+AYp8zAXJ%OUAIZ_Uz%W}&WQ{~n(-CO$KN zwxP0`@hRn!L*qQBIa)Rok}@%IvJ9zcCqGxfGrR0@)-;xQLD%gd9l@&;6?UVFv^BFI zB&+Q>Pj_YLOur90o5$^cLVQ+M7Bp49NqD=XG!!(=Qe{A4ZFOtRClm8EB9C+qqM zNLCfAbW%ckwxJm5Se1N8_DT3Mt;&9o9J-^B9OC43l!VW`63uQhB>O5!lX>~k2(Zng zbZH$s);c=dV0g4#<2wnhLK!HC%g9Y#zW~XCKY?V1@tNbZC-cO+QmfeSE3|Z0q+=g` z3tn9h;wN+YFr0yI;≷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 DT2*LW delta 38376 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 ZX4K&cFUYs0!&wLAm@?rC9&~ diff --git a/package.json b/package.json index 9338826..36d25e3 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "cassandra-driver": "^4.7.2", "express": "^4.21.2", "lucide-svelte": "^0.474.0", + "markdown-it-highlightjs": "^4.2.0", "mode-watcher": "^0.5.1", "socket.io": "^4.8.1", "socket.io-client": "^4.8.1", diff --git a/src/app.css b/src/app.css index 8950353..e496cfd 100644 --- a/src/app.css +++ b/src/app.css @@ -1,3 +1,5 @@ +@import '../node_modules/highlight.js/styles/github-dark.min.css'; + @tailwind base; @tailwind components; @tailwind utilities; diff --git a/src/lib/components/message.svelte b/src/lib/components/message.svelte index 9804cc2..cc570ac 100644 --- a/src/lib/components/message.svelte +++ b/src/lib/components/message.svelte @@ -14,7 +14,7 @@

{user}

- {@html renderMarkdown(escapeHTML(message))} + {@html renderMarkdown(message)}
diff --git a/src/lib/functions/renderMarkdown.ts b/src/lib/functions/renderMarkdown.ts index fec455d..98c0b50 100644 --- a/src/lib/functions/renderMarkdown.ts +++ b/src/lib/functions/renderMarkdown.ts @@ -1,4 +1,5 @@ import markdownit from 'markdown-it'; +import highlightjs from 'markdown-it-highlightjs'; export default function renderMarkdown(input: string): string { const md = markdownit({ @@ -6,7 +7,10 @@ export default function renderMarkdown(input: string): string { linkify: true, typographer: true, breaks: true, - }).disable(['image', 'table']); + }); + + md.disable(['image', 'table']); + md.use(highlightjs); return md.render(input); } diff --git a/tailwind.config.ts b/tailwind.config.ts index 7cfa67e..f2ec7f9 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -53,11 +53,24 @@ const config: Config = { borderRadius: { lg: 'var(--radius)', md: 'calc(var(--radius) - 2px)', + 'background-color': '#22272E', sm: 'calc(var(--radius) - 4px)', }, fontFamily: { sans: [...fontFamily.sans], }, + typography: () => ({ + DEFAULT: { + css: { + pre: { + 'background-color': '#22272E', + code: { + 'background-color': '#22272E', + }, + }, + }, + }, + }), }, }, plugins: [typography],