// config/parser/LookAndFeelParser.kt package com.complycube.reactnative.config.parser import com.complycube.reactnative.config.helper.ColorConverter import com.complycube.sdk.presentation.theme.LookAndFeel import com.complycube.sdk.presentation.theme.UIInterfaceStyle class LookAndFeelParser(private val colorConverter: ColorConverter) { fun parse(data: Map): LookAndFeel { return LookAndFeel( isDarkMode = data["isDarkMode"] as? Boolean ?: false, uiInterfaceStyle = parseUIInterfaceStyle(data["uiInterfaceStyle"] as? String), borderRadius = data["borderRadius"] as? Int ?: 4, enableAnimations = data["enableAnimations"] as? Boolean ?: false, // Primary Button primaryButtonColor = data["primaryButtonColor"]?.let { colorConverter.hexToColor(it as String) }, primaryButtonBgColor = data["primaryButtonBgColor"]?.let { colorConverter.hexToColor(it as String) }, primaryButtonTextColor = data["primaryButtonTextColor"]?.let { colorConverter.hexToColor(it as String) }, primaryButtonBorderColor = data["primaryButtonBorderColor"]?.let { colorConverter.hexToColor(it as String) }, // Secondary Button secondaryButtonColor = data["secondaryButtonColor"]?.let { colorConverter.hexToColor(it as String) }, secondaryButtonBgColor = data["secondaryButtonBgColor"]?.let { colorConverter.hexToColor(it as String) }, secondaryButtonTextColor = data["secondaryButtonTextColor"]?.let { colorConverter.hexToColor(it as String) }, secondaryButtonBorderColor = data["secondaryButtonBorderColor"]?.let { colorConverter.hexToColor(it as String) }, // Document Selector (modern) documentSelectorColor = data["documentSelectorColor"]?.let { colorConverter.hexToColor(it as String) }, documentSelectorBorderColor = data["documentSelectorBorderColor"]?.let { colorConverter.hexToColor(it as String) }, documentSelectorIconColor = data["documentSelectorIconColor"]?.let { colorConverter.hexToColor(it as String) }, documentSelectorTitleTextColor = data["documentSelectorTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, documentSelectorDescriptionTextColor = data["documentSelectorDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Document Type Selector (legacy) documentTypeSelectorBgColor = data["documentTypeSelectorBgColor"]?.let { colorConverter.hexToColor(it as String) }, documentTypeSelectorBorderColor = data["documentTypeSelectorBorderColor"]?.let { colorConverter.hexToColor(it as String) }, documentTypeSelectorIconColor = data["documentTypeSelectorIconColor"]?.let { colorConverter.hexToColor(it as String) }, documentTypeSelectorTitleTextColor = data["documentTypeSelectorTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, documentTypeSelectorDescriptionTextColor = data["documentTypeSelectorDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Info Popup (modern) infoPopupColor = data["infoPopupColor"]?.let { colorConverter.hexToColor(it as String) }, infoPopupIconColor = data["infoPopupIconColor"]?.let { colorConverter.hexToColor(it as String) }, infoPopupTitleTextColor = data["infoPopupTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, infoPopupDescriptionTextColor = data["infoPopupDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Info Panel (legacy) infoPanelColor = data["infoPanelColor"]?.let { colorConverter.hexToColor(it as String) }, infoPanelBgColor = data["infoPanelBgColor"]?.let { colorConverter.hexToColor(it as String) }, infoPanelIconColor = data["infoPanelIconColor"]?.let { colorConverter.hexToColor(it as String) }, infoPanelTitleTextColor = data["infoPanelTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, infoPanelDescriptionTextColor = data["infoPanelDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Error Popup (modern) errorPopupColor = data["errorPopupColor"]?.let { colorConverter.hexToColor(it as String) }, errorPopupIconColor = data["errorPopupIconColor"]?.let { colorConverter.hexToColor(it as String) }, errorPopupTitleTextColor = data["errorPopupTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, errorPopupDescriptionTextColor = data["errorPopupDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Error Panel (legacy) errorPanelColor = data["errorPanelColor"]?.let { colorConverter.hexToColor(it as String) }, errorPanelBgColor = data["errorPanelBgColor"]?.let { colorConverter.hexToColor(it as String) }, errorPanelIconColor = data["errorPanelIconColor"]?.let { colorConverter.hexToColor(it as String) }, errorPanelTitleTextColor = data["errorPanelTitleTextColor"]?.let { colorConverter.hexToColor(it as String) }, errorPanelDescriptionTextColor = data["errorPanelDescriptionTextColor"]?.let { colorConverter.hexToColor(it as String) }, // Misc cameraButtonColor = data["cameraButtonColor"]?.let { colorConverter.hexToColor(it as String) }, // Typography and backgrounds bodyTextColor = data["bodyTextColor"]?.let { colorConverter.hexToColor(it as String) }, headingTextColor = data["headingTextColor"]?.let { colorConverter.hexToColor(it as String) }, subheadingTextColor = data["subheadingTextColor"]?.let { colorConverter.hexToColor(it as String) }, backgroundColor = data["backgroundColor"]?.let { colorConverter.hexToColor(it as String) }, backgroundContentColor = data["backgroundContentColor"]?.let { colorConverter.hexToColor(it as String) }, backgroundContentContrastColor = data["backgroundContentContrastColor"]?.let { colorConverter.hexToColor(it as String) }, backgroundDividerColor = data["backgroundDividerColor"]?.let { colorConverter.hexToColor(it as String) }, editTextColor = data["editTextColor"]?.let { colorConverter.hexToColor(it as String) } ) } private fun parseUIInterfaceStyle(style: String?): UIInterfaceStyle { return when (style?.lowercase()) { "dark" -> UIInterfaceStyle.DARK "light" -> UIInterfaceStyle.LIGHT else -> UIInterfaceStyle.INHERITED } } }