summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-29 09:54:22 -0600
committerAdam <[email protected]>2025-12-29 09:54:22 -0600
commit7376c3f8e7ba8a6657836af734d88a2c630e25ed (patch)
tree29473e0c12e93423bf265ebc839cf7c1c84b01d9 /packages
parent831e9bce51c035ec22ce9562bf0257d6b59b2fe4 (diff)
downloadopencode-7376c3f8e7ba8a6657836af734d88a2c630e25ed.tar.gz
opencode-7376c3f8e7ba8a6657836af734d88a2c630e25ed.zip
feat(desktop): latex support
Diffstat (limited to 'packages')
-rw-r--r--packages/ui/package.json11
-rw-r--r--packages/ui/src/context/marked.tsx4
-rw-r--r--packages/ui/src/styles/index.css1
3 files changed, 12 insertions, 4 deletions
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 3e8422bcd..95156a113 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -25,15 +25,16 @@
"generate:tailwind": "bun run script/tailwind.ts"
},
"devDependencies": {
+ "@tailwindcss/vite": "catalog:",
+ "@tsconfig/node22": "catalog:",
"@types/bun": "catalog:",
+ "@types/katex": "0.16.7",
"@types/luxon": "catalog:",
- "@tsconfig/node22": "catalog:",
+ "tailwindcss": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vite-plugin-icons-spritesheet": "3.0.1",
- "vite-plugin-solid": "catalog:",
- "tailwindcss": "catalog:",
- "@tailwindcss/vite": "catalog:"
+ "vite-plugin-solid": "catalog:"
},
"dependencies": {
"@kobalte/core": "catalog:",
@@ -46,8 +47,10 @@
"@solidjs/meta": "catalog:",
"@typescript/native-preview": "catalog:",
"fuzzysort": "catalog:",
+ "katex": "0.16.27",
"luxon": "catalog:",
"marked": "catalog:",
+ "marked-katex-extension": "5.1.6",
"marked-shiki": "catalog:",
"remeda": "catalog:",
"shiki": "catalog:",
diff --git a/packages/ui/src/context/marked.tsx b/packages/ui/src/context/marked.tsx
index f4d85519d..3bd6cb076 100644
--- a/packages/ui/src/context/marked.tsx
+++ b/packages/ui/src/context/marked.tsx
@@ -1,4 +1,5 @@
import { marked } from "marked"
+import markedKatex from "marked-katex-extension"
import markedShiki from "marked-shiki"
import { bundledLanguages, type BundledLanguage } from "shiki"
import { createSimpleContext } from "./helper"
@@ -378,6 +379,9 @@ export const { use: useMarked, provider: MarkedProvider } = createSimpleContext(
name: "Marked",
init: () => {
return marked.use(
+ markedKatex({
+ throwOnError: false,
+ }),
markedShiki({
async highlight(code, lang) {
const highlighter = await getSharedHighlighter({ themes: ["OpenCode"], langs: [] })
diff --git a/packages/ui/src/styles/index.css b/packages/ui/src/styles/index.css
index 5782d2a29..9bf3e4f69 100644
--- a/packages/ui/src/styles/index.css
+++ b/packages/ui/src/styles/index.css
@@ -4,6 +4,7 @@
@import "./theme.css" layer(theme);
@import "./base.css" layer(base);
+@import "katex/dist/katex.min.css" layer(base);
@import "../components/accordion.css" layer(components);
@import "../components/avatar.css" layer(components);