feat(hamkar-ui): mobile preview and brandManaged for chrome colors

Save sets brandManaged so header+menu share one color and body stays separate, without changing live apps until save.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-14 17:04:33 +03:30
co-authored by Cursor
parent f90df62ee0
commit 71e6655f90
3 changed files with 71 additions and 21 deletions
+9
View File
@@ -31,6 +31,12 @@ export type HamkarUiConfig = {
* Laravel settings stay source of truth (prevents visual jumps).
*/
settingsManaged: boolean
/**
* When true, Hamkar applies brand colors to mobile chrome (header + bottom menu)
* and page body — including theme-two. Default false so live apps stay untouched
* until colors are saved from SuperAdmin.
*/
brandManaged: boolean
/** Named CSS mode from live registry (Montpar, limangold, …) or dynamicMode */
registryMode: string
brand: HamkarBrandColors
@@ -103,6 +109,7 @@ export function createDefaultHamkarUiConfig(): HamkarUiConfig {
return {
kind: 'hamkar',
settingsManaged: false,
brandManaged: false,
registryMode: 'dynamicMode',
brand: {
primaryColor: '',
@@ -151,6 +158,7 @@ export function normalizeHamkarUiConfig(raw: unknown): HamkarUiConfig {
return {
kind: 'hamkar',
settingsManaged: Boolean(input.settingsManaged),
brandManaged: Boolean(input.brandManaged),
registryMode,
brand,
settings,
@@ -177,6 +185,7 @@ export function hamkarUiToApiPayload(config: HamkarUiConfig) {
return {
kind: 'hamkar' as const,
settingsManaged: normalized.settingsManaged,
brandManaged: normalized.brandManaged,
registryMode: normalized.registryMode,
brand: {
primaryColor: emptyToNull(normalized.brand.primaryColor),
+1 -1
View File
@@ -75,6 +75,6 @@ export function resolveHamkarEffectiveTheme(input: {
bg2: panel,
colorPrimary: accent,
},
note: 'حالت dynamicMode: color → هدر (--bg2)، secondary_color → اکسنت (--colorPrimary)، background_color → پس‌زمینه (--bg).',
note: 'حالت dynamicMode: color → هدر و منوی موبایل (--bg2 / --theme-two-header)، secondary_color → اکسنت (--colorPrimary)، background_color → بدنه صفحه (--bg / --theme-two-background).',
}
}