<?php
defined( 'ABSPATH' ) || exit;

if ( !class_exists( 'Better_Messages_Customize' ) ):

    class Better_Messages_Customize
    {
        public static function instance()
        {
            static $instance = null;

            if ( null === $instance ) {
                $instance = new Better_Messages_Customize();
            }

            return $instance;
        }

        public function __construct(){
            add_action( 'customize_register',     array( $this, 'customize_register') );
            add_action( 'customize_preview_init', array( $this, 'customizer_live_preview') );
            add_filter('body_class',              array( $this, 'body_class' ) );
        }

        public function customization_link( $autofocus = [] ){
            # http://bpbettermessagesreact.com/wp-admin/customize.php?autofocus[section]=better_messages_mini_widgets

            $args = [
                'url' => Better_Messages()->functions->get_link()
            ];

            if( ! empty($autofocus) ){
                $args['autofocus'] = $autofocus;
            }

            return add_query_arg( $args, admin_url( 'customize.php' ) );
        }

        public function customizer_live_preview(){
            wp_enqueue_script(
                'better-messages-customizer',
                Better_Messages()->url . 'assets/admin/customizer.js',
                array( 'jquery', 'customize-preview' ),
                Better_Messages()->version,
                true
            );
        }

        function customize_register( WP_Customize_Manager $wp_customize ) {
            $wp_customize->add_panel(
                'better_messages',
                array(
                    'title'       => 'Better Messages',
                    'priority'    => 200,
                )
            );

            /**
             * General section
             */
            $wp_customize->add_section(
                'better_messages_general',
                array(
                    'title'    => _x( 'General', 'WP Customizer', 'bp-better-messages' ),
                    'panel'    => 'better_messages',
                    'priority' => 40,
                )
            );

            /**
             * Color mode sections
             */
            $wp_customize->add_section(
                'better_messages_light_mode',
                array(
                    'title'    => _x( 'Light Mode', 'WP Customizer', 'bp-better-messages' ),
                    'panel'    => 'better_messages',
                    'priority' => 40,
                )
            );

            $wp_customize->add_section(
                'better_messages_dark_mode',
                array(
                    'title'    => _x( 'Dark Mode', 'WP Customizer', 'bp-better-messages' ),
                    'panel'    => 'better_messages',
                    'priority' => 40,
                )
            );

            $wp_customize->add_setting(
                'bm-border-radius',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 3
                )
            );

            $wp_customize->add_control(
                'bm-border-radius',
                array(
                    'label'   => _x( 'Messages Window Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 20
                    )
                )
            );

            /**
             * Modern messages border radius
             */
            $wp_customize->add_setting(
                'bm-modern-radius',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 2
                )
            );

            $wp_customize->add_control(
                'bm-modern-radius',
                array(
                    'label'   => _x( 'Modern Messages Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 25
                    )
                )
            );

            /**
             * Modern messages border radius
             */
            $wp_customize->add_setting(
                'bm-avatar-radius',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 2
                )
            );

            $wp_customize->add_control(
                'bm-avatar-radius',
                array(
                    'label'   => _x( 'Avatars Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 25
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-date-enabled',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => true
                )
            );

            $wp_customize->add_control(
                'bm-date-enabled',
                array(
                    'label'   => _x( 'Show Date Labels', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'checkbox',
                )
            );

            /**
             * Modern messages border radius
             */
            $wp_customize->add_setting(
                'bm-date-radius',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 2
                )
            );

            $wp_customize->add_control(
                'bm-date-radius',
                array(
                    'label'   => _x( 'Date Labels Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 25
                    )
                )
            );

            /**
             * Theme
             */
            $wp_customize->add_setting(
                'bm-theme',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 'light'
                )
            );

            $wp_customize->add_control(
                'bm-theme',
                array(
                    'label'   => _x( 'Color scheme', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'radio',
                    'choices' => array(
                        'light' => _x( 'Light', 'WP Customizer', 'bp-better-messages' ),
                        'dark'  => _x( 'Dark', 'WP Customizer', 'bp-better-messages' ),
                    ),
                )
            );

            /**
             * Theme
             */
            $wp_customize->add_setting(
                'bm-show-avatar-group',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => true
                )
            );

            $wp_customize->add_control(
                'bm-show-avatar-group',
                array(
                    'label'   => _x( 'Show avatars in group conversation header', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'checkbox',
                )
            );

            $wp_customize->add_setting(
                'bm-private-sub-name',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 'online'
                )
            );

            $wp_customize->add_control(
                'bm-private-sub-name',
                array(
                    'label'   => _x( 'Subtitle in private conversations', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'radio',
                    'description' => _x( 'What to show under user name in private conversations?', 'WP Customizer', 'bp-better-messages' ),
                    'choices' => array(
                        'online'  => _x( 'Online indicator or last active time (only WebSocket Version)', 'WP Customizer', 'bp-better-messages' ),
                        'subject' => _x( 'Conversation subject', 'WP Customizer', 'bp-better-messages' ),
                        'hide'    => _x( 'Nothing', 'WP Customizer', 'bp-better-messages' )
                    ),
                )
            );

            $wp_customize->add_setting(
                'bm-avatars-list',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 'show'
                )
            );

            $wp_customize->add_control(
                'bm-avatars-list',
                array(
                    'label'   => _x( 'Avatars in messages list', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'radio',
                    'description' => _x( 'Hide avatars if you want to allow messages to have more space in messages list', 'WP Customizer', 'bp-better-messages' ),
                    'choices' => array(
                        'show' => _x( 'Show everywhere', 'WP Customizer', 'bp-better-messages' ),
                        'hide_private'  => _x( 'Hide in private conversations', 'WP Customizer', 'bp-better-messages' ),
                        'hide_groups'  => _x( 'Hide in group conversations', 'WP Customizer', 'bp-better-messages' ),
                        'hide'  => _x( 'Hide everywhere', 'WP Customizer', 'bp-better-messages' ),
                    ),
                )
            );

            /**
             * Theme
             */
            $wp_customize->add_setting(
                'bm-date-position',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => 'message'
                )
            );

            $wp_customize->add_control(
                'bm-date-position',
                array(
                    'label'   => _x( 'Show message sent date', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'radio',
                    'choices' => array(
                        'message' => _x( 'At every single message', 'WP Customizer', 'bp-better-messages' ),
                        'stack'   => _x( 'At the start of messages stack', 'WP Customizer', 'bp-better-messages' ),
                    ),
                )
            );

            $wp_customize->add_setting(
                'bm-time-format',
                array(
                    'section'    => 'better_messages_general',
                    'transport'  => 'postMessage',
                    'default'    => '24'
                )
            );

            $wp_customize->add_control(
                'bm-time-format',
                array(
                    'label'   => _x( 'Time format', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_general',
                    'type'    => 'radio',
                    'choices' => array(
                        '24' => _x( '24-hour time format', 'WP Customizer', 'bp-better-messages' ),
                        '12'   => _x( '12-hour time format', 'WP Customizer', 'bp-better-messages' ),
                    ),
                )
            );

            /**
             * Light mode start
             */
            $wp_customize->add_setting(
                'main-bm-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#21759b'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'main-bm-color',
                    array(
                        'label'   => _x( 'Primary Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-primary-bg
            $wp_customize->add_setting(
                'bm-primary-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-primary-bg',
                    array(
                        'label'   => _x( 'Primary Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-secondary-bg
            $wp_customize->add_setting(
                'bm-secondary-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fafbfc'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-secondary-bg',
                    array(
                        'label'   => _x( 'Secondary Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-hover-bg
            $wp_customize->add_setting(
                'bm-hover-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fafbfc'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-hover-bg',
                    array(
                        'label'   => _x( 'Hover Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-primary-border
            $wp_customize->add_setting(
                'bm-primary-border',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#d7d8db'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-primary-border',
                    array(
                        'label'   => _x( 'Primary Border Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-secondary-border
            $wp_customize->add_setting(
                'bm-secondary-border',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#ebebeb'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-secondary-border',
                    array(
                        'label'   => _x( 'Secondary Border Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-secondary-border
            $wp_customize->add_setting(
                'bm-date-background',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-date-background',
                    array(
                        'label'   => _x( 'Date Background', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-text-color
            $wp_customize->add_setting(
                'bm-text-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-text-color',
                    array(
                        'label'   => _x( 'Primary Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-left-side-nickname
            $wp_customize->add_setting(
                'bm-modern-left-side-nickname',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-nickname',
                    array(
                        'label'   => _x( 'Modern Message: Left Nickname Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-left-side-bg
            $wp_customize->add_setting(
                'bm-modern-left-side-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#e8e8e8'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-bg',
                    array(
                        'label'   => _x( 'Modern Message: Left Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-left-side-color
            $wp_customize->add_setting(
                'bm-modern-left-side-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-color',
                    array(
                        'label'   => _x( 'Modern Message: Left Content Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-right-side-nickname
            $wp_customize->add_setting(
                'bm-modern-right-side-nickname',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#21759b'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-nickname',
                    array(
                        'label'   => _x( 'Modern Message: Right Nickname Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-right-side-bg
            $wp_customize->add_setting(
                'bm-modern-right-side-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#21759b'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-bg',
                    array(
                        'label'   => _x( 'Modern Message: Right Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-modern-right-side-color
            $wp_customize->add_setting(
                'bm-modern-right-side-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-color',
                    array(
                        'label'   => _x( 'Modern Message: Right Content Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-stiky-date-bg
            $wp_customize->add_setting(
                'bm-sticky-date-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-sticky-date-bg',
                    array(
                        'label'   => _x( 'Date Label: Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-stiky-date-color
            $wp_customize->add_setting(
                'bm-sticky-date-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-sticky-date-color',
                    array(
                        'label'   => _x( 'Date Label: Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-tooltip-bg',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-tooltip-bg',
                    array(
                        'label'   => _x( 'Tooltips: Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );

            // bm-stiky-date-color
            $wp_customize->add_setting(
                'bm-tooltip-color',
                array(
                    'section'    => 'better_messages_light_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-tooltip-color',
                    array(
                        'label'   => _x( 'Tooltips: Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_light_mode',
                    )
                )
            );
            /**
             * Light mode end
             */

            /**
             * Dark mode start
             */
            $wp_customize->add_setting(
                'main-bm-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'main-bm-color-dark',
                    array(
                        'label'   => _x( 'Primary Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-primary-bg
            $wp_customize->add_setting(
                'bm-primary-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#181d2c'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-primary-bg-dark',
                    array(
                        'label'   => _x( 'Primary Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-secondary-bg
            $wp_customize->add_setting(
                'bm-secondary-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#1d2333'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-secondary-bg-dark',
                    array(
                        'label'   => _x( 'Secondary Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-hover-bg
            $wp_customize->add_setting(
                'bm-hover-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#1c2338'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-hover-bg-dark',
                    array(
                        'label'   => _x( 'Hover Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-primary-border
            $wp_customize->add_setting(
                'bm-primary-border-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#3f485f'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-primary-border-dark',
                    array(
                        'label'   => _x( 'Primary Border Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-secondary-border
            $wp_customize->add_setting(
                'bm-secondary-border-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#3f485f'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-secondary-border-dark',
                    array(
                        'label'   => _x( 'Secondary Border Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-text-color
            $wp_customize->add_setting(
                'bm-text-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-text-color-dark',
                    array(
                        'label'   => _x( 'Primary Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-left-side-nickname
            $wp_customize->add_setting(
                'bm-modern-left-side-nickname-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-nickname-dark',
                    array(
                        'label'   => _x( 'Modern Message: Left Nickname Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-left-side-bg
            $wp_customize->add_setting(
                'bm-modern-left-side-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#e8e8e8'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-bg-dark',
                    array(
                        'label'   => _x( 'Modern Message: Left Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-left-side-color
            $wp_customize->add_setting(
                'bm-modern-left-side-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-left-side-color-dark',
                    array(
                        'label'   => _x( 'Modern Message: Left Content Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-right-side-nickname
            $wp_customize->add_setting(
                'bm-modern-right-side-nickname-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-nickname-dark',
                    array(
                        'label'   => _x( 'Modern Message: Right Nickname Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-right-side-bg
            $wp_customize->add_setting(
                'bm-modern-right-side-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#404e72'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-bg-dark',
                    array(
                        'label'   => _x( 'Modern Message: Right Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-modern-right-side-color
            $wp_customize->add_setting(
                'bm-modern-right-side-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-modern-right-side-color-dark',
                    array(
                        'label'   => _x( 'Modern Message: Right Content Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-stiky-date-bg
            $wp_customize->add_setting(
                'bm-sticky-date-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#1d2333'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-sticky-date-bg-dark',
                    array(
                        'label'   => _x( 'Date Label: Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-stiky-date-color
            $wp_customize->add_setting(
                'bm-sticky-date-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-sticky-date-color-dark',
                    array(
                        'label'   => _x( 'Date Label: Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-tooltip-bg-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#000'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-tooltip-bg-dark',
                    array(
                        'label'   => _x( 'Tooltips: Background Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );

            // bm-stiky-date-color
            $wp_customize->add_setting(
                'bm-tooltip-color-dark',
                array(
                    'section'    => 'better_messages_dark_mode',
                    'transport'  => 'postMessage',
                    'default'    => '#fff'
                )
            );

            $wp_customize->add_control(
                new WP_Customize_Color_Control(
                    $wp_customize,
                    'bm-tooltip-color-dark',
                    array(
                        'label'   => _x( 'Tooltips: Text Color', 'WP Customizer', 'bp-better-messages' ),
                        'section' => 'better_messages_dark_mode',
                    )
                )
            );
            /** Dark mode end */



            /* Mini Widgets */
            $wp_customize->add_section(
                'better_messages_mini_widgets',
                array(
                    'title'    => _x( 'Mini Widgets & Mini Chats', 'WP Customizer', 'bp-better-messages' ),
                    'panel'    => 'better_messages',
                    'priority' => 40,
                )
            );

            $wp_customize->add_setting(
                'bm-widgets-border-radius',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 7
                )
            );

            $wp_customize->add_control(
                'bm-widgets-border-radius',
                array(
                    'label'   => _x( 'Mini Widgets Window Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 20
                    )
                )
            );


            $wp_customize->add_setting(
                'bm-widgets-button-radius',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 7
                )
            );

            $wp_customize->add_control(
                'bm-widgets-button-radius',
                array(
                    'label'   => _x( 'Mini Chats Buttons Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 20
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-widgets-position',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 'right'
                )
            );

            $wp_customize->add_control(
                'bm-widgets-position',
                array(
                    'label'   => _x( 'Mini widgets position', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type'    => 'radio',
                    'description' => _x( 'Choose where do you want to locate mini widgets and mini chats', 'WP Customizer', 'bp-better-messages' ),
                    'choices' => array(
                        'left' => _x( 'Left side', 'WP Customizer', 'bp-better-messages' ),
                        'right' => _x( 'Right side', 'WP Customizer', 'bp-better-messages' ),
                    ),
                )
            );

            $wp_customize->add_setting(
                'bm-mini-widgets-width',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 320
                )
            );

            $wp_customize->add_control(
                'bm-mini-widgets-width',
                array(
                    'label'   => _x( 'Width of Mini Widgets', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 300
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-mini-widgets-height',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 450
                )
            );

            $wp_customize->add_control(
                'bm-mini-widgets-height',
                array(
                    'label'   => _x( 'Height of Mini Widgets', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 300
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-mini-widgets-indent',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 20
                )
            );

            $wp_customize->add_control(
                'bm-mini-widgets-indent',
                array(
                    'label'   => _x( 'Indent of Mini Widgets', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'description' => _x('Indent of mini widgets from the window side',  'WP Customizer', 'bp-better-messages' ),
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 0
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-mini-widgets-bottom',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 0
                )
            );

            $wp_customize->add_control(
                'bm-mini-widgets-bottom',
                array(
                    //'label'   => _x( 'Indent of Mini Widgets 2', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'description' => _x('Indent of mini widgets from the bottom of window',  'WP Customizer', 'bp-better-messages' ),
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 0
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-mini-chats-width',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 300
                )
            );

            $wp_customize->add_control(
                'bm-mini-chats-width',
                array(
                    'label'   => _x( 'Width of Mini Chat', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 300
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-mini-chats-height',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 450
                )
            );

            $wp_customize->add_control(
                'bm-mini-chats-height',
                array(
                    'label'   => _x( 'Height of Mini Chat', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 450
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-bubble-size',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 56
                )
            );

            $wp_customize->add_control(
                'bm-bubble-size',
                array(
                    'label'   => _x( 'Bubble Button Size', 'WP Customizer', 'bp-better-messages' ),
                    'description' => _x( 'Size of the floating bubble button (in pixels)', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 40,
                        'max' => 80
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-bubble-head-size',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 48
                )
            );

            $wp_customize->add_control(
                'bm-bubble-head-size',
                array(
                    'label'   => _x( 'Chat Head Size', 'WP Customizer', 'bp-better-messages' ),
                    'description' => _x( 'Size of the chat head avatar bubbles (in pixels)', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'number',
                    'input_attrs' => array(
                        'min' => 30,
                        'max' => 70
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-bubble-radius',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 50
                )
            );

            $wp_customize->add_control(
                'bm-bubble-radius',
                array(
                    'label'   => _x( 'Bubble Button Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'description' => _x( 'Border radius of the floating bubble button', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 50
                    )
                )
            );

            $wp_customize->add_setting(
                'bm-bubble-head-radius',
                array(
                    'section'    => 'better_messages_mini_widgets',
                    'transport'  => 'postMessage',
                    'default'    => 50
                )
            );

            $wp_customize->add_control(
                'bm-bubble-head-radius',
                array(
                    'label'   => _x( 'Chat Head Roundness', 'WP Customizer', 'bp-better-messages' ),
                    'description' => _x( 'Border radius of the chat head avatar bubbles', 'WP Customizer', 'bp-better-messages' ),
                    'section' => 'better_messages_mini_widgets',
                    'type' => 'range',
                    'input_attrs' => array(
                        'min' => 0,
                        'step' => 1,
                        'max' => 50
                    )
                )
            );

        }


        public function header_output() {
            ob_start();
            $mod = get_theme_mod('bm-show-avatar-group', true);
            if( $mod !== true && ! is_customize_preview() ) {
                echo '.bp-messages-wrap .thread-info .avatar-group{display: none !important}.bp-messages-wrap .thread-info .avatar-group+.thread-info-data{max-width: 100% !important}';
            }

            // Skip position CSS in customize preview — customizer.js handles it
            // dynamically so toggling between left/right takes effect immediately.
            if ( ! is_customize_preview() ) {
                $mod = get_theme_mod('bm-widgets-position', 'right');
                if( $mod === 'left' ){
                    echo '.bp-better-messages-list{right: auto;left:var(--bm-mini-widgets-offset)}.bp-better-messages-mini{left:70px;right: auto}.bp-better-messages-list+.bp-better-messages-mini{right:auto;left:var(--bm-mini-chats-offset);}';

                    if ( Better_Messages()->settings['miniWidgetsStyle'] === 'bubble' ) {
                        echo '.bp-better-messages-list.bm-widget-bubble .bm-bubble-panel{right:auto;left:0;transform-origin:bottom left}';
                        echo '.bp-better-messages-list.bm-widget-bubble+.bp-better-messages-mini{left:calc(var(--bm-bubble-size, 56px) + var(--bm-mini-widgets-offset, 70px) + 10px);right:auto}';
                        echo '.bp-better-messages-list.bm-widget-bubble.bm-bubble-open+.bp-better-messages-mini{left:calc(var(--bm-mini-widgets-width, 320px) + var(--bm-mini-widgets-offset, 70px) + 10px);right:auto}';
                    }
                }
            }


            $mod = get_theme_mod('bm-date-enabled', true);

            if( ! $mod ){
                echo '.bp-messages-wrap .bm-messages-list .bm-list .bm-sticky-date{display:none}';
            }

            echo ':root{';

            $mod = get_theme_mod('main-bm-color', '#21759b');
            echo '--main-bm-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-border-radius', 3);
            echo '--bm-border-radius:' . $mod . 'px;';

            $mod = get_theme_mod('bm-widgets-border-radius', 7);
            echo '--bm-mini-chats-border-radius:' . $mod . 'px;';

            $mod = get_theme_mod('bm-widgets-button-radius', 7);
            echo '--bm-widgets-button-radius:' . $mod . 'px;';

            $mod = get_theme_mod('bm-mini-chats-width', 300 );
            echo '--bm-mini-chats-width:'. $mod . 'px;';

            $mod = get_theme_mod('bm-mini-chats-height', 450 );
            echo '--bm-mini-chats-height:'. $mod . 'px;';

            $mod = get_theme_mod('bm-mini-widgets-width', 320 );
            echo '--bm-mini-widgets-width:'. $mod . 'px;';

            $mod = get_theme_mod('bm-mini-widgets-height', 450 );
            echo '--bm-mini-widgets-height:'. $mod . 'px;';

            $mod = get_theme_mod('bm-mini-widgets-indent', 20 );
            echo '--bm-mini-widgets-offset:'. $mod . 'px;';

            $mod = get_theme_mod('bm-mini-widgets-bottom', 0 );
            echo '--bm-mini-widgets-offset-bottom:'. $mod . 'px;';

            $mod = get_theme_mod('bm-bubble-size', 56 );
            echo '--bm-bubble-size:'. $mod . 'px;';

            $mod = get_theme_mod('bm-bubble-head-size', 48 );
            echo '--bm-bubble-head-size:'. $mod . 'px;';

            $mod = get_theme_mod('bm-bubble-radius', 50 );
            echo '--bm-bubble-radius:'. $mod . '%;';

            $mod = get_theme_mod('bm-bubble-head-radius', 50 );
            echo '--bm-bubble-head-radius:'. $mod . '%;';

            $mod = get_theme_mod('bm-modern-radius', 2 );
            echo '--bm-message-border-radius:'. $mod . 'px;';

            $mod = get_theme_mod('bm-avatar-radius', 2 );
            echo '--bm-avatar-radius:'. $mod . 'px;';

            $mod = get_theme_mod('bm-date-radius', 3 );
            echo '--bm-date-radius:'. $mod . 'px;';

            /* LIGHT MODE START */
            $mod = get_theme_mod('bm-primary-bg', '#fff');
            echo '--bm-bg-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-secondary-bg', '#fafbfc');
            echo '--bm-bg-secondary:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-hover-bg', '#fafbfc');
            echo '--bm-hover-bg:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-primary-border', '#d7d8db');
            echo '--bm-border-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-secondary-border', '#ebebeb');
            echo '--bm-border-secondary-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-text-color', '#000');
            echo '--bm-text-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-nickname', '#000');
            echo '--left-message-nickname-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-bg', '#e8e8e8');
            echo '--left-message-bg-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-color', '#000');
            echo '--left-message-text-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-nickname', '#21759b');
            echo '--right-message-nickname-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-bg', '#21759b');
            echo '--right-message-bg-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-color', '#fff');
            echo '--right-message-text-color:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-sticky-date-bg', '#000');
            echo '--bm-sticky-date-bg:'. $mod . ';';

            $mod = get_theme_mod('bm-sticky-date-color', '#fff');
            echo '--bm-sticky-date-color:'. $mod . ';';

            $mod = get_theme_mod('bm-tooltip-bg', '#000');
            echo '--bm-tooltip-bg:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-tooltip-color', '#fff');
            echo '--bm-tooltip-color:'. $this->hex2rgba($mod) . ';';
            /* LIGHT MODE END */
            echo '}';

            /* DARK MODE START */

            echo 'body.bm-messages-dark{';

            $mod = get_theme_mod('bm-primary-bg-dark', '#181d2c');
            echo '--bm-bg-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-secondary-bg-dark', '#1d2333');
            echo '--bm-bg-secondary-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('main-bm-color-dark', '#fff');
            echo '--main-bm-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-nickname-dark', '#fff');
            echo '--left-message-nickname-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-bg-dark', '#e8e8e8');
            echo '--left-message-bg-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-left-side-color-dark', '#000');
            echo '--left-message-text-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-nickname-dark', '#fff');
            echo '--right-message-nickname-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-hover-bg-dark', '#1c2338');
            echo '--bm-hover-bg-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-bg-dark', '#404e72');
            echo '--right-message-bg-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-modern-right-side-color-dark', '#fff');
            echo '--right-message-text-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-sticky-date-bg-dark', '#1d2333');
            echo '--bm-sticky-date-bg-dark:'. $mod . ';';

            $mod = get_theme_mod('bm-sticky-date-color-dark', '#fff');
            echo '--bm-sticky-date-color-dark:'. $mod . ';';

            $mod = get_theme_mod('bm-tooltip-bg-dark', '#000');
            echo '--bm-tooltip-bg-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-tooltip-color-dark', '#fff');
            echo '--bm-tooltip-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-primary-border-dark', '#3f485f');
            echo '--bm-border-color-dark:'. $this->hex2rgba($mod) . ';';

            $mod = get_theme_mod('bm-secondary-border-dark', '#3f485f');
            echo '--bm-border-secondary-color-dark:'. $this->hex2rgba($mod) . ';';

            echo '}';
            /* DARK MODE END */
            return ob_get_clean();
        }

        public function body_class( $classes = [] ){
            $mod = get_theme_mod('bm-theme', 'light');

            if( $mod === 'dark' ) {
                $classes = array_merge($classes, array('bm-messages-dark'));
            } else {
                $classes = array_merge($classes, array('bm-messages-light'));
            }

            if ( ( Better_Messages()->settings['miniWidgetsStyle'] ?? 'classic' ) === 'bubble' ) {
                $has_mini_widget = false;

                if ( is_user_logged_in() || Better_Messages()->guests->guest_access_enabled() ) {
                    $script_variables = Better_Messages()->script_variables;

                    $threads = isset( $script_variables['miniMessages'] ) && $script_variables['miniMessages'] === '1';
                    $friends = is_user_logged_in() && isset( $script_variables['miniFriends'] ) && $script_variables['miniFriends'] === '1';
                    $groups  = is_user_logged_in() && isset( $script_variables['miniGroups'] ) && $script_variables['miniGroups'] === '1';
                    $courses = is_user_logged_in() && isset( $script_variables['miniCourses'] ) && $script_variables['miniCourses'] === '1';

                    $has_mini_widget = ( $threads || $friends || $groups || $courses );
                }

                if ( $has_mini_widget ) {
                    $classes[] = 'bm-bubble-mode';
                    $position = get_theme_mod('bm-widgets-position', 'right');
                    $classes[] = 'bm-bubble-position-' . ( $position === 'left' ? 'left' : 'right' );
                }
            }

            return $classes;
        }


        public function hex2rgba($color) {
            $default = '0,0,0';

            //Return default if no color provided
            if(empty($color))
                return $default;

            //Sanitize $color if "#" is provided
            if ($color[0] == '#' ) {
                $color = substr( $color, 1 );
            }

            //Check if color has 6 or 3 characters and get values
            if (strlen($color) == 6) {
                $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
            } elseif ( strlen( $color ) == 3 ) {
                $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
            } else {
                return $default;
            }

            //Convert hexadec to rgb
            $rgb =  array_map('hexdec', $hex);

            //Return rgb(a) color string
            return implode(",",$rgb);
        }
    }

endif;

/**
 * @return Better_Messages_Customize instance | null
 */
function Better_Messages_Customize()
{
    return Better_Messages_Customize::instance();
}
