chore: support icon in docs mdx

This commit is contained in:
javayhu 2025-04-18 01:07:44 +08:00
parent 5504a3fae8
commit e8c4bf3406
2 changed files with 17 additions and 1 deletions

View File

@ -8,8 +8,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
import { TypeTable } from 'fumadocs-ui/components/type-table';
import defaultMdxComponents from 'fumadocs-ui/mdx';
import type { MDXComponents } from 'mdx/types';
import Image from 'next/image';
import { ComponentProps, FC } from 'react';
import * as LucideIcons from 'lucide-react';
interface CustomMDXContentProps {
code: string;
@ -29,6 +29,7 @@ export async function CustomMDXContent({
// Start with default components
const baseComponents: Record<string, any> = {
...defaultMdxComponents,
...LucideIcons,
...((await import('lucide-react')) as unknown as MDXComponents),
...customComponents,
};

View File

@ -1,6 +1,8 @@
import { createMDXSource } from '@fumadocs/content-collections';
import { allDocs, allMetas } from 'content-collections';
import { loader } from 'fumadocs-core/source';
import * as LucideIcons from 'lucide-react';
import { createElement } from 'react';
import { docsI18nConfig } from './i18n';
/**
@ -13,4 +15,17 @@ export const source = loader({
baseUrl: '/docs',
i18n: docsI18nConfig,
source: createMDXSource(allDocs, allMetas),
icon(iconName) {
if (!iconName) {
return undefined;
}
const IconComponent = (LucideIcons as Record<string, any>)[iconName];
if (IconComponent) {
return createElement(IconComponent);
}
console.warn(`Icon not found: ${iconName}`);
return undefined;
},
});