{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "code-block",
  "type": "registry:block",
  "title": "Code Block",
  "description": "Display syntax-highlighted code snippets.",
  "dependencies": [
    "lucide-react",
    "shiki",
    "zod"
  ],
  "registryDependencies": [
    "button",
    "collapsible"
  ],
  "files": [
    {
      "path": "components/tool-ui/code-block/_adapter.tsx",
      "type": "registry:component",
      "target": "components/tool-ui/code-block/_adapter.tsx",
      "content": "/**\n * Adapter: UI and utility re-exports for copy-standalone portability.\n *\n * When copying this component to another project, update these imports\n * to match your project's paths:\n *\n *   cn          → Your Tailwind merge utility (e.g., \"@/lib/utils\", \"~/lib/cn\")\n *   Button      → shadcn/ui Button\n *   Collapsible → shadcn/ui Collapsible\n */\n\nexport { cn } from \"@/lib/utils\";\nexport { Button } from \"@/components/ui/button\";\nexport { Collapsible, CollapsibleTrigger } from \"@/components/ui/collapsible\";\n"
    },
    {
      "path": "components/tool-ui/code-block/code-block.tsx",
      "type": "registry:component",
      "target": "components/tool-ui/code-block/code-block.tsx",
      "content": "\"use client\";\n\nimport {\n  useState,\n  useCallback,\n  useEffect,\n  createContext,\n  use,\n  type ReactNode,\n} from \"react\";\nimport {\n  createHighlighter,\n  createJavaScriptRegexEngine,\n  type Highlighter,\n} from \"shiki\";\nimport { Copy, Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport pierreDarkTheme from \"../shared/pierre-dark-theme.js\";\nimport pierreLightTheme from \"../shared/pierre-light-theme.js\";\nimport type { CodeBlockLineNumbersMode, CodeBlockProps } from \"./schema\";\nimport { useCopyToClipboard } from \"../shared/use-copy-to-clipboard\";\n\nimport { Button, cn, Collapsible, CollapsibleTrigger } from \"./_adapter\";\n\nconst COPY_ID = \"codeblock-code\";\nconst MAX_HTML_CACHE_ENTRIES = 64;\n\nlet highlighterPromise: Promise<Highlighter> | null = null;\n\nfunction getHighlighter(): Promise<Highlighter> {\n  if (!highlighterPromise) {\n    highlighterPromise = createHighlighter({\n      themes: [pierreDarkTheme as never, pierreLightTheme as never],\n      langs: [],\n      engine: createJavaScriptRegexEngine(),\n    });\n  }\n  return highlighterPromise;\n}\n\nconst htmlCache = new Map<string, string>();\n\nfunction getCacheKey(\n  code: string,\n  language: string,\n  theme: string,\n  lineNumbers: CodeBlockLineNumbersMode,\n  highlightLines?: number[],\n): string {\n  return JSON.stringify({\n    code,\n    language,\n    theme,\n    lineNumbers,\n    highlightLines: highlightLines ?? null,\n  });\n}\n\nfunction setCachedHtml(cacheKey: string, html: string): void {\n  if (htmlCache.has(cacheKey)) {\n    htmlCache.set(cacheKey, html);\n    return;\n  }\n\n  if (htmlCache.size >= MAX_HTML_CACHE_ENTRIES) {\n    const oldestKey = htmlCache.keys().next().value;\n    if (typeof oldestKey === \"string\") {\n      htmlCache.delete(oldestKey);\n    }\n  }\n\n  htmlCache.set(cacheKey, html);\n}\n\nconst LANGUAGE_DISPLAY_NAMES: Record<string, string> = {\n  typescript: \"TypeScript\",\n  javascript: \"JavaScript\",\n  python: \"Python\",\n  tsx: \"TSX\",\n  jsx: \"JSX\",\n  json: \"JSON\",\n  bash: \"Bash\",\n  shell: \"Shell\",\n  css: \"CSS\",\n  html: \"HTML\",\n  markdown: \"Markdown\",\n  sql: \"SQL\",\n  yaml: \"YAML\",\n  go: \"Go\",\n  rust: \"Rust\",\n  text: \"Plain Text\",\n};\n\nfunction getLanguageDisplayName(lang: string): string {\n  return LANGUAGE_DISPLAY_NAMES[lang.toLowerCase()] || lang.toUpperCase();\n}\n\nfunction getSystemTheme(): \"light\" | \"dark\" {\n  if (typeof window === \"undefined\") return \"light\";\n  return window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n    ? \"dark\"\n    : \"light\";\n}\n\nfunction getDocumentTheme(): \"light\" | \"dark\" | null {\n  if (typeof document === \"undefined\") return null;\n  const root = document.documentElement;\n  const dataTheme = root.getAttribute(\"data-theme\")?.toLowerCase();\n  if (dataTheme === \"dark\") return \"dark\";\n  if (dataTheme === \"light\") return \"light\";\n  if (root.classList.contains(\"dark\")) return \"dark\";\n  if (root.classList.contains(\"light\")) return \"light\";\n  return null;\n}\n\nfunction useResolvedTheme(): \"light\" | \"dark\" {\n  const [theme, setTheme] = useState<\"light\" | \"dark\">(() => {\n    return getDocumentTheme() ?? getSystemTheme();\n  });\n\n  useEffect(() => {\n    if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n      return;\n    }\n\n    const update = () => setTheme(getDocumentTheme() ?? getSystemTheme());\n\n    const mql = window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n    mql?.addEventListener(\"change\", update);\n\n    const observer = new MutationObserver(update);\n    observer.observe(document.documentElement, {\n      attributes: true,\n      attributeFilter: [\"class\", \"data-theme\"],\n    });\n\n    return () => {\n      mql?.removeEventListener(\"change\", update);\n      observer.disconnect();\n    };\n  }, []);\n\n  return theme;\n}\n\nexport type CodeBlockRootProps = CodeBlockProps & {\n  children: ReactNode;\n  expanded?: boolean;\n  defaultExpanded?: boolean;\n  onExpandedChange?: (expanded: boolean) => void;\n};\n\ntype CodeBlockSharedState = {\n  id: string;\n  code: string;\n  language: string;\n  filename?: string;\n  highlightedHtml: string | null;\n  isCopied: boolean;\n  copyCode: () => void;\n  lineCount: number;\n  isCollapsed: boolean;\n  shouldCollapse: boolean;\n  toggleExpanded: () => void;\n};\n\nconst CodeBlockContext = createContext<CodeBlockSharedState | null>(null);\n\nfunction useCodeBlock(): CodeBlockSharedState {\n  const context = use(CodeBlockContext);\n  if (!context) {\n    throw new Error(\n      \"CodeBlock subcomponents must be used within <CodeBlock.Root>.\",\n    );\n  }\n  return context;\n}\n\nfunction CodeBlockRoot({\n  id,\n  code,\n  language = \"text\",\n  lineNumbers = \"visible\",\n  filename,\n  highlightLines,\n  maxCollapsedLines,\n  className,\n  children,\n  expanded: expandedProp,\n  defaultExpanded = false,\n  onExpandedChange,\n}: CodeBlockRootProps) {\n  const resolvedTheme = useResolvedTheme();\n  const [expandedState, setExpandedState] = useState(defaultExpanded);\n  const { copiedId, copy } = useCopyToClipboard();\n  const isCopied = copiedId === COPY_ID;\n\n  const expanded = expandedProp ?? expandedState;\n  const setExpanded = useCallback(\n    (nextExpanded: boolean) => {\n      if (expandedProp === undefined) {\n        setExpandedState(nextExpanded);\n      }\n      onExpandedChange?.(nextExpanded);\n    },\n    [expandedProp, onExpandedChange],\n  );\n\n  const theme = resolvedTheme === \"dark\" ? \"pierre-dark\" : \"pierre-light\";\n  const cacheKey = getCacheKey(\n    code,\n    language,\n    theme,\n    lineNumbers,\n    highlightLines,\n  );\n\n  const [highlightedHtml, setHighlightedHtml] = useState<string | null>(\n    () => htmlCache.get(cacheKey) ?? null,\n  );\n\n  useEffect(() => {\n    const cached = htmlCache.get(cacheKey);\n    if (cached) {\n      setHighlightedHtml(cached);\n      return;\n    }\n\n    let cancelled = false;\n    const showLineNumbers = lineNumbers === \"visible\";\n\n    async function highlight() {\n      if (!code) {\n        if (!cancelled) setHighlightedHtml(\"\");\n        return;\n      }\n\n      try {\n        const highlighter = await getHighlighter();\n        const loadedLangs = highlighter.getLoadedLanguages();\n\n        if (!loadedLangs.includes(language)) {\n          await highlighter.loadLanguage(\n            language as Parameters<Highlighter[\"loadLanguage\"]>[0],\n          );\n        }\n\n        const lineCount = code.split(\"\\n\").length;\n        const lineNumberWidth = `${String(lineCount).length + 0.5}ch`;\n\n        const html = highlighter.codeToHtml(code, {\n          lang: language,\n          theme,\n          transformers: [\n            {\n              line(node, line) {\n                node.properties[\"data-line\"] = line;\n                if (highlightLines?.includes(line)) {\n                  const highlightBg =\n                    resolvedTheme === \"dark\"\n                      ? \"rgba(255,255,255,0.1)\"\n                      : \"rgba(0,0,0,0.05)\";\n                  node.properties.style = `background:${highlightBg};`;\n                }\n                if (showLineNumbers) {\n                  node.children.unshift({\n                    type: \"element\",\n                    tagName: \"span\",\n                    properties: {\n                      style: `display:inline-block;width:${lineNumberWidth};text-align:right;margin-right:1.5em;user-select:none;opacity:0.5;`,\n                      \"aria-hidden\": \"true\",\n                    },\n                    children: [{ type: \"text\", value: String(line) }],\n                  });\n                }\n              },\n            },\n          ],\n        });\n        if (!cancelled) {\n          setCachedHtml(cacheKey, html);\n          setHighlightedHtml(html);\n        }\n      } catch {\n        const escaped = code\n          .replace(/&/g, \"&amp;\")\n          .replace(/</g, \"&lt;\")\n          .replace(/>/g, \"&gt;\");\n        if (!cancelled) {\n          setHighlightedHtml(`<pre><code>${escaped}</code></pre>`);\n        }\n      }\n    }\n    void highlight();\n    return () => {\n      cancelled = true;\n    };\n  }, [\n    cacheKey,\n    code,\n    language,\n    lineNumbers,\n    theme,\n    highlightLines,\n    resolvedTheme,\n  ]);\n\n  const lineCount = code.split(\"\\n\").length;\n  const shouldCollapse = !!maxCollapsedLines && lineCount > maxCollapsedLines;\n  const isCollapsed = shouldCollapse && !expanded;\n\n  const copyCode = useCallback(() => {\n    void copy(code, COPY_ID);\n  }, [code, copy]);\n\n  const toggleExpanded = useCallback(() => {\n    setExpanded(!expanded);\n  }, [expanded, setExpanded]);\n\n  const state: CodeBlockSharedState = {\n    id,\n    code,\n    language,\n    filename,\n    highlightedHtml,\n    isCopied,\n    copyCode,\n    lineCount,\n    shouldCollapse,\n    isCollapsed,\n    toggleExpanded,\n  };\n\n  return (\n    <CodeBlockContext.Provider value={state}>\n      <div\n        className={cn(\n          \"@container flex w-full min-w-80 flex-col gap-3\",\n          className,\n        )}\n        data-tool-ui-id={id}\n        data-slot=\"code-block\"\n      >\n        <div className=\"border-border bg-card overflow-hidden rounded-lg border shadow-xs\">\n          <Collapsible open={!isCollapsed}>{children}</Collapsible>\n        </div>\n      </div>\n    </CodeBlockContext.Provider>\n  );\n}\n\nexport type CodeBlockSectionProps = {\n  className?: string;\n};\n\nfunction CodeBlockHeader({ className }: CodeBlockSectionProps) {\n  const { language, filename, isCopied, copyCode } = useCodeBlock();\n  return (\n    <div\n      className={cn(\n        \"bg-card flex items-center justify-between border-b px-4 py-2\",\n        className,\n      )}\n    >\n      <div className=\"flex items-center gap-1\">\n        <span className=\"text-muted-foreground text-sm\">\n          {getLanguageDisplayName(language)}\n        </span>\n        {filename && (\n          <>\n            <span className=\"text-muted-foreground/50\">•</span>\n            <span className=\"text-foreground text-sm font-medium\">\n              {filename}\n            </span>\n          </>\n        )}\n      </div>\n      <Button\n        variant=\"ghost\"\n        size=\"sm\"\n        onClick={copyCode}\n        className=\"h-7 w-7 p-0\"\n        aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n      >\n        {isCopied ? (\n          <Check className=\"h-4 w-4 text-green-700 dark:text-green-400\" />\n        ) : (\n          <Copy className=\"text-muted-foreground h-4 w-4\" />\n        )}\n      </Button>\n    </div>\n  );\n}\n\nfunction CodeBlockContent({ className }: CodeBlockSectionProps) {\n  const { highlightedHtml, isCollapsed } = useCodeBlock();\n  return (\n    <div\n      className={cn(\n        \"overflow-x-auto overflow-y-clip text-[13px] leading-[1.4] [&_pre]:bg-transparent [&_pre]:py-4\",\n        isCollapsed && \"max-h-[200px]\",\n        className,\n      )}\n    >\n      {highlightedHtml && (\n        <div dangerouslySetInnerHTML={{ __html: highlightedHtml }} />\n      )}\n    </div>\n  );\n}\n\nfunction CodeBlockCollapseToggle({ className }: CodeBlockSectionProps) {\n  const { shouldCollapse, isCollapsed, toggleExpanded, lineCount } =\n    useCodeBlock();\n\n  if (!shouldCollapse) return null;\n\n  return (\n    <CollapsibleTrigger asChild>\n      <Button\n        variant=\"ghost\"\n        onClick={toggleExpanded}\n        className={cn(\n          \"text-muted-foreground w-full rounded-none border-t font-normal\",\n          className,\n        )}\n      >\n        {isCollapsed ? (\n          <>\n            <ChevronDown className=\"mr-1 size-4\" />\n            Show all {lineCount} lines\n          </>\n        ) : (\n          <>\n            <ChevronUp className=\"mr-2 h-4 w-4\" />\n            Collapse\n          </>\n        )}\n      </Button>\n    </CollapsibleTrigger>\n  );\n}\n\nexport type CodeBlockComposedProps = Omit<CodeBlockRootProps, \"children\">;\n\nfunction CodeBlockComposed(props: CodeBlockComposedProps) {\n  return (\n    <CodeBlockRoot {...props}>\n      <CodeBlockHeader />\n      <CodeBlockContent />\n      <CodeBlockCollapseToggle />\n    </CodeBlockRoot>\n  );\n}\n\ntype CodeBlockComponent = typeof CodeBlockComposed & {\n  Root: typeof CodeBlockRoot;\n  Header: typeof CodeBlockHeader;\n  Content: typeof CodeBlockContent;\n  CollapseToggle: typeof CodeBlockCollapseToggle;\n};\n\nexport const CodeBlock = Object.assign(CodeBlockComposed, {\n  Root: CodeBlockRoot,\n  Header: CodeBlockHeader,\n  Content: CodeBlockContent,\n  CollapseToggle: CodeBlockCollapseToggle,\n}) as CodeBlockComponent;\n"
    },
    {
      "path": "components/tool-ui/code-block/index.tsx",
      "type": "registry:component",
      "target": "components/tool-ui/code-block/index.tsx",
      "content": "export { CodeBlock } from \"./code-block\";\nexport type {\n  CodeBlockRootProps,\n  CodeBlockComposedProps,\n  CodeBlockSectionProps,\n} from \"./code-block\";\nexport type {\n  CodeBlockProps,\n  CodeBlockLineNumbersMode,\n  SerializableCodeBlock,\n} from \"./schema\";\n"
    },
    {
      "path": "components/tool-ui/code-block/README.md",
      "type": "registry:file",
      "target": "components/tool-ui/code-block/README.md",
      "content": "# Code Block\n\nImplementation for the \"code-block\" Tool UI surface.\n\n## Files\n\n- public exports: components/tool-ui/code-block/index.tsx\n- serializable schema + parse helpers: components/tool-ui/code-block/schema.ts\n\n## Companion assets\n\n- Docs page: app/docs/code-block/content.mdx\n- Preset payload: lib/presets/code-block.ts\n\n## Quick check\n\nRun this after edits:\n\npnpm test\n"
    },
    {
      "path": "components/tool-ui/code-block/schema.ts",
      "type": "registry:lib",
      "target": "components/tool-ui/code-block/schema.ts",
      "content": "import { z } from \"zod\";\nimport { defineToolUiContract } from \"../shared/contract\";\nimport {\n  ToolUIIdSchema,\n  ToolUIReceiptSchema,\n  ToolUIRoleSchema,\n} from \"../shared/schema\";\n\nexport const CodeBlockPropsSchema = z.object({\n  id: ToolUIIdSchema,\n  role: ToolUIRoleSchema.optional(),\n  receipt: ToolUIReceiptSchema.optional(),\n  code: z.string(),\n  language: z.string().trim().min(1).default(\"text\"),\n  lineNumbers: z.enum([\"visible\", \"hidden\"]).default(\"visible\"),\n  filename: z.string().optional(),\n  highlightLines: z.array(z.number().int().positive()).optional(),\n  maxCollapsedLines: z.number().min(1).optional(),\n  className: z.string().optional(),\n});\n\nexport type CodeBlockProps = z.infer<typeof CodeBlockPropsSchema>;\nexport type CodeBlockLineNumbersMode = CodeBlockProps[\"lineNumbers\"];\n\nexport const SerializableCodeBlockSchema = CodeBlockPropsSchema.omit({\n  className: true,\n});\n\nexport type SerializableCodeBlock = z.infer<typeof SerializableCodeBlockSchema>;\n\nconst SerializableCodeBlockSchemaContract = defineToolUiContract(\n  \"CodeBlock\",\n  SerializableCodeBlockSchema,\n);\n\nexport const parseSerializableCodeBlock: (\n  input: unknown,\n) => SerializableCodeBlock = SerializableCodeBlockSchemaContract.parse;\n\nexport const safeParseSerializableCodeBlock: (\n  input: unknown,\n) => SerializableCodeBlock | null =\n  SerializableCodeBlockSchemaContract.safeParse;\n"
    },
    {
      "path": "components/tool-ui/shared/contract.ts",
      "type": "registry:lib",
      "target": "components/tool-ui/shared/contract.ts",
      "content": "import { z } from \"zod\";\nimport { parseWithSchema, safeParseWithSchema } from \"./parse\";\n\nexport interface ToolUiContract<T> {\n  schema: z.ZodType<T>;\n  parse: (input: unknown) => T;\n  safeParse: (input: unknown) => T | null;\n}\n\nexport function defineToolUiContract<T>(\n  componentName: string,\n  schema: z.ZodType<T>,\n): ToolUiContract<T> {\n  return {\n    schema,\n    parse: (input: unknown) => parseWithSchema(schema, input, componentName),\n    safeParse: (input: unknown) => safeParseWithSchema(schema, input),\n  };\n}\n"
    },
    {
      "path": "components/tool-ui/shared/parse.ts",
      "type": "registry:lib",
      "target": "components/tool-ui/shared/parse.ts",
      "content": "import { z } from \"zod\";\n\nfunction formatZodPath(path: Array<string | number | symbol>): string {\n  if (path.length === 0) return \"root\";\n  return path\n    .map((segment) =>\n      typeof segment === \"number\" ? `[${segment}]` : String(segment),\n    )\n    .join(\".\");\n}\n\n/**\n * Format Zod errors into a compact `path: message` string.\n */\nexport function formatZodError(error: z.ZodError): string {\n  const parts = error.issues.map((issue) => {\n    const path = formatZodPath(issue.path);\n    return `${path}: ${issue.message}`;\n  });\n\n  return Array.from(new Set(parts)).join(\"; \");\n}\n\n/**\n * Parse unknown input and throw a readable error.\n */\nexport function parseWithSchema<T>(\n  schema: z.ZodType<T>,\n  input: unknown,\n  name: string,\n): T {\n  const res = schema.safeParse(input);\n  if (!res.success) {\n    throw new Error(`Invalid ${name} payload: ${formatZodError(res.error)}`);\n  }\n  return res.data;\n}\n\n/**\n * Parse unknown input, returning `null` instead of throwing on failure.\n *\n * Use this in assistant-ui `render` functions where `args` stream in\n * incrementally and may be incomplete until the tool call finishes.\n */\nexport function safeParseWithSchema<T>(\n  schema: z.ZodType<T>,\n  input: unknown,\n): T | null {\n  const res = schema.safeParse(input);\n  return res.success ? res.data : null;\n}\n"
    },
    {
      "path": "components/tool-ui/shared/pierre-dark-theme.js",
      "type": "registry:file",
      "target": "components/tool-ui/shared/pierre-dark-theme.js",
      "content": "//#region src/themes/pierre-dark.json\nvar name = \"pierre-dark\";\nvar type = \"dark\";\nvar colors = {\n  \"editor.background\": \"#070707\",\n  \"editor.foreground\": \"#fbfbfb\",\n  foreground: \"#fbfbfb\",\n  focusBorder: \"#009fff\",\n  \"selection.background\": \"#19283c\",\n  \"editor.selectionBackground\": \"#009fff4d\",\n  \"editor.lineHighlightBackground\": \"#19283c8c\",\n  \"editorCursor.foreground\": \"#009fff\",\n  \"editorLineNumber.foreground\": \"#84848A\",\n  \"editorLineNumber.activeForeground\": \"#adadb1\",\n  \"editorIndentGuide.background\": \"#39393c\",\n  \"editorIndentGuide.activeBackground\": \"#2e2e30\",\n  \"diffEditor.insertedTextBackground\": \"#00cab11a\",\n  \"diffEditor.deletedTextBackground\": \"#ff2e3f1a\",\n  \"sideBar.background\": \"#141415\",\n  \"sideBar.foreground\": \"#adadb1\",\n  \"sideBar.border\": \"#070707\",\n  \"sideBarTitle.foreground\": \"#fbfbfb\",\n  \"sideBarSectionHeader.background\": \"#141415\",\n  \"sideBarSectionHeader.foreground\": \"#adadb1\",\n  \"sideBarSectionHeader.border\": \"#070707\",\n  \"activityBar.background\": \"#141415\",\n  \"activityBar.foreground\": \"#fbfbfb\",\n  \"activityBar.border\": \"#070707\",\n  \"activityBar.activeBorder\": \"#009fff\",\n  \"activityBarBadge.background\": \"#009fff\",\n  \"activityBarBadge.foreground\": \"#070707\",\n  \"titleBar.activeBackground\": \"#141415\",\n  \"titleBar.activeForeground\": \"#fbfbfb\",\n  \"titleBar.inactiveBackground\": \"#141415\",\n  \"titleBar.inactiveForeground\": \"#84848A\",\n  \"titleBar.border\": \"#070707\",\n  \"list.activeSelectionBackground\": \"#19283c99\",\n  \"list.activeSelectionForeground\": \"#fbfbfb\",\n  \"list.inactiveSelectionBackground\": \"#19283c73\",\n  \"list.hoverBackground\": \"#19283c59\",\n  \"list.focusOutline\": \"#009fff\",\n  \"tab.activeBackground\": \"#070707\",\n  \"tab.activeForeground\": \"#fbfbfb\",\n  \"tab.activeBorderTop\": \"#009fff\",\n  \"tab.inactiveBackground\": \"#141415\",\n  \"tab.inactiveForeground\": \"#84848A\",\n  \"tab.border\": \"#070707\",\n  \"editorGroupHeader.tabsBackground\": \"#141415\",\n  \"editorGroupHeader.tabsBorder\": \"#070707\",\n  \"panel.background\": \"#141415\",\n  \"panel.border\": \"#070707\",\n  \"panelTitle.activeBorder\": \"#009fff\",\n  \"panelTitle.activeForeground\": \"#fbfbfb\",\n  \"panelTitle.inactiveForeground\": \"#84848A\",\n  \"statusBar.background\": \"#141415\",\n  \"statusBar.foreground\": \"#adadb1\",\n  \"statusBar.border\": \"#070707\",\n  \"statusBar.noFolderBackground\": \"#141415\",\n  \"statusBar.debuggingBackground\": \"#ffca00\",\n  \"statusBar.debuggingForeground\": \"#070707\",\n  \"statusBarItem.remoteBackground\": \"#141415\",\n  \"statusBarItem.remoteForeground\": \"#adadb1\",\n  \"input.background\": \"#1F1F21\",\n  \"input.border\": \"#424245\",\n  \"input.foreground\": \"#fbfbfb\",\n  \"input.placeholderForeground\": \"#79797F\",\n  \"dropdown.background\": \"#1F1F21\",\n  \"dropdown.border\": \"#424245\",\n  \"dropdown.foreground\": \"#fbfbfb\",\n  \"button.background\": \"#009fff\",\n  \"button.foreground\": \"#070707\",\n  \"button.hoverBackground\": \"#0190e6\",\n  \"textLink.foreground\": \"#009fff\",\n  \"textLink.activeForeground\": \"#009fff\",\n  \"gitDecoration.addedResourceForeground\": \"#00cab1\",\n  \"gitDecoration.conflictingResourceForeground\": \"#ffca00\",\n  \"gitDecoration.modifiedResourceForeground\": \"#009fff\",\n  \"gitDecoration.deletedResourceForeground\": \"#ff2e3f\",\n  \"gitDecoration.untrackedResourceForeground\": \"#00cab1\",\n  \"gitDecoration.ignoredResourceForeground\": \"#84848A\",\n  \"terminal.titleForeground\": \"#adadb1\",\n  \"terminal.titleInactiveForeground\": \"#84848A\",\n  \"terminal.background\": \"#141415\",\n  \"terminal.foreground\": \"#adadb1\",\n  \"terminal.ansiBlack\": \"#141415\",\n  \"terminal.ansiRed\": \"#ff2e3f\",\n  \"terminal.ansiGreen\": \"#0dbe4e\",\n  \"terminal.ansiYellow\": \"#ffca00\",\n  \"terminal.ansiBlue\": \"#009fff\",\n  \"terminal.ansiMagenta\": \"#c635e4\",\n  \"terminal.ansiCyan\": \"#08c0ef\",\n  \"terminal.ansiWhite\": \"#c6c6c8\",\n  \"terminal.ansiBrightBlack\": \"#141415\",\n  \"terminal.ansiBrightRed\": \"#ff2e3f\",\n  \"terminal.ansiBrightGreen\": \"#0dbe4e\",\n  \"terminal.ansiBrightYellow\": \"#ffca00\",\n  \"terminal.ansiBrightBlue\": \"#009fff\",\n  \"terminal.ansiBrightMagenta\": \"#c635e4\",\n  \"terminal.ansiBrightCyan\": \"#08c0ef\",\n  \"terminal.ansiBrightWhite\": \"#c6c6c8\",\n};\nvar tokenColors = [\n  {\n    scope: [\"comment\", \"punctuation.definition.comment\"],\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"comment markup.link\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: [\"string\", \"constant.other.symbol\"],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.string.begin\",\n      \"punctuation.definition.string.end\",\n    ],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: [\"constant.numeric\", \"constant.language.boolean\"],\n    settings: { foreground: \"#68cdf2\" },\n  },\n  {\n    scope: \"constant\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"punctuation.definition.constant\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"constant.language\",\n    settings: { foreground: \"#68cdf2\" },\n  },\n  {\n    scope: \"variable.other.constant\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"keyword\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.control\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\"storage\", \"storage.type\", \"storage.modifier\"],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"token.storage\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.new\",\n      \"keyword.operator.expression.instanceof\",\n      \"keyword.operator.expression.typeof\",\n      \"keyword.operator.expression.void\",\n      \"keyword.operator.expression.delete\",\n      \"keyword.operator.expression.in\",\n      \"keyword.operator.expression.of\",\n      \"keyword.operator.expression.keyof\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.operator.delete\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\"variable\", \"identifier\", \"meta.definition.variable\"],\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: [\n      \"variable.other.readwrite\",\n      \"meta.object-literal.key\",\n      \"support.variable.property\",\n      \"support.variable.object.process\",\n      \"support.variable.object.node\",\n    ],\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: \"variable.language\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"variable.parameter.function\",\n    settings: { foreground: \"#adadb1\" },\n  },\n  {\n    scope: \"function.parameter\",\n    settings: { foreground: \"#adadb1\" },\n  },\n  {\n    scope: \"variable.parameter\",\n    settings: { foreground: \"#adadb1\" },\n  },\n  {\n    scope: \"variable.parameter.function.language.python\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"variable.parameter.function.python\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: [\n      \"support.function\",\n      \"entity.name.function\",\n      \"meta.function-call\",\n      \"meta.require\",\n      \"support.function.any-method\",\n      \"variable.function\",\n    ],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"keyword.other.special-method\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"entity.name.function\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"support.function.console\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: [\n      \"support.type\",\n      \"entity.name.type\",\n      \"entity.name.class\",\n      \"storage.type\",\n    ],\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: [\"support.class\", \"entity.name.type.class\"],\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: [\n      \"entity.name.class\",\n      \"variable.other.class.js\",\n      \"variable.other.class.ts\",\n    ],\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: \"entity.name.class.identifier.namespace.type\",\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: \"entity.name.type.namespace\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"entity.other.inherited-class\",\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: \"entity.name.namespace\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"keyword.operator\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.logical\",\n      \"keyword.operator.bitwise\",\n      \"keyword.operator.channel\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.arithmetic\",\n      \"keyword.operator.comparison\",\n      \"keyword.operator.relational\",\n      \"keyword.operator.increment\",\n      \"keyword.operator.decrement\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.assignment\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.assignment.compound\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.compound.js\",\n      \"keyword.operator.assignment.compound.ts\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.ternary\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.operator.optional\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"punctuation\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.separator.delimiter\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.separator.key-value\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.terminator\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace.square\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace.round\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"function.brace\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.parameters\",\n      \"punctuation.definition.typeparameters\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"punctuation.definition.block\", \"punctuation.definition.tag\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"meta.tag.tsx\", \"meta.tag.jsx\", \"meta.tag.js\", \"meta.tag.ts\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"keyword.operator.expression.import\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"keyword.operator.module\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"support.type.object.console\",\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: [\n      \"support.module.node\",\n      \"support.type.object.module\",\n      \"entity.name.type.module\",\n    ],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"support.constant.math\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"support.constant.property.math\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"support.constant.json\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"support.type.object.dom\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"support.variable.dom\", \"support.variable.property.dom\"],\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: \"support.variable.property.process\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"meta.property.object\",\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: \"variable.parameter.function.js\",\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: [\"keyword.other.template.begin\", \"keyword.other.template.end\"],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: [\n      \"keyword.other.substitution.begin\",\n      \"keyword.other.substitution.end\",\n    ],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.template-expression.begin\",\n      \"punctuation.definition.template-expression.end\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"meta.template.expression\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.section.embedded\",\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: \"variable.interpolation\",\n    settings: { foreground: \"#ffa359\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.embedded.begin\",\n      \"punctuation.section.embedded.end\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"punctuation.quasi.element\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"support.type.primitive.ts\",\n      \"support.type.builtin.ts\",\n      \"support.type.primitive.tsx\",\n      \"support.type.builtin.tsx\",\n    ],\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: \"support.type.type.flowtype\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"support.type.primitive\",\n    settings: { foreground: \"#d568ea\" },\n  },\n  {\n    scope: \"support.variable.magic.python\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"variable.parameter.function.language.special.self.python\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"punctuation.separator.period.python\",\n      \"punctuation.separator.element.python\",\n      \"punctuation.parenthesis.begin.python\",\n      \"punctuation.parenthesis.end.python\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.arguments.begin.python\",\n      \"punctuation.definition.arguments.end.python\",\n      \"punctuation.separator.arguments.python\",\n      \"punctuation.definition.list.begin.python\",\n      \"punctuation.definition.list.end.python\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.type.python\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.logical.python\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"meta.function-call.generic.python\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"constant.character.format.placeholder.other.python\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"meta.function.decorator.python\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: [\n      \"support.token.decorator.python\",\n      \"meta.function.decorator.identifier.python\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"storage.modifier.lifetime.rust\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.function.std.rust\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"entity.name.lifetime.rust\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"variable.language.rust\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"keyword.operator.misc.rust\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"keyword.operator.sigil.rust\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"support.constant.core.rust\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: [\"meta.function.c\", \"meta.function.cpp\"],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.block.begin.bracket.curly.cpp\",\n      \"punctuation.section.block.end.bracket.curly.cpp\",\n      \"punctuation.terminator.statement.c\",\n      \"punctuation.section.block.begin.bracket.curly.c\",\n      \"punctuation.section.block.end.bracket.curly.c\",\n      \"punctuation.section.parens.begin.bracket.round.c\",\n      \"punctuation.section.parens.end.bracket.round.c\",\n      \"punctuation.section.parameters.begin.bracket.round.c\",\n      \"punctuation.section.parameters.end.bracket.round.c\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.c\",\n      \"keyword.operator.comparison.c\",\n      \"keyword.operator.c\",\n      \"keyword.operator.increment.c\",\n      \"keyword.operator.decrement.c\",\n      \"keyword.operator.bitwise.shift.c\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.cpp\",\n      \"keyword.operator.comparison.cpp\",\n      \"keyword.operator.cpp\",\n      \"keyword.operator.increment.cpp\",\n      \"keyword.operator.decrement.cpp\",\n      \"keyword.operator.bitwise.shift.cpp\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\"punctuation.separator.c\", \"punctuation.separator.cpp\"],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\"support.type.posix-reserved.c\", \"support.type.posix-reserved.cpp\"],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"keyword.operator.sizeof.c\", \"keyword.operator.sizeof.cpp\"],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"variable.c\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"storage.type.annotation.java\", \"storage.type.object.array.java\"],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"source.java\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.block.begin.java\",\n      \"punctuation.section.block.end.java\",\n      \"punctuation.definition.method-parameters.begin.java\",\n      \"punctuation.definition.method-parameters.end.java\",\n      \"meta.method.identifier.java\",\n      \"punctuation.section.method.begin.java\",\n      \"punctuation.section.method.end.java\",\n      \"punctuation.terminator.java\",\n      \"punctuation.section.class.begin.java\",\n      \"punctuation.section.class.end.java\",\n      \"punctuation.section.inner-class.begin.java\",\n      \"punctuation.section.inner-class.end.java\",\n      \"meta.method-call.java\",\n      \"punctuation.section.class.begin.bracket.curly.java\",\n      \"punctuation.section.class.end.bracket.curly.java\",\n      \"punctuation.section.method.begin.bracket.curly.java\",\n      \"punctuation.section.method.end.bracket.curly.java\",\n      \"punctuation.separator.period.java\",\n      \"punctuation.bracket.angle.java\",\n      \"punctuation.definition.annotation.java\",\n      \"meta.method.body.java\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.method.java\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: [\n      \"storage.modifier.import.java\",\n      \"storage.type.java\",\n      \"storage.type.generic.java\",\n    ],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"keyword.operator.instanceof.java\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"meta.definition.variable.name.java\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"token.variable.parameter.java\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"import.storage.java\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"token.package.keyword\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"token.package\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"token.storage.type.java\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"keyword.operator.assignment.go\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\"keyword.operator.arithmetic.go\", \"keyword.operator.address.go\"],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"entity.name.package.go\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"support.other.namespace.use.php\",\n      \"support.other.namespace.use-as.php\",\n      \"support.other.namespace.php\",\n      \"entity.other.alias.php\",\n      \"meta.interface.php\",\n    ],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"keyword.operator.error-control.php\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.operator.type.php\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.array.begin.php\",\n      \"punctuation.section.array.end.php\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"storage.type.php\",\n      \"meta.other.type.phpdoc.php\",\n      \"keyword.other.type.php\",\n      \"keyword.other.array.phpdoc.php\",\n    ],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"meta.function-call.php\",\n      \"meta.function-call.object.php\",\n      \"meta.function-call.static.php\",\n    ],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.parameters.begin.bracket.round.php\",\n      \"punctuation.definition.parameters.end.bracket.round.php\",\n      \"punctuation.separator.delimiter.php\",\n      \"punctuation.section.scope.begin.php\",\n      \"punctuation.section.scope.end.php\",\n      \"punctuation.terminator.expression.php\",\n      \"punctuation.definition.arguments.begin.bracket.round.php\",\n      \"punctuation.definition.arguments.end.bracket.round.php\",\n      \"punctuation.definition.storage-type.begin.bracket.round.php\",\n      \"punctuation.definition.storage-type.end.bracket.round.php\",\n      \"punctuation.definition.array.begin.bracket.round.php\",\n      \"punctuation.definition.array.end.bracket.round.php\",\n      \"punctuation.definition.begin.bracket.round.php\",\n      \"punctuation.definition.end.bracket.round.php\",\n      \"punctuation.definition.begin.bracket.curly.php\",\n      \"punctuation.definition.end.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.end.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.start.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.begin.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.end.bracket.curly.php\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"support.constant.ext.php\",\n      \"support.constant.std.php\",\n      \"support.constant.core.php\",\n      \"support.constant.parser-token.php\",\n    ],\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: [\"entity.name.goto-label.php\", \"support.other.php\"],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.logical.php\",\n      \"keyword.operator.bitwise.php\",\n      \"keyword.operator.arithmetic.php\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.regexp.php\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.operator.comparison.php\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"keyword.operator.heredoc.php\", \"keyword.operator.nowdoc.php\"],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"variable.other.class.php\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"invalid.illegal.non-null-typehinted.php\",\n    settings: { foreground: \"#f44747\" },\n  },\n  {\n    scope: \"variable.other.generic-type.haskell\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"storage.type.haskell\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"storage.type.cs\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"entity.name.variable.local.cs\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"entity.name.label.cs\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"entity.name.scope-resolution.function.call\",\n      \"entity.name.scope-resolution.function.definition\",\n    ],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.delayed.unison\",\n      \"punctuation.definition.list.begin.unison\",\n      \"punctuation.definition.list.end.unison\",\n      \"punctuation.definition.ability.begin.unison\",\n      \"punctuation.definition.ability.end.unison\",\n      \"punctuation.operator.assignment.as.unison\",\n      \"punctuation.separator.pipe.unison\",\n      \"punctuation.separator.delimiter.unison\",\n      \"punctuation.definition.hash.unison\",\n    ],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"support.constant.edge\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"support.type.prelude.elm\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.constant.elm\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"entity.global.clojure\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"meta.symbol.clojure\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"constant.keyword.clojure\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"meta.arguments.coffee\", \"variable.parameter.function.coffee\"],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"storage.modifier.import.groovy\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"meta.method.groovy\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"meta.definition.variable.name.groovy\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"meta.definition.class.inherited.classes.groovy\",\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: \"support.variable.semantic.hlsl\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"support.type.texture.hlsl\",\n      \"support.type.sampler.hlsl\",\n      \"support.type.object.hlsl\",\n      \"support.type.object.rw.hlsl\",\n      \"support.type.fx.hlsl\",\n      \"support.type.object.hlsl\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\"text.variable\", \"text.bracketed\"],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\"support.type.swift\", \"support.type.vb.asp\"],\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"meta.scope.prerequisites.makefile\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"source.makefile\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"source.ini\",\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: \"constant.language.symbol.ruby\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"function.parameter.ruby\", \"function.parameter.cs\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"constant.language.symbol.elixir\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope:\n      \"text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope:\n      \"text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"entity.name.function.xi\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"entity.name.class.xi\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"constant.character.character-class.regexp.xi\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"constant.regexp.xi\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"keyword.control.xi\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"invalid.xi\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.quote.markdown.xi\",\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.list.markdown.xi\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"constant.character.xi\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"accent.xi\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"wikiword.xi\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"constant.other.color.rgb-value.xi\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"punctuation.definition.tag.xi\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: [\n      \"support.constant.property-value.scss\",\n      \"support.constant.property-value.css\",\n    ],\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.css\",\n      \"keyword.operator.scss\",\n      \"keyword.operator.less\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\n      \"support.constant.color.w3c-standard-color-name.css\",\n      \"support.constant.color.w3c-standard-color-name.scss\",\n    ],\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"punctuation.separator.list.comma.css\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.type.vendored.property-name.css\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name.css\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.constant.property-value\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.constant.font-name\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"entity.other.attribute-name.class.css\",\n    settings: {\n      foreground: \"#61d5c0\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: \"entity.other.attribute-name.id\",\n    settings: {\n      foreground: \"#9d6afb\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: [\n      \"entity.other.attribute-name.pseudo-element\",\n      \"entity.other.attribute-name.pseudo-class\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"meta.selector\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"selector.sass\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"rgb-value\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"inline-color-decoration rgb-value\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"less rgb-value\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"control.elements\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"keyword.operator.less\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"entity.name.tag\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"entity.other.attribute-name\",\n    settings: {\n      foreground: \"#61d5c0\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: \"constant.character.entity\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"meta.tag\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"invalid.illegal.bad-ampersand.html\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"markup.heading\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\n      \"markup.heading punctuation.definition.heading\",\n      \"entity.name.section\",\n    ],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"entity.name.section.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"punctuation.definition.heading.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"markup.heading.setext\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"markup.heading.setext.1.markdown\",\n      \"markup.heading.setext.2.markdown\",\n    ],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\"markup.bold\", \"todo.bold\"],\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"punctuation.definition.bold\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: \"punctuation.definition.bold.markdown\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: [\"markup.italic\", \"punctuation.definition.italic\", \"todo.emphasis\"],\n    settings: {\n      foreground: \"#ff678d\",\n      fontStyle: \"italic\",\n    },\n  },\n  {\n    scope: \"emphasis md\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"markup.italic.markdown\",\n    settings: { fontStyle: \"italic\" },\n  },\n  {\n    scope: [\n      \"markup.underline.link.markdown\",\n      \"markup.underline.link.image.markdown\",\n    ],\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: [\n      \"string.other.link.title.markdown\",\n      \"string.other.link.description.markdown\",\n    ],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"punctuation.definition.metadata.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\"markup.inline.raw.markdown\", \"markup.inline.raw.string.markdown\"],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: \"punctuation.definition.list.begin.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"punctuation.definition.list.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.list.markdown\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.string.begin.markdown\",\n      \"punctuation.definition.string.end.markdown\",\n    ],\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"markup.quote.markdown\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"keyword.other.unit\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"markup.changed.diff\",\n    settings: { foreground: \"#ffca00\" },\n  },\n  {\n    scope: [\n      \"meta.diff.header.from-file\",\n      \"meta.diff.header.to-file\",\n      \"punctuation.definition.from-file.diff\",\n      \"punctuation.definition.to-file.diff\",\n    ],\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"markup.inserted.diff\",\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: \"markup.deleted.diff\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"string.regexp\",\n    settings: { foreground: \"#64d1db\" },\n  },\n  {\n    scope: \"constant.other.character-class.regexp\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"keyword.operator.quantifier.regexp\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"constant.character.escape\",\n    settings: { foreground: \"#68cdf2\" },\n  },\n  {\n    scope: \"source.json meta.structure.dictionary.json > string.quoted.json\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope:\n      \"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: [\n      \"source.json meta.structure.dictionary.json > value.json > string.quoted.json\",\n      \"source.json meta.structure.array.json > value.json > string.quoted.json\",\n      \"source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation\",\n      \"source.json meta.structure.array.json > value.json > string.quoted.json > punctuation\",\n    ],\n    settings: { foreground: \"#5ecc71\" },\n  },\n  {\n    scope: [\n      \"source.json meta.structure.dictionary.json > constant.language.json\",\n      \"source.json meta.structure.array.json > constant.language.json\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name.json\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"support.type.property-name.json punctuation\",\n    settings: { foreground: \"#ff6762\" },\n  },\n  {\n    scope: \"punctuation.definition.block.sequence.item.yaml\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"block.scope.end\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"block.scope.begin\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"token.info-token\",\n    settings: { foreground: \"#9d6afb\" },\n  },\n  {\n    scope: \"token.warn-token\",\n    settings: { foreground: \"#ffd452\" },\n  },\n  {\n    scope: \"token.error-token\",\n    settings: { foreground: \"#f44747\" },\n  },\n  {\n    scope: \"token.debug-token\",\n    settings: { foreground: \"#ff678d\" },\n  },\n  {\n    scope: \"invalid.illegal\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.broken\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.deprecated\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.unimplemented\",\n    settings: { foreground: \"#ffffff\" },\n  },\n];\nvar semanticTokenColors = {\n  comment: \"#84848A\",\n  string: \"#5ecc71\",\n  number: \"#68cdf2\",\n  regexp: \"#64d1db\",\n  keyword: \"#ff678d\",\n  variable: \"#ffa359\",\n  parameter: \"#adadb1\",\n  property: \"#ffa359\",\n  function: \"#9d6afb\",\n  method: \"#9d6afb\",\n  type: \"#d568ea\",\n  class: \"#d568ea\",\n  namespace: \"#ffca00\",\n  enumMember: \"#08c0ef\",\n  \"variable.constant\": \"#ffd452\",\n  \"variable.defaultLibrary\": \"#ffca00\",\n};\nvar pierre_dark_default = {\n  name,\n  type,\n  colors,\n  tokenColors,\n  semanticTokenColors,\n};\n\n//#endregion\nexport {\n  colors,\n  pierre_dark_default as default,\n  name,\n  semanticTokenColors,\n  tokenColors,\n  type,\n};\n"
    },
    {
      "path": "components/tool-ui/shared/pierre-light-theme.js",
      "type": "registry:file",
      "target": "components/tool-ui/shared/pierre-light-theme.js",
      "content": "//#region src/themes/pierre-light.json\nvar name = \"pierre-light\";\nvar type = \"light\";\nvar colors = {\n  \"editor.background\": \"#ffffff\",\n  \"editor.foreground\": \"#070707\",\n  foreground: \"#070707\",\n  focusBorder: \"#009fff\",\n  \"selection.background\": \"#dfebff\",\n  \"editor.selectionBackground\": \"#009fff2e\",\n  \"editor.lineHighlightBackground\": \"#dfebff8c\",\n  \"editorCursor.foreground\": \"#009fff\",\n  \"editorLineNumber.foreground\": \"#84848A\",\n  \"editorLineNumber.activeForeground\": \"#6C6C71\",\n  \"editorIndentGuide.background\": \"#eeeeef\",\n  \"editorIndentGuide.activeBackground\": \"#dbdbdd\",\n  \"diffEditor.insertedTextBackground\": \"#00cab133\",\n  \"diffEditor.deletedTextBackground\": \"#ff2e3f33\",\n  \"sideBar.background\": \"#f8f8f8\",\n  \"sideBar.foreground\": \"#6C6C71\",\n  \"sideBar.border\": \"#eeeeef\",\n  \"sideBarTitle.foreground\": \"#070707\",\n  \"sideBarSectionHeader.background\": \"#f8f8f8\",\n  \"sideBarSectionHeader.foreground\": \"#6C6C71\",\n  \"sideBarSectionHeader.border\": \"#eeeeef\",\n  \"activityBar.background\": \"#f8f8f8\",\n  \"activityBar.foreground\": \"#070707\",\n  \"activityBar.border\": \"#eeeeef\",\n  \"activityBar.activeBorder\": \"#009fff\",\n  \"activityBarBadge.background\": \"#009fff\",\n  \"activityBarBadge.foreground\": \"#ffffff\",\n  \"titleBar.activeBackground\": \"#f8f8f8\",\n  \"titleBar.activeForeground\": \"#070707\",\n  \"titleBar.inactiveBackground\": \"#f8f8f8\",\n  \"titleBar.inactiveForeground\": \"#84848A\",\n  \"titleBar.border\": \"#eeeeef\",\n  \"list.activeSelectionBackground\": \"#dfebffcc\",\n  \"list.activeSelectionForeground\": \"#070707\",\n  \"list.inactiveSelectionBackground\": \"#dfebff73\",\n  \"list.hoverBackground\": \"#dfebff59\",\n  \"list.focusOutline\": \"#009fff\",\n  \"tab.activeBackground\": \"#ffffff\",\n  \"tab.activeForeground\": \"#070707\",\n  \"tab.activeBorderTop\": \"#009fff\",\n  \"tab.inactiveBackground\": \"#f8f8f8\",\n  \"tab.inactiveForeground\": \"#84848A\",\n  \"tab.border\": \"#eeeeef\",\n  \"editorGroupHeader.tabsBackground\": \"#f8f8f8\",\n  \"editorGroupHeader.tabsBorder\": \"#eeeeef\",\n  \"panel.background\": \"#f8f8f8\",\n  \"panel.border\": \"#eeeeef\",\n  \"panelTitle.activeBorder\": \"#009fff\",\n  \"panelTitle.activeForeground\": \"#070707\",\n  \"panelTitle.inactiveForeground\": \"#84848A\",\n  \"statusBar.background\": \"#f8f8f8\",\n  \"statusBar.foreground\": \"#6C6C71\",\n  \"statusBar.border\": \"#eeeeef\",\n  \"statusBar.noFolderBackground\": \"#f8f8f8\",\n  \"statusBar.debuggingBackground\": \"#ffca00\",\n  \"statusBar.debuggingForeground\": \"#ffffff\",\n  \"statusBarItem.remoteBackground\": \"#f8f8f8\",\n  \"statusBarItem.remoteForeground\": \"#6C6C71\",\n  \"input.background\": \"#f2f2f3\",\n  \"input.border\": \"#dbdbdd\",\n  \"input.foreground\": \"#070707\",\n  \"input.placeholderForeground\": \"#8E8E95\",\n  \"dropdown.background\": \"#f2f2f3\",\n  \"dropdown.border\": \"#dbdbdd\",\n  \"dropdown.foreground\": \"#070707\",\n  \"button.background\": \"#009fff\",\n  \"button.foreground\": \"#ffffff\",\n  \"button.hoverBackground\": \"#1aa9ff\",\n  \"textLink.foreground\": \"#009fff\",\n  \"textLink.activeForeground\": \"#009fff\",\n  \"gitDecoration.addedResourceForeground\": \"#00cab1\",\n  \"gitDecoration.conflictingResourceForeground\": \"#ffca00\",\n  \"gitDecoration.modifiedResourceForeground\": \"#009fff\",\n  \"gitDecoration.deletedResourceForeground\": \"#ff2e3f\",\n  \"gitDecoration.untrackedResourceForeground\": \"#00cab1\",\n  \"gitDecoration.ignoredResourceForeground\": \"#84848A\",\n  \"terminal.titleForeground\": \"#6C6C71\",\n  \"terminal.titleInactiveForeground\": \"#84848A\",\n  \"terminal.background\": \"#f8f8f8\",\n  \"terminal.foreground\": \"#6C6C71\",\n  \"terminal.ansiBlack\": \"#1F1F21\",\n  \"terminal.ansiRed\": \"#ff2e3f\",\n  \"terminal.ansiGreen\": \"#0dbe4e\",\n  \"terminal.ansiYellow\": \"#ffca00\",\n  \"terminal.ansiBlue\": \"#009fff\",\n  \"terminal.ansiMagenta\": \"#c635e4\",\n  \"terminal.ansiCyan\": \"#08c0ef\",\n  \"terminal.ansiWhite\": \"#c6c6c8\",\n  \"terminal.ansiBrightBlack\": \"#1F1F21\",\n  \"terminal.ansiBrightRed\": \"#ff2e3f\",\n  \"terminal.ansiBrightGreen\": \"#0dbe4e\",\n  \"terminal.ansiBrightYellow\": \"#ffca00\",\n  \"terminal.ansiBrightBlue\": \"#009fff\",\n  \"terminal.ansiBrightMagenta\": \"#c635e4\",\n  \"terminal.ansiBrightCyan\": \"#08c0ef\",\n  \"terminal.ansiBrightWhite\": \"#c6c6c8\",\n};\nvar tokenColors = [\n  {\n    scope: [\"comment\", \"punctuation.definition.comment\"],\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"comment markup.link\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: [\"string\", \"constant.other.symbol\"],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.string.begin\",\n      \"punctuation.definition.string.end\",\n    ],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: [\"constant.numeric\", \"constant.language.boolean\"],\n    settings: { foreground: \"#1ca1c7\" },\n  },\n  {\n    scope: \"constant\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"punctuation.definition.constant\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"constant.language\",\n    settings: { foreground: \"#1ca1c7\" },\n  },\n  {\n    scope: \"variable.other.constant\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.control\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\"storage\", \"storage.type\", \"storage.modifier\"],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"token.storage\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.new\",\n      \"keyword.operator.expression.instanceof\",\n      \"keyword.operator.expression.typeof\",\n      \"keyword.operator.expression.void\",\n      \"keyword.operator.expression.delete\",\n      \"keyword.operator.expression.in\",\n      \"keyword.operator.expression.of\",\n      \"keyword.operator.expression.keyof\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.operator.delete\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\"variable\", \"identifier\", \"meta.definition.variable\"],\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: [\n      \"variable.other.readwrite\",\n      \"meta.object-literal.key\",\n      \"support.variable.property\",\n      \"support.variable.object.process\",\n      \"support.variable.object.node\",\n    ],\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: \"variable.language\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"variable.parameter.function\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"function.parameter\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"variable.parameter\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"variable.parameter.function.language.python\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"variable.parameter.function.python\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"support.function\",\n      \"entity.name.function\",\n      \"meta.function-call\",\n      \"meta.require\",\n      \"support.function.any-method\",\n      \"variable.function\",\n    ],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"keyword.other.special-method\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"entity.name.function\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"support.function.console\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: [\n      \"support.type\",\n      \"entity.name.type\",\n      \"entity.name.class\",\n      \"storage.type\",\n    ],\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: [\"support.class\", \"entity.name.type.class\"],\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: [\n      \"entity.name.class\",\n      \"variable.other.class.js\",\n      \"variable.other.class.ts\",\n    ],\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: \"entity.name.class.identifier.namespace.type\",\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: \"entity.name.type.namespace\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.other.inherited-class\",\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: \"entity.name.namespace\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword.operator\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.logical\",\n      \"keyword.operator.bitwise\",\n      \"keyword.operator.channel\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.arithmetic\",\n      \"keyword.operator.comparison\",\n      \"keyword.operator.relational\",\n      \"keyword.operator.increment\",\n      \"keyword.operator.decrement\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.assignment\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.assignment.compound\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.compound.js\",\n      \"keyword.operator.assignment.compound.ts\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.ternary\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.operator.optional\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"punctuation\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.separator.delimiter\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.separator.key-value\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.terminator\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace.square\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.brace.round\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"function.brace\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.parameters\",\n      \"punctuation.definition.typeparameters\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"punctuation.definition.block\", \"punctuation.definition.tag\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"meta.tag.tsx\", \"meta.tag.jsx\", \"meta.tag.js\", \"meta.tag.ts\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"keyword.operator.expression.import\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"keyword.operator.module\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"support.type.object.console\",\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: [\n      \"support.module.node\",\n      \"support.type.object.module\",\n      \"entity.name.type.module\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"support.constant.math\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"support.constant.property.math\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"support.constant.json\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"support.type.object.dom\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"support.variable.dom\", \"support.variable.property.dom\"],\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: \"support.variable.property.process\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"meta.property.object\",\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: \"variable.parameter.function.js\",\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: [\"keyword.other.template.begin\", \"keyword.other.template.end\"],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: [\n      \"keyword.other.substitution.begin\",\n      \"keyword.other.substitution.end\",\n    ],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.template-expression.begin\",\n      \"punctuation.definition.template-expression.end\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"meta.template.expression\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"punctuation.section.embedded\",\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: \"variable.interpolation\",\n    settings: { foreground: \"#d47628\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.embedded.begin\",\n      \"punctuation.section.embedded.end\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"punctuation.quasi.element\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"support.type.primitive.ts\",\n      \"support.type.builtin.ts\",\n      \"support.type.primitive.tsx\",\n      \"support.type.builtin.tsx\",\n    ],\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: \"support.type.type.flowtype\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"support.type.primitive\",\n    settings: { foreground: \"#c635e4\" },\n  },\n  {\n    scope: \"support.variable.magic.python\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"variable.parameter.function.language.special.self.python\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"punctuation.separator.period.python\",\n      \"punctuation.separator.element.python\",\n      \"punctuation.parenthesis.begin.python\",\n      \"punctuation.parenthesis.end.python\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.arguments.begin.python\",\n      \"punctuation.definition.arguments.end.python\",\n      \"punctuation.separator.arguments.python\",\n      \"punctuation.definition.list.begin.python\",\n      \"punctuation.definition.list.end.python\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.type.python\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.logical.python\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"meta.function-call.generic.python\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"constant.character.format.placeholder.other.python\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"meta.function.decorator.python\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: [\n      \"support.token.decorator.python\",\n      \"meta.function.decorator.identifier.python\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"storage.modifier.lifetime.rust\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.function.std.rust\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"entity.name.lifetime.rust\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"variable.language.rust\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"keyword.operator.misc.rust\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"keyword.operator.sigil.rust\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"support.constant.core.rust\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\"meta.function.c\", \"meta.function.cpp\"],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.block.begin.bracket.curly.cpp\",\n      \"punctuation.section.block.end.bracket.curly.cpp\",\n      \"punctuation.terminator.statement.c\",\n      \"punctuation.section.block.begin.bracket.curly.c\",\n      \"punctuation.section.block.end.bracket.curly.c\",\n      \"punctuation.section.parens.begin.bracket.round.c\",\n      \"punctuation.section.parens.end.bracket.round.c\",\n      \"punctuation.section.parameters.begin.bracket.round.c\",\n      \"punctuation.section.parameters.end.bracket.round.c\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.c\",\n      \"keyword.operator.comparison.c\",\n      \"keyword.operator.c\",\n      \"keyword.operator.increment.c\",\n      \"keyword.operator.decrement.c\",\n      \"keyword.operator.bitwise.shift.c\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.assignment.cpp\",\n      \"keyword.operator.comparison.cpp\",\n      \"keyword.operator.cpp\",\n      \"keyword.operator.increment.cpp\",\n      \"keyword.operator.decrement.cpp\",\n      \"keyword.operator.bitwise.shift.cpp\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\"punctuation.separator.c\", \"punctuation.separator.cpp\"],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\"support.type.posix-reserved.c\", \"support.type.posix-reserved.cpp\"],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"keyword.operator.sizeof.c\", \"keyword.operator.sizeof.cpp\"],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"variable.c\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\"storage.type.annotation.java\", \"storage.type.object.array.java\"],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"source.java\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.block.begin.java\",\n      \"punctuation.section.block.end.java\",\n      \"punctuation.definition.method-parameters.begin.java\",\n      \"punctuation.definition.method-parameters.end.java\",\n      \"meta.method.identifier.java\",\n      \"punctuation.section.method.begin.java\",\n      \"punctuation.section.method.end.java\",\n      \"punctuation.terminator.java\",\n      \"punctuation.section.class.begin.java\",\n      \"punctuation.section.class.end.java\",\n      \"punctuation.section.inner-class.begin.java\",\n      \"punctuation.section.inner-class.end.java\",\n      \"meta.method-call.java\",\n      \"punctuation.section.class.begin.bracket.curly.java\",\n      \"punctuation.section.class.end.bracket.curly.java\",\n      \"punctuation.section.method.begin.bracket.curly.java\",\n      \"punctuation.section.method.end.bracket.curly.java\",\n      \"punctuation.separator.period.java\",\n      \"punctuation.bracket.angle.java\",\n      \"punctuation.definition.annotation.java\",\n      \"meta.method.body.java\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"meta.method.java\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: [\n      \"storage.modifier.import.java\",\n      \"storage.type.java\",\n      \"storage.type.generic.java\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword.operator.instanceof.java\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"meta.definition.variable.name.java\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"token.variable.parameter.java\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"import.storage.java\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"token.package.keyword\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"token.package\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"token.storage.type.java\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword.operator.assignment.go\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\"keyword.operator.arithmetic.go\", \"keyword.operator.address.go\"],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"entity.name.package.go\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"support.other.namespace.use.php\",\n      \"support.other.namespace.use-as.php\",\n      \"support.other.namespace.php\",\n      \"entity.other.alias.php\",\n      \"meta.interface.php\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword.operator.error-control.php\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.operator.type.php\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"punctuation.section.array.begin.php\",\n      \"punctuation.section.array.end.php\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"storage.type.php\",\n      \"meta.other.type.phpdoc.php\",\n      \"keyword.other.type.php\",\n      \"keyword.other.array.phpdoc.php\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"meta.function-call.php\",\n      \"meta.function-call.object.php\",\n      \"meta.function-call.static.php\",\n    ],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.parameters.begin.bracket.round.php\",\n      \"punctuation.definition.parameters.end.bracket.round.php\",\n      \"punctuation.separator.delimiter.php\",\n      \"punctuation.section.scope.begin.php\",\n      \"punctuation.section.scope.end.php\",\n      \"punctuation.terminator.expression.php\",\n      \"punctuation.definition.arguments.begin.bracket.round.php\",\n      \"punctuation.definition.arguments.end.bracket.round.php\",\n      \"punctuation.definition.storage-type.begin.bracket.round.php\",\n      \"punctuation.definition.storage-type.end.bracket.round.php\",\n      \"punctuation.definition.array.begin.bracket.round.php\",\n      \"punctuation.definition.array.end.bracket.round.php\",\n      \"punctuation.definition.begin.bracket.round.php\",\n      \"punctuation.definition.end.bracket.round.php\",\n      \"punctuation.definition.begin.bracket.curly.php\",\n      \"punctuation.definition.end.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.end.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.start.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.begin.bracket.curly.php\",\n      \"punctuation.definition.section.switch-block.end.bracket.curly.php\",\n    ],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"support.constant.ext.php\",\n      \"support.constant.std.php\",\n      \"support.constant.core.php\",\n      \"support.constant.parser-token.php\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\"entity.name.goto-label.php\", \"support.other.php\"],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.logical.php\",\n      \"keyword.operator.bitwise.php\",\n      \"keyword.operator.arithmetic.php\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"keyword.operator.regexp.php\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.operator.comparison.php\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"keyword.operator.heredoc.php\", \"keyword.operator.nowdoc.php\"],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"variable.other.class.php\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"invalid.illegal.non-null-typehinted.php\",\n    settings: { foreground: \"#f44747\" },\n  },\n  {\n    scope: \"variable.other.generic-type.haskell\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"storage.type.haskell\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"storage.type.cs\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.name.variable.local.cs\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"entity.name.label.cs\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"entity.name.scope-resolution.function.call\",\n      \"entity.name.scope-resolution.function.definition\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.delayed.unison\",\n      \"punctuation.definition.list.begin.unison\",\n      \"punctuation.definition.list.end.unison\",\n      \"punctuation.definition.ability.begin.unison\",\n      \"punctuation.definition.ability.end.unison\",\n      \"punctuation.operator.assignment.as.unison\",\n      \"punctuation.separator.pipe.unison\",\n      \"punctuation.separator.delimiter.unison\",\n      \"punctuation.definition.hash.unison\",\n    ],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"support.constant.edge\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"support.type.prelude.elm\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.constant.elm\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.global.clojure\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"meta.symbol.clojure\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"constant.keyword.clojure\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"meta.arguments.coffee\", \"variable.parameter.function.coffee\"],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"storage.modifier.import.groovy\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"meta.method.groovy\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"meta.definition.variable.name.groovy\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"meta.definition.class.inherited.classes.groovy\",\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: \"support.variable.semantic.hlsl\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"support.type.texture.hlsl\",\n      \"support.type.sampler.hlsl\",\n      \"support.type.object.hlsl\",\n      \"support.type.object.rw.hlsl\",\n      \"support.type.fx.hlsl\",\n      \"support.type.object.hlsl\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\"text.variable\", \"text.bracketed\"],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\"support.type.swift\", \"support.type.vb.asp\"],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"meta.scope.prerequisites.makefile\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"source.makefile\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"source.ini\",\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: \"constant.language.symbol.ruby\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\"function.parameter.ruby\", \"function.parameter.cs\"],\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"constant.language.symbol.elixir\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope:\n      \"text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope:\n      \"text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"entity.name.function.xi\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.name.class.xi\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"constant.character.character-class.regexp.xi\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"constant.regexp.xi\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"keyword.control.xi\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"invalid.xi\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.quote.markdown.xi\",\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.list.markdown.xi\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"constant.character.xi\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"accent.xi\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"wikiword.xi\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"constant.other.color.rgb-value.xi\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"punctuation.definition.tag.xi\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: [\n      \"support.constant.property-value.scss\",\n      \"support.constant.property-value.css\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"keyword.operator.css\",\n      \"keyword.operator.scss\",\n      \"keyword.operator.less\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: [\n      \"support.constant.color.w3c-standard-color-name.css\",\n      \"support.constant.color.w3c-standard-color-name.scss\",\n    ],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"punctuation.separator.list.comma.css\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.type.vendored.property-name.css\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name.css\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.constant.property-value\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"support.constant.font-name\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.other.attribute-name.class.css\",\n    settings: {\n      foreground: \"#16a994\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: \"entity.other.attribute-name.id\",\n    settings: {\n      foreground: \"#7b43f8\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: [\n      \"entity.other.attribute-name.pseudo-element\",\n      \"entity.other.attribute-name.pseudo-class\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"meta.selector\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"selector.sass\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"rgb-value\",\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"inline-color-decoration rgb-value\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"less rgb-value\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"control.elements\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"keyword.operator.less\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"entity.name.tag\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"entity.other.attribute-name\",\n    settings: {\n      foreground: \"#16a994\",\n      fontStyle: \"normal\",\n    },\n  },\n  {\n    scope: \"constant.character.entity\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"meta.tag\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"invalid.illegal.bad-ampersand.html\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"markup.heading\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\n      \"markup.heading punctuation.definition.heading\",\n      \"entity.name.section\",\n    ],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"entity.name.section.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"punctuation.definition.heading.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"markup.heading.setext\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: [\n      \"markup.heading.setext.1.markdown\",\n      \"markup.heading.setext.2.markdown\",\n    ],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\"markup.bold\", \"todo.bold\"],\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"punctuation.definition.bold\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"punctuation.definition.bold.markdown\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\"markup.italic\", \"punctuation.definition.italic\", \"todo.emphasis\"],\n    settings: {\n      foreground: \"#fc2b73\",\n      fontStyle: \"italic\",\n    },\n  },\n  {\n    scope: \"emphasis md\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"markup.italic.markdown\",\n    settings: { fontStyle: \"italic\" },\n  },\n  {\n    scope: [\n      \"markup.underline.link.markdown\",\n      \"markup.underline.link.image.markdown\",\n    ],\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: [\n      \"string.other.link.title.markdown\",\n      \"string.other.link.description.markdown\",\n    ],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"punctuation.definition.metadata.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\"markup.inline.raw.markdown\", \"markup.inline.raw.string.markdown\"],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: \"punctuation.definition.list.begin.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"punctuation.definition.list.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"beginning.punctuation.definition.list.markdown\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\n      \"punctuation.definition.string.begin.markdown\",\n      \"punctuation.definition.string.end.markdown\",\n    ],\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"markup.quote.markdown\",\n    settings: { foreground: \"#84848A\" },\n  },\n  {\n    scope: \"keyword.other.unit\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"markup.changed.diff\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: [\n      \"meta.diff.header.from-file\",\n      \"meta.diff.header.to-file\",\n      \"punctuation.definition.from-file.diff\",\n      \"punctuation.definition.to-file.diff\",\n    ],\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"markup.inserted.diff\",\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: \"markup.deleted.diff\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"string.regexp\",\n    settings: { foreground: \"#17a5af\" },\n  },\n  {\n    scope: \"constant.other.character-class.regexp\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"keyword.operator.quantifier.regexp\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"constant.character.escape\",\n    settings: { foreground: \"#1ca1c7\" },\n  },\n  {\n    scope: \"source.json meta.structure.dictionary.json > string.quoted.json\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope:\n      \"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: [\n      \"source.json meta.structure.dictionary.json > value.json > string.quoted.json\",\n      \"source.json meta.structure.array.json > value.json > string.quoted.json\",\n      \"source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation\",\n      \"source.json meta.structure.array.json > value.json > string.quoted.json > punctuation\",\n    ],\n    settings: { foreground: \"#199f43\" },\n  },\n  {\n    scope: [\n      \"source.json meta.structure.dictionary.json > constant.language.json\",\n      \"source.json meta.structure.array.json > constant.language.json\",\n    ],\n    settings: { foreground: \"#08c0ef\" },\n  },\n  {\n    scope: \"support.type.property-name.json\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"support.type.property-name.json punctuation\",\n    settings: { foreground: \"#d52c36\" },\n  },\n  {\n    scope: \"punctuation.definition.block.sequence.item.yaml\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"block.scope.end\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"block.scope.begin\",\n    settings: { foreground: \"#79797F\" },\n  },\n  {\n    scope: \"token.info-token\",\n    settings: { foreground: \"#7b43f8\" },\n  },\n  {\n    scope: \"token.warn-token\",\n    settings: { foreground: \"#d5a910\" },\n  },\n  {\n    scope: \"token.error-token\",\n    settings: { foreground: \"#f44747\" },\n  },\n  {\n    scope: \"token.debug-token\",\n    settings: { foreground: \"#fc2b73\" },\n  },\n  {\n    scope: \"invalid.illegal\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.broken\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.deprecated\",\n    settings: { foreground: \"#ffffff\" },\n  },\n  {\n    scope: \"invalid.unimplemented\",\n    settings: { foreground: \"#ffffff\" },\n  },\n];\nvar semanticTokenColors = {\n  comment: \"#84848A\",\n  string: \"#199f43\",\n  number: \"#1ca1c7\",\n  regexp: \"#17a5af\",\n  keyword: \"#fc2b73\",\n  variable: \"#d47628\",\n  parameter: \"#79797F\",\n  property: \"#d47628\",\n  function: \"#7b43f8\",\n  method: \"#7b43f8\",\n  type: \"#c635e4\",\n  class: \"#c635e4\",\n  namespace: \"#d5a910\",\n  enumMember: \"#08c0ef\",\n  \"variable.constant\": \"#d5a910\",\n  \"variable.defaultLibrary\": \"#d5a910\",\n};\nvar pierre_light_default = {\n  name,\n  type,\n  colors,\n  tokenColors,\n  semanticTokenColors,\n};\n\n//#endregion\nexport {\n  colors,\n  pierre_light_default as default,\n  name,\n  semanticTokenColors,\n  tokenColors,\n  type,\n};\n"
    },
    {
      "path": "components/tool-ui/shared/schema.ts",
      "type": "registry:lib",
      "target": "components/tool-ui/shared/schema.ts",
      "content": "import { z } from \"zod\";\nimport type { ReactNode } from \"react\";\n\n/**\n * Tool UI conventions:\n * - Serializable schemas are JSON-safe (no callbacks/ReactNode/`className`).\n * - Schema: `SerializableXSchema`\n * - Parser: `parseSerializableX(input: unknown)` (throws on invalid)\n * - Safe parser: `safeParseSerializableX(input: unknown)` (returns `null` on invalid)\n * - Actions: `LocalActions` for non-receipt actions and `DecisionActions` for consequential actions\n * - Root attrs: `data-tool-ui-id` + `data-slot`\n */\n\n/**\n * Schema for tool UI identity.\n *\n * Every tool UI should have a unique identifier that:\n * - Is stable across re-renders\n * - Is meaningful (not auto-generated)\n * - Is unique within the conversation\n *\n * Format recommendation: `{component-type}-{semantic-identifier}`\n * Examples: \"data-table-expenses-q3\", \"option-list-deploy-target\"\n */\nexport const ToolUIIdSchema = z.string().min(1);\n\nexport type ToolUIId = z.infer<typeof ToolUIIdSchema>;\n\n/**\n * Primary role of a Tool UI surface in a chat context.\n */\nexport const ToolUIRoleSchema = z.enum([\n  \"information\",\n  \"decision\",\n  \"control\",\n  \"state\",\n  \"composite\",\n]);\n\nexport type ToolUIRole = z.infer<typeof ToolUIRoleSchema>;\n\nexport const ToolUIReceiptOutcomeSchema = z.enum([\n  \"success\",\n  \"partial\",\n  \"failed\",\n  \"cancelled\",\n]);\n\nexport type ToolUIReceiptOutcome = z.infer<typeof ToolUIReceiptOutcomeSchema>;\n\n/**\n * Optional receipt metadata: a durable summary of an outcome.\n */\nexport const ToolUIReceiptSchema = z.object({\n  outcome: ToolUIReceiptOutcomeSchema,\n  summary: z.string().min(1),\n  identifiers: z.record(z.string(), z.string()).optional(),\n  at: z.string().datetime(),\n});\n\nexport type ToolUIReceipt = z.infer<typeof ToolUIReceiptSchema>;\n\n/**\n * Base schema for Tool UI payloads (id + optional role/receipt).\n */\nexport const ToolUISurfaceSchema = z.object({\n  id: ToolUIIdSchema,\n  role: ToolUIRoleSchema.optional(),\n  receipt: ToolUIReceiptSchema.optional(),\n});\n\nexport type ToolUISurface = z.infer<typeof ToolUISurfaceSchema>;\n\nexport const ActionSchema = z.object({\n  id: z.string().min(1),\n  label: z.string().min(1),\n  /**\n   * Canonical narration the assistant can use after this action is taken.\n   *\n   * Example: \"I exported the table as CSV.\" / \"I opened the link in a new tab.\"\n   */\n  sentence: z.string().optional(),\n  confirmLabel: z.string().optional(),\n  variant: z\n    .enum([\"default\", \"destructive\", \"secondary\", \"ghost\", \"outline\"])\n    .optional(),\n  icon: z.custom<ReactNode>().optional(),\n  loading: z.boolean().optional(),\n  disabled: z.boolean().optional(),\n  shortcut: z.string().optional(),\n});\n\nexport type Action = z.infer<typeof ActionSchema>;\nexport type LocalAction = Action;\nexport type DecisionAction = Action;\n\nexport const DecisionResultSchema = z.object({\n  kind: z.literal(\"decision\"),\n  version: z.literal(1),\n  decisionId: z.string().min(1),\n  actionId: z.string().min(1),\n  actionLabel: z.string().min(1),\n  at: z.string().datetime(),\n  payload: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type DecisionResult<\n  TPayload extends Record<string, unknown> = Record<string, unknown>,\n> = Omit<z.infer<typeof DecisionResultSchema>, \"payload\"> & {\n  payload?: TPayload;\n};\n\nexport function createDecisionResult<\n  TPayload extends Record<string, unknown> = Record<string, unknown>,\n>(args: {\n  decisionId: string;\n  action: { id: string; label: string };\n  payload?: TPayload;\n}): DecisionResult<TPayload> {\n  return {\n    kind: \"decision\",\n    version: 1,\n    decisionId: args.decisionId,\n    actionId: args.action.id,\n    actionLabel: args.action.label,\n    at: new Date().toISOString(),\n    payload: args.payload,\n  };\n}\n\nexport const ActionButtonsPropsSchema = z.object({\n  actions: z.array(ActionSchema).min(1),\n  align: z.enum([\"left\", \"center\", \"right\"]).optional(),\n  confirmTimeout: z.number().positive().optional(),\n  className: z.string().optional(),\n});\n\nexport const SerializableActionSchema = ActionSchema.omit({ icon: true });\nexport const SerializableActionsSchema = ActionButtonsPropsSchema.extend({\n  actions: z.array(SerializableActionSchema),\n}).omit({ className: true });\n\nexport interface ActionsConfig {\n  items: Action[];\n  align?: \"left\" | \"center\" | \"right\";\n  confirmTimeout?: number;\n}\n\nexport const SerializableActionsConfigSchema = z.object({\n  items: z.array(SerializableActionSchema).min(1),\n  align: z.enum([\"left\", \"center\", \"right\"]).optional(),\n  confirmTimeout: z.number().positive().optional(),\n});\n\nexport type SerializableActionsConfig = z.infer<\n  typeof SerializableActionsConfigSchema\n>;\n\nexport type SerializableAction = z.infer<typeof SerializableActionSchema>;\n"
    },
    {
      "path": "components/tool-ui/shared/use-copy-to-clipboard.ts",
      "type": "registry:lib",
      "target": "components/tool-ui/shared/use-copy-to-clipboard.ts",
      "content": "\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\n\nfunction fallbackCopyToClipboard(text: string): boolean {\n  const textArea = document.createElement(\"textarea\");\n  try {\n    textArea.value = text;\n    textArea.setAttribute(\"readonly\", \"\");\n    textArea.style.position = \"fixed\";\n    textArea.style.top = \"-9999px\";\n    textArea.style.left = \"-9999px\";\n    document.body.appendChild(textArea);\n    textArea.select();\n    return document.execCommand(\"copy\");\n  } catch {\n    return false;\n  } finally {\n    if (textArea.parentNode) {\n      textArea.parentNode.removeChild(textArea);\n    }\n  }\n}\n\nexport function useCopyToClipboard(options?: { resetAfterMs?: number }): {\n  copiedId: string | null;\n  copy: (text: string, id?: string) => Promise<boolean>;\n} {\n  const resetAfterMs = options?.resetAfterMs ?? 2000;\n  const [copiedId, setCopiedId] = useState<string | null>(null);\n\n  const copy = useCallback(async (text: string, id: string = \"default\") => {\n    let ok = false;\n    try {\n      if (navigator.clipboard?.writeText) {\n        await navigator.clipboard.writeText(text);\n        ok = true;\n      } else {\n        ok = fallbackCopyToClipboard(text);\n      }\n    } catch {\n      ok = fallbackCopyToClipboard(text);\n    }\n\n    if (ok) {\n      setCopiedId(id);\n    }\n\n    return ok;\n  }, []);\n\n  useEffect(() => {\n    if (!copiedId) return;\n    const timeout = setTimeout(() => setCopiedId(null), resetAfterMs);\n    return () => clearTimeout(timeout);\n  }, [copiedId, resetAfterMs]);\n\n  return { copiedId, copy };\n}\n"
    }
  ]
}
