/palette

Aubade markdown, orchestrated.

aubade@0.11.0

the /palette module provides extensions to the /artisan content processing utilities. it includes additional markdown tokens and rendering rules, as well as syntax highlighting integration.

resolvers

codeblock

import type { Resolver } from 'aubade/artisan';

export const codeblock: Resolver<'block:code'>;

codeblock is a custom resolver for fenced code blocks which wraps the code in data-aubade block and adds syntax highlighting via shiki.

import { forge } from 'aubade/artisan';
import { codeblock } from 'aubade/palette';

const render = forge({
	renderers: { 'block:code': codeblock },
});

include the stylesheet provided to ensure proper styling:

+layout.svelte
<script>
	import 'aubade/styles/code.css';
</script>

highlight

interface Dataset {
	file?: string;
	language?: string;
	start?: string; // line number to start from
	[data: string]: string | undefined;
}

export function highlight(source: string, dataset: Dataset): string;

highlight() exposes Aubade's syntax highlighter independently of the markdown compiler. use it for standalone code snippets or when integrating highlighting into third-party parsers.

import { highlight } from 'aubade/artisan';

highlight('const x: number = 1;', { language: 'ts' });

or wire it into another parser:

import { highlight } from 'aubade/artisan';
import markdown from 'markdown-it';

const marker = markdown({
	highlight: (src, language) => `<pre>${highlight(src, { language })}</pre>`,
});

shiki

import { shiki } from 'aubade/artisan';

await shiki.codeToHtml('const x = 1', { lang: 'ts' });

Aubade exposes the underlying shiki highlighter instance. use this when you need full control over highlighting output.