This commit is contained in:
root
2026-06-07 15:57:47 +08:00
parent cd885f5fcd
commit 9de2465793
50 changed files with 4942 additions and 169 deletions

View File

@@ -9,6 +9,15 @@ export {
type TopicId,
} from "./site.config";
export {
CURRENT_DIGITAL_VISUAL_THEME,
DIGITAL_VISUAL_THEME_CONFIGS,
DIGITAL_VISUAL_THEME_IDS,
getDigitalVisualThemeConfig,
type DigitalVisualThemeConfig,
type DigitalVisualThemeId,
} from "./visual-theme.config";
export {
getPocketBaseConfig,
getPaymentConfig,

View File

@@ -0,0 +1,86 @@
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
: "theme1";
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: "Nomad Atlas",
description:
"面向数字游民社区的统一视觉系统:地图感、远程工作、资源导航与社区行动。",
cssVars: {
"--dn-bg": "#f7f5ef",
"--dn-bg-soft": "#eef7f3",
"--dn-surface": "#fffdf8",
"--dn-surface-raised": "#ffffff",
"--dn-text": "#172033",
"--dn-text-muted": "#5f6f7b",
"--dn-border": "#dbe4dc",
"--dn-primary": "#4f46e5",
"--dn-primary-strong": "#3730a3",
"--dn-accent": "#f9735b",
"--dn-cta": "#0f9f7a",
"--dn-cta-strong": "#087f63",
"--dn-radius": "0.5rem",
"--dn-radius-sm": "0.375rem",
"--dn-shadow": "0 10px 30px rgba(23, 32, 51, 0.08)",
"--dn-shadow-hover": "0 18px 48px rgba(23, 32, 51, 0.13)",
"--dn-font-display": '"Outfit", "Work Sans", var(--font-geist-sans)',
"--dn-font-body": '"Work Sans", "Outfit", var(--font-geist-sans)',
},
},
};
export function getDigitalVisualThemeConfig(): DigitalVisualThemeConfig {
return DIGITAL_VISUAL_THEME_CONFIGS[CURRENT_DIGITAL_VISUAL_THEME];
}