/home/tywatomy/public_html/en-ariapress-org/wp-content/themes/kenta/inc/dynamic-css.php
<?php
/**
* Kenta dynamic css
*/
use LottaFramework\Facades\Css;
use LottaFramework\Facades\CZ;
use LottaFramework\Utils;
/**
* Update our CSS cache when done saving Customizer options.
*
* @since 1.1.4
*/
function kenta_reset_dynamic_css_cache() {
kenta_update_option( 'dynamic_css_assets', array() );
}
add_action( 'customize_save_after', 'kenta_reset_dynamic_css_cache' );
/**
* If the assets folder writable
*
* @return bool
* @since v1.2.8
*/
function kenta_is_dynamic_css_assets_folder_writable() {
global $blog_id;
$current_loop = kenta_current_loop();
// Get the upload directory for this site.
$upload_dir = wp_get_upload_dir();
// If this is a multisite installation, append the blogid to the filename.
$css_blog_id = ( is_multisite() && $blog_id > 1 ) ? '_blog-' . $blog_id : null;
$file_name = '/asset' . $css_blog_id . '-' . $current_loop . '.css';
$folder_path = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'kenta';
// Does the folder exist?
if ( file_exists( $folder_path ) ) {
// Folder exists, but is the folder writable?
if ( ! is_writable( $folder_path ) ) {
// Folder is not writable.
// Does the file exist?
if ( ! file_exists( $folder_path . $file_name ) ) {
// File does not exist, therefore it can't be created
// since the parent folder is not writable.
return false;
} else {
// File exists, but is it writable?
if ( ! is_writable( $folder_path . $file_name ) ) {
// Nope, it's not writable.
return false;
}
}
} else {
// The folder is writable.
// Does the file exist?
if ( file_exists( $folder_path . $file_name ) ) {
// File exists.
// Is it writable?
if ( ! is_writable( $folder_path . $file_name ) ) {
// Nope, it's not writable.
return false;
}
}
}
} else {
// Can we create the folder?
// returns true if yes and false if not.
return wp_mkdir_p( $folder_path );
}
// all is well!
return true;
}
/**
* Write dynamic css to file
*
* @return bool
* @since v1.2.8
*/
function kenta_make_dynamic_css_cache() {
$current_loop = kenta_current_loop();
$raw_css = kenta_dynamic_css();
// Don't need to create assets file
if ( ! $raw_css ) {
return false;
}
// If we only have a little CSS/Scripts, we should inline it.
$css_size = strlen( $raw_css );
if ( $css_size < (int) apply_filters( 'kenta_assets_inline_length', 500 ) ) {
return false;
}
global $wp_filesystem;
// Initialize the WordPress filesystem.
if ( empty( $wp_filesystem ) ) {
require_once ABSPATH . '/wp-admin/includes/file.php';
WP_Filesystem();
}
// Take care of domain mapping.
if ( defined( 'DOMAIN_MAPPING' ) && DOMAIN_MAPPING ) {
if ( function_exists( 'domain_mapping_siteurl' ) && function_exists( 'get_original_url' ) ) {
$mapped_domain = domain_mapping_siteurl( false );
$original_domain = get_original_url( 'siteurl' );
$raw_css = str_replace( $original_domain, $mapped_domain, $raw_css );
}
}
if ( ! is_writable( dirname( kenta_get_cached_dynamic_css( 'path' ) ) ) ) {
return false;
}
$chmod_file = 0644;
if ( defined( 'FS_CHMOD_FILE' ) ) {
$chmod_file = FS_CHMOD_FILE;
}
// write css
$css_file_path = kenta_get_cached_dynamic_css( 'path' );
if ( $raw_css && is_writable( $css_file_path ) || ( ! file_exists( $css_file_path ) ) ) {
// can't save css file
if ( ! $wp_filesystem->put_contents( $css_file_path, wp_strip_all_tags( $raw_css ), $chmod_file ) ) {
return false;
}
}
$option = kenta_get_option( 'dynamic_css_assets', array() );
$option[ $current_loop ] = true;
kenta_update_option( 'dynamic_css_assets', $option );
// Update the 'dynamic_css_time' option.
kenta_update_option( 'dynamic_css_time', time() );
kenta_update_option(
'dynamic_css_cached_version',
esc_html( kenta_apply_filters( 'dynamic_css_cached_version', kenta_get_theme_version() ) )
);
kenta_do_action( 'dynamic_css_cached', $raw_css, $current_loop );
// Success!
return true;
}
/**
* Do we need to update the assets file?
*
* @return bool
* @since v1.2.8
*/
function kenta_should_update_dynamic_cache() {
$cached_version = kenta_get_option( 'dynamic_css_cached_version', '' );
if ( kenta_apply_filters( 'should_dynamic_css_re_cached', kenta_get_theme_version() !== $cached_version ) ) {
kenta_reset_dynamic_css_cache();
return true;
}
// If the CSS file does not exist then we definitely need to regenerate the CSS.
if ( ! file_exists( kenta_get_cached_dynamic_css( 'path' ) ) ) {
return true;
}
$current_loop = kenta_current_loop();
$option = kenta_get_option( 'dynamic_css_assets', array() );
return ( ! isset( $option[ $current_loop ] ) || ! $option[ $current_loop ] ) ? true : false;
}
/**
* Get current dynamic css mode
*
* @return string|void
* @since v1.2.8
*/
function kenta_dynamic_css_mode() {
$using_cached_dynamic_css = kenta_apply_filters( 'using_cached_dynamic_css', CZ::checked( 'kenta_enable_customizer_cache' ) );
$mode = 'cached';
if (
! $using_cached_dynamic_css
||
( function_exists( 'is_customize_preview' ) && is_customize_preview() )
||
is_preview()
||
// AMP inlines all CSS, so inlining from the start improves CSS processing performance.
( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) ) {
return 'inline';
}
if ( kenta_should_update_dynamic_cache() ) {
// Only allow processing 1 file every 5 seconds.
$current_time = (int) time();
$last_time = (int) kenta_get_option( 'dynamic_css_time' );
if ( 5 <= ( $current_time - $last_time ) ) {
// Attempt to write to the file.
$mode = ( kenta_is_dynamic_css_assets_folder_writable() && kenta_make_dynamic_css_cache() ) ? 'cached' : 'inline';
// Does again if the file exists.
if ( 'inline' !== $mode ) {
$mode = ( file_exists( kenta_get_cached_dynamic_css( 'path' ) ) ) ? 'cached' : 'inline';
}
}
}
return $mode;
}
/**
* Get cached dynamic css file path or uri
*
* @param $target
*
* @return string|void
* @since v1.2.8
*/
function kenta_get_cached_dynamic_css( $target = 'path' ) {
global $blog_id;
$current_loop = kenta_current_loop();
// Get the upload directory for this site.
$upload_dir = wp_get_upload_dir();
// If this is a multisite installation, append the blogid to the filename.
$css_blog_id = ( is_multisite() && $blog_id > 1 ) ? '_blog-' . $blog_id : null;
$file_name = 'asset' . $css_blog_id . '-' . $current_loop . '.css';
$folder_path = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'kenta';
// The complete path to the file.
$file_path = $folder_path . DIRECTORY_SEPARATOR . $file_name;
// Get the URL directory of the stylesheet.
$css_uri_folder = $upload_dir['baseurl'];
$css_uri = trailingslashit( $css_uri_folder ) . 'kenta/' . $file_name;
// Take care of domain mapping.
if ( defined( 'DOMAIN_MAPPING' ) && DOMAIN_MAPPING ) {
if ( function_exists( 'domain_mapping_siteurl' ) && function_exists( 'get_original_url' ) ) {
$mapped_domain = domain_mapping_siteurl( false );
$original_domain = get_original_url( 'siteurl' );
$css_uri = str_replace( $original_domain, $mapped_domain, $css_uri );
}
}
$css_uri = set_url_scheme( $css_uri );
if ( 'path' === $target ) {
return $file_path;
} elseif ( 'url' === $target || 'uri' === $target ) {
$timestamp = ( file_exists( $file_path ) ) ? '?ver=' . filemtime( $file_path ) : '';
return $css_uri . $timestamp;
}
}
/**
* Enqueue global css variables
*/
function kenta_enqueue_global_vars( $args = [] ) {
$args = wp_parse_args( $args, [
'defaultScheme' => '',
'selector' => ':root',
'suffix' => ''
] );
wp_register_style( 'kenta-dynamic-vars' . $args['suffix'], false );
wp_enqueue_style( 'kenta-dynamic-vars' . $args['suffix'] );
wp_add_inline_style( 'kenta-dynamic-vars' . $args['suffix'],
kenta_global_css_vars( $args['selector'], $args['suffix'], $args['defaultScheme'] )
);
}
/**
* Enqueue dynamic css for our theme
*/
function kenta_enqueue_transparent_header_css() {
wp_register_style( 'kenta-transparent-header', false );
wp_enqueue_style( 'kenta-transparent-header' );
wp_add_inline_style( 'kenta-transparent-header', kenta_transparent_header_css() );
}
/**
* Enqueue dynamic css for our theme
*/
function kenta_enqueue_dynamic_css() {
wp_register_style( 'kenta-preloader', false );
wp_enqueue_style( 'kenta-preloader' );
wp_add_inline_style( 'kenta-preloader', kenta_preloader_css() );
if ( 'inline' === kenta_dynamic_css_mode() ) {
$dynamic_css = kenta_dynamic_css();
} else {
$dynamic_css = '';
wp_enqueue_style(
'kenta-cached-dynamic-styles',
esc_url( kenta_get_cached_dynamic_css( 'uri' ) ),
[],
null
);
}
$dynamic_css .= kenta_no_cache_dynamic_css();
wp_register_style( 'kenta-dynamic', false );
wp_enqueue_style( 'kenta-dynamic' );
wp_add_inline_style( 'kenta-dynamic', $dynamic_css );
}
/**
* Enqueue dynamic css for our theme editor
*/
function kenta_enqueue_admin_dynamic_css() {
wp_register_style( 'kenta-admin-dynamic', false );
wp_enqueue_style( 'kenta-admin-dynamic' );
wp_add_inline_style( 'kenta-admin-dynamic', kenta_admin_dynamic_css() );
}
/**
* Generate global css vars
*
* @return mixed
*/
function kenta_global_css_vars( $selector, $suffix = '', $defaultScheme = '' ) {
$suffix = $suffix === '' ? '' : '-' . $suffix;
$vars = [
'--kenta-transparent' . $suffix => 'rgba(0, 0, 0, 0)',
];
if ( $defaultScheme !== '' ) {
$vars = [
'--kenta-transparent' => 'rgba(0, 0, 0, 0)',
'--kenta-primary-color' => "var(--kenta-{$defaultScheme}-primary-color, var(--kenta-light-primary-color))",
'--kenta-primary-active' => "var(--kenta-{$defaultScheme}-primary-active, var(--kenta-light-primary-active))",
'--kenta-accent-color' => "var(--kenta-{$defaultScheme}-accent-color, var(--kenta-light-accent-color))",
'--kenta-accent-active' => "var(--kenta-{$defaultScheme}-accent-active, var(--kenta-light-accent-active))",
'--kenta-base-color' => "var(--kenta-{$defaultScheme}-base-color, var(--kenta-light-base-color))",
'--kenta-base-100' => "var(--kenta-{$defaultScheme}-base-100, var(--kenta-light-base-100))",
'--kenta-base-200' => "var(--kenta-{$defaultScheme}-base-200, var(--kenta-light-base-200))",
'--kenta-base-300' => "var(--kenta-{$defaultScheme}-base-300, var(--kenta-light-base-300))",
];
}
foreach ( [ 'light', 'dark' ] as $scheme ) {
$prefix = ( $scheme === 'light' ) ? 'kenta' : "kenta_{$scheme}";
/**
* Palette
*/
$global_colors = apply_filters( 'kenta_global_color_vars', [
"{$prefix}_primary_color" => [
'default' => "kenta-{$scheme}-primary-color",
'active' => "kenta-{$scheme}-primary-active",
],
"{$prefix}_accent_color" => [
'default' => "kenta-{$scheme}-accent-color",
'active' => "kenta-{$scheme}-accent-active",
],
"{$prefix}_base_color" => [
'default' => "kenta-{$scheme}-base-color",
'100' => "kenta-{$scheme}-base-100",
'200' => "kenta-{$scheme}-base-200",
'300' => "kenta-{$scheme}-base-300",
],
] );
$presets = $scheme === 'light' ? kenta_color_presets() : kenta_dark_color_presets();
$preset = $presets[ CZ::get( "{$prefix}_color_palettes" ) ] ?? [];
foreach ( $global_colors as $setting => $args ) {
$color = CZ::get( $setting );
foreach ( $args as $key => $var ) {
$preset_var_name = str_replace( "kenta-{$scheme}-", 'kenta-', rtrim( substr( $color[ $key ], strlen( 'var(--' ) ), ')' ) );
if ( Utils::str_starts_with( $color[ $key ], 'var' ) && isset( $preset[ $preset_var_name ] ) ) {
$vars[ '--' . $var . $suffix ] = $preset[ $preset_var_name ];
continue;
}
$vars[ '--' . $var . $suffix ] = $color[ $key ];
}
}
}
// Content colors
$content_colors = apply_filters( 'kenta_content_color_vars', [
'kenta_content_base_color' => [
'initial' => 'kenta-content-base-color',
],
'kenta_content_drop_cap_color' => [
'initial' => 'kenta-content-drop-cap-color',
],
'kenta_content_links_color' => [
'initial' => 'kenta-link-initial-color',
'hover' => 'kenta-link-hover-color',
],
'kenta_content_headings_color' => [
'initial' => 'kenta-headings-color',
],
] );
foreach ( $content_colors as $setting => $args ) {
$color = CZ::get( $setting );
foreach ( $args as $key => $var ) {
$vars[ '--' . $var . $suffix ] = $color[ $key ];
}
}
return Css::parse( [
/**
* Css vars
*/
$selector => $vars,
] );
}
/**
* @param $scope
* @param array $css
*
* @return array|mixed
*/
function kenta_content_typography_css( $scope, $css = [] ) {
$fonts = apply_filters( 'kenta_content_typography_vars', [
'kenta_content_base_typography' => '',
'kenta_content_drop_cap_typography' => '.has-drop-cap::first-letter',
] );
foreach ( $fonts as $id => $selector ) {
$selector = $selector === '' ? $scope : $scope . ' ' . $selector;
$css[ $selector ] = array_merge(
Css::typography( CZ::get( $id ) ),
$css[ $selector ] ?? []
);
}
return $css;
}
/**
* Button css
*
* @return array
*/
function kenta_content_buttons_css() {
$preset = kenta_button_preset( 'kenta_content_buttons_', CZ::get( 'kenta_content_buttons_preset' ) );
return array_merge(
[
'--kenta-button-height' => CZ::get( 'kenta_content_buttons_min_height' )
],
Css::shadow( CZ::get( 'kenta_content_buttons_shadow', $preset ), '--kenta-button-shadow' ),
Css::shadow( CZ::get( 'kenta_content_buttons_shadow_active', $preset ), '--kenta-button-shadow-active' ),
Css::typography( CZ::get( 'kenta_content_buttons_typography', $preset ) ),
Css::border( CZ::get( 'kenta_content_buttons_border', $preset ), '--kenta-button-border' ),
Css::dimensions( CZ::get( 'kenta_content_buttons_padding', $preset ), '--kenta-button-padding' ),
Css::dimensions( CZ::get( 'kenta_content_buttons_radius', $preset ), '--kenta-button-radius' ),
Css::colors( CZ::get( 'kenta_content_buttons_text_color', $preset ), [
'initial' => '--kenta-button-text-initial-color',
'hover' => '--kenta-button-text-hover-color',
] ),
Css::colors( CZ::get( 'kenta_content_buttons_button_color', $preset ), [
'initial' => '--kenta-button-initial-color',
'hover' => '--kenta-button-hover-color',
] )
);
}
/**
* Transparent header css
*
* @return string
*/
function kenta_transparent_header_css() {
$transparent = kenta_is_transparent_header();
if ( ! $transparent ) {
return '';
}
$css = [];
// header row
$css['.kenta-transparent-header .kenta-header-row'] = array_merge(
[ 'box-shadow' => 'none' ],
Css::border( CZ::get( 'kenta_trans_header_border_top' ), 'border-top' ),
Css::border( CZ::get( 'kenta_trans_header_border_bottom' ), 'border-bottom' ),
Css::background( CZ::get( 'kenta_trans_header_bg' ) )
);
// site branding
$css['.kenta-transparent-header .kenta-site-branding .kenta-has-transparent-logo .kenta-transparent-logo'] = [
'display' => 'inline-block',
];
$css['.kenta-transparent-header .kenta-site-branding .kenta-has-transparent-logo .kenta-logo, .kenta-transparent-header .kenta-site-branding .kenta-has-transparent-logo .kenta-dark-scheme-logo'] = [
'display' => 'none',
];
$css['.kenta-transparent-header .kenta-site-branding .site-identity .site-title, .kenta-transparent-header .kenta-site-branding .site-identity .site-tagline'] =
Css::colors( CZ::get( 'kenta_trans_header_site_title_color' ), [
'initial' => '--text-color',
'hover' => '--hover-color',
] );
// Raw text
$css['.kenta-transparent-header, .kenta-transparent-header .kenta-data-time-element, .kenta-transparent-header .kenta-raw-html, .kenta-transparent-header .kenta-breadcrumbs-element'] = Css::colors( CZ::get( 'kenta_trans_header_raw_text_color' ), [
'text' => [ 'color', '--kenta-data-time-text-color', '--kenta-data-time-icon-color', '--breadcrumb-text' ],
'initial' => [ '--kenta-link-initial-color', '--breadcrumb-link-initial' ],
'hover' => [ '--kenta-link-hover-color', '--breadcrumb-link-hover' ],
] );
// menu element
$css['.kenta-transparent-header .kenta-menu'] = array_merge(
Css::colors( CZ::get( 'kenta_trans_header_menu_color' ), [
'initial' => '--menu-text-initial-color',
'hover' => '--menu-text-hover-color',
'active' => '--menu-text-active-color',
] ),
Css::colors( CZ::get( 'kenta_trans_header_menu_bg_color' ), [
'initial' => '--menu-background-initial-color',
'hover' => '--menu-background-hover-color',
'active' => '--menu-background-active-color',
] ),
Css::colors( CZ::get( 'kenta_trans_header_menu_border_color' ), [
'initial' => [
'--lotta-border---menu-items-border-top-initial-color',
'--lotta-border---menu-items-border-bottom-initial-color',
],
'active' => [
'--lotta-border---menu-items-border-top-active-initial-color',
'--lotta-border---menu-items-border-bottom-active-initial-color',
],
] )
);
// button & icon button element
$css['.kenta-transparent-header .kenta-button, .kenta-transparent-header .kenta-icon-button, .kenta-transparent-header .kenta-social-icon'] = array_merge(
Css::colors( CZ::get( 'kenta_trans_header_button_color' ), [
'initial' => [
'--kenta-button-text-initial-color',
'--kenta-icon-button-icon-initial-color',
'--kenta-social-icon-initial-color',
],
'hover' => [
'--kenta-button-text-hover-color',
'--kenta-icon-button-icon-hover-color',
'--kenta-social-icon-hover-color',
],
] ),
Css::colors( CZ::get( 'kenta_trans_header_button_border_color' ), [
'initial' => [
'--lotta-border-initial-color',
'--lotta-border---kenta-button-border-initial-color',
'--kenta-icon-button-border-initial-color',
'--kenta-social-border-initial-color'
],
'hover' => [
'--lotta-border-hover-color',
'--lotta-border---kenta-button-border-hover-color',
'--kenta-icon-button-border-hover-color',
'--kenta-social-border-hover-color',
],
] ),
Css::colors( CZ::get( 'kenta_trans_header_button_bg_color' ), [
'initial' => [
'--kenta-button-initial-color',
'--kenta-icon-button-bg-initial-color',
'--kenta-social-bg-initial-color',
],
'hover' => [
'--kenta-button-hover-color',
'--kenta-icon-button-bg-hover-color',
'--kenta-social-bg-hover-color',
],
] )
);
$css = Css::parse( apply_filters( 'kenta_filter_transparent_header_css', $css ) );
$breakpoint = Css::desktop();
$device = CZ::get( 'kenta_enable_transparent_header_device' );
if ( $device === 'mobile' ) {
$css = '@media (max-width: ' . $breakpoint . ') {' . $css . '}';
}
if ( $device === 'desktop' ) {
$css = '@media (min-width: ' . $breakpoint . ') {' . $css . '}';
}
return $css;
}
/**
* Preloader css
*
* @return mixed
*/
function kenta_preloader_css() {
if ( ! CZ::checked( 'kenta_global_preloader' ) ) {
return '';
}
$css = [
'.kenta-preloader-wrap' => array_merge(
[
'--kenta-preloader-background' => 'var(--kenta-base-100)',
'--kenta-preloader-primary' => 'var(--kenta-primary-color)',
'--kenta-preloader-accent' => 'var(--kenta-accent-active)',
'position' => 'fixed',
'top' => '0',
'left' => '0',
'width' => '100%',
'height' => '100%',
'z-index' => '100000',
'display' => 'flex',
'align-items' => 'center',
'background' => 'var(--kenta-preloader-background)',
],
Css::colors( CZ::get( 'kenta_preloader_colors' ), [
'background' => '--kenta-preloader-background',
'accent' => '--kenta-preloader-accent',
'primary' => '--kenta-preloader-primary',
] )
),
];
$preset = kenta_get_preloader( CZ::get( 'kenta_preloader_preset' ) );
return Css::parse( array_merge( $css, $preset['css'] ) ) . Css::keyframes( $preset['keyframes'] );
}
/**
* Generate no cache dynamic css
*
* @return mixed
* @since 1.1.4
*/
function kenta_no_cache_dynamic_css() {
$css = array();
$option_type = kenta_current_option_type();
/**
* Global site
*/
$content_container_type = kenta_get_current_post_meta( 'site-container-layout' );
if ( $content_container_type === 'default' ) {
$content_container_type = CZ::get( 'kenta_' . $option_type . '_container_layout' ) ?? 'normal';
}
$site_wrap_css = [
'--kenta-max-w-content' => $content_container_type === 'normal' ? 'auto' : CZ::get( 'kenta_' . $option_type . '_container_max_width' ),
'--kenta-content-area-spacing' => kenta_get_current_post_meta( 'disable-content-area-spacing' ) === 'yes'
? '0px' : CZ::get( "kenta_{$option_type}_content_spacing" ),
'--wp-admin-bar-height' => ( ! is_admin_bar_showing() || is_customize_preview() ) ? '0px' : [
'desktop' => '32px',
'tablet' => '32px',
'mobile' => '46px',
],
];
// enable site wrap
$css['.kenta-site-wrap'] = $site_wrap_css;
$css = apply_filters( 'kenta_filter_no_cache_dynamic_css', $css );
return Css::parse( $css );
}
/**
* Generate cached dynamic css
*
* @return mixed
*/
function kenta_dynamic_css() {
// Enqueue header & footer builder style manually
Kenta_Header_Builder::instance()->builder()->do( 'enqueue_frontend_scripts' );
Kenta_Footer_Builder::instance()->builder()->do( 'enqueue_frontend_scripts' );
$css = [
':root' => array_merge(
Css::typography( CZ::get( 'kenta_site_global_typography' ) ),
Css::filters( CZ::get( 'kenta_site_filters' ) )
),
];
$option_type = kenta_current_option_type();
/**
* Global site
*/
$site_wrap_css = array_merge(
Css::typography( CZ::get( 'kenta_site_global_typography' ) ),
Css::background( CZ::get( 'kenta_site_background' ) )
);
// enable site wrap
if ( CZ::checked( 'kenta_enable_site_wrap' ) ) {
$css['.kenta-body'] = Css::background( CZ::get( 'kenta_site_body_background' ) );
$site_wrap_css = array_merge( $site_wrap_css,
Css::shadow( CZ::get( 'kenta_site_wrap_shadow' ) ),
[ '--kenta-site-wrap-width' => '1600px', 'margin' => '0 auto' ]
);
}
$css['.kenta-site-wrap'] = $site_wrap_css;
// Posts, pages and store site background override
if ( $option_type === 'pages' || $option_type === 'single_post' || $option_type === 'store' ) {
$css[".kenta-{$option_type} .kenta-site-wrap"] = Css::background( CZ::get( 'kenta_' . $option_type . '_site_background' ) );
}
/**
* override global colors in header
*/
$css['.kenta-site-header'] = array_merge(
Css::colors( CZ::get( 'kenta_header_primary_color' ), [
'default' => '--kenta-primary-color',
'active' => '--kenta-primary-active',
] ),
Css::colors( CZ::get( 'kenta_header_accent_color' ), [
'default' => '--kenta-accent-color',
'active' => '--kenta-accent-active',
] ),
Css::colors( CZ::get( 'kenta_header_base_color' ), [
'default' => '--kenta-base-color',
'100' => '--kenta-base-100',
'200' => '--kenta-base-200',
'300' => '--kenta-base-300',
] )
);
// override global colors in footer
$css['.kenta-footer-area'] = array_merge(
Css::colors( CZ::get( 'kenta_footer_primary_color' ), [
'default' => '--kenta-primary-color',
'active' => '--kenta-primary-active',
] ),
Css::colors( CZ::get( 'kenta_footer_accent_color' ), [
'default' => '--kenta-accent-color',
'active' => '--kenta-accent-active',
] ),
Css::colors( CZ::get( 'kenta_footer_base_color' ), [
'default' => '--kenta-base-color',
'100' => '--kenta-base-100',
'200' => '--kenta-base-200',
'300' => '--kenta-base-300',
] )
);
/**
* Archive title
*/
$css['.kenta-archive-header'] = array_merge(
[ 'text-align' => CZ::get( 'kenta_archive_header_alignment' ) ],
Css::background( CZ::get( 'kenta_archive_header_background' ) )
);
$css['.kenta-archive-header .container'] = Css::dimensions( CZ::get( 'kenta_archive_header_padding' ), 'padding' );
$css['.kenta-archive-header .archive-title'] = array_merge(
Css::typography( CZ::get( 'kenta_archive_title_typography' ) ),
Css::colors( CZ::get( 'kenta_archive_title_color' ), [
'initial' => 'color',
] )
);
$css['.kenta-archive-header .archive-description'] = array_merge(
Css::typography( CZ::get( 'kenta_archive_description_typography' ) ),
Css::colors( CZ::get( 'kenta_archive_description_color' ), [
'initial' => 'color',
] )
);
$css['.kenta-archive-header::after'] = array_merge(
[ 'opacity' => CZ::get( 'kenta_archive_header_overlay_opacity' ) ],
Css::background( CZ::get( 'kenta_archive_header_overlay' ) )
);
/**
* Post card
*/
if ( is_archive() || is_home() || is_search() ) {
$css['.card-list'] = [
'--card-gap' => CZ::get( 'kenta_card_gap' ),
'--card-thumbnail-width' => CZ::get( 'kenta_archive_image_width' ),
];
$archive_layout = CZ::get( 'kenta_archive_layout' );
if ( $archive_layout === null || $archive_layout === 'archive-grid' || $archive_layout === 'archive-masonry' ) {
$card_width = [];
foreach ( CZ::get( 'kenta_archive_columns' ) as $device => $columns ) {
$card_width[ $device ] = sprintf( "%.2f", substr( sprintf( "%.3f", ( 100 / (int) $columns ) ), 0, - 1 ) ) . '%';
}
$css['.card-wrapper'] = [
'width' => $card_width,
];
} else {
$css['.card-wrapper'] = [
'width' => '100%',
];
}
$css['.card'] = array_merge(
[
'text-align' => CZ::get( 'kenta_card_content_alignment' ),
'--card-thumbnail-spacing' => CZ::get( 'kenta_card_thumbnail_spacing' ),
'--card-content-spacing' => CZ::get( 'kenta_card_content_spacing' )
],
kenta_card_preset_style( CZ::get( 'kenta_card_style_preset' ) )
);
}
/**
* Posts Pagination
*/
if ( CZ::checked( 'kenta_archive_pagination_section' ) ) {
$pagination_type = CZ::get( 'kenta_pagination_type' );
$pagination_css = [];
if ( $pagination_type === 'numbered' || $pagination_type === 'prev-next' ) {
$pagination_css = array_merge(
Css::border( CZ::get( 'kenta_pagination_button_border' ), '--kenta-pagination-button-border' ),
Css::colors( CZ::get( 'kenta_pagination_button_color' ), [
'initial' => '--kenta-pagination-initial-color',
'active' => '--kenta-pagination-active-color',
'accent' => '--kenta-pagination-accent-color',
] ),
[ '--kenta-pagination-button-radius' => CZ::get( 'kenta_pagination_button_radius' ) ]
);
}
$css['.kenta-pagination'] = array_merge( $pagination_css,
Css::typography( CZ::get( 'kenta_pagination_typography' ) ),
[ 'justify-content' => CZ::get( 'kenta_pagination_alignment' ) ]
);
}
/**
* Post elements
*/
$post_elements_scope = [
'entry' => [
'condition' => is_archive() || is_home() || is_search(),
'elements' => [ 'title', 'metas', 'categories', 'tags', 'excerpt', 'thumbnail', 'divider', 'read-more' ],
'selector' => '.card'
],
'post' => [
'condition' => is_single(),
'elements' => [ 'title', 'metas', 'categories', 'tags' ],
'selector' => '.kenta-article-header'
],
'page' => [
'condition' => is_page(),
'elements' => [ 'title', 'metas', 'categories', 'tags' ],
'selector' => '.kenta-article-header'
],
'related_posts' => [
'condition' => is_single() && CZ::checked( 'kenta_post_related_posts' ),
'elements' => [ 'title', 'metas', 'categories', 'tags', 'excerpt', 'thumbnail', 'divider', 'read-more' ],
'selector' => '.kenta-related-posts-wrap .card'
],
];
foreach ( $post_elements_scope as $id => $scope ) {
if ( ! $scope['condition'] ) {
continue;
}
$scope_selector = $scope['selector'];
$css = array_merge( $css, kenta_post_elements_css( $scope_selector, $id, $scope['elements'] ) );
}
/**
* Sidebar
*/
$sidebar_style = CZ::get( 'kenta_global_sidebar_sidebar-style' );
$widgets_style_preset = CZ::get( 'kenta_global_sidebar_widgets-style' );
$widgets_css = $widgets_style_preset === 'custom' ? array_merge(
Css::background( CZ::get( 'kenta_global_sidebar_widgets-background' ) ),
Css::border( CZ::get( 'kenta_global_sidebar_widgets-border' ) ),
Css::shadow( CZ::get( 'kenta_global_sidebar_widgets-shadow' ) )
) : kenta_card_preset_style( $widgets_style_preset );
$widgets_css = array_merge(
$widgets_css,
Css::dimensions( CZ::get( 'kenta_global_sidebar_widgets-padding' ), 'padding' ),
Css::dimensions( CZ::get( 'kenta_global_sidebar_widgets-radius' ), 'border-radius' )
);
if ( $sidebar_style === 'style-1' ) {
$css[".kenta-sidebar .kenta-widget"] = $widgets_css;
}
// list icon style
if ( ! CZ::checked( 'kenta_global_sidebar_list-icon' ) ) {
$css[".kenta-sidebar .kenta-widget ul li"] = [
'--fa-display' => 'none',
'--widget-list-pl' => '0',
];
}
$css[".kenta-sidebar"] = array_merge(
$sidebar_style === 'style-2' ? $widgets_css : [],
Css::typography( CZ::get( 'kenta_global_sidebar_content-typography' ) ),
Css::colors( CZ::get( 'kenta_global_sidebar_content-color' ), [
'text' => '--kenta-widgets-text-color',
'initial' => '--kenta-widgets-link-initial',
'hover' => '--kenta-widgets-link-hover',
] ),
[
'--kenta-sidebar-width' => CZ::get( 'kenta_global_sidebar_width' ) ?? '27%',
'--kenta-sidebar-gap' => CZ::get( 'kenta_global_sidebar_gap' ) ?? '24px',
'--kenta-widgets-spacing' => CZ::get( 'kenta_global_sidebar_widgets-spacing' ),
]
);
$css[".kenta-sidebar .widget-title"] = array_merge(
Css::typography( CZ::get( 'kenta_global_sidebar_title-typography' ) ),
Css::colors( CZ::get( 'kenta_global_sidebar_title-color' ), [
'initial' => 'color',
'indicator' => '--kenta-heading-indicator',
] )
);
/**
* Single post & page
*/
if ( is_single() || is_page() ) {
$article_type = is_page() ? 'page' : 'post';
$prefix = 'kenta_' . $article_type;
// Article content
$content_preset = CZ::get( $prefix . '_content_style_preset' );
$css['.kenta-article-content-wrap'] = array_merge(
array(
'padding' => $content_preset === 'ghost' ? '' : '24px',
),
kenta_card_preset_style( $content_preset )
);
// Article header
$css['.kenta-article-header'] = array_merge(
Css::dimensions( CZ::get( "{$prefix}_header_spacing" ), 'padding' ),
[
'text-align' => CZ::get( "{$prefix}_header_alignment" )
]
);
// Article header background
$css['.kenta-article-header-background::after'] = array_merge(
[ 'opacity' => CZ::get( "{$prefix}_featured_image_background_overlay_opacity" ) ],
Css::background( CZ::get( "{$prefix}_featured_image_background_overlay" ) )
);
$css['.kenta-article-header-background'] = array_merge(
Css::dimensions( CZ::get( "{$prefix}_featured_image_background_spacing" ), 'padding' ),
Css::colors( CZ::get( "{$prefix}_featured_image_elements_override" ), [
'override' => '--kenta-article-header-override',
] ),
[
'position' => 'relative',
'background-position' => 'center',
'background-size' => 'cover',
'background-repeat' => 'no-repeat',
]
);
$css['.kenta-article-header-background img'] = Css::filters( CZ::get( "{$prefix}_featured_image_filter" ) );
// Article thumbnail
$css['.article-featured-image'] = Css::dimensions( CZ::get( "{$prefix}_featured_image_spacing" ), 'padding' );
$css['.article-featured-image img'] = array_merge(
[ 'height' => CZ::get( "{$prefix}_featured_image_height" ) ],
Css::shadow( CZ::get( "{$prefix}_featured_image_shadow" ) ),
Css::dimensions( CZ::get( "{$prefix}_featured_image_radius" ), 'border-radius' ),
Css::filters( CZ::get( "{$prefix}_featured_image_filter" ) )
);
// Share box
if ( CZ::checked( 'kenta_' . $article_type . '_share_box' ) ) {
$css[ '.kenta-' . $article_type . '-socials' ] = array_merge(
[
'--kenta-social-icons-size' => CZ::get( 'kenta_' . $article_type . '_share_box_icons_size' ),
'--kenta-social-icons-spacing' => CZ::get( 'kenta_' . $article_type . '_share_box_icons_spacing' )
],
Css::dimensions( CZ::get( 'kenta_' . $article_type . '_share_box_padding' ) )
);
$css[ '.kenta-' . $article_type . '-socials .kenta-social-link' ] = array_merge(
Css::colors( CZ::get( 'kenta_' . $article_type . '_share_box_icons_color' ), [
'initial' => '--kenta-social-icon-initial-color',
'hover' => '--kenta-social-icon-hover-color',
] ),
Css::colors( CZ::get( 'kenta_' . $article_type . '_share_box_icons_bg_color' ), [
'initial' => '--kenta-social-bg-initial-color',
'hover' => '--kenta-social-bg-hover-color',
] ),
Css::colors( CZ::get( 'kenta_' . $article_type . '_share_box_icons_border_color' ), [
'initial' => '--kenta-social-border-initial-color',
'hover' => '--kenta-social-border-hover-color',
] )
);
}
// Author box
if ( is_single() && CZ::checked( 'kenta_post_author_bio' ) ) {
$css['.kenta-about-author-bio-box'] = array_merge(
[
'--kenta-author-bio-avatar-radius' => CZ::get( 'kenta_post_author_bio_avatar_radius' ),
'text-align' => CZ::get( 'kenta_post_author_bio_alignment' )
],
Css::background( CZ::get( 'kenta_post_author_bio_background' ) ),
Css::dimensions( CZ::get( 'kenta_post_author_bio_padding' ), 'padding' ),
Css::dimensions( CZ::get( 'kenta_post_author_bio_spacing' ) ),
Css::border( CZ::get( 'kenta_post_author_bio_border' ) ),
Css::shadow( CZ::get( 'kenta_post_author_bio_shadow' ) )
);
}
// Post navigation
if ( is_single() ) {
$css['.kenta-post-navigation'] = array_merge(
Css::dimensions( CZ::get( 'kenta_post_navigation_padding' ) ),
Css::colors( CZ::get( 'kenta_post_navigation_text_color' ), [
'initial' => '--kenta-navigation-initial-color',
'hover' => '--kenta-navigation-hover-color',
] )
);
}
// Related posts
if ( CZ::checked( 'kenta_post_related_posts' ) ) {
$css['.kenta-related-posts-list'] = [
'--card-gap' => CZ::get( 'kenta_related_posts_grid_items_gap' ),
];
$card_width = [];
foreach ( CZ::get( 'kenta_related_posts_grid_columns' ) as $device => $columns ) {
$card_width[ $device ] = sprintf( "%.2f", substr( sprintf( "%.3f", ( 100 / (int) $columns ) ), 0, - 1 ) ) . '%';
}
$css['.kenta-related-posts-list .card-wrapper'] = [
'width' => $card_width,
];
$css['.kenta-related-posts-list .card'] = array_merge(
[
'text-align' => CZ::get( 'kenta_related_posts_card_content_alignment' ),
'--card-thumbnail-spacing' => CZ::get( 'kenta_related_posts_card_thumbnail_spacing' ),
'--card-content-spacing' => CZ::get( 'kenta_related_posts_card_content_spacing' )
],
kenta_card_preset_style( CZ::get( 'kenta_related_posts_card_style_preset' ) )
);
}
}
/**
* Article & shop
*/
if ( is_single() || is_page() || kenta_is_woo_shop() ) {
// Article typography
$css = kenta_content_typography_css( '.kenta-article-content', $css );
}
// Buttons
$button_selectors = [
'[type="submit"]',
// woocommerce
'.woocommerce a.button',
'.woocommerce button.button',
// widgets
'.wp-block-search__button',
'.wc-block-product-search__button',
// article
'.kenta-article-content .wp-block-button',
'.kenta-article-content button',
'.kenta-prose .wp-block-button',
'.kenta-prose button'
];
$css[ implode( ',', $button_selectors ) ] = kenta_content_buttons_css();
// Forms
$css['.kenta-form, form, [type="submit"]'] = Css::typography( CZ::get( 'kenta_content_form_typography' ) );
$form_presets = kenta_form_style_presets();
$css[ implode( ',', array_keys( $form_presets ) ) ] = array_merge(
Css::colors( CZ::get( 'kenta_content_form_color' ), [
'background' => '--kenta-form-background-color',
'border' => '--kenta-form-border-color',
'active' => '--kenta-form-active-color',
] )
);
foreach ( $form_presets as $selector => $preset ) {
$css[ $selector ] = $preset;
}
$css = apply_filters( 'kenta_filter_dynamic_css', $css );
return Css::parse( $css );
}
/**
* Generate dynamic css for admin
*
* @return mixed
*/
function kenta_admin_dynamic_css() {
$css = [];
$css['.editor-styles-wrapper'] = array_merge(
Css::background( CZ::get( 'kenta_site_background' ) )
);
$css['.editor-styles-wrapper .wp-block-button'] = kenta_content_buttons_css();
return Css::parse( apply_filters(
'kenta_filter_admin_dynamic_css',
kenta_content_typography_css( '.editor-styles-wrapper', $css )
) );
}
Anon7 — 2022 •
AnonSec Team