Plugin Directory

Changeset 3793564


Ignore:
Timestamp:
11/10/2026 03:13:27 AM (less than one hour ago)
Author:
wpids
Message:

Release 1.1.03: Add Customizer Sync module, GB Pro 2.8.0+ Design Tokens sync, React 19 compatibility

Location:
utility-for-generatepress/trunk
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • utility-for-generatepress/trunk/assets/css/utilfoge-admin-common.css

    r3751745 r3793564  
    228228    color: #1e1e1e !important;
    229229    stroke: #1e1e1e !important;
     230}
     231
     232.components-button.is-tertiary.utilfoge-sync-now-button {
     233    width: auto;
     234    padding: 0 5px !important;
     235    font-size: 12px;
     236    font-weight: 500;
     237    text-decoration: none;
     238    white-space: nowrap;
    230239}
    231240
  • utility-for-generatepress/trunk/assets/js/utilfoge-color-module.js

    r3557095 r3793564  
    1 /**
     1/**
    22 * UTILFOGE Color Module — Customizer JS
    33 * Handles: Parse colors, Mapping wizard modal, Preview modal, Save/Delete sets.
    … …  
    301301
    302302    var activeSlug = '';
     303    var colorPickerRoot = null;
    303304
    304305    function openMassiveMenu(slug) {
    … …  
    360361            };
    361362
    362             wp.element.render(el(PickerContainer), node);
     363            if (typeof wp.element.createRoot === 'function') {
     364                if (colorPickerRoot && typeof colorPickerRoot.unmount === 'function') {
     365                    colorPickerRoot.unmount();
     366                }
     367                colorPickerRoot = wp.element.createRoot(node);
     368                colorPickerRoot.render(el(PickerContainer));
     369            } else {
     370                wp.element.render(el(PickerContainer), node);
     371            }
    363372        } else {
    364373            // Fallback to plain text input if React is somehow missing
    … …  
    614623    });
    615624
     625    function cleanupColorPicker() {
     626        if (colorPickerRoot && typeof colorPickerRoot.unmount === 'function') {
     627            colorPickerRoot.unmount();
     628            colorPickerRoot = null;
     629        }
     630    }
     631
    616632    $(document).on('click', '#utilfoge-editor-cancel, #utilfoge-editor-close', function () {
    617         if (wp && wp.element && wp.element.unmountComponentAtNode) {
    618             wp.element.unmountComponentAtNode(document.getElementById('utilfoge-react-color-picker-root'));
    619         }
     633        cleanupColorPicker();
    620634        $('#utilfoge-editor-modal').fadeOut(200);
    621635    });
  • utility-for-generatepress/trunk/assets/js/utilfoge-gradient-module.js

    r3557095 r3793564  
    1 /**
     1/**
    22 * UTILFOGE Gradient Module — Customizer Control JS
    33 */
    … …  
    277277        }
    278278
     279        var activeStopRoot = null;
     280
    279281        function hideStopPicker() {
    280282                activeStopIndex = -1;
    … …  
    282284                $( '.utilfoge-gc-stop-picker-inline' ).removeClass( 'is-open' ).slideUp( 200, function() {
    283285                        var node = $( this ).find( '.utilfoge-gc-stop-picker-content' )[ 0 ];
    284                         if ( node && window.wp && wp.element && wp.element.unmountComponentAtNode ) {
    285                                 wp.element.unmountComponentAtNode( node );
     286                        if ( activeStopRoot && typeof activeStopRoot.unmount === 'function' ) {
     287                                activeStopRoot.unmount();
     288                                activeStopRoot = null;
    286289                        }
    287290                        $( this ).find( '.utilfoge-gc-stop-picker-content' ).empty();
    … …  
    330333                };
    331334
    332                 wp.element.render( el( PickerContainer ), node );
     335                if ( typeof wp.element.createRoot === 'function' ) {
     336                        if ( activeStopRoot && typeof activeStopRoot.unmount === 'function' ) {
     337                                activeStopRoot.unmount();
     338                        }
     339                        activeStopRoot = wp.element.createRoot( node );
     340                        activeStopRoot.render( el( PickerContainer ) );
     341                } else {
     342                        wp.element.render( el( PickerContainer ), node );
     343                }
    333344        }
    334345
  • utility-for-generatepress/trunk/includes/class-utilfoge-core.php

    r3751745 r3793564  
    2727                require_once UTILFOGE_PLUGIN_DIR . 'includes/class-utilfoge-dark-mode.php';
    2828                require_once UTILFOGE_PLUGIN_DIR . 'includes/class-utilfoge-export-import.php';
     29                require_once UTILFOGE_PLUGIN_DIR . 'includes/class-utilfoge-customizer-sync.php';
    2930                require_once UTILFOGE_PLUGIN_DIR . 'includes/class-utilfoge-settings.php';
    3031        }
    … …  
    6667                }
    6768
    68                 // 4. Editor CSS Sync is handled via enqueue_editor_assets() below
     69                // 4. Customizer Sync: legacy Editor CSS sync is handled via enqueue_editor_assets() below;
     70                // Design Tokens sync (GenerateBlocks Pro) is handled by UTILFOGE_Customizer_Sync.
     71                $is_customizer_sync = isset( $options['enable_editor_sync'] ) ? $options['enable_editor_sync'] : true;
     72                if ( $is_customizer_sync ) {
     73                        $customizer_sync = new UTILFOGE_Customizer_Sync();
     74                        $customizer_sync->init();
     75                }
    6976
    7077                // 5. Export Import
  • utility-for-generatepress/trunk/includes/class-utilfoge-settings.php

    r3751745 r3793564  
    5656                                'action_link' => admin_url( 'customize.php' ),
    5757                        ),
     58                        // The option key enable_editor_sync is kept for backward compatibility with 1.1.02.
    5859                        'enable_editor_sync' => array(
    59                                 'name' => __( 'Editor CSS Sync', 'utility-for-generatepress' ),
    60                                 'desc' => __( 'Sync Customizer & Theme CSS to Gutenberg.', 'utility-for-generatepress' )
     60                                'name'     => __( 'Customizer Sync', 'utility-for-generatepress' ),
     61                                'desc'     => UTILFOGE_Customizer_Sync::is_gb_pro_available()
     62                                        ? __( 'Sync customizer with design tokens.', 'utility-for-generatepress' )
     63                                        : __( 'This module will be powerful for sync design tokens in GB Pro.', 'utility-for-generatepress' ),
     64                                'sync_now' => true,
    6165                        ),
    6266                        'enable_export_import' => array(
    … …  
    7882                        array( $this, 'render_settings_page' )
    7983                );
     84
     85                $this->reposition_menu();
     86        }
     87
     88        /**
     89         * Place "Utility" above "Theme Editor", after all GeneratePress and GP Premium items.
     90         */
     91        private function reposition_menu() {
     92                global $submenu;
     93
     94                if ( empty( $submenu['themes.php'] ) || ! is_array( $submenu['themes.php'] ) ) {
     95                        return;
     96                }
     97
     98                $ours   = null;
     99                $others = array();
     100
     101                foreach ( $submenu['themes.php'] as $item ) {
     102                        if ( isset( $item[2] ) && 'utilfoge-utility' === $item[2] ) {
     103                                $ours = $item;
     104                        } else {
     105                                $others[] = $item;
     106                        }
     107                }
     108
     109                if ( null === $ours ) {
     110                        return;
     111                }
     112
     113                $result   = array();
     114                $inserted = false;
     115
     116                foreach ( $others as $item ) {
     117                        if ( ! $inserted && isset( $item[2] ) && in_array( $item[2], array( 'theme-editor.php', 'plugin-editor.php' ), true ) ) {
     118                                $result[] = $ours;
     119                                $inserted = true;
     120                        }
     121                        $result[] = $item;
     122                }
     123
     124                if ( ! $inserted ) {
     125                        $result[] = $ours;
     126                }
     127
     128                $submenu['themes.php'] = $result; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reordering our own submenu entry.
    80129        }
    81130
    … …  
    135184                        <div class="utilfoge-dashboard-header__nav">
    136185                                <a href="#" class="utilfoge-active"><?php esc_html_e( 'Utilities', 'utility-for-generatepress' ); ?></a>
    137                                 <a href="https://wpids.com/elite-utility-for-gp" target="_blank"><?php esc_html_e( 'Elite', 'utility-for-generatepress' ); ?></a>
    138186                                <a href="https://wpids.com/documentation" target="_blank"><?php esc_html_e( 'Documentation', 'utility-for-generatepress' ); ?></a>
    139187                                <a href="https://wpids.com/help-support" target="_blank"><?php esc_html_e( 'Support', 'utility-for-generatepress' ); ?></a>
    … …  
    146194                                <?php
    147195                                /**
    148                                  * Hook for Elite License Box
     196                                 * Hook to render extra content above the module list.
    149197                                 */
    150198                                do_action( 'utilfoge_dashboard_before_modules' );
    … …  
    177225                                                        </h3>
    178226                                                        <p><?php echo esc_html( $module['desc'] ); ?></p>
     227                                                        <?php
     228                                                        if ( $is_active && ! empty( $module['sync_now'] ) ) :
     229                                                                $sync_status = UTILFOGE_Customizer_Sync::get_status();
     230                                                                if ( ! empty( $sync_status['message'] ) ) :
     231                                                                        $sync_note = $sync_status['message'];
     232                                                                        if ( ! empty( $sync_status['skipped'] ) ) {
     233                                                                                $sync_note .= ' ' . sprintf(
     234                                                                                        /* translators: %d: number of tokens */
     235                                                                                        _n( '%d existing token was left untouched.', '%d existing tokens were left untouched.', (int) $sync_status['skipped'], 'utility-for-generatepress' ),
     236                                                                                        (int) $sync_status['skipped']
     237                                                                                );
     238                                                                        }
     239                                                                        ?>
     240                                                                        <p><?php echo esc_html( $sync_note ); ?></p>
     241                                                                <?php endif; ?>
     242                                                        <?php endif; ?>
    179243                                                </div>
    180244                                                <div class="utilfoge-module-actions">
    … …  
    199263                                                        <?php endif; ?>
    200264
     265                                                        <?php if ( $is_active && ! empty( $module['sync_now'] ) && UTILFOGE_Customizer_Sync::is_gb_pro_available() ) : ?>
     266                                                                <div class="utilfoge-module-settings">
     267                                                                        <a href="<?php echo esc_url( wp_nonce_url( admin_url( 'admin-post.php?action=utilfoge_customizer_sync_now' ), 'utilfoge_customizer_sync_now' ) ); ?>" class="components-button is-tertiary utilfoge-sync-now-button"><?php esc_html_e( 'Sync Now', 'utility-for-generatepress' ); ?></a>
     268                                                                </div>
     269                                                        <?php endif; ?>
    201270                                                        <?php if ( $is_active ) : ?>
    202271                                                                <a href="<?php echo esc_url( $toggle_url ); ?>" class="components-button is-secondary"><?php esc_html_e( 'Deactivate', 'utility-for-generatepress' ); ?></a>
  • utility-for-generatepress/trunk/readme.txt

    r3751745 r3793564  
    11=== Utility for GeneratePress ===
    22Contributors: wpids
    3 Tags: generatepress, generateblocks, dark mode, fluid typography, gradient
     3Tags: generatepress, generateblocks, design tokens, dark mode, fluid typography
    44Requires at least: 6.7
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 1.1.02
     7Stable tag: 1.1.03
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 Ultimate utility for GeneratePress & GenerateBlocks. Adds dark mode, fluid typography, gradients, editor sync, and settings migration.
     11Enhance GeneratePress and GenerateBlocks with design tokens, customizer sync, dark mode, fluid typography, and site migration tools.
    1212
    1313== Description ==
    1414
    15 Unlock the full power of your WordPress website with the most **underrated helper tool for GeneratePress & GenerateBlocks**. Designed specifically for developers, designers, and site builders, this plugin bridges gaps and adds powerhouse features to the GP ecosystem with absolute performance and zero overhead.
     15**Utility for GeneratePress** is the complete **GeneratePress Utility** and **GenerateBlocks** design system companion for WordPress developers, agencies, and site builders. It bridges the gap between the **GeneratePress Customizer** and **GenerateBlocks Pro Design Tokens** and **Global Styles**, while adding native **Color Management**, automatic **Color Shades**, a **Gradient Palette** builder, **Fluid Typography**, **Dark Mode**, and one-click **GP Export / GP Import** and **GenerateBlocks Export / Import** tools — with zero frontend bloat.
    1616
    17 Whether you are using GeneratePress Premium or the free theme, this lightweight utility integrates perfectly into the Customizer and block editor to deliver a native-feel administration dashboard.
     17Whether you use the free GeneratePress theme, **GP Premium**, **GenerateBlocks**, or **GenerateBlocks Pro**, every module integrates directly into the native WordPress Customizer and Gutenberg block editor.
    1818
    19 = 🚀 Main Features =
     19= 🔗 Customizer Sync & Design Token Sync (New!) =
    2020
    21 * **Dynamic Dark Mode**: Turn your site into a modern, eye-friendly experience. Built with mathematical HSL auto-derivatives, contrast-boosting logic, and real-time customizer previewing. Completely overrides original global variables in `.dark` scope for a clean CSS footprint.
    22 * **Fluid Typography Wizard**: Automatically calculate and generate responsive typography using the CSS `clamp()` function. Easily configure dynamic scale ratios to eliminate tedious media queries.
    23 * **Advanced Color & Gradient Management**: Overhauled gradient builder that lets you easily create, drag-and-drop, and manage custom CSS gradient variables. Fully integrates with Gutenberg and theme.json native palettes.
    24 * **Seamless Export / Import Module**: Backup, migrate, and transfer all your **GeneratePress** settings, custom **GP Elements**, and full **GenerateBlocks** layouts (including Global Styles, Local Patterns, SVG shapes, icons, display conditions, and overlay panels) with automated CSS cache-rebuilding.
    25 * **Editor CSS Sync**: Achieve a true WYSIWYG experience in Gutenberg. Automatically enqueues and synchronizes your Child Theme or Customizer CSS directly into the editor canvas.
     21Keep your **GeneratePress Customizer** and **GenerateBlocks Pro Design Tokens** (`2.8.0+`) in sync without duplicate setup:
     22
     23* **Two-Way GP Global Colors ↔ Design Tokens Sync**: Saving the GeneratePress Customizer automatically creates and updates matching color **Design Tokens** under the `GeneratePress` category in GenerateBlocks Pro. Updating those token values in the GenerateBlocks Design Tokens panel syncs changes right back to your GeneratePress Global Colors.
     24* **Color Shades & Variants Token Sync**: Automatically exposes all generated **Color Shades**, tints (`10–90`), and color harmony tokens from **Color Management** under the `Variants` category in GenerateBlocks Design Tokens.
     25* **Fluid Typography Token Sync**: Automatically registers your `--utilfoge-step-*` `clamp()` scale as `unit` **Design Tokens** scoped to `fontSize` under the `Fluid Typography` category for one-click selection inside GenerateBlocks typography controls.
     26* **One-Click "Sync Now" & Safe Checksum Architecture**: Trigger a manual sync anytime from **Appearance > Utility**. Built on GenerateBlocks Pro's native `:root` checksum validation and snapshot history — user-created tokens are never overwritten or deleted.
     27* **Gutenberg Editor CSS Sync**: Automatically enqueues your active Child Theme stylesheet and Customizer Additional CSS inside the Gutenberg block editor for a true WYSIWYG editing experience (works with or without GenerateBlocks Pro).
     28
     29= 🎨 Color Management, Color Shades & Harmony Variants =
     30
     31Build a complete design system palette directly from your **GeneratePress Global Colors**:
     32
     33* **Automatic Color Shades & Tints (`10–90`)**: Generate full 9-step lightness scales (`--slug-10` through `--slug-90`) from any base color in your palette.
     34* **Mathematical Color Harmonies**: Generate Complementary, Triadic, Analogous, and Split-Complementary color variables with one click.
     35* **Bulk CSS Variable Import**: Paste any `:root` CSS block to parse, map, and import colors straight into GeneratePress Global Colors and **Design Tokens**.
     36
     37= 🌈 Gradient Palette & Native theme.json Presets =
     38
     39* **Visual Drag-and-Drop Gradient Palette Builder**: Create linear and radial CSS gradients using the native WordPress React ColorPicker with full alpha transparency support.
     40* **Native Gutenberg & theme.json Integration**: Automatically injects custom gradients as native WordPress presets (`--wp--preset--gradient--*`) plus `.has-{slug}-gradient-text` and `.has-{slug}-gradient-border` utility classes with dark mode variant support.
     41
     42= 📐 Fluid Typography & Responsive clamp() Wizard =
     43
     44* **Zero-Media-Query Fluid Typography**: Automatically calculate responsive font sizes using CSS `clamp()` based on your base size, min/max viewport widths, and modular scale ratios (Minor Third, Major Third, Perfect Fourth, Golden Ratio, or custom).
     45* **Automatic Heading & Token Mapping**: Maps `--utilfoge-step--1` through `--utilfoge-step-8` to `body` and `h1–h6`, and syncs them directly to **GenerateBlocks Pro Design Tokens**.
     46
     47= 🌙 Dynamic Dark Mode & HSL Contrast Engine =
     48
     49* **Zero-Duplication CSS Variable Override**: Overrides your existing GeneratePress Global Colors inside the `.dark` scope so every block using `var(--contrast)`, `var(--base)`, or **Design Tokens** adapts to Dark Mode automatically.
     50* **HSL Contrast Boosting & Auto-Desaturation**: Automatically calculates eye-friendly dark counterparts for your entire color palette.
     51* **Dark Mode Logo Replacement**: Dedicated Customizer controls for desktop, mobile header, and GP Premium sticky navigation dark mode logos with zero-FOUC early script execution.
     52
     53= 📦 GP Export / GP Import & GenerateBlocks Export / Import =
     54
     55A complete backup and migration toolkit for **GeneratePress** and **GenerateBlocks**:
     56
     57* **GP Export & GP Import**: Export and import GeneratePress theme settings, Global Colors, Typography, and customizer configurations.
     58* **GP Elements Export/Import**: Backup and migrate custom **GeneratePress Elements** (`gp_elements` — Block, Header, Hook, and Layout Elements) across sites.
     59* **GenerateBlocks Export & GenerateBlocks Import**: Migrate **Global Styles**, **Design Tokens** (`gb_style_tokens`), **Style Categories**, **Local Patterns**, **Asset Library SVGs & Icons**, **Overlay Panels**, **Display Conditions**, **Forms**, and **Editor Access Profiles** with automatic CSS cache rebuilding.
     60* **GeneratePress Brand Tool `theme.json` Import**: Import palettes and typography directly from `theme.json` files.
    2661
    2762= ⚡ Performance-First Philosophy =
    28 We hate bloat as much as you do. This plugin enqueues minimal vanilla CSS and JS, utilizes native WordPress Gutenberg components, and does not rely on heavy external frameworks, keeping your Google PageSpeed scores at 100%.
     63
     64Zero bloat, zero external framework dependencies. Every module is individually toggleable under **Appearance > Utility**, uses native WordPress React components in the admin, and outputs ultra-clean CSS variables on the frontend.
    2965
    3066== Installation ==
    3167
    32 1. Upload the plugin files to the `/wp-content/plugins/utility-for-generatepress` directory, or install through the WordPress Plugins screen.
    33 2. Activate the plugin.
    34 3. Navigate to **Appearance > Utility** in your WordPress dashboard to toggle your desired modules.
     681. Upload the plugin files to the `/wp-content/plugins/utility-for-generatepress` directory, or install the plugin through the WordPress Plugins screen directly.
     692. Activate **Utility for GeneratePress** through the **Plugins** screen in WordPress.
     703. Navigate to **Appearance > Utility** to toggle modules, run **Customizer Sync**, or use the **GP / GenerateBlocks Export & Import** tools.
    3571
    3672== Frequently Asked Questions ==
    3773
    38 = Does this require GeneratePress Premium? =
    39 No! It works beautifully with the free version of GeneratePress. However, it is built to complement both the free and premium ecosystems perfectly.
     74= How does Customizer Sync and Design Token Sync work with GenerateBlocks Pro? =
     75When **GenerateBlocks Pro 2.8.0+** is active, the **Customizer Sync** module connects the GeneratePress Customizer with GenerateBlocks Design Tokens. Your **GeneratePress Global Colors** sync two-way with the `GeneratePress` token category, while **Color Shades / Variants** (`--slug-10` to `--slug-90`, harmonies) and **Fluid Typography** steps (`--utilfoge-step-*`) sync one-way into the `Variants` and `Fluid Typography` categories. If GenerateBlocks Pro is not installed, Customizer Sync continues to work as an Editor CSS Sync tool for Gutenberg.
    4076
    41 = How does the Dynamic Dark Mode contrast boosting work? =
    42 Our Dark Mode module uses a mathematical HSL color math engine. Instead of creating redundant CSS classes, it dynamically overrides the original global variables inside the `.dark` selector. The "Contrast Boosting" feature automatically desaturates bright colors and enhances background-to-text contrast ratios to guarantee optimal legibility and prevent eye strain.
     77= Does this plugin require GeneratePress Premium or GenerateBlocks Pro? =
     78No! It only requires the free **GeneratePress** theme. However, it deeply integrates with **GP Premium** (Elements, Sticky Navigation Dark Mode Logo) and **GenerateBlocks / GenerateBlocks Pro** (Design Tokens, Global Styles, Local Patterns, Forms, and Asset Library migration) when they are active.
    4379
    44 = Does Fluid Typography support custom scale ratios? =
    45 Yes! The Fluid Typography Wizard automatically calculates responsive text scaling using the modern CSS `clamp()` function. You can set custom minimum/maximum viewports and scale ratios, completely eliminating the need for tedious manual media queries.
     80= How do Color Management and Color Shades work? =
     81Inside the Customizer, the **Color Management** module lets you select any GeneratePress Global Color (or import `:root` CSS variables) and automatically generate 9-step **Color Shades** and tints (`10` through `90`), harmony variants, and dark mode counterparts. All generated variables are immediately available in Gutenberg and synced to GenerateBlocks Design Tokens.
    4682
    47 = How does the Gradient Builder sync with Gutenberg? =
    48 Our advanced Gradient Builder provides a drag-and-drop Color Stop slider using the native WordPress React ColorPicker. It automatically registers the resulting custom CSS gradients and seamlessly injects them directly into Gutenberg's block settings and native palettes via `theme.json` hooks.
     83= Can I use this for GP Export, GP Import, and GP Elements Export/Import? =
     84Yes! The built-in **Export / Import** module lets you perform a selective or full **GP Export** and **GP Import** — including GeneratePress theme settings, Global Colors, Fluid Typography, and **GP Elements Export/Import** (`gp_elements`) — in a single JSON file.
    4985
    50 = How does the GenerateBlocks Export/Import work? =
    51 Our Export/Import module natively supports both **GeneratePress** settings (including custom Elements) and **GenerateBlocks Pro** assets (including Local Patterns, Global Styles, SVGs, custom icons, and displays). It bundles everything into a secure package and automatically rebuilds the CSS styles cache on import to ensure your pages look perfect instantly.
     86= Does it support GenerateBlocks Export, GenerateBlocks Import, and Global Styles? =
     87Yes! You can export and import **GenerateBlocks Global Styles**, **Design Tokens**, **Style Categories**, **Local Patterns**, **SVG Shapes & Icons**, **Display Conditions**, **Overlay Panels**, **Forms**, and **Editor Access Profiles** with automatic dynamic CSS cache regeneration on import.
    5288
    53 = Will this plugin slow down my Gutenberg editor? =
    54 No. The Editor CSS Sync enqueues your styles using native WordPress editor styles hooks. This ensures they only load inside the active editor iframe frame with zero page overhead or blocking external scripts.
     89= How does the Dynamic Dark Mode work with Global Colors and Design Tokens? =
     90Instead of creating separate dark classes for every block, our Dark Mode engine overrides your original CSS variables (`--contrast`, `--base`, `--accent`, etc.) inside the `.dark` selector. Any GeneratePress element or GenerateBlocks block styled with Global Colors or **Design Tokens** automatically switches to its dark counterpart with zero extra configuration.
    5591
    56 = What makes this the most underrated helper tool? =
    57 Most utilities only focus on one minor feature. **Utility for GeneratePress** combines fluid typography scaling, an advanced math-based dark mode engine, dynamic theme.json gradient injection, and a robust migration engine into a single unified design system that runs with zero performance overhead.
     92= How does the Gradient Palette builder integrate with Gutenberg? =
     93The **Gradient Palette** module provides a drag-and-drop multi-stop gradient builder in the Customizer and automatically registers your presets into WordPress's native `theme.json` palette (`--wp--preset--gradient--*`) as well as `.has-{slug}-gradient-text` and `.has-{slug}-gradient-border` utility classes.
    5894
    5995== Screenshots ==
    6096
    61 1. Utility for GeneratePress Dashboard - Easily toggle and manage your modular design extensions.
    62 2. Dynamic Dark Mode Wizard - Real-time dark mode palette configuration inside the Customizer.
    63 3. Contrast Boosting Settings - Auto-desaturate vibrant colors and boost reading legibility.
    64 4. Fluid Typography Panel - Automatically calculate responsive typography scaling on the fly.
    65 5. Fluid Viewport Configuration - Customize min/max viewports and scaling ratios.
    66 6. Advanced Drag-and-Drop Gradient Builder - Craft beautiful custom CSS gradients.
    67 7. Gutenberg Palette Integration - Syncing custom gradient variables directly into block editor controls.
    68 8. Secure Export / Import Module - Easily backup or migrate your elements, styles, and configurations.
    69 9. Seamless Element Dashboard Injection - Quick migration buttons integrated into native CPT dashboards.
    70 10. Gutenberg Editor CSS Sync - Real-time WYSIWYG sync of your styles inside the editor canvas.
    71 11. Unified Admin Branding - Perfectly matches the native premium GeneratePress look and feel.
    72 12. HSL Color Math Engine Options - Configure custom alpha opacity and HSL auto-derivatives.
    73 13. Mobile Responsive Design Preview - Beautiful fluid typography scaling on mobile viewports.
    74 14. System Status and Diagnostics - Clean inline indicators reflecting your active modular setup.
     971. Utility for GeneratePress Dashboard - Toggle modules, run Customizer Sync, and manage GP & GenerateBlocks Export/Import.
     982. Customizer Sync & Design Tokens - Automatic synchronization of GP Global Colors, Color Variants, and Fluid Typography into GenerateBlocks Pro Design Tokens.
     993. Color Management & Color Shades - Generate 10–90 tints/shades and color harmony variants in the Customizer.
     1004. Dynamic Dark Mode Wizard - Real-time dark mode palette and logo configuration inside the Customizer.
     1015. Contrast Boosting Settings - Auto-desaturate vibrant colors and boost reading legibility in Dark Mode.
     1026. Fluid Typography Panel - Automatically calculate responsive `clamp()` typography scaling on the fly.
     1037. Fluid Viewport Configuration - Customize min/max viewports and modular scale ratios.
     1048. Advanced Drag-and-Drop Gradient Palette Builder - Craft custom linear and radial CSS gradients.
     1059. Gutenberg Palette Integration - Custom gradient variables and Design Tokens inside block editor controls.
     10610. GP & GenerateBlocks Export / Import Module - Backup or migrate GP Elements, Global Styles, Design Tokens, Patterns, and settings.
     10711. Seamless Element Dashboard Injection - Quick export/import buttons integrated into native GP & GB admin screens.
     10812. Gutenberg Editor CSS Sync - Real-time WYSIWYG sync of your Customizer and Child Theme styles inside the editor canvas.
     10913. HSL Color Math Engine Options - Configure alpha opacity and HSL auto-derivatives.
     11014. Mobile Responsive Design Preview - Fluid typography scaling across desktop, tablet, and mobile viewports.
    75111
    76112== Changelog ==
     113
     114= 1.1.03 =
     115* Feature: New Customizer Sync module (evolves Editor CSS Sync). Syncs GeneratePress Global Colors two-way with GenerateBlocks Pro Design Tokens (2.8.0+), and exposes Color Management variants and Fluid Typography steps as tokens.
     116* Feature: Added manual 'Sync Now' action and live sync status feedback directly on the Utility dashboard card.
     117* Tweak: Expanded color token scope to include borderTopColor, borderRightColor, borderBottomColor, and borderLeftColor for complete GenerateBlocks Pro border color picker support.
     118* Tweak: Context-aware module hint displaying 'Sync customizer with design tokens.' when GenerateBlocks Pro is active, or a non-intrusive hint when it is not.
     119* Tweak: Repositioned 'Appearance > Utility' submenu directly above Theme Editor and below all GeneratePress / GP Premium items.
     120* Compliance: Achieved 100% clean pass on automated WordPress.org Plugin Check (synced Stable tag, standard English short description, removed redundant Tested up to from PHP header).
     121* Compatibility: Replaced deprecated ReactDOM.unmountComponentAtNode with createRoot() and root.unmount() for React 19 forward compatibility.
     122* Cleanup: Removed deprecated Elite dashboard navigation link and cleaned up legacy utilgp-* files.
     123* Docs: Comprehensive documentation and discovery overhaul for Design Tokens, Customizer Sync, Global Styles, and GP / GenerateBlocks Export & Import.
    77124
    78125= 1.1.02 =
  • utility-for-generatepress/trunk/utility-for-generatepress.php

    r3751745 r3793564  
    33 * Plugin Name:       Utility for GeneratePress
    44 * Plugin URI:        https://wpids.com/utility-for-generatepress
    5  * Description:       Color Management, Gradient Variables, Advanced Fluid Typography, Dark Mode support, and Editor Sync for GeneratePress.
    6  * Version:           1.1.02
     5 * Description:       The complete GeneratePress Utility & GenerateBlocks companion: Customizer Sync & Design Token Sync, Color Management & Color Shades, Gradient Palette, Fluid Typography, Dark Mode, Global Styles, and GP / GenerateBlocks Export & Import.
     6 * Version:           1.1.03
    77 * Author:            WPIDS
    88 * Author URI:        https://wpids.com
    … …  
    1212 * Domain Path:       /languages
    1313 * Requires at least: 6.7
    14  * Tested up to:      7.1
    1514 * Requires PHP:      7.4
    1615 */
    … …  
    2120}
    2221
    23 define( 'UTILFOGE_VERSION', '1.1.02' );
     22define( 'UTILFOGE_VERSION', '1.1.03' );
    2423define( 'UTILFOGE_FILE', __FILE__ );
    2524define( 'UTILFOGE_PLUGIN_DIR', plugin_dir_path( UTILFOGE_FILE ) );
Note: See TracChangeset for help on using the changeset viewer.