commit f91fcc07f1f40fd70823910a5abc6b97c0e745c7 Author: Andreas Date: Thu Apr 16 18:26:39 2026 +0200 Første upload af Ansico WP Theme diff --git a/ansico-wp-theme/LICENSE.txt b/ansico-wp-theme/LICENSE.txt new file mode 100644 index 0000000..3fea845 --- /dev/null +++ b/ansico-wp-theme/LICENSE.txt @@ -0,0 +1,11 @@ +Ansico WP Theme +Copyright 2026 Andreas Andersen (Ansico) + +License: GNU General Public License v3 or later +https://www.gnu.org/licenses/gpl-3.0.html + +This theme is distributed under the terms of the GNU General Public License, +version 3 or any later version published by the Free Software Foundation. + +Bundled resource note: +- Source Sans 3 is distributed under the SIL Open Font License 1.1. diff --git a/ansico-wp-theme/LICENSE.txt:Zone.Identifier b/ansico-wp-theme/LICENSE.txt:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/LICENSE.txt:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2 new file mode 100644 index 0000000..c62a633 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2 new file mode 100644 index 0000000..ad09893 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-200-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2 new file mode 100644 index 0000000..83e93d0 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2 new file mode 100644 index 0000000..c37d3a7 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-300-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2 new file mode 100644 index 0000000..61e8524 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2 new file mode 100644 index 0000000..c9e5c90 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-400-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2 new file mode 100644 index 0000000..78834a5 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2 new file mode 100644 index 0000000..618e014 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-500-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2 new file mode 100644 index 0000000..bf60855 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2 new file mode 100644 index 0000000..b41b243 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-600-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2 new file mode 100644 index 0000000..f9fe7de Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2 new file mode 100644 index 0000000..26ab2bc Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-700-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2 new file mode 100644 index 0000000..4c9b36a Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2 new file mode 100644 index 0000000..f345e8b Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-800-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2 new file mode 100644 index 0000000..8438014 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-italic.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2 b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2 new file mode 100644 index 0000000..b9e8f29 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2 differ diff --git a/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2:Zone.Identifier b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/assets/fonts/source-sans-3/source-sans-3-900-normal.woff2:Zone.Identifier differ diff --git a/ansico-wp-theme/functions.php b/ansico-wp-theme/functions.php new file mode 100644 index 0000000..de09f8b --- /dev/null +++ b/ansico-wp-theme/functions.php @@ -0,0 +1,367 @@ +get( 'Version' ) + ); +} +add_action( 'wp_enqueue_scripts', 'ansico_wp_theme_enqueue_assets' ); + + +if ( ! function_exists( 'ansico_author_intro_shortcode' ) ) { + function ansico_author_intro_shortcode() { + if ( ! is_author() ) { + return ''; + } + + $author = get_queried_object(); + if ( ! $author || empty( $author->ID ) ) { + return ''; + } + + $author_id = (int) $author->ID; + $name = get_the_author_meta( 'display_name', $author_id ); + $description = get_the_author_meta( 'description', $author_id ); + $user_url = get_the_author_meta( 'user_url', $author_id ); + $avatar = function_exists( 'ansico_get_author_avatar_html' ) ? ansico_get_author_avatar_html( $author_id, 120, esc_attr( $name ) ) : get_avatar( $author_id, 120, '', esc_attr( $name ), array( 'class' => 'ansico-author-intro__avatar-image' ) ); + + $output = '
'; + $output .= '
' . $avatar . '
'; + $output .= '
'; + $output .= '

' . esc_html( $name ) . '

'; + + if ( ! empty( $description ) ) { + $output .= '
' . wpautop( wp_kses_post( $description ) ) . '
'; + } + + if ( ! empty( $user_url ) ) { + $output .= '

' . esc_html( $user_url ) . '

'; + } + + $output .= '
'; + + return $output; + } +} +add_shortcode( 'ansico_author_intro', 'ansico_author_intro_shortcode' ); + + +if ( ! function_exists( 'ansico_get_social_networks_v2' ) ) { + function ansico_get_social_networks_v2() { + return array( + 'facebook' => array( 'label' => 'Facebook', 'icon' => 'f' ), + 'linkedin' => array( 'label' => 'LinkedIn', 'icon' => 'in' ), + 'instagram' => array( 'label' => 'Instagram', 'icon' => '◎' ), + 'bluesky' => array( 'label' => 'Bluesky', 'icon' => '☁' ), + 'twitter' => array( 'label' => 'Twitter/X', 'icon' => '𝕏' ), + 'mastodon' => array( 'label' => 'Mastodon', 'icon' => 'm' ), + 'friendica' => array( 'label' => 'Friendica', 'icon' => 'F' ), + 'reddit' => array( 'label' => 'Reddit', 'icon' => 'r' ), + ); + } +} + + + + + +if ( ! function_exists( 'ansico_format_profile_url_for_display_v2' ) ) { + function ansico_format_profile_url_for_display_v2( $url ) { + $url = trim( (string) $url ); + $url = preg_replace( '#^https?://#i', '', $url ); + return untrailingslashit( $url ); + } +} + +if ( ! function_exists( 'ansico_get_author_social_links_v2' ) ) { + function ansico_get_author_social_links_v2( $author_id ) { + $networks = ansico_get_social_networks_v2(); + $output = ''; + + foreach ( $networks as $key => $network ) { + $url = get_user_meta( $author_id, 'ansico_' . $key, true ); + $show = get_user_meta( $author_id, 'ansico_show_' . $key, true ); + + if ( empty( $url ) || '1' !== (string) $show ) { + continue; + } + + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } + + if ( empty( $output ) ) { + return ''; + } + + return '
' . $output . '
'; + } +} + +if ( ! function_exists( 'ansico_author_intro_shortcode_v2' ) ) { + function ansico_author_intro_shortcode_v2() { + if ( ! is_author() ) { + return ''; + } + + $author = get_queried_object(); + if ( ! $author || empty( $author->ID ) ) { + return ''; + } + + $author_id = (int) $author->ID; + $name = get_the_author_meta( 'display_name', $author_id ); + $description = get_the_author_meta( 'description', $author_id ); + $user_url = get_the_author_meta( 'user_url', $author_id ); + $avatar = function_exists( 'ansico_get_author_avatar_html' ) ? ansico_get_author_avatar_html( $author_id, 120, esc_attr( $name ) ) : get_avatar( $author_id, 120, '', esc_attr( $name ), array( 'class' => 'ansico-author-intro__avatar-image' ) ); + $socials = ansico_get_author_social_links_v2( $author_id ); + + $output = '
'; + $output .= '
' . $avatar . '
'; + $output .= '
'; + $output .= '

' . esc_html( $name ) . '

'; + + if ( ! empty( $description ) ) { + $output .= '
' . wpautop( wp_kses_post( $description ) ) . '
'; + } + + if ( ! empty( $user_url ) ) { + $output .= '

' . esc_html( ansico_format_profile_url_for_display_v2( $user_url ) ) . '

'; + } + + $output .= $socials; + $output .= '
'; + + return $output; + } + add_shortcode( 'ansico_author_intro_v2', 'ansico_author_intro_shortcode_v2' ); +} + + +if ( ! function_exists( 'ansico_get_author_avatar_html' ) ) { + function ansico_get_author_avatar_html( $author_id, $size = 120, $alt = '' ) { + $custom_avatar_id = (int) get_user_meta( $author_id, 'ansico_custom_avatar_id', true ); + + if ( $custom_avatar_id ) { + $image = wp_get_attachment_image( + $custom_avatar_id, + array( $size, $size ), + false, + array( + 'class' => 'ansico-author-intro__avatar-image', + 'alt' => $alt, + ) + ); + + if ( $image ) { + return $image; + } + } + + return get_avatar( + $author_id, + $size, + '', + $alt, + array( + 'class' => 'ansico-author-intro__avatar-image', + ) + ); + } +} + +if ( ! function_exists( 'ansico_enqueue_profile_media' ) ) { + function ansico_enqueue_profile_media( $hook_suffix ) { + if ( 'profile.php' !== $hook_suffix && 'user-edit.php' !== $hook_suffix ) { + return; + } + + wp_enqueue_media(); + + $handle = 'ansico-profile-media'; + wp_register_script( $handle, '', array( 'jquery' ), null, true ); + wp_enqueue_script( $handle ); + + $script = " + jQuery(function($){ + var frame; + $(document).on('click', '.ansico-upload-avatar-button', function(e){ + e.preventDefault(); + var button = $(this); + var container = button.closest('.ansico-custom-avatar-field'); + + if (frame) { + frame.open(); + return; + } + + frame = wp.media({ + title: '" . esc_js( __( 'Select profile image', 'ansico' ) ) . "', + button: { text: '" . esc_js( __( 'Use this image', 'ansico' ) ) . "' }, + multiple: false + }); + + frame.on('select', function(){ + var attachment = frame.state().get('selection').first().toJSON(); + container.find('.ansico-custom-avatar-id').val(attachment.id); + container.find('.ansico-custom-avatar-preview').html('\"\"'); + }); + + frame.open(); + }); + + $(document).on('click', '.ansico-remove-avatar-button', function(e){ + e.preventDefault(); + var container = $(this).closest('.ansico-custom-avatar-field'); + container.find('.ansico-custom-avatar-id').val(''); + container.find('.ansico-custom-avatar-preview').empty(); + }); + }); + "; + wp_add_inline_script( $handle, $script ); + } + add_action( 'admin_enqueue_scripts', 'ansico_enqueue_profile_media' ); +} + +if ( ! function_exists( 'ansico_render_profile_extensions' ) ) { + function ansico_render_profile_extensions( $user ) { + $networks = function_exists( 'ansico_get_social_networks_v2' ) ? ansico_get_social_networks_v2() : array(); + $custom_avatar_id = (int) get_user_meta( $user->ID, 'ansico_custom_avatar_id', true ); + $preview_image = $custom_avatar_id ? wp_get_attachment_image( $custom_avatar_id, array( 96, 96 ), false, array( 'style' => 'width:96px;height:96px;border-radius:999px;object-fit:cover;display:block;' ) ) : ''; + ?> + + + + + + + + + + $network ) : ?> + + + + + + + + $network ) { + $url_key = 'ansico_' . $key; + $show_key = 'ansico_show_' . $key; + + if ( isset( $_POST[ $url_key ] ) ) { + update_user_meta( $user_id, $url_key, esc_url_raw( wp_unslash( $_POST[ $url_key ] ) ) ); + } + + update_user_meta( $user_id, $show_key, isset( $_POST[ $show_key ] ) ? '1' : '0' ); + } + } + add_action( 'personal_options_update', 'ansico_save_profile_extensions', 99 ); + add_action( 'edit_user_profile_update', 'ansico_save_profile_extensions', 99 ); +} + +if ( ! function_exists( 'ansico_filter_author_avatar_shortcode_v2' ) ) { + function ansico_filter_author_avatar_shortcode_v2( $output ) { + if ( ! is_author() ) { + return $output; + } + + $author = get_queried_object(); + if ( ! $author || empty( $author->ID ) ) { + return $output; + } + + $name = get_the_author_meta( 'display_name', (int) $author->ID ); + $avatar = ansico_get_author_avatar_html( (int) $author->ID, 120, $name ); + + $output = preg_replace( + '#
.*?
#s', + '
' . $avatar . '
', + $output, + 1 + ); + + return $output; + } + add_filter( 'do_shortcode_tag', function( $output, $tag, $attr ) { + if ( 'ansico_author_intro_v2' === $tag && function_exists( 'ansico_filter_author_avatar_shortcode_v2' ) ) { + return ansico_filter_author_avatar_shortcode_v2( $output ); + } + return $output; + }, 10, 3 ); +} + + +if ( ! function_exists( 'ansico_hide_legacy_contact_methods' ) ) { + function ansico_hide_legacy_contact_methods( $methods ) { + $legacy_keys = array( + 'facebook', + 'linkedin', + 'instagram', + 'bluesky', + 'twitter', + 'mastodon', + 'friendica', + 'reddit', + ); + + foreach ( $legacy_keys as $key ) { + if ( isset( $methods[ $key ] ) ) { + unset( $methods[ $key ] ); + } + } + + return $methods; + } +} +add_filter( 'user_contactmethods', 'ansico_hide_legacy_contact_methods', 9999 ); + diff --git a/ansico-wp-theme/functions.php:Zone.Identifier b/ansico-wp-theme/functions.php:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/functions.php:Zone.Identifier differ diff --git a/ansico-wp-theme/parts/footer.html b/ansico-wp-theme/parts/footer.html new file mode 100644 index 0000000..4fc2a81 --- /dev/null +++ b/ansico-wp-theme/parts/footer.html @@ -0,0 +1,5 @@ + + + diff --git a/ansico-wp-theme/parts/footer.html:Zone.Identifier b/ansico-wp-theme/parts/footer.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/parts/footer.html:Zone.Identifier differ diff --git a/ansico-wp-theme/parts/header.html b/ansico-wp-theme/parts/header.html new file mode 100644 index 0000000..6ce5350 --- /dev/null +++ b/ansico-wp-theme/parts/header.html @@ -0,0 +1,11 @@ + +
+
+ + + +
+ +
+
+ diff --git a/ansico-wp-theme/parts/header.html:Zone.Identifier b/ansico-wp-theme/parts/header.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/parts/header.html:Zone.Identifier differ diff --git a/ansico-wp-theme/parts/sidebar.html b/ansico-wp-theme/parts/sidebar.html new file mode 100644 index 0000000..74956c6 --- /dev/null +++ b/ansico-wp-theme/parts/sidebar.html @@ -0,0 +1,17 @@ + +
+

Søg

+ + + + + + + + + +

Seneste indlæg

+ + +
+ diff --git a/ansico-wp-theme/parts/sidebar.html:Zone.Identifier b/ansico-wp-theme/parts/sidebar.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/parts/sidebar.html:Zone.Identifier differ diff --git a/ansico-wp-theme/readme.txt b/ansico-wp-theme/readme.txt new file mode 100644 index 0000000..1ce0085 --- /dev/null +++ b/ansico-wp-theme/readme.txt @@ -0,0 +1,64 @@ +=== Ansico WP Theme === +Contributors: aphandersen +Requires at least: 6.5 +Tested up to: 6.8 +Requires PHP: 7.4 +Version: 1.0.0 +License: GPLv3 or later +License URI: https://www.gnu.org/licenses/gpl-3.0.html +Tags: blog, two-columns, right-sidebar, featured-images, custom-menu, full-site-editing, editor-style, block-styles + +A clean block theme for editorial and professional WordPress sites, with a centered site title, structured navigation, archive-style post listings, author pages, and sidebar layout. + +== Description == + +Ansico WP Theme is a block theme built for content-focused WordPress sites. + +Features include: +* Centered site title and structured main navigation +* Front page and archive views with featured image support +* Single post layout with author metadata, categories, and tags +* Author pages with avatar, bio, website, and social profile links +* Sidebar layout for pages, archives, and author views +* Included Source Sans 3 webfonts bundled locally in the theme +* Screenshot included for Appearance > Themes + +== Installation == + +1. Upload the theme ZIP in **Appearance > Themes > Add New > Upload Theme**. +2. Activate the theme. +3. Optionally customize templates and styles in the Site Editor. + +== Frequently Asked Questions == + += Does the theme load remote assets? = + +No. Fonts and assets are bundled locally in the theme. + += Is this a block theme? = + +Yes. This is a block theme using HTML templates and theme.json. + +== Changelog == + += 0.0.0.62 = +* Prepared package for WordPress Theme Directory submission +* Updated theme license metadata to GPLv3 or later +* Improved readme.txt for directory-style packaging + +== Resources == + +Bundled font: +* Source Sans 3, distributed under the SIL Open Font License 1.1 +* https://openfontlicense.org + +Screenshot: +* Included as screenshot.png +* Based on the theme itself + +== Copyright == + +Ansico WP Theme +Copyright 2026 Andreas Andersen (Ansico) + +This theme is licensed under the GNU General Public License v3 or later. diff --git a/ansico-wp-theme/readme.txt:Zone.Identifier b/ansico-wp-theme/readme.txt:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/readme.txt:Zone.Identifier differ diff --git a/ansico-wp-theme/screenshot.png b/ansico-wp-theme/screenshot.png new file mode 100644 index 0000000..065aa0f Binary files /dev/null and b/ansico-wp-theme/screenshot.png differ diff --git a/ansico-wp-theme/screenshot.png:Zone.Identifier b/ansico-wp-theme/screenshot.png:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/screenshot.png:Zone.Identifier differ diff --git a/ansico-wp-theme/style.css b/ansico-wp-theme/style.css new file mode 100644 index 0000000..dc0d6f5 --- /dev/null +++ b/ansico-wp-theme/style.css @@ -0,0 +1,1140 @@ +/* +Theme Name: Ansico WP Theme +Theme URI: https://ansico.dk +Author: Andreas Andersen (Ansico) +Author URI: https://ansico.dk +Description: A full site editing WordPress theme with a centered title header, boxed navigation, content area with sidebar, and footer. +Requires at least: 6.5 +Tested up to: 6.8 +Requires PHP: 7.4 +Version: 1.0.0 +License: GNU General Public License v3 or later +License URI: https://www.gnu.org/licenses/gpl-3.0.html +Text Domain: ansico-wp-theme +Tags: full-site-editing, block-patterns, block-styles, blog, one-column, two-columns, custom-menu, featured-images, editor-style +*/ + +@font-face { + font-family: 'Source Sans 3'; + src: url('assets/fonts/source-sans-3/source-sans-3-400-normal.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Source Sans 3'; + src: url('assets/fonts/source-sans-3/source-sans-3-500-normal.woff2') format('woff2'); + font-weight: 500; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Source Sans 3'; + src: url('assets/fonts/source-sans-3/source-sans-3-600-normal.woff2') format('woff2'); + font-weight: 600; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Source Sans 3'; + src: url('assets/fonts/source-sans-3/source-sans-3-700-normal.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +:root { + --ansico-font-family: 'Source Sans 3', sans-serif; + --ansico-color-primary: #0a66c2; + --ansico-color-primary-dark: #084b8a; + --ansico-color-text: #000000; + --ansico-color-border: #cfd6df; + --ansico-color-surface: #ffffff; +} + +html, +body, +.editor-styles-wrapper { + background: #ffffff; + color: #000000; + font-family: var(--ansico-font-family); +} + +body, +p, +li, +div, +span, +input, +textarea, +select, +label, +.wp-site-blocks, +.wp-block-post-content, +.wp-block-post-excerpt, +.wp-block-navigation, +.wp-block-navigation-item, +.wp-block-navigation-item__content, +.wp-block-page-list, +.wp-block-page-list__item, +.wp-block-search__input { + color: #000000; +} + +.wp-site-blocks { + min-height: 100vh; +} + +a { + color: var(--ansico-color-primary); +} + +a:hover { + color: var(--ansico-color-primary-dark); +} + +h1, h2, h3, h4, h5, h6, +.wp-block-post-title, +.wp-block-query-title { + color: var(--ansico-color-primary); + font-family: var(--ansico-font-family); + position: relative; +} + +h1::after, h2::after, h3::after, +.wp-block-post-title::after, +.wp-block-query-title::after { + content: ""; + display: block; + width: 100%; + max-width: 100%; + border-bottom: 1px solid var(--ansico-color-primary); + margin-top: 0.35em; +} + +/* Header */ +.ansico-header-shell { + background: #ffffff; + padding: 3.25rem 2rem 0 2rem; + position: relative; +} + +.ansico-header-shell::after { + content: ""; + display: block; + height: 2px; + background: var(--ansico-color-primary); + margin: 0 10px; +} + +.ansico-title-wrap { + text-align: center; + margin: 0 auto 1.25rem auto; +} + +.ansico-title-wrap .wp-block-site-title, +.ansico-title-wrap .wp-block-site-title a, +.site-title, +.wp-block-site-title { + color: var(--ansico-color-primary) !important; + text-align: center; + text-decoration: none; + font-size: clamp(3rem, 5.8vw, 4.4rem); + font-weight: 700; + line-height: 1.08; +} + +.ansico-title-wrap .wp-block-site-title::after, +.ansico-title-wrap .wp-block-site-title a::after { + content: none !important; +} + +.ansico-main-nav-wrap { + width: 100%; + margin: 0; + padding: 0; + box-sizing: border-box; + border-bottom: none; +} + +.ansico-main-nav-wrap::after { + display: none; +} + +.ansico-main-nav-wrap .wp-block-navigation, +.ansico-main-nav-wrap .wp-block-page-list { + justify-content: center; + gap: 0.9rem; +} + +.ansico-main-nav-wrap ul, +.ansico-main-nav-wrap .wp-block-navigation__container, +.ansico-main-nav-wrap .wp-block-page-list { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: 0.9rem; + margin: 0; + padding: 0; + list-style: none; +} + +.ansico-main-nav-wrap li, +.ansico-main-nav-wrap .wp-block-navigation-item, +.ansico-main-nav-wrap .page_item { + margin: 0; + padding: 0; + list-style: none; +} + +.ansico-main-nav-wrap a, +.ansico-main-nav-wrap .wp-block-navigation-item__content, +.ansico-main-nav-wrap .wp-block-page-list__item__link { + display: inline-block; + background: #ffffff; + color: #000000 !important; + border: none; + border-radius: 0; + padding: 0.75rem 1.15rem; + text-decoration: none; + line-height: 1; + transition: background-color 0.18s ease, color 0.18s ease; +} + +.ansico-main-nav-wrap a:hover, +.ansico-main-nav-wrap a:focus, +.ansico-main-nav-wrap a:hover *, +.ansico-main-nav-wrap a:focus *, +.ansico-main-nav-wrap .wp-block-navigation-item__content:hover, +.ansico-main-nav-wrap .wp-block-navigation-item__content:focus, +.ansico-main-nav-wrap .wp-block-navigation-item__content:hover *, +.ansico-main-nav-wrap .wp-block-navigation-item__content:focus *, +.ansico-main-nav-wrap .current-menu-item > a, +.ansico-main-nav-wrap .current-menu-item > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .current_page_item > a, +.ansico-main-nav-wrap .current_page_item > .wp-block-navigation-item__content { + background: var(--ansico-color-primary); + color: #ffffff !important; +} + +/* Content */ +.wp-block-post-content > *:first-child, +.entry-content > *:first-child { + margin-top: 0; +} + +.wp-block-search__button { + transition: background-color 0.2s ease, border-color 0.2s ease; +} + +.wp-block-search__button:hover { + background: var(--ansico-color-primary-dark); + border-color: var(--ansico-color-primary-dark); +} + +/* Footer */ +.ansico-footer { + background: var(--ansico-color-primary); + color: #ffffff; + border-radius: 0; + min-height: 0; + display: flex; + align-items: center; +} + +.ansico-footer p, +.ansico-footer a { + color: #ffffff !important; + margin: 0; + line-height: 1.35; +} + +/* Ensure no light inherited text */ +.has-text-color, +.has-contrast-color, +.has-muted-color { + color: #000000; +} + +.site-title,.wp-block-site-title{font-size:clamp(2.6rem,5vw,3.8rem);font-weight:700;line-height:1.1;} + + + +/* Remove content area borders globally */ +.wp-site-blocks, +.wp-block-group, +main, +.site-main, +.content, +.entry-content { + border: none !important; + box-shadow: none !important; +} + +/* Keep page titles flush with surrounding content */ +.wp-block-post-title, +.entry-title { + margin-top: 0 !important; + padding-top: 0 !important; +} + + +/* Center footer copyright robustly */ +.ansico-footer, +.ansico-footer .wp-block-paragraph, +.ansico-footer p { + text-align: center !important; +} + +.ansico-footer p { + margin: 0 auto !important; +} + +/* Slightly larger sidebar section headings */ +.wp-block-sidebar h3, +.widget-area h3, +aside h3, +.sidebar h3 { + font-size: 1.35rem; + line-height: 1.25; +} + + +/* Active menu item: white text on blue background */ +.current-menu-item > a, +.current_page_item > a, +.current-page-ancestor > a, +.current-menu-ancestor > a, +.current-menu-parent > a, +.current_page_parent > a, +.wp-block-navigation .current-menu-item > a, +.wp-block-navigation .current_page_item > a, +.wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content, +.wp-block-navigation-item.current_page_item > .wp-block-navigation-item__content, +.wp-block-navigation-item.current-menu-ancestor > .wp-block-navigation-item__content, +.wp-block-navigation-item.current_page_parent > .wp-block-navigation-item__content { + color: #ffffff !important; +} + +/* Footer centered and padded robustly */ +.ansico-footer, +.ansico-footer *, +.site-footer, +.site-footer *, +footer, +footer * { + text-align: center !important; +} + +.ansico-footer { + padding-top: 20px !important; + padding-bottom: 20px !important; +} + +.ansico-footer p { + margin: 0 auto !important; + width: 100%; +} + +/* Larger H3 headings in sidebar/secondary areas */ +.wp-block-sidebar h3, +.widget-area h3, +aside h3, +.sidebar h3, +.wp-block-column h3 { + font-size: 1.55rem !important; + line-height: 1.25; +} + + + +/* FORCE center footer text (block + flex override) */ +.ansico-footer { + display: flex !important; + justify-content: center !important; + align-items: center !important; + text-align: center !important; +} + +.ansico-footer p { + width: 100%; + text-align: center !important; +} + + +/* FIX: active menu item text should be white on blue background */ +.wp-block-navigation .current-menu-item > a, +.wp-block-navigation .current_page_item > a, +.wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content, +.wp-block-navigation-item.current_page_item > .wp-block-navigation-item__content, +.current-menu-item > a, +.current_page_item > a { + color: #ffffff !important; +} + +/* also ensure links inside active items stay white */ +.current-menu-item a, +.current_page_item a { + color: #ffffff !important; +} + + +/* Force white text on the active menu item, including block-navigation aria-current markup */ +.ansico-main-nav-wrap .current-menu-item > a, +.ansico-main-nav-wrap .current_page_item > a, +.ansico-main-nav-wrap .current-menu-item > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .current_page_item > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .wp-block-navigation-item.current_page_item > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .wp-block-navigation-item__content[aria-current="page"], +.ansico-main-nav-wrap .wp-block-navigation-item__content[aria-current="page"] *, +.ansico-main-nav-wrap a[aria-current="page"], +.ansico-main-nav-wrap a[aria-current="page"] *, +.ansico-main-nav-wrap .current-menu-ancestor > a, +.ansico-main-nav-wrap .current-menu-ancestor > .wp-block-navigation-item__content, +.ansico-main-nav-wrap .current_page_parent > a, +.ansico-main-nav-wrap .current_page_parent > .wp-block-navigation-item__content { + color: #ffffff !important; +} + +.ansico-main-nav-wrap .wp-block-navigation-item__content[aria-current="page"] .wp-block-navigation-item__label, +.ansico-main-nav-wrap .current-menu-item .wp-block-navigation-item__label, +.ansico-main-nav-wrap .current_page_item .wp-block-navigation-item__label { + color: #ffffff !important; +} + + +/* Fix meta line wrapping */ +.single .ansico-post-meta { + display:flex; + flex-wrap: nowrap; + gap: 0.5rem; + width: 100%; +} + +.single .ansico-post-meta * { + white-space: nowrap; +} + +.single .ansico-post-meta .wp-block-post-author { + display:inline-flex; +} + + +/* Keep post meta on one line, including 'Af' + author name */ +.single .ansico-post-meta { + display: flex; + flex-wrap: nowrap !important; + align-items: center; + gap: 0.5rem; + width: 100%; + overflow-x: auto; +} + +.single .ansico-post-meta > * { + white-space: nowrap !important; + flex: 0 0 auto; +} + +.single .ansico-post-meta .wp-block-post-author, +.single .ansico-post-meta .wp-block-post-author-name, +.single .ansico-post-meta .wp-block-post-author__name, +.single .ansico-post-meta .wp-block-post-author__byline, +.single .ansico-post-meta .wp-block-post-author > div, +.single .ansico-post-meta .wp-block-post-author span { + display: inline !important; + white-space: nowrap !important; +} + +.single .ansico-post-meta .wp-block-post-author { + min-width: max-content; +} + +/* Archive pages: larger image on the left, smaller title */ +.blog .wp-block-post-template > li, +.archive .wp-block-post-template > li, +.search .wp-block-post-template > li { + grid-template-columns: 360px minmax(0, 1fr); +} + +.blog .wp-block-post-template > li .wp-block-post-title, +.archive .wp-block-post-template > li .wp-block-post-title, +.search .wp-block-post-template > li .wp-block-post-title { + font-size: 1.7rem; + line-height: 1.15; + margin-top: 0; + margin-bottom: 10px; +} + +.blog .wp-block-post-template > li .wp-block-post-excerpt, +.archive .wp-block-post-template > li .wp-block-post-excerpt, +.search .wp-block-post-template > li .wp-block-post-excerpt { + margin-top: 0; +} + + +/* Cleaner post meta on single posts */ +.single .ansico-post-meta, +.single .ansico-post-meta .wp-block-post-date, +.single .ansico-post-meta .wp-block-post-author, +.single .ansico-post-meta p { + font-size: 0.88rem; + line-height: 1.25; +} + +.single .ansico-post-meta { + display: flex; + flex-wrap: nowrap !important; + align-items: center; + gap: 0.5rem; + width: 100%; + overflow-x: auto; + margin-top: 6px; + margin-bottom: 16px; +} + +.single .ansico-post-meta > * { + white-space: nowrap !important; + flex: 0 0 auto; + margin: 0; +} + +.single .ansico-post-meta .wp-block-post-author, +.single .ansico-post-meta .wp-block-post-author-name, +.single .ansico-post-meta .wp-block-post-author__name, +.single .ansico-post-meta .wp-block-post-author__byline, +.single .ansico-post-meta .wp-block-post-author > div, +.single .ansico-post-meta .wp-block-post-author span { + display: inline !important; + white-space: nowrap !important; +} + +.single .ansico-post-meta .wp-block-post-author { + min-width: max-content; +} + +/* Archive pages: larger image on the left, smaller title, tighter date */ +.blog .wp-block-post-template > li, +.archive .wp-block-post-template > li, +.search .wp-block-post-template > li { + display: grid; + grid-template-columns: 360px minmax(0, 1fr); + gap: 18px; + align-items: start; +} + +.blog .wp-block-post-template > li .wp-block-post-featured-image, +.archive .wp-block-post-template > li .wp-block-post-featured-image, +.search .wp-block-post-template > li .wp-block-post-featured-image { + margin: 0; +} + +.blog .wp-block-post-template > li .wp-block-post-featured-image img, +.archive .wp-block-post-template > li .wp-block-post-featured-image img, +.search .wp-block-post-template > li .wp-block-post-featured-image img { + width: 100%; + height: auto; + display: block; +} + +.blog .wp-block-post-template > li > :not(.wp-block-post-featured-image), +.archive .wp-block-post-template > li > :not(.wp-block-post-featured-image), +.search .wp-block-post-template > li > :not(.wp-block-post-featured-image) { + grid-column: 2; +} + +.blog .wp-block-post-template > li .wp-block-post-title, +.archive .wp-block-post-template > li .wp-block-post-title, +.search .wp-block-post-template > li .wp-block-post-title { + font-size: 1.7rem; + line-height: 1.15; + margin-top: 0; + margin-bottom: 4px; +} + +.blog .wp-block-post-template > li .wp-block-post-date, +.archive .wp-block-post-template > li .wp-block-post-date, +.search .wp-block-post-template > li .wp-block-post-date { + font-size: 0.82rem; + line-height: 1.2; + margin-top: 0; + margin-bottom: 8px; +} + +.blog .wp-block-post-template > li .wp-block-post-excerpt, +.archive .wp-block-post-template > li .wp-block-post-excerpt, +.search .wp-block-post-template > li .wp-block-post-excerpt { + margin-top: 0; +} + +.blog .wp-block-post-template > li .wp-block-read-more, +.archive .wp-block-post-template > li .wp-block-read-more, +.search .wp-block-post-template > li .wp-block-read-more { + display: none !important; +} + +@media (max-width: 700px) { + .blog .wp-block-post-template > li, + .archive .wp-block-post-template > li, + .search .wp-block-post-template > li { + grid-template-columns: 1fr; + } + + .blog .wp-block-post-template > li > :not(.wp-block-post-featured-image), + .archive .wp-block-post-template > li > :not(.wp-block-post-featured-image), + .search .wp-block-post-template > li > :not(.wp-block-post-featured-image) { + grid-column: auto; + } +} + + +/* Post footer meta: categories and tags */ +.single .ansico-post-taxonomy { + margin-top: 28px; + font-size: 0.88rem; + line-height: 1.35; +} + +.single .ansico-post-taxonomy-row { + display: flex; + align-items: flex-start; + gap: 0.55rem; + margin-bottom: 8px; +} + +.single .ansico-post-taxonomy-icon { + width: 1.1rem; + text-align: center; + flex: 0 0 1.1rem; + opacity: 0.9; +} + +.single .ansico-post-taxonomy .wp-block-post-terms { + margin: 0; + font-size: 0.88rem; + line-height: 1.35; +} + +.single .ansico-post-taxonomy .wp-block-post-terms a { + text-decoration: none; +} + +.single .ansico-post-taxonomy .wp-block-post-terms a:hover { + text-decoration: underline; +} + +/* Keep author link styling natural */ +.single .ansico-post-meta .wp-block-post-author a { + text-decoration: none; +} + +.single .ansico-post-meta .wp-block-post-author a:hover { + text-decoration: underline; +} + + +/* Refine post metadata icons/labels and hide stray author block icon */ +.single .ansico-post-taxonomy-icon { + opacity: 0.55; + color: #777; +} + +.single .ansico-post-taxonomy .wp-block-post-terms strong, +.single .ansico-post-taxonomy .ansico-label, +.single .ansico-post-meta .wp-block-post-author__byline, +.single .ansico-post-meta .wp-block-post-author .wp-block-post-author__byline { + font-weight: 700; +} + +/* Hide unwanted inline icon/button in author meta row */ +.single .ansico-post-meta .wp-block-post-author__avatar, +.single .ansico-post-meta .wp-block-post-author img, +.single .ansico-post-meta .wp-block-post-author svg, +.single .ansico-post-meta .wp-block-post-author button, +.single .ansico-post-meta .wp-block-post-author [aria-label], +.single .ansico-post-meta .wp-block-post-author .components-button, +.single .ansico-post-meta .wp-block-post-author .wp-block-post-author__avatar-link { + display: none !important; +} + +/* Keep author line clean and inline */ +.single .ansico-post-meta .wp-block-post-author { + gap: 0 !important; +} + + + +/* FORCE remove any extra icons in meta (including arrow icon) */ +.single .ansico-post-meta svg, +.single .ansico-post-meta button, +.single .ansico-post-meta [role="button"], +.single .ansico-post-meta .wp-block-post-author__avatar, +.single .ansico-post-meta img { + display:none !important; +} + +/* ensure only text remains */ +.single .ansico-post-meta { + gap: 0.5rem; +} + + +/* Make taxonomy icons grey (override theme color) */ +.single .ansico-post-taxonomy-icon, +.single .ansico-post-taxonomy-icon * { + color: #777 !important; + fill: #777 !important; +} + +/* Ensure 'Af' is not bold */ +.single .ansico-post-meta strong, +.single .ansico-post-meta b { + font-weight: 400 !important; +} + +/* Hard remove any arrow/share/navigation icons */ +.single .ansico-post-meta svg, +.single .ansico-post-meta path, +.single .ansico-post-meta use, +.single .ansico-post-meta i, +.single .ansico-post-meta .icon, +.single .ansico-post-meta [class*="icon"], +.single .ansico-post-meta [class*="arrow"] { + display: none !important; +} + + +/* Remove taxonomy icons and make categories + tags inline */ +.single .ansico-post-taxonomy-icon { + display: none !important; +} + +.single .ansico-post-taxonomy { + display: flex; + flex-wrap: wrap; + gap: 1rem; +} + +.single .ansico-post-taxonomy-row { + display: inline-flex; + align-items: center; + gap: 0.3rem; + margin: 0; +} + +.single .ansico-post-taxonomy .wp-block-post-terms { + display: inline; + margin: 0; +} + + + +/* Fix taxonomy alignment to left */ +.single .ansico-post-taxonomy { + display: flex; + justify-content: flex-start !important; + align-items: center; + gap: 1rem; + width: 100%; +} + +.single .ansico-post-taxonomy-row { + display: inline-flex; + justify-content: flex-start; +} + +/* Remove arrow icon specifically (likely navigation or pseudo element) */ +.single .ansico-post-meta::after, +.single .ansico-post-meta::before { + display: none !important; + content: none !important; +} + +.single .ansico-post-meta a::after, +.single .ansico-post-meta a::before { + display: none !important; + content: none !important; +} + +/* also target possible WP navigation icons */ +.single .wp-block-post-navigation-link, +.single .wp-block-post-navigation-link svg, +.single .wp-block-post-navigation-link * { + display: none !important; +} + + +/* Fix single post meta: remove horizontal overflow/arrows */ +.single .ansico-post-meta { + display: inline-flex !important; + flex-wrap: nowrap !important; + align-items: center; + gap: 0.5rem; + width: auto !important; + max-width: 100%; + overflow: visible !important; + white-space: nowrap; +} + +.single .ansico-post-meta > * { + flex: 0 0 auto; + min-width: 0; +} + +.single .ansico-post-meta .wp-block-post-author, +.single .ansico-post-meta .wp-block-post-date, +.single .ansico-post-meta p { + overflow: visible !important; +} + +/* Archive layout only reserves image column when a featured image exists */ +.blog .wp-block-post-template > li, +.archive .wp-block-post-template > li, +.search .wp-block-post-template > li { + display: block; +} + +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image), +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image), +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) { + display: grid; + grid-template-columns: 360px minmax(0, 1fr); + gap: 18px; + align-items: start; +} + +.blog .wp-block-post-template > li > :not(.wp-block-post-featured-image), +.archive .wp-block-post-template > li > :not(.wp-block-post-featured-image), +.search .wp-block-post-template > li > :not(.wp-block-post-featured-image) { + grid-column: auto; +} + +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image), +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image), +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image) { + grid-column: 2; +} + +@media (max-width: 700px) { + .blog .wp-block-post-template > li:has(.wp-block-post-featured-image), + .archive .wp-block-post-template > li:has(.wp-block-post-featured-image), + .search .wp-block-post-template > li:has(.wp-block-post-featured-image) { + grid-template-columns: 1fr; + } + + .blog .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image), + .archive .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image), + .search .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image) { + grid-column: auto; + } +} + + + +/* Force taxonomy line fully left aligned (no indentation) */ +.single .ansico-post-taxonomy { + margin-left: 0 !important; + padding-left: 0 !important; + justify-content: flex-start !important; + text-align: left !important; +} + +.single .ansico-post-taxonomy-row { + margin-left: 0 !important; + padding-left: 0 !important; +} + +.single .ansico-post-taxonomy .wp-block-post-terms { + margin-left: 0 !important; + padding-left: 0 !important; +} + +.single .ansico-post-taxonomy * { + margin-left: 0 !important; +} + + +/* Author archive intro */ +.ansico-author-intro { + display: grid; + grid-template-columns: 120px minmax(0, 1fr); + gap: 24px; + align-items: start; + margin: 0 0 28px 0; +} + +.ansico-author-intro__avatar img { + width: 120px; + height: 120px; + border-radius: 999px; + display: block; + object-fit: cover; +} + +.ansico-author-intro__name { + margin: 0 0 10px 0; + font-size: 2rem; + line-height: 1.1; +} + +.ansico-author-intro__bio { + margin: 0 0 12px 0; +} + +.ansico-author-intro__website a { + text-decoration: none; +} + +.ansico-author-intro__website a:hover { + text-decoration: underline; +} + +@media (max-width: 700px) { + .ansico-author-intro { + grid-template-columns: 1fr; + gap: 16px; + } + + .ansico-author-intro__avatar img { + width: 96px; + height: 96px; + } +} +/* Keep active home icon white on blue background */ +.ansico-main-nav-wrap .current-menu-item > a[href="/"]::before, +.ansico-main-nav-wrap .current_page_item > a[href="/"]::before, +.ansico-main-nav-wrap a[aria-current="page"][href="/"]::before, +.ansico-main-nav-wrap .wp-block-navigation-item__content[aria-current="page"][href="/"]::before { + color: #fff !important; +} + +/* Archive-style list on front page too */ +.home .wp-block-post-template > li { + display: block; +} + +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) { + display: grid; + grid-template-columns: 360px minmax(0, 1fr); + gap: 18px; + align-items: start; +} + +.home .wp-block-post-template > li > :not(.wp-block-post-featured-image) { + grid-column: auto; +} + +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image) { + grid-column: 2; +} + +.home .wp-block-post-template > li .wp-block-post-title { + font-size: 1.7rem; + line-height: 1.15; + margin-top: 0; + margin-bottom: 4px; +} + +.home .wp-block-post-template > li .wp-block-post-date { + font-size: 0.82rem; + line-height: 1.2; + margin-top: 0; + margin-bottom: 8px; +} + +.home .wp-block-post-template > li .wp-block-read-more { + display: none !important; +} + +@media (max-width: 700px) { + .home .wp-block-post-template > li:has(.wp-block-post-featured-image) { + grid-template-columns: 1fr; + } + + .home .wp-block-post-template > li:has(.wp-block-post-featured-image) > :not(.wp-block-post-featured-image) { + grid-column: auto; + } +} + + +/* Keep archive/home/search title, date and excerpt together beside featured image */ +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-title, +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-date, +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-title, +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-date, +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-title, +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-date, +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-title, +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-date, +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt { + grid-column: 2 !important; +} + +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt, +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt { + margin-top: 0 !important; +} + +.blog .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt p, +.archive .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt p, +.search .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt p, +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) .wp-block-post-excerpt p { + margin-top: 0 !important; +} + + +/* Front page: keep title, date and excerpt together beside featured image */ +.home .wp-block-post-template > li, +.page-template-front-page .wp-block-post-template > li, +body[class*="front-page"] .wp-block-post-template > li { + display: block; +} + +.home .wp-block-post-template > li:has(.wp-block-post-featured-image), +.page-template-front-page .wp-block-post-template > li:has(.wp-block-post-featured-image), +body[class*="front-page"] .wp-block-post-template > li:has(.wp-block-post-featured-image) { + display: grid; + grid-template-columns: 360px minmax(0, 1fr); + gap: 18px; + align-items: start; +} + +.home .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text, +.page-template-front-page .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text, +body[class*="front-page"] .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text { + grid-column: 2; +} + +.home .ansico-post-list-text .wp-block-post-title, +.home .ansico-post-list-text .wp-block-post-date, +.home .ansico-post-list-text .wp-block-post-excerpt, +.page-template-front-page .ansico-post-list-text .wp-block-post-title, +.page-template-front-page .ansico-post-list-text .wp-block-post-date, +.page-template-front-page .ansico-post-list-text .wp-block-post-excerpt, +body[class*="front-page"] .ansico-post-list-text .wp-block-post-title, +body[class*="front-page"] .ansico-post-list-text .wp-block-post-date, +body[class*="front-page"] .ansico-post-list-text .wp-block-post-excerpt { + margin-top: 0 !important; + margin-bottom: 0.45rem !important; +} + +.home .ansico-post-list-text .wp-block-post-excerpt p, +.page-template-front-page .ansico-post-list-text .wp-block-post-excerpt p, +body[class*="front-page"] .ansico-post-list-text .wp-block-post-excerpt p { + margin-top: 0 !important; +} + +@media (max-width: 700px) { + .home .wp-block-post-template > li:has(.wp-block-post-featured-image), + .page-template-front-page .wp-block-post-template > li:has(.wp-block-post-featured-image), + body[class*="front-page"] .wp-block-post-template > li:has(.wp-block-post-featured-image) { + grid-template-columns: 1fr; + } + + .home .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text, + .page-template-front-page .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text, + body[class*="front-page"] .wp-block-post-template > li:has(.wp-block-post-featured-image) > .ansico-post-list-text { + grid-column: auto; + } +} + + +/* Author social links */ +.ansico-author-intro__website a { + word-break: break-word; +} + +.ansico-author-intro__socials { + display: flex; + flex-wrap: wrap; + gap: 10px; + margin-top: 12px; +} + +.ansico-author-intro__social { + width: 34px; + height: 34px; + border-radius: 999px; + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + border: 1px solid currentColor; + font-size: 15px; + line-height: 1; +} + +.ansico-author-intro__social:hover { + text-decoration: none; + transform: translateY(-1px); +} + +.ansico-author-intro__social-label { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + + +/* Byline label should not be bold */ +.wp-block-post-author__byline, +.wp-block-post-author .wp-block-post-author__byline, +.ansico-post-meta .wp-block-post-author__byline, +.ansico-post-meta strong, +.ansico-post-meta b { + font-weight: 400 !important; +} + + +/* Home menu item as modern SVG icon */ +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href="/"], +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href$="/"], +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href="/"], +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href$="/"] { + font-size: 0 !important; + line-height: 1 !important; + min-width: 2.65rem; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href="/"]::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href$="/"]::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href="/"]::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href$="/"]::before { + content: ""; + width: 1.22rem; + height: 1.22rem; + display: inline-block; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5'/%3E%3Cpath d='M5.5 9.8V21h13V9.8'/%3E%3Cpath d='M9.5 21v-5.5h5V21'/%3E%3C/svg%3E"); +} + +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href="/"]:hover::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[href$="/"]:hover::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href="/"]:hover::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[href$="/"]:hover::before, +.ansico-main-nav-wrap .wp-block-navigation-item.current-menu-item:first-child > .wp-block-navigation-item__content::before, +.ansico-main-nav-wrap .wp-block-navigation-item.current_page_item:first-child > .wp-block-navigation-item__content::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > .wp-block-navigation-item__content[aria-current="page"]::before, +.ansico-main-nav-wrap .wp-block-navigation-item.current-menu-item:first-child > a::before, +.ansico-main-nav-wrap .wp-block-navigation-item.current_page_item:first-child > a::before, +.ansico-main-nav-wrap .wp-block-navigation-item:first-child > a[aria-current="page"]::before { + background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5'/%3E%3Cpath d='M5.5 9.8V21h13V9.8'/%3E%3Cpath d='M9.5 21v-5.5h5V21'/%3E%3C/svg%3E"); +} + diff --git a/ansico-wp-theme/style.css:Zone.Identifier b/ansico-wp-theme/style.css:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/style.css:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/archive.html b/ansico-wp-theme/templates/archive.html new file mode 100644 index 0000000..dd23c13 --- /dev/null +++ b/ansico-wp-theme/templates/archive.html @@ -0,0 +1,35 @@ + + + +
+
+
+ + + + +
+ + +
+ + +
+ + + + + + + +
+
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/archive.html:Zone.Identifier b/ansico-wp-theme/templates/archive.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/archive.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/author.html b/ansico-wp-theme/templates/author.html new file mode 100644 index 0000000..b6212b1 --- /dev/null +++ b/ansico-wp-theme/templates/author.html @@ -0,0 +1,39 @@ + + + +
+
+
+[ansico_author_intro_v2] + + + +

Articles

+ + + +
+ + +
+ + +
+ + + + + + + +
+
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/author.html:Zone.Identifier b/ansico-wp-theme/templates/author.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/author.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/front-page.html b/ansico-wp-theme/templates/front-page.html new file mode 100644 index 0000000..a60530a --- /dev/null +++ b/ansico-wp-theme/templates/front-page.html @@ -0,0 +1,30 @@ + + + +
+
+
+
+ + +
+ +
+ + + + + + + +
+
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/front-page.html:Zone.Identifier b/ansico-wp-theme/templates/front-page.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/front-page.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/home.html b/ansico-wp-theme/templates/home.html new file mode 100644 index 0000000..7abe4e3 --- /dev/null +++ b/ansico-wp-theme/templates/home.html @@ -0,0 +1,28 @@ + + + +
+
+
+
+ + + + + + + + + + +
+
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/home.html:Zone.Identifier b/ansico-wp-theme/templates/home.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/home.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/index.html b/ansico-wp-theme/templates/index.html new file mode 100644 index 0000000..c996fa3 --- /dev/null +++ b/ansico-wp-theme/templates/index.html @@ -0,0 +1,31 @@ + + + +
+
+
+ + + + +
+ + +
+ + + + + + + +
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/index.html:Zone.Identifier b/ansico-wp-theme/templates/index.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/index.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/page.html b/ansico-wp-theme/templates/page.html new file mode 100644 index 0000000..a0358a3 --- /dev/null +++ b/ansico-wp-theme/templates/page.html @@ -0,0 +1,19 @@ + + + +
+
+
+
+ +
+
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/page.html:Zone.Identifier b/ansico-wp-theme/templates/page.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/page.html:Zone.Identifier differ diff --git a/ansico-wp-theme/templates/single.html b/ansico-wp-theme/templates/single.html new file mode 100644 index 0000000..0de6273 --- /dev/null +++ b/ansico-wp-theme/templates/single.html @@ -0,0 +1,42 @@ + + + +
+
+
+
+ + + + + + + + +
+
+
+ + + +
+
+
+ +
+ + +
+ + + +
+
+
+ + + diff --git a/ansico-wp-theme/templates/single.html:Zone.Identifier b/ansico-wp-theme/templates/single.html:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/templates/single.html:Zone.Identifier differ diff --git a/ansico-wp-theme/theme.json b/ansico-wp-theme/theme.json new file mode 100644 index 0000000..6e5983e --- /dev/null +++ b/ansico-wp-theme/theme.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://schemas.wp.org/trunk/theme.json", + "version": 3, + "settings": { + "appearanceTools": true, + "layout": { + "contentSize": "760px", + "wideSize": "1200px" + }, + "color": { + "defaultPalette": false, + "defaultGradients": false, + "palette": [ + { "slug": "primary", "name": "LinkedIn Blue", "color": "#0a66c2" }, + { "slug": "primary-dark", "name": "Primary Dark", "color": "#084b8a" }, + { "slug": "base", "name": "Base", "color": "#ffffff" }, + { "slug": "contrast", "name": "Contrast", "color": "#000000" }, + { "slug": "border", "name": "Border", "color": "#cfd6df" } + ] + }, + "spacing": { + "units": ["px", "em", "rem", "%", "vh", "vw"], + "blockGap": true, + "spacingSizes": [ + { "slug": "20", "size": "0.5rem", "name": "XS" }, + { "slug": "30", "size": "0.875rem", "name": "S" }, + { "slug": "40", "size": "1.25rem", "name": "M" }, + { "slug": "50", "size": "2rem", "name": "L" }, + { "slug": "60", "size": "3rem", "name": "XL" } + ] + }, + "typography": { + "defaultFontSizes": false, + "fontFamilies": [ + { + "fontFamily": "'Source Sans 3', sans-serif", + "name": "Source Sans 3", + "slug": "source-sans-3" + } + ], + "fontSizes": [ + { "slug": "small", "size": "1rem", "name": "Small" }, + { "slug": "medium", "size": "1.125rem", "name": "Medium" }, + { "slug": "large", "size": "1.5rem", "name": "Large" }, + { "slug": "x-large", "size": "2.25rem", "name": "XL" } + ] + } + }, + "styles": { + "color": { + "background": "#ffffff", + "text": "#000000" + }, + "typography": { + "fontFamily": "var(--wp--preset--font-family--source-sans-3)", + "fontSize": "1.125rem", + "lineHeight": "1.65" + }, + "elements": { + "heading": { + "color": { "text": "#0a66c2" }, + "typography": { + "fontWeight": "700", + "lineHeight": "1.2" + } + }, + "link": { + "color": { "text": "#0a66c2" } + }, + "button": { + "color": { + "background": "#0a66c2", + "text": "#ffffff" + }, + "border": { "radius": "0px" }, + "spacing": { + "padding": { + "top": "0.75rem", + "bottom": "0.75rem", + "left": "1rem", + "right": "1rem" + } + }, + "typography": { "fontWeight": "600" } + } + }, + "blocks": { + "core/group": { + "border": { "radius": "0px" } + }, + "core/navigation": { + "typography": { "fontWeight": "600" } + }, + "core/search": { + "border": { "radius": "0px" } + }, + "core/post-title": { + "typography": { + "fontSize": "clamp(2rem, 4vw, 2.75rem)" + } + } + } + }, + "templateParts": [ + { "name": "header", "title": "Header", "area": "header" }, + { "name": "footer", "title": "Footer", "area": "footer" }, + { "name": "sidebar", "title": "Sidebar", "area": "uncategorized" } + ] +} diff --git a/ansico-wp-theme/theme.json:Zone.Identifier b/ansico-wp-theme/theme.json:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/ansico-wp-theme/theme.json:Zone.Identifier differ