Components -> Hover color * */ if ( ! defined( 'ABSPATH' ) ) exit; if ( ! function_exists( 'tbkkt_hover_color_is_valid_token' ) ) : function tbkkt_hover_color_is_valid_token( string $value ): bool { $value = trim( $value ); if ( $value === '' ) return false; if ( preg_match( '/^#([0-9a-f]{3}|[0-9a-f]{6})$/i', $value ) ) return true; if ( preg_match( '/^(rgb|hsl)a?\(/i', $value ) ) return true; if ( preg_match( '/^var\\(\\s*--wp--preset--color--/i', $value ) ) return true; return (bool) preg_match( '/^[a-z]{3,40}$/i', $value ); } endif; if ( ! function_exists( 'tbkkt_hover_color_normalize_token' ) ) : function tbkkt_hover_color_normalize_token( string $value ): string { $value = trim( $value ); if ( $value === '' ) return ''; if ( preg_match( '/^var\\(/i', $value ) ) return $value; if ( preg_match( '/^#([0-9a-f]{3}|[0-9a-f]{6})$/i', $value ) ) return $value; if ( preg_match( '/^(rgb|hsl)a?\\(/i', $value ) ) return $value; if ( preg_match( '/^[a-z0-9]+(?:-[a-z0-9]+)*$/i', $value ) ) : return 'var(--wp--preset--color--' . strtolower( $value ) . ')'; endif; if ( preg_match( '/^[a-z]{3,40}$/i', $value ) ) return $value; return ''; } endif; if ( ! function_exists( 'tbkkt_hover_color_class_names' ) ) : function tbkkt_hover_color_class_names( bool $has_hover_text, bool $has_hover_bg ): array { $classes = array(); if ( $has_hover_text ) : $classes[] = 'tbkkt-has-text-color-hover'; endif; if ( $has_hover_bg ) : $classes[] = 'tbkkt-has-background-hover'; endif; return $classes; } endif; if ( ! function_exists( 'tbkkt_hover_color_build_style_fragment' ) ) : function tbkkt_hover_color_build_style_fragment( string $hover_text_raw, string $hover_bg_raw ): string { $text = tbkkt_hover_color_normalize_token( $hover_text_raw ); $bg = tbkkt_hover_color_normalize_token( $hover_bg_raw ); $parts = array(); if ( tbkkt_hover_color_is_valid_token( $text ) ) : $parts[] = '--tbkkt--hover-color--text-color:' . esc_attr( $text ) . ';'; endif; if ( tbkkt_hover_color_is_valid_token( $bg ) ) : $parts[] = '--tbkkt--hover-color--background-color:' . esc_attr( $bg ) . ';'; endif; return implode( '', $parts ); } endif;