mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-03 21:02:40 +02:00
Fixes #1241 The docs bundle was importing `{ icons }` from lucide-react, which pulls the entire Lucide icon library (~1 400 SVGs, ~500 kB of JS) into the Next.js docs bundle even though only nine icons are used in docs frontmatter and meta.json files. Replace with a hand-maintained DOCS_ICONS whitelist that imports only the icons that are actually referenced (BookOpen, ClipboardCheck, Compass, Container, Download, FlaskConical, Heart, Unplug, Wrench). To add a new docs icon: import it from lucide-react and add it to the DOCS_ICONS record. The icon() callback remains the same for callers.
39 lines
881 B
TypeScript
39 lines
881 B
TypeScript
import { loader } from "fumadocs-core/source";
|
|
import {
|
|
BookOpen,
|
|
ClipboardCheck,
|
|
Compass,
|
|
Container,
|
|
Download,
|
|
FlaskConical,
|
|
Heart,
|
|
Unplug,
|
|
Wrench,
|
|
} from "lucide-react";
|
|
import { createElement } from "react";
|
|
import { docs } from "@/.source/server";
|
|
|
|
/** Explicit whitelist of Lucide icons used in docs frontmatter / meta.json.
|
|
* Importing the full `icons` barrel would pull every Lucide icon (~1 400 SVGs)
|
|
* into the docs bundle even though only a handful are referenced. Add new icons
|
|
* here as docs pages are added.
|
|
*/
|
|
const DOCS_ICONS: Record<string, React.ComponentType> = {
|
|
BookOpen,
|
|
ClipboardCheck,
|
|
Compass,
|
|
Container,
|
|
Download,
|
|
FlaskConical,
|
|
Heart,
|
|
Unplug,
|
|
Wrench,
|
|
};
|
|
|
|
export const source = loader({
|
|
baseUrl: "/docs",
|
|
source: docs.toFumadocsSource(),
|
|
icon(icon) {
|
|
if (icon && icon in DOCS_ICONS) return createElement(DOCS_ICONS[icon]);
|
|
},
|
|
});
|