feat(housekeeping): add per-hotel theme manager with import/export and background
Theme Manager under /admin-next/hotel/theme-manager lets the owner save, apply, rename, delete, import, and export custom themes, plus set a custom site background by URL or upload. Themes are stored in WebsiteSetting/custom_themes JSON so they survive CMS updates.
This commit is contained in:
1 parent
55c13b533c
commit
5b4b275b2a
13 files changed
+1376
-1
No files matched your search
@@ -1,5 +1,6 @@
|
||||
import { db, WebsiteSetting } from "@/lib/db";
|
||||
import { siteSettings } from "@/lib/services/site-settings";
|
||||
import { BACKGROUND_DEFAULTS, BACKGROUND_KEYS } from "@/lib/theme-bg";
|
||||
import {
|
||||
PRESETS,
|
||||
THEME_COLOR_KEYS,
|
||||
@@ -29,6 +30,7 @@ const EXTRA_KEYS = [
|
||||
"size_heading_h3",
|
||||
"custom_css",
|
||||
"theme_preset",
|
||||
...BACKGROUND_KEYS,
|
||||
];
|
||||
|
||||
const ALL_KEYS: string[] = [
|
||||
@@ -59,8 +61,9 @@ function fallbackFor(key: string): string {
|
||||
size_heading_h3: "18",
|
||||
custom_css: "",
|
||||
theme_preset: "Atom (golden)",
|
||||
...BACKGROUND_DEFAULTS,
|
||||
};
|
||||
return extras[key] ?? ""; // eslint-disable-line security/detect-object-injection -- key derived from internal THEME_COLOR_KEYS
|
||||
return extras[key] ?? ""; // eslint-disable-line security/detect-object-injection -- key derived from internal EXTRA_KEYS
|
||||
}
|
||||
|
||||
export async function listCustomThemes(): Promise<CustomTheme[]> {
|
||||
|
||||
Reference in new issue
Block a user