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

if ( fusion_is_element_enabled( 'fusion_post_cards' ) ) {

	if ( fusion_is_element_enabled( 'fusion_tb_post_card_archives' ) ) {

		if ( ! class_exists( 'FusionTB_Post_Card_Archives' ) ) {
			/**
			 * Shortcode class.
			 *
			 * @since 3.3
			 */
			class FusionTB_Post_Card_Archives extends Fusion_Component {

				/**
				 * The element counter.
				 *
				 * @access private
				 * @since 3.11.10
				 * @var int
				 */
				private $element_counter = 1;

				/**
				 * Flag to indicate are we on archive page.
				 *
				 * @access protected
				 * @since 3.3
				 * @var bool
				 */
				protected $is_archive = false;

				/**
				 * Holds the main vars of the origina $wp_query.
				 *
				 * @access protected
				 * @since 3.11.10
				 * @var array
				 */
				protected $original_query_vars = [];

				/**
				 * Constructor.
				 *
				 * @access public
				 * @since 3.3
				 */
				public function __construct() {
					parent::__construct( 'fusion_tb_post_card_archives' );

					// Ajax mechanism for query related part.
					add_action( "wp_ajax_get_{$this->shortcode_handle}", [ $this, 'ajax_query' ] );

					add_filter( 'fusion_tb_component_check', [ $this, 'component_check' ] );

					add_action( 'pre_get_posts', [ $this, 'alter_search_loop' ] );

					add_filter( "fusion_attr_{$this->shortcode_handle}", [ $this, 'attr' ] );

					add_action( 'wp', [ $this, 'set_is_archive' ] );
				}

				/**
				 * Check if we're on archive page.
				 * Needs done early, before global query is changed.
				 *
				 * @access public
				 * @since 3.3
				 * @return void
				 */
				public function set_is_archive() {
					$this->is_archive = is_search() || is_archive() || isset( $_GET['awb-studio-content'] ); // phpcs:ignore WordPress.Security.NonceVerification
				}

				/**
				 * Check if component should render
				 *
				 * @access public
				 * @since 3.3
				 * @return boolean
				 */
				public function should_render() {
					return $this->is_archive;
				}

				/**
				 * Checks and returns post type for archives component.
				 *
				 * @since 3.3
				 * @access public
				 * @param  array $defaults current params array.
				 * @return array $defaults Updated params array.
				 */
				public function archives_type( $defaults ) {
					$defaults = Fusion_Template_Builder()->archives_type( $defaults );

					// Check for taxonomy type.
					return Fusion_Template_Builder()->taxonomy_type( $defaults );
				}

				/**
				 * Gets the query data.
				 *
				 * @static
				 * @access public
				 * @since 3.3
				 * @param array $defaults An array of defaults.
				 * @return void
				 */
				public function ajax_query( $defaults ) {
					check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );

					$type = 'archives';
					if ( isset( $_POST['fusion_meta'] ) && isset( $_POST['post_id'] ) ) {
						$meta = fusion_string_to_array( $_POST['fusion_meta'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
						$type = ! isset( $meta['_fusion']['dynamic_content_preview_type'] ) || in_array( $meta['_fusion']['dynamic_content_preview_type'], [ 'search', 'archives' ], true ) ? $meta['_fusion']['dynamic_content_preview_type'] : $type;
					}

					add_filter( 'fusion_post_cards_shortcode_query_args', [ $this, 'archives_type' ] );
					do_action( 'wp_ajax_get_fusion_post_cards', $defaults );
				}

				/**
				 * Gets the default values.
				 *
				 * @static
				 * @access public
				 * @since 3.3
				 * @return array
				 */
				public static function get_element_defaults() {
					global $post;

					$defaults = FusionSC_PostCards::get_element_defaults();

					$defaults['post_type'] = get_post_type( $post );

					return $defaults;
				}

				/**
				 * Used to set any other variables for use on front-end editor template.
				 *
				 * @static
				 * @access public
				 * @since 3.3
				 * @return array
				 */
				public static function get_element_extras() {
					return FusionSC_PostCards::get_element_extras();
				}

				/**
				 * Renders fusion post cards shortcode
				 *
				 * @access public
				 * @since 3.3
				 * @return string
				 */
				public function render_card() {
					global $shortcode_tags;

					$this->args['post_card_archives'] = true;

					if ( 'terms' === $this->args['source'] ) {
						$queried                          = get_queried_object();
						$this->args['post_card_archives'] = false;
						if ( 'WP_Term' === get_class( $queried ) ) {
							$terms = get_terms(
								[
									'taxonomy'   => $queried->taxonomy,
									'hide_empty' => false,
									'parent'     => $queried->term_id,
									'fields'     => 'ids',
									'number'     => max( (int) $this->args['number_posts'], 0 ),
									'orderby'    => 'menu_order',
								]
							);

							if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
								$this->args['parent_term']                         = $queried->term_id;
								$this->args['include_term_' . $queried->taxonomy ] = implode( ',', $terms );
								$this->args['orderby_term']                        = 'menu_order';
								$this->args = wp_parse_args(
									[
										'terms_by' => $queried->taxonomy,
									],
									$this->args
								);
							}
						}
					}

					return call_user_func( $shortcode_tags['fusion_post_cards'], $this->args, '', 'fusion_post_cards' );
				}

				/**
				 * Filters the current query
				 *
				 * @access public
				 * @since 3.3
				 * @param array $query The query.
				 * @return array
				 */
				public function fusion_post_cards_shortcode_query_override( $query ) {
					global $wp_query;

					// If post card display = terms then don't override the query.
					if ( 'terms' === $this->args['source'] ) {
						return $query;
					}

					// If there is several Post Card Archives elements.
					if ( ! empty( $wp_query->get( 'awb_pc_archives' ) ) && 0 < $wp_query->found_posts ) {
						if ( ! empty( $this->original_query_vars ) ) {

							// Reset the main query to the original posts.
							$wp_query->posts = $this->original_query_vars['posts'];
						} else {

							// On first element, make sure we store the original vars.
							$this->original_query_vars = [
								'posts'         => $wp_query->posts,
								'found_posts'   => $wp_query->found_posts,
								'max_num_pages' => $wp_query->max_num_pages,
							];
						}

						$posts_per_page       = -1 === (int) $this->args['number_posts'] ? $this->original_query_vars['found_posts'] : $this->args['number_posts'];
						$wp_query->posts      = (int) $this->args['offset'] < count( $wp_query->posts ) ? array_slice( $wp_query->posts, (int) $this->args['offset'], $posts_per_page ) : [];
						$wp_query->post_count = count( $wp_query->posts );

						// Last Post Card Archives element. Reset data, so that pagination works.
						if ( $wp_query->get( 'awb_pc_archives' ) === $this->element_counter ) {
							$wp_query->found_posts   = $this->original_query_vars['found_posts'];
							$wp_query->max_num_pages = ceil( $wp_query->found_posts / ( (int) $this->args['offset'] + $posts_per_page ) );

							$this->original_query_vars = [];
						} else {

							// Any but last Post Card Archoves element. Set vars, so that only posts that we want will be rendered and that pagination is skipped.
							$wp_query->found_posts   = count( $wp_query->posts );
							$wp_query->max_num_pages = count( $wp_query->posts );
						}

						$wp_query->rewind_posts();
					}

					return $wp_query;
				}

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

					$this->args = FusionBuilder::set_shortcode_defaults( self::get_element_defaults(), $args, $this->shortcode_handle );

					$option = isset( $post->ID ) ? fusion_get_page_option( 'dynamic_content_preview_type', $post->ID ) : '';
					$option = '' !== $option ? $option : 'archives';
					$html   = '<div ' . FusionBuilder::attributes( $this->shortcode_handle ) . ' >';

					// Handle empty results.
					if ( ! fusion_is_preview_frame() && ! $post ) {
						$html .= apply_filters( 'fusion_shortcode_content', '<h2 class="fusion-nothing-found">' . $content . '</h2>', $this->shortcode_handle, $args );

					} elseif ( fusion_is_preview_frame() && ! in_array( $option, [ 'search', 'archives', 'term' ], true ) ) {

						// Invalid source selection, return empty so view placeholder shows.
						$this->element_counter++;
						return '';

					} elseif ( ! fusion_is_preview_frame() && ! isset( $_GET['awb-studio-content'] ) && $this->should_render() ) { // phpcs:ignore WordPress.Security.NonceVerification

						// Pass main query to Post Card element.
						add_filter( 'fusion_post_cards_shortcode_query_override', [ $this, 'fusion_post_cards_shortcode_query_override' ] );
						$cards = $this->render_card();
						if ( empty( $cards ) && 'terms' !== $this->args['source'] ) {
							$html .= apply_filters( 'fusion_shortcode_content', '<h2 class="fusion-nothing-found">' . $content . '</h2>', $this->shortcode_handle, $args );
						} else {
							$html .= $cards;
						}
						remove_filter( 'fusion_post_cards_shortcode_query_override', [ $this, 'fusion_post_cards_shortcode_query_override' ] );
					} elseif ( fusion_is_preview_frame() || isset( $_GET['awb-studio-content'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
						add_filter( 'fusion_post_cards_shortcode_query_args', [ $this, 'archives_type' ] );
						$cards = $this->render_card();
						remove_filter( 'fusion_post_cards_shortcode_query_args', [ $this, 'archives_type' ] );

						// No cards, mean none of post type, display placeholder message.
						if ( empty( $cards ) && current_user_can( 'manage_options' ) ) {
							$this->element_counter++;
							return '<div class="fusion-builder-placeholder">' . esc_html__( 'No posts found.', 'fusion-builder' ) . '</div>';
						}

						// We do have cards, add to markup.
						$html .= $cards;
					}

					$html .= '</div>';

					$this->on_render();

					$this->element_counter++;

					return apply_filters( 'fusion_component_' . $this->shortcode_handle . '_content', $html, $args );
				}

				/**
				 * Apply post per page on search pages.
				 *
				 * @access public
				 * @since 3.3
				 * @return array The attribute array
				 */
				public function attr() {
					$attr = [
						'class' => 'fusion-post-cards-archives-tb',
					];

					$attr['data-instance'] = $this->element_counter;

					$attr['data-infinite-post-class'] = $this->args['post_type'];

					return $attr;
				}

				/**
				 * Apply post per page on search pages.
				 *
				 * @access public
				 * @since 3.3
				 * @param  object $query The WP_Query object.
				 * @return  void
				 */
				public function alter_search_loop( $query ) {
					if ( ! is_admin() && $query->is_main_query() && ( $query->is_search() || $query->is_archive() ) ) {
						$search_override = Fusion_Template_Builder::get_instance()->get_search_override( $query );

						if ( is_object( $search_override ) ) {
							$content                = $this->get_shortcodes_from_global_elements( $search_override->post_content );
							$has_archives_component = $search_override && has_shortcode( $content, 'fusion_tb_post_card_archives' );

							if ( $has_archives_component ) {
								$pattern = get_shortcode_regex( [ 'fusion_tb_post_card_archives' ] );

								if ( preg_match_all( '/' . $pattern . '/s', $content, $matches )
									&& array_key_exists( 2, $matches )
									&& in_array( 'fusion_tb_post_card_archives', $matches[2], true ) ) {

									$number_of_post_card_archives = count( $matches[3] );

									$search_atts  = shortcode_parse_atts( $matches[3][ $number_of_post_card_archives - 1 ] );
									$number_posts = 0;
									if ( isset( $_GET['product_count'] ) ) {
										$number_posts = (int) $_GET['product_count'];
									} else if ( isset( $search_atts['number_posts'] ) ) {
										$number_posts = $search_atts['number_posts']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
									}

									if ( ! empty( $search_atts['offset'] ) ) {

										if ( 1 < $number_of_post_card_archives ) {

											// We have more than on Post Card Archives element. Add offset to posts per page and don't set the offset.
											$number_posts = (int) $search_atts['offset'] + (int) $number_posts;

											$query->set( 'awb_pc_archives', $number_of_post_card_archives );
										} else {
											// Single Post Card Archives: compound offset across pages so page 2+ doesn't repeat the offset rows.
											$base_offset = (int) $search_atts['offset'];
											$paged       = max( 1, get_query_var( 'paged' ) );
											$ppp         = $number_posts ? (int) $number_posts : (int) $query->get( 'posts_per_page' );

											if ( $ppp <= 0 ) {
												$ppp = (int) get_option( 'posts_per_page' );
											}

											$query->set( 'offset', $base_offset + ( ( $paged - 1 ) * $ppp ) );

											// Tag this specific query so the found_posts filter only adjusts our query, not unrelated ones.
											$query->set( 'awb_pc_offset_applied', $base_offset );

											static $awb_pc_found_filter_added = false;
											if ( ! $awb_pc_found_filter_added ) {
												$awb_pc_found_filter_added = true;
												// Subtract the offset from found_posts so pagination link count matches the visible result set.
												add_filter( 'found_posts',
													function( $found_posts, $q ) {
														$offset = (int) $q->get( 'awb_pc_offset_applied' );
														if ( $offset && $q->is_main_query() ) {
															return max( 0, $found_posts - $offset );
														}
														return $found_posts;
													}, 10, 2
												);
											}
										}
									}

									if ( $number_posts ) {
										$query->set( 'posts_per_page', $number_posts );
									}

									$query->set( 'paged', ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1 );
								}
							}
						}
					}

					// Make sure the Woo sorting element works on search results, if the only listed post type is products.
					if ( ! is_admin() && $query->is_search() && isset( $query->query['post_type'] ) && is_string( $query->query['post_type'] ) && 'product' === $query->query['post_type'] && class_exists( 'WooCommerce' ) && class_exists( 'Avada_Woocommerce' ) ) {
						global $avada_woocommerce;
						$ordering_args = $avada_woocommerce->get_catalog_ordering_args( $query->query_vars );

						$query->set( 'orderby', $ordering_args['orderby'] );
						$query->set( 'order', $ordering_args['order'] );
			
						if ( isset( $ordering_args['meta_key'] ) ) {
							$query->set( 'meta_key', $ordering_args['meta_key'] );
						}
					}
				}


				/**
				 * Get shortcodes from global elements.
				 *
				 * @access private
				 * @since 3.11
				 * @param  string $content TThe post content to be checked.
				 * @return string The post content string where global elements have been replaced.
				 */
				private function get_shortcodes_from_global_elements( $content ) {
					$pattern = '\[(\[?)(fusion_global)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)';

					// Get all globals and replace them with their contents.
					if ( preg_match_all( '/' . $pattern . '/s', $content, $matches ) && array_key_exists( 2, $matches ) && in_array( 'fusion_global', $matches[2], true ) ) {

						// Loop through matches.
						foreach ( $matches[0] as $key => $value ) {
							$result = shortcode_parse_atts( $matches[3][ $key ] );

							// Get content of the global element and replace the global shortcode with its content.
							if ( isset( $result['id'] ) && ! empty( $result['id'] ) ) {
								$result['id'] = apply_filters( 'wpml_object_id', $result['id'], 'fusion_element', true );
								$post         = get_post( $result['id'] );
								$content      = str_replace( $matches[0][ $key ], $post->post_content, $content );
							}
						}
					}

					return $content;
				}
			}
		}

		new FusionTB_Post_Card_Archives();
	}

	/**
	 * Map shortcode to Avada Builder
	 *
	 * @since 3.3
	 */
	function fusion_component_post_card_archives() {
		$fusion_settings = awb_get_fusion_settings();

		$editing           = function_exists( 'is_fusion_editor' ) && is_fusion_editor();
		$layouts_permalink = [];
		$layouts           = [
			'0' => esc_attr__( 'None', 'fusion-builder' ),
		];

		// If builder get custom layout options.
		if ( $editing && function_exists( 'Fusion_Builder_Library' ) ) {
			// In case taxonomy is not registered yet, register.
			Fusion_Builder_Library()->register_layouts();

			$post_cards = get_posts(
				[
					'post_type'      => 'fusion_element',
					'posts_per_page' => '-1',
					'tax_query'      => [ // phpcs:ignore WordPress.DB.SlowDBQuery
						[
							'taxonomy' => 'element_category',
							'field'    => 'slug',
							'terms'    => 'post_cards',
						],
					],
				]
			);

			if ( $post_cards ) {
				foreach ( $post_cards as $post_card ) {
					$permalink                           = preg_replace( '/https.+\/fusion_element/', get_site_url() . '/fusion_element/', $post_card->guid );
					$layouts[ $post_card->ID ]           = $post_card->post_title;
					$layouts_permalink[ $post_card->ID ] = $permalink;					
				}
			}
		}

		$library_link = '<a href="' . admin_url( 'admin.php?page=avada-library' ) . '" target="_blank">' . esc_attr__( 'Avada Library', 'fusion-builder' ) . '</a>';

		// Navigation section.
		$arrows_dependency = [
			[
				'element'  => 'layout',
				'value'    => 'grid',
				'operator' => '!=',
			],
			[
				'element'  => 'layout',
				'value'    => 'masonry',
				'operator' => '!=',
			],
			[
				'element'  => 'show_nav',
				'value'    => 'no',
				'operator' => '!=',
			],
			[
				'element'  => 'show_nav',
				'value'    => 'dots',
				'operator' => '!=',
			],
		];
		$dots_dependency   = [
			[
				'element'  => 'layout',
				'value'    => 'grid',
				'operator' => '!=',
			],
			[
				'element'  => 'layout',
				'value'    => 'masonry',
				'operator' => '!=',
			],
			[
				'element'  => 'show_nav',
				'value'    => 'no',
				'operator' => '!=',
			],
			[
				'element'  => 'show_nav',
				'value'    => 'yes',
				'operator' => '!=',
			],
		];

		$link_off_canvas_option = [];
		if ( class_exists( 'AWB_Off_Canvas_Front_End' ) && false !== AWB_Off_Canvas::is_enabled() ) {
			$off_canvas_items = AWB_Off_Canvas_Front_End()->get_available_items();
			$off_canvas_array = [ '' => esc_html__( 'None', 'fusion-builder' ) ];
			$off_canvas_array = $off_canvas_array + $off_canvas_items;

			$link_off_canvas_option = [
				'type'        => 'select',
				'heading'     => esc_html__( 'Link Off Canvas', 'fusion-builder' ),
				'description' => esc_html__( 'Select an Off Canvas you want to link to your Post Cards element. This allows you to fill the Off Canvas dynamic data endpoints with the data of the single Post Cards..', 'fusion-builder' ),
				'param_name'  => 'linked_off_canvas',
				'default'     => '',
				'value'       => $off_canvas_array,
			];
		}

		fusion_builder_map(
			fusion_builder_frontend_data(
				'FusionTB_Post_Card_Archives',
				[
					'name'         => esc_attr__( 'Post Card Archives', 'fusion-builder' ),
					'shortcode'    => 'fusion_tb_post_card_archives',
					'help_url'     => 'https://avada.com/documentation/post-card-archives-element/',
					'icon'         => 'fusiona-product-grid-and-archives',
					'subparam_map' => [
						'separator_width' => 'dimensions_width',
					],
					'component'    => true,
					'templates'    => [ 'content' ],
					'params'       => [
						[
							'type'        => 'select',
							'heading'     => esc_attr__( 'Post Card', 'fusion-builder' ),
							'group'       => esc_attr__( 'General', 'fusion-builder' ),

							/* translators: The Avada Library link. */
							'description' => sprintf( __( 'Select a saved Post Card design to use. Create new or edit existing Post Cards in the %s.', 'fusion-builder' ), $library_link ),
							'param_name'  => 'post_card',
							'default'     => '0',
							'value'       => $layouts,
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
							'quick_edit'  => [
								'label' => esc_html__( 'Edit Post Card', 'fusion-builder' ),
								'type'  => 'post_card',
								'items' => $layouts_permalink,
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Apply Alternate Post Cards', 'fusion-builder' ),
							'description' => esc_attr__( 'Set to "yes" to enable alternating Post Cards.', 'fusion-builder' ),
							'param_name'  => 'apply_alternate_post_cards',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'no',
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
						],
						[
							'type'           => 'repeater',
							'param_name'     => 'alternate_post_cards',
							'heading'        => esc_html__( 'Alternate Post Cards', 'fusion-builder' ),
							'description'    => esc_html__( 'Add alternate Post Cards', 'fusion-builder' ),
							'group'          => esc_attr__( 'General', 'fusion-builder' ),
							'row_add'        => esc_html__( 'Add Post Card', 'fusion-builder' ),
							'row_title'      => esc_html__( 'Alternate Post Card', 'fusion-builder' ),
							'bind_title'     => 'alternate_post_card',
							//'title_prefix'   => esc_html__( 'Post Card', 'fusion-builder' ),
							'skip_empty_row' => true,
							'fields'         => [
								'alternate_post_card' => [
									'type'        => 'select',
									'heading'     => esc_attr__( 'Post Card', 'fusion-builder' ),
									/* translators: The Avada Library link. */
									'description' => sprintf( __( 'Select a saved Post Card. Create new or edit existing ones in the %s.', 'fusion-builder' ), $library_link ),
									'param_name'  => 'alternate_post_card',
									'default'     => '0',
									'value'       => $layouts,
									'callback'    => [
										'function' => 'fusion_ajax',
										'action'   => 'get_fusion_tb_post_card_archives',
										'ajax'     => true,
									],
									'quick_edit'  => [
										'label' => esc_html__( 'Edit Post Card', 'fusion-builder' ),
										'type'  => 'post_card',
										'items' => $layouts_permalink,
									],
								],
								'post_card_position' => [
									'type'        => 'range',
									'heading'     => esc_html__( 'Position', 'fusion-builder' ),
									'description' => esc_html__( 'Set the position in the layout, and repeat card once every chosen number of items.', 'fusion-builder' ),
									'param_name'  => 'post_card_position',
									'min'         => '1',
									'max'         => '50',
									'step'        => '1',
									'value'       => '',
									'dependency'  => [
										[
											'element'  => 'alternate_post_card',
											'value'    => '0',
											'operator' => '!=',
										],
									],
									'callback'    => [
										'function' => 'fusion_ajax',
										'action'   => 'get_fusion_tb_post_card_archives',
										'ajax'     => true,
									],
								],
								'apply_once' => [
									'type'        => 'radio_button_set',
									'heading'     => esc_attr__( 'Apply Once', 'fusion-builder' ),
									'description' => esc_attr__( 'Set to "yes" to apply the Post Card only once at the chosen position.', 'fusion-builder' ),
									'param_name'  => 'apply_once',
									'value'       => [
										'once' => esc_attr__( 'Yes', 'fusion-builder' ),
										'loop' => esc_attr__( 'No', 'fusion-builder' ),
									],
									'default'     => 'loop',
									'dependency'  => [
										[
											'element'  => 'alternate_post_card',
											'value'    => '0',
											'operator' => '!=',
										],
									],
									'callback'    => [
										'function' => 'fusion_ajax',
										'action'   => 'get_fusion_tb_post_card_archives',
										'ajax'     => true,
									],
								],
								'column_span' => [
									'type'        => 'range',
									'heading'     => esc_html__( 'Column Span', 'fusion-builder' ),
									'description' => __( 'Set card to span across multiple columns within the element. <strong>NOTE:</strong> The result will depend on the total number of columns chosen. Using this option together with the masonry layout might cause unexpected effects.', 'fusion-builder' ),
									'param_name'  => 'column_span',
									'min'         => '1',
									'max'         => '6',
									'step'        => '1',
									'value'       => '1',
									'responsive'  => [
										'state'        => 'large',
										'values'       => [
											'medium' => '0',
											'small'  => '0',
										],
										'descriptions' => [
											'small'  => esc_html__( 'Set card to span across multiple columns. Leave at 0 for automatic column breaking.', 'fusion-builder' ),
											'medium' => esc_html__( 'Set card to span across multiple columns. Leave at 0 for automatic column breaking.', 'fusion-builder' ),
										],
									],
									'dependency'  => [
										[
											'element'  => 'alternate_post_card',
											'value'    => '0',
											'operator' => '!=',
										],
										[
											'element'  => 'layout',
											'value'    => 'carousel',
											'operator' => '!=',
										],
										[
											'element'  => 'layout',
											'value'    => 'marquee',
											'operator' => '!=',
										],
										[
											'element'  => 'layout',
											'value'    => 'coverflow',
											'operator' => '!=',
										],
										[
											'element'  => 'layout',
											'value'    => 'slider',
											'operator' => '!=',
										],
										[
											'element'  => 'layout',
											'value'    => 'stacking',
											'operator' => '!=',
										],
									],
									'callback'    => [
										'function' => 'reRender',
										'ajax'     => false,
									],
								],
							],
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
							'dependency'  => [
								[
									'element'  => 'apply_alternate_post_cards',
									'value'    => 'yes',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'select',
							'heading'     => esc_attr__( 'Post Card List View', 'fusion-builder' ),
							'group'       => esc_attr__( 'General', 'fusion-builder' ),

							/* translators: The Avada Library link. */
							'description' => sprintf( __( 'This post card will be used in the list view which can be triggered with the sorting element (WooCommerce). Post cards can be created in the %s.', 'fusion-builder' ), $library_link ),
							'param_name'  => 'post_card_list_view',
							'default'     => '0',
							'value'       => $layouts,
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
						],
						$link_off_canvas_option,
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Post Cards Display', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose what to display on post cards page.', 'fusion-builder' ),
							'param_name'  => 'source',
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
							'value'       => [
								'posts' => esc_attr__( 'Posts', 'fusion-builder' ),
								'terms' => esc_attr__( 'Terms', 'fusion-builder' ),
							],
							'default'     => 'posts',
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Posts Per Page / Per Element', 'fusion-builder' ),
							'description' => sprintf(
								/* translators: %1$s: Portfolio Link. %2$s: Products Link. */
								esc_attr__( 'Select number of posts per page, or per Post Card Archives element if there are several elements within one layout section. Set to -1 to display all. Set to 0 to use the post type default number of posts. For %1$s and %2$s this comes from the global options. For all others Settings > Reading.', 'fusion-builder' ),
								'<a href="' . admin_url( 'themes.php?page=avada_options#portfolio_archive_items' ) . '" target="_blank">' . esc_attr__( 'portfolio', 'fusion-builder' ) . '</a>',
								'<a href="' . admin_url( 'themes.php?page=avada_options#woo_items' ) . '" target="_blank">' . esc_attr__( 'products', 'fusion-builder' ) . '</a>'
							),
							'param_name'  => 'number_posts',
							'value'       => 0,
							'min'         => '-1',
							'max'         => '50',
							'step'        => '1',
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Posts Offset', 'fusion-builder' ),
							'description' => esc_attr__( 'The number of posts to skip. ex: 1.', 'fusion-builder' ),
							'param_name'  => 'offset',
							'value'       => '0',
							'min'         => '0',
							'max'         => '24',
							'step'        => '1',
							'callback'    => [
								'function' => 'fusion_ajax',
								'action'   => 'get_fusion_tb_post_card_archives',
								'ajax'     => true,
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Pagination Type', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the type of pagination.', 'fusion-builder' ),
							'param_name'  => 'scrolling',
							'default'     => 'pagination',
							'value'       => [
								'pagination'       => esc_html__( 'Pagination', 'fusion-builder' ),
								'infinite'         => esc_html__( 'Infinite Scroll', 'fusion-builder' ),
								'load_more_button' => esc_html__( 'Load More Button', 'fusion-builder' ),
							],
							'dependency'  => [
								[
									'element'  => 'source',
									'value'    => 'terms',
									'operator' => '!=',
								],
							],
						],
						[
							'type'         => 'tinymce',
							'heading'      => esc_attr__( 'Nothing Found Message', 'fusion-builder' ),
							'description'  => esc_attr__( 'Replacement text when no results are found.', 'fusion-builder' ),
							'param_name'   => 'element_content',
							'value'        => esc_html__( 'Nothing Found', 'fusion-builder' ),
							'placeholder'  => true,
							'dynamic_data' => true,
							'dependency'   => [
								[
									'element'  => 'source',
									'value'    => 'terms',
									'operator' => '!=',
								],
							],
						],
						[
							'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' ),
						],
						[
							'type'        => 'textfield',
							'heading'     => esc_attr__( 'CSS Class', 'fusion-builder' ),
							'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ),
							'param_name'  => 'class',
							'value'       => '',
						],
						[
							'type'        => 'textfield',
							'heading'     => esc_attr__( 'CSS ID', 'fusion-builder' ),
							'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ),
							'param_name'  => 'id',
							'value'       => '',
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Layout', 'fusion-builder' ),
							'description' => esc_attr__( 'Select how you want Post Cards to display.', 'fusion-builder' ),
							'param_name'  => 'layout',
							'value'       => [
								'grid'      => esc_attr__( 'Grid', 'fusion-builder' ),
								'masonry'   => esc_attr__( 'Masonry', 'fusion-builder' ),
								'carousel'  => esc_attr__( 'Carousel', 'fusion-builder' ),
								'marquee'   => esc_attr__( 'Marquee', 'fusion-builder' ),
								'coverflow' => esc_attr__( 'Coverflow', 'fusion-builder' ),
								'stacking'  => esc_attr__( 'Stacking Cards', 'fusion-builder' ),
								'slider'    => esc_attr__( 'Slider', 'fusion-builder' ),								
							],
							'default'     => 'grid',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_html__( 'Marquee Direction', 'fusion-builder' ),
							'description' => esc_html__( 'Select the marquee direction.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'marquee_direction',
							'default'     => 'left',
							'value'       => [
								'left'  => esc_html__( 'Left', 'fusion-builder' ),
								'right' => esc_html__( 'Right', 'fusion-builder' ),
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Stacking CardsOffset', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the offset at which stacking cards should become sticky.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'stacking_offset',
							'value'       => '0',
							'min'         => '0',
							'max'         => '500',
							'step'        => '1',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Post Card Rotation Angle', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the rotation angle for the Post Cards in coverflow layout.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'rotation_angle',
							'value'       => '50',
							'min'         => '0',
							'max'         => '180',
							'step'        => '1',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'coverflow',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Slide Depth', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the z-axis translation offset of the slides in coverflow layout.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'coverflow_depth',
							'value'       => '100',
							'min'         => '0',
							'max'         => '250',
							'step'        => '1',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'coverflow',
									'operator' => '==',
								],
							],
						],					
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Transition Style', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose the transition style for the slider layout.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'slider_animation',
							'value'       => [
								'fade'       => esc_attr__( 'Fade', 'fusion-builder' ),
								'flip'       => esc_attr__( 'Flip', 'fusion-builder' ),
								'flip_vert'  => esc_attr__( 'Flip Vertically', 'fusion-builder' ),
								'swipe'      => esc_attr__( 'Swipe', 'fusion-builder' ),
								'swipe_vert' => esc_attr__( 'Swipe Vertically', 'fusion-builder' ),
								'slide'      => esc_attr__( 'Slide', 'fusion-builder' ),
								'slide_vert' => esc_attr__( 'Slide Vertically', 'fusion-builder' ),
							],
							'default'     => 'fade',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Post Card Alignment', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the Post Cards alignment within rows.', 'fusion-builder' ),
							'param_name'  => 'flex_align_items',
							'back_icons'  => true,
							'grid_layout' => true,
							'value'       => [
								'flex-start' => esc_attr__( 'Flex Start', 'fusion-builder' ),
								'center'     => esc_attr__( 'Center', 'fusion-builder' ),
								'flex-end'   => esc_attr__( 'Flex End', 'fusion-builder' ),
								'stretch'    => esc_attr__( 'Stretch', 'fusion-builder' ),
							],
							'icons'       => [
								'flex-start' => '<span class="fusiona-align-top-columns"></span>',
								'center'     => '<span class="fusiona-align-center-columns"></span>',
								'flex-end'   => '<span class="fusiona-align-bottom-columns"></span>',
								'stretch'    => '<span class="fusiona-full-height"></span>',
							],
							'default'     => 'flex-start',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Number of Columns', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the number of columns per row.', 'fusion-builder' ),
							'param_name'  => 'columns',
							'value'       => '4',
							'min'         => '0',
							'max'         => '6',
							'step'        => '1',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'responsive'  => [
								'state'        => 'large',
								'values'       => [
									'medium' => '0',
									'small'  => '1',
								],
								'descriptions' => [
									'medium' => esc_attr__( 'Set the number of columns per row. Leave at 0 to inherit from large.', 'fusion-builder' ),
									'small'  => esc_attr__( 'Set the number of columns per row. Leave at 0 to inherit from large.', 'fusion-builder' ),
								],
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Column Spacing', 'fusion-builder' ),
							'description' => esc_attr__( "Insert the amount of horizontal spacing between items without 'px'. ex: 40.", 'fusion-builder' ),
							'param_name'  => 'column_spacing',
							'value'       => '40',
							'min'         => '0',
							'max'         => '300',
							'step'        => '1',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => [
								[
									'element'  => 'columns',
									'value'    => '1',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Row Spacing', 'fusion-builder' ),
							'description' => esc_attr__( "Insert the amount of vertical spacing between items without 'px'. ex: 40.", 'fusion-builder' ),
							'param_name'  => 'row_spacing',
							'value'       => '40',
							'min'         => '0',
							'max'         => '300',
							'step'        => '1',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'carousel',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'coverflow',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'select',
							'heading'     => esc_attr__( 'Separator', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose the horizontal separator line style. This will only be used on single column grids or list view.', 'fusion-builder' ),
							'param_name'  => 'separator_style_type',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'callback'    => [
								'function' => 'fusion_post_card_separator',
								'ajax'     => false,
							],
							'value'       => [
								'none'          => esc_attr__( 'None', 'fusion-builder' ),
								'single solid'  => esc_attr__( 'Single Border Solid', 'fusion-builder' ),
								'double solid'  => esc_attr__( 'Double Border Solid', 'fusion-builder' ),
								'single|dashed' => esc_attr__( 'Single Border Dashed', 'fusion-builder' ),
								'double|dashed' => esc_attr__( 'Double Border Dashed', 'fusion-builder' ),
								'single|dotted' => esc_attr__( 'Single Border Dotted', 'fusion-builder' ),
								'double|dotted' => esc_attr__( 'Double Border Dotted', 'fusion-builder' ),
							],
							'default'     => 'none',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Separator Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the separator color.', 'fusion-builder' ),
							'param_name'  => 'separator_sep_color',
							'value'       => '',
							'default'     => $fusion_settings->get( 'sep_color' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'callback'    => [
								'function' => 'fusion_post_card_separator',
								'ajax'     => false,
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
								[
									'element'  => 'separator_style_type',
									'value'    => 'none',
									'operator' => '!=',
								],
							],
						],
						[
							'type'             => 'dimension',
							'remove_from_atts' => true,
							'heading'          => esc_attr__( 'Separator Width', 'fusion-builder' ),
							'param_name'       => 'dimensions_width',
							'value'            => [
								'separator_width' => '',
							],
							'description'      => esc_attr__( 'In pixels (px or %), ex: 1px, ex: 50%. Leave blank for full width.', 'fusion-builder' ),
							'group'            => esc_attr__( 'Design', 'fusion-builder' ),
							'callback'         => [
								'function' => 'fusion_post_card_separator',
								'ajax'     => false,
							],
							'dependency'       => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
								[
									'element'  => 'separator_style_type',
									'value'    => 'none',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Separator Alignment', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the separator alignment; only works when a width is specified.', 'fusion-builder' ),
							'param_name'  => 'separator_alignment',
							'value'       => [
								'center' => esc_attr__( 'Center', 'fusion-builder' ),
								'left'   => esc_attr__( 'Left', 'fusion-builder' ),
								'right'  => esc_attr__( 'Right', 'fusion-builder' ),
							],
							'default'     => 'center',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'callback'    => [
								'function' => 'fusion_post_card_separator',
								'ajax'     => false,
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
								[
									'element'  => 'separator_style_type',
									'value'    => 'none',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Separator Border Size', 'fusion-builder' ),
							'param_name'  => 'separator_border_size',
							'value'       => '',
							'min'         => '0',
							'max'         => '50',
							'step'        => '1',
							'default'     => $fusion_settings->get( 'separator_border_size' ),
							'description' => esc_attr__( 'In pixels. ', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'callback'    => [
								'function' => 'fusion_post_card_separator',
								'ajax'     => false,
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
								[
									'element'  => 'separator_style_type',
									'value'    => 'none',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Transition Speed', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the duration of the transition between Post Cards. In milliseconds.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'transition_speed',
							'value'       => '500',
							'min'         => '50',
							'max'         => '2000',
							'step'        => '50',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Scroll Items', 'fusion-builder' ),
							'description' => esc_attr__( 'Insert the amount of items to scroll. Leave empty to scroll number of visible items.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'scroll_items',
							'min'         => '1',
							'max'         => '50',
							'step'        => '1',
							'value'       => '0',
							'responsive'  => [
								'state'        => 'large',
								'values'       => [
									'small'  => '0',
									'medium' => '0',
								],
								'descriptions' => [
									'small'  => esc_attr__( 'Insert the amount of items to scroll. Leave at 0 to scroll number of visible items.', 'fusion-builder' ),
									'medium' => esc_attr__( 'Insert the amount of items to scroll. Leave at 0 to scroll number of visible items.', 'fusion-builder' ),
								],
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Center Active Post Cards', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to always have the active Post Card centered. Otherwise it will be left on LTR and right on RTL sites.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'centered_slides',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'no',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_html__( 'Mask Edges', 'fusion-builder' ),
							'description' => esc_html__( 'Choose if the edges should be masked with a fade out effect. Navigation arrows will not be displayed, if masked edges are active.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'mask_edges',
							'default'     => 'no',
							'value'       => [
								'yes' => esc_html__( 'Yes', 'fusion-builder' ),
								'no'  => esc_html__( 'No', 'fusion-builder' ),
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],			
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],			
							],
						],						
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_html__( 'Display Shadow', 'fusion-builder' ),
							'description' => esc_html__( 'Choose to show a shadow on the individual slides on coverflow layout or during transitions.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'display_shadow',
							'default'     => 'no',
							'value'       => [
								'yes' => esc_html__( 'Yes', 'fusion-builder' ),
								'no'  => esc_html__( 'No', 'fusion-builder' ),
							],
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],						
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Autoplay', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to autoplay the items.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'autoplay',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'no',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Autoplay Speed', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the autoplay speed, the duration between transitions. In milliseconds.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'autoplay_speed',
							'value'       => '',
							'default'     => $fusion_settings->get( 'carousel_speed' ),
							'min'         => '500',
							'max'         => '20000',
							'step'        => '100',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
								[
									'element'  => 'autoplay',
									'value'    => 'no',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Autoplay Pause On Hover', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to pause autoplay on hover.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'autoplay_hover_pause',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'no',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Loop', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to enable continuous loop mode.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'loop',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'yes',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],

						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Mouse Control', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to enable mouse drag and/or wheel control on the carousel, coverflow and slider layouts.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'mouse_scroll',
							'value'       => [
								'yes'        => esc_attr__( 'Drag', 'fusion-builder' ),
								'wheel'      => esc_attr__( 'Wheel', 'fusion-builder' ),
								'drag_wheel' => esc_attr__( 'Drag & Wheel', 'fusion-builder' ),
								'no'         => esc_attr__( 'None', 'fusion-builder' ),
							],
							'default'     => 'no',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Free Mode', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to enable free mode for dragging and scrolling the Post Cards arbitrary amounts.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'free_mode',
							'value'       => [
								'yes' => esc_attr__( 'Yes', 'fusion-builder' ),
								'no'  => esc_attr__( 'No', 'fusion-builder' ),
							],
							'default'     => 'no',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_scroll',
									'value'    => 'no',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Mouse Pointer', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose to enable mouse drag custom cursor.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'mouse_pointer',
							'value'       => [
								'default' => esc_attr__( 'Default', 'fusion-builder' ),
								'custom'  => esc_attr__( 'Custom', 'fusion-builder' ),
							],
							'default'     => 'default',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_scroll',
									'value'    => 'no',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Cursor Color Mode', 'fusion-builder' ),
							'description' => esc_attr__( 'Choose cursor color mode.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'cursor_color_mode',
							'value'       => [
								'auto'   => esc_attr__( 'Automatic', 'fusion-builder' ),
								'custom' => esc_attr__( 'Custom Color', 'fusion-builder' ),
							],
							'default'     => 'auto',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_scroll',
									'value'    => 'no',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_pointer',
									'value'    => 'custom',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Cursor Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of cursor.', 'fusion-builder' ),
							'param_name'  => 'cursor_color',
							'value'       => '',
							'default'     => '',
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_scroll',
									'value'    => 'no',
									'operator' => '!=',
								],
								[
									'element'  => 'mouse_pointer',
									'value'    => 'custom',
									'operator' => '==',
								],
								[
									'element'  => 'cursor_color_mode',
									'value'    => 'custom',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Show Navigation', 'fusion-builder' ),
							'description' => __( 'Choose to show navigation buttons on the carousel / slider. <strong>Note:</strong> You can also set the CSS ID (e.g. my-id) for this Post Card Archives element and use #my-id-next, #my-id-prev as links on a Button element to navigate through the slides.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'  => 'show_nav',
							'value'       => [
								'no'          => esc_attr__( 'None', 'fusion-builder' ),
								'yes'         => esc_attr__( 'Arrows', 'fusion-builder' ),
								'dots'        => esc_attr__( 'Dots', 'fusion-builder' ),
								'arrows_dots' => esc_attr__( 'Arrows & Dots', 'fusion-builder' ),
							],
							'default'     => 'yes',
							'dependency'  => [
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'marquee',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'masonry',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'stacking',
									'operator' => '!=',
								],
							],
						],
						[
							'type'        => 'dimension',
							'heading'     => esc_attr__( 'Arrow Box Dimensions', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the width and height of the arrow box. Enter values including any valid CSS unit.', 'fusion-builder' ),
							'param_name'  => 'arrow_box',
							'value'       => [
								'arrow_box_width'  => '',
								'arrow_box_height' => '',
							],
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'textfield',
							'heading'     => esc_attr__( 'Arrow Icon Size', 'fusion-builder' ),
							'description' => esc_attr__( 'Set the arrow icon size. Enter value including any valid CSS unit, ex: 14px.', 'fusion-builder' ),
							'param_name'  => 'arrow_size',
							'value'       => '',
							'default'     => '',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'iconpicker',
							'heading'     => esc_attr__( 'Previous Icon', 'fusion-builder' ),
							'param_name'  => 'prev_icon',
							'value'       => '',
							'description' => esc_attr__( 'Click an icon to select, click again to deselect.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'iconpicker',
							'heading'     => esc_attr__( 'Next Icon', 'fusion-builder' ),
							'param_name'  => 'next_icon',
							'value'       => '',
							'description' => esc_attr__( 'Click an icon to select, click again to deselect.', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'dimension',
							'heading'     => esc_attr__( 'Arrow Position', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the position of the arrow. Enter value including any valid CSS unit, ex: 14px.', 'fusion-builder' ),
							'param_name'  => 'arrow_position',
							'value'       => [
								'arrow_position_horizontal' => '',
								'arrow_position_vertical' => '',
							],
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $arrows_dependency,
						],
						[
							'type'             => 'dimension',
							'remove_from_atts' => true,
							'heading'          => esc_attr__( 'Arrow Border Radius', 'fusion-builder' ),
							'description'      => __( 'Enter values including any valid CSS unit, ex: 10px.', 'fusion-builder' ),
							'param_name'       => 'arrow_border_radius',
							'group'            => esc_attr__( 'Design', 'fusion-builder' ),
							'value'            => [
								'arrow_border_radius_top_left'     => '',
								'arrow_border_radius_top_right'    => '',
								'arrow_border_radius_bottom_right' => '',
								'arrow_border_radius_bottom_left'  => '',
							],
							'dependency'       => array_merge( $arrows_dependency ),
						],
						[
							'type'             => 'subgroup',
							'heading'          => esc_html__( 'Arrows Styling', 'fusion-builder' ),
							'description'      => esc_html__( 'Use filters to see specific type of content.', 'fusion-builder' ),
							'param_name'       => 'arrow_styling',
							'default'          => 'regular',
							'group'            => esc_html__( 'Design', 'fusion-builder' ),
							'remove_from_atts' => true,
							'value'            => [
								'regular' => esc_html__( 'Regular', 'fusion-builder' ),
								'hover'   => esc_html__( 'Hover / Active', 'fusion-builder' ),
							],
							'icons'            => [
								'regular' => '<span class="fusiona-regular-state" style="font-size:18px;"></span>',
								'hover'   => '<span class="fusiona-hover-state" style="font-size:18px;"></span>',
							],
							'dependency'       => $arrows_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Arrow Background Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the background color of arrow.', 'fusion-builder' ),
							'param_name'  => 'arrow_bgcolor',
							'value'       => '',
							'default'     => $fusion_settings->get( 'carousel_nav_color' ),
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'arrow_styling',
								'tab'  => 'regular',
							],
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Arrow Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of arrow.', 'fusion-builder' ),
							'param_name'  => 'arrow_color',
							'value'       => '',
							'default'     => '#fff',
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'arrow_styling',
								'tab'  => 'regular',
							],
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Arrow Background Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of arrow.', 'fusion-builder' ),
							'param_name'  => 'arrow_hover_bgcolor',
							'value'       => '',
							'default'     => $fusion_settings->get( 'carousel_hover_color' ),
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'arrow_styling',
								'tab'  => 'hover',
							],
							'dependency'  => $arrows_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Arrow Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of arrow.', 'fusion-builder' ),
							'param_name'  => 'arrow_hover_color',
							'value'       => '',
							'default'     => '#fff',
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'arrow_styling',
								'tab'  => 'hover',
							],
							'dependency'  => $arrows_dependency,
						],

						// Dots section.
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Dots Position', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the position of the dots. Enter value including any valid CSS unit, ex: 14px.', 'fusion-builder' ),
							'param_name'  => 'dots_position',
							'value'       => [
								'above'  => esc_attr__( 'Above', 'fusion-builder' ),
								'top'    => esc_attr__( 'Top', 'fusion-builder' ),
								'bottom' => esc_attr__( 'Bottom', 'fusion-builder' ),
								'below'  => esc_attr__( 'Below', 'fusion-builder' ),
							],
							'default'     => 'bottom',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $dots_dependency,
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Dots Spacing', 'fusion-builder' ),
							'param_name'  => 'dots_spacing',
							'value'       => '4',
							'min'         => '0',
							'max'         => '100',
							'step'        => '1',
							'description' => esc_attr__( 'In pixels. ', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $dots_dependency,
						],
						[
							'type'             => 'dimension',
							'remove_from_atts' => true,
							'heading'          => esc_attr__( 'Dots Margin', 'fusion-builder' ),
							'description'      => esc_attr__( 'In pixels or percentage, ex: 10px or 10%.', 'fusion-builder' ),
							'param_name'       => 'dots_margin',
							'value'            => [
								'dots_margin_top'    => '',
								'dots_margin_bottom' => '',
							],
							'group'            => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'       => $dots_dependency,
						],
						[
							'type'        => 'radio_button_set',
							'heading'     => esc_attr__( 'Dots Alignment', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the border style of the arrow.', 'fusion-builder' ),
							'param_name'  => 'dots_align',
							'value'       => [
								'left'   => esc_attr__( 'Left', 'fusion-builder' ),
								'center' => esc_attr__( 'Center', 'fusion-builder' ),
								'right'  => esc_attr__( 'Right', 'fusion-builder' ),
							],
							'default'     => 'center',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'dependency'  => $dots_dependency,
						],
						[
							'type'             => 'subgroup',
							'heading'          => esc_html__( 'Dots Styling', 'fusion-builder' ),
							'description'      => esc_html__( 'Use filters to see specific type of content.', 'fusion-builder' ),
							'param_name'       => 'dots_styling',
							'default'          => 'regular',
							'group'            => esc_html__( 'Design', 'fusion-builder' ),
							'remove_from_atts' => true,
							'value'            => [
								'regular' => esc_html__( 'Regular', 'fusion-builder' ),
								'hover'   => esc_html__( 'Active', 'fusion-builder' ),
							],
							'icons'            => [
								'regular' => '<span class="fusiona-regular-state" style="font-size:18px;"></span>',
								'hover'   => '<span class="fusiona-hover-state" style="font-size:18px;"></span>',
							],
							'dependency'       => $dots_dependency,
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Dots Size', 'fusion-builder' ),
							'param_name'  => 'dots_size',
							'value'       => '8',
							'min'         => '0',
							'max'         => '100',
							'step'        => '1',
							'description' => esc_attr__( 'In pixels. ', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'dots_styling',
								'tab'  => 'regular',
							],
							'dependency'  => $dots_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Dots Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of arrow.', 'fusion-builder' ),
							'param_name'  => 'dots_color',
							'value'       => '',
							'default'     => $fusion_settings->get( 'carousel_hover_color' ),
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'dots_styling',
								'tab'  => 'regular',
							],
							'dependency'  => $dots_dependency,
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Dots Size', 'fusion-builder' ),
							'param_name'  => 'dots_active_size',
							'value'       => '8',
							'min'         => '0',
							'max'         => '100',
							'step'        => '1',
							'description' => esc_attr__( 'In pixels. ', 'fusion-builder' ),
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'dots_styling',
								'tab'  => 'hover',
							],
							'dependency'  => $dots_dependency,
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Dots Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the color of arrow.', 'fusion-builder' ),
							'param_name'  => 'dots_active_color',
							'value'       => '',
							'default'     => $fusion_settings->get( 'carousel_nav_color' ),
							'group'       => esc_html__( 'Design', 'fusion-builder' ),
							'subgroup'    => [
								'name' => 'dots_styling',
								'tab'  => 'hover',
							],
							'dependency'  => $dots_dependency,
						],

						[
							'type'             => 'dimension',
							'remove_from_atts' => true,
							'heading'          => esc_attr__( 'Navigation Margin', 'fusion-builder' ),
							'description'      => esc_attr__( 'Controls the space between content and navigation. Enter value including any valid CSS unit, ex: -40px.', 'fusion-builder' ),
							'group'            => esc_attr__( 'Design', 'fusion-builder' ),
							'param_name'       => 'nav_margin',
							'value'            => [
								'nav_margin_bottom' => '',
							],
							'dependency'       => [
								[
									'element'  => 'layout',
									'value'    => 'slider',
									'operator' => '==',
								],
								[
									'element'  => 'show_nav',
									'value'    => 'yes',
									'operator' => '==',
								],
							],
						],
						[
							'type'             => 'dimension',
							'remove_from_atts' => true,
							'heading'          => esc_attr__( 'Margin', 'fusion-builder' ),
							'description'      => esc_attr__( 'In pixels or percentage, ex: 10px or 10%.', 'fusion-builder' ),
							'param_name'       => 'margin',
							'value'            => [
								'margin_top'    => '',
								'margin_right'  => '',
								'margin_bottom' => '',
								'margin_left'   => '',
							],
							'group'            => esc_attr__( 'Design', 'fusion-builder' ),
						],
						[
							'type'             => 'subgroup',
							'heading'          => esc_html__( 'Load More - Button Styling', 'fusion-builder' ),
							'description'      => esc_html__( 'Customize "Load More" button colors.', 'fusion-builder' ),
							'param_name'       => 'load_more_button',
							'default'          => 'regular',
							'group'            => esc_html__( 'Design', 'fusion-builder' ),
							'remove_from_atts' => true,
							'value'            => [
								'regular' => esc_html__( 'Regular', 'fusion-builder' ),
								'active'  => esc_html__( 'Active', 'fusion-builder' ),
							],
							'icons'            => [
								'regular' => '<span class="fusiona-regular-state" style="font-size:18px;"></span>',
								'active'  => '<span class="fusiona-hover-state" style="font-size:18px;"></span>',
							],
							'dependency'       => [
								[
									'element'  => 'scrolling',
									'value'    => 'load_more_button',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Text Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the button text color.', 'fusion-builder' ),
							'param_name'  => 'load_more_btn_color',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'value'       => '',
							'default'     => 'var(--awb-color8)',
							'subgroup'    => [
								'name' => 'load_more_button',
								'tab'  => 'regular',
							],
							'dependency'  => [
								[
									'element'  => 'scrolling',
									'value'    => 'load_more_button',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Background Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the button background color.', 'fusion-builder' ),
							'param_name'  => 'load_more_btn_bg_color',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'value'       => '',
							'default'     => 'var(--awb-color3)',
							'subgroup'    => [
								'name' => 'load_more_button',
								'tab'  => 'regular',
							],
							'dependency'  => [
								[
									'element'  => 'scrolling',
									'value'    => 'load_more_button',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Hover Text Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the button hover text color.', 'fusion-builder' ),
							'param_name'  => 'load_more_btn_hover_color',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'value'       => '',
							'default'     => 'var(--awb-color1)',
							'subgroup'    => [
								'name' => 'load_more_button',
								'tab'  => 'active',
							],
							'dependency'  => [
								[
									'element'  => 'scrolling',
									'value'    => 'load_more_button',
									'operator' => '==',
								],
							],
						],
						[
							'type'        => 'colorpickeralpha',
							'heading'     => esc_attr__( 'Hover Background Color', 'fusion-builder' ),
							'description' => esc_attr__( 'Select the button hover background color.', 'fusion-builder' ),
							'param_name'  => 'load_more_btn_hover_bg_color',
							'group'       => esc_attr__( 'Design', 'fusion-builder' ),
							'value'       => '',
							'default'     => 'var(--awb-color5)',
							'subgroup'    => [
								'name' => 'load_more_button',
								'tab'  => 'active',
							],
							'dependency'  => [
								[
									'element'  => 'scrolling',
									'value'    => 'load_more_button',
									'operator' => '==',
								],
							],
						],
						'fusion_conditional_render_placeholder' => [],
						'fusion_animation_placeholder' => [
							'preview_selector' => '.fusion-post-cards',
						],
						[
							'type'        => 'range',
							'heading'     => esc_attr__( 'Animation Delay', 'fusion-builder' ),
							'description' => esc_attr__( 'Controls the delay of animation between each element in a set. In seconds.', 'fusion-builder' ),
							'param_name'  => 'animation_delay',
							'group'       => esc_attr__( 'Extras', 'fusion-builder' ),
							'min'         => '0',
							'max'         => '1',
							'step'        => '0.1',
							'value'       => '0',
							'dependency'  => [
								[
									'element'  => 'animation_type',
									'value'    => '',
									'operator' => '!=',
								],
								[
									'element'  => 'layout',
									'value'    => 'grid',
									'operator' => '==',
								],
							],
							'preview'     => [
								'selector' => '.fusion-post-cards',
								'type'     => 'animation',
							],
						],
					],
					'callback'     => [
						'function' => 'fusion_ajax',
						'action'   => 'get_fusion_tb_post_card_archives',
						'ajax'     => true,
					],
				]
			)
		);
	}
	add_action( 'fusion_builder_before_init', 'fusion_component_post_card_archives' );
}
