card_open() etc. * * @package Admbud */ if ( ! defined( 'ABSPATH' ) ) { exit; } // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- Variables scoped to this included template file. use Admbud\Colours; /** * Ensure a colour option value is valid for type="color" inputs. * Returns the saved value if non-empty, otherwise the fallback. * Prevents browser warnings about empty values on . */ function admbud_colour_val( string $option, string $fallback = '#000000' ): string { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound -- admbud_ is the plugin prefix. $val = get_option( $option, '' ); return ( $val !== '' && preg_match( '/^#[0-9a-fA-F]{6}$/', $val ) ) ? $val : $fallback; } /** @var \Admbud\Settings $settings */ $primary = esc_attr( admbud_get_option( 'admbud_colours_primary', Colours::DEFAULT_PRIMARY ) ); $secondary = esc_attr( admbud_get_option( 'admbud_colours_secondary', Colours::DEFAULT_SECONDARY ) ); $menu_text = esc_attr( admbud_get_option( 'admbud_colours_menu_text', Colours::DEFAULT_MENU_TEXT ) ); $menu_bg = esc_attr( admbud_get_option( 'admbud_colours_menu_bg', Colours::DEFAULT_MENU_BG ) ); $text_hint_primary = Colours::suggest_text_colour( admbud_get_option( 'admbud_colours_primary', Colours::DEFAULT_PRIMARY ) ); $text_hint_menu_bg = Colours::suggest_text_colour( admbud_get_option( 'admbud_colours_menu_bg', Colours::DEFAULT_MENU_BG ) ); $contrast_menu = Colours::contrast_ratio( admbud_get_option( 'admbud_colours_menu_text', Colours::DEFAULT_MENU_TEXT ), admbud_get_option( 'admbud_colours_menu_bg', Colours::DEFAULT_MENU_BG ) ); $contrast_ok = $contrast_menu >= 4.5; $sidebar_gradient = admbud_get_option( 'admbud_colours_sidebar_gradient', '0' ) === '1'; $menu_item_sep = admbud_get_option( 'admbud_colours_menu_item_sep', '1' ) === '1'; $grad_dir = admbud_get_option( 'admbud_colours_sidebar_grad_dir', Colours::DEFAULT_SIDEBAR_GRAD_DIR ); $grad_from = esc_attr( admbud_get_option( 'admbud_colours_sidebar_grad_from', Colours::DEFAULT_SIDEBAR_GRAD_FROM ) ); $grad_to = esc_attr( admbud_get_option( 'admbud_colours_sidebar_grad_to', Colours::DEFAULT_SIDEBAR_GRAD_TO ) ); $grad_hidden = $sidebar_gradient ? '' : 'ab-hidden'; $directions = [ 'to top left' => '↖', 'to top' => '↑', 'to top right' => '↗', 'to left' => '←', 'to right' => '→', 'to bottom left' => '↙', 'to bottom' => '↓', 'to bottom right' => '↘', ]; $grid_order = [ 'to top left', 'to top', 'to top right', 'to left', null, 'to right', 'to bottom left', 'to bottom', 'to bottom right', ]; $effective_menu_text = admbud_get_option( 'admbud_colours_menu_text', Colours::DEFAULT_MENU_TEXT ); $effective_active_text = admbud_get_option( 'admbud_colours_active_text', Colours::DEFAULT_ACTIVE_TEXT ); $submenu_text_val = admbud_get_option( 'admbud_colours_submenu_text', '' ) ?: $effective_menu_text; $hover_text_val = admbud_get_option( 'admbud_colours_hover_text', '' ) ?: $effective_menu_text; $act_parent_val = admbud_get_option( 'admbud_colours_active_parent_text', '' ) ?: $effective_active_text; $submenu_bg_val = admbud_get_option( 'admbud_colours_submenu_bg', '' ) ?: Colours::DEFAULT_SUBMENU_BG; $submenu_hover_bg_val = admbud_get_option( 'admbud_colours_submenu_hover_bg', '' ) ?: Colours::DEFAULT_SUBMENU_HOVER_BG; $submenu_hover_text_val = admbud_get_option( 'admbud_colours_submenu_hover_text', '' ) ?: Colours::DEFAULT_SUBMENU_HOVER_TEXT; $active_subtab = \Admbud\Settings::get_active_subtab( 'colours', 'presets' ); $active_subtab = in_array( $active_subtab, [ 'presets', 'accent', 'auto-palette', 'menu', 'adminbar', 'content', 'exclusions' ], true ) ? $active_subtab : 'presets'; ?>