*/
namespace ThemeAtelier\Darkify\Admin\Views;
use ThemeAtelier\Darkify\Admin\Schema\SchemaRegistry as Darkify;
class SwitcherStyle
{
/**
* Create Option fields for the setting options.
*
* @param string $prefix Option setting key prefix.
* @return void
*/
public static function options($prefix)
{
Darkify::createSection(
$prefix,
array(
// See Control.php: ids are pinned so routes never follow the
// translated title.
'id' => 'switches',
'title' => esc_html__('Switches', 'darkify'),
'icon' => 'icofont-toggle-on',
'fields' => array(
array(
'type' => 'section_tab',
'tabs' => array(
array(
'id' => 'floating-switch',
'title' => esc_html__('Floating Switch', 'darkify'),
'icon' => 'icofont-ui-theme',
'fields' => array(
// Intro line, rendered plain above the section cards.
array(
'type' => 'page_hint',
'content' => sprintf(
/* translators: %s: "Open the live preview" action link */
esc_html__('Design the floating dark-mode switch and choose where it sits. %s to see changes instantly.', 'darkify'),
'' . esc_html__('Open the live preview', 'darkify') . ''
),
),
array(
'title' => esc_html__('Floating Switch Styles', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'enable_dark_switcher',
'type' => 'image_select',
'title' => esc_html__('Switch Toggler', 'darkify'),
'title_help' =>
'
' .
__('Choose the default floating switch toggler.', 'darkify') .
'
',
'class' => 'icon_select ',
'options' => array(
'orbit' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/orbit.svg',
'text' => esc_html__('Orbit', 'darkify'),
'option_demo_url' => '',
),
'classic' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/classic.svg',
'text' => esc_html__('Classic', 'darkify'),
'option_demo_url' => '',
),
'expand' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/expand.svg',
'text' => esc_html__('Expand', 'darkify'),
'option_demo_url' => '',
),
'inner-moon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/inner-moon.svg',
'text' => esc_html__('Inner Moon', 'darkify'),
'option_demo_url' => '',
),
'within' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/within.svg',
'text' => esc_html__('Within', 'darkify'),
'option_demo_url' => '',
),
'around' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/around.svg',
'text' => esc_html__('Around', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-side' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-side.svg',
'text' => esc_html__('Dark Side', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'horizon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/horizon.svg',
'text' => esc_html__('Horizon', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'eclipse' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/eclipse.svg',
'text' => esc_html__('Eclipse', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'lightbulb' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/lightbulb.svg',
'text' => esc_html__('Lightbulb', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-inner' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-inner.svg',
'text' => esc_html__('Dark Inner', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'half-sun' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/half-sun.svg',
'text' => esc_html__('Half Sun', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'simple' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/simple.svg',
'text' => esc_html__('Simple', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'duality' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/duality.svg',
'text' => esc_html__('Duality', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dual' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dual.svg',
'text' => esc_html__('Dual', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'shift' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/shift.svg',
'text' => esc_html__('Shift', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
),
'default' => 'orbit',
),
array(
'id' => 'switch_size',
'type' => 'button_set',
'title' => esc_html__('Switch Size', 'darkify'),
'title_help' => '' . esc_html__('Choose the size of the floating toggle switch as you need.', 'darkify') . '
',
'options' => array(
'0.6' => esc_html__('XS', 'darkify'),
'0.8' => esc_html__('S', 'darkify'),
'1' => esc_html__('M', 'darkify'),
'1.2' => esc_html__('L', 'darkify'),
'1.4' => esc_html__('XL', 'darkify'),
'1.6' => esc_html__('XXL', 'darkify'),
'custom' => esc_html__('Custom', 'darkify'),
),
'default' => '1',
),
array(
'id' => 'switch_size_custom',
'type' => 'slider',
'title' => esc_html__('Custom Switch Size', 'darkify'),
'title_help' => '' . esc_html__('Scale in percentage relative to normal size.', 'darkify') . '
',
'default' => '100',
'min' => 40,
'max' => 300,
'dependency' => array('switch_size', '==', 'custom')
),
array(
'id' => 'switch_background',
'type' => 'color_group',
'title' => esc_html__('Switch Background', 'darkify'),
'title_help' => '' .
__('Customize the floating switch background to match your design.', 'darkify') .
'
',
'options' => array(
'switch_light_mode_bg' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_bg' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_bg' => '#121116',
'switch_dark_mode_bg' => '#ffffff',
)
),
array(
'id' => 'switch_icon_color',
'type' => 'color_group',
'title' => esc_html__('Switch Icon Color', 'darkify'),
'title_help' => '' .
__('Customize the floating switch icon color as needed.', 'darkify') .
'
',
'options' => array(
'switch_light_mode_color' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_color' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_color' => '#ffffff',
'switch_dark_mode_color' => '#121116',
),
),
array(
'id' => 'switch_border',
'type' => 'border',
'title' => esc_html__('Switch Border', 'darkify'),
'title_help' =>
'' .
__('Customize the floating switch border and border radius.', 'darkify') .
'
' .
'' .
'',
'color' => true,
'style' => false,
'color2' => false,
// The switch has a separate border colour per mode: `color` is
// light, `color3` is dark. Both are read by
// DarkifyUtils::generateSwitchStyles() and the [darkify]
// shortcode, so the dark one needs a control of its own.
'color3' => true,
'all' => true,
'radius' => true,
'default' => array(
'color' => '#121116',
'color3' => '#ffffff',
'all' => 0,
'radius' => 7,
),
),
array(
'title' => esc_html__('Switch Positioning', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'switcher_button_position',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'dark_mode_switch_position',
// Corner tiles rather than a button row: the choice is
// spatial, so the diagram reads faster than the words.
// Presentation only — the stored keys, the default and
// the dependencies below are unchanged.
'type' => 'position_select',
'title' => esc_html__('Switch Position', 'darkify'),
'title_help' => '' . esc_html__('Choose the screen position where the Floating Switch should be displayed.', 'darkify') . '
',
'options' => array(
'bottom_right' => esc_html__('Bottom Right', 'darkify'),
'bottom_left' => esc_html__('Bottom Left', 'darkify'),
'top_right' => esc_html__('Top Right', 'darkify'),
'top_left' => esc_html__('Top Left', 'darkify'),
),
'default' => 'bottom_right',
),
array(
'id' => 'switch_position_top_right',
'type' => 'spacing',
'title' => esc_html__('Margin From Top Right', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the top right of the Floating Switch.', 'darkify') . '
',
'left' => false,
'bottom' => false,
'units' => ['px'],
'default' => array(
'top' => '40',
'right' => '40',
),
'dependency' => array('dark_mode_switch_position', '==', 'top_right'),
),
array(
'id' => 'switch_position_top_left',
'type' => 'spacing',
'title' => esc_html__('Margin From Top Left', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the top left of the Floating Switch.', 'darkify') . '
',
'right' => false,
'bottom' => false,
'units' => ['px'],
'default' => array(
'top' => '40',
'left' => '40',
),
'dependency' => array('dark_mode_switch_position', '==', 'top_left'),
),
array(
'id' => 'switch_position_bottom_right',
'type' => 'spacing',
'title' => esc_html__('Margin From Bottom Right', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the bottom right of the Floating Switch.', 'darkify') . '
',
'left' => false,
'top' => false,
'units' => ['px'],
'default' => array(
'bottom' => '40',
'right' => '40',
),
'dependency' => array('dark_mode_switch_position', '==', 'bottom_right'),
),
array(
'id' => 'switch_position_bottom_left',
'type' => 'spacing',
'title' => esc_html__('Margin From Bottom Left', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the bottom left of the Floating Switch.', 'darkify') . '
',
'right' => false,
'top' => false,
'units' => ['px'],
'default' => array(
'bottom' => '40',
'left' => '40',
),
'dependency' => array('dark_mode_switch_position', '==', 'bottom_left'),
),
),
),
array(
'id' => 'enable_absolute_position',
'type' => 'switcher',
'title' => esc_html__('Absolute Switch Position', 'darkify'),
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => '100',
'title_help' => '' . esc_html__('Enable to make the floating switch scroll from its position with page scrolling.', 'darkify') . '
',
),
array(
'id' => 'enable_switch_dragging',
'type' => 'switcher',
'title' => esc_html__('Draggable Position Change', 'darkify'),
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => '100',
'title_help' => '' . esc_html__('Allow/Disallow users to change the floating switch position by dragging to where they want.', 'darkify') . '
',
// Free-only: dragging is a Pro feature, so the row renders
// locked with an upgrade prompt. Pro has no such marker.
'class' => 'switcher_pro_only',
),
array(
'title' => esc_html__('Switch Extra', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'enable_switch_attention',
'type' => 'switcher',
'title' => esc_html__('Switch Attention Effect', 'darkify'),
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => '100',
'title_help' => '' . esc_html__('Enable an animation to draw visitor attention to the floating dark mode switch.', 'darkify') . '
',
),
array(
'id' => 'switch_attention_effect',
'type' => 'button_set',
'title' => esc_html__('Attention Effect Style', 'darkify'),
'title_help' => '' . esc_html__('Choose the animation style for the attention effect. Hover pauses the animation.', 'darkify') . '
',
'options' => array(
'pulse' => esc_html__('Pulse', 'darkify'),
'radiance' => array('label' => esc_html__('Radiance', 'darkify'), 'disabled' => true),
'leap' => array('label' => esc_html__('Leap', 'darkify'), 'disabled' => true),
'swing' => array('label' => esc_html__('Swing', 'darkify'), 'disabled' => true),
'drift' => array('label' => esc_html__('Drift', 'darkify'), 'disabled' => true),
'nudge' => array('label' => esc_html__('Nudge', 'darkify'), 'disabled' => true),
),
'default' => 'pulse',
'dependency' => array('enable_switch_attention', '==', 'true'),
),
array(
'id' => 'tooltip_on_floating_switch',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'floating_switch_width',
'type' => 'switcher',
'title' => esc_html__('Tooltip on Floating Switch', 'darkify'),
'title_help' =>
'' .
__('Display a tooltip hint on the dark mode floating switch.', 'darkify') .
'
' .
'' .
'',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
'default' => false,
),
array(
'id' => 'tooltip_position',
'type' => 'button_set',
'title' => esc_html__('Tooltip Position', 'darkify'),
'title_help' =>
'' .
__('Choose where the tooltip should appear relative to the floating switch.', 'darkify') .
'
' .
'' .
'',
'options' => array(
'left' => esc_html__('Left', 'darkify'),
'right' => esc_html__('Right', 'darkify'),
'top' => esc_html__('Top', 'darkify'),
'bottom' => esc_html__('Bottom', 'darkify'),
),
'default' => 'left',
'dependency' => array('floating_switch_width', '==', 'true'),
),
array(
'id' => 'tooltip_text',
'type' => 'text',
'title' => esc_html__('Tooltip Text', 'darkify'),
'title_help' =>
'' .
__('Add tooltip text for floating switch toggler.', 'darkify') .
'
' .
'' .
'',
'default' => esc_html__('Toggle Dark Mode', 'darkify'),
'dependency' => array('floating_switch_width', '==', 'true'),
),
array(
'id' => 'tooltip_color',
'type' => 'color_group',
'title' => esc_html__('Tooltip Color', 'darkify'),
'title_help' =>
'' .
__('Customize the tooltip colors and appearance.', 'darkify') .
'
',
'options' => array(
'tooltip_background_color' => esc_html__('Background', 'darkify'),
'tooltip_text_color' => esc_html__('Color', 'darkify'),
),
'default' => array(
'tooltip_background_color' => '#142434',
'tooltip_text_color' => '#B0CBE7',
),
'dependency' => array('floating_switch_width', '==', 'true'),
),
),
),
array(
'title' => esc_html__('Switch Visibility', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'hide_on_desktop',
'type' => 'switcher',
'title' => esc_html__('Hide Dark Mode Switch on Desktop', 'darkify'),
'title_help' =>
'' .
__('Hide the dark mode floating switch when users are browsing on a desktop or laptop.', 'darkify') .
'
' .
'' .
'',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
),
array(
'id' => 'hide_on_mobile',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'hide_dark_mode_on_mobile',
'type' => 'switcher',
'title' => esc_html__('Hide Dark Mode on Mobile', 'darkify'),
'title_help' =>
'' .
__('Hide the dark mode floating switch when users are browsing on mobile devices.', 'darkify') .
'
' .
'' .
'',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
),
array(
'id' => 'type_of_hide_by',
'type' => 'button_set',
'title' => esc_html__('Hide Detection Method', 'darkify'),
'title_help' =>
'' .
__('Choose how mobile devices are detected: by User Agent, by Screen Size, or use Both for maximum accuracy.', 'darkify') .
'
' .
'' .
'',
'options' => array(
'user_agent' => esc_html__('User Agent', 'darkify'),
'screen_size' => esc_html__('Screen Size', 'darkify'),
'both' => esc_html__('Both', 'darkify'),
),
'default' => 'both',
'dependency' => array('hide_dark_mode_on_mobile', '==', 'true'),
),
),
),
array(
'title' => esc_html__('Mobile Switch', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'dark_switcher_switch_in_mobile',
'type' => 'switcher',
'title' => esc_html__('Different Switch in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Should the Floating Switch be displayed on different in mobile?', 'darkify') . '
',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
),
array(
'id' => 'enable_dark_switcher_in_mobile',
'type' => 'image_select',
'title' => esc_html__('Switch Toggler', 'darkify'),
'title_help' =>
'' .
__('Choose the default floating switch toggler.', 'darkify') .
'
' .
'' .
'',
'class' => 'icon_select ',
'options' => array(
'orbit' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/orbit.svg',
'text' => esc_html__('Orbit', 'darkify'),
'option_demo_url' => '',
),
'classic' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/classic.svg',
'text' => esc_html__('Classic', 'darkify'),
'option_demo_url' => '',
),
'expand' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/expand.svg',
'text' => esc_html__('Expand', 'darkify'),
'option_demo_url' => '',
),
'inner-moon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/inner-moon.svg',
'text' => esc_html__('Inner Moon', 'darkify'),
'option_demo_url' => '',
),
'within' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/within.svg',
'text' => esc_html__('Within', 'darkify'),
'option_demo_url' => '',
),
'around' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/around.svg',
'text' => esc_html__('Around', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-side' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-side.svg',
'text' => esc_html__('Dark Side', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'horizon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/horizon.svg',
'text' => esc_html__('Horizon', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'eclipse' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/eclipse.svg',
'text' => esc_html__('Eclipse', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'lightbulb' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/lightbulb.svg',
'text' => esc_html__('Lightbulb', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-inner' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-inner.svg',
'text' => esc_html__('Dark Inner', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'half-sun' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/half-sun.svg',
'text' => esc_html__('Half Sun', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'simple' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/simple.svg',
'text' => esc_html__('Simple', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'duality' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/duality.svg',
'text' => esc_html__('Duality', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dual' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dual.svg',
'text' => esc_html__('Dual', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'shift' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/shift.svg',
'text' => esc_html__('Shift', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
),
'default' => 'orbit',
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_size_in_mobile',
'type' => 'button_set',
'title' => esc_html__('Switch Size', 'darkify'),
'title_help' => '' . esc_html__('Choose the size of the floating toggle switch as you need.', 'darkify') . '
',
'options' => array(
'0.6' => esc_html__('XS', 'darkify'),
'0.8' => esc_html__('S', 'darkify'),
'1' => esc_html__('M', 'darkify'),
'1.2' => esc_html__('L', 'darkify'),
'1.4' => esc_html__('XL', 'darkify'),
'1.6' => esc_html__('XXL', 'darkify'),
'custom' => esc_html__('Custom', 'darkify'),
),
'default' => '1',
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_size_custom_in_mobile',
'type' => 'slider',
'title' => esc_html__('Custom Switch Size', 'darkify'),
'title_help' => '' . esc_html__('Scale in percentage relative to normal size.', 'darkify') . '
',
'default' => '100',
'min' => 40,
'max' => 300,
'dependency' => array('switch_size_in_mobile|dark_switcher_switch_in_mobile', '==|==', 'custom|true')
),
array(
'id' => 'switch_background_in_mobile',
'type' => 'color_group',
'title' => esc_html__('Switch Background', 'darkify'),
'title_help' => '' .
__('Customize the floating switch background to match your design.', 'darkify') .
'
',
'options' => array(
'switch_light_mode_bg' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_bg' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_bg' => '#121116',
'switch_dark_mode_bg' => '#ffffff',
),
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_icon_color_in_mobile',
'type' => 'color_group',
'title' => esc_html__('Switch Icon Color', 'darkify'),
'title_help' => '' .
__('Customize the floating switch icon color as needed.', 'darkify') .
'
',
'options' => array(
'switch_light_mode_color' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_color' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_color' => '#ffffff',
'switch_dark_mode_color' => '#121116',
),
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_border_in_mobile',
'type' => 'border',
'title' => esc_html__('Switch Border', 'darkify'),
'title_help' =>
'' .
__('Customize the floating switch border and border radius.', 'darkify') .
'
' .
'' .
'',
'color' => true,
'style' => false,
'color2' => false,
// Light (`color`) / dark (`color3`) border colours — see the
// desktop Switch Border field above.
'color3' => true,
'all' => true,
'radius' => true,
'default' => array(
'color' => '#121116',
'color3' => '#ffffff',
'all' => 0,
'radius' => 7,
),
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'enable_switch_attention_in_mobile',
'type' => 'switcher',
'title' => esc_html__('Switch Attention Effect', 'darkify'),
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => '100',
'title_help' => '' . esc_html__('Enable an animation to draw visitor attention to the floating dark mode switch.', 'darkify') . '
',
'dependency' => array('dark_switcher_switch_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_attention_effect_in_mobile',
'type' => 'button_set',
'title' => esc_html__('Attention Effect Style', 'darkify'),
'title_help' => '' . esc_html__('Choose the animation style for the attention effect. Hover pauses the animation.', 'darkify') . '
',
'options' => array(
'pulse' => esc_html__('Pulse', 'darkify'),
'radiance' => array('label' => esc_html__('Radiance', 'darkify'), 'disabled' => true),
'leap' => array('label' => esc_html__('Leap', 'darkify'), 'disabled' => true),
'swing' => array('label' => esc_html__('Swing', 'darkify'), 'disabled' => true),
'drift' => array('label' => esc_html__('Drift', 'darkify'), 'disabled' => true),
'nudge' => array('label' => esc_html__('Nudge', 'darkify'), 'disabled' => true),
),
'default' => 'pulse',
'dependency' => array('enable_switch_attention_in_mobile|dark_switcher_switch_in_mobile', '==|==', 'true|true'),
),
array(
'id' => 'different_switch_in_mobile',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'switch_position_different_in_mobile',
'type' => 'switcher',
'title' => esc_html__('Different Switch Position in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Should the Floating Switch be displayed on different position in mobile?', 'darkify') . '
',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
),
array(
'id' => 'switch_position_in_mobile',
'type' => 'position_select',
'title' => esc_html__('Switch Position in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Choose the screen position where the Floating Switch should be displayed in mobile.', 'darkify') . '
',
'options' => array(
'bottom_right' => esc_html__('Bottom Right', 'darkify'),
'bottom_left' => esc_html__('Bottom Left', 'darkify'),
'top_right' => esc_html__('Top Right', 'darkify'),
'top_left' => esc_html__('Top Left', 'darkify'),
),
'default' => 'bottom_right',
'dependency' => array('switch_position_different_in_mobile', '==', 'true'),
),
array(
'id' => 'switch_position_top_right_in_mobile',
'type' => 'spacing',
'title' => esc_html__('Margin From Top Right in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the top right of the Floating Switch.', 'darkify') . '
',
'left' => false,
'bottom' => false,
'units' => ['px'],
'default' => array(
'top' => '40',
'right' => '40',
),
'dependency' => array('switch_position_different_in_mobile|switch_position_in_mobile', '==|==', 'true|top_right'),
),
array(
'id' => 'switch_position_top_left_in_mobile',
'type' => 'spacing',
'title' => esc_html__('Margin From Top Left in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the top left of the Floating Switch.', 'darkify') . '
',
'right' => false,
'bottom' => false,
'units' => ['px'],
'default' => array(
'top' => '40',
'left' => '40',
),
'dependency' => array('switch_position_different_in_mobile|switch_position_in_mobile', '==|==', 'true|top_left'),
),
array(
'id' => 'switch_position_bottom_right_in_mobile',
'type' => 'spacing',
'title' => esc_html__('Margin From Bottom Right in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the bottom right of the Floating Switch.', 'darkify') . '
',
'left' => false,
'top' => false,
'units' => ['px'],
'default' => array(
'bottom' => '40',
'right' => '40',
),
'dependency' => array('switch_position_different_in_mobile|switch_position_in_mobile', '==|==', 'true|bottom_right'),
),
array(
'id' => 'switch_position_bottom_left_in_mobile',
'type' => 'spacing',
'title' => esc_html__('Margin From Bottom Left in Mobile', 'darkify'),
'title_help' => '' . esc_html__('Customize default margin from the bottom left of the Floating Switch.', 'darkify') . '
',
'right' => false,
'top' => false,
'units' => ['px'],
'default' => array(
'bottom' => '40',
'left' => '40',
),
'dependency' => array('switch_position_different_in_mobile|switch_position_in_mobile', '==|==', 'true|bottom_left'),
),
),
),
)
),
array(
'id' => 'other-switches',
'title' => esc_html__('Other Switches', 'darkify'),
'icon' => 'icofont-toggle-off',
'fields' => array(
// Intro line, rendered plain above the section cards.
array(
'type' => 'page_hint',
'content' => esc_html__('Add dark-mode switches inside menus or anywhere on your site with a shortcode, and register custom elements as switches.', 'darkify'),
),
array(
'title' => esc_html__('Menu Switch', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'show_in_menu',
'type' => 'fieldset',
// Divide the master toggle from the per-switch group below it.
'class' => 'fieldset-divided',
'fields' => array(
array(
'id' => 'enable_switch_in_menu',
'type' => 'switcher',
'title' => esc_html__('Enable Menu Switch', 'darkify'),
'title_help' =>
'' .
__('Display a dark mode switch inside a WordPress menu.', 'darkify') .
'
' .
'' .
'',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
),
array(
'id' => 'select_menus',
'type' => 'group',
'title' => esc_html__('Menu Switches', 'darkify'),
'title_help' =>
'' .
__('Choose the menu and position for your switch.', 'darkify') .
'
' .
'' .
'',
'add_more_text' => sprintf(
/* translators: %s: URL to the Darkify Pro pricing page. */
__(
'Want to use the switch in an unlimited number of menus? Upgrade to Pro.',
'darkify'
),
esc_url(DARKIFY_DEMO_URL . 'pricing/?ref=1')
),
// Same accordion-title pattern as Pro (menu name + placement
// once chosen, numbered "Menu Switch #1" fallback before
// that) — kept in sync even though Free is capped at one row.
'accordion_title_number' => false,
'accordion_title_auto' => true,
'accordion_title_by' => array('switch_in_menu_location', 'select_menu_position'),
'accordion_title_by_prefix' => ' — ',
'accordion_title_require' => 'switch_in_menu_location',
'row_title' => esc_html__('Menu Switch', 'darkify'),
'class' => 'select_menus',
'empty_title' => esc_html__('No menu switches configured', 'darkify'),
'empty_desc' => esc_html__('Add a switch and choose the WordPress menu where it should appear.', 'darkify'),
'button_title' => esc_html__('Add Menu Switch', 'darkify'),
'max' => 1,
'fields' => array(
array(
'id' => 'switch_in_menu_location',
'type' => 'select',
'class' => 'select_menu_location',
'title' => esc_html__('Menu', 'darkify'),
'title_help' =>
'' .
esc_html__('Choose the WordPress menu where this switch should appear.', 'darkify') .
'
' .
'' .
'',
'placeholder' => esc_html__('Choose a menu…', 'darkify'),
'empty_message' => esc_html__(
'You have not created a menu yet. If you are using a Full Site Editing (FSE) theme, copy the shortcode below and paste it where you want the switch to appear.',
'darkify'
),
'options' => 'menus',
),
array(
'id' => 'select_menu_position',
'type' => 'button_set',
'title' => esc_html__('Switch Placement', 'darkify'),
'title_help' =>
'' .
esc_html__('Choose whether the dark mode switch appears at the beginning or end of the selected menu.', 'darkify') .
'
' .
'' .
'',
// Options relabeled for clarity; keys unchanged
// ('after'/'before') so existing saved rows keep
// their exact stored placement.
'options' => array(
'after' => esc_html__('End of Menu', 'darkify'),
'before' => esc_html__('Beginning of Menu', 'darkify'),
),
'default' => 'after',
),
array(
'id' => 'darkify_menu_shortcode_helper',
'type' => 'menu_switch_shortcode',
'title' => esc_html__('Shortcode', 'darkify'),
'title_help' =>
'' .
__('Automatically generated from the settings above.', 'darkify') .
'
' .
'' .
'',
'default' => '[darkify switch="1"]',
),
),
'dependency' => array('enable_switch_in_menu', '==', 'true'),
),
),
),
array(
'title' => esc_html__('Shortcode', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'shortcode_use_global_switch_settings',
'type' => 'switcher',
'title' => esc_html__('Use Global Switch Settings', 'darkify'),
'title_help' =>
'' .
__('Use the same switch style, size, and colors as your site-wide floating switch. Turn this off to customize this shortcode independently, without changing the floating switch.', 'darkify') .
'
',
'text_on' => esc_html__('Yes', 'darkify'),
'text_off' => esc_html__('No', 'darkify'),
// Off by default so the customizable style controls are visible.
'default' => false,
),
// Mirrors the Floating Switch's own style controls (same field
// ids, nested here) so `buildSwitcherShortcode()` on the React
// side can generate this shortcode's styling exactly the same
// way it does for the global one. `pro_only` flags on the style
// options match the Floating Switch tab's own list so this panel
// can't be used to bypass the tier gate on switch styles.
array(
'id' => 'shortcode_custom_switch_settings',
'type' => 'fieldset',
'title' => esc_html__('Custom Switch Style', 'darkify'),
'title_help' =>
'' .
__('These settings apply only to this shortcode, not your site-wide floating switch.', 'darkify') .
'
',
'dependency' => array('shortcode_use_global_switch_settings', '==', 'false'),
'fields' => array(
array(
'id' => 'enable_dark_switcher',
'type' => 'image_select',
'title' => esc_html__('Switch Style', 'darkify'),
'class' => 'icon_select ',
'options' => array(
'orbit' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/orbit.svg',
'text' => esc_html__('Orbit', 'darkify'),
'option_demo_url' => '',
),
'classic' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/classic.svg',
'text' => esc_html__('Classic', 'darkify'),
'option_demo_url' => '',
),
'expand' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/expand.svg',
'text' => esc_html__('Expand', 'darkify'),
'option_demo_url' => '',
),
'inner-moon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/inner-moon.svg',
'text' => esc_html__('Inner Moon', 'darkify'),
'option_demo_url' => '',
),
'within' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/within.svg',
'text' => esc_html__('Within', 'darkify'),
'option_demo_url' => '',
),
'around' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/around.svg',
'text' => esc_html__('Around', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-side' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-side.svg',
'text' => esc_html__('Dark Side', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'horizon' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/horizon.svg',
'text' => esc_html__('Horizon', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'eclipse' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/eclipse.svg',
'text' => esc_html__('Eclipse', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'lightbulb' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/lightbulb.svg',
'text' => esc_html__('Lightbulb', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dark-inner' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dark-inner.svg',
'text' => esc_html__('Dark Inner', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'half-sun' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/half-sun.svg',
'text' => esc_html__('Half Sun', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'simple' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/simple.svg',
'text' => esc_html__('Simple', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'duality' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/duality.svg',
'text' => esc_html__('Duality', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'dual' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/dual.svg',
'text' => esc_html__('Dual', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
'shift' => array(
'image' => DARKIFY_DIR_URL . 'src/Admin/assets/images/shift.svg',
'text' => esc_html__('Shift', 'darkify'),
'option_demo_url' => '',
'pro_only' => true,
),
),
'default' => 'orbit',
),
array(
'id' => 'switch_size',
'type' => 'button_set',
'title' => esc_html__('Switch Size', 'darkify'),
'options' => array(
'0.6' => esc_html__('XS', 'darkify'),
'0.8' => esc_html__('S', 'darkify'),
'1' => esc_html__('M', 'darkify'),
'1.2' => esc_html__('L', 'darkify'),
'1.4' => esc_html__('XL', 'darkify'),
'1.6' => esc_html__('XXL', 'darkify'),
'custom' => esc_html__('Custom', 'darkify'),
),
'default' => '1',
),
array(
'id' => 'switch_size_custom',
'type' => 'slider',
'title' => esc_html__('Custom Switch Size', 'darkify'),
'title_help' => '' . esc_html__('Scale in percentage relative to normal size.', 'darkify') . '
',
'default' => '100',
'min' => 40,
'max' => 300,
'dependency' => array('switch_size', '==', 'custom'),
),
array(
'id' => 'switch_background',
'type' => 'color_group',
'title' => esc_html__('Switch Background', 'darkify'),
'options' => array(
'switch_light_mode_bg' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_bg' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_bg' => '#121116',
'switch_dark_mode_bg' => '#ffffff',
),
),
array(
'id' => 'switch_icon_color',
'type' => 'color_group',
'title' => esc_html__('Switch Icon Color', 'darkify'),
'options' => array(
'switch_light_mode_color' => esc_html__('Light Mode', 'darkify'),
'switch_dark_mode_color' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_light_mode_color' => '#ffffff',
'switch_dark_mode_color' => '#121116',
),
'dependency' => array('enable_dark_switcher', 'not-any', 'duality,dual,shift'),
),
array(
'id' => 'switch_text_color',
'type' => 'color_group',
'title' => esc_html__('Switch Text Color', 'darkify'),
'options' => array(
'switch_text_light_mode_color' => esc_html__('Light Mode', 'darkify'),
'switch_text_dark_mode_color' => esc_html__('Dark Mode', 'darkify'),
),
'default' => array(
'switch_text_light_mode_color' => '#121116',
'switch_text_dark_mode_color' => '#ffffff',
),
'dependency' => array('enable_dark_switcher', 'any', 'dual'),
),
array(
'id' => 'switch_border',
'type' => 'border',
'title' => esc_html__('Switch Border', 'darkify'),
'color' => true,
'style' => false,
'color2' => false,
'color3' => true,
'all' => true,
'radius' => true,
'default' => array(
'color' => '#121116',
'color3' => '#ffffff',
'all' => 0,
'radius' => 7,
),
),
),
),
array(
'id' => 'switcher_shortcode',
'type' => 'switcher_shortcode',
'title' => esc_html__('Dark Mode Switch Shortcode', 'darkify'),
'title_help' => '' .
__('Use the shortcode below to display a dark mode switch anywhere WordPress shortcodes are supported.', 'darkify') .
'
' .
'' .
'',
'dependency' => array('enable_dark_switcher', 'not-any', 'orbit,duality,dual,shift'),
),
array(
'id' => 'switcher_shortcode_v2',
'type' => 'switcher_shortcode_v2',
'title' => esc_html__('Dark Mode Switch Shortcode', 'darkify'),
'title_help' => '' .
__('Use the shortcode below to display a dark mode switch anywhere WordPress shortcodes are supported.', 'darkify') .
'
' .
'' .
'',
'dependency' => array('enable_dark_switcher', 'any', 'orbit,duality,dual,shift'),
),
array(
'title' => esc_html__('Custom Switch Selectors', 'darkify'),
'type' => 'heading',
'section_start' => true,
),
array(
'id' => 'alternative_dark_mode_switcher',
'type' => 'text',
'title' => esc_html__('Alternative Switch Selectors', 'darkify'),
'title_help' =>
'' .
__('Enter CSS selectors for elements that should toggle dark mode when clicked. Separate multiple selectors with commas.', 'darkify') .
'
' .
'' .
'',
'placeholder' => esc_html__('e.g., .my-dark-switch, #dark-mode-toggle', 'darkify'),
'validate' => 'css_selectors',
),
)
),
)
),
)
)
);
}
}