diff --git a/surfsense_web/lib/source.ts b/surfsense_web/lib/source.ts index 162cca57a..b94f990ab 100644 --- a/surfsense_web/lib/source.ts +++ b/surfsense_web/lib/source.ts @@ -1,12 +1,39 @@ import { loader } from "fumadocs-core/source"; -import { icons } from "lucide-react"; +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 = { + BookOpen, + ClipboardCheck, + Compass, + Container, + Download, + FlaskConical, + Heart, + Unplug, + Wrench, +}; + export const source = loader({ baseUrl: "/docs", source: docs.toFumadocsSource(), icon(icon) { - if (icon && icon in icons) return createElement(icons[icon as keyof typeof icons]); + if (icon && icon in DOCS_ICONS) return createElement(DOCS_ICONS[icon]); }, });