chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,222 @@
|
||||
import type { ThemeRegistrationAny } from "streamdown";
|
||||
|
||||
// Custom Shiki theme matching the Trigger.dev VS Code dark theme.
|
||||
// Colors taken directly from the VS Code extension's tokenColors.
|
||||
export const triggerDarkTheme: ThemeRegistrationAny = {
|
||||
name: "trigger-dark",
|
||||
type: "dark",
|
||||
colors: {
|
||||
"editor.background": "var(--color-code-background)",
|
||||
"editor.foreground": "var(--color-code-foreground)",
|
||||
"editorLineNumber.foreground": "var(--color-code-line-number)",
|
||||
},
|
||||
tokenColors: [
|
||||
// Control flow keywords: pink-purple
|
||||
{
|
||||
scope: [
|
||||
"keyword.control",
|
||||
"keyword.operator.delete",
|
||||
"keyword.other.using",
|
||||
"keyword.other.operator",
|
||||
"entity.name.operator",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-keyword)" },
|
||||
},
|
||||
// Storage type (const, let, var, function, class): purple
|
||||
{
|
||||
scope: "storage.type",
|
||||
settings: { foreground: "var(--color-code-storage)" },
|
||||
},
|
||||
// Storage modifiers (async, export, etc.): purple
|
||||
{
|
||||
scope: ["storage.modifier", "keyword.operator.noexcept"],
|
||||
settings: { foreground: "var(--color-code-storage)" },
|
||||
},
|
||||
// Keyword operator expressions (new, typeof, instanceof, etc.): purple
|
||||
{
|
||||
scope: [
|
||||
"keyword.operator.new",
|
||||
"keyword.operator.expression",
|
||||
"keyword.operator.cast",
|
||||
"keyword.operator.sizeof",
|
||||
"keyword.operator.instanceof",
|
||||
"keyword.operator.logical.python",
|
||||
"keyword.operator.wordlike",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-storage)" },
|
||||
},
|
||||
// Types and namespaces: hot pink
|
||||
{
|
||||
scope: [
|
||||
"support.class",
|
||||
"support.type",
|
||||
"entity.name.type",
|
||||
"entity.name.namespace",
|
||||
"entity.name.scope-resolution",
|
||||
"entity.name.class",
|
||||
"entity.other.inherited-class",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-type)" },
|
||||
},
|
||||
// Functions: lime/yellow-green
|
||||
{
|
||||
scope: ["entity.name.function", "support.function"],
|
||||
settings: { foreground: "var(--color-code-function)" },
|
||||
},
|
||||
// Variables and parameters: light lavender
|
||||
{
|
||||
scope: [
|
||||
"variable",
|
||||
"meta.definition.variable.name",
|
||||
"support.variable",
|
||||
"entity.name.variable",
|
||||
"constant.other.placeholder",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-variable)" },
|
||||
},
|
||||
// Constants and enums: medium purple
|
||||
{
|
||||
scope: ["variable.other.constant", "variable.other.enummember"],
|
||||
settings: { foreground: "var(--color-code-constant)" },
|
||||
},
|
||||
// this/self: purple-blue
|
||||
{
|
||||
scope: "variable.language",
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// Object literal keys: medium purple-blue
|
||||
{
|
||||
scope: "meta.object-literal.key",
|
||||
settings: { foreground: "var(--color-code-object-key)" },
|
||||
},
|
||||
// Strings: sage green
|
||||
{
|
||||
scope: ["string", "meta.embedded.assembly"],
|
||||
settings: { foreground: "var(--color-code-string)" },
|
||||
},
|
||||
// String interpolation punctuation: blue-purple
|
||||
{
|
||||
scope: [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end",
|
||||
"punctuation.section.embedded",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-template-punctuation)" },
|
||||
},
|
||||
// Template expression reset
|
||||
{
|
||||
scope: "meta.template.expression",
|
||||
settings: { foreground: "var(--color-code-plain)" },
|
||||
},
|
||||
// Operators: gray (same as foreground)
|
||||
{
|
||||
scope: "keyword.operator",
|
||||
settings: { foreground: "var(--color-code-foreground)" },
|
||||
},
|
||||
// Comments: olive gray
|
||||
{
|
||||
scope: "comment",
|
||||
settings: { foreground: "var(--color-code-comment)" },
|
||||
},
|
||||
// Language constants (true, false, null, undefined): purple-blue
|
||||
{
|
||||
scope: "constant.language",
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// Numeric constants: light green
|
||||
{
|
||||
scope: [
|
||||
"constant.numeric",
|
||||
"keyword.operator.plus.exponent",
|
||||
"keyword.operator.minus.exponent",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-number)" },
|
||||
},
|
||||
// Regex: dark red
|
||||
{
|
||||
scope: "constant.regexp",
|
||||
settings: { foreground: "var(--color-code-regexp-constant)" },
|
||||
},
|
||||
// HTML/JSX tags: purple-blue
|
||||
{
|
||||
scope: "entity.name.tag",
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// Tag brackets: dark gray
|
||||
{
|
||||
scope: "punctuation.definition.tag",
|
||||
settings: { foreground: "var(--color-code-muted)" },
|
||||
},
|
||||
// HTML/JSX attributes: light purple
|
||||
{
|
||||
scope: "entity.other.attribute-name",
|
||||
settings: { foreground: "var(--color-code-attribute)" },
|
||||
},
|
||||
// Escape characters: gold
|
||||
{
|
||||
scope: "constant.character.escape",
|
||||
settings: { foreground: "var(--color-code-escape)" },
|
||||
},
|
||||
// Regex string: dark red
|
||||
{
|
||||
scope: "string.regexp",
|
||||
settings: { foreground: "var(--color-code-regexp)" },
|
||||
},
|
||||
// Storage: purple-blue
|
||||
{
|
||||
scope: "storage",
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// TS-specific: type casts, math/dom/json constants
|
||||
{
|
||||
scope: [
|
||||
"meta.type.cast.expr",
|
||||
"meta.type.new.expr",
|
||||
"support.constant.math",
|
||||
"support.constant.dom",
|
||||
"support.constant.json",
|
||||
],
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// Markdown headings: purple-blue bold
|
||||
{
|
||||
scope: "markup.heading",
|
||||
settings: { foreground: "var(--color-code-language)", fontStyle: "bold" },
|
||||
},
|
||||
// Markup bold: purple-blue
|
||||
{
|
||||
scope: "markup.bold",
|
||||
settings: { foreground: "var(--color-code-language)", fontStyle: "bold" },
|
||||
},
|
||||
// Markup inline raw: sage green
|
||||
{
|
||||
scope: "markup.inline.raw",
|
||||
settings: { foreground: "var(--color-code-string)" },
|
||||
},
|
||||
// Markup inserted: light green
|
||||
{
|
||||
scope: "markup.inserted",
|
||||
settings: { foreground: "var(--color-code-number)" },
|
||||
},
|
||||
// Markup deleted: sage green
|
||||
{
|
||||
scope: "markup.deleted",
|
||||
settings: { foreground: "var(--color-code-string)" },
|
||||
},
|
||||
// Markup changed: purple-blue
|
||||
{
|
||||
scope: "markup.changed",
|
||||
settings: { foreground: "var(--color-code-language)" },
|
||||
},
|
||||
// Invalid: red
|
||||
{
|
||||
scope: "invalid",
|
||||
settings: { foreground: "var(--color-code-invalid)" },
|
||||
},
|
||||
// JSX text content
|
||||
{
|
||||
scope: ["meta.jsx.children"],
|
||||
settings: { foreground: "var(--color-code-jsx-text)" },
|
||||
},
|
||||
],
|
||||
};
|
||||
Reference in New Issue
Block a user