diff --git a/prisma/backfill-appearance-from-registry.ts b/prisma/backfill-appearance-from-registry.ts index 76d09c8..2359073 100644 --- a/prisma/backfill-appearance-from-registry.ts +++ b/prisma/backfill-appearance-from-registry.ts @@ -207,11 +207,13 @@ async function main() { if (tenant.product === 'hamkar') { const managed = existingUi?.kind === 'hamkar' && existingUi?.settingsManaged === true + const brandManaged = existingUi?.kind === 'hamkar' && existingUi?.brandManaged === true const built = buildHamkarUiFromBrand({ primaryColor: primary, secondaryColor: secondary, backgroundColor: background, settingsManaged: managed, + brandManaged, registryMode: registryMode || existingUi?.registryMode || 'dynamicMode', settings: managed ? existingUi.settings : undefined, }) diff --git a/prisma/lib/appearance-builders.ts b/prisma/lib/appearance-builders.ts index aac5b8e..dd490ed 100644 --- a/prisma/lib/appearance-builders.ts +++ b/prisma/lib/appearance-builders.ts @@ -34,6 +34,7 @@ export function buildHamkarUiFromBrand(input: { secondaryColor?: string | null backgroundColor?: string | null settingsManaged?: boolean + brandManaged?: boolean registryMode?: string | null settings?: { pricing_box_theme?: string @@ -57,6 +58,7 @@ export function buildHamkarUiFromBrand(input: { const base = { kind: 'hamkar' as const, settingsManaged: Boolean(input.settingsManaged), + brandManaged: Boolean(input.brandManaged), registryMode: input.registryMode || 'dynamicMode', brand: { // Keep nulls — do NOT invent #1d4ed8 (causes wrong accent vs live registry) diff --git a/prisma/seed-hamkar-default-snapshots.ts b/prisma/seed-hamkar-default-snapshots.ts index cdb7cbb..3165c97 100644 --- a/prisma/seed-hamkar-default-snapshots.ts +++ b/prisma/seed-hamkar-default-snapshots.ts @@ -171,6 +171,7 @@ async function main() { ? keepSnapshot.brand?.backgroundColor : existing?.brand?.backgroundColor ?? brandBackground, settingsManaged: Boolean(existing?.settingsManaged), + brandManaged: Boolean(existing?.brandManaged), registryMode: restore ? keepSnapshot.registryMode : existing?.registryMode || registryMode, diff --git a/src/get-user/get-user.service.ts b/src/get-user/get-user.service.ts index fd3facc..fd1d275 100644 --- a/src/get-user/get-user.service.ts +++ b/src/get-user/get-user.service.ts @@ -122,6 +122,12 @@ export class GetUserService { : undefined, /** Laravel-compatible overlay; Hamkar merges only when present */ ui_settings: uiSettings.length ? uiSettings : undefined, + /** + * Hamkar only: when true, apply brand colors to mobile header+menu and page body + * (including theme-two). Absent/false → keep factory chrome (no visual jump). + */ + brand_chrome: + isHamkarUi && ui?.brandManaged === true ? true : undefined, /** Admin expiry modals — near/expired server, plugin, support */ subscription_alerts, plugin_store_enabled: isKhanegi