<?php
/**
 * Add an element to fusion-builder.
 *
 * @package fusion-builder
 * @since 1.0
 */

if ( fusion_is_element_enabled( 'fusion_social_links' ) ) {

	if ( ! class_exists( 'FusionSC_SocialLinks' ) ) {
		/**
		 * Shortcode class.
		 *
		 * @since 1.0
		 */
		class FusionSC_SocialLinks extends Fusion_Element {

			/**
			 * The internal container counter.
			 *
			 * @access private
			 * @since 3.3
			 * @var int
			 */
			private $counter = 1;

			/**
			 * Constructor.
			 *
			 * @access public
			 * @since 1.0
			 */
			public function __construct() {
				parent::__construct();
				add_filter( 'fusion_attr_social-links-shortcode', [ $this, 'attr' ] );
				add_filter( 'fusion_attr_social-links-shortcode-social-networks', [ $this, 'social_networks_attr' ] );
				add_filter( 'fusion_attr_social-links-shortcode-icon', [ $this, 'icon_attr' ] );

				add_shortcode( 'fusion_social_links', [ $this, 'render' ] );
			}

			/**
			 * Gets the default values.
			 *
			 * @static
			 * @access public
			 * @since 2.0.0
			 * @return array
			 */
			public static function get_element_defaults() {
				$fusion_settings = awb_get_fusion_settings();

				return [
					'hide_on_mobile'         => fusion_builder_default_visibility( 'string' ),
					'sticky_display'         => '',
					'class'                  => '',
					'id'                     => '',
					'font_size'              => $fusion_settings->get( 'social_links_font_size' ),
					'icons_boxed'            => ( 1 == $fusion_settings->get( 'social_links_boxed' ) ) ? 'yes' : $fusion_settings->get( 'social_links_boxed' ), // phpcs:ignore Universal.Operators.StrictComparisons
					'icons_boxed_radius'     => fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_boxed_radius' ) ),
					'color_type'             => $fusion_settings->get( 'social_links_color_type' ),
					'icon_colors'            => $fusion_settings->get( 'social_links_icon_color' ),
					'box_colors'             => $fusion_settings->get( 'social_links_box_color' ),
					'icon_order'             => '',
					'show_custom'            => 'no',
					'alignment'              => '',
					'alignment_medium'       => '',
					'alignment_small'        => '',
					'tooltip_placement'      => strtolower( $fusion_settings->get( 'social_links_tooltip_placement' ) ),
					'facebook'               => '',
					'tiktok'                 => '',
					'twitch'                 => '',
					'twitter'                => '',
					'instagram'              => '',
					'linkedin'               => '',
					'dribbble'               => '',
					'rss'                    => '',
					'youtube'                => '',
					'pinterest'              => '',
					'flickr'                 => '',
					'vimeo'                  => '',
					'tumblr'                 => '',
					'discord'                => '',
					'digg'                   => '',
					'blogger'                => '',
					'skype'                  => '',
					'myspace'                => '',
					'deviantart'             => '',
					'yahoo'                  => '',
					'reddit'                 => '',
					'forrst'                 => '',
					'paypal'                 => '',
					'dropbox'                => '',
					'soundcloud'             => '',
					'snapchat'               => '',
					'spotify'                => '',
					'vk'                     => '',
					'wechat'                 => '',
					'whatsapp'               => '',
					'telegram'               => '',
					'teams'                  => '',
					'xing'                   => '',
					'yelp'                   => '',
					'github'                 => '',
					'mastodon'               => '',
					'bluesky'                => '',
					'threads'                => '',
					'email'                  => '',
					'phone'                  => '',

					'icon_colors_hover'      => $fusion_settings->get( 'social_links_icon_color_hover' ),
					'box_colors_hover'       => $fusion_settings->get( 'social_links_box_color_hover' ),

					'box_padding_top'        => '',
					'box_padding_right'      => '',
					'box_padding_bottom'     => '',
					'box_padding_left'       => '',

					// border.
					'box_border_top'         => ( '' !== $fusion_settings->get( 'social_links_border', 'top' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_border', 'top' ) ) : '1px',
					'box_border_right'       => ( '' !== $fusion_settings->get( 'social_links_border', 'right' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_border', 'right' ) ) : '1px',
					'box_border_bottom'      => ( '' !== $fusion_settings->get( 'social_links_border', 'bottom' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_border', 'bottom' ) ) : '1px',
					'box_border_left'        => ( '' !== $fusion_settings->get( 'social_links_border', 'left' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_border', 'left' ) ) : '1px',

					'box_border_color'       => $fusion_settings->get( 'social_links_border_color' ),
					'box_border_color_hover' => $fusion_settings->get( 'social_links_border_color_hover' ),

					// margin.
					'margin_top'             => ( '' !== $fusion_settings->get( 'social_links_margin', 'top' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_margin', 'top' ) ) : '0px',
					'margin_right'           => ( '' !== $fusion_settings->get( 'social_links_margin', 'right' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_margin', 'right' ) ) : '0px',
					'margin_bottom'          => ( '' !== $fusion_settings->get( 'social_links_margin', 'bottom' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_margin', 'bottom' ) ) : '0px',
					'margin_left'            => ( '' !== $fusion_settings->get( 'social_links_margin', 'left' ) ) ? fusion_library()->sanitize->size( $fusion_settings->get( 'social_links_margin', 'left' ) ) : '0px',
					'margin_top_medium'      => '',
					'margin_right_medium'    => '',
					'margin_bottom_medium'   => '',
					'margin_left_medium'     => '',
					'margin_top_small'       => '',
					'margin_right_small'     => '',
					'margin_bottom_small'    => '',
					'margin_left_small'      => '',

					// animation.
					'animation_direction'    => 'left',
					'animation_offset'       => $fusion_settings->get( 'animation_offset' ),
					'animation_speed'        => '',
					'animation_delay'        => '',
					'animation_type'         => '',
					'animation_color'        => '',
				];
			}

			/**
			 * Maps settings to param variables.
			 *
			 * @static
			 * @access public
			 * @since 2.0.0
			 * @return array
			 */
			public static function settings_to_params() {
				return [
					'social_links_boxed'                 => [
						'param'    => 'icons_boxed',
						'callback' => 'toYes',
					],
					'social_links_margin[top]'           => 'margin_top',
					'social_links_margin[right]'         => 'margin_right',
					'social_links_margin[bottom]'        => 'margin_bottom',
					'social_links_margin[left]'          => 'margin_left',
					'social_links_boxed_radius'          => 'icons_boxed_radius',
					'social_links_font_size'             => 'font_size',
					'social_links_tooltip_placement'     => [
						'param'    => 'tooltip_placement',
						'callback' => 'toLowerCase',
					],
					'social_links_color_type'            => 'color_type',
					'social_links_icon_color'            => 'icon_colors',
					'social_links_box_color'             => 'box_colors',
					'social_links_icon_color_hover'      => 'icon_colors_hover',
					'social_links_box_color_hover'       => 'box_colors_hover',
					'social_links_boxed_padding[top]'    => 'box_padding_top',
					'social_links_boxed_padding[right]'  => 'box_padding_right',
					'social_links_boxed_padding[bottom]' => 'box_padding_bottom',
					'social_links_boxed_padding[left]'   => 'box_padding_left',
					'social_links_border[top]'           => 'box_border_top',
					'social_links_border[right]'         => 'box_border_right',
					'social_links_border[bottom]'        => 'box_border_bottom',
					'social_links_border[left]'          => 'box_border_left',
					'social_links_border_color'          => 'box_border_color',
					'social_links_border_color_hover'    => 'box_border_color_hover',
				];
			}

			/**
			 * Used to set any other variables for use on front-end editor template.
			 *
			 * @static
			 * @access public
			 * @since 2.0.0
			 * @return array
			 */
			public static function get_element_extras() {
				$fusion_settings = awb_get_fusion_settings();
				return [
					'linktarget'                => $fusion_settings->get( 'social_icons_new' ),
					'social_media_icons'        => $fusion_settings->get( 'social_media_icons' ),
					'boxed_padding'             => $fusion_settings->get( 'social_links_boxed_padding' ),
					'social_links_box_color'    => $fusion_settings->get( 'social_links_box_color' ),
					'social_links_icon_color'   => $fusion_settings->get( 'social_links_icon_color' ),
					'social_links_border_color' => $fusion_settings->get( 'social_links_border_color' ),
					'body_font_size'            => $fusion_settings->get( 'body_typography', 'font-size' ),
				];
			}

			/**
			 * Maps settings to extra variables.
			 *
			 * @static
			 * @access public
			 * @since 2.0.0
			 * @return array
			 */
			public static function settings_to_extras() {

				return [
					'social_icons_new'           => 'linktarget',
					'social_links_box_color'     => 'social_links_box_color',
					'social_links_icon_color'    => 'social_links_icon_color',
					'social_media_icons'         => 'social_media_icons',
					'social_links_boxed_padding' => 'boxed_padding',
					'social_links_border_color'  => 'box_border_color',
					'body_typography'            => 'body_font_size',
				];
			}

			/**
			 * Render the shortcode
			 *
			 * @access public
			 * @since 1.0
			 * @param  array  $args    Shortcode parameters.
			 * @param  string $content Content between shortcode.
			 * @return string          HTML output.
			 */
			public function render( $args, $content = '' ) {
				$fusion_settings = awb_get_fusion_settings();

				$defaults = FusionBuilder::set_shortcode_defaults( self::get_element_defaults(), $args, 'fusion_social_links' );
				$content  = apply_filters( 'fusion_shortcode_content', $content, 'fusion_social_links', $args );

				foreach ( $args as $key => $arg ) {
					if ( false !== strpos( $key, 'custom_' ) ) {
						$defaults[ $key ] = $arg;
					}
				}
				$defaults['icons_boxed_radius'] = FusionBuilder::validate_shortcode_attr_value( $defaults['icons_boxed_radius'], 'px' );
				$defaults['font_size']          = FusionBuilder::validate_shortcode_attr_value( $defaults['font_size'], 'px' );

				$this->args = $defaults;

				if ( empty( $defaults['color_type'] ) ) {
					$defaults['box_colors']  = $fusion_settings->get( 'social_links_box_color' );
					$defaults['icon_colors'] = $fusion_settings->get( 'social_links_icon_color' );
				}

				$social_networks = fusion_builder_get_social_networks( $defaults );

				$social_networks = fusion_builder_sort_social_networks( $social_networks );

				$icons = fusion_builder_build_social_links( $social_networks, 'social-links-shortcode-icon', $defaults );

				$html  = '<div ' . FusionBuilder::attributes( 'social-links-shortcode' ) . '>';
				$html .= '<div ' . FusionBuilder::attributes( 'social-links-shortcode-social-networks' ) . '>';
				$html .= '<div ' . FusionBuilder::attributes( 'fusion-social-networks-wrapper' ) . '>';
				$html .= $icons;
				$html .= '</div>';
				$html .= '</div>';
				$html .= '</div>';

				if ( $this->args['alignment'] && ! fusion_element_rendering_is_flex() ) {
					$html = '<div class="align' . $this->args['alignment'] . '">' . $html . '</div>';
				}

				$this->counter++;
				$this->on_render();

				return apply_filters( 'fusion_element_social_links_content', $html, $args );
			}

			/**
			 * Builds margin styles.
			 *
			 * @access public
			 * @since 1.0
			 * @return string
			 */
			public function build_margin_styles() {
				// Responsive Margin.
				$fusion_settings = awb_get_fusion_settings();
				$styles          = '';

				foreach ( [ 'large', 'medium', 'small' ] as $size ) {
					$margin_styles = '';
					foreach ( [ 'top', 'right', 'bottom', 'left' ] as $direction ) {

						$margin_key = 'large' === $size ? 'margin_' . $direction : 'margin_' . $direction . '_' . $size;
						if ( '' !== $this->args[ $margin_key ] ) {
							$margin_styles .= 'margin-' . $direction . ' : ' . fusion_library()->sanitize->get_value_with_unit( $this->args[ $margin_key ] ) . ';';
						}
					}

					if ( '' === $margin_styles ) {
						continue;
					}

					$margin_styles = '.fusion-social-links-' . $this->counter . '{ ' . $margin_styles . '}';

					// Large styles, no wrapping needed.
					if ( 'large' === $size ) {
						$styles .= $margin_styles;
					} else {
						// Medium and Small size screen styles.
						$styles .= '@media only screen and (max-width:' . $fusion_settings->get( 'visibility_' . $size ) . 'px) {' . $margin_styles . '}';
					}
				}

				return $styles;
			}

			/**
			 * Builds the attributes array.
			 *
			 * @access public
			 * @since 1.0
			 * @return array
			 */
			public function attr() {

				$attr = fusion_builder_visibility_atts(
					$this->args['hide_on_mobile'],
					[
						'class' => 'fusion-social-links fusion-social-links-' . $this->counter,
						'style' => '',
					]
				);

				$attr['class'] .= Fusion_Builder_Sticky_Visibility_Helper::get_sticky_class( $this->args['sticky_display'] );

				if ( $this->args['class'] ) {
					$attr['class'] .= ' ' . $this->args['class'];
				}

				if ( $this->args['id'] ) {
					$attr['id'] = $this->args['id'];
				}

				if ( $this->args['animation_type'] ) {
					$attr = Fusion_Builder_Animation_Helper::add_animation_attributes( $this->args, $attr );
				}

				$attr['style'] .= $this->get_style_variables();

				return $attr;
			}

			/**
			 * Builds the social-networks attributes array.
			 *
			 * @access public
			 * @since 1.0
			 * @return array
			 */
			public function social_networks_attr() {

				$attr = [
					'class' => 'fusion-social-networks',
				];

				if ( 'yes' === $this->args['icons_boxed'] ) {
					$attr['class'] .= ' boxed-icons';
				}

				$attr['class'] .= ' color-type-' . $this->args['color_type'];

				return $attr;
			}

			/**
			 * Builds the icon attributes array.
			 *
			 * @access public
			 * @since 1.0
			 * @param array $args The arguments array.
			 * @return array
			 */
			public function icon_attr( $args ) {
				$fusion_settings = awb_get_fusion_settings();

				$attr = [
					'class' => 'fusion-social-network-icon fusion-tooltip fusion-' . $args['social_network'],
					'style' => '',
				];

				$tooltip = Fusion_Social_Icon::get_social_network_name( $args['social_network'] );
				if ( '' === $args['social_network'] || 'custom_' === substr( $args['social_network'], 0, 7 ) ) {
					$attr['class']         .= 'custom ';
					$args['social_network'] = strtolower( str_replace( ' ', '-', $tooltip ) );
				} elseif ( ! empty( $args['icon_mark'] ) ) {
					$attr['class'] .= ' ' . $args['icon_mark'];
				} else {
					$attr['class'] .= ' awb-icon-' . $args['social_network'];
				}

				if ( 'none' !== strtolower( $this->args['tooltip_placement'] ) ) {
					$attr['data-placement'] = strtolower( $this->args['tooltip_placement'] );
					$attr['data-title']     = $tooltip;
					$attr['data-toggle']    = 'tooltip';
				}

				$attr['title'] = $tooltip;

				$attr['aria-label'] = $args['social_network'];

				$link = $args['social_link'];

				$attr['target'] = ( $fusion_settings->get( 'social_icons_new' ) ) ? '_blank' : '_self';

				if ( '_blank' === $attr['target'] ) {
					$attr['rel'] = 'noopener noreferrer';
				}

				if ( 'mail' === $args['social_network'] ) {
					$link = $args['social_link'];
					if ( 'http' !== substr( $args['social_link'], 0, 4 ) ) {
						if ( apply_filters( 'fusion_disable_antispambot', false ) ) {
							$link = 'mailto:' . str_replace( 'mailto:', '', $args['social_link'] );
						} else {
							$link = 'mailto:' . antispambot( str_replace( 'mailto:', '', $args['social_link'] ) );
						}
					}
				}

				if ( 'phone' === $args['social_network'] ) {
					$link           = 'tel:' . str_replace( 'tel:', '', $args['social_link'] );
					$attr['target'] = '_self';
				}

				$attr['href'] = $link;

				if ( $fusion_settings->get( 'nofollow_social_links' ) ) {
					$attr['rel'] = ( isset( $attr['rel'] ) ) ? $attr['rel'] . ' nofollow' : 'nofollow';
				}

				if ( $args['icon_color'] ) {
					$attr['style'] = 'color:' . $args['icon_color'] . ';';
				}

				if ( $this->args['font_size'] ) {
					$attr['style'] .= 'font-size:' . $this->args['font_size'] . ';';

					if ( 'yes' === $this->args['icons_boxed'] ) {
						$font_size      = ( false === strpos( $this->args['font_size'], 'px' ) ) ? fusion_library()->sanitize->convert_font_size_to_px( $this->args['font_size'], $fusion_settings->get( 'body_typography', 'font-size' ) ) . 'px' : $this->args['font_size'];
						$attr['style'] .= 'width:' . $font_size . ';';
					}
				}

				if ( 'yes' === $this->args['icons_boxed'] && $args['box_color'] ) {
					$attr['style'] .= 'background-color:' . $args['box_color'] . ';border-color:' . $args['box_color'] . ';';
				}

				if ( 'yes' === $this->args['icons_boxed'] && $this->args['icons_boxed_radius'] || '0' === $this->args['icons_boxed_radius'] ) {
					if ( 'round' === $this->args['icons_boxed_radius'] ) {
						$this->args['icons_boxed_radius'] = '50%';
					}
					$attr['style'] .= 'border-radius:' . $this->args['icons_boxed_radius'] . ';';
				}

				return $attr;
			}

			/**
			 * Adds settings to element options panel.
			 *
			 * @access public
			 * @since 1.1
			 * @return array $sections Social Links settings.
			 */
			public function add_options() {
				$fusion_settings = awb_get_fusion_settings();

				return [
					'social_links_shortcode_section' => [
						'label'       => esc_html__( 'Social Links Element', 'fusion-builder' ),
						'description' => '',
						'id'          => 'social_links_shortcode_section',
						'type'        => 'accordion',
						'icon'        => 'fusiona-link',
						'fields'      => [
							'social_links_info'            => [
								'id'          => 'social_links_info',
								'type'        => 'custom',
								'description' => '<div class="fusion-redux-important-notice">' . __( '<strong>IMPORTANT NOTE:</strong> These social icon global options control both the social link element and person element.', 'fusion-builder' ) . '</div>',
							],
							'social_links_margin'          => [
								'label'       => esc_html__( 'Margins', 'fusion-builder' ),
								'description' => esc_html__( 'Controls the margin around social links element.', 'fusion-builder' ),
								'id'          => 'social_links_margin',
								'type'        => 'spacing',
								'transport'   => 'postMessage',
								'choices'     => [
									'top'    => true,
									'left'   => true,
									'bottom' => true,
									'right'  => true,
								],
								'default'     => [
									'top'    => '0px',
									'left'   => '0px',
									'bottom' => '0px',
									'right'  => '0px',
								],
							],
							'social_links_tooltip_placement' => [
								'label'       => esc_html__( 'Social Links Icons Tooltip Position', 'fusion-builder' ),
								'description' => esc_html__( 'Controls the tooltip position of the social links icons.', 'fusion-builder' ),
								'id'          => 'social_links_tooltip_placement',
								'default'     => 'Top',
								'type'        => 'radio-buttonset',
								'transport'   => 'postMessage',
								'choices'     => [
									'Top'    => esc_html__( 'Top', 'fusion-builder' ),
									'Right'  => esc_html__( 'Right', 'fusion-builder' ),
									'Bottom' => esc_html__( 'Bottom', 'fusion-builder' ),
									'Left'   => esc_html__( 'Left', 'fusion-builder' ),
									'None'   => esc_html__( 'None', 'fusion-builder' ),
								],
							],
							'social_links_font_size'       => [
								'label'       => esc_html__( 'Icons Font Size', 'fusion-builder' ),
								'description' => esc_html__( 'Controls the font size for the social link icons.', 'fusion-builder' ),
								'id'          => 'social_links_font_size',
								'default'     => '16px',
								'type'        => 'dimension',
								'css_vars'    => [
									[
										'name'     => '--social_links_font_size',
										'element'  => '.fusion-social-links',
										'callback' => [ 'convert_font_size_to_px', '' ],
									],
								],
							],
							'social_links_color_type'      => [
								'label'       => esc_html__( 'Icon Color Type', 'fusion-builder' ),
								'description' => esc_html__( 'Custom colors allow you to choose a color for icons and boxes. Brand colors will use the exact brand color of each network for the icons or boxes.', 'fusion-builder' ),
								'id'          => 'social_links_color_type',
								'default'     => 'custom',
								'type'        => 'radio-buttonset',
								'transport'   => 'postMessage',
								'choices'     => [
									'custom' => esc_html__( 'Custom Colors', 'fusion-builder' ),
									'brand'  => esc_html__( 'Brand Colors', 'fusion-builder' ),
								],
							],
							'social_links_icon_color'      => [
								'label'           => esc_html__( 'Icons Color', 'fusion-builder' ),
								'description'     => esc_html__( 'Controls the color of the custom icons.', 'fusion-builder' ),
								'id'              => 'social_links_icon_color',
								'default'         => 'var(--awb-color6)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_icon_color_hover' => [
								'label'           => esc_html__( 'Icons Hover Color', 'fusion-builder' ),
								'description'     => esc_html__( 'Controls the color of the custom icons on hover.', 'fusion-builder' ),
								'id'              => 'social_links_icon_color_hover',
								'default'         => 'var(--awb-color4)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_boxed'           => [
								'label'       => esc_html__( 'Boxed Style', 'fusion-builder' ),
								'description' => esc_html__( 'Turn on to have the icon displayed in a small box. Turn off to have the icon displayed with no box.', 'fusion-builder' ),
								'id'          => 'social_links_boxed',
								'default'     => '0',
								'type'        => 'switch',
								'transport'   => 'postMessage',
							],
							'social_links_boxed_padding'   => [
								'label'           => esc_html__( 'Box Padding', 'fusion-builder' ),
								'id'              => 'social_links_boxed_padding',
								'default'         => '8px',
								'type'            => 'dimension',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
								'css_vars'        => [
									[
										'name'    => '--social_links_boxed_padding',
										'element' => '.fusion-social-links',
									],
								],
							],
							'social_links_box_color'       => [
								'label'           => esc_html__( 'Box Background', 'fusion-builder' ),
								'description'     => esc_html__( 'Select a custom social icon box background color.', 'fusion-builder' ),
								'id'              => 'social_links_box_color',
								'default'         => 'var(--awb-color2)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_box_color_hover' => [
								'label'           => esc_html__( 'Box Hover Background', 'fusion-builder' ),
								'description'     => esc_html__( 'Select a custom social icon box background color on hover.', 'fusion-builder' ),
								'id'              => 'social_links_box_color_hover',
								'default'         => 'var(--awb-color1)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_border'          => [
								'label'       => esc_html__( 'Box Border Size', 'fusion-builder' ),
								'description' => esc_html__( 'Controls the borders size of social icon box.', 'fusion-builder' ),
								'id'          => 'social_links_border',
								'type'        => 'spacing',
								'transport'   => 'postMessage',
								'choices'     => [
									'top'    => true,
									'left'   => true,
									'bottom' => true,
									'right'  => true,
								],
								'default'     => [
									'top'    => '0px',
									'left'   => '0px',
									'bottom' => '0px',
									'right'  => '0px',
								],
							],
							'social_links_boxed_radius'    => [
								'label'           => esc_html__( 'Box Radius', 'fusion-builder' ),
								'description'     => esc_html__( 'Box radius for the social icons.', 'fusion-builder' ),
								'id'              => 'social_links_boxed_radius',
								'default'         => '4px',
								'type'            => 'dimension',
								'choices'         => [ 'px', 'em' ],
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_border_color'    => [
								'label'           => esc_html__( 'Border Color', 'fusion-builder' ),
								'description'     => esc_html__( 'Controls the borders color of social icon box.', 'fusion-builder' ),
								'id'              => 'social_links_border_color',
								'default'         => 'var(--awb-color3)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],
							'social_links_border_color_hover' => [
								'label'           => esc_html__( 'Border Hover Color', 'fusion-builder' ),
								'description'     => esc_html__( 'Controls the borders color of social icon box on hover.', 'fusion-builder' ),
								'id'              => 'social_links_border_color_hover',
								'default'         => 'var(--awb-color4)',
								'type'            => 'color-alpha',
								'transport'       => 'postMessage',
								'soft_dependency' => true,
							],

						],
					],
				];
			}

			/**
			 * Sets the necessary scripts.
			 *
			 * @access public
			 * @since 3.2
			 * @return void
			 */
			public function on_first_render() {
				Fusion_Dynamic_JS::enqueue_script( 'fusion-tooltip' );
			}


			/**
			 * Get the style variables.
			 *
			 * @access protected
			 * @since 3.9
			 * @return string
			 */
			protected function get_style_variables() {

				$css_vars_options = [
					'margin_top'           => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_right'         => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_bottom'        => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_left'          => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_top_medium'    => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_right_medium'  => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_bottom_medium' => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_left_medium'   => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_top_small'     => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_right_small'   => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_bottom_small'  => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'margin_left_small'    => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'alignment',
					'box_border_top'       => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_border_right'     => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_border_bottom'    => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_border_left'      => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_padding_top'      => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_padding_right'    => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_padding_bottom'   => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
					'box_padding_left'     => [
						'callback' => [ 'Fusion_Sanitize', 'get_value_with_unit' ],
					],
				];

				$custom_vars                           = [];
				$custom_vars['icon_colors_hover']      = $this->args['icon_colors_hover'];
				$custom_vars['box_colors_hover']       = $this->args['box_colors_hover'];
				$custom_vars['box_border_color']       = $this->args['box_border_color'];
				$custom_vars['box_border_color_hover'] = $this->args['box_border_color_hover'];

				if ( $this->args['alignment_medium'] ) {
					$custom_vars['alignment_medium'] = $this->args['alignment_medium'];
				}

				if ( $this->args['alignment_small'] ) {
					$custom_vars['alignment_small'] = $this->args['alignment_small'];
				}

				$styles = $this->get_css_vars_for_options( $css_vars_options ) . $this->get_custom_css_vars( $custom_vars );

				return $styles;
			}

			/**
			 * Load base CSS.
			 *
			 * @access public
			 * @since 3.0
			 * @return void
			 */
			public function add_css_files() {
				FusionBuilder()->add_element_css( FUSION_BUILDER_PLUGIN_DIR . 'assets/css/shortcodes/social-links.min.css' );

				if ( class_exists( 'Avada' ) ) {
					$version = Avada::get_theme_version();
					Fusion_Media_Query_Scripts::$media_query_assets[] = [
						'avada-social-links-md',
						FUSION_BUILDER_PLUGIN_DIR . 'assets/css/media/social-links-md.min.css',
						[],
						$version,
						Fusion_Media_Query_Scripts::get_media_query_from_key( 'fusion-max-medium' ),
					];
					Fusion_Media_Query_Scripts::$media_query_assets[] = [
						'avada-social-links-sm',
						FUSION_BUILDER_PLUGIN_DIR . 'assets/css/media/social-links-sm.min.css',
						[],
						$version,
						Fusion_Media_Query_Scripts::get_media_query_from_key( 'fusion-max-small' ),
					];
				}
			}
		}
	}

	new FusionSC_SocialLinks();

}
/**
 * Map shortcode to Avada Builder.
 *
 * @since 1.0
 */
function fusion_element_social_links() {
	$fusion_settings = awb_get_fusion_settings();

	$social_options = [
		'name'      => esc_attr__( 'Social Links', 'fusion-builder' ),
		'shortcode' => 'fusion_social_links',
		'icon'      => 'fusiona-link',
		'help_url'  => 'https://avada.com/documentation/social-links-element/',
		'params'    => [
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Blogger Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Blogger link.', 'fusion-builder' ),
				'param_name'   => 'blogger',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Bluesky Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Bluesky link.', 'fusion-builder' ),
				'param_name'   => 'bluesky',
				'value'        => '',
				'dynamic_data' => true,
			],		
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Deviantart Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Deviantart link.', 'fusion-builder' ),
				'param_name'   => 'deviantart',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Discord Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Discord link.', 'fusion-builder' ),
				'param_name'   => 'discord',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Digg Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Digg link.', 'fusion-builder' ),
				'param_name'   => 'digg',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Dribbble Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Dribbble link.', 'fusion-builder' ),
				'param_name'   => 'dribbble',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Dropbox Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Dropbox link.', 'fusion-builder' ),
				'param_name'   => 'dropbox',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Facebook Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Facebook link.', 'fusion-builder' ),
				'param_name'   => 'facebook',
				'value'        => '#',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Flickr Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Flickr link.', 'fusion-builder' ),
				'param_name'   => 'flickr',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Forrst Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Forrst link.', 'fusion-builder' ),
				'param_name'   => 'forrst',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'GitHub Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom GitHub link.', 'fusion-builder' ),
				'param_name'   => 'github',
				'value'        => '',
				'dynamic_data' => true,
			],			
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Instagram Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Instagram link.', 'fusion-builder' ),
				'param_name'   => 'instagram',
				'value'        => '#',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'LinkedIn Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom LinkedIn link.', 'fusion-builder' ),
				'param_name'   => 'linkedin',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Mastodon Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Mastodon link.', 'fusion-builder' ),
				'param_name'   => 'mastodon',
				'value'        => '',
				'dynamic_data' => true,
			],			
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Myspace Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Myspace link.', 'fusion-builder' ),
				'param_name'   => 'myspace',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'PayPal Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom PayPal link.', 'fusion-builder' ),
				'param_name'   => 'paypal',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Pinterest Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Pinterest link.', 'fusion-builder' ),
				'param_name'   => 'pinterest',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Reddit Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Reddit link.', 'fusion-builder' ),
				'param_name'   => 'reddit',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'RSS Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom RSS link.', 'fusion-builder' ),
				'param_name'   => 'rss',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Skype Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Skype link.', 'fusion-builder' ),
				'param_name'   => 'skype',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Snapchat Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Snapchat link.', 'fusion-builder' ),
				'param_name'   => 'snapchat',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'SoundCloud Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom SoundCloud link.', 'fusion-builder' ),
				'param_name'   => 'soundcloud',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Spotify Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Spotify link.', 'fusion-builder' ),
				'param_name'   => 'spotify',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Telegram Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Telegram link.', 'fusion-builder' ),
				'param_name'   => 'telegram',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Teams Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Microsoft Teams link.', 'fusion-builder' ),
				'param_name'   => 'teams',
				'value'        => '',
				'dynamic_data' => true,
			],			
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'TikTok Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom TikTok link.', 'fusion-builder' ),
				'param_name'   => 'tiktok',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Threads Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Threads link.', 'fusion-builder' ),
				'param_name'   => 'threads',
				'value'        => '',
				'dynamic_data' => true,
			],				
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Tumblr Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Tumblr link.', 'fusion-builder' ),
				'param_name'   => 'tumblr',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Twitch Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Twitch link.', 'fusion-builder' ),
				'param_name'   => 'twitch',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Vimeo Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Vimeo link.', 'fusion-builder' ),
				'param_name'   => 'vimeo',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'VK Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom VK link.', 'fusion-builder' ),
				'param_name'   => 'vk',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'WeChat Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom WeChat link.', 'fusion-builder' ),
				'param_name'   => 'wechat',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'WhatsApp Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom WhatsApp link.', 'fusion-builder' ),
				'param_name'   => 'whatsapp',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'X Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom X link.', 'fusion-builder' ),
				'param_name'   => 'twitter',
				'value'        => '#',
				'dynamic_data' => true,
			],			
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Xing Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Xing link.', 'fusion-builder' ),
				'param_name'   => 'xing',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Yahoo Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Yahoo link.', 'fusion-builder' ),
				'param_name'   => 'yahoo',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Yelp Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom Yelp link.', 'fusion-builder' ),
				'param_name'   => 'yelp',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'YouTube Link', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert your custom YouTube link.', 'fusion-builder' ),
				'param_name'   => 'youtube',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Email Address', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert an email address to display the email icon.', 'fusion-builder' ),
				'param_name'   => 'email',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'         => 'textfield',
				'heading'      => esc_attr__( 'Phone Number', 'fusion-builder' ),
				'description'  => esc_attr__( 'Insert a phone number to display the phone icon.', 'fusion-builder' ),
				'param_name'   => 'phone',
				'value'        => '',
				'dynamic_data' => true,
			],
			[
				'type'        => 'radio_button_set',
				'heading'     => esc_attr__( 'Show Custom Social Icons', 'fusion-builder' ),
				'description' => esc_attr__( 'Show the custom social icons specified in Global Options.', 'fusion-builder' ),
				'param_name'  => 'show_custom',
				'value'       => [
					'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
					'no'  => esc_attr__( 'No', 'fusion-builder' ),
				],
				'default'     => 'no',
			],
			[
				'type'        => 'radio_button_set',
				'heading'     => esc_attr__( 'Alignment', 'fusion-builder' ),
				'description' => esc_attr__( "Select the icon's alignment.", 'fusion-builder' ),
				'param_name'  => 'alignment',
				'value'       => [
					''       => esc_attr__( 'Text Flow', 'fusion-builder' ),
					'left'   => esc_attr__( 'Left', 'fusion-builder' ),
					'center' => esc_attr__( 'Center', 'fusion-builder' ),
					'right'  => esc_attr__( 'Right', 'fusion-builder' ),
				],
				'responsive'  => [
					'state' => 'large',
				],
				'default'     => '',
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			'fusion_margin_placeholder'    => [
				'param_name' => 'margin',
				'value'      => [
					'margin_top'    => '',
					'margin_right'  => '',
					'margin_bottom' => '',
					'margin_left'   => '',
				],
				'responsive' => [
					'state' => 'large',
				],
			],
			[
				'type'        => 'radio_button_set',
				'heading'     => esc_attr__( 'Tooltip Position', 'fusion-builder' ),
				'description' => esc_attr__( 'Choose the display position for tooltips.', 'fusion-builder' ),
				'param_name'  => 'tooltip_placement',
				'value'       => [
					''       => esc_attr__( 'Default', 'fusion-builder' ),
					'top'    => esc_attr__( 'Top', 'fusion-builder' ),
					'bottom' => esc_attr__( 'Bottom', 'fusion-builder' ),
					'left'   => esc_attr__( 'Left', 'fusion-builder' ),
					'Right'  => esc_attr__( 'Right', 'fusion-builder' ),
					'none'   => esc_html__( 'None', 'fusion-builder' ),
				],
				'default'     => '',
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			[
				'type'        => 'textfield',
				'heading'     => esc_attr__( 'Font Size', 'fusion-builder' ),
				'description' => esc_attr__( 'Controls the font size for the social icons. Enter value including CSS unit (px, em, rem), ex: 10px', 'fusion-builder' ),
				'param_name'  => 'font_size',
				'value'       => '',
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			[
				'type'        => 'radio_button_set',
				'heading'     => esc_attr__( 'Boxed Style', 'fusion-builder' ),
				'description' => esc_attr__( 'Choose to get boxed icons.', 'fusion-builder' ),
				'param_name'  => 'icons_boxed',
				'value'       => [
					''    => esc_attr__( 'Default', 'fusion-builder' ),
					'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
					'no'  => esc_attr__( 'No', 'fusion-builder' ),
				],
				'default'     => '',
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			[
				'type'             => 'dimension',
				'remove_from_atts' => true,
				'heading'          => esc_attr__( 'Box Padding', 'fusion-builder' ),
				'description'      => esc_attr__( 'Controls the padding of boxed icons.', 'fusion-builder' ),
				'param_name'       => 'box_padding',
				'value'            => [
					'box_padding_top'    => '',
					'box_padding_right'  => '',
					'box_padding_bottom' => '',
					'box_padding_left'   => '',
				],
				'dependency'       => [
					[
						'element'  => 'icons_boxed',
						'value'    => 'no',
						'operator' => '!=',
					],
				],
				'group'            => esc_attr__( 'Design', 'fusion-builder' ),
			],
			[
				'type'             => 'dimension',
				'remove_from_atts' => true,
				'heading'          => esc_attr__( 'Box Border Size', 'fusion-builder' ),
				'description'      => esc_attr__( 'Controls the border size. In pixels or percentage, ex: 10px or 10%.', 'fusion-builder' ),
				'param_name'       => 'box_border',
				'value'            => [
					'box_border_top'    => '',
					'box_border_right'  => '',
					'box_border_bottom' => '',
					'box_border_left'   => '',
				],
				'group'            => esc_attr__( 'Design', 'fusion-builder' ),
				'dependency'       => [
					[
						'element'  => 'icons_boxed',
						'value'    => 'no',
						'operator' => '!=',
					],
					[
						'element'  => 'color_type',
						'value'    => 'brand',
						'operator' => '!=',
					],
				],
			],
			[
				'type'        => 'textfield',
				'heading'     => esc_attr__( 'Box Border Radius', 'fusion-builder' ),
				'description' => esc_attr__( 'Choose the border radius of the boxed icons. In pixels (px), ex: 1px, or "round". ', 'fusion-builder' ),
				'param_name'  => 'icons_boxed_radius',
				'value'       => '',
				'dependency'  => [
					[
						'element'  => 'icons_boxed',
						'value'    => 'no',
						'operator' => '!=',
					],
				],
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			[
				'type'        => 'radio_button_set',
				'heading'     => esc_attr__( 'Color Type', 'fusion-builder' ),
				'description' => esc_attr__( 'Choose the color type of social icons. Brand colors will use the exact brand color of each network for the icons or boxes.', 'fusion-builder' ),
				'param_name'  => 'color_type',
				'value'       => [
					''       => esc_attr__( 'Default', 'fusion-builder' ),
					'custom' => esc_attr__( 'Custom Colors', 'fusion-builder' ),
					'brand'  => esc_attr__( 'Brand Colors', 'fusion-builder' ),
				],
				'default'     => '',
				'group'       => esc_attr__( 'Design', 'fusion-builder' ),
			],
			// colors group.
			[
				'type'          => 'colorpickeralpha',
				'heading'       => esc_attr__( 'Icon Color', 'fusion-builder' ),
				'description'   => esc_attr__( 'Specify the color of social icons.', 'fusion-builder' ),
				'param_name'    => 'icon_colors',
				'default'       => $fusion_settings->get( 'social_links_icon_color' ),
				'dependency'    => [
					[
						'element'  => 'color_type',
						'value'    => 'brand',
						'operator' => '!=',
					],
				],
				'group'         => esc_attr__( 'Design', 'fusion-builder' ),
				'states'        => [
					'hover' => [
						'label'   => __( 'Hover', 'fusion-builder' ),
						'default' => $fusion_settings->get( 'social_links_icon_color_hover' ),
						'preview' => [
							'selector' => '.fusion-social-network-icon',
							'type'     => 'class',
							'toggle'   => 'hover',
						],
					],
				],
				'connect-state' => [ 'box_colors', 'box_border_color' ],
			],
			[
				'type'          => 'colorpickeralpha',
				'heading'       => esc_attr__( 'Background Color', 'fusion-builder' ),
				'description'   => esc_attr__( 'Specify the box background color of social icons.', 'fusion-builder' ),
				'param_name'    => 'box_colors',
				'default'       => $fusion_settings->get( 'social_links_box_color' ),
				'dependency'    => [
					[
						'element'  => 'icons_boxed',
						'value'    => 'no',
						'operator' => '!=',
					],
					[
						'element'  => 'color_type',
						'value'    => 'brand',
						'operator' => '!=',
					],
				],
				'group'         => esc_attr__( 'Design', 'fusion-builder' ),
				'states'        => [
					'hover' => [
						'label'   => __( 'Hover', 'fusion-builder' ),
						'default' => $fusion_settings->get( 'social_links_box_color_hover' ),
						'preview' => [
							'selector' => '.fusion-social-network-icon',
							'type'     => 'class',
							'toggle'   => 'hover',
						],
					],
				],
				'connect-state' => [ 'icon_colors', 'box_border_color' ],
			],
			[
				'type'          => 'colorpickeralpha',
				'heading'       => esc_attr__( 'Border Color', 'fusion-builder' ),
				'description'   => esc_attr__( 'Specify the border color of social icons.', 'fusion-builder' ),
				'param_name'    => 'box_border_color',
				'default'       => $fusion_settings->get( 'social_links_border_color' ),
				'dependency'    => [
					[
						'element'  => 'icons_boxed',
						'value'    => 'no',
						'operator' => '!=',
					],
					[
						'element'  => 'color_type',
						'value'    => 'brand',
						'operator' => '!=',
					],
				],
				'group'         => esc_attr__( 'Design', 'fusion-builder' ),
				'states'        => [
					'hover' => [
						'label'   => __( 'Hover', 'fusion-builder' ),
						'default' => $fusion_settings->get( 'social_links_border_color_hover' ),
						'preview' => [
							'selector' => '.fusion-social-network-icon',
							'type'     => 'class',
							'toggle'   => 'hover',
						],
					],
				],
				'connect-state' => [ 'icon_colors', 'box_colors' ],
			],
			'fusion_conditional_render_placeholder' => [],
			'fusion_animation_placeholder' => [
				'preview_selector' => '.fusion-social-links',
			],
		],
	];
	$custom_social_networks = fusion_builder_get_custom_social_networks();
	if ( is_array( $custom_social_networks ) ) {
		$custom_networks = [];
		foreach ( $custom_social_networks as $key => $custom_network ) {
			$social_options['params'][] = [
				'type'        => 'textfield',
				/* translators: The network-name. */
				'heading'     => sprintf( esc_attr__( '%s Link', 'fusion-builder' ), $custom_network['title'] ),
				'description' => esc_attr__( 'Insert your custom social link.', 'fusion-builder' ),
				'param_name'  => 'custom_' . $key,
				'value'       => '',
				'dependency'  => [
					[
						'element'  => 'show_custom',
						'value'    => 'yes',
						'operator' => '==',
					],
				],
			];
		}
	}
	$social_options['params'][]                                       = [
		'type'        => 'checkbox_button_set',
		'heading'     => esc_attr__( 'Element Visibility', 'fusion-builder' ),
		'param_name'  => 'hide_on_mobile',
		'value'       => fusion_builder_visibility_options( 'full' ),
		'default'     => fusion_builder_default_visibility( 'array' ),
		'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ),
	];
	$social_options['params']['fusion_sticky_visibility_placeholder'] = [];
	$social_options['params'][]                                       = [
		'type'        => 'textfield',
		'heading'     => esc_attr__( 'CSS Class', 'fusion-builder' ),
		'param_name'  => 'class',
		'value'       => '',
		'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ),
	];
	$social_options['params'][]                                       = [
		'type'        => 'textfield',
		'heading'     => esc_attr__( 'CSS ID', 'fusion-builder' ),
		'param_name'  => 'id',
		'value'       => '',
		'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ),
	];
	fusion_builder_map( fusion_builder_frontend_data( 'FusionSC_SocialLinks', $social_options ) );
}
add_action( 'fusion_builder_before_init', 'fusion_element_social_links' );
