87 lines
2.8 KiB
TypeScript
87 lines
2.8 KiB
TypeScript
export const DIGITAL_VISUAL_THEME_IDS = ["theme1", "theme2"] as const;
|
|
|
|
export type DigitalVisualThemeId = (typeof DIGITAL_VISUAL_THEME_IDS)[number];
|
|
|
|
export interface DigitalVisualThemeConfig {
|
|
id: DigitalVisualThemeId;
|
|
className: string;
|
|
name: string;
|
|
description: string;
|
|
cssVars: Record<`--dn-${string}`, string>;
|
|
}
|
|
|
|
function isDigitalVisualThemeId(value: string): value is DigitalVisualThemeId {
|
|
return DIGITAL_VISUAL_THEME_IDS.includes(value as DigitalVisualThemeId);
|
|
}
|
|
|
|
const requestedDigitalVisualTheme =
|
|
process.env.NEXT_PUBLIC_DIGITAL_VISUAL_THEME || "";
|
|
|
|
export const CURRENT_DIGITAL_VISUAL_THEME: DigitalVisualThemeId =
|
|
isDigitalVisualThemeId(requestedDigitalVisualTheme)
|
|
? requestedDigitalVisualTheme
|
|
: "theme2";
|
|
|
|
export const DIGITAL_VISUAL_THEME_CONFIGS: Record<
|
|
DigitalVisualThemeId,
|
|
DigitalVisualThemeConfig
|
|
> = {
|
|
theme1: {
|
|
id: "theme1",
|
|
className: "digital-theme-theme1",
|
|
name: "Original",
|
|
description: "保留原始数字游民站点视觉样式。",
|
|
cssVars: {
|
|
"--dn-bg": "#ffffff",
|
|
"--dn-bg-soft": "#f8fafc",
|
|
"--dn-surface": "#ffffff",
|
|
"--dn-surface-raised": "#ffffff",
|
|
"--dn-text": "#0f172a",
|
|
"--dn-text-muted": "#64748b",
|
|
"--dn-border": "#e2e8f0",
|
|
"--dn-primary": "#0ea5e9",
|
|
"--dn-primary-strong": "#0284c7",
|
|
"--dn-accent": "#f59e0b",
|
|
"--dn-cta": "#0ea5e9",
|
|
"--dn-cta-strong": "#0284c7",
|
|
"--dn-radius": "1rem",
|
|
"--dn-radius-sm": "0.5rem",
|
|
"--dn-shadow": "0 2px 8px rgba(15, 23, 42, 0.06)",
|
|
"--dn-shadow-hover": "0 12px 40px rgba(15, 23, 42, 0.1)",
|
|
"--dn-font-display": "var(--font-geist-sans)",
|
|
"--dn-font-body": "var(--font-geist-sans)",
|
|
},
|
|
},
|
|
theme2: {
|
|
id: "theme2",
|
|
className: "digital-theme-theme2",
|
|
name: "NomadCNA Home",
|
|
description:
|
|
"沿用 Nomadro 首页的品牌视觉:暖色 CTA、轻卡片、白灰背景与社区感信息层级。",
|
|
cssVars: {
|
|
"--dn-bg": "#fafafa",
|
|
"--dn-bg-soft": "#f5f6f7",
|
|
"--dn-surface": "#ffffff",
|
|
"--dn-surface-raised": "#ffffff",
|
|
"--dn-text": "#111827",
|
|
"--dn-text-muted": "#6b7280",
|
|
"--dn-border": "#f3f4f6",
|
|
"--dn-primary": "#ff4d4f",
|
|
"--dn-primary-strong": "#ff3333",
|
|
"--dn-accent": "#ff7a45",
|
|
"--dn-cta": "#ff4d4f",
|
|
"--dn-cta-strong": "#ff7a45",
|
|
"--dn-radius": "1rem",
|
|
"--dn-radius-sm": "0.5rem",
|
|
"--dn-shadow": "0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03)",
|
|
"--dn-shadow-hover": "0 8px 24px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.04)",
|
|
"--dn-font-display": "var(--font-geist-sans)",
|
|
"--dn-font-body": "var(--font-geist-sans)",
|
|
},
|
|
},
|
|
};
|
|
|
|
export function getDigitalVisualThemeConfig(): DigitalVisualThemeConfig {
|
|
return DIGITAL_VISUAL_THEME_CONFIGS[CURRENT_DIGITAL_VISUAL_THEME];
|
|
}
|