/** * 主题数据加载器 - 根据 CURRENT_THEME 加载对应主题的内容 * 新增主题:1. 在 config/site.config.ts 添加 THEME_CONFIGS * 2. 在 content/themes/[theme-id]/ 下添加 messages 和 data * 3. 在本文件 switch 中添加 case */ import { CURRENT_THEME, THEME_IDS, type ThemeId } from "@/config"; export type Locale = "zh" | "en"; export type ToolsCategory = { id: string; icon: string; title: string; color: string; bg: string; text: string; tools: Array<{ name: string; desc: string; href: string }>; }; /** 加载当前主题的 messages */ export async function getThemeMessages( locale: Locale ): Promise> { const theme = CURRENT_THEME; switch (theme) { case "digital-nomad": { const mod = locale === "zh" ? await import("@/content/themes/digital-nomad/messages/zh.json") : await import("@/content/themes/digital-nomad/messages/en.json"); return mod.default; } case "solo-company": case "tiktok-ops": case "indie-dev": // 新主题暂无内容时回退到 digital-nomad return getThemeMessagesFallback(locale); default: return getThemeMessagesFallback(locale); } } async function getThemeMessagesFallback( locale: Locale ): Promise> { const mod = locale === "zh" ? await import("@/content/themes/digital-nomad/messages/zh.json") : await import("@/content/themes/digital-nomad/messages/en.json"); return mod.default; } /** 加载当前主题的 tools 数据 */ export async function getThemeToolsData(): Promise<{ categories: ToolsCategory[]; }> { const theme = CURRENT_THEME; switch (theme) { case "digital-nomad": { const mod = await import( "@/content/themes/digital-nomad/data/tools.json" ); return mod.default; } case "solo-company": case "tiktok-ops": case "indie-dev": return getThemeToolsDataFallback(); default: return getThemeToolsDataFallback(); } } async function getThemeToolsDataFallback(): Promise<{ categories: ToolsCategory[]; }> { const mod = await import( "@/content/themes/digital-nomad/data/tools.json" ); return mod.default; } export { CURRENT_THEME, THEME_IDS }; export type { ThemeId };