s
This commit is contained in:
@@ -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,
|
||||
|
||||
86
config/digital/visual-theme.config.ts
Normal file
86
config/digital/visual-theme.config.ts
Normal 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];
|
||||
}
|
||||
Reference in New Issue
Block a user