Make WordPress Themes

Changeset 277867


Ignore:
Timestamp:
07/01/2025 08:19:55 PM (7 months ago)
Author:
extendify
Message:

Release version 2.0.24

Location:
extendable/2.0.24
Files:
18 edited
1 copied

Legend:

Unmodified
Added
Removed
  • extendable/2.0.24/functions.php

    r269188 r277867  
    157157
    158158/**
    159  * Enqueue dynamic CSS for primary-foreground duotone filter.
    160  *
    161  * Ensure default logo works well on light and dark backgrounds
    162  *
    163  * @since Extendable 2.0.11
    164  *
    165  * @return void
    166  */
    167 function extendable_enqueue_dynamic_duotone_css() {
    168     $theme_json      = WP_Theme_JSON_Resolver::get_merged_data();
    169     $duotone_presets = $theme_json->get_settings()['color']['duotone']['theme'] ?? [];
    170 
    171     $preset_index = array_search( 'primary-foreground', array_column( $duotone_presets, 'slug' ) );
    172     $primary_color   = '#000000';
    173     $foreground_color = '#ffffff';
    174     if ( false !== $preset_index ) {
    175         $primary_color   = $duotone_presets[ $preset_index ]['colors'][0];
    176         $foreground_color = $duotone_presets[ $preset_index ]['colors'][1];
    177     }
    178     list( $r, $g, $b ) = array_map( fn( $c ) => hexdec( $c ) / 255, sscanf( $primary_color, "#%02x%02x%02x" ) );
    179     $css = "
    180         .wp-block-site-logo img[src*='extendify-demo-'],
    181         .wp-block-site-logo img[src*='ext-custom-logo-'] {
    182             filter: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"><filter id=\"solid-color\"><feColorMatrix color-interpolation-filters=\"sRGB\" type=\"matrix\" values=\"0 0 0 0 {$r} 0 0 0 0 {$g} 0 0 0 0 {$b} 0 0 0 1 0\"/></filter></svg>#solid-color') !important;
    183         }
    184     ";
    185     wp_add_inline_style( 'wp-block-library', $css );
    186 }
    187 add_action( 'wp_enqueue_scripts', 'extendable_enqueue_dynamic_duotone_css' );
     159 * Add primary-foreground duotone to extendify demo Site Logo block.
     160 *
     161 * @param array $parsed_block Parsed block data.
     162 * @return array Filtered block data.
     163 */
     164function extendable_add_duotone_to_extendify_demo_site_logo( array $parsed_block ) : array {
     165
     166    if ( 'core/site-logo' !== $parsed_block['blockName'] ) {
     167        return $parsed_block;
     168    }
     169
     170    $logo_url = $parsed_block['attrs']['url'] ?? '';
     171
     172    if ( '' === $logo_url ) {
     173        $logo_id  = (int) get_theme_mod( 'custom_logo' );
     174        $logo_url = $logo_id ? wp_get_attachment_url( $logo_id ) : '';
     175    }
     176
     177    if ( '' === $logo_url ) {
     178        return $parsed_block;
     179    }
     180
     181    $logo_file        = wp_basename( $logo_url );
     182    $allowed_prefixes = array( 'extendify-demo-', 'ext-custom-logo-' );
     183
     184    $matches = false;
     185    foreach ( $allowed_prefixes as $prefix ) {
     186        if ( function_exists( 'str_starts_with' ) ) {
     187            $matches = str_starts_with( $logo_file, $prefix );
     188        } else {
     189            $matches = 0 === strpos( $logo_file, $prefix );
     190        }
     191        if ( $matches ) {
     192            break;
     193        }
     194    }
     195
     196    if ( ! $matches ) {
     197        return $parsed_block;
     198    }
     199
     200    $parsed_block['attrs']['style']['color']['duotone'] =
     201        'var:preset|duotone|primary-foreground';
     202
     203    return $parsed_block;
     204}
     205add_filter( 'render_block_data', 'extendable_add_duotone_to_extendify_demo_site_logo', 10 );
    188206
    189207/**
     
    206224}
    207225add_filter( 'get_block_templates', 'extendable_exclude_wc_block_templates', 10, 2 );
     226
     227/**
     228 * Navigation customizations
     229 *
     230 * @package Extendable
     231 * @since Extendable 2.0.23
     232 */
     233if ( ! function_exists( 'extendable_enqueue_navigation_customizations' ) ) :
     234    /**
     235     * Enqueue the JS that fetches logo & site title to customize the mobile navigation.
     236     *
     237     */
     238    function extendable_enqueue_navigation_customizations() {
     239
     240        $logo_id   = get_theme_mod( 'custom_logo' );
     241        $logo_url  = $logo_id ? wp_get_attachment_image_url( $logo_id, 'full' ) : '';
     242        $site_title = get_bloginfo( 'name' );
     243
     244        wp_enqueue_script(
     245            'extendable-navigation_customizations',
     246            get_template_directory_uri() . '/assets/js/navigation-customization.js',
     247            array(),   // no dependencies; add 'wp-interactivity' if you switch back to that version
     248            null,
     249            true        // load in footer
     250        );
     251
     252        wp_localize_script( 'extendable-navigation_customizations', 'ExtendableNavData',
     253            array(
     254                'logoUrl'   => $logo_url,
     255                'siteTitle' => $site_title,
     256            )
     257        );
     258    }
     259endif;
     260add_action( 'wp_enqueue_scripts', 'extendable_enqueue_navigation_customizations' );
     261
     262/**
     263 * Force the block editor to use page-with-title
     264 * as the default template for new Pages.
     265 *
     266 * @since Extendable 2.0.24
     267 * @return void
     268 */
     269add_action( 'enqueue_block_editor_assets', function () {
     270    $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null;
     271
     272    if ( $screen && $screen->is_block_editor() && 'page' === $screen->post_type ) {
     273        wp_enqueue_script(
     274            'extendable-default-page-template',
     275            get_template_directory_uri() . '/assets/js/default-page-template.js',
     276            array( 'wp-data', 'wp-editor' ),
     277            EXTENDABLE_THEME_VERSION,
     278            true
     279        );
     280    }
     281} );
     282
  • extendable/2.0.24/parts/footer-logo-nav.html

    r202884 r277867  
    1515        <!-- /wp:group -->
    1616
    17         <!-- wp:navigation {"overlayMenu":"never","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left","flexWrap":"wrap"}} -->
     17        <!-- wp:navigation {"overlayMenu":"never","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right","flexWrap":"wrap"}} -->
    1818            <!-- wp:navigation-link {"label":"Solutions","url":"#","kind":"custom"} /-->
    1919            <!-- wp:navigation-link {"label":"Awards","type":"","id":"","url":"#","kind":"custom"} /-->
  • extendable/2.0.24/parts/footer-with-address-four-columns.html

    r267483 r277867  
    3030            <!-- wp:column {"width":"15%"} -->
    3131            <div class="wp-block-column" style="flex-basis:15%">
    32                 <!-- wp:social-links {"iconColor":"foreground","iconColorValue":"#0B0620","align":"right","style":{"spacing":{"blockGap":{"top":"1rem","left":"1rem"}}},"className":"is-style-logos-only","layout":{"type":"flex","justifyContent":"left"}} -->
     32                <!-- wp:social-links {"iconColor":"foreground","iconColorValue":"#0B0620","align":"right","style":{"spacing":{"blockGap":{"top":"1rem","left":"1rem"}}},"className":"is-style-logos-only","layout":{"type":"flex","justifyContent":"right"}} -->
    3333                <ul class="wp-block-social-links alignright has-icon-color is-style-logos-only">
    3434                <!-- wp:social-link {"url":"https://www.facebook.com/","service":"facebook"} /-->
  • extendable/2.0.24/parts/footer-with-site-description-and-menu.html

    r267483 r277867  
    44    <!-- wp:group {"align":"wide","layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} -->
    55    <div class="wp-block-group alignwide">
    6         <!-- wp:group {"style":{"spacing":{"blockGap":"1.5rem"}},"layout":{"type":"constrained","justifyContent":"left"}} -->
     6        <!-- wp:group {"style":{"spacing":{"blockGap":"1.5rem"}},"layout":{"type":"constrained","justifyContent":"right"}} -->
    77        <div class="wp-block-group">
    8             <!-- wp:group {"style":{"spacing":{"blockGap":"1rem"}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"left"}} -->
     8            <!-- wp:group {"style":{"spacing":{"blockGap":"1rem"}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"right"}} -->
    99            <div class="wp-block-group">
    1010                <!-- wp:site-logo /-->
     
    4242    <!-- /wp:group -->
    4343
    44     <!-- wp:navigation {"align":"wide","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left"},"style":{"typography":{"fontStyle":"normal","fontWeight":"500"}}} -->
     44    <!-- wp:navigation {"align":"wide","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"},"style":{"typography":{"fontStyle":"normal","fontWeight":"500"}}} -->
    4545        <!-- wp:navigation-link {"label":"Solutions","url":"#","kind":"custom"} /-->
    4646        <!-- wp:navigation-link {"label":"Awards","type":"","id":"","url":"#","kind":"custom"} /-->
  • extendable/2.0.24/parts/header-title-nav-button.html

    r189295 r277867  
    1414        <!-- wp:group {"layout":{"type":"flex","flexWrap":"wrap"}} -->
    1515        <div class="wp-block-group">
    16             <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
     16            <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
    1717            <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /-->
    1818            <!-- /wp:navigation -->
  • extendable/2.0.24/parts/header-title-social-nav.html

    r267483 r277867  
    2323            <!-- /wp:social-links -->
    2424
    25             <!-- wp:navigation {"overlayMenu":"always","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
     25            <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","overlayMenu":"always","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
    2626            <!-- wp:page-list /-->
    2727            <!-- /wp:navigation -->
  • extendable/2.0.24/parts/header-with-center-logo-and-search-bar.html

    r189295 r277867  
    66        <!-- wp:column {"verticalAlignment":"center","width":"42%"} -->
    77        <div class="wp-block-column is-vertically-aligned-center" style="flex-basis:42%">
    8             <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left"}} -->
    9             <!-- /wp:navigation -->
     8            <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left"}} -->
     9                <!-- wp:page-list /-->
     10            <!-- /wp:navigation -->
    1011        </div>
    1112        <!-- /wp:column -->
  • extendable/2.0.24/parts/header-with-center-logo-and-social.html

    r267483 r277867  
    66        <!-- wp:column {"verticalAlignment":"center","width":"42%"} -->
    77        <div class="wp-block-column is-vertically-aligned-center" style="flex-basis:42%">
    8             <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left"}} -->
     8            <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"left"}} -->
    99            <!-- wp:page-list /-->
    1010            <!-- /wp:navigation -->
  • extendable/2.0.24/parts/header-with-center-nav-and-social.html

    r267483 r277867  
    1414        <!-- wp:group {"layout":{"type":"flex","flexWrap":"nowrap"}} -->
    1515                <div class="wp-block-group">
    16                     <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
     16                    <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
    1717                    <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /-->
    1818                    <!-- /wp:navigation -->
  • extendable/2.0.24/parts/header-with-search-bar.html

    r189295 r277867  
    1616        <!-- /wp:group -->
    1717
    18         <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
     18        <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
    1919            <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /-->
    2020            <!-- wp:search {"label":"Search","showLabel":false,"placeholder":"Search...","buttonText":"Search","buttonPosition":"no-button","buttonUseIcon":true,"style":{"border":{"width":"1px","radius":"4px"},"typography":{"lineHeight":"2"}},"borderColor":"foreground","fontSize":"small"} /-->
  • extendable/2.0.24/parts/header.html

    r264481 r277867  
    1515        <!-- wp:group {"layout":{"type":"flex","flexWrap":"nowrap"}} -->
    1616        <div class="wp-block-group">
    17             <!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
     17            <!-- wp:navigation {"icon":"menu","overlayBackgroundColor":"background","overlayTextColor":"foreground","layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"}} -->
    1818            <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /-->
    1919            <!-- /wp:navigation -->
  • extendable/2.0.24/readme.txt

    r273119 r277867  
    22Contributors: extendify, richtabor, colorful-tones
    33Requires at least: 6.6
    4 Tested up to: 6.8.1
     4Tested up to: 6.8
    55Requires PHP: 7.4
    6 Stable tag: 2.0.23
     6Stable tag: 2.0.24
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    1313
    1414== Changelog ==
     15
     16= 2.0.24 - 2025-07-01 =
     17- New: Added new style variations
     18- New: Introduced a new page template: page-with-title
     19- Change: Set page-with-title as the default page template
     20- Change: Improved mobile menu design for better usability
     21- Change: Updated the method of applying duotone to the Extendify demo site logo
    1522
    1623= 2.0.23 - 2025-05-24 =
  • extendable/2.0.24/style.css

    r273119 r277867  
    66Description: Extendable is a distinct, dynamic block theme designed as a canvas for your next online venture. Sporting multiple style variations, Extendable is the most expressive block theme yet. Go fresh, bold, bohemian or minimal — with a single click.
    77Requires at least: 6.6
    8 Tested up to: 6.8.1
     8Tested up to: 6.8
    99Requires PHP: 7.4
    10 Version: 2.0.23
     10Version: 2.0.24
    1111License: GNU General Public License v2 or later
    1212License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    7676}
    7777
     78/*
     79 * Navigation Block
     80 */
     81
     82 @media (min-width: 600px) {
     83    .site-logo-title {
     84        display:none
     85    }
     86
     87    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,
     88    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
     89    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list {
     90        align-items: flex-start !important;
     91    }
     92}
     93
     94 @media (max-width: 600px) {
     95    .has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,
     96    .has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
     97    .has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list {
     98        align-items: flex-start !important;
     99    }
     100}
     101
     102.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title {
     103    display: flex;
     104    flex-wrap: nowrap;
     105    max-width: 100%;
     106    align-items: center;
     107    gap: 0.5rem;
     108    padding-bottom: var(--wp--preset--spacing--30);
     109    position: relative;
     110    padding-inline-end: 52px;
     111}
     112
     113.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title::after {
     114    content: "";
     115    position: absolute;
     116    left: calc(-1 * var(--wp--preset--spacing--30));
     117    right: calc(-1 * var(--wp--preset--spacing--30));
     118    bottom: 0;
     119    height: 1px;
     120    background: #8080801d;
     121}
     122
     123.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title img {
     124    max-height: 42px !important;
     125    height: auto !important;
     126    width: auto !important;
     127
     128}
     129
     130.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title .site-title {
     131    font-size: 1.25rem;
     132    font-weight: 700;
     133    color: var(--wp--preset--color--foreground);
     134    text-transform: uppercase;
     135    letter-spacing: -0.02em;
     136    box-sizing: border-box;
     137    line-height: 1.15;
     138}
     139
     140.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
     141    padding-top: var(--wp--preset--spacing--30);
     142}
     143
     144.has-modal-open .wp-block-navigation__responsive-container-close {
     145    background-color:var(--wp--preset--color--tertiary);
     146    padding: 0.625rem;
     147    border-radius: 100%;
     148    top: -2.5px !important;
     149}
     150
     151.has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
     152    gap: 0 !important;
     153    width: 100%;
     154}
     155
     156.has-modal-open .wp-block-navrigation__containe, .has-modal-open .wp-block-navigation__container ul {
     157    row-gap: 0.75rem !important;
     158    width: -webkit-fill-available;
     159    max-width: 100%;
     160}
     161
     162.has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content > ul.wp-block-navigation__container > li.wp-block-navigation-item:not(.wp-block-navigation__submenu-container) {
     163    border-bottom: 1px solid #8080801d;
     164    padding-top: 0.75rem;
     165    padding-bottom: 0.75rem;
     166    width: -webkit-fill-available;
     167    max-width: 100%;
     168}
     169
     170.has-modal-open .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container {
     171    padding: 0.75rem 0.75rem 0 0.75rem !important;
     172    gap: 0.75rem !important;
     173 }
     174
     175.has-modal-open .wp-block-navigation__responsive-dialog ul.wp-block-navigation__container > li:not(.wp-block-navigation__submenu-container) > a.wp-block-navigation-item__content {
     176    font-size: 1.25rem;
     177    font-weight: 600;
     178}
     179
     180.has-modal-open .wp-block-navigation__submenu-container {
     181   padding-top: 0.75rem !important;
     182}
     183
     184.has-modal-open .wp-block-navigation__responsive-dialog ul.wp-block-navigation__container .wp-block-navigation-submenu .wp-block-navigation-item a {
     185    font-size: 1rem !important;
     186}
     187
    78188.wp-block-navigation .wp-block-navigation-item a:hover,
    79189.wp-block-navigation .wp-block-navigation-item a:focus {
     
    95205
    96206.wp-block-navigation__responsive-container.is-menu-open {
    97     padding-top: var(--wp--custom--spacing--outer);
    98     padding-bottom: var(--wp--custom--spacing--large);
    99     padding-right: var(--wp--custom--spacing--outer);
    100     padding-left: var(--wp--custom--spacing--outer);
     207    padding-top: var(--wp--preset--spacing--30);
     208    padding-bottom: var(--wp--preset--spacing--30);
     209    padding-right: var(--wp--preset--spacing--30);
     210    padding-left: var(--wp--preset--spacing--30);
    101211}
    102212
  • extendable/2.0.24/styles/colors/cairo.json

    r264481 r277867  
    6565            ]
    6666        }
    67     },
    68     "styles": {
    69         "blocks": {
    70             "core/pullquote": {
    71                 "border": {
    72                     "color": "var(--wp--preset--color--primary)",
    73                     "width": "2px 0"
    74                 }
    75             }
    76         }
    7767    }
    7868}
  • extendable/2.0.24/styles/colors/piraeus.json

    r264481 r277867  
    9696            "core/pullquote": {
    9797                "border": {
    98                     "color": "var(--wp--preset--color--primary)",
    99                     "width": "6px 0"
     98                    "color": "var(--wp--preset--color--primary)"
    10099                }
    101100            }
  • extendable/2.0.24/styles/typography/hind.json

    r257511 r277867  
    55    "slug": "hind",
    66    "styles": {
    7         "blocks": {
    8             "core/separator": {
    9                 "color": {
    10                     "text": "var(--wp--preset--color--primary)"
    11                 }
    12             }
    13         },
    147        "elements": {
    158            "h1": {
  • extendable/2.0.24/styles/typography/jost-mulish.json

    r257511 r277867  
    3737            },
    3838            "heading": {
    39                 "color": {
    40                     "text": "var(--wp--preset--color--foreground)"
    41                 },
    4239                "typography": {
    4340                    "fontFamily": "var(--wp--preset--font-family--jost)"
  • extendable/2.0.24/theme.json

    r264481 r277867  
    1616            "name": "no-title-sticky-header",
    1717            "title": "No Title Sticky Header",
     18            "postTypes": ["page", "post"]
     19        },
     20        {
     21            "name": "page-with-title",
     22            "title": "Page with Title",
    1823            "postTypes": ["page", "post"]
    1924        }
Note: See TracChangeset for help on using the changeset viewer.