/** * Icon registry for built-in doc entries. * * Doc-entry frontmatter `icon:` values are semantic keys (e.g. `dice`), not * glyphs — YAML can't reference a component. This maps each key to a Tabler * icon component; unknown keys fall back to a generic file icon. */ import type { IconTypes } from "solid-icons"; import { TbOutlineCards, TbOutlineDice5, TbOutlineFile, TbOutlineFileText, TbOutlineGitBranch, TbOutlineHash, TbOutlineLink, TbOutlineMapPin, TbOutlinePhoto, TbOutlineSparkles, TbOutlineSquare, TbOutlineTable, TbOutlineTheater, TbOutlineTypography, } from "solid-icons/tb"; const DOC_ICONS: Record = { dice: TbOutlineDice5, table: TbOutlineTable, link: TbOutlineLink, pins: TbOutlineMapPin, font: TbOutlineTypography, background: TbOutlinePhoto, border: TbOutlineSquare, embed: TbOutlineFileText, deck: TbOutlineCards, yarn: TbOutlineGitBranch, gm: TbOutlineTheater, player: TbOutlineDice5, roll: TbOutlineDice5, set: TbOutlineHash, spark: TbOutlineSparkles, }; /** Resolve a frontmatter icon key to a Tabler icon component. */ export function docIcon(key: string): IconTypes { return DOC_ICONS[key] ?? TbOutlineFile; }