Changeset 277867
- Timestamp:
- 07/01/2025 08:19:55 PM (7 months ago)
- Location:
- extendable/2.0.24
- Files:
-
- 18 edited
- 1 copied
-
. (copied) (copied from extendable/2.0.23)
-
functions.php (modified) (2 diffs)
-
parts/footer-logo-nav.html (modified) (1 diff)
-
parts/footer-with-address-four-columns.html (modified) (1 diff)
-
parts/footer-with-site-description-and-menu.html (modified) (2 diffs)
-
parts/header-title-nav-button.html (modified) (1 diff)
-
parts/header-title-social-nav.html (modified) (1 diff)
-
parts/header-with-center-logo-and-search-bar.html (modified) (1 diff)
-
parts/header-with-center-logo-and-social.html (modified) (1 diff)
-
parts/header-with-center-nav-and-social.html (modified) (1 diff)
-
parts/header-with-search-bar.html (modified) (1 diff)
-
parts/header.html (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
style.css (modified) (3 diffs)
-
styles/colors/cairo.json (modified) (1 diff)
-
styles/colors/piraeus.json (modified) (1 diff)
-
styles/typography/hind.json (modified) (1 diff)
-
styles/typography/jost-mulish.json (modified) (1 diff)
-
theme.json (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
extendable/2.0.24/functions.php
r269188 r277867 157 157 158 158 /** 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 */ 164 function 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 } 205 add_filter( 'render_block_data', 'extendable_add_duotone_to_extendify_demo_site_logo', 10 ); 188 206 189 207 /** … … 206 224 } 207 225 add_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 */ 233 if ( ! 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 } 259 endif; 260 add_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 */ 269 add_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 15 15 <!-- /wp:group --> 16 16 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"}} --> 18 18 <!-- wp:navigation-link {"label":"Solutions","url":"#","kind":"custom"} /--> 19 19 <!-- wp:navigation-link {"label":"Awards","type":"","id":"","url":"#","kind":"custom"} /--> -
extendable/2.0.24/parts/footer-with-address-four-columns.html
r267483 r277867 30 30 <!-- wp:column {"width":"15%"} --> 31 31 <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"}} --> 33 33 <ul class="wp-block-social-links alignright has-icon-color is-style-logos-only"> 34 34 <!-- wp:social-link {"url":"https://www.facebook.com/","service":"facebook"} /--> -
extendable/2.0.24/parts/footer-with-site-description-and-menu.html
r267483 r277867 4 4 <!-- wp:group {"align":"wide","layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> 5 5 <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"}} --> 7 7 <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"}} --> 9 9 <div class="wp-block-group"> 10 10 <!-- wp:site-logo /--> … … 42 42 <!-- /wp:group --> 43 43 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"}}} --> 45 45 <!-- wp:navigation-link {"label":"Solutions","url":"#","kind":"custom"} /--> 46 46 <!-- wp:navigation-link {"label":"Awards","type":"","id":"","url":"#","kind":"custom"} /--> -
extendable/2.0.24/parts/header-title-nav-button.html
r189295 r277867 14 14 <!-- wp:group {"layout":{"type":"flex","flexWrap":"wrap"}} --> 15 15 <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"}} --> 17 17 <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /--> 18 18 <!-- /wp:navigation --> -
extendable/2.0.24/parts/header-title-social-nav.html
r267483 r277867 23 23 <!-- /wp:social-links --> 24 24 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"}} --> 26 26 <!-- wp:page-list /--> 27 27 <!-- /wp:navigation --> -
extendable/2.0.24/parts/header-with-center-logo-and-search-bar.html
r189295 r277867 6 6 <!-- wp:column {"verticalAlignment":"center","width":"42%"} --> 7 7 <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 --> 10 11 </div> 11 12 <!-- /wp:column --> -
extendable/2.0.24/parts/header-with-center-logo-and-social.html
r267483 r277867 6 6 <!-- wp:column {"verticalAlignment":"center","width":"42%"} --> 7 7 <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"}} --> 9 9 <!-- wp:page-list /--> 10 10 <!-- /wp:navigation --> -
extendable/2.0.24/parts/header-with-center-nav-and-social.html
r267483 r277867 14 14 <!-- wp:group {"layout":{"type":"flex","flexWrap":"nowrap"}} --> 15 15 <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"}} --> 17 17 <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /--> 18 18 <!-- /wp:navigation --> -
extendable/2.0.24/parts/header-with-search-bar.html
r189295 r277867 16 16 <!-- /wp:group --> 17 17 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"}} --> 19 19 <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /--> 20 20 <!-- 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 15 15 <!-- wp:group {"layout":{"type":"flex","flexWrap":"nowrap"}} --> 16 16 <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"}} --> 18 18 <!-- wp:page-list {"isNavigationChild":true,"showSubmenuIcon":true,"openSubmenusOnClick":false} /--> 19 19 <!-- /wp:navigation --> -
extendable/2.0.24/readme.txt
r273119 r277867 2 2 Contributors: extendify, richtabor, colorful-tones 3 3 Requires at least: 6.6 4 Tested up to: 6.8 .14 Tested up to: 6.8 5 5 Requires PHP: 7.4 6 Stable tag: 2.0.2 36 Stable tag: 2.0.24 7 7 License: GPLv2 or later 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 13 13 14 14 == 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 15 22 16 23 = 2.0.23 - 2025-05-24 = -
extendable/2.0.24/style.css
r273119 r277867 6 6 Description: 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. 7 7 Requires at least: 6.6 8 Tested up to: 6.8 .18 Tested up to: 6.8 9 9 Requires PHP: 7.4 10 Version: 2.0.2 310 Version: 2.0.24 11 11 License: GNU General Public License v2 or later 12 12 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 76 76 } 77 77 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 78 188 .wp-block-navigation .wp-block-navigation-item a:hover, 79 189 .wp-block-navigation .wp-block-navigation-item a:focus { … … 95 205 96 206 .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); 101 211 } 102 212 -
extendable/2.0.24/styles/colors/cairo.json
r264481 r277867 65 65 ] 66 66 } 67 },68 "styles": {69 "blocks": {70 "core/pullquote": {71 "border": {72 "color": "var(--wp--preset--color--primary)",73 "width": "2px 0"74 }75 }76 }77 67 } 78 68 } -
extendable/2.0.24/styles/colors/piraeus.json
r264481 r277867 96 96 "core/pullquote": { 97 97 "border": { 98 "color": "var(--wp--preset--color--primary)", 99 "width": "6px 0" 98 "color": "var(--wp--preset--color--primary)" 100 99 } 101 100 } -
extendable/2.0.24/styles/typography/hind.json
r257511 r277867 5 5 "slug": "hind", 6 6 "styles": { 7 "blocks": {8 "core/separator": {9 "color": {10 "text": "var(--wp--preset--color--primary)"11 }12 }13 },14 7 "elements": { 15 8 "h1": { -
extendable/2.0.24/styles/typography/jost-mulish.json
r257511 r277867 37 37 }, 38 38 "heading": { 39 "color": {40 "text": "var(--wp--preset--color--foreground)"41 },42 39 "typography": { 43 40 "fontFamily": "var(--wp--preset--font-family--jost)" -
extendable/2.0.24/theme.json
r264481 r277867 16 16 "name": "no-title-sticky-header", 17 17 "title": "No Title Sticky Header", 18 "postTypes": ["page", "post"] 19 }, 20 { 21 "name": "page-with-title", 22 "title": "Page with Title", 18 23 "postTypes": ["page", "post"] 19 24 }
Note: See TracChangeset
for help on using the changeset viewer.