Просмотр исходного кода

chore(desktop): cleanup shiki theme stuff

Adam 3 месяцев назад
Родитель
Сommit
7f51b181d4

+ 0 - 558
packages/desktop/src/components/theme.json

@@ -1,558 +0,0 @@
-{
-  "colors": {
-    "actionBar.toggledBackground": "var(--surface-raised-base)",
-    "activityBarBadge.background": "var(--surface-brand-base)",
-    "checkbox.border": "var(--border-base)",
-    "editor.background": "transparent",
-    "editor.foreground": "var(--text-base)",
-    "editor.inactiveSelectionBackground": "var(--surface-raised-base)",
-    "editor.selectionHighlightBackground": "var(--border-active)",
-    "editorIndentGuide.activeBackground1": "var(--border-weak-base)",
-    "editorIndentGuide.background1": "var(--border-weak-base)",
-    "input.placeholderForeground": "var(--text-weak)",
-    "list.activeSelectionIconForeground": "var(--text-base)",
-    "list.dropBackground": "var(--surface-raised-base)",
-    "menu.background": "var(--surface-base)",
-    "menu.border": "var(--border-base)",
-    "menu.foreground": "var(--text-base)",
-    "menu.selectionBackground": "var(--surface-interactive-base)",
-    "menu.separatorBackground": "var(--border-base)",
-    "ports.iconRunningProcessForeground": "var(--icon-success-base)",
-    "sideBarSectionHeader.background": "transparent",
-    "sideBarSectionHeader.border": "var(--border-weak-base)",
-    "sideBarTitle.foreground": "var(--text-weak)",
-    "statusBarItem.remoteBackground": "var(--surface-success-base)",
-    "statusBarItem.remoteForeground": "var(--text-base)",
-    "tab.lastPinnedBorder": "var(--border-weak-base)",
-    "tab.selectedBackground": "var(--surface-raised-base)",
-    "tab.selectedForeground": "var(--text-weak)",
-    "terminal.inactiveSelectionBackground": "var(--surface-raised-base)",
-    "widget.border": "var(--border-base)"
-  },
-  "displayName": "opencode",
-  "name": "opencode",
-  "semanticHighlighting": true,
-  "semanticTokenColors": {
-    "customLiteral": "var(--syntax-function)",
-    "newOperator": "var(--syntax-operator)",
-    "numberLiteral": "var(--syntax-number)",
-    "stringLiteral": "var(--syntax-string)"
-  },
-  "tokenColors": [
-    {
-      "scope": [
-        "meta.embedded",
-        "source.groovy.embedded",
-        "string meta.image.inline.markdown",
-        "variable.legacy.builtin.python"
-      ],
-      "settings": {
-        "foreground": "var(--text-base)"
-      }
-    },
-    {
-      "scope": "emphasis",
-      "settings": {
-        "fontStyle": "italic"
-      }
-    },
-    {
-      "scope": "strong",
-      "settings": {
-        "fontStyle": "bold"
-      }
-    },
-    {
-      "scope": "header",
-      "settings": {
-        "foreground": "var(--markdown-heading)"
-      }
-    },
-    {
-      "scope": "comment",
-      "settings": {
-        "foreground": "var(--syntax-comment)"
-      }
-    },
-    {
-      "scope": "constant.language",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": [
-        "constant.numeric",
-        "variable.other.enummember",
-        "keyword.operator.plus.exponent",
-        "keyword.operator.minus.exponent"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-number)"
-      }
-    },
-    {
-      "scope": "constant.regexp",
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": "entity.name.tag",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": ["entity.name.tag.css", "entity.name.tag.less"],
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": "entity.other.attribute-name",
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": [
-        "entity.other.attribute-name.class.css",
-        "source.css entity.other.attribute-name.class",
-        "entity.other.attribute-name.id.css",
-        "entity.other.attribute-name.parent-selector.css",
-        "entity.other.attribute-name.parent.less",
-        "source.css entity.other.attribute-name.pseudo-class",
-        "entity.other.attribute-name.pseudo-element.css",
-        "source.css.less entity.other.attribute-name.id",
-        "entity.other.attribute-name.scss"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": "invalid",
-      "settings": {
-        "foreground": "var(--syntax-critical)"
-      }
-    },
-    {
-      "scope": "markup.underline",
-      "settings": {
-        "fontStyle": "underline"
-      }
-    },
-    {
-      "scope": "markup.bold",
-      "settings": {
-        "fontStyle": "bold",
-        "foreground": "var(--markdown-strong)"
-      }
-    },
-    {
-      "scope": "markup.heading",
-      "settings": {
-        "fontStyle": "bold",
-        "foreground": "var(--theme-markdown-heading)"
-      }
-    },
-    {
-      "scope": "markup.italic",
-      "settings": {
-        "fontStyle": "italic"
-      }
-    },
-    {
-      "scope": "markup.strikethrough",
-      "settings": {
-        "fontStyle": "strikethrough"
-      }
-    },
-    {
-      "scope": "markup.inserted",
-      "settings": {
-        "foreground": "var(--text-diff-add-base)"
-      }
-    },
-    {
-      "scope": "markup.deleted",
-      "settings": {
-        "foreground": "var(--text-diff-delete-base)"
-      }
-    },
-    {
-      "scope": "markup.changed",
-      "settings": {
-        "foreground": "var(--text-base)"
-      }
-    },
-    {
-      "scope": "punctuation.definition.quote.begin.markdown",
-      "settings": {
-        "foreground": "var(--markdown-block-quote)"
-      }
-    },
-    {
-      "scope": "punctuation.definition.list.begin.markdown",
-      "settings": {
-        "foreground": "var(--markdown-list-enumeration)"
-      }
-    },
-    {
-      "scope": "markup.inline.raw",
-      "settings": {
-        "foreground": "var(--markdown-code)"
-      }
-    },
-    {
-      "scope": "punctuation.definition.tag",
-      "settings": {
-        "foreground": "var(--syntax-punctuation)"
-      }
-    },
-    {
-      "scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "meta.preprocessor.string",
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": "meta.preprocessor.numeric",
-      "settings": {
-        "foreground": "var(--syntax-number)"
-      }
-    },
-    {
-      "scope": "meta.structure.dictionary.key.python",
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": "meta.diff.header",
-      "settings": {
-        "foreground": "var(--text-weak)"
-      }
-    },
-    {
-      "scope": "storage",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "storage.type",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": ["storage.modifier", "keyword.operator.noexcept"],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": ["string", "meta.embedded.assembly"],
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": "string.tag",
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": "string.value",
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": "string.regexp",
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": [
-        "punctuation.definition.template-expression.begin",
-        "punctuation.definition.template-expression.end",
-        "punctuation.section.embedded"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": ["meta.template.expression"],
-      "settings": {
-        "foreground": "var(--text-base)"
-      }
-    },
-    {
-      "scope": [
-        "support.type.vendored.property-name",
-        "support.type.property-name",
-        "source.css variable",
-        "source.coffee.embedded"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": "keyword",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "keyword.control",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "keyword.operator",
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": [
-        "keyword.operator.new",
-        "keyword.operator.expression",
-        "keyword.operator.cast",
-        "keyword.operator.sizeof",
-        "keyword.operator.alignof",
-        "keyword.operator.typeid",
-        "keyword.operator.alignas",
-        "keyword.operator.instanceof",
-        "keyword.operator.logical.python",
-        "keyword.operator.wordlike"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "keyword.other.unit",
-      "settings": {
-        "foreground": "var(--syntax-number)"
-      }
-    },
-    {
-      "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "support.function.git-rebase",
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": "constant.sha.git-rebase",
-      "settings": {
-        "foreground": "var(--syntax-number)"
-      }
-    },
-    {
-      "scope": ["storage.modifier.import.java", "variable.language.wildcard.java", "storage.modifier.package.java"],
-      "settings": {
-        "foreground": "var(--text-base)"
-      }
-    },
-    {
-      "scope": "variable.language",
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": [
-        "entity.name.function",
-        "support.function",
-        "support.constant.handlebars",
-        "source.powershell variable.other.member",
-        "entity.name.operator.custom-literal"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-function)"
-      }
-    },
-    {
-      "scope": [
-        "support.class",
-        "support.type",
-        "entity.name.type",
-        "entity.name.namespace",
-        "entity.other.attribute",
-        "entity.name.scope-resolution",
-        "entity.name.class",
-        "storage.type.numeric.go",
-        "storage.type.byte.go",
-        "storage.type.boolean.go",
-        "storage.type.string.go",
-        "storage.type.uintptr.go",
-        "storage.type.error.go",
-        "storage.type.rune.go",
-        "storage.type.cs",
-        "storage.type.generic.cs",
-        "storage.type.modifier.cs",
-        "storage.type.variable.cs",
-        "storage.type.annotation.java",
-        "storage.type.generic.java",
-        "storage.type.java",
-        "storage.type.object.array.java",
-        "storage.type.primitive.array.java",
-        "storage.type.primitive.java",
-        "storage.type.token.java",
-        "storage.type.groovy",
-        "storage.type.annotation.groovy",
-        "storage.type.parameters.groovy",
-        "storage.type.generic.groovy",
-        "storage.type.object.array.groovy",
-        "storage.type.primitive.array.groovy",
-        "storage.type.primitive.groovy"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-type)"
-      }
-    },
-    {
-      "scope": [
-        "meta.type.cast.expr",
-        "meta.type.new.expr",
-        "support.constant.math",
-        "support.constant.dom",
-        "support.constant.json",
-        "entity.other.inherited-class",
-        "punctuation.separator.namespace.ruby"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-type)"
-      }
-    },
-    {
-      "scope": [
-        "keyword.control",
-        "source.cpp keyword.operator.new",
-        "keyword.operator.delete",
-        "keyword.other.using",
-        "keyword.other.directive.using",
-        "keyword.other.operator",
-        "entity.name.operator"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": [
-        "variable",
-        "meta.definition.variable.name",
-        "support.variable",
-        "entity.name.variable",
-        "constant.other.placeholder"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": ["variable.other.constant", "variable.other.enummember"],
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": ["meta.object-literal.key"],
-      "settings": {
-        "foreground": "var(--syntax-variable)"
-      }
-    },
-    {
-      "scope": [
-        "support.constant.property-value",
-        "support.constant.font-name",
-        "support.constant.media-type",
-        "support.constant.media",
-        "constant.other.color.rgb-value",
-        "constant.other.rgb-value",
-        "support.constant.color"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": [
-        "punctuation.definition.group.regexp",
-        "punctuation.definition.group.assertion.regexp",
-        "punctuation.definition.character-class.regexp",
-        "punctuation.character.set.begin.regexp",
-        "punctuation.character.set.end.regexp",
-        "keyword.operator.negation.regexp",
-        "support.other.parenthesis.regexp"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-string)"
-      }
-    },
-    {
-      "scope": [
-        "constant.character.character-class.regexp",
-        "constant.other.character-class.set.regexp",
-        "constant.other.character-class.regexp",
-        "constant.character.set.regexp"
-      ],
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": "keyword.operator.quantifier.regexp",
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": ["constant.character", "constant.other.option"],
-      "settings": {
-        "foreground": "var(--syntax-keyword)"
-      }
-    },
-    {
-      "scope": "constant.character.escape",
-      "settings": {
-        "foreground": "var(--syntax-operator)"
-      }
-    },
-    {
-      "scope": "entity.name.label",
-      "settings": {
-        "foreground": "var(--text-weak)"
-      }
-    }
-  ],
-  "type": "dark"
-}

+ 17 - 19
packages/desktop/src/index.tsx

@@ -3,7 +3,7 @@ import "@/index.css"
 import { render } from "solid-js/web"
 import { Router, Route } from "@solidjs/router"
 import { MetaProvider } from "@solidjs/meta"
-import { Fonts, ShikiProvider, MarkedProvider } from "@opencode-ai/ui"
+import { Fonts, MarkedProvider } from "@opencode-ai/ui"
 import { SDKProvider } from "./context/sdk"
 import { SyncProvider } from "./context/sync"
 import { LocalProvider } from "./context/local"
@@ -29,24 +29,22 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
 
 render(
   () => (
-    <ShikiProvider>
-      <MarkedProvider>
-        <SDKProvider url={url}>
-          <SyncProvider>
-            <LocalProvider>
-              <MetaProvider>
-                <Fonts />
-                <Router root={Layout}>
-                  <Route path={["/", "/session"]} component={SessionLayout}>
-                    <Route path="/:id?" component={Session} />
-                  </Route>
-                </Router>
-              </MetaProvider>
-            </LocalProvider>
-          </SyncProvider>
-        </SDKProvider>
-      </MarkedProvider>
-    </ShikiProvider>
+    <MarkedProvider>
+      <SDKProvider url={url}>
+        <SyncProvider>
+          <LocalProvider>
+            <MetaProvider>
+              <Fonts />
+              <Router root={Layout}>
+                <Route path={["/", "/session"]} component={SessionLayout}>
+                  <Route path="/:id?" component={Session} />
+                </Route>
+              </Router>
+            </MetaProvider>
+          </LocalProvider>
+        </SyncProvider>
+      </SDKProvider>
+    </MarkedProvider>
   ),
   root!,
 )

+ 1 - 2
packages/ui/src/components/code.tsx

@@ -14,8 +14,7 @@ export function Code<T>(props: CodeProps<T>) {
 
   createEffect(() => {
     const instance = new File<T>({
-      theme: { dark: "oc-1-dark", light: "oc-1-light" },
-      // theme: { dark: "pierre-dark", light: "pierre-light" },
+      theme: "OpenCode",
       overflow: "wrap", // or 'scroll'
       themeType: "system", // 'system', 'light', or 'dark'
       disableFileHeader: true,

+ 371 - 390
packages/ui/src/components/diff.tsx

@@ -55,9 +55,7 @@ export function Diff<T>(props: DiffProps<T>) {
   // annotations and a container element to hold the diff
   createEffect(() => {
     const instance = new FileDiff<T>({
-      // theme: "pierre-light",
-      theme: { dark: "oc-1-dark", light: "oc-1-light" },
-      // theme: { dark: "pierre-dark", light: "pierre-light" },
+      theme: "OpenCode",
       // When using the 'themes' prop, 'themeType' allows you to force 'dark'
       // or 'light' theme, or inherit from the OS ('system') theme.
       themeType: "system",
@@ -181,394 +179,377 @@ export function Diff<T>(props: DiffProps<T>) {
   )
 }
 
-const colors = {
-  "editor.background": "transparent",
-  "editor.foreground": "var(--text-base)",
-  "gitDecoration.addedResourceForeground": "var(--syntax-diff-add)",
-  "gitDecoration.deletedResourceForeground": "var(--syntax-diff-delete)",
-  // "gitDecoration.conflictingResourceForeground": "#ffca00",
-  // "gitDecoration.modifiedResourceForeground": "#1a76d4",
-  // "gitDecoration.untrackedResourceForeground": "#00cab1",
-  // "gitDecoration.ignoredResourceForeground": "#84848A",
-  // "terminal.titleForeground": "#adadb1",
-  // "terminal.titleInactiveForeground": "#84848A",
-  // "terminal.background": "#141415",
-  // "terminal.foreground": "#adadb1",
-  // "terminal.ansiBlack": "#141415",
-  // "terminal.ansiRed": "#ff2e3f",
-  // "terminal.ansiGreen": "#0dbe4e",
-  // "terminal.ansiYellow": "#ffca00",
-  // "terminal.ansiBlue": "#008cff",
-  // "terminal.ansiMagenta": "#c635e4",
-  // "terminal.ansiCyan": "#08c0ef",
-  // "terminal.ansiWhite": "#c6c6c8",
-  // "terminal.ansiBrightBlack": "#141415",
-  // "terminal.ansiBrightRed": "#ff2e3f",
-  // "terminal.ansiBrightGreen": "#0dbe4e",
-  // "terminal.ansiBrightYellow": "#ffca00",
-  // "terminal.ansiBrightBlue": "#008cff",
-  // "terminal.ansiBrightMagenta": "#c635e4",
-  // "terminal.ansiBrightCyan": "#08c0ef",
-  // "terminal.ansiBrightWhite": "#c6c6c8",
-}
-
-const tokenColors = [
-  {
-    scope: ["comment", "punctuation.definition.comment", "string.comment"],
-    settings: {
-      foreground: "var(--syntax-comment)",
-    },
-  },
-  {
-    scope: ["entity.other.attribute-name"],
-    settings: {
-      foreground: "var(--syntax-property)", // maybe attribute
-    },
-  },
-  {
-    scope: [
-      "constant",
-      "entity.name.constant",
-      "variable.other.constant",
-      "variable.language",
-      "entity",
-    ],
-    settings: {
-      foreground: "var(--syntax-constant)",
-    },
-  },
-  {
-    scope: ["entity.name", "meta.export.default", "meta.definition.variable"],
-    settings: {
-      foreground: "var(--syntax-type)",
-    },
-  },
-  {
-    scope: [
-      "variable.parameter.function",
-      "meta.jsx.children",
-      "meta.block",
-      "meta.tag.attributes",
-      "entity.name.constant",
-      "meta.object.member",
-      "meta.embedded.expression",
-      "meta.template.expression",
-      "string.other.begin.yaml",
-      "string.other.end.yaml",
-    ],
-    settings: {
-      foreground: "var(--syntax-punctuation)",
-    },
-  },
-  {
-    scope: ["entity.name.function", "support.type.primitive"],
-    settings: {
-      foreground: "var(--syntax-primitive)",
-    },
-  },
-  {
-    scope: ["support.class.component"],
-    settings: {
-      foreground: "var(--syntax-type)",
-    },
-  },
-  {
-    scope: "keyword",
-    settings: {
-      foreground: "var(--syntax-keyword)",
-    },
-  },
-  {
-    scope: [
-      "keyword.operator",
-      "storage.type.function.arrow",
-      "punctuation.separator.key-value.css",
-      "entity.name.tag.yaml",
-      "punctuation.separator.key-value.mapping.yaml",
-    ],
-    settings: {
-      foreground: "var(--syntax-operator)",
-    },
-  },
-  {
-    scope: ["storage", "storage.type"],
-    settings: {
-      foreground: "var(--syntax-keyword)",
-    },
-  },
-  {
-    scope: ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
-    settings: {
-      foreground: "var(--syntax-primitive)",
-    },
-  },
-  {
-    scope: [
-      "string",
-      "punctuation.definition.string",
-      "string punctuation.section.embedded source",
-      "entity.name.tag",
-    ],
-    settings: {
-      foreground: "var(--syntax-string)",
-    },
-  },
-  {
-    scope: "support",
-    settings: {
-      foreground: "var(--syntax-primitive)",
-    },
-  },
-  {
-    scope: [
-      "support.type.object.module",
-      "variable.other.object",
-      "support.type.property-name.css",
-    ],
-    settings: {
-      foreground: "var(--syntax-object)",
-    },
-  },
-  {
-    scope: "meta.property-name",
-    settings: {
-      foreground: "var(--syntax-property)",
-    },
-  },
-  {
-    scope: "variable",
-    settings: {
-      foreground: "var(--syntax-variable)",
-    },
-  },
-  {
-    scope: "variable.other",
-    settings: {
-      foreground: "var(--syntax-variable)",
-    },
-  },
-  {
-    scope: [
-      "invalid.broken",
-      "invalid.illegal",
-      "invalid.unimplemented",
-      "invalid.deprecated",
-      "message.error",
-      "markup.deleted",
-      "meta.diff.header.from-file",
-      "punctuation.definition.deleted",
-      "brackethighlighter.unmatched",
-      "token.error-token",
-    ],
-    settings: {
-      foreground: "var(--syntax-critical)",
-    },
-  },
-  {
-    scope: "carriage-return",
-    settings: {
-      foreground: "var(--syntax-keyword)",
-    },
-  },
-  {
-    scope: "string source",
-    settings: {
-      foreground: "var(--syntax-variable)",
-    },
-  },
-  {
-    scope: "string variable",
-    settings: {
-      foreground: "var(--syntax-constant)",
-    },
-  },
-  {
-    scope: [
-      "source.regexp",
-      "string.regexp",
-      "string.regexp.character-class",
-      "string.regexp constant.character.escape",
-      "string.regexp source.ruby.embedded",
-      "string.regexp string.regexp.arbitrary-repitition",
-      "string.regexp constant.character.escape",
-    ],
-    settings: {
-      foreground: "var(--syntax-regexp)",
-    },
-  },
-  {
-    scope: "support.constant",
-    settings: {
-      foreground: "var(--syntax-primitive)",
-    },
-  },
-  {
-    scope: "support.variable",
-    settings: {
-      foreground: "var(--syntax-variable)",
-    },
-  },
-  {
-    scope: "meta.module-reference",
-    settings: {
-      foreground: "var(--syntax-info)",
-    },
-  },
-  {
-    scope: "punctuation.definition.list.begin.markdown",
-    settings: {
-      foreground: "var(--syntax-punctuation)",
-    },
-  },
-  {
-    scope: ["markup.heading", "markup.heading entity.name"],
-    settings: {
-      fontStyle: "bold",
-      foreground: "var(--syntax-info)",
-    },
-  },
-  {
-    scope: "markup.quote",
-    settings: {
-      foreground: "var(--syntax-info)",
-    },
-  },
-  {
-    scope: "markup.italic",
-    settings: {
-      fontStyle: "italic",
-      // foreground: "",
-    },
-  },
-  {
-    scope: "markup.bold",
-    settings: {
-      fontStyle: "bold",
-      foreground: "var(--text-strong)",
-    },
-  },
-  {
-    scope: [
-      "markup.raw",
-      "markup.inserted",
-      "meta.diff.header.to-file",
-      "punctuation.definition.inserted",
-      "markup.changed",
-      "punctuation.definition.changed",
-      "markup.ignored",
-      "markup.untracked",
-    ],
-    settings: {
-      foreground: "var(--text-base)",
-    },
-  },
-  {
-    scope: "meta.diff.range",
-    settings: {
-      fontStyle: "bold",
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: "meta.diff.header",
-    settings: {
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: "meta.separator",
-    settings: {
-      fontStyle: "bold",
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: "meta.output",
-    settings: {
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: "meta.export.default",
-    settings: {
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: [
-      "brackethighlighter.tag",
-      "brackethighlighter.curly",
-      "brackethighlighter.round",
-      "brackethighlighter.square",
-      "brackethighlighter.angle",
-      "brackethighlighter.quote",
+registerCustomTheme("OpenCode", () => {
+  return Promise.resolve({
+    name: "OpenCode",
+    colors: {
+      "editor.background": "transparent",
+      "editor.foreground": "var(--text-base)",
+      "gitDecoration.addedResourceForeground": "var(--syntax-diff-add)",
+      "gitDecoration.deletedResourceForeground": "var(--syntax-diff-delete)",
+      // "gitDecoration.conflictingResourceForeground": "#ffca00",
+      // "gitDecoration.modifiedResourceForeground": "#1a76d4",
+      // "gitDecoration.untrackedResourceForeground": "#00cab1",
+      // "gitDecoration.ignoredResourceForeground": "#84848A",
+      // "terminal.titleForeground": "#adadb1",
+      // "terminal.titleInactiveForeground": "#84848A",
+      // "terminal.background": "#141415",
+      // "terminal.foreground": "#adadb1",
+      // "terminal.ansiBlack": "#141415",
+      // "terminal.ansiRed": "#ff2e3f",
+      // "terminal.ansiGreen": "#0dbe4e",
+      // "terminal.ansiYellow": "#ffca00",
+      // "terminal.ansiBlue": "#008cff",
+      // "terminal.ansiMagenta": "#c635e4",
+      // "terminal.ansiCyan": "#08c0ef",
+      // "terminal.ansiWhite": "#c6c6c8",
+      // "terminal.ansiBrightBlack": "#141415",
+      // "terminal.ansiBrightRed": "#ff2e3f",
+      // "terminal.ansiBrightGreen": "#0dbe4e",
+      // "terminal.ansiBrightYellow": "#ffca00",
+      // "terminal.ansiBrightBlue": "#008cff",
+      // "terminal.ansiBrightMagenta": "#c635e4",
+      // "terminal.ansiBrightCyan": "#08c0ef",
+      // "terminal.ansiBrightWhite": "#c6c6c8",
+    },
+    tokenColors: [
+      {
+        scope: ["comment", "punctuation.definition.comment", "string.comment"],
+        settings: {
+          foreground: "var(--syntax-comment)",
+        },
+      },
+      {
+        scope: ["entity.other.attribute-name"],
+        settings: {
+          foreground: "var(--syntax-property)", // maybe attribute
+        },
+      },
+      {
+        scope: [
+          "constant",
+          "entity.name.constant",
+          "variable.other.constant",
+          "variable.language",
+          "entity",
+        ],
+        settings: {
+          foreground: "var(--syntax-constant)",
+        },
+      },
+      {
+        scope: ["entity.name", "meta.export.default", "meta.definition.variable"],
+        settings: {
+          foreground: "var(--syntax-type)",
+        },
+      },
+      {
+        scope: [
+          "variable.parameter.function",
+          "meta.jsx.children",
+          "meta.block",
+          "meta.tag.attributes",
+          "entity.name.constant",
+          "meta.object.member",
+          "meta.embedded.expression",
+          "meta.template.expression",
+          "string.other.begin.yaml",
+          "string.other.end.yaml",
+        ],
+        settings: {
+          foreground: "var(--syntax-punctuation)",
+        },
+      },
+      {
+        scope: ["entity.name.function", "support.type.primitive"],
+        settings: {
+          foreground: "var(--syntax-primitive)",
+        },
+      },
+      {
+        scope: ["support.class.component"],
+        settings: {
+          foreground: "var(--syntax-type)",
+        },
+      },
+      {
+        scope: "keyword",
+        settings: {
+          foreground: "var(--syntax-keyword)",
+        },
+      },
+      {
+        scope: [
+          "keyword.operator",
+          "storage.type.function.arrow",
+          "punctuation.separator.key-value.css",
+          "entity.name.tag.yaml",
+          "punctuation.separator.key-value.mapping.yaml",
+        ],
+        settings: {
+          foreground: "var(--syntax-operator)",
+        },
+      },
+      {
+        scope: ["storage", "storage.type"],
+        settings: {
+          foreground: "var(--syntax-keyword)",
+        },
+      },
+      {
+        scope: ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
+        settings: {
+          foreground: "var(--syntax-primitive)",
+        },
+      },
+      {
+        scope: [
+          "string",
+          "punctuation.definition.string",
+          "string punctuation.section.embedded source",
+          "entity.name.tag",
+        ],
+        settings: {
+          foreground: "var(--syntax-string)",
+        },
+      },
+      {
+        scope: "support",
+        settings: {
+          foreground: "var(--syntax-primitive)",
+        },
+      },
+      {
+        scope: [
+          "support.type.object.module",
+          "variable.other.object",
+          "support.type.property-name.css",
+        ],
+        settings: {
+          foreground: "var(--syntax-object)",
+        },
+      },
+      {
+        scope: "meta.property-name",
+        settings: {
+          foreground: "var(--syntax-property)",
+        },
+      },
+      {
+        scope: "variable",
+        settings: {
+          foreground: "var(--syntax-variable)",
+        },
+      },
+      {
+        scope: "variable.other",
+        settings: {
+          foreground: "var(--syntax-variable)",
+        },
+      },
+      {
+        scope: [
+          "invalid.broken",
+          "invalid.illegal",
+          "invalid.unimplemented",
+          "invalid.deprecated",
+          "message.error",
+          "markup.deleted",
+          "meta.diff.header.from-file",
+          "punctuation.definition.deleted",
+          "brackethighlighter.unmatched",
+          "token.error-token",
+        ],
+        settings: {
+          foreground: "var(--syntax-critical)",
+        },
+      },
+      {
+        scope: "carriage-return",
+        settings: {
+          foreground: "var(--syntax-keyword)",
+        },
+      },
+      {
+        scope: "string source",
+        settings: {
+          foreground: "var(--syntax-variable)",
+        },
+      },
+      {
+        scope: "string variable",
+        settings: {
+          foreground: "var(--syntax-constant)",
+        },
+      },
+      {
+        scope: [
+          "source.regexp",
+          "string.regexp",
+          "string.regexp.character-class",
+          "string.regexp constant.character.escape",
+          "string.regexp source.ruby.embedded",
+          "string.regexp string.regexp.arbitrary-repitition",
+          "string.regexp constant.character.escape",
+        ],
+        settings: {
+          foreground: "var(--syntax-regexp)",
+        },
+      },
+      {
+        scope: "support.constant",
+        settings: {
+          foreground: "var(--syntax-primitive)",
+        },
+      },
+      {
+        scope: "support.variable",
+        settings: {
+          foreground: "var(--syntax-variable)",
+        },
+      },
+      {
+        scope: "meta.module-reference",
+        settings: {
+          foreground: "var(--syntax-info)",
+        },
+      },
+      {
+        scope: "punctuation.definition.list.begin.markdown",
+        settings: {
+          foreground: "var(--syntax-punctuation)",
+        },
+      },
+      {
+        scope: ["markup.heading", "markup.heading entity.name"],
+        settings: {
+          fontStyle: "bold",
+          foreground: "var(--syntax-info)",
+        },
+      },
+      {
+        scope: "markup.quote",
+        settings: {
+          foreground: "var(--syntax-info)",
+        },
+      },
+      {
+        scope: "markup.italic",
+        settings: {
+          fontStyle: "italic",
+          // foreground: "",
+        },
+      },
+      {
+        scope: "markup.bold",
+        settings: {
+          fontStyle: "bold",
+          foreground: "var(--text-strong)",
+        },
+      },
+      {
+        scope: [
+          "markup.raw",
+          "markup.inserted",
+          "meta.diff.header.to-file",
+          "punctuation.definition.inserted",
+          "markup.changed",
+          "punctuation.definition.changed",
+          "markup.ignored",
+          "markup.untracked",
+        ],
+        settings: {
+          foreground: "var(--text-base)",
+        },
+      },
+      {
+        scope: "meta.diff.range",
+        settings: {
+          fontStyle: "bold",
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: "meta.diff.header",
+        settings: {
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: "meta.separator",
+        settings: {
+          fontStyle: "bold",
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: "meta.output",
+        settings: {
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: "meta.export.default",
+        settings: {
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: [
+          "brackethighlighter.tag",
+          "brackethighlighter.curly",
+          "brackethighlighter.round",
+          "brackethighlighter.square",
+          "brackethighlighter.angle",
+          "brackethighlighter.quote",
+        ],
+        settings: {
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: ["constant.other.reference.link", "string.other.link"],
+        settings: {
+          fontStyle: "underline",
+          foreground: "var(--syntax-unknown)",
+        },
+      },
+      {
+        scope: "token.info-token",
+        settings: {
+          foreground: "var(--syntax-info)",
+        },
+      },
+      {
+        scope: "token.warn-token",
+        settings: {
+          foreground: "var(--syntax-warning)",
+        },
+      },
+      {
+        scope: "token.debug-token",
+        settings: {
+          foreground: "var(--syntax-info)",
+        },
+      },
     ],
-    settings: {
-      foreground: "var(--syntax-unknown)",
+    semanticTokenColors: {
+      comment: "var(--syntax-comment)",
+      string: "var(--syntax-string)",
+      number: "var(--syntax-constant)",
+      regexp: "var(--syntax-regexp)",
+      keyword: "var(--syntax-keyword)",
+      variable: "var(--syntax-variable)",
+      parameter: "var(--syntax-variable)",
+      property: "var(--syntax-property)",
+      function: "var(--syntax-primitive)",
+      method: "var(--syntax-primitive)",
+      type: "var(--syntax-type)",
+      class: "var(--syntax-type)",
+      namespace: "var(--syntax-type)",
+      enumMember: "var(--syntax-primitive)",
+      "variable.constant": "var(--syntax-constant)",
+      "variable.defaultLibrary": "var(--syntax-unknown)",
     },
-  },
-  {
-    scope: ["constant.other.reference.link", "string.other.link"],
-    settings: {
-      fontStyle: "underline",
-      foreground: "var(--syntax-unknown)",
-    },
-  },
-  {
-    scope: "token.info-token",
-    settings: {
-      foreground: "var(--syntax-info)",
-    },
-  },
-  {
-    scope: "token.warn-token",
-    settings: {
-      foreground: "var(--syntax-warning)",
-    },
-  },
-  {
-    scope: "token.debug-token",
-    settings: {
-      foreground: "var(--syntax-info)",
-    },
-  },
-]
-
-const semanticTokenColors = {
-  comment: "var(--syntax-comment)",
-  string: "var(--syntax-string)",
-  number: "var(--syntax-constant)",
-  regexp: "var(--syntax-regexp)",
-  keyword: "var(--syntax-keyword)",
-  variable: "var(--syntax-variable)",
-  parameter: "var(--syntax-variable)",
-  property: "var(--syntax-property)",
-  function: "var(--syntax-primitive)",
-  method: "var(--syntax-primitive)",
-  type: "var(--syntax-type)",
-  class: "var(--syntax-type)",
-  namespace: "var(--syntax-type)",
-  enumMember: "var(--syntax-primitive)",
-  "variable.constant": "var(--syntax-constant)",
-  "variable.defaultLibrary": "var(--syntax-unknown)",
-}
-
-registerCustomTheme("oc-1-light", () => {
-  return Promise.resolve({
-    type: "light",
-    name: "oc-1-light",
-    colors,
-    tokenColors,
-    semanticTokenColors,
-  } as unknown as ThemeRegistrationResolved)
-})
-
-registerCustomTheme("oc-1-dark", () => {
-  return Promise.resolve({
-    name: "oc-1-dark",
-    type: "dark",
-    colors,
-    tokenColors,
-    semanticTokenColors,
   } as unknown as ThemeRegistrationResolved)
 })

+ 0 - 1
packages/ui/src/components/index.ts

@@ -24,5 +24,4 @@ export * from "./tooltip"
 export * from "./typewriter"
 
 export * from "../context/helper"
-export * from "../context/shiki"
 export * from "../context/marked"

+ 4 - 4
packages/ui/src/context/marked.tsx

@@ -1,14 +1,14 @@
 import { marked } from "marked"
 import markedShiki from "marked-shiki"
 import { bundledLanguages, type BundledLanguage } from "shiki"
-
 import { createSimpleContext } from "./helper"
-import { useShiki } from "./shiki"
+import { getSharedHighlighter } from "@pierre/precision-diffs"
+
+const highlighter = await getSharedHighlighter({ themes: ["OpenCode"], langs: [] })
 
 export const { use: useMarked, provider: MarkedProvider } = createSimpleContext({
   name: "Marked",
   init: () => {
-    const highlighter = useShiki()
     return marked.use(
       markedShiki({
         async highlight(code, lang) {
@@ -20,7 +20,7 @@ export const { use: useMarked, provider: MarkedProvider } = createSimpleContext(
           }
           return highlighter.codeToHtml(code, {
             lang: lang || "text",
-            theme: "opencode",
+            theme: "OpenCode",
             tabindex: false,
           })
         },

+ 0 - 577
packages/ui/src/context/shiki.tsx

@@ -1,577 +0,0 @@
-import { createSimpleContext } from "./helper"
-import { createHighlighter, type ThemeInput } from "shiki"
-
-const theme: ThemeInput = {
-  colors: {
-    "actionBar.toggledBackground": "var(--surface-raised-base)",
-    "activityBarBadge.background": "var(--surface-brand-base)",
-    "checkbox.border": "var(--border-base)",
-    "editor.background": "transparent",
-    "editor.foreground": "var(--text-base)",
-    "editor.inactiveSelectionBackground": "var(--surface-raised-base)",
-    "editor.selectionHighlightBackground": "var(--border-active)",
-    "editorIndentGuide.activeBackground1": "var(--border-weak-base)",
-    "editorIndentGuide.background1": "var(--border-weak-base)",
-    "input.placeholderForeground": "var(--text-weak)",
-    "list.activeSelectionIconForeground": "var(--text-base)",
-    "list.dropBackground": "var(--surface-raised-base)",
-    "menu.background": "var(--surface-base)",
-    "menu.border": "var(--border-base)",
-    "menu.foreground": "var(--text-base)",
-    "menu.selectionBackground": "var(--surface-interactive-base)",
-    "menu.separatorBackground": "var(--border-base)",
-    "ports.iconRunningProcessForeground": "var(--icon-success-base)",
-    "sideBarSectionHeader.background": "transparent",
-    "sideBarSectionHeader.border": "var(--border-weak-base)",
-    "sideBarTitle.foreground": "var(--text-weak)",
-    "statusBarItem.remoteBackground": "var(--surface-success-base)",
-    "statusBarItem.remoteForeground": "var(--text-base)",
-    "tab.lastPinnedBorder": "var(--border-weak-base)",
-    "tab.selectedBackground": "var(--surface-raised-base)",
-    "tab.selectedForeground": "var(--text-weak)",
-    "terminal.inactiveSelectionBackground": "var(--surface-raised-base)",
-    "widget.border": "var(--border-base)",
-  },
-  displayName: "opencode",
-  name: "opencode",
-  semanticHighlighting: true,
-  semanticTokenColors: {
-    customLiteral: "var(--syntax-function)",
-    newOperator: "var(--syntax-operator)",
-    numberLiteral: "var(--syntax-number)",
-    stringLiteral: "var(--syntax-string)",
-  },
-  tokenColors: [
-    {
-      scope: [
-        "meta.embedded",
-        "source.groovy.embedded",
-        "string meta.image.inline.markdown",
-        "variable.legacy.builtin.python",
-      ],
-      settings: {
-        foreground: "var(--text-base)",
-      },
-    },
-    {
-      scope: "emphasis",
-      settings: {
-        fontStyle: "italic",
-      },
-    },
-    {
-      scope: "strong",
-      settings: {
-        fontStyle: "bold",
-      },
-    },
-    {
-      scope: "header",
-      settings: {
-        foreground: "var(--markdown-heading)",
-      },
-    },
-    {
-      scope: "comment",
-      settings: {
-        foreground: "var(--syntax-comment)",
-      },
-    },
-    {
-      scope: "constant.language",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: [
-        "constant.numeric",
-        "variable.other.enummember",
-        "keyword.operator.plus.exponent",
-        "keyword.operator.minus.exponent",
-      ],
-      settings: {
-        foreground: "var(--syntax-number)",
-      },
-    },
-    {
-      scope: "constant.regexp",
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: "entity.name.tag",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: ["entity.name.tag.css", "entity.name.tag.less"],
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: "entity.other.attribute-name",
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: [
-        "entity.other.attribute-name.class.css",
-        "source.css entity.other.attribute-name.class",
-        "entity.other.attribute-name.id.css",
-        "entity.other.attribute-name.parent-selector.css",
-        "entity.other.attribute-name.parent.less",
-        "source.css entity.other.attribute-name.pseudo-class",
-        "entity.other.attribute-name.pseudo-element.css",
-        "source.css.less entity.other.attribute-name.id",
-        "entity.other.attribute-name.scss",
-      ],
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: "invalid",
-      settings: {
-        foreground: "var(--syntax-critical)",
-      },
-    },
-    {
-      scope: "markup.underline",
-      settings: {
-        fontStyle: "underline",
-      },
-    },
-    {
-      scope: "markup.bold",
-      settings: {
-        fontStyle: "bold",
-        foreground: "var(--markdown-strong)",
-      },
-    },
-    {
-      scope: "markup.heading",
-      settings: {
-        fontStyle: "bold",
-        foreground: "var(--theme-markdown-heading)",
-      },
-    },
-    {
-      scope: "markup.italic",
-      settings: {
-        fontStyle: "italic",
-      },
-    },
-    {
-      scope: "markup.strikethrough",
-      settings: {
-        fontStyle: "strikethrough",
-      },
-    },
-    {
-      scope: "markup.inserted",
-      settings: {
-        foreground: "var(--text-diff-add-base)",
-      },
-    },
-    {
-      scope: "markup.deleted",
-      settings: {
-        foreground: "var(--text-diff-delete-base)",
-      },
-    },
-    {
-      scope: "markup.changed",
-      settings: {
-        foreground: "var(--text-base)",
-      },
-    },
-    {
-      scope: "punctuation.definition.quote.begin.markdown",
-      settings: {
-        foreground: "var(--markdown-block-quote)",
-      },
-    },
-    {
-      scope: "punctuation.definition.list.begin.markdown",
-      settings: {
-        foreground: "var(--markdown-list-enumeration)",
-      },
-    },
-    {
-      scope: "markup.inline.raw",
-      settings: {
-        foreground: "var(--markdown-code)",
-      },
-    },
-    {
-      scope: "punctuation.definition.tag",
-      settings: {
-        foreground: "var(--syntax-punctuation)",
-      },
-    },
-    {
-      scope: ["meta.preprocessor", "entity.name.function.preprocessor"],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "meta.preprocessor.string",
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: "meta.preprocessor.numeric",
-      settings: {
-        foreground: "var(--syntax-number)",
-      },
-    },
-    {
-      scope: "meta.structure.dictionary.key.python",
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: "meta.diff.header",
-      settings: {
-        foreground: "var(--text-weak)",
-      },
-    },
-    {
-      scope: "storage",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "storage.type",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: ["storage.modifier", "keyword.operator.noexcept"],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: ["string", "meta.embedded.assembly"],
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: "string.tag",
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: "string.value",
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: "string.regexp",
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: [
-        "punctuation.definition.template-expression.begin",
-        "punctuation.definition.template-expression.end",
-        "punctuation.section.embedded",
-      ],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: ["meta.template.expression"],
-      settings: {
-        foreground: "var(--text-base)",
-      },
-    },
-    {
-      scope: [
-        "support.type.vendored.property-name",
-        "support.type.property-name",
-        "source.css variable",
-        "source.coffee.embedded",
-      ],
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: "keyword",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "keyword.control",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "keyword.operator",
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: [
-        "keyword.operator.new",
-        "keyword.operator.expression",
-        "keyword.operator.cast",
-        "keyword.operator.sizeof",
-        "keyword.operator.alignof",
-        "keyword.operator.typeid",
-        "keyword.operator.alignas",
-        "keyword.operator.instanceof",
-        "keyword.operator.logical.python",
-        "keyword.operator.wordlike",
-      ],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "keyword.other.unit",
-      settings: {
-        foreground: "var(--syntax-number)",
-      },
-    },
-    {
-      scope: ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "support.function.git-rebase",
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: "constant.sha.git-rebase",
-      settings: {
-        foreground: "var(--syntax-number)",
-      },
-    },
-    {
-      scope: [
-        "storage.modifier.import.java",
-        "variable.language.wildcard.java",
-        "storage.modifier.package.java",
-      ],
-      settings: {
-        foreground: "var(--text-base)",
-      },
-    },
-    {
-      scope: "variable.language",
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: [
-        "entity.name.function",
-        "support.function",
-        "support.constant.handlebars",
-        "source.powershell variable.other.member",
-        "entity.name.operator.custom-literal",
-      ],
-      settings: {
-        foreground: "var(--syntax-function)",
-      },
-    },
-    {
-      scope: [
-        "support.class",
-        "support.type",
-        "entity.name.type",
-        "entity.name.namespace",
-        "entity.other.attribute",
-        "entity.name.scope-resolution",
-        "entity.name.class",
-        "storage.type.numeric.go",
-        "storage.type.byte.go",
-        "storage.type.boolean.go",
-        "storage.type.string.go",
-        "storage.type.uintptr.go",
-        "storage.type.error.go",
-        "storage.type.rune.go",
-        "storage.type.cs",
-        "storage.type.generic.cs",
-        "storage.type.modifier.cs",
-        "storage.type.variable.cs",
-        "storage.type.annotation.java",
-        "storage.type.generic.java",
-        "storage.type.java",
-        "storage.type.object.array.java",
-        "storage.type.primitive.array.java",
-        "storage.type.primitive.java",
-        "storage.type.token.java",
-        "storage.type.groovy",
-        "storage.type.annotation.groovy",
-        "storage.type.parameters.groovy",
-        "storage.type.generic.groovy",
-        "storage.type.object.array.groovy",
-        "storage.type.primitive.array.groovy",
-        "storage.type.primitive.groovy",
-      ],
-      settings: {
-        foreground: "var(--syntax-type)",
-      },
-    },
-    {
-      scope: [
-        "meta.type.cast.expr",
-        "meta.type.new.expr",
-        "support.constant.math",
-        "support.constant.dom",
-        "support.constant.json",
-        "entity.other.inherited-class",
-        "punctuation.separator.namespace.ruby",
-      ],
-      settings: {
-        foreground: "var(--syntax-type)",
-      },
-    },
-    {
-      scope: [
-        "keyword.control",
-        "source.cpp keyword.operator.new",
-        "keyword.operator.delete",
-        "keyword.other.using",
-        "keyword.other.directive.using",
-        "keyword.other.operator",
-        "entity.name.operator",
-      ],
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: [
-        "variable",
-        "meta.definition.variable.name",
-        "support.variable",
-        "entity.name.variable",
-        "constant.other.placeholder",
-      ],
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: ["variable.other.constant", "variable.other.enummember"],
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: ["meta.object-literal.key"],
-      settings: {
-        foreground: "var(--syntax-variable)",
-      },
-    },
-    {
-      scope: [
-        "support.constant.property-value",
-        "support.constant.font-name",
-        "support.constant.media-type",
-        "support.constant.media",
-        "constant.other.color.rgb-value",
-        "constant.other.rgb-value",
-        "support.constant.color",
-      ],
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: [
-        "punctuation.definition.group.regexp",
-        "punctuation.definition.group.assertion.regexp",
-        "punctuation.definition.character-class.regexp",
-        "punctuation.character.set.begin.regexp",
-        "punctuation.character.set.end.regexp",
-        "keyword.operator.negation.regexp",
-        "support.other.parenthesis.regexp",
-      ],
-      settings: {
-        foreground: "var(--syntax-string)",
-      },
-    },
-    {
-      scope: [
-        "constant.character.character-class.regexp",
-        "constant.other.character-class.set.regexp",
-        "constant.other.character-class.regexp",
-        "constant.character.set.regexp",
-      ],
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: "keyword.operator.quantifier.regexp",
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: ["constant.character", "constant.other.option"],
-      settings: {
-        foreground: "var(--syntax-keyword)",
-      },
-    },
-    {
-      scope: "constant.character.escape",
-      settings: {
-        foreground: "var(--syntax-operator)",
-      },
-    },
-    {
-      scope: "entity.name.label",
-      settings: {
-        foreground: "var(--text-weak)",
-      },
-    },
-  ],
-  type: "dark",
-}
-
-const highlighter = await createHighlighter({
-  themes: [theme],
-  langs: [],
-})
-
-export const { use: useShiki, provider: ShikiProvider } = createSimpleContext({
-  name: "Shiki",
-  init: () => {
-    return highlighter
-  },
-})