'No tienes permisos para realizar esta acción.' ]); } // Obtener datos $component = sanitize_text_field($_POST['component'] ?? ''); $settings = json_decode(stripslashes($_POST['settings'] ?? '{}'), true); if (empty($component) || empty($settings)) { wp_send_json_error([ 'message' => 'Datos incompletos.' ]); } // Mapear IDs de campos a nombres de atributos del schema $fieldMapping = $this->getFieldMapping(); $mappedSettings = []; foreach ($settings as $fieldId => $value) { // Convertir ID del campo a nombre del atributo if (!isset($fieldMapping[$fieldId])) { continue; // Campo no mapeado, ignorar } $mapping = $fieldMapping[$fieldId]; $groupName = $mapping['group']; $attributeName = $mapping['attribute']; if (!isset($mappedSettings[$groupName])) { $mappedSettings[$groupName] = []; } $mappedSettings[$groupName][$attributeName] = $value; } // Usar Use Case para guardar if ($this->saveComponentSettingsUseCase !== null) { $updated = $this->saveComponentSettingsUseCase->execute($component, $mappedSettings); wp_send_json_success([ 'message' => sprintf('Se guardaron %d campos correctamente.', $updated) ]); } else { wp_send_json_error([ 'message' => 'Error: Use Case no disponible.' ]); } } /** * Restaura los valores por defecto de un componente */ public function resetComponentDefaults(): void { // Verificar nonce check_ajax_referer('roi_admin_dashboard', 'nonce'); // Verificar permisos if (!current_user_can('manage_options')) { wp_send_json_error([ 'message' => 'No tienes permisos para realizar esta acción.' ]); } // Obtener componente $component = sanitize_text_field($_POST['component'] ?? ''); if (empty($component)) { wp_send_json_error([ 'message' => 'Componente no especificado.' ]); } // Ruta al schema JSON $schemaPath = get_template_directory() . '/Schemas/' . $component . '.json'; if (!file_exists($schemaPath)) { wp_send_json_error([ 'message' => 'Schema del componente no encontrado.' ]); } // Usar repositorio para restaurar valores if ($this->saveComponentSettingsUseCase !== null) { global $wpdb; $repository = new \ROITheme\Shared\Infrastructure\Persistence\WordPress\WordPressComponentSettingsRepository($wpdb); $updated = $repository->resetToDefaults($component, $schemaPath); wp_send_json_success([ 'message' => sprintf('Se restauraron %d campos a sus valores por defecto.', $updated) ]); } else { wp_send_json_error([ 'message' => 'Error: Repositorio no disponible.' ]); } } /** * Mapeo de IDs de campos HTML a nombres de atributos del schema * * @return array */ private function getFieldMapping(): array { return [ // ===================================================== // TOP NOTIFICATION BAR // ===================================================== // Activación y Visibilidad 'topBarEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'topBarShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'topBarShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'topBarShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Contenido 'topBarIconClass' => ['group' => 'content', 'attribute' => 'icon_class'], 'topBarLabelText' => ['group' => 'content', 'attribute' => 'label_text'], 'topBarMessageText' => ['group' => 'content', 'attribute' => 'message_text'], 'topBarLinkText' => ['group' => 'content', 'attribute' => 'link_text'], 'topBarLinkUrl' => ['group' => 'content', 'attribute' => 'link_url'], // Colores 'topBarBackgroundColor' => ['group' => 'colors', 'attribute' => 'background_color'], 'topBarTextColor' => ['group' => 'colors', 'attribute' => 'text_color'], 'topBarLabelColor' => ['group' => 'colors', 'attribute' => 'label_color'], 'topBarIconColor' => ['group' => 'colors', 'attribute' => 'icon_color'], 'topBarLinkColor' => ['group' => 'colors', 'attribute' => 'link_color'], 'topBarLinkHoverColor' => ['group' => 'colors', 'attribute' => 'link_hover_color'], // Espaciado 'topBarFontSize' => ['group' => 'spacing', 'attribute' => 'font_size'], 'topBarPadding' => ['group' => 'spacing', 'attribute' => 'padding'], // ===================================================== // NAVBAR // ===================================================== // Visibility 'navbarEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'navbarShowMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'navbarShowDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'navbarShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], 'navbarSticky' => ['group' => 'visibility', 'attribute' => 'sticky_enabled'], // Layout 'navbarContainerType' => ['group' => 'layout', 'attribute' => 'container_type'], 'navbarPaddingVertical' => ['group' => 'layout', 'attribute' => 'padding_vertical'], 'navbarZIndex' => ['group' => 'layout', 'attribute' => 'z_index'], // Behavior 'navbarMenuLocation' => ['group' => 'behavior', 'attribute' => 'menu_location'], 'navbarCustomMenuId' => ['group' => 'behavior', 'attribute' => 'custom_menu_id'], 'navbarEnableDropdowns' => ['group' => 'behavior', 'attribute' => 'enable_dropdowns'], 'navbarMobileBreakpoint' => ['group' => 'behavior', 'attribute' => 'mobile_breakpoint'], // Media (Logo/Marca) 'navbarShowBrand' => ['group' => 'media', 'attribute' => 'show_brand'], 'navbarUseLogo' => ['group' => 'media', 'attribute' => 'use_logo'], 'navbarLogoUrl' => ['group' => 'media', 'attribute' => 'logo_url'], 'navbarLogoHeight' => ['group' => 'media', 'attribute' => 'logo_height'], 'navbarBrandText' => ['group' => 'media', 'attribute' => 'brand_text'], 'navbarBrandFontSize' => ['group' => 'media', 'attribute' => 'brand_font_size'], 'navbarBrandColor' => ['group' => 'media', 'attribute' => 'brand_color'], 'navbarBrandHoverColor' => ['group' => 'media', 'attribute' => 'brand_hover_color'], // Links 'linksTextColor' => ['group' => 'links', 'attribute' => 'text_color'], 'linksHoverColor' => ['group' => 'links', 'attribute' => 'hover_color'], 'linksActiveColor' => ['group' => 'links', 'attribute' => 'active_color'], 'linksFontSize' => ['group' => 'links', 'attribute' => 'font_size'], 'linksFontWeight' => ['group' => 'links', 'attribute' => 'font_weight'], 'linksPadding' => ['group' => 'links', 'attribute' => 'padding'], 'linksBorderRadius' => ['group' => 'links', 'attribute' => 'border_radius'], 'linksShowUnderline' => ['group' => 'links', 'attribute' => 'show_underline_effect'], 'linksUnderlineColor' => ['group' => 'links', 'attribute' => 'underline_color'], // Visual Effects (Dropdown) 'dropdownBgColor' => ['group' => 'visual_effects', 'attribute' => 'background_color'], 'dropdownBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'border_radius'], 'dropdownShadow' => ['group' => 'visual_effects', 'attribute' => 'shadow'], 'dropdownItemColor' => ['group' => 'visual_effects', 'attribute' => 'item_color'], 'dropdownItemHoverBg' => ['group' => 'visual_effects', 'attribute' => 'item_hover_background'], 'dropdownItemPadding' => ['group' => 'visual_effects', 'attribute' => 'item_padding'], 'dropdownMaxHeight' => ['group' => 'visual_effects', 'attribute' => 'dropdown_max_height'], // Colors (Navbar styles) 'navbarBgColor' => ['group' => 'colors', 'attribute' => 'background_color'], 'navbarBoxShadow' => ['group' => 'colors', 'attribute' => 'box_shadow'], // ===================================================== // CTA LETS TALK // ===================================================== // Visibility 'ctaLetsTalkEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'ctaLetsTalkShowDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'ctaLetsTalkShowMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'ctaLetsTalkShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'ctaLetsTalkButtonText' => ['group' => 'content', 'attribute' => 'button_text'], 'ctaLetsTalkShowIcon' => ['group' => 'content', 'attribute' => 'show_icon'], 'ctaLetsTalkIconClass' => ['group' => 'content', 'attribute' => 'icon_class'], 'ctaLetsTalkModalTarget' => ['group' => 'content', 'attribute' => 'modal_target'], 'ctaLetsTalkAriaLabel' => ['group' => 'content', 'attribute' => 'aria_label'], // Behavior 'ctaLetsTalkEnableModal' => ['group' => 'behavior', 'attribute' => 'enable_modal'], 'ctaLetsTalkCustomUrl' => ['group' => 'behavior', 'attribute' => 'custom_url'], 'ctaLetsTalkOpenNewTab' => ['group' => 'behavior', 'attribute' => 'open_in_new_tab'], // Typography 'ctaLetsTalkFontSize' => ['group' => 'typography', 'attribute' => 'font_size'], 'ctaLetsTalkFontWeight' => ['group' => 'typography', 'attribute' => 'font_weight'], 'ctaLetsTalkTextTransform' => ['group' => 'typography', 'attribute' => 'text_transform'], // Colors 'ctaLetsTalkBgColor' => ['group' => 'colors', 'attribute' => 'background_color'], 'ctaLetsTalkBgHoverColor' => ['group' => 'colors', 'attribute' => 'background_hover_color'], 'ctaLetsTalkTextColor' => ['group' => 'colors', 'attribute' => 'text_color'], 'ctaLetsTalkTextHoverColor' => ['group' => 'colors', 'attribute' => 'text_hover_color'], 'ctaLetsTalkBorderColor' => ['group' => 'colors', 'attribute' => 'border_color'], // Spacing 'ctaLetsTalkPaddingTB' => ['group' => 'spacing', 'attribute' => 'padding_top_bottom'], 'ctaLetsTalkPaddingLR' => ['group' => 'spacing', 'attribute' => 'padding_left_right'], 'ctaLetsTalkMarginLeft' => ['group' => 'spacing', 'attribute' => 'margin_left'], 'ctaLetsTalkIconSpacing' => ['group' => 'spacing', 'attribute' => 'icon_spacing'], // Visual Effects 'ctaLetsTalkBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'border_radius'], 'ctaLetsTalkBorderWidth' => ['group' => 'visual_effects', 'attribute' => 'border_width'], 'ctaLetsTalkBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'box_shadow'], 'ctaLetsTalkTransition' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], // ===================================================== // HERO SECTION // ===================================================== // Visibility 'heroEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'heroShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'heroShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'heroShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'heroShowCategories' => ['group' => 'content', 'attribute' => 'show_categories'], 'heroShowBadgeIcon' => ['group' => 'content', 'attribute' => 'show_badge_icon'], 'heroBadgeIconClass' => ['group' => 'content', 'attribute' => 'badge_icon_class'], 'heroTitleTag' => ['group' => 'content', 'attribute' => 'title_tag'], // Colors 'heroGradientStart' => ['group' => 'colors', 'attribute' => 'gradient_start'], 'heroGradientEnd' => ['group' => 'colors', 'attribute' => 'gradient_end'], 'heroTitleColor' => ['group' => 'colors', 'attribute' => 'title_color'], 'heroBadgeBgColor' => ['group' => 'colors', 'attribute' => 'badge_bg_color'], 'heroBadgeTextColor' => ['group' => 'colors', 'attribute' => 'badge_text_color'], 'heroBadgeIconColor' => ['group' => 'colors', 'attribute' => 'badge_icon_color'], 'heroBadgeHoverBg' => ['group' => 'colors', 'attribute' => 'badge_hover_bg'], // Typography 'heroTitleFontSize' => ['group' => 'typography', 'attribute' => 'title_font_size'], 'heroTitleFontSizeMobile' => ['group' => 'typography', 'attribute' => 'title_font_size_mobile'], 'heroTitleFontWeight' => ['group' => 'typography', 'attribute' => 'title_font_weight'], 'heroTitleLineHeight' => ['group' => 'typography', 'attribute' => 'title_line_height'], 'heroBadgeFontSize' => ['group' => 'typography', 'attribute' => 'badge_font_size'], // Spacing 'heroPaddingVertical' => ['group' => 'spacing', 'attribute' => 'padding_vertical'], 'heroMarginBottom' => ['group' => 'spacing', 'attribute' => 'margin_bottom'], 'heroBadgePadding' => ['group' => 'spacing', 'attribute' => 'badge_padding'], 'heroBadgeBorderRadius' => ['group' => 'spacing', 'attribute' => 'badge_border_radius'], // Visual Effects 'heroBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'box_shadow'], 'heroTitleTextShadow' => ['group' => 'visual_effects', 'attribute' => 'title_text_shadow'], 'heroBadgeBackdropBlur' => ['group' => 'visual_effects', 'attribute' => 'badge_backdrop_blur'], // ===================================================== // FEATURED IMAGE // ===================================================== // Visibility 'featuredImageEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'featuredImageShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'featuredImageShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'featuredImageShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'featuredImageSize' => ['group' => 'content', 'attribute' => 'image_size'], 'featuredImageLazyLoading' => ['group' => 'content', 'attribute' => 'lazy_loading'], 'featuredImageLinkToMedia' => ['group' => 'content', 'attribute' => 'link_to_media'], // Spacing 'featuredImageMarginTop' => ['group' => 'spacing', 'attribute' => 'margin_top'], 'featuredImageMarginBottom' => ['group' => 'spacing', 'attribute' => 'margin_bottom'], // Visual Effects 'featuredImageBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'border_radius'], 'featuredImageBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'box_shadow'], 'featuredImageHoverEffect' => ['group' => 'visual_effects', 'attribute' => 'hover_effect'], 'featuredImageHoverScale' => ['group' => 'visual_effects', 'attribute' => 'hover_scale'], 'featuredImageTransitionDuration' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], // ===================================================== // TABLE OF CONTENTS // ===================================================== // Visibility 'tocEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'tocShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'tocShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'tocShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'tocTitle' => ['group' => 'content', 'attribute' => 'title'], 'tocAutoGenerate' => ['group' => 'content', 'attribute' => 'auto_generate'], 'tocHeadingLevels' => ['group' => 'content', 'attribute' => 'heading_levels'], 'tocSmoothScroll' => ['group' => 'content', 'attribute' => 'smooth_scroll'], // Typography 'tocTitleFontSize' => ['group' => 'typography', 'attribute' => 'title_font_size'], 'tocTitleFontWeight' => ['group' => 'typography', 'attribute' => 'title_font_weight'], 'tocLinkFontSize' => ['group' => 'typography', 'attribute' => 'link_font_size'], 'tocLinkLineHeight' => ['group' => 'typography', 'attribute' => 'link_line_height'], 'tocLevelThreeFontSize' => ['group' => 'typography', 'attribute' => 'level_three_font_size'], 'tocLevelFourFontSize' => ['group' => 'typography', 'attribute' => 'level_four_font_size'], // Colors 'tocBackgroundColor' => ['group' => 'colors', 'attribute' => 'background_color'], 'tocBorderColor' => ['group' => 'colors', 'attribute' => 'border_color'], 'tocTitleColor' => ['group' => 'colors', 'attribute' => 'title_color'], 'tocTitleBorderColor' => ['group' => 'colors', 'attribute' => 'title_border_color'], 'tocLinkColor' => ['group' => 'colors', 'attribute' => 'link_color'], 'tocLinkHoverColor' => ['group' => 'colors', 'attribute' => 'link_hover_color'], 'tocLinkHoverBackground' => ['group' => 'colors', 'attribute' => 'link_hover_background'], 'tocActiveBorderColor' => ['group' => 'colors', 'attribute' => 'active_border_color'], 'tocActiveBackgroundColor' => ['group' => 'colors', 'attribute' => 'active_background_color'], 'tocActiveTextColor' => ['group' => 'colors', 'attribute' => 'active_text_color'], 'tocScrollbarTrackColor' => ['group' => 'colors', 'attribute' => 'scrollbar_track_color'], 'tocScrollbarThumbColor' => ['group' => 'colors', 'attribute' => 'scrollbar_thumb_color'], // Spacing 'tocContainerPadding' => ['group' => 'spacing', 'attribute' => 'container_padding'], 'tocMarginBottom' => ['group' => 'spacing', 'attribute' => 'margin_bottom'], 'tocTitlePaddingBottom' => ['group' => 'spacing', 'attribute' => 'title_padding_bottom'], 'tocTitleMarginBottom' => ['group' => 'spacing', 'attribute' => 'title_margin_bottom'], 'tocItemMarginBottom' => ['group' => 'spacing', 'attribute' => 'item_margin_bottom'], 'tocLinkPadding' => ['group' => 'spacing', 'attribute' => 'link_padding'], 'tocLevelThreePaddingLeft' => ['group' => 'spacing', 'attribute' => 'level_three_padding_left'], 'tocLevelFourPaddingLeft' => ['group' => 'spacing', 'attribute' => 'level_four_padding_left'], 'tocScrollbarWidth' => ['group' => 'spacing', 'attribute' => 'scrollbar_width'], // Visual Effects 'tocBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'border_radius'], 'tocBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'box_shadow'], 'tocBorderWidth' => ['group' => 'visual_effects', 'attribute' => 'border_width'], 'tocLinkBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'link_border_radius'], 'tocActiveBorderLeftWidth' => ['group' => 'visual_effects', 'attribute' => 'active_border_left_width'], 'tocTransitionDuration' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], 'tocScrollbarBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'scrollbar_border_radius'], // Behavior 'tocIsSticky' => ['group' => 'behavior', 'attribute' => 'is_sticky'], 'tocScrollOffset' => ['group' => 'behavior', 'attribute' => 'scroll_offset'], 'tocMaxHeight' => ['group' => 'behavior', 'attribute' => 'max_height'], // ===================================================== // SOCIAL SHARE // ===================================================== // Visibility 'socialShareEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'socialShareShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'socialShareShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'socialShareShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'socialShareShowLabel' => ['group' => 'content', 'attribute' => 'show_label'], 'socialShareLabelText' => ['group' => 'content', 'attribute' => 'label_text'], // Networks 'socialShareFacebook' => ['group' => 'networks', 'attribute' => 'show_facebook'], 'socialShareFacebookUrl' => ['group' => 'networks', 'attribute' => 'facebook_url'], 'socialShareInstagram' => ['group' => 'networks', 'attribute' => 'show_instagram'], 'socialShareInstagramUrl' => ['group' => 'networks', 'attribute' => 'instagram_url'], 'socialShareLinkedin' => ['group' => 'networks', 'attribute' => 'show_linkedin'], 'socialShareLinkedinUrl' => ['group' => 'networks', 'attribute' => 'linkedin_url'], 'socialShareWhatsapp' => ['group' => 'networks', 'attribute' => 'show_whatsapp'], 'socialShareWhatsappNumber' => ['group' => 'networks', 'attribute' => 'whatsapp_number'], 'socialShareTwitter' => ['group' => 'networks', 'attribute' => 'show_twitter'], 'socialShareTwitterUrl' => ['group' => 'networks', 'attribute' => 'twitter_url'], 'socialShareEmail' => ['group' => 'networks', 'attribute' => 'show_email'], 'socialShareEmailAddress' => ['group' => 'networks', 'attribute' => 'email_address'], // Colors 'socialShareLabelColor' => ['group' => 'colors', 'attribute' => 'label_color'], 'socialShareBorderTopColor' => ['group' => 'colors', 'attribute' => 'border_top_color'], 'socialShareButtonBg' => ['group' => 'colors', 'attribute' => 'button_background'], 'socialShareFacebookColor' => ['group' => 'colors', 'attribute' => 'facebook_color'], 'socialShareInstagramColor' => ['group' => 'colors', 'attribute' => 'instagram_color'], 'socialShareLinkedinColor' => ['group' => 'colors', 'attribute' => 'linkedin_color'], 'socialShareWhatsappColor' => ['group' => 'colors', 'attribute' => 'whatsapp_color'], 'socialShareTwitterColor' => ['group' => 'colors', 'attribute' => 'twitter_color'], 'socialShareEmailColor' => ['group' => 'colors', 'attribute' => 'email_color'], // Typography 'socialShareLabelFontSize' => ['group' => 'typography', 'attribute' => 'label_font_size'], 'socialShareIconFontSize' => ['group' => 'typography', 'attribute' => 'icon_font_size'], // Spacing 'socialShareMarginTop' => ['group' => 'spacing', 'attribute' => 'container_margin_top'], 'socialShareMarginBottom' => ['group' => 'spacing', 'attribute' => 'container_margin_bottom'], 'socialSharePaddingTop' => ['group' => 'spacing', 'attribute' => 'container_padding_top'], 'socialSharePaddingBottom' => ['group' => 'spacing', 'attribute' => 'container_padding_bottom'], 'socialShareLabelMarginBottom' => ['group' => 'spacing', 'attribute' => 'label_margin_bottom'], 'socialShareButtonsGap' => ['group' => 'spacing', 'attribute' => 'buttons_gap'], 'socialShareButtonPadding' => ['group' => 'spacing', 'attribute' => 'button_padding'], // Visual Effects 'socialShareBorderTopWidth' => ['group' => 'visual_effects', 'attribute' => 'border_top_width'], 'socialShareButtonBorderWidth' => ['group' => 'visual_effects', 'attribute' => 'button_border_width'], 'socialShareButtonBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'button_border_radius'], 'socialShareTransitionDuration' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], 'socialShareHoverBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'hover_box_shadow'], // ===================================================== // CTA POST // ===================================================== // Visibility 'ctaPostEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'ctaPostShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'ctaPostShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'ctaPostShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'ctaPostTitle' => ['group' => 'content', 'attribute' => 'title'], 'ctaPostDescription' => ['group' => 'content', 'attribute' => 'description'], 'ctaPostButtonText' => ['group' => 'content', 'attribute' => 'button_text'], 'ctaPostButtonUrl' => ['group' => 'content', 'attribute' => 'button_url'], 'ctaPostButtonIcon' => ['group' => 'content', 'attribute' => 'button_icon'], // Typography 'ctaPostTitleFontSize' => ['group' => 'typography', 'attribute' => 'title_font_size'], 'ctaPostTitleFontWeight' => ['group' => 'typography', 'attribute' => 'title_font_weight'], 'ctaPostDescriptionFontSize' => ['group' => 'typography', 'attribute' => 'description_font_size'], 'ctaPostButtonFontSize' => ['group' => 'typography', 'attribute' => 'button_font_size'], // Colors 'ctaPostGradientStart' => ['group' => 'colors', 'attribute' => 'gradient_start'], 'ctaPostGradientEnd' => ['group' => 'colors', 'attribute' => 'gradient_end'], 'ctaPostTitleColor' => ['group' => 'colors', 'attribute' => 'title_color'], 'ctaPostDescriptionColor' => ['group' => 'colors', 'attribute' => 'description_color'], 'ctaPostButtonBgColor' => ['group' => 'colors', 'attribute' => 'button_bg_color'], 'ctaPostButtonTextColor' => ['group' => 'colors', 'attribute' => 'button_text_color'], 'ctaPostButtonHoverBg' => ['group' => 'colors', 'attribute' => 'button_hover_bg'], // Spacing 'ctaPostContainerMarginTop' => ['group' => 'spacing', 'attribute' => 'container_margin_top'], 'ctaPostContainerMarginBottom' => ['group' => 'spacing', 'attribute' => 'container_margin_bottom'], 'ctaPostContainerPadding' => ['group' => 'spacing', 'attribute' => 'container_padding'], 'ctaPostTitleMarginBottom' => ['group' => 'spacing', 'attribute' => 'title_margin_bottom'], 'ctaPostButtonIconMargin' => ['group' => 'spacing', 'attribute' => 'button_icon_margin'], // Visual Effects 'ctaPostBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'border_radius'], 'ctaPostGradientAngle' => ['group' => 'visual_effects', 'attribute' => 'gradient_angle'], 'ctaPostButtonBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'button_border_radius'], 'ctaPostButtonPadding' => ['group' => 'visual_effects', 'attribute' => 'button_padding'], 'ctaPostTransitionDuration' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], 'ctaPostBoxShadow' => ['group' => 'visual_effects', 'attribute' => 'box_shadow'], // ===================================================== // CONTACT FORM // ===================================================== // Visibility 'contactFormEnabled' => ['group' => 'visibility', 'attribute' => 'is_enabled'], 'contactFormShowOnDesktop' => ['group' => 'visibility', 'attribute' => 'show_on_desktop'], 'contactFormShowOnMobile' => ['group' => 'visibility', 'attribute' => 'show_on_mobile'], 'contactFormShowOnPages' => ['group' => 'visibility', 'attribute' => 'show_on_pages'], // Content 'contactFormSectionTitle' => ['group' => 'content', 'attribute' => 'section_title'], 'contactFormSectionDescription' => ['group' => 'content', 'attribute' => 'section_description'], 'contactFormSubmitButtonText' => ['group' => 'content', 'attribute' => 'submit_button_text'], 'contactFormSubmitButtonIcon' => ['group' => 'content', 'attribute' => 'submit_button_icon'], // Contact Info 'contactFormShowContactInfo' => ['group' => 'contact_info', 'attribute' => 'show_contact_info'], 'contactFormPhoneLabel' => ['group' => 'contact_info', 'attribute' => 'phone_label'], 'contactFormPhoneValue' => ['group' => 'contact_info', 'attribute' => 'phone_value'], 'contactFormEmailLabel' => ['group' => 'contact_info', 'attribute' => 'email_label'], 'contactFormEmailValue' => ['group' => 'contact_info', 'attribute' => 'email_value'], 'contactFormLocationLabel' => ['group' => 'contact_info', 'attribute' => 'location_label'], 'contactFormLocationValue' => ['group' => 'contact_info', 'attribute' => 'location_value'], // Form Labels 'contactFormFullnamePlaceholder' => ['group' => 'form_labels', 'attribute' => 'fullname_placeholder'], 'contactFormCompanyPlaceholder' => ['group' => 'form_labels', 'attribute' => 'company_placeholder'], 'contactFormWhatsappPlaceholder' => ['group' => 'form_labels', 'attribute' => 'whatsapp_placeholder'], 'contactFormEmailPlaceholder' => ['group' => 'form_labels', 'attribute' => 'email_placeholder'], 'contactFormMessagePlaceholder' => ['group' => 'form_labels', 'attribute' => 'message_placeholder'], // Integration 'contactFormWebhookUrl' => ['group' => 'integration', 'attribute' => 'webhook_url'], 'contactFormWebhookMethod' => ['group' => 'integration', 'attribute' => 'webhook_method'], 'contactFormIncludePageUrl' => ['group' => 'integration', 'attribute' => 'include_page_url'], 'contactFormIncludeTimestamp' => ['group' => 'integration', 'attribute' => 'include_timestamp'], // Messages 'contactFormSuccessMessage' => ['group' => 'messages', 'attribute' => 'success_message'], 'contactFormErrorMessage' => ['group' => 'messages', 'attribute' => 'error_message'], 'contactFormSendingMessage' => ['group' => 'messages', 'attribute' => 'sending_message'], 'contactFormValidationRequired' => ['group' => 'messages', 'attribute' => 'validation_required'], 'contactFormValidationEmail' => ['group' => 'messages', 'attribute' => 'validation_email'], // Colors 'contactFormSectionBgColor' => ['group' => 'colors', 'attribute' => 'section_bg_color'], 'contactFormTitleColor' => ['group' => 'colors', 'attribute' => 'title_color'], 'contactFormDescriptionColor' => ['group' => 'colors', 'attribute' => 'description_color'], 'contactFormIconColor' => ['group' => 'colors', 'attribute' => 'icon_color'], 'contactFormInfoLabelColor' => ['group' => 'colors', 'attribute' => 'info_label_color'], 'contactFormInfoValueColor' => ['group' => 'colors', 'attribute' => 'info_value_color'], 'contactFormInputBorderColor' => ['group' => 'colors', 'attribute' => 'input_border_color'], 'contactFormInputFocusBorder' => ['group' => 'colors', 'attribute' => 'input_focus_border'], 'contactFormButtonBgColor' => ['group' => 'colors', 'attribute' => 'button_bg_color'], 'contactFormButtonTextColor' => ['group' => 'colors', 'attribute' => 'button_text_color'], 'contactFormButtonHoverBg' => ['group' => 'colors', 'attribute' => 'button_hover_bg'], 'contactFormSuccessBgColor' => ['group' => 'colors', 'attribute' => 'success_bg_color'], 'contactFormSuccessTextColor' => ['group' => 'colors', 'attribute' => 'success_text_color'], 'contactFormErrorBgColor' => ['group' => 'colors', 'attribute' => 'error_bg_color'], 'contactFormErrorTextColor' => ['group' => 'colors', 'attribute' => 'error_text_color'], // Spacing 'contactFormSectionPaddingY' => ['group' => 'spacing', 'attribute' => 'section_padding_y'], 'contactFormSectionMarginTop' => ['group' => 'spacing', 'attribute' => 'section_margin_top'], 'contactFormTitleMarginBottom' => ['group' => 'spacing', 'attribute' => 'title_margin_bottom'], 'contactFormDescriptionMarginBottom' => ['group' => 'spacing', 'attribute' => 'description_margin_bottom'], 'contactFormFormGap' => ['group' => 'spacing', 'attribute' => 'form_gap'], // Visual Effects 'contactFormInputBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'input_border_radius'], 'contactFormButtonBorderRadius' => ['group' => 'visual_effects', 'attribute' => 'button_border_radius'], 'contactFormButtonPadding' => ['group' => 'visual_effects', 'attribute' => 'button_padding'], 'contactFormTransitionDuration' => ['group' => 'visual_effects', 'attribute' => 'transition_duration'], 'contactFormTextareaRows' => ['group' => 'visual_effects', 'attribute' => 'textarea_rows'], ]; } }