'; // Header with environment badge. echo '
'; echo '
'; echo '
'; echo '' . esc_html__( 'Environment Status', '365i-environment-indicator' ) . ''; echo '
'; echo ''; echo esc_html( $label ); echo ''; echo '
'; echo '
'; echo '
'; echo '
'; // System information grid. echo '
'; echo '
'; // Detection method. echo '
'; echo '
'; echo ''; echo '' . esc_html__( 'Detection', '365i-environment-indicator' ) . ''; echo '
'; echo '
'; if ( empty( $settings['auto_detect'] ) ) { echo esc_html__( 'Manual Selection', '365i-environment-indicator' ); } else { echo esc_html( $source ); } echo '
'; echo '
'; // Site URL. echo '
'; echo '
'; echo ''; echo '' . esc_html__( 'Site URL', '365i-environment-indicator' ) . ''; echo '
'; echo '
' . esc_html( wp_parse_url( get_home_url(), PHP_URL_HOST ) ) . '
'; echo '
'; // WordPress version. echo '
'; echo '
'; echo ''; echo '' . esc_html__( 'WordPress', '365i-environment-indicator' ) . ''; echo '
'; echo '
Version ' . esc_html( get_bloginfo( 'version' ) ) . '
'; echo '
'; // PHP version. echo '
'; echo '
'; echo ''; echo '' . esc_html__( 'PHP', '365i-environment-indicator' ) . ''; echo '
'; echo '
Version ' . esc_html( phpversion() ) . '
'; echo '
'; echo '
'; // .i365ei-info-grid echo '
'; // .i365ei-widget-body // Quick actions. if ( current_user_can( 'manage_options' ) ) { $settings_url = i365ei_is_network_active() ? network_admin_url( 'settings.php?page=365i-environment-indicator' ) : admin_url( 'options-general.php?page=365i-environment-indicator' ); echo ''; } echo ''; } /** * Adjust color brightness for gradient effect. * * @param string $hex Hex color code. * @param int $steps Steps to adjust (-255 to 255). * @return string Adjusted hex color. */ function i365ei_adjust_color_brightness( $hex, $steps ) { $hex = str_replace( '#', '', $hex ); if ( strlen( $hex ) === 3 ) { $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 ); } $r = hexdec( substr( $hex, 0, 2 ) ); $g = hexdec( substr( $hex, 2, 2 ) ); $b = hexdec( substr( $hex, 4, 2 ) ); $r = max( 0, min( 255, $r + $steps ) ); $g = max( 0, min( 255, $g + $steps ) ); $b = max( 0, min( 255, $b + $steps ) ); return '#' . str_pad( dechex( $r ), 2, '0', STR_PAD_LEFT ) . str_pad( dechex( $g ), 2, '0', STR_PAD_LEFT ) . str_pad( dechex( $b ), 2, '0', STR_PAD_LEFT ); }