Files
thiloho.github.io/astro.config.ts
thiloho 822fc4d0ca Fix
2025-11-21 02:55:53 +01:00

84 lines
1.6 KiB
TypeScript

import { defineConfig } from "astro/config";
import tailwindcss from "@tailwindcss/vite";
import sitemap from "@astrojs/sitemap";
import rehypeAutolinkHeadings from "rehype-autolink-headings";
import rehypeSlug from "rehype-slug";
type RehypeNode = {
type: string;
tagName?: string;
children?: RehypeNode[];
properties?: {
[key: string]: unknown;
className?: string[];
};
};
type RehypeParent = RehypeNode & {
children: RehypeNode[];
};
type RehypeRoot = RehypeParent;
const rehypeWrapTables = () => {
const visit = (node: RehypeNode, parent: RehypeParent | null) => {
if (node.type === "element" && node.tagName === "table" && parent) {
const wrapper: RehypeNode = {
type: "element",
tagName: "div",
properties: {
className: ["overflow-x-auto", "max-w-full"],
},
children: [node],
};
const index = parent.children.indexOf(node);
if (index !== -1) {
parent.children[index] = wrapper;
}
return;
}
if (Array.isArray(node.children)) {
for (const child of node.children) {
visit(child, node as RehypeParent);
}
}
};
return (tree: RehypeRoot) => {
visit(tree, null);
};
};
export default defineConfig({
site: "https://thilohohlt.com",
prefetch: {
prefetchAll: true,
},
vite: {
plugins: [tailwindcss()],
},
markdown: {
shikiConfig: {
theme: "github-dark",
},
rehypePlugins: [
rehypeSlug,
[
rehypeAutolinkHeadings,
{
behavior: "wrap",
},
],
rehypeWrapTables,
],
},
integrations: [sitemap()],
});