derfalx
2026-01-08 c2bea8a4c4aeba440b8a7b043d7ece6343a9d263
quartz/plugins/transformers/syntax.ts
@@ -1,11 +1,31 @@
import { QuartzTransformerPlugin } from "../types"
import rehypePrettyCode, { Options as CodeOptions } from "rehype-pretty-code"
import rehypePrettyCode, { Options as CodeOptions, Theme as CodeTheme } from "rehype-pretty-code"
export const SyntaxHighlighting: QuartzTransformerPlugin = () => ({
  name: "SyntaxHighlighting",
  htmlPlugins() {
    return [[rehypePrettyCode, {
      theme: 'css-variables',
    } satisfies Partial<CodeOptions>]]
interface Theme extends Record<string, CodeTheme> {
  light: CodeTheme
  dark: CodeTheme
}
interface Options {
  theme?: Theme
  keepBackground?: boolean
}
const defaultOptions: Options = {
  theme: {
    light: "github-light",
    dark: "github-dark",
  },
  keepBackground: false,
}
export const SyntaxHighlighting: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
  const opts: CodeOptions = { ...defaultOptions, ...userOpts }
  return {
    name: "SyntaxHighlighting",
    htmlPlugins() {
      return [[rehypePrettyCode, opts]]
    },
  }
})
}