65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import { loader } from "fumadocs-core/source";
|
|
import { icons } from "lucide-react";
|
|
import { createElement } from "react";
|
|
import { i18n } from "@/lib/i18n";
|
|
import { docs } from "@/.source/server";
|
|
|
|
const pageIcons: Record<string, keyof typeof icons> = {
|
|
"what-is-dbx": "BookOpen",
|
|
changelog: "History",
|
|
"getting-started": "Rocket",
|
|
databases: "Database",
|
|
"query-editor": "SquareTerminal",
|
|
"data-grid": "Table2",
|
|
"schema-browser": "Network",
|
|
redis: "KeyRound",
|
|
mongodb: "Braces",
|
|
"object-browser": "Package",
|
|
"schema-diff": "GitCompareArrows",
|
|
"data-transfer": "ArrowRightLeft",
|
|
"table-structure": "TableProperties",
|
|
"field-lineage": "GitBranch",
|
|
"table-import": "Upload",
|
|
"sql-file": "FileCode2",
|
|
"database-export": "Download",
|
|
"sql-snippets": "ScrollText",
|
|
"ai-assistant": "Bot",
|
|
cli: "Terminal",
|
|
mcp: "Cable",
|
|
plugins: "Plug",
|
|
"driver-management": "Package",
|
|
"keyboard-shortcuts": "Keyboard",
|
|
"connection-import": "Import",
|
|
"config-export": "FileUp",
|
|
"ssh-tunnel": "ShieldCheck",
|
|
};
|
|
|
|
export const source = loader({
|
|
baseUrl: "/docs",
|
|
source: docs.toFumadocsSource(),
|
|
i18n,
|
|
plugins: [
|
|
{
|
|
name: "dbx-sidebar-icons",
|
|
transformPageTree: {
|
|
file(node) {
|
|
const slug = node.url.split("/").filter(Boolean).at(-1);
|
|
const iconName = slug ? pageIcons[slug] : undefined;
|
|
const Icon = iconName ? icons[iconName] : undefined;
|
|
|
|
if (!Icon) return node;
|
|
|
|
return {
|
|
...node,
|
|
icon: createElement(Icon, {
|
|
"aria-hidden": true,
|
|
className: "size-4",
|
|
strokeWidth: 2,
|
|
}),
|
|
};
|
|
},
|
|
},
|
|
},
|
|
],
|
|
});
|