*/
namespace ThemeAtelier\Darkify\Admin\Views;
use ThemeAtelier\Darkify\Admin\Schema\SchemaRegistry as Darkify;
class Media
{
/**
* 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(
'id' => 'media',
'title' => esc_html__('Media', 'darkify'),
'icon' => 'icofont-multimedia',
'fields' => array(
array(
'type' => 'section_tab',
'tabs' => array(
array(
'id' => 'image-controls',
'title' => esc_html__('Image Controls', 'darkify'),
'icon' => 'icofont-file-image',
'fields' => array(
// Intro line, rendered plain above the section cards.
array(
'type' => 'page_hint',
'content' => esc_html__('Control how images adapt when dark mode is active.', 'darkify'),
),
// ===== BRIGHTNESS =====
array(
'type' => 'heading',
'title' => esc_html__('Brightness', 'darkify'),
'section_start' => true,
),
// Low Brightness
array(
'id' => 'brightness',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_low_image_brightness',
'type' => 'switcher',
'title' => esc_html__('Low Brightness Images', 'darkify'),
'title_help' =>
'
' .
__('Enable a low-brightness effect for images when dark mode is active.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
'default' => true,
),
array(
'id' => 'low_image_brightness_label',
'type' => 'slider',
'title' => esc_html__('Brightness Level', 'darkify'),
'title_help' => '' .
__('Adjust the brightness level for images in dark mode.', 'darkify') .
'
',
'min' => 0,
'max' => 100,
'step' => 5,
'default' => '20',
'unit' => '%',
'panel' => true,
'dependency' => array('enable_low_image_brightness', '==', 'true', 'all'),
),
array(
'id' => 'disallowed_low_brightness_images',
'type' => 'textarea',
'title' => esc_html__('Exclude Images', 'darkify'),
'title_help' =>
'' .
__('Exclude specific images from brightness adjustments in dark mode.', 'darkify') .
'
',
'placeholder' => esc_html__(
'Enter image URLs to exclude (comma-separated or one per line).',
'darkify'
),
'class' => 'only_pro',
'dependency' => array('enable_low_image_brightness', '==', 'true', 'all'),
),
),
),
// ===== GRAYSCALE =====
array(
'type' => 'heading',
'title' => esc_html__('Grayscale', 'darkify'),
'section_start' => true,
),
// Grayscale Image
array(
'id' => 'grayscale',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_image_grayscale',
'type' => 'switcher',
'title' => esc_html__('Grayscale Images', 'darkify'),
'title_help' =>
'' .
__('Enable grayscale effect for images when dark mode is enabled.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
),
array(
'id' => 'image_grayscale_label',
'type' => 'slider',
'title' => esc_html__('Grayscale Level', 'darkify'),
'title_help' =>
'' .
__('Adjust the grayscale level for images in dark mode.', 'darkify') .
'
',
'min' => 0,
'max' => 100,
'step' => 5,
'default' => '80',
'unit' => '%',
'panel' => true,
'dependency' => array('enable_image_grayscale', '==', 'true', 'all'),
),
array(
'id' => 'disallowed_low_grayscale_images',
'type' => 'textarea',
'title' => esc_html__('Exclude Images', 'darkify'),
'title_help' => '' .
__('Exclude grayscale effects for specific images.', 'darkify') .
'
',
'placeholder' => esc_html__(
'Enter image URLs (comma-separated or one per line) to exclude from grayscale effects.',
'darkify'
),
'class' => 'only_pro',
'dependency' => array('enable_image_grayscale', '==', 'true', 'all'),
),
),
),
// ===== BACKGROUND & INVERSION =====
array(
'type' => 'heading',
'title' => esc_html__('Background & Inversion', 'darkify'),
'section_start' => true,
),
// Darken Background Image
array(
'id' => 'darken_background',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_low_image_darken',
'type' => 'switcher',
'title' => esc_html__('Darken Background Images', 'darkify'),
'title_help' => '' .
__('Enable background darkening effect in dark mode.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
'default' => true,
),
array(
'id' => 'low_image_darken_label',
'type' => 'slider',
'title' => esc_html__('Darkening Level', 'darkify'),
'title_help' => '' .
__('Adjust the darkening level for background images in dark mode.', 'darkify') .
'
',
'min' => 0,
'max' => 100,
'step' => 5,
'default' => '60',
'unit' => '%',
'panel' => true,
'dependency' => array('enable_low_image_darken', '==', 'true', 'all'),
),
),
),
array(
'id' => 'enable_invert_inline_svg',
'type' => 'switcher',
'title' => esc_html__('Invert Inline SVGs', 'darkify'),
'title_help' =>
'' .
__('Enable automatic inversion of inline SVG images in dark mode.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
),
// Image Inversion
array(
'id' => 'invert',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_invert_images',
'type' => 'switcher',
'title' => esc_html__('Invert Specific Images', 'darkify'),
'title_help' => '' .
__('Enable image inversion for specific images in dark mode.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
'class' => 'switcher_pro_only',
'default' => false,
),
array(
'id' => 'invert_images_allowed_urls',
'type' => 'textarea',
'title' => esc_html__('Image URLs', 'darkify'),
'title_help' => '' .
__('Apply inversion to specific images, SVGs, or backgrounds.', 'darkify') .
'
',
'placeholder' => esc_html__(
'Enter URLs (comma-separated or one per line) for images, SVGs, or background images to apply inversion.',
'darkify'
),
'class' => 'only_pro',
),
),
),
array(
'type' => 'heading',
'title' => esc_html__('Replace Images', 'darkify'),
'section_start' => true,
),
array(
'id' => 'image_replacements',
'type' => 'repeater',
'class' => 'replacement_repeater repeater_pro_only',
'title' => esc_html__('Replace Images', 'darkify'),
'title_help' =>
'' .
__('Replace specified images when dark mode is active.', 'darkify') .
'
' .
'' .
'',
'fields' => array(
array(
'id' => 'normal_image',
'type' => 'upload',
'library' => 'image',
'title' => esc_html__('Normal Mode Image', 'darkify'),
'placeholder' => esc_html__('Image URL', 'darkify'),
'button_title' => esc_html__('Add Image', 'darkify'),
'remove_title' => esc_html__('Remove Image', 'darkify'),
),
array(
'id' => 'dark_image',
'type' => 'upload',
'library' => 'image',
'title' => esc_html__('Dark Mode Image', 'darkify'),
'placeholder' => esc_html__('Image URL', 'darkify'),
'button_title' => esc_html__('Add Image', 'darkify'),
'remove_title' => esc_html__('Remove Image', 'darkify'),
),
),
'default' => array(
array(
'normal_image' => '',
'dark_image' => '',
),
)
),
)
),
array(
'id' => 'video-controls',
'title' => esc_html__('Video Controls', 'darkify'),
'icon' => 'icofont-file-video',
'fields' => array(
// Intro line, rendered plain above the section cards.
array(
'type' => 'page_hint',
'content' => esc_html__('Control how videos respond to dark mode.', 'darkify'),
),
// ===== BRIGHTNESS =====
array(
'type' => 'heading',
'title' => esc_html__('Brightness', 'darkify'),
'section_start' => true,
),
// Low Brightness
array(
'id' => 'video_brightness',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_low_video_brightness',
'type' => 'switcher',
'title' => esc_html__('Low Brightness Videos', 'darkify'),
'title_help' =>
'' .
__('Enable brightness effect for videos in dark mode.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
'default' => true,
),
array(
'id' => 'low_video_brightness_label',
'type' => 'slider',
'title' => esc_html__('Brightness Level', 'darkify'),
'title_help' => '' .
__('Adjust the brightness level for videos in dark mode.', 'darkify') .
'
',
'min' => 0,
'max' => 100,
'step' => 5,
'default' => '20',
'unit' => '%',
'panel' => true,
'dependency' => array('enable_low_video_brightness', '==', 'true', 'all'),
),
),
),
// ===== GRAYSCALE =====
array(
'type' => 'heading',
'title' => esc_html__('Grayscale', 'darkify'),
'section_start' => true,
),
// Grayscale Video
array(
'id' => 'video_grayscale',
'type' => 'fieldset',
'fields' => array(
array(
'id' => 'enable_video_grayscale',
'type' => 'switcher',
'title' => esc_html__('Grayscale Videos', 'darkify'),
'title_help' =>
'' .
__('Enable grayscale effect for videos in dark mode.', 'darkify') .
'
',
'text_on' => esc_html__('Enabled', 'darkify'),
'text_off' => esc_html__('Disabled', 'darkify'),
'text_width' => 100,
),
array(
'id' => 'video_grayscale_label',
'type' => 'slider',
'title' => esc_html__('Grayscale Level', 'darkify'),
'title_help' => '' .
__('Adjust the grayscale level for videos in dark mode.', 'darkify') .
'
',
'min' => 0,
'max' => 100,
'step' => 5,
'default' => '80',
'unit' => '%',
'panel' => true,
'dependency' => array('enable_video_grayscale', '==', 'true', 'all'),
),
),
),
array(
'type' => 'heading',
'title' => esc_html__('Replace Videos', 'darkify'),
'section_start' => true,
),
array(
'id' => 'video_replacements',
'type' => 'repeater',
'class' => 'replacement_repeater repeater_pro_only',
'title' => esc_html__('Replace Videos', 'darkify'),
'title_help' => '' .
__('Replace specified videos (self-hosted, YouTube, Vimeo, or Dailymotion) when dark mode is active.', 'darkify') .
'
',
'fields' => array(
array(
'id' => 'normal_video',
'type' => 'upload',
'library' => 'video',
'title' => esc_html__('Normal Mode Video', 'darkify'),
'placeholder' => esc_html__('Video URL', 'darkify'),
'button_title' => esc_html__('Add Video', 'darkify'),
'remove_title' => esc_html__('Remove Video', 'darkify'),
),
array(
'id' => 'dark_video',
'type' => 'upload',
'library' => 'video',
'title' => esc_html__('Dark Mode Video', 'darkify'),
'placeholder' => esc_html__('Video URL', 'darkify'),
'button_title' => esc_html__('Add Video', 'darkify'),
'remove_title' => esc_html__('Remove Video', 'darkify'),
),
),
'default' => array(
array(
'normal_video' => '',
'dark_video' => '',
),
)
),
)
),
),
),
)
)
);
}
}