'#ffffff', 'bongoto_color_header_bg' => '#ffffff', 'bongoto_color_footer_bg' => '#111111', ]; foreach ( $defaults as $k => $fallback ) { $v = get_theme_mod( $k, null ); if ( $v === '' ) { remove_theme_mod( $k ); } if ( get_theme_mod( $k, '' ) === '' ) { // still empty or missing set_theme_mod( $k, $fallback ); } } }, 20 ); /** * Build the CSS string (variables + selector bindings). */ function bongoto_wc_build_colors_css() : string { $get = function( string $id, string $fallback ) : string { $v = get_theme_mod( $id, $fallback ); return ( is_string( $v ) && $v !== '' ) ? $v : $fallback; }; // Get primary key, falling back to legacy key when primary is empty. $getm = function( string $primary, string $legacy, string $default ) use ( $get ) : string { $v = $get( $primary, '' ); if ( is_string( $v ) && trim( $v ) !== '' ) { return $v; } $v2 = $get( $legacy, '' ); if ( is_string( $v2 ) && trim( $v2 ) !== '' ) { return $v2; } return $default; }; $darken_hex = function( string $hex, float $amount = 0.10 ) : string { $hex = trim( $hex ); if ( ! preg_match( '/^#([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/', $hex ) ) { return $hex; } $h = ltrim( $hex, '#' ); if ( strlen( $h ) === 3 ) { $h = $h[0] . $h[0] . $h[1] . $h[1] . $h[2] . $h[2]; } $r = hexdec( substr( $h, 0, 2 ) ); $g = hexdec( substr( $h, 2, 2 ) ); $b = hexdec( substr( $h, 4, 2 ) ); $r = max( 0, min( 255, (int) round( $r * ( 1 - $amount ) ) ) ); $g = max( 0, min( 255, (int) round( $g * ( 1 - $amount ) ) ) ); $b = max( 0, min( 255, (int) round( $b * ( 1 - $amount ) ) ) ); return sprintf( '#%02x%02x%02x', $r, $g, $b ); }; // Base colors (normal state) $add_to_cart = $getm('bongoto_color_add_to_cart', 'bongoto_woocommerce_color_add_to_cart', '#111111'); $buy_now = $getm('bongoto_color_buy_now', 'bongoto_woocommerce_color_buy_now', '#ff6a00'); $cart_btn = $getm('bongoto_color_cart_btn', 'bongoto_woocommerce_color_primary', '#111111'); $checkout_btn= $getm('bongoto_color_checkout_btn', 'bongoto_woocommerce_color_checkout', '#111111'); $free_dl = $getm('bongoto_color_free_download', 'bongoto_woocommerce_color_free_download', '#10b981'); $download_now= $getm('bongoto_color_download_now', 'bongoto_woocommerce_color_download_now', '#10b981'); $related_btn = $getm('bongoto_color_related_product', 'bongoto_woocommerce_color_related_product', '#111111'); // Hover colors: user can set exact hover colors via theme_mods. // If empty, we auto-darken the normal color by 10%. $add_to_cart_h = $get( 'bongoto_color_add_to_cart_hover', '' ); $buy_now_h = $get( 'bongoto_color_buy_now_hover', '' ); $cart_btn_h = $get( 'bongoto_color_cart_btn_hover', '' ); $checkout_btn_h= $get( 'bongoto_color_checkout_btn_hover', '' ); $free_dl_h = $get( 'bongoto_color_free_download_hover', '' ); $download_now_h= $get( 'bongoto_color_download_now_hover', '' ); $related_btn_h = $get( 'bongoto_color_related_product_hover', '' ); $vars = [ '--bgt-site-bg' => $get('bongoto_color_site_bg', '#ffffff'), '--bgt-header-bg' => $get('bongoto_color_header_bg', '#ffffff'), '--bgt-header-top-bg' => $get('bongoto_color_header_top_bg', '#f7f7f7'), '--bgt-topbar-bg' => $get('bongoto_color_header_top_bg', '#f7f7f7'), '--bgt-topbar-text' => $get('bongoto_color_header_top_text', '#000000'), '--bgt-site-title' => $get('bongoto_color_site_title', '#111111'), '--bgt-search-box' => $get('bongoto_color_search_box', '#ffffff'), '--bgt-search-btn' => $get('bongoto_color_search_btn', '#111111'), '--bgt-search-btn-hover' => ( $get('bongoto_color_search_btn_hover', '') !== '' ) ? $get('bongoto_color_search_btn_hover', '') : $darken_hex( $get('bongoto_color_search_btn', '#111111') ), '--bgt-cart-icon' => $get('bongoto_color_cart_icon', '#111111'), '--bgt-cart-icon-hover' => ( $get('bongoto_color_cart_icon_hover', '') !== '' ) ? $get('bongoto_color_cart_icon_hover', '') : $darken_hex( $get('bongoto_color_cart_icon', '#111111') ), '--bgt-cart-count-bg' => $get('bongoto_color_cart_count_bg', '#ff2d55'), '--bgt-cart-count-text' => $get('bongoto_color_cart_count_text', '#ffffff'), '--bgt-account-icon' => $get('bongoto_color_account_icon', '#111111'), '--bgt-account-icon-hover' => ( $get('bongoto_color_account_icon_hover', '') !== '' ) ? $get('bongoto_color_account_icon_hover', '') : $darken_hex( $get('bongoto_color_account_icon', '#111111') ), '--bgt-add-to-cart' => $add_to_cart, '--bgt-buy-now' => $buy_now, '--bgt-cart-btn' => $cart_btn, '--bgt-checkout-btn' => $checkout_btn, '--bgt-free-download' => $free_dl, '--bgt-download-now' => $download_now, '--bgt-related-product' => $related_btn, '--bgt-add-to-cart-hover' => ( $add_to_cart_h !== '' ) ? $add_to_cart_h : $darken_hex( $add_to_cart ), '--bgt-buy-now-hover' => ( $buy_now_h !== '' ) ? $buy_now_h : $darken_hex( $buy_now ), '--bgt-cart-btn-hover' => ( $cart_btn_h !== '' ) ? $cart_btn_h : $darken_hex( $cart_btn ), '--bgt-checkout-btn-hover' => ( $checkout_btn_h !== '' ) ? $checkout_btn_h : $darken_hex( $checkout_btn ), '--bgt-free-download-hover'=> ( $free_dl_h !== '' ) ? $free_dl_h : $darken_hex( $free_dl ), '--bgt-download-now-hover' => ( $download_now_h !== '' ) ? $download_now_h : $darken_hex( $download_now ), '--bgt-related-product-hover'=> ( $related_btn_h !== '' ) ? $related_btn_h : $darken_hex( $related_btn ), '--bt-color-add-to-cart' => $add_to_cart, '--bt-color-buy-now' => $buy_now, '--bt-color-checkout' => $checkout_btn, '--bt-color-accent' => $add_to_cart, '--bt-color-accent-hover' => ( $add_to_cart_h !== '' ) ? $add_to_cart_h : $darken_hex( $add_to_cart ), '--bt-color-add-to-cart-hover' => ( $add_to_cart_h !== '' ) ? $add_to_cart_h : $darken_hex( $add_to_cart ), '--bt-color-buy-now-hover' => ( $buy_now_h !== '' ) ? $buy_now_h : $darken_hex( $buy_now ), '--bt-color-checkout-hover' => ( $checkout_btn_h !== '' ) ? $checkout_btn_h : $darken_hex( $checkout_btn ), '--bgt-footer-bg' => $get('bongoto_color_footer_bg', '#111111'), '--bgt-footer-text' => $get('bongoto_color_footer_text', '#d9d9d9'), '--bgt-copyright-bg' => $get('bongoto_color_copyright_bg', '#0b0b0b'), '--bgt-copyright-text' => $get('bongoto_color_copyright_text', '#d9d9d9'), ]; $css = ":root{"; foreach ( $vars as $k => $v ) { $css .= $k . ":" . esc_html( $v ) . ";"; } $css .= "}"; // Base + core colors $css .= "body{background:var(--bgt-site-bg)!important;}"; // Header backgrounds $css .= ".bt-header, .bt-header-inner, header.site-header, .site-header{background:var(--bgt-header-bg)!important;}"; $css .= ".bt-header-search--mobile{background:var(--bgt-header-bg)!important;}"; $css .= ".header-top, .topbar, .site-header .topbar, .bt-header-top{background:var(--bgt-header-top-bg)!important;}"; // Site title / logo text $css .= ".site-title, .site-title a, .bt-logo a, .bt-logo-text, .bt-branding a, .navbar-brand, .logo a{color:var(--bgt-site-title)!important;}"; // Search box + button $css .= "input[type='search'], .search-field, .bt-header-search input[type='search'], .bt-header-search .search-field{background:var(--bgt-search-box)!important;}"; $css .= "button.search-submit, .search-submit, .bt-header-search button, .bongoto-search-btn, .bt-search-btn{background:var(--bgt-search-btn)!important;border-color:var(--bgt-search-btn)!important;color:#fff!important;}"; $css .= "button.search-submit:hover, .search-submit:hover, .bt-header-search button:hover, .bongoto-search-btn:hover, .bt-search-btn:hover{background:var(--bgt-search-btn-hover)!important;border-color:var(--bgt-search-btn-hover)!important;color:#fff!important;}"; // Cart + account icons (support SVG icons AND Dashicons fallback) // Some header variants use .bt-cart-icon / .bt-account-icon (so include them too). $css .= ".bt-cart-link, .bt-cart-icon, .bt-cart-link i, .bt-cart-icon i, .bt-cart-link .dashicons, .bt-cart-icon .dashicons, .bt-cart-link svg, .bt-cart-icon svg, .bt-cart-link svg *, .bt-cart-icon svg *{color:var(--bgt-cart-icon)!important;fill:var(--bgt-cart-icon)!important;stroke:var(--bgt-cart-icon)!important;}"; $css .= ".bt-cart-link:hover, .bt-cart-icon:hover, .bt-cart-link:hover i, .bt-cart-icon:hover i, .bt-cart-link:hover .dashicons, .bt-cart-icon:hover .dashicons, .bt-cart-link:hover svg, .bt-cart-icon:hover svg, .bt-cart-link:hover svg *, .bt-cart-icon:hover svg *{color:var(--bgt-cart-icon-hover)!important;fill:var(--bgt-cart-icon-hover)!important;stroke:var(--bgt-cart-icon-hover)!important;}"; $css .= ".bt-account-link, .bt-account-icon, .bt-account-link i, .bt-account-icon i, .bt-account-link .dashicons, .bt-account-icon .dashicons, .bt-account-link svg, .bt-account-icon svg, .bt-account-link svg *, .bt-account-icon svg *{color:var(--bgt-account-icon)!important;fill:var(--bgt-account-icon)!important;stroke:var(--bgt-account-icon)!important;}"; $css .= ".bt-account-link:hover, .bt-account-icon:hover, .bt-account-link:hover i, .bt-account-icon:hover i, .bt-account-link:hover .dashicons, .bt-account-icon:hover .dashicons, .bt-account-link:hover svg, .bt-account-icon:hover svg, .bt-account-link:hover svg *, .bt-account-icon:hover svg *{color:var(--bgt-account-icon-hover)!important;fill:var(--bgt-account-icon-hover)!important;stroke:var(--bgt-account-icon-hover)!important;}"; // Cart count badge $css .= ".bt-cart-count, .cart-count, .mini-cart-count{background:var(--bgt-cart-count-bg)!important;color:var(--bgt-cart-count-text)!important;}"; // Bridge icon variables for components that use internal tokens (cart.css / header styles). $css .= ".bt-header-cart{--bt-cart-color:var(--bgt-cart-icon);--bt-cart-accent:var(--bgt-cart-icon-hover);}"; $css .= ".bt-header-account .bt-account-link{color:var(--bgt-account-icon)!important;}"; $css .= ".bt-header-account .bt-account-link:hover{color:var(--bgt-account-icon-hover)!important;}"; // Buttons - Add to cart / Buy now / Cart / Checkout // Add to cart (shop, home widgets, single product) // Buttons - Add to cart / Buy now / Cart / Checkout // Add to cart (shop, home widgets, single product) - cover common Woo selectors // Single add to cart (only) $css .= ".single-product form.cart .single_add_to_cart_button, .single-product form.cart button[name='add-to-cart'], .woocommerce a.button.add_to_cart_button, .woocommerce button.button.add_to_cart_button, .woocommerce a.button.product_type_simple, .woocommerce button.button.alt.add_to_cart_button, .woocommerce a.button.ajax_add_to_cart, .wp-block-button__link.add_to_cart_button{background:var(--bgt-add-to-cart)!important;border-color:var(--bgt-add-to-cart)!important;color:#fff!important;}"; $css .= ".single-product form.cart .single_add_to_cart_button:hover, .single-product form.cart button[name='add-to-cart']:hover, .woocommerce a.button.add_to_cart_button:hover, .woocommerce button.button.add_to_cart_button:hover, .woocommerce a.button.product_type_simple:hover, .woocommerce button.button.alt.add_to_cart_button:hover, .woocommerce a.button.ajax_add_to_cart:hover, .wp-block-button__link.add_to_cart_button:hover{background:var(--bgt-add-to-cart-hover)!important;border-color:var(--bgt-add-to-cart-hover)!important;color:#fff!important;}"; // Primary button defaults across Woo (keep broad coverage, but DO NOT override our special buttons) $css .= ".woocommerce ul.products li.product .button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button), .woocommerce a.button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button), .woocommerce button.button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button), .woocommerce input.button, .woocommerce #respond input#submit{background:var(--bgt-add-to-cart)!important;border-color:var(--bgt-add-to-cart)!important;color:#fff!important;}"; $css .= ".woocommerce ul.products li.product .button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button):hover, .woocommerce a.button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button):hover, .woocommerce button.button:not(.bongoto-buy-now):not(.bt-buy-now-single):not(.bt-buy-now):not(.buy-now):not(.bt-free-download-loop):not(.bt-free-download-single):not(.bt-related-products):not(.bt-related-btn):not(.checkout-button):hover, .woocommerce input.button:hover, .woocommerce #respond input#submit:hover{background:var(--bgt-add-to-cart-hover)!important;border-color:var(--bgt-add-to-cart-hover)!important;color:#fff!important;}"; // Buy now (theme custom) // Buy now (theme custom) - cover different theme classes // Buy now (must be stronger than .woocommerce a.button rules) $css .= ".woocommerce .bongoto-buy-now, .woocommerce a.bongoto-buy-now, .woocommerce a.button.bongoto-buy-now, .woocommerce button.bongoto-buy-now, .woocommerce .bt-buy-now-single, .woocommerce a.bt-buy-now-single, .woocommerce .bt-buy-now, .woocommerce a.bt-buy-now, .woocommerce .buy-now, .woocommerce a.buy-now, a.button.bt-buy-now, button.bt-buy-now, a.button.buy-now, button.buy-now{background:var(--bgt-buy-now)!important;border-color:var(--bgt-buy-now)!important;color:#fff!important;}"; $css .= ".woocommerce .bongoto-buy-now:hover, .woocommerce a.bongoto-buy-now:hover, .woocommerce a.button.bongoto-buy-now:hover, .woocommerce button.bongoto-buy-now:hover, .woocommerce .bt-buy-now-single:hover, .woocommerce a.bt-buy-now-single:hover, .woocommerce .bt-buy-now:hover, .woocommerce a.bt-buy-now:hover, .woocommerce .buy-now:hover, .woocommerce a.buy-now:hover, a.button.bt-buy-now:hover, button.bt-buy-now:hover, a.button.buy-now:hover, button.buy-now:hover{background:var(--bgt-buy-now-hover)!important;border-color:var(--bgt-buy-now-hover)!important;color:#fff!important;}"; // Cart page button: Proceed to Checkout // Cart page button: Proceed to Checkout // Cart page button: Proceed to Checkout (classic + blocks) $css .= ".woocommerce-cart .wc-proceed-to-checkout a.checkout-button, .woocommerce-cart .wc-proceed-to-checkout a.button.checkout-button, .woocommerce-cart .wc-block-cart__submit-container a.wc-block-components-button, .woocommerce-cart .wc-block-cart__submit-container .wc-block-components-button{background:var(--bgt-cart-btn)!important;border-color:var(--bgt-cart-btn)!important;color:#fff!important;}"; $css .= ".woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce-cart .wc-proceed-to-checkout a.button.checkout-button:hover, .woocommerce-cart .wc-block-cart__submit-container a.wc-block-components-button:hover, .woocommerce-cart .wc-block-cart__submit-container .wc-block-components-button:hover{background:var(--bgt-cart-btn-hover)!important;border-color:var(--bgt-cart-btn-hover)!important;color:#fff!important;}"; // Checkout page button: Place order // Checkout page button: Place order // Checkout page button: Place order (classic + blocks) $css .= ".woocommerce-checkout #place_order, .woocommerce-checkout button#place_order, .woocommerce-checkout input#place_order, .woocommerce-checkout .woocommerce-checkout-payment button.button, .woocommerce-checkout .wc-block-components-checkout-place-order-button, .woocommerce-checkout .wc-block-components-checkout-place-order-button .wc-block-components-button, .wc-block-checkout__actions_row .wc-block-components-button{background:var(--bgt-checkout-btn)!important;border-color:var(--bgt-checkout-btn)!important;color:#fff!important;}"; // IMPORTANT: override theme rules that use TWO IDs (#payment #place_order) $css .= ".woocommerce #payment #place_order:hover, .woocommerce-page #payment #place_order:hover, .woocommerce-checkout #place_order:hover, .woocommerce-checkout button#place_order:hover, .woocommerce-checkout input#place_order:hover, .woocommerce-checkout .woocommerce-checkout-payment button.button:hover, .woocommerce-checkout .wc-block-components-checkout-place-order-button:hover, .woocommerce-checkout .wc-block-components-checkout-place-order-button .wc-block-components-button:hover, .wc-block-checkout__actions_row .wc-block-components-button:hover{background:var(--bgt-checkout-btn-hover)!important;border-color:var(--bgt-checkout-btn-hover)!important;color:#fff!important;}"; // Checkout button (cart page) hover (override theme rule .woocommerce a.checkout-button) $css .= ".woocommerce a.checkout-button:hover, .woocommerce button.checkout-button:hover{background:var(--bgt-cart-btn-hover)!important;border-color:var(--bgt-cart-btn-hover)!important;color:#fff!important;}"; // Mini cart buttons $css .= ".woocommerce-mini-cart__buttons a.button.wc-forward{background:var(--bgt-cart-btn)!important;border-color:var(--bgt-cart-btn)!important;color:#fff!important;}"; $css .= ".woocommerce-mini-cart__buttons a.button.wc-forward:hover{background:var(--bgt-cart-btn-hover)!important;border-color:var(--bgt-cart-btn-hover)!important;color:#fff!important;}"; $css .= ".woocommerce-mini-cart__buttons a.checkout{background:var(--bgt-checkout-btn)!important;border-color:var(--bgt-checkout-btn)!important;color:#fff!important;}"; $css .= ".woocommerce-mini-cart__buttons a.checkout:hover{background:var(--bgt-checkout-btn-hover)!important;border-color:var(--bgt-checkout-btn-hover)!important;color:#fff!important;}"; // Footer (ONLY site footer; avoid styling