stack/docs/lib/source.ts
2025-07-09 18:27:41 -05:00

41 lines
910 B
TypeScript

import { api, docs } from '@/.source';
import { loader } from 'fumadocs-core/source';
import { attachFile } from 'fumadocs-openapi/server';
import { icons } from 'lucide-react';
import { createElement } from 'react';
// Helper function to create icon resolver
function createIconResolver() {
return function icon(iconName?: string) {
if (!iconName) {
return;
}
if (iconName in icons) {
return createElement(icons[iconName as keyof typeof icons]);
}
return;
};
}
// Main docs source for /docs routes - includes all root sections
export const source = loader({
baseUrl: '/docs',
source: docs.toFumadocsSource(),
pageTree: {
attachFile,
},
icon: createIconResolver(),
});
// API source for /api routes
export const apiSource = loader({
baseUrl: '/api',
source: api.toFumadocsSource(),
pageTree: {
attachFile,
},
icon: createIconResolver(),
});