Add admin site settings sections and locale defaults

This commit is contained in:
MOH
2026-03-15 04:06:33 +01:00
parent 3e9edc5873
commit 5d3f77962a
21 changed files with 993 additions and 456 deletions
+23
View File
@@ -9,6 +9,8 @@ describe("site settings helpers", () => {
it("builds defaults from the fallback site name", () => {
const settings = buildDefaultSiteSettings("Studio Moh");
expect(settings.defaultLocale).toBe("de");
expect(settings.brand.primaryColor).toBe("#dc5a35");
expect(settings.locales.ar.siteName).toBe("Studio Moh");
expect(settings.locales.ar.titleTemplate).toBe("{pageTitle} | {siteName}");
expect(settings.locales.en.siteDescription).toBe("Multilingual Next.js base project");
@@ -18,6 +20,10 @@ describe("site settings helpers", () => {
it("merges stored values with safe defaults", () => {
const settings = parseSiteSettingsValue(
JSON.stringify({
defaultLocale: "ar",
brand: {
primaryColor: "#112233",
},
locales: {
en: {
siteName: "Brand EN",
@@ -34,6 +40,8 @@ describe("site settings helpers", () => {
"Fallback Name",
);
expect(settings.defaultLocale).toBe("ar");
expect(settings.brand.primaryColor).toBe("#112233");
expect(settings.locales.en.siteName).toBe("Brand EN");
expect(settings.locales.en.titleTemplate).toBe("{pageTitle} - {siteName}");
expect(settings.locales.en.siteDescription).toBe("English description");
@@ -66,4 +74,19 @@ describe("site settings helpers", () => {
expect(settings.locales.ar.titleTemplate).toBe("{pageTitle} | {siteName}");
});
it("falls back for invalid default locale and invalid primary color", () => {
const settings = parseSiteSettingsValue(
JSON.stringify({
defaultLocale: "fr",
brand: {
primaryColor: "red",
},
}),
"Fallback Name",
);
expect(settings.defaultLocale).toBe("de");
expect(settings.brand.primaryColor).toBe("#dc5a35");
});
});