<?php
/**
 * ReduxFramework Sample Config File
 * For full documentation, please visit: http://devs.redux.io/
 *
 * @package Redux Framework
 */

defined( 'ABSPATH' ) || exit;

if ( ! class_exists( 'Redux' ) ) {
	return;
}

// This is your option name where all the Redux data is stored.
$opt_name = 'theme_options';  // YOU MUST CHANGE THIS.  DO NOT USE 'redux_demo' IN YOUR PROJECT!!!

// Uncomment to disable demo mode.
/* Redux::disable_demo(); */  // phpcs:ignore Squiz.PHP.CommentedOutCode

$dir = __DIR__ . DIRECTORY_SEPARATOR;
$directory_uri = get_template_directory_uri();
$home_url = home_url('/');

/*
 * --> Used within different fields. Simply examples. Search for ACTUAL DECLARATION for field examples
 */

// Background Patterns Reader.
$sample_patterns_path = Redux_Core::$dir . '../sample/patterns/';
$sample_patterns_url  = Redux_Core::$url . '../sample/patterns/';
$sample_patterns      = array();

if ( is_dir( $sample_patterns_path ) ) {
	$sample_patterns_dir = opendir( $sample_patterns_path );

	if ( $sample_patterns_dir ) {

		// phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition
		while ( false !== ( $sample_patterns_file = readdir( $sample_patterns_dir ) ) ) {
			if ( stristr( $sample_patterns_file, '.png' ) !== false || stristr( $sample_patterns_file, '.jpg' ) !== false ) {
				$name              = explode( '.', $sample_patterns_file );
				$name              = str_replace( '.' . end( $name ), '', $sample_patterns_file );
				$sample_patterns[] = array(
					'alt' => $name,
					'img' => $sample_patterns_url . $sample_patterns_file,
				);
			}
		}
	}
}

// Used to except HTML tags in description arguments where esc_html would remove.
$kses_exceptions = array(
	'a'      => array(
		'href' => array(),
	),
	'strong' => array(),
	'br'     => array(),
	'code'   => array(),
);

/*
 * ---> BEGIN ARGUMENTS
 */

/**
 * All the possible arguments for Redux.
 * For full documentation on arguments, please refer to: https://devs.redux.io/core/arguments/
 */
$theme = wp_get_theme(); // For use with some settings. Not necessary.

// TYPICAL -> Change these values as you need/desire.
$args = array(
	// This is where your data is stored in the database and also becomes your global variable name.
	'opt_name'                  => $opt_name,

	// Name that appears at the top of your panel.
	'display_name'              => $theme->get( 'Name' ),

	// Version that appears at the top of your panel.
	'display_version'           => $theme->get( 'Version' ),

	// Specify if the admin menu should appear or not. Options: menu or submenu (Under appearance only).
	'menu_type'                 => 'menu',

	// Show the sections below the admin menu item or not.
	'allow_sub_menu'            => true,

	// The text to appear in the admin menu.
	'menu_title'                => esc_html__( 'تنظیمات قالب', 'your-textdomain-here' ),

	// The text to appear on the page title.
	'page_title'                => esc_html__( 'تنظیمات قالب', 'your-textdomain-here' ),

	// Disable to create your own Google fonts loader.
	'disable_google_fonts_link' => false,

	// Show the panel pages on the admin bar.
	'admin_bar'                 => true,

	// Icon for the admin bar menu.
	'admin_bar_icon'            => 'dashicons-portfolio',

	// Priority for the admin bar menu.
	'admin_bar_priority'        => 50,

	// Sets a different name for your global variable other than the opt_name.
	'global_variable'           => $opt_name,

	// Show the time the page took to load, etc. (forced on while on localhost or when WP_DEBUG is enabled).
	'dev_mode'                  => false,

	// Enable basic customizer support.
	'customizer'                => true,

	// Allow the panel to open expanded.
	'open_expanded'             => false,

	// Disable the save warning when a user changes a field.
	'disable_save_warn'         => false,

	// Order where the menu appears in the admin area. If there is any conflict, something will not show. Warning.
	'page_priority'             => 90,

	// For a full list of options, visit: http://codex.wordpress.org/Function_Reference/add_submenu_page#Parameters.
	'page_parent'               => 'themes.php',

	// Permissions needed to access the options panel.
	'page_permissions'          => 'manage_options',

	// Specify a custom URL to an icon.
	'menu_icon'                 => '',

	// Force your panel to always open to a specific tab (by id).
	'last_tab'                  => '',

	// Icon displayed in the admin panel next to your menu_title.
	'page_icon'                 => 'icon-themes',

	// Page slug used to denote the panel, will be based off page title, then menu title, then opt_name if not provided.
	'page_slug'                 => $opt_name,

	// On load save the defaults to DB before user clicks save.
	'save_defaults'             => true,

	// Display the default value next to each field when not set to the default value.
	'default_show'              => false,

	// What to print by the field's title if the value shown is default.
	'default_mark'              => '*',

	// Shows the Import/Export panel when not used as a field.
	'show_import_export'        => false,

	// The time transients will expire when the 'database' arg is set.
	'transient_time'            => 60 * MINUTE_IN_SECONDS,

	// Global shut-off for dynamic CSS output by the framework. Will also disable google fonts output.
	'output'                    => true,

	// Allows dynamic CSS to be generated for customizer and google fonts,
	// but stops the dynamic CSS from going to the page head.
	'output_tag'                => true,

	// Disable the footer credit of Redux. Please leave if you can help it.
	'footer_credit'             => '',

	// If you prefer not to use the CDN for ACE Editor.
	// You may download the Redux Vendor Support plugin to run locally or embed it in your code.
	'use_cdn'                   => true,

	// Set the theme of the option panel.  Use 'wp' to use a more modern style, default is classic.
	'admin_theme'               => 'wp',

	// Enable or disable flyout menus when hovering over a menu with submenus.
	'flyout_submenus'           => true,

	// Mode to display fonts (auto|block|swap|fallback|optional)
	// See: https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display.
	'font_display'              => 'swap',

	// HINTS.
	'hints'                     => array(
		'icon'          => 'el el-question-sign',
		'icon_position' => 'right',
		'icon_color'    => 'lightgray',
		'icon_size'     => 'normal',
		'tip_style'     => array(
			'color'   => 'red',
			'shadow'  => true,
			'rounded' => false,
			'style'   => '',
		),
		'tip_position'  => array(
			'my' => 'top left',
			'at' => 'bottom right',
		),
		'tip_effect'    => array(
			'show' => array(
				'effect'   => 'slide',
				'duration' => '500',
				'event'    => 'mouseover',
			),
			'hide' => array(
				'effect'   => 'slide',
				'duration' => '500',
				'event'    => 'click mouseleave',
			),
		),
	),

	// FUTURE -> Not in use yet, but reserved or partially implemented. Use at your own risk.
	// Possible: options, theme_mods, theme_mods_expanded, transient. Not fully functional, warning!
	'database'                  => '',
	'network_admin'             => true,
	'search'                    => true,
);


// ADMIN BAR LINKS -> Setup custom links in the admin bar menu as external items.
// PLEASE CHANGE THESE SETTINGS IN YOUR THEME BEFORE RELEASING YOUR PRODUCT!!
// If these are left unchanged, they will not display in your panel!
//$args['admin_bar_links'][] = array(
//	'id'    => 'redux-docs',
//	'href'  => '//devs.redux.io/',
//	'title' => __( 'Documentation', 'your-textdomain-here' ),
//);
//
//$args['admin_bar_links'][] = array(
//	'id'    => 'redux-support',
//	'href'  => '//github.com/ReduxFramework/redux-framework/issues',
//	'title' => __( 'Support', 'your-textdomain-here' ),
//);

// SOCIAL ICONS -> Setup custom links in the footer for quick links in your panel footer icons.
// PLEASE CHANGE THESE SETTINGS IN YOUR THEME BEFORE RELEASING YOUR PRODUCT!!
// If these are left unchanged, they will not display in your panel!
//$args['share_icons'][] = array(
//	'url'   => '//github.com/ReduxFramework/ReduxFramework',
//	'title' => 'Visit us on GitHub',
//	'icon'  => 'el el-github',
//);
//$args['share_icons'][] = array(
//	'url'   => '//www.facebook.com/pages/Redux-Framework/243141545850368',
//	'title' => 'Like us on Facebook',
//	'icon'  => 'el el-facebook',
//);
//$args['share_icons'][] = array(
//	'url'   => '//twitter.com/reduxframework',
//	'title' => 'Follow us on Twitter',
//	'icon'  => 'el el-twitter',
//);
//$args['share_icons'][] = array(
//	'url'   => '//www.linkedin.com/company/redux-framework',
//	'title' => 'Find us on LinkedIn',
//	'icon'  => 'el el-linkedin',
//);

// Panel Intro text -> before the form.
if ( ! isset( $args['global_variable'] ) || false !== $args['global_variable'] ) {
	if ( ! empty( $args['global_variable'] ) ) {
		$v = $args['global_variable'];
	} else {
		$v = str_replace( '-', '_', $args['opt_name'] );
	}

	// translators:  Panel opt_name.
//	$args['intro_text'] = '<p>' . sprintf( esc_html__( 'Did you know that Redux sets a global variable for you? To access any of your saved options from within your code you can use your global variable: $%1$s', 'your-textdomain-here' ), '<strong>' . $v . '</strong>' ) . '<p>';
} else {
//	$args['intro_text'] = '<p>' . esc_html__( 'This text is displayed above the options panel. It isn\'t required, but more info is always better! The intro_text field accepts all HTML.', 'your-textdomain-here' ) . '</p>';
}

// Add content after the form.
//$args['footer_text'] = '<p>' . esc_html__( 'This text is displayed below the options panel. It isn\'t required, but more info is always better! The footer_text field accepts all HTML.', 'your-textdomain-here' ) . '</p>';

Redux::set_args( $opt_name, $args );

/*
 * ---> END ARGUMENTS
 */

/*
 * ---> START HELP TABS
 */
$help_tabs = array(
	array(
		'id'      => 'redux-help-tab-1',
		'title'   => esc_html__( 'Theme Information 1', 'your-textdomain-here' ),
		'content' => '<p>' . esc_html__( 'This is the tab content, HTML is allowed.', 'your-textdomain-here' ) . '</p>',
	),
	array(
		'id'      => 'redux-help-tab-2',
		'title'   => esc_html__( 'Theme Information 2', 'your-textdomain-here' ),
		'content' => '<p>' . esc_html__( 'This is the tab content, HTML is allowed.', 'your-textdomain-here' ) . '</p>',
	),
);
Redux::set_help_tab( $opt_name, $help_tabs );

// Set the help sidebar.
$content = '<p>' . esc_html__( 'This is the sidebar content, HTML is allowed.', 'your-textdomain-here' ) . '</p>';

Redux::set_help_sidebar( $opt_name, $content );

/*
 * <--- END HELP TABS
 */

/*
 * ---> START SECTIONS
 */

// -> START Basic Fields
/** تنظیمات عمومی **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'تنظیمات عمومی',
		'id' => 'basic',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'el el-home',
	)
);

/** زیر منو سربرگ **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'سربرگ',
		'id' => 'option-header',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'option-header-select',
				'type' => 'select',
				'title' => 'انتخاب سربرگ',
				'subtitle' => 'از این قسمت سربرگ مدنظر خود را اضافه کنید',
				'desc' => '',
				'options' => array(
					'options-header-1' => 'سربرگ اصلی (۱)'
				)),
			'default' => 'options-header-1',
			array(
				'id' => 'opt-header-logo',
				'type' => 'media',
				'url' => true,
				'title' => 'لوگو',
				'desc' => '',
				'subtitle' => 'لطفا لوگوی سایت را برای نمایش در سربرگ انتخاب  (ابعاد پیشنهادی :  125 در 50 پیکسل)',
				'default' => array(
					'url' => '',
				)),
			array(
				'id' => 'opt-header-buttons-link',
				'type' => 'text',
				'title' => 'لینک دکمه‌های سربرگ',
				'desc' => 'جهت سفارشی سازی لینک‌های دکمه سربرگ (حساب کاربری)',
			),
			array(
				'id' => 'opt-header-buttons-link-2',
				'type' => 'text',
				'title' => 'لینک دکمه‌های سربرگ',
				'desc' => 'جهت سفارشی سازی لینک‌های دکمه سربرگ (سبد خرید)',
			),
			array(
				'id' => 'opt-header-buttons-link-3',
				'type' => 'text',
				'title' => 'لینک دکمه‌های سربرگ',
				'desc' => 'جهت سفارشی سازی لینک‌های دکمه سربرگ (علاقه مندی‌ها)',
			),
			array(
				'id' => 'header-tel',
				'type' => 'switch',
				'title' => 'نمایش/پنهان دکمه تماس سربرگ',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-header-phone-txt',
				'type' => 'text',
				'title' => 'متن سربرگ (قسمت شماره تماس)',
				'desc' => '',
			),
			array(
				'id' => 'opt-header-phone-link',
				'type' => 'text',
				'title' => 'لینک دکمه شماره تماس سربرگ',
				'desc' => '',
			),
		)
	));

/** زیر منو اطلاعیه **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'اطلاعیه',
		'id' => 'option-topbar',
		'customizer_width' => '450px',
		'desc' => '',
		'subsection' => true,
		'fields' => array(
			array(
				'id' => 'option-switch-topbar',
				'type' => 'switch',
				'title' => 'نمایش / پنهان',
				'subtitle' => 'با استفاده از این سوئیچ می‌توانید تاپ بار را فعال یا غیر فعال کنید',
				'default' => true,
			),
			array(
				'id' => 'option-text-topbar',
				'title' => 'متن اطلاعیه',
				'subtitle' => 'لطفا متنی که قصد دارید نمایش دهید را انتخاب کنید',
				'type' => 'textarea',
				'data' => array(
					'box1' => 'متن نمونه اطلاعیه',
				)
			),
			array(
				'id' => 'opt-topbar-color',
				'type' => 'color',
				'title' => 'رنگ پس زمینه',
				'subtitle' => '',
				'default' => '#54a0ff',
				'validate' => 'color',
				'transparent' => false,
			),
			array(
				'id' => 'option-switch-topbar-button',
				'type' => 'switch',
				'title' => 'نمایش / پنهان (دکمه)',
				'subtitle' => 'با استفاده از این سوئیچ می‌توانید دکمه در اطلاعیه را فعال یا غیر فعال کنید',
				'default' => true,
			),
			array(
				'id' => 'option-text-topbar-button',
				'title' => 'متن دکمه',
				'subtitle' => 'لطفا متنی دکمه را وارد کنید',
				'type' => 'text',
			),
			array(
				'id' => 'option-link-topbar-button',
				'title' => 'لینک دکمه',
				'subtitle' => 'لطفا لینک دکمه را وارد کنید',
				'type' => 'text',
			),
			array(
				'id' => 'opt-topbar-button-bg-color',
				'type' => 'color',
				'title' => 'رنگ پس زمینه دکمه',
				'subtitle' => '',
				'default' => '#54a0ff',
				'validate' => 'color',
				'transparent' => false,
			),
			array(
				'id' => 'opt-topbar-button-txt-color',
				'type' => 'color',
				'title' => 'رنگ متن دکمه',
				'subtitle' => '',
				'default' => '#fff',
				'validate' => 'color',
				'transparent' => false,
			),
		)
	)
);

/** زیر منو پابرگ **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'پابرگ',
		'id' => 'option-footer',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'option-footer-select',
				'type' => 'select',
				'title' => 'انتخاب پابرگ',
				'subtitle' => 'از این قسمت پابرگ مدنظر خود را اضافه کنید',
				'desc' => '',
				'options' => array(
					'options-footer-1' => 'پابرگ اصلی (۱)',
					'options-footer-2' => 'پابرگ ۲',
				)),
			'default' => 'options-footer-1',
			array(
				'id' => 'footer2-specialtext',
				'type' => 'text',
				'title' => 'متن خاص کنار لوگو فوتر ۲',
				'desc' => '',
			),
			array(
				'id' => 'opt-footer-copyright-text',
				'type' => 'text',
				'title' => 'متن Copyright',
				'desc' => 'این متن در پابرگ به عنوان متن کپی رایت نمایش داده می‌شود',
			),
			array(
				'id' => 'opt-footer2-youtube-icon',
				'type' => 'text',
				'title' => 'لینک شبکه اجتماعی یوتیوب',
				'desc' => 'در صورت عدم تمایل به نمایش هر آیکن خالی بگذارید',
			),
			array(
				'id' => 'opt-footer2-instagram-icon',
				'type' => 'text',
				'title' => 'لینک شبکه اجتماعی اینستاگرام',
				'desc' => 'در صورت عدم تمایل به نمایش هر آیکن خالی بگذارید',
			),
			array(
				'id' => 'opt-footer2-telegram-icon',
				'type' => 'text',
				'title' => 'لینک شبکه اجتماعی یوتیوب',
				'desc' => 'در صورت عدم تمایل به نمایش هر آیکن خالی بگذارید',
			),
			array(
				'id' => 'opt-footer2-twitter-icon',
				'type' => 'text',
				'title' => 'لینک شبکه اجتماعی توئیتر',
				'desc' => 'در صورت عدم تمایل به نمایش هر آیکن خالی بگذارید',
			),
		)
	));
/** زیر منو رنگ آمیزی **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'طرح و رنگ اصلی',
		'id' => 'opt-color',
		'customizer_width' => '450px',
		'desc' => '',
		'icon' => 'dashicons-admin-customizer',
		'fields' => array(
			array(
				'id'        => 'opt-container-width',
				'type'      => 'slider',
				'title'     => 'محدوده عرضی سایت',
				"default"   => 1280,
				"min"       => 768,
				"step"      => 1,
				"max"       => 1680,
				'display_value' => 'text'
			),
			array(
				'id' => 'opt-main-color',
				'type' => 'color',
				'title' => 'رنگ اصلی',
				'subtitle' => 'اکثر المان‌های سایت از رنگ اصلی سایت استفاده می‌کنند',
				'default' => '#54a0ff',
				'validate' => 'color',
				'transparent' => false,
			),
			array(
				'id' => 'opt-second-color',
				'type' => 'color',
				'title' => 'رنگ دوم',
				'subtitle' => 'برخی از المان‌های خاص از رنگ دوم استفاده می‌کنند',
				'default' => '#74b9ff',
				'validate' => 'color',
				'transparent' => false,
			),
			array(
				'id' => 'opt-text-main-color',
				'type' => 'color',
				'title' => 'رنگ متن',
				'subtitle' => 'برخی از متن‌ها (معمولا با پس زمینه رنگ اصلی) از این رنگ استفاده می‌کنند',
				'default' => '#fff',
				'validate' => 'color',
				'transparent' => false,
			),
			array(
				'id'       => 'opt-color-gradient',
				'type'     => 'color_gradient',
				'title'    => 'طرح گرادیانت سایت',
				'subtitle' => 'در المان‌هایی که از گرادیانت استفاده شده و رنگ آنها از قالب گرفته می‌شود اجرا می‌شود',
				'desc'     => '',
				'validate' => 'color',
				'output'         => '.site-header',
				'gradient-type'  => true,
				'gradient-reach' => true,
				'gradient-angle' => true,
				'default'        => array(
					'from'           => '#087EE1',
					'to'             => '#3B05E8',
					'gradient-reach' => array(
						'to'   => 0,
						'from' => 100,
					)
				)
			)
		)
	)
);

/** تایپوگرافی **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'تایپوگرافی',
		'id' => 'typography',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'dashicons-editor-textcolor',
		'fields' => array(
			array(
				'id' => 'opt-typography',
				'type' => 'typography',
				'title' => 'متن پیش فرض سایت',
				'google' => false,
				'font-backup' => false,
				'output' => array('body'),
				'units' => 'px',
				'subtitle' => 'از این قسمت می‌توانید تایپوگرافی بدنه سایت را تنظیم کنید',
			)
		)
	)
);

/** فروشگاه **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'فروشگاه',
		'id' => 'shop',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'dashicons dashicons-store',
	)
);

/** زیر منو صفحه آرشیو محصولات **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'صفحه آرشیو محصولات',
		'id' => 'option-archive-product',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'opt-shop-sidebar',
				'type' => 'image_select',
				'title' => 'جهت سایدبار',
				'subtitle' => 'انتخاب کنید که سایدبار در کدام سمت قرار بگیرد',
				'options' => array(
					'1' => array(
						'alt' => 'سایدبار راست',
						'img' => ReduxFramework::$_url . 'assets/img/2cr.png'
					),
					'2' => array(
						'alt' => 'بدون ساید بار',
						'img' => ReduxFramework::$_url . 'assets/img/1col.png'
					),
					'3' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/2cl.png'
					),
				),
				'default' => '2'
			),
			array(
				'id' => 'ar-wish',
				'type' => 'switch',
				'title' => 'نمایش امکان افزودن به علاقه مندی‌ها',
				'subtitle' => 'قبل از روشن کردن امکان از نصب و فعال بودن افزونه WishSuite اطمینان حاصل کنید',
				'default' => true,
			)
		)
	));

/** زیر منو صفحه داخلی محصول **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'صفحه محصول',
		'id' => 'option-single-product',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'opt-palaram-color-palette',
				'type' => 'image_select',
				'title' => 'بسته رنگی نوار اعلان',
				'options' => array(
					'1' => array(
						'alt' => 'سایدبار راست',
						'img' => ReduxFramework::$_url . 'assets/img/inc/blue2r-icon.png'
					),
					'2' => array(
						'alt' => 'بدون ساید بار',
						'img' => ReduxFramework::$_url . 'assets/img/inc/blue-icon.png'
					),
					'3' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/inc/greenr-icon.png'
					),
					'4' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/inc/redr-icon.png'
					),
					'5' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/inc/yellow-icon.png'
					),
				),
				'default' => '3'
			),
			array(
				'id' => 'opt-bg-addtc-color',
				'type' => 'color',
				'title' => 'رنگ پس زمینه دکمه افزودن به سبد خرید',
				'subtitle' => 'به صورت پیش فرض از رنگ اصلی پوسته استفاده می‌شود',
				'validate' => 'color',
				'transparent' => false,
			),
			// بخش مزایای خرید از ما
			array(
				'id' => 'features-section-on-or-off',
				'type' => 'switch',
				'title' => 'فعال بودن/نبودن',
				'desc' => 'فعال بودن/نبودن بخش مزایای خرید از ما در صفحه تک محصول',
				'default'  => false,
			),
			array(
				'id' => 'features-section-img-1',
				'type' => 'media',
				'url' => true,
				'title' => 'تصاویر و متن‌های بخش مزایای خرید از ما',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-1',
				'type' => 'text',
			),
			array(
				'id' => 'features-section-img-2',
				'type' => 'media',
				'url' => true,
				'title' => '',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-2',
				'type' => 'text',
			),
			array(
				'id' => 'features-section-img-3',
				'type' => 'media',
				'url' => true,
				'title' => '',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-3',
				'type' => 'text',
			),
			array(
				'id' => 'features-section-img-4',
				'type' => 'media',
				'url' => true,
				'title' => '',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-4',
				'type' => 'text',
			),
			array(
				'id' => 'features-section-img-5',
				'type' => 'media',
				'url' => true,
				'title' => '',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-5',
				'type' => 'text',
			),
			array(
				'id' => 'features-section-img-6',
				'type' => 'media',
				'url' => true,
				'title' => '',
				'desc' => '',
			),
			array(
				'id' => 'opt-features-section-txt-6',
				'type' => 'text',
			),
			array(
				'id' => 'sp-wish',
				'type' => 'switch',
				'title' => 'نمایش امکان افزودن به علاقه مندی‌ها',
				'subtitle' => 'قبل از روشن کردن امکان از نصب و فعال بودن افزونه WishSuite اطمینان حاصل کنید',
				'default' => true,
			)
		)
	));

/** وبلاگ **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'وبلاگ',
		'id' => 'blog',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'dashicons dashicons-store',
	)
);

/** زیر منو صفحه آرشیو پست‌ها **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'صفحه آرشیو مقالات',
		'id' => 'option-archive-posts',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'opt-blog-sidebar',
				'type' => 'image_select',
				'title' => 'جهت سایدبار',
				'subtitle' => 'انتخاب کنید که سایدبار در کدام سمت قرار بگیرد',
				'options' => array(
					'1' => array(
						'alt' => 'سایدبار راست',
						'img' => ReduxFramework::$_url . 'assets/img/2cr.png'
					),
					'2' => array(
						'alt' => 'بدون ساید بار',
						'img' => ReduxFramework::$_url . 'assets/img/1col.png'
					),
					'3' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/2cl.png'
					),
				),
				'default' => '2'
			),
			array(
				'id' => 'opt-switch-blog-meta-time',
				'type' => 'switch',
				'title' => 'نمایش/پنهان زمان انتشار پست',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-blog-meta-author',
				'type' => 'switch',
				'title' => 'نمایش/پنهان نویسنده',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-blog-meta-category',
				'type' => 'switch',
				'title' => 'نمایش/پنهان دسته بندی',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-blog-meta-comments',
				'type' => 'switch',
				'title' => 'نمایش/پنهان دیدگاه‌ها',
				'subtitle' => '',
				'default' => true,
			),
		)
	));

/** زیر منو صفحه پست **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'صفحه نوشته',
		'id' => 'option-post',
		'subsection' => true,
		'customizer_width' => '450px',
		'desc' => '',
		'fields' => array(
			array(
				'id' => 'opt-post-sidebar',
				'type' => 'image_select',
				'title' => 'جهت سایدبار',
				'subtitle' => 'انتخاب کنید که سایدبار در کدام سمت قرار بگیرد',
				'options' => array(
					'1' => array(
						'alt' => 'سایدبار راست',
						'img' => ReduxFramework::$_url . 'assets/img/2cr.png'
					),
					'2' => array(
						'alt' => 'بدون ساید بار',
						'img' => ReduxFramework::$_url . 'assets/img/1col.png'
					),
					'3' => array(
						'alt' => 'سایدبار چپ',
						'img' => ReduxFramework::$_url . 'assets/img/2cl.png'
					),
				),
				'default' => '2'
			),
			array(
				'id' => 'opt-switch-post-meta-time',
				'type' => 'switch',
				'title' => 'نمایش/پنهان زمان انتشار پست',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-post-meta-author',
				'type' => 'switch',
				'title' => 'نمایش/پنهان نویسنده',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-post-meta-category',
				'type' => 'switch',
				'title' => 'نمایش/پنهان دسته بندی',
				'subtitle' => '',
				'default' => true,
			),
			array(
				'id' => 'opt-switch-post-meta-comments',
				'type' => 'switch',
				'title' => 'نمایش/پنهان دیدگاه‌ها',
				'subtitle' => '',
				'default' => true,
			),
		)
	));
/** صفحه ۴۰۴ **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'صفحه ۴۰۴',
		'id' => 'page-404',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'dashicons-info',
		'fields' => array(
			array(
				'id'       => 'opt-404-media',
				'type'     => 'media',
				'title'    => 'تصویر ۴۰۴',
			),
			array(
				'id' => 'opt-404-h4',
				'type' => 'text',
				'title' => 'متن اصلی صفحه ۴۰۴',
				'desc' => '',
			),
			array(
				'id' => 'opt-404-p',
				'type' => 'text',
				'title' => 'متن توضیح صفحه ۴۰۴',
				'desc' => '',
			),
			array(
				'id' => 'opt-404-btn',
				'type' => 'text',
				'title' => 'متن دکمه',
				'desc' => '',
			),
			array(
				'id' => 'opt-404-link',
				'type' => 'text',
				'title' => 'لینک دکمه',
				'desc' => '',
			),
		)
	));
/** منو CSS و JS سفارشی **/
Redux::set_section(
	$opt_name,
	array(
		'title' => 'کد CSS و JS سفارشی',
		'id' => 'js-css',
		'desc' => '',
		'customizer_width' => '400px',
		'icon' => 'dashicons-admin-tools',
		'fields' => array(
			array(
				'id' => 'custom-css',
				'title' => 'کد CSS سفارشی',
				'subtitle' => 'لطفا کدی  که قصد دارید به قالب اضافه کنید را در این بخش بنویسید',
				'type'     => 'ace_editor',
				'mode'     => 'css',
				'theme'    => 'monokai',
			),
			array(
				'id' => 'custom-js',
				'title' => 'کد JS سفارشی',
				'subtitle' => 'لطفا کدی  که قصد دارید به قالب اضافه کنید را در این بخش بنویسید',
				'type'     => 'ace_editor',
				'mode'     => 'javascript',
				'theme'    => 'monokai',
			)

		)
	));
/*
 * <--- END SECTIONS
 */

/*
 * YOU MUST PREFIX THE FUNCTIONS BELOW AND ACTION FUNCTION CALLS OR OTHER CONFIGS MAY OVERRIDE YOUR CODE.
 */

/*
 * --> Action hook examples.
 */

// Function to test the compiler hook and demo CSS output.
// Above 10 is a priority, but 2 is necessary to include the dynamically generated CSS to be sent to the function.
// add_filter('redux/options/' . $opt_name . '/compiler', 'compiler_action', 10, 3);
//
// Change the arguments after they've been declared, but before the panel is created.
// add_filter('redux/options/' . $opt_name . '/args', 'change_arguments' );
//
// Change the default value of a field after it's been set, but before it's been used.
// add_filter('redux/options/' . $opt_name . '/defaults', 'change_defaults' );
//
// Dynamically add a section.
// It can be also used to modify sections/fields.
// add_filter('redux/options/' . $opt_name . '/sections', 'dynamic_section');
// .
if ( ! function_exists( 'compiler_action' ) ) {
	/**
	 * This is a test function that will let you see when the compiler hook occurs.
	 * It only runs if a field's value has changed and compiler=>true is set.
	 *
	 * @param array  $options        Options values.
	 * @param string $css            Compiler selector CSS values  compiler => array( CSS SELECTORS ).
	 * @param array  $changed_values Any values changed since last save.
	 */
	function compiler_action( array $options, string $css, array $changed_values ) {
		echo '<h1>The compiler hook has run!</h1>';
		echo '<pre>';
		// phpcs:ignore WordPress.PHP.DevelopmentFunctions
		print_r( $changed_values ); // Values that have changed since the last save.
		// echo '<br/>';
		// print_r($options); //Option values.
		// echo '<br/>';
		// print_r($css); // Compiler selector CSS values compiler => array( CSS SELECTORS ).
		echo '</pre>';
	}
}

if ( ! function_exists( 'redux_validate_callback_function' ) ) {
	/**
	 * Custom function for the callback validation referenced above
	 *
	 * @param array $field          Field array.
	 * @param mixed $value          New value.
	 * @param mixed $existing_value Existing value.
	 *
	 * @return array
	 */
	function redux_validate_callback_function( array $field, $value, $existing_value ): array {
		$error   = false;
		$warning = false;

		// Do your validation.
		if ( 1 === (int) $value ) {
			$error = true;
			$value = $existing_value;
		} elseif ( 2 === (int) $value ) {
			$warning = true;
			$value   = $existing_value;
		}

		$return['value'] = $value;

		if ( true === $error ) {
			$field['msg']    = 'موفقیت آمیز نبود !';
			$return['error'] = $field;
		}

		if ( true === $warning ) {
			$field['msg']      = 'موفقیت آمیز نبود !';
			$return['warning'] = $field;
		}

		return $return;
	}
}


if ( ! function_exists( 'dynamic_section' ) ) {
	/**
	 * Custom function for filtering the section array.
	 * Good for child themes to override or add to the sections.
	 * Simply include this function in the child themes functions.php file.
	 * NOTE: the defined constants for URLs and directories will NOT be available at this point in a child theme,
	 * so you must use get_template_directory_uri() if you want to use any of the built-in icons.
	 *
	 * @param array $sections Section array.
	 *
	 * @return array
	 */
	function dynamic_section( array $sections ): array {
		$sections[] = array(
			'title'  => esc_html__( 'Section via hook', 'your-textdomain-here' ),
			'desc'   => '<p class="description">' . esc_html__( 'This is a section created by adding a filter to the sections array. Can be used by child themes to add/remove sections from the options.', 'your-textdomain-here' ) . '</p>',
			'icon'   => 'el el-paper-clip',

			// Leave this as a blank section, no options just some intro text set above.
			'fields' => array(),
		);

		return $sections;
	}
}

if ( ! function_exists( 'change_arguments' ) ) {
	/**
	 * Filter hook for filtering the args.
	 * Good for child themes to override or add to the args array.
	 * It can also be used in other functions.
	 *
	 * @param array $args Global arguments array.
	 *
	 * @return array
	 */
	function change_arguments( array $args ): array {
		$args['dev_mode'] = true;

		return $args;
	}
}

if ( ! function_exists( 'change_defaults' ) ) {
	/**
	 * Filter hook for filtering the default value of any given field. Very useful in development mode.
	 *
	 * @param array $defaults Default value array.
	 *
	 * @return array
	 */
	function change_defaults( array $defaults ): array {
		$defaults['str_replace'] = esc_html__( 'Testing filter hook!', 'your-textdomain-here' );

		return $defaults;
	}
}

if ( ! function_exists( 'redux_custom_sanitize' ) ) {
	/**
	 * Function to be used if the field sanitizes argument.
	 * Return value MUST be formatted or cleaned text to display.
	 *
	 * @param string $value Value to evaluate or clean.  Required.
	 *
	 * @return string
	 */
	function redux_custom_sanitize( string $value ): string {
		$return = '';

		foreach ( explode( ' ', $value ) as $w ) {
			foreach ( str_split( $w ) as $k => $v ) {
				if ( ( $k + 1 ) % 2 !== 0 && ctype_alpha( $v ) ) {
					$return .= mb_strtoupper( $v );
				} else {
					$return .= $v;
				}
			}

			$return .= ' ';
		}

		return $return;
	}
}
