Javier Rodriguez

Menu

inc-theme-editor.php

FRAMEWORK 2024-05-31

<?php
/**
 * functions/inc-theme-editor.php
 * 
 * Register Menus
 * 
 * @author JJROD Framework
 * @see https://docs.jjrod.com
 * @version 1.0
 */

function tabor_add_colors_and_gradients() {

    $colors = array(
        'clr-1'   => '#6a7580',
        'clr-1-op'   => '#6a75804D',
        'clr-2'   => '#00b79c',
        'clr-2-op'   => '#00b79c4D',
        'clr-3'   => '#3b428d',
        'clr-3-op'   => '#3b428d4D',
    );

    // Block Editor Palette.
    $editor_color_palette = array(
        array(
            'name' => esc_attr__( 'Gray', 'jjrod' ),
            'slug' => 'clr-1',
            'color' => $colors[ 'clr-1' ],
        ),

        array(
            'name' => esc_attr__( 'Gray Opacity', 'jjrod' ),
            'slug' => 'clr-1-op',
            'color' => $colors[ 'clr-1-op' ],
        ),

        array(
            'name' => esc_attr__( 'Green', 'jjrod' ),
            'slug' => 'clr-2',
            'color' => $colors[ 'clr-2' ],
        ),

        array(
            'name' => esc_attr__( 'Green Opacity', 'jjrod' ),
            'slug' => 'clr-2-op',
            'color' => $colors[ 'clr-2-op' ],
        ),

        array(
            'name' => esc_attr__( 'Purple', 'jjrod' ),
            'slug' => 'clr-3',
            'color' => $colors[ 'clr-3' ],
        ),

        array(
            'name' => esc_attr__( 'Purple Opacity', 'jjrod' ),
            'slug' => 'clr-3-op',
            'color' => $colors[ 'clr-3-op' ],
        ),

        array(
            'name' => esc_attr__( 'Brand White', 'jjrod' ),
            'slug' => 'white',
            'color' => '#ffffff',
        ),

        array(
            'name' => esc_attr__( 'Brand White', 'jjrod' ),
            'slug' => 'black',
            'color' => '#000000',
        ),
    );

    add_theme_support( 'editor-color-palette', $editor_color_palette );

    add_theme_support(
        'editor-gradient-presets',
        array(
            array(
                'name'     => __( 'Clr 1 to Clr-2', 'tabor' ),
                'gradient' => 'linear-gradient(60deg, ' . esc_attr( hex_to_rgb( $colors[ 'clr-2' ] ) ) . ' 0%, ' . hex_to_rgb( $colors[ 'clr-3' ] ) . ' 100%)',
                'slug'     => 'clr-2-to-clr-3',
            ),
            // array(
            //     'name'     => __( 'Primary to Tertiary', 'tabor' ),
            //     'gradient' => 'linear-gradient(135deg, ' . esc_attr( hex_to_rgb( $colors[ 'primary' ] ) ) . ' 0%, ' . hex_to_rgb( $colors[ 'tertiary' ] ) . ' 100%)',
            //     'slug'     => 'primary-to-tertiary',
            // ),
            // array(
            //     'name'     => __( 'Secondary to Tertiary', 'tabor' ),
            //     'gradient' => 'linear-gradient(135deg, ' . esc_attr( hex_to_rgb( $colors[ 'secondary' ] ) ) . ' 0%, ' . hex_to_rgb( $colors[ 'tertiary' ] ) . ' 100%)',
            //     'slug'     => 'secondary-to-tertiary',
            // ),
        )
    );

}
add_action( 'after_setup_theme', 'tabor_add_colors_and_gradients' );



// 3. Convert HEX colors to RGB(A)

/**
 * Convert a 3 or 6-digit hexadecimal color to an associative RGB array.
 *
 * @param string $color The color in hex format.
 * @param bool   $opacity Whether to return the RGB color is opaque.
 *
 * @return string
 */
function hex_to_rgb( $color, $opacity = false ) {

    if ( empty( $color ) ) {
        return false;
    }

    if ( '#' === $color[0] ) {
        $color = substr( $color, 1 );
    }

    if ( 6 === strlen( $color ) ) {
        $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
    } elseif ( 3 === strlen( $color ) ) {
        $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
    } else {
        $default                 = \Go\Core\get_default_color_scheme();
        $avaliable_color_schemes = get_available_color_schemes();
        if ( isset( $avaliable_color_schemes[ $default ] ) && isset( $avaliable_color_schemes[ $default ]['primary'] ) ) {
            $default = $avaliable_color_schemes[ $default ]['primary'];
        }
        return $default;
    }

    $rgb = array_map( 'hexdec', $hex );

    if ( $opacity ) {
        if ( abs( $opacity ) > 1 ) {
            $opacity = 1.0;
        }

        $output = 'rgba(' . implode( ',', $rgb ) . ',' . $opacity . ')';

    } else {

        $output = 'rgb(' . implode( ',', $rgb ) . ')';

    }

    return esc_attr( $output );

}