export type ThemeColor = 'blue' | 'indigo' | 'red' | 'orange' | 'yellow' | 'teal' | 'green' | 'blue' | 'purple'; export type NavigationMode = 'sidebar' | 'topbar' | 'mixed'; export type SideMenuType = 'expanded' | 'collapsed' | 'perplexLayout'; export type ContentWidth = 'fixed' | 'fluid'; export declare enum SearchBarBehavior { PERMANENT = "permanent", ON_SCROLL = "on-scroll" } export interface BackgroundSettings { type: 'color' | 'image' | 'video'; color?: string; image?: string; video?: string; videoThumbnail?: string; } export interface ComponentSettings { id: string; name: string; settings: Record; } export type RouteSettings = { layout?: { desktop: { navigationMode: NavigationMode; sideMenuType: SideMenuType; contentWidth: ContentWidth; fixedHeader: boolean; fixedSidebar: boolean; splitMenus: boolean; upperMenuDividerName?: string; middleMenuDividerName?: string; lowerMenuDividerName?: string; }; mobile: { navigationMode: NavigationMode; sideMenuType: SideMenuType; contentWidth: ContentWidth; fixedHeader: boolean; fixedSidebar: boolean; splitMenus: boolean; upperMenuDividerName?: string; middleMenuDividerName?: string; lowerMenuDividerName?: string; }; }; header?: { desktop?: { showLogo?: boolean; showSearchSlot?: boolean; showRightContent?: boolean; showMenuToggle?: boolean; showBackButton?: boolean; showPageTitle?: boolean; showActionButtons?: boolean; position?: 'fixed' | 'static'; height?: string; elevation?: number; showHeader?: boolean; showMenu?: boolean; menuHeaderRender?: boolean; searchBarRender?: boolean; searchBarBehavior?: SearchBarBehavior; searchBarOverlay?: boolean; scrollThreshold?: number; }; mobile?: { showLogo?: boolean; showSearchSlot?: boolean; showRightContent?: boolean; showMenuToggle?: boolean; showBackButton?: boolean; showPageTitle?: boolean; showActionButtons?: boolean; position?: 'fixed' | 'static'; height?: string; elevation?: number; showHeader?: boolean; showMenu?: boolean; menuHeaderRender?: boolean; searchBarRender?: boolean; searchBarBehavior?: SearchBarBehavior; searchBarOverlay?: boolean; scrollThreshold?: number; }; }; footer?: { desktop?: { showFooter?: boolean; }; mobile?: { showFooter?: boolean; }; }; background?: { desktop?: BackgroundSettings; mobile?: BackgroundSettings; }; regions?: { desktop?: { background?: BackgroundSettings; header?: { showLogo?: boolean; showSearchSlot?: boolean; showRightContent?: boolean; showMenuToggle?: boolean; showBackButton?: boolean; showPageTitle?: boolean; showActionButtons?: boolean; position?: 'fixed' | 'static'; height?: string; elevation?: number; showHeader?: boolean; showMenu?: boolean; menuHeaderRender?: boolean; searchBarRender?: boolean; searchBarBehavior?: SearchBarBehavior; searchBarOverlay?: boolean; scrollThreshold?: number; }; footer?: { showFooter?: boolean; }; }; mobile?: { background?: BackgroundSettings; header?: { showLogo?: boolean; showSearchSlot?: boolean; showRightContent?: boolean; showMenuToggle?: boolean; showBackButton?: boolean; showPageTitle?: boolean; showActionButtons?: boolean; position?: 'fixed' | 'static'; height?: string; elevation?: number; showHeader?: boolean; showMenu?: boolean; menuHeaderRender?: boolean; searchBarRender?: boolean; searchBarBehavior?: SearchBarBehavior; searchBarOverlay?: boolean; scrollThreshold?: number; }; footer?: { showFooter?: boolean; }; }; }; }; /** * UI Settings - User-facing settings that control the visual appearance and layout. * This includes all visual/layout settings but excludes internal machine state. */ export interface UISettings { navTheme: 'light' | 'dark' | 'realDark'; primaryColor: string; secondaryColor: string; theme?: string; logo: string; showSettingPanel: boolean; titleColor: string; language: string; fontFamily: string; titleFontWeight: string; titleHeight: string; titleFontSize: string; letterSpacings: string; siderBgColor: string; sideMenuType: SideMenuType; headerBgColor: string; textColor: string; themeType: string; loginThemeColor: string; loginFormPosition: string; loginSocials: string; loginBackgroundImage: string; verifyFormLayout: string; verifyFormImageUrl: string; verifyFormBackgroundStyle: string; verifyFormVisibleFields: string; verifyFormShowSkipButton: boolean; components: ComponentSettings[]; activeComponent?: string; hiddenMenuKeys?: string[]; hiddenMenuCategories?: string[]; uiSettings?: { uilayout?: { layout?: any; regions?: any; }; overrides?: Record; }; overrides?: Record; } /** * Machine-internal state used for XState machine logic only. * These values are NEVER exposed to consumers or synced to Redux. * * IMPORTANT: This interface contains ONLY machine-internal state. * NO user-facing settings should be added here. */ export interface MachineInternalState { configModel: any; deviceType: 'desktop' | 'mobile'; currentRoute: string; changedSettings: Record; currentChangedSetting?: Record; routePattern?: string; } /** * Settings Context - Complete state with separated UI and internal concerns. */ export interface SettingsContext { public: UISettings; internal: MachineInternalState; } /** * Legacy type for backward compatibility * @deprecated Use UISettings instead */ export type SettingsContextLegacy = UISettings; export type UpdateEvent = { type: 'UISETTING_UPDATE'; value?: Partial; }; export type ComponentEvent = { type: 'REGISTER_COMPONENT'; component: ComponentSettings; } | { type: 'UPDATE_COMPONENT_SETTINGS'; componentId: string; settings: Record; } | { type: 'SELECT_COMPONENT'; componentId: string; } | { type: 'CLEAR_COMPONENT_SELECTION'; }; export type MachineEvent = { type: 'UISETTING_UPDATE'; value: Partial; } | { type: 'REGISTER_COMPONENT'; component: any; } | { type: 'UPDATE_COMPONENT_SETTINGS'; componentId: string; settings: any; } | { type: 'SELECT_COMPONENT'; componentId: string; } | { type: 'CLEAR_COMPONENT_SELECTION'; } | { type: 'UISETTING_RESET'; } | { type: 'SAVE'; } | { type: 'UISETTING_RESET_CHANGED_SETTINGS'; } | { type: 'UISETTING_ROUTE_CHANGE'; pathname: string; routePattern?: string; } | { type: 'UISETTING_UPDATE_ROUTE_SETTINGS'; settings: Record>; } | { type: 'UISETTING_UPDATE_DEVICE_TYPE'; deviceType: 'desktop' | 'mobile'; }; //# sourceMappingURL=types.d.ts.map