Plugin Directory

Changeset 3147511


Ignore:
Timestamp:
09/06/2024 10:44:44 AM (18 months ago)
Author:
aiwp
Message:

version 2.2.0

Location:
ai-addons-for-elementor
Files:
310 added
1 deleted
57 edited

Legend:

Unmodified
Added
Removed
  • ai-addons-for-elementor/trunk/ai-addons.php

    r3142932 r3147511  
    44    Plugin URI: http://aiaddons.ai/
    55    Description: Discover the most advanced Elementor addons: AI featured widgets, Header & Footer builders, Mega menu builder, layout pack, drag and drop custom controls and potent custom controls.
    6     Version: 2.1.0
     6    Version: 2.2.0
    77    Author: aiwp
    88    Author URI: https://profiles.wordpress.org/aiwp/
  • ai-addons-for-elementor/trunk/assets/css/editor/control-helper.css

    r2932395 r3147511  
    406406    font-size: 12px;
    407407}
     408.ai-auto-loader {
     409    margin-left: 5px;
     410}
     411.ai-auto-loader.loading > i {
     412    display: inline-flex;
     413    -webkit-animation: aiearotating 2s linear infinite;
     414    -moz-animation: aiearotating 2s linear infinite;
     415    -ms-animation: aiearotating 2s linear infinite;
     416    -o-animation: aiearotating 2s linear infinite;
     417    animation: aiearotating 2s linear infinite;
     418}
     419@-webkit-keyframes aiearotating /* Safari and Chrome */ {
     420  from {
     421    -webkit-transform: rotate(0deg);
     422    -o-transform: rotate(0deg);
     423    transform: rotate(0deg);
     424  }
     425  to {
     426    -webkit-transform: rotate(360deg);
     427    -o-transform: rotate(360deg);
     428    transform: rotate(360deg);
     429  }
     430}
     431@keyframes aiearotating {
     432  from {
     433    -ms-transform: rotate(0deg);
     434    -moz-transform: rotate(0deg);
     435    -webkit-transform: rotate(0deg);
     436    -o-transform: rotate(0deg);
     437    transform: rotate(0deg);
     438  }
     439  to {
     440    -ms-transform: rotate(360deg);
     441    -moz-transform: rotate(360deg);
     442    -webkit-transform: rotate(360deg);
     443    -o-transform: rotate(360deg);
     444    transform: rotate(360deg);
     445  }
     446}
  • ai-addons-for-elementor/trunk/assets/css/editor/editor-style.css

    r3142932 r3147511  
    153153}
    154154
    155 @font-face {
    156   font-family: 'ai-icon';
    157   src:  url('../../fonts/editor-fonts/ai-icon.eot?j26l32');
    158   src:  url('../../fonts/editor-fonts/ai-icon.eot?j26l32#iefix') format('embedded-opentype'),
    159     url('../../fonts/editor-fonts/ai-icon.ttf?j26l32') format('truetype'),
    160     url('../../fonts/editor-fonts/ai-icon.woff?j26l32') format('woff'),
    161     url('../../fonts/editor-fonts/ai-icon.svg?j26l32#ai-icon') format('svg');
    162   font-weight: normal;
    163   font-style: normal;
    164   font-display: block;
    165 }
    166 [class^="ai-icon-"], [class*=" ai-icon-"] {
    167   /* use !important to prevent issues with browser extensions that change fonts */
    168   font-family: 'ai-icon' !important;
    169   speak: never;
    170   font-style: normal;
    171   font-weight: normal;
    172   font-variant: normal;
    173   text-transform: none;
    174   line-height: 1;
    175 
    176   /* Better Font Rendering =========== */
    177   -webkit-font-smoothing: antialiased;
    178   -moz-osx-font-smoothing: grayscale;
    179 }
    180 
    181 .ai-icon-polar-area-chart:before {
    182   content: "\e905";
    183 }
    184 .ai-icon-line-chart:before {
    185   content: "\e904";
    186 }
    187 .ai-icon-pie-chart:before {
    188   content: "\e903";
    189 }
    190 .ai-icon-breadcrumbs:before {
    191   content: "\e902";
    192 }
    193 .ai-icon-bar-chart:before {
    194   content: "\e907";
    195   color: #000;
    196 }
    197 .ai-icon-toggle:before {
    198   content: "\e900";
    199 }
    200 .ai-icon-charts:before {
    201   content: "\e901";
     155.elementor-element [class^="aieaicon-"]:before, .elementor-element [class*=" aieaicon-"]:before {
     156    font-size: 38px;
     157    opacity: 0.9;
    202158}
    203159
  • ai-addons-for-elementor/trunk/assets/css/front-end/style.css

    r3142932 r3147511  
    117117    right: 0;
    118118}
     119.elementor-container {
     120    display: flex;
     121}
    119122.elementor-column-gap-extended>.elementor-row>.elementor-column>.elementor-element-populated {
    120123    padding-top: 0;
     
    201204        -webkit-transform:translate3d(0,50px,0);
    202205        transform:translate3d(0,50px,0);
     206    } to {
     207        opacity:1;
     208        -webkit-transform:none;
     209        transform:none
     210    }
     211}
     212@-webkit-keyframes aiFadeInDown {
     213    0% {
     214        opacity:0;
     215        -webkit-transform:translate3d(0,-50px,0);
     216        transform:translate3d(0,-50px,0)
     217    } to {
     218        opacity:1;
     219        -webkit-transform:none;
     220        transform:none
     221    }
     222}
     223@keyframes aiFadeInDown {
     224    0%{
     225        opacity:0;
     226        -webkit-transform:translate3d(0,-50px,0);
     227        transform:translate3d(0,-50px,0);
    203228    } to {
    204229        opacity:1;
     
    2113213823. Button
    21142139--------------------------------------------------------------*/
    2115 .ai-btn-align-right .ai-button-wrapper {
     2140.ai-btn-align-right .ai-button-wrapper, .ai-btn-align-right .ai-creative-button-wrapper {
    21162141    text-align: right;
    21172142}
    2118 .ai-btn-align-left .ai-button-wrapper {
     2143.ai-btn-align-left .ai-button-wrapper, .ai-btn-align-left .ai-creative-button-wrapper {
    21192144    text-align: left;
    21202145}
    2121 .ai-btn-align-center .ai-button-wrapper {
     2146.ai-btn-align-center .ai-button-wrapper, .ai-btn-align-center .ai-creative-button-wrapper {
    21222147    text-align: center;
    21232148}
     
    48204845.aiea-product-layout-custom .aiea-product-overlay-icons a.aiea-single-view-icon {
    48214846    padding: 0;
    4822     height: 40px;
    4823     width: 40px;
     4847    height: 50px;
     4848    width: 50px;
    48244849    text-align: center;
    4825     line-height: 40px;
    4826     border-radius: 40px;
     4850    line-height: 50px;
     4851    border-radius: 50px;
    48274852    display: inherit;
    48284853    text-decoration: none;
     
    51445169    padding: 0;
    51455170}
     5171.aiea-product-thumb-wrap .aiea-product-overlay-icons .aiea-buy-btn {
     5172    right: 0;
     5173}
    51465174.aiea-product-thumb-wrap .aiea-buy-btn .woocommerce a {
    51475175    padding-top: 18px;
     
    52305258.aiea-product-info-wrap {
    52315259    padding: 15px;
    5232     border: solid 1px #f1f1f1;
    52335260    display: block;
    52345261    margin: 0;
     
    57715798    }
    57725799}
     5800
     5801/* Weather Widget */
     5802.aiea-weather-base, .aiea-weather-temp {
     5803    display: flex;
     5804    align-items: center;
     5805}
     5806.aiea-weather-temp-f .aiea-weather-temp-celsius, .aiea-weather-temp-fahrenheit {
     5807    display: none;
     5808}
     5809.aiea-weather-temp-f .aiea-weather-temp-fahrenheit {
     5810    display: inherit;
     5811}
     5812.aiea-weather-temp-buttons > span.wob-fahrenheit, .aiea-weather-temp-f .aiea-weather-temp-buttons > span.wob-celsius {
     5813    opacity: 0.5;
     5814}
     5815.aiea-weather-temp-f .aiea-weather-temp-buttons > span.wob-fahrenheit {
     5816    opacity: 1;
     5817}
     5818.aiea-weather-temp-number > span {
     5819    font-size: 30px;
     5820    font-weight: bold;
     5821}
     5822ul.aiea-weather-temp-data > li > span:first-child {
     5823    margin-right: 8px;
     5824}
     5825.aiea-weather-name {
     5826    font-size: 28px;
     5827    font-weight: 500;
     5828}
     5829.aiea-weather-temp-buttons {
     5830    margin-top: -10px;
     5831    margin-left: 10px;
     5832}
     5833ul.aiea-weather-temp-data {
     5834    list-style: none;
     5835    padding-left: 15px;
     5836    font-size: 12px;
     5837}
     5838ul.aiea-weather-temp-data > li > span:last-child {
     5839    font-weight: bold;
     5840}
     5841.aiea-weather-temp-buttons > span {
     5842    cursor: pointer;
     5843}
     5844.aiea-weather-temp-buttons > span:last-child {
     5845    position: relative;
     5846    padding-left: 10px;
     5847}
     5848.aiea-weather-temp-buttons > span:last-child:before {
     5849    position: absolute;
     5850    content: "";
     5851    height: 15px;
     5852    width: 1px;
     5853    background: #e8dddd;
     5854    left: 4px;
     5855    top: 4px;
     5856}
     5857.aiea-weather-name .aiea-weather-prefix-title,
     5858.aiea-weather-name .aiea-weather-suffix-title {
     5859    font-size: 14px;
     5860    font-weight: normal;
     5861    margin-right: 10px;
     5862}
     5863.aiea-weather-name .aiea-weather-suffix-title {
     5864    margin-right: 0;
     5865    margin-left: 10px;
     5866}
  • ai-addons-for-elementor/trunk/assets/js/editor/control-helper.js

    r2945960 r3147511  
    33
    44    jQuery( window ).on( 'elementor:init', function() {
     5       
     6        elementor.hooks.addAction( 'panel/open_editor/widget/ai-weather', function( panel, model, view ) {
     7            const $panel_ele = $(panel.$el);
     8            const $view_ele = $(view.el);   
     9            aiea_weather_on_change( $panel_ele, $view_ele );               
     10        });
    511       
    612        var AI_Image_Select_View = elementor.modules.controls.BaseData.extend( {
     
    280286    } );
    281287   
     288    function aiea_weather_on_change( $panel_ele, $view_ele ) {
     289       
     290        $panel_ele.on( 'click', 'a.aiea-city-auto-deduct', function (e) {           
     291           
     292            e.preventDefault();
     293            let _ele = $(this);
     294            _ele.next(".ai-auto-loader").addClass("loading");
     295           
     296            $.ajax({
     297                type: "POST",
     298                url: ajaxurl,
     299                data: { action: 'aiea_get_city' },
     300                success: function (data) {
     301                    let _city = data.city;
     302                    let _city_name = _city.geoplugin_city ? _city.geoplugin_city : '';
     303                    if( _city_name ) {
     304                        _city_name = _city.geoplugin_region ? _city_name +','+ _city.geoplugin_region : _city_name;
     305                    } else {
     306                        _city_name = _city.geoplugin_region ? _city.geoplugin_region : '';
     307                    }
     308                    if( !_city_name ) {
     309                        _city_name = _city.geoplugin_countryName;
     310                    }
     311                    _ele.parents(".elementor-control-content").find('input[data-setting="city"]').val(_city_name).trigger("input");
     312                },error: function(xhr, status, error) {
     313                    console.log("failed");                     
     314                }, complete: function () {
     315                    _ele.next(".ai-auto-loader").removeClass("loading");
     316                }
     317            });
     318           
     319            return false;
     320           
     321        });
     322       
     323        $panel_ele.on( 'click', 'a.aiea-weather-reset', function (e) {         
     324           
     325            e.preventDefault();
     326            let _ele = $(this);
     327            _ele.next(".ai-auto-loader").addClass("loading");
     328           
     329            let _api_version = _ele.parents("#elementor-controls").find('select[data-setting="api_version"]').val();
     330            let _city = _ele.parents("#elementor-controls").find('input[data-setting="city"]').val();
     331           
     332            $.ajax({
     333                type: "POST",
     334                url: ajaxurl,
     335                data: { action: 'aiea_weather_reset', 'city': _city, 'version': _api_version },
     336                success: function (data) {
     337                    _ele.parents("#elementor-controls").find('input[data-setting="city"]').trigger("input");
     338                },error: function(xhr, status, error) {
     339                    console.log("failed");
     340                }, complete: function () {
     341                    _ele.next(".ai-auto-loader").removeClass("loading");
     342                }
     343            });
     344           
     345            return false;
     346           
     347        });
     348       
     349    }
    282350   
    283351}( jQuery ) );
  • ai-addons-for-elementor/trunk/assets/js/front-end/ai-front-end.js

    r3142932 r3147511  
    5959        });     
    6060    };
     61   
     62    /* Weather Handler */
     63    var aiea_weather_handler = function( $scope, $ ) {
     64        if( $scope.find(".ai-weather-wrapper").length ){
     65            $scope.find('.ai-weather-wrapper').each(function( index ) {
     66                aiea_weather( this );
     67            });
     68        }
     69    };
    6170   
    6271    /* Toggle Content Handler */
     
    99108        }
    100109    };
    101    
     110       
    102111    /* Data Table Handler */
    103112    var aiea_data_table_handler = function( $scope, $ ){
     
    200209   
    201210    $( window ).on( 'elementor/frontend/init', function() {
    202        
     211
    203212        // Common Shortcodes
    204213        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-fancy-text.default', aiea_fancy_text_handler );       
     
    209218        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-chart.default', aiea_chart_handler );
    210219        elementorFrontend.hooks.addAction( 'frontend/element_ready/toggle-content.default', aiea_toggle_content_handler );
    211         elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-tab.default', aiea_tab_handler );     
     220        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-tab.default', aiea_tab_handler );
     221        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-accordion.default', aiea_accordion_handler );
    212222        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-content-switcher.default', aiea_switcher_content_handler );
     223        elementorFrontend.hooks.addAction( 'frontend/element_ready/ai-weather.default', aiea_weather_handler );
    213224       
    214225        // Table
     
    231242        window.isEditMode = elementorFrontend.isEditMode();
    232243        if (isEditMode) {
    233                        
     244               
    234245            // custom section options show updated output while change
    235             elementor.hooks.addAction( 'panel/open_editor/section', function( panel, model, view ) {
    236                                
    237                 const $panel_ele = $(panel.$el);
    238                 const $view_ele = $(view.el);               
    239                
    240                 aiea_parallax_on_change( $panel_ele, $view_ele );
    241                                                
    242             });
     246            //elementor.hooks.addAction( 'panel/open_editor/section', aiea_open_editor_hook ); 
     247            elementor.hooks.addAction( 'panel/open_editor/container', aiea_open_editor_hook ); 
    243248
    244249            // custom panel editor hook for choose option
     
    268273   
    269274    /* AIEA js function defenitions */
    270    
     275    function aiea_open_editor_hook( panel, model, view ) {
     276                               
     277        const $panel_ele = $(panel.$el);
     278        const $view_ele = $(view.el);
     279        let _atts = model.attributes.settings.attributes;
     280        aiea_parallax_on_change( $panel_ele, $view_ele );
     281                           
     282    }
     283 
    271284    function aiea_fancy_text_view( cur_ele, index ){
    272285        var cur_ele = $(cur_ele);
     
    572585    }
    573586   
     587    function aiea_weather( _ele ) {
     588        let chart_ele = $( _ele );
     589        chart_ele.find(".aiea-weather-temp-buttons > span").on("click", function(e){
     590            e.preventDefault();
     591            let _ele = $(this);
     592            _ele.parents(".aiea-weather-temp").toggleClass("aiea-weather-temp-f");
     593            return false;
     594        });
     595    }
     596   
    574597    function aiea_line_chart_view( chart_ele ){
    575598        var chart_ele = $( chart_ele );
     
    10881111            });
    10891112        }
    1090        
     1113
    10911114        $(accordion_ele).find(".ai-accordion-header a").on( "click", function(e){
    10921115            e.preventDefault();
  • ai-addons-for-elementor/trunk/core/admin/ai-settings.php

    r3142081 r3147511  
    1717        add_action('wp_ajax_aiea_prompt_ajax', [ $this, 'aiea_prompt' ] );
    1818       
    19         add_action('wp_ajax_aiea_save_settings', [ $this, 'save_data' ] );
     19        add_action('wp_ajax_aiea_get_city', [ $this, 'get_city' ] );
     20       
     21        add_action('wp_ajax_aiea_weather_reset', [ $this, 'weather_reset' ] );
     22       
     23        add_action('wp_ajax_aiea_widgets_save', [ $this, 'save_widgets' ] );
     24       
     25        add_action('wp_ajax_aiea_settings_save', [ $this, 'save_settings' ] );
    2026       
    2127        add_action( 'admin_menu', [ $this, 'admin_menu' ] );
     
    5157    }
    5258   
    53     public function save_data() {
    54        
    55         if(
    56             ! ( isset( $_POST['aiea_save_widgets'] ) || ! wp_verify_nonce( $_POST['aiea_save_widgets'], 'inc-save-widgets)(*^&*&^#' ) ) ||
    57             ! ( isset( $_POST['aiea_save_modules'] ) || ! wp_verify_nonce( $_POST['aiea_save_modules'], 'inc-save-modules)(*^&*&^#' ) ) ||
    58             ! ( isset( $_POST['aiea_save_settings'] ) || ! wp_verify_nonce( $_POST['aiea_save_settings'], 'inc-save-settings)(*^&*&^#' ) )
    59         ) return wp_die( "f***" );
    60        
     59    public function save_widgets() {
     60
     61        if( !isset( $_POST['aiea_save_widgets'] ) || ( isset( $_POST['aiea_save_widgets'] ) && !wp_verify_nonce( $_POST['aiea_save_widgets'], 'inc-save-widgets)(*^&*&^#' ) ) ) return wp_die( "f***" );
     62       
     63
    6164        $aiea_shortcodes = $aiea_modules = $aiea_options = '';
    6265       
    63         if( isset( $_POST['aiea_save_widgets'] ) ) {
    64             update_option( 'aiea_shortcodes', '' );         
    65         }
    66         if( isset( $_POST['aiea_save_modules'] ) ) {
    67             update_option( 'aiea_modules', '' );                       
    68         }
    69         if( isset( $_POST['aiea_save_settings'] ) ) {
    70             update_option( 'aiea_options', '' );           
    71         }
    72        
     66        // reset existing values
     67        update_option( 'aiea_shortcodes', '' );
     68        update_option( 'aiea_modules', '' );   
     69       
     70        // save new values
    7371        if( isset( $_POST['aiea_shortcodes'] ) ) {
    7472            $aiea_shortcodes = array_map( [ $this, 'sanitize_data' ], (array)$_POST['aiea_shortcodes'] );
    7573            update_option( 'aiea_shortcodes', $aiea_shortcodes );
    76         } elseif( isset( $_POST['aiea_options'] ) ) {
    77             $aiea_options = array_map( [ $this, 'sanitize_data' ], (array)$_POST['aiea_options'] );
    78             update_option( 'aiea_options', $aiea_options );
    79         } elseif( isset( $_POST['aiea_modules'] ) ) {
     74        }
     75        if( isset( $_POST['aiea_modules'] ) ) {
    8076            $aiea_modules = array_map( [ $this, 'sanitize_data' ], (array)$_POST['aiea_modules'] );
    8177            update_option( 'aiea_modules', $aiea_modules );
    8278        }
     79       
     80        wp_send_json( array( 'status' => 'success' ) );
     81       
     82    }
     83   
     84    public function save_settings() {
     85
     86        if( !isset( $_POST['aiea_save_settings'] ) || ( isset( $_POST['aiea_save_settings'] ) && !wp_verify_nonce( $_POST['aiea_save_settings'], 'inc-save-settings)(*^&*&^#' ) ) ) return wp_die( "f***" );
     87       
     88        $aiea_options = '';
     89        update_option( 'aiea_options', '' );       
     90       
     91        $aiea_options = array_map( [ $this, 'sanitize_data' ], (array)$_POST['aiea_options'] );
     92        update_option( 'aiea_options', $aiea_options );
    8393       
    8494        wp_send_json( array( 'status' => 'success' ) );
     
    93103            'manage_options',
    94104            'ai-addons',
    95             'aiea_elementor_addon_admin_page',
     105            [ $this, 'aiea_dashboard' ], //'aiea_elementor_addon_admin_page',
    96106            AIEA_URL . '/assets/images/logo-icon.svg',
    97107            57.99
     
    109119    }
    110120   
     121    public function aiea_dashboard() {
     122       
     123        require_once ( AIEA_DIR . 'core/admin/parts/dashboard.php' );
     124       
     125    }
     126   
    111127    function framework_scripts() {
    112128       
    113129        if( isset( $_GET['page'] ) && ( $_GET['page'] == 'ai-addons' ) ){
    114             wp_enqueue_style( 'ai-admin', AIEA_URL . '/core/admin/assets/css/ai-admin-page.css', array(), '1.0', 'all' );
     130            wp_enqueue_style( 'ai-admin', AIEA_URL . '/core/admin/assets/css/ai-admin-page.css', array(), '1.0', 'all' );           
    115131            wp_enqueue_style( 'bootstrap-icons', AIEA_URL . 'assets/css/front-end/bootstrap-icons.css', false, '1.0' );
    116             wp_enqueue_script( 'ai-admin-dashboard-menu', AIEA_URL . 'core/admin/assets/js/admin-dahsboard-menu.js', array( 'jquery' ), '1.0', true );
    117         }
    118         wp_enqueue_script( 'ai-framework-admin', AIEA_URL . 'core/admin/assets/js/ai-admin-script.js', array( 'jquery' ), '1.0', true );
     132            wp_enqueue_style( 'aiea-dashboard-font', AIEA_URL . '/core/admin/assets/css/dashboard-font.css', array(), '1.0', 'all' );
     133            wp_enqueue_style( 'aiea-dashboard', AIEA_URL . '/core/admin/assets/css/dashboard.css', array(), '1.0', 'all' );
     134            wp_enqueue_script( 'aiea-dashboard', AIEA_URL . 'core/admin/assets/js/dahsboard.js', array( 'jquery' ), '1.0', true );
     135        }
     136        //wp_enqueue_script( 'ai-framework-admin', AIEA_URL . 'core/admin/assets/js/ai-admin-script.js', array( 'jquery' ), '1.0', true );
    119137       
    120138    }
     
    155173            $api_url = 'https://'. $custom_openai_domain .'/v1/completions';
    156174           
    157             if( $aiea_model == 'gpt-3.5-turbo' ) {
    158                 $aiea_args['model'] = 'gpt-3.5-turbo';
    159                 $aiea_args['messages'] = array( array( "role" => "user", "content" => addslashes( $question ) ) );
    160                 $api_url = 'https://'. $custom_openai_domain .'/v1/chat/completions';
    161             } else {
    162                 $aiea_args['model'] = 'text-davinci-003';
    163                 $aiea_args['prompt'] = addslashes( $question );
    164             }
     175            $aiea_args['model'] = $aiea_model;
     176            $aiea_args['messages'] = array( array( "role" => "user", "content" => addslashes( $question ) ) );
     177            $api_url = 'https://'. $custom_openai_domain .'/v1/chat/completions';
    165178           
    166179            $openaiea_json_args = json_encode( $aiea_args );
     
    186199                    if( !empty( $choices ) && isset( $choices[0] ) ) {
    187200                        $choices_arr = $choices[0];
    188                         if( $aiea_model == 'gpt-3.5-turbo' ) {
    189                             if( !empty( $choices_arr ) && isset( $choices_arr['message'] ) ) {
    190                                 $content_arr = $choices_arr['message'];
    191                                 if( !empty( $content_arr ) && is_array( $content_arr ) && isset( $content_arr['content'] ) ) {
    192                                     $result['response'] = $content_arr['content'];
    193                                 }
    194                             }
    195                         } else {
    196                             if( !empty( $choices_arr ) && isset( $choices_arr['text'] ) ) {
    197                                 $final_text = ltrim( $choices_arr['text'], '"' );
    198                                 $final_text = rtrim( $choices_arr['text'], '"' );
    199                                 $result['response'] = $final_text;
     201                        if( !empty( $choices_arr ) && isset( $choices_arr['message'] ) ) {
     202                            $content_arr = $choices_arr['message'];
     203                            if( !empty( $content_arr ) && is_array( $content_arr ) && isset( $content_arr['content'] ) ) {
     204                                $result['response'] = $content_arr['content'];
    200205                            }
    201206                        }
     
    210215       
    211216        wp_send_json( array( 'error' => '!text should be filled out' ) );
     217    }
     218   
     219    public function get_city() {
     220       
     221        $result = [ 'status' => 'failed', 'city' => '' ];
     222       
     223        if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
     224            $ip_address = $_SERVER['HTTP_CLIENT_IP'];
     225        } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
     226            $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
     227        } else {
     228            $ip_address = $_SERVER['REMOTE_ADDR'];
     229        }
     230       
     231        if( $ip_address == '::1' ) {
     232            $ip_address = $this->get_my_ip();
     233        }
     234       
     235        $response = wp_remote_get( 'http://www.geoplugin.net/json.gp?ip='. $ip_address,
     236            array(
     237                'timeout'     => 120,
     238                'httpversion' => '1.1',
     239                'headers' => array(
     240                    'Accept' => 'application/json',
     241                )
     242            )
     243        );
     244        if ( ( !is_wp_error($response)) && (200 === wp_remote_retrieve_response_code( $response ) ) ) {
     245            $responseBody = json_decode($response['body']);
     246            $result = [ 'status' => 'success', 'city' => $responseBody ];
     247        }
     248       
     249        wp_send_json( $result );
     250       
     251    }
     252   
     253    public function get_my_ip() {
     254       
     255        $response = wp_remote_get( 'http://ipecho.net/plain',
     256            array(
     257                'timeout'     => 120,
     258                'httpversion' => '1.1'
     259            )
     260        );
     261       
     262        if ( ( !is_wp_error($response)) && (200 === wp_remote_retrieve_response_code( $response ) ) ) {
     263            return $response['body'];
     264        }
     265       
     266        return false;
     267       
     268    }
     269   
     270    public function weather_reset() {
     271       
     272        $api_version = isset( $_POST['version'] ) ? $_POST['version'] : '';
     273        $city = isset( $_POST['city'] ) ? $_POST['city'] : '';
     274        $api_key = aiea_addon_base()->aiea_options('open-weather-api');
     275       
     276        $api_version_key = $api_version ? str_replace( ".", "", $api_version ) : '';
     277        $city_slug = sanitize_title( $city );
     278        $transient_name = sprintf( 'aiea_weather_%s_%s_%s', $api_key, $api_version_key, $city_slug );
     279
     280        delete_transient( $transient_name );
     281       
     282        wp_send_json( [ 'status' => 'success' ] );
     283       
     284    }
     285   
     286    public static function get_version() {
     287       
     288        $plugin_data = get_plugin_data( AIEA_BASE );
     289        return $plugin_data['Version'];
     290       
    212291    }
    213292           
     
    535614                               
    536615                                    <?php
     616                                   
     617                                        wp_nonce_field( 'inc-save-modules)(*^&*&^#', 'aiea_save_modules' );
     618                                   
    537619                                        $row = 1; $cols = 4; $saved_val = 'off';
    538620                                        foreach( $available_modules as $key => $widget ){
     
    608690                                    <div class="inc-settings-wrap">
    609691                                        <div class="inc-settings-header d-flex">                                       
    610                                             <label class="inc-settings-heading"><?php esc_html_e( 'Google Map API', 'ai-addons' ); ?></label>
     692                                            <label><?php esc_html_e( 'Google Map API', 'ai-addons' ); ?></label>
    611693                                        </div>
    612694                                        <div class="show-password-wrap">
    613695                                            <input type="password" class="attr-form-control" name="aiea_options[google-map-api]" placeholder="Google map api key here.." value="<?php echo esc_attr( $google_api ); ?>" autocomplete="off">
    614                                             <span class="icon-show-password">
     696                                            <span class="icon-show-password"><i class="aieaicon-eye"></i></span>
    615697                                        </div>
    616698                                        <div class="inc-settings-description">
     
    620702                                    <div class="inc-settings-wrap">
    621703                                        <div class="inc-settings-header d-flex">                                       
    622                                             <label class="inc-settings-heading"><?php esc_html_e( 'OpenAI API Key', 'ai-addons' ) ?></label>
     704                                            <label><?php esc_html_e( 'OpenAI API Key', 'ai-addons' ) ?></label>
    623705                                        </div>
    624706                                        <div class="show-password-wrap">
    625707                                            <input type="password" class="attr-form-control" name="aiea_options[openai-api]" placeholder="<?php esc_html_e( 'Paste OpenAI API key here..', 'ai-addons' ) ?>" value="<?php echo esc_attr( $openaiea_api ); ?>" autocomplete="off">
    626                                             <span class="icon-show-password">
     708                                            <span class="icon-show-password"><i class="aieaicon-eye"></i></span>
    627709                                        </div>
    628710                                        <div class="inc-settings-description">
     
    632714                                    <div class="inc-settings-wrap">
    633715                                        <div class="inc-settings-header d-flex">                                       
    634                                             <label class="inc-settings-heading"><?php esc_html_e( 'OpenAI Model', 'ai-addons' ) ?></label>
     716                                            <label><?php esc_html_e( 'OpenAI Model', 'ai-addons' ) ?></label>
    635717                                        </div>
    636718                                        <?php
  • ai-addons-for-elementor/trunk/core/admin/assets/css/admin-style.css

    r3142081 r3147511  
    285285    font-weight: bold;
    286286}
     287.aiea-hidden {
     288    border: 0;
     289    clip: rect(1px, 1px, 1px, 1px);
     290    clip-path: inset(50%);
     291    height: 1px;
     292    margin: -1px;
     293    overflow: hidden;
     294    padding: 0;
     295    position: absolute;
     296    width: 1px;
     297    word-wrap: normal !important;
     298}
     299h1.aiea-heading {
     300    text-align: center;
     301    font-weight: bold;
     302}
  • ai-addons-for-elementor/trunk/core/admin/assets/css/ai-admin-page.css

    r3140123 r3147511  
    785785}
    786786.inc-settings-header {
    787     margin-bottom: 30px;
     787    margin-bottom: 15px;
     788}
     789.inc-settings-header label {
     790    font-weight: bold;
     791}
     792.inc-settings-description {
     793    margin-top: 8px;
    788794}
    789795.inc-settings-wrap input, .inc-settings-wrap select {
     
    10191025    right: 5px;
    10201026    transform: translateY(-50%);
    1021 }
    1022 span.icon-show-password:before {
    1023     content: "\f177";
    1024     font-family: dashicons;
    1025     font-weight: 400;
    1026     font-size: 20px;
    1027 }
    1028 span.icon-show-password.shown:before {
    1029     content: "\f530";
     1027    color: #111;
     1028}
     1029span.icon-show-password.shown > i:before {
     1030    content: "\e907";
    10301031}
    10311032
  • ai-addons-for-elementor/trunk/includes/ai-gateway.php

    r3142932 r3147511  
    153153                'name'       => 'ai-tooltip',
    154154                'title'      => __( 'Tooltip', 'ai-addons' ),
    155                 'icon'       => 'ai-default-icon eicon-notes',
     155                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('tooltip'),
    156156                'categories' => '["ai-pro-elements"]',
    157157            ],
     
    159159                'name'       => 'ai-image-box',
    160160                'title'      => __( 'Image Box', 'ai-addons' ),
    161                 'icon'       => 'ai-default-icon eicon-image-box',
     161                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-box'),
    162162                'categories' => '["ai-pro-elements"]',
    163163            ],
     
    165165                'name'       => 'ai-flip-box',
    166166                'title'      => __( 'Flip Box', 'ai-addons' ),
    167                 'icon'       => 'ai-default-icon eicon-flip-box',
     167                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('flip-box'),
    168168                'categories' => '["ai-pro-elements"]',
    169169            ],
     
    171171                'name'       => 'ai-day-counter',
    172172                'title'      => __( 'Day Counter', 'ai-addons' ),
    173                 'icon'       => 'ai-default-icon eicon-countdown',
     173                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('day-counter'),
    174174                'categories' => '["ai-pro-elements"]',
    175175            ],
     
    177177                'name'       => 'ai-pricing-table',
    178178                'title'      => __( 'Pricing Table', 'ai-addons' ),
    179                 'icon'       => 'ai-default-icon eicon-price-table',
     179                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('pricing-table'),
    180180                'categories' => '["ai-pro-elements"]',
    181181            ],
     
    183183                'name'       => 'ai-timeline',
    184184                'title'      => __( 'Timeline', 'ai-addons' ),
    185                 'icon'       => 'ai-default-icon  eicon-time-line',
     185                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('timeline'),
    186186                'categories' => '["ai-pro-elements"]',
    187187            ],
     
    189189                'name'       => 'ai-timeline-slide',
    190190                'title'      => __( 'Timeline Slide', 'ai-addons' ),
    191                 'icon'       => 'ai-default-icon  eicon-slides',
     191                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('timeline-slide'),
    192192                'categories' => '["ai-pro-elements"]',
    193193            ],
     
    195195                'name'       => 'ai-offcanvas',
    196196                'title'      => __( 'Offcanvas', 'ai-addons' ),
    197                 'icon'       => 'ai-default-icon eicon-sidebar',
     197                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('offcanvas'),
    198198                'categories' => '["ai-pro-elements"]',
    199199            ],
     
    201201                'name'       => 'ai-image-grid',
    202202                'title'      => __( 'Image Grid', 'ai-addons' ),
    203                 'icon'       => 'ai-default-icon eicon-gallery-grid',
     203                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-grid'),
    204204                'categories' => '["ai-pro-elements"]',
    205205            ],
     
    207207                'name'       => 'ai-mailchimp',
    208208                'title'      => __( 'Mailchimp', 'ai-addons' ),
    209                 'icon'       => 'ai-default-icon eicon-mailchimp',
     209                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('mailchimp'),
    210210                'categories' => '["ai-pro-elements"]',
    211211            ],
     
    213213                'name'       => 'ai-modal-popup',
    214214                'title'      => __( 'Modal Popup', 'ai-addons' ),
    215                 'icon'       => 'ai-default-icon eicon-slider-vertical',
     215                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('modal-popup'),
    216216                'categories' => '["ai-pro-elements"]',
    217217            ],
     
    219219                'name'       => 'image-before-after',
    220220                'title'      => __( 'Before After Image', 'ai-addons' ),
    221                 'icon'       => 'ai-default-icon eicon-image-before-after',
     221                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-before-after'),
    222222                'categories' => '["ai-pro-elements"]',
    223223            ],
     
    225225                'name'       => 'ai-image-accordion',
    226226                'title'      => __( 'Image Accordion', 'ai-addons' ),
    227                 'icon'       => 'ai-default-icon eicon-accordion',
     227                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-accordion'),
    228228                'categories' => '["ai-pro-elements"]',
    229229            ],
     
    231231                'name'       => 'ai-image-hotspot',
    232232                'title'      => __( 'Image Hotspot', 'ai-addons' ),
    233                 'icon'       => 'ai-default-icon eicon-image-hotspot',
     233                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-hotspot'),
    234234                'categories' => '["ai-pro-elements"]',
    235235            ],
     
    237237                'name'       => 'ai-image-hover',
    238238                'title'      => __( 'Image Hover', 'ai-addons' ),
    239                 'icon'       => 'ai-default-icon eicon-image-rollover',
     239                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('image-hover'),
    240240                'categories' => '["ai-pro-elements"]',
    241241            ],
     
    243243                'name'       => 'ai-video-popup',
    244244                'title'      => __( 'Video Popup', 'ai-addons' ),
    245                 'icon'       => 'ai-default-icon eicon-video-playlist',
     245                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('video-popup'),
    246246                'categories' => '["ai-pro-elements"]',
    247247            ],
     
    249249                'name'       => 'ai-portfolio',
    250250                'title'      => __( 'Portfolio', 'ai-addons' ),
    251                 'icon'       => 'ai-default-icon eicon-gallery-masonry',
     251                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('portfolio'),
    252252                'categories' => '["ai-pro-elements"]',
    253253            ],
     
    255255                'name'       => 'ai-products-slider',
    256256                'title'      => __( 'Products Slider', 'ai-addons' ),
    257                 'icon'       => 'ai-default-icon eicon-product-images',
     257                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('product-slider'),
    258258                'categories' => '["ai-pro-elements"]',
    259259            ],
     
    261261                'name'       => 'ai-products-category',
    262262                'title'      => __( 'Products Category', 'ai-addons' ),
    263                 'icon'       => 'ai-default-icon eicon-product-categories',
     263                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('products-category'),
    264264                'categories' => '["ai-pro-elements"]',
    265265            ],
     
    267267                'name'       => 'ai-products-category-slider',
    268268                'title'      => __( 'Products Category Slider', 'ai-addons' ),
    269                 'icon'       => 'ai-default-icon eicon-product-categories',
     269                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('products-category-slider'),
    270270                'categories' => '["ai-pro-elements"]',
    271271            ],
     
    273273                'name'       => 'ai-pretty-hover',
    274274                'title'      => __( 'Pretty Hover', 'ai-addons' ),
    275                 'icon'       => 'ai-default-icon eicon-image-bold',
     275                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('pretty-hover'),
    276276                'categories' => '["ai-pro-elements"]',
    277277            ],
     
    279279                'name'       => 'ai-posts-magazine',
    280280                'title'      => __( 'Magazine Layout', 'ai-addons' ),
    281                 'icon'       => 'ai-default-icon eicon-inner-section',
     281                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('posts-magazine'),
    282282                'categories' => '["ai-pro-elements"]',
    283283            ],
     
    285285                'name'       => 'ai-breadcrumbs',
    286286                'title'      => __( 'Breadcrumb', 'ai-addons' ),
    287                 'icon'       => 'ai-default-icon eicon-inner-section',
     287                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('breadcrumbs'),
    288288                'categories' => '["ai-pro-elements"]',
    289289            ],
     
    291291                'name'       => 'ai-line-chart',
    292292                'title'      => __( 'Line Chart', 'ai-addons' ),
    293                 'icon'       => 'ai-default-icon ai-icon-line-chart',
     293                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('line-chart'),
    294294                'categories' => '["ai-pro-elements"]',
    295295            ],
     
    297297                'name'       => 'ai-bar-chart',
    298298                'title'      => __( 'Bar Chart', 'ai-addons' ),
    299                 'icon'       => 'ai-default-icon ai-icon-bar-chart',
     299                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('bar-chart'),
    300300                'categories' => '["ai-pro-elements"]',
    301301            ],
     
    303303                'name'       => 'ai-polar-area-chart',
    304304                'title'      => __( 'Polar Area Chart', 'ai-addons' ),
    305                 'icon'       => 'ai-default-icon ai-icon-polar-area-chart',
     305                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('polar-area-chart'),
    306306                'categories' => '["ai-pro-elements"]',
    307307            ],
     
    309309                'name'       => 'ai-pie-chart',
    310310                'title'      => __( 'Pie Chart', 'ai-addons' ),
    311                 'icon'       => 'ai-default-icon ai-icon-pie-chart',
     311                'icon'       => 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('pie-chart'),
    312312                'categories' => '["ai-pro-elements"]',
    313313            ],
     
    321321    public function editor_enqueue_scripts(){
    322322       
     323        wp_enqueue_style( 'aiea-font', AIEA_URL .'core/admin/assets/css/dashboard-font.css', array(), '1.0', 'all');
    323324        wp_enqueue_style( 'ai-editor', AIEA_URL .'assets/css/editor/editor-style.css', array(), '1.0', 'all');
    324325       
     
    391392       
    392393        $module_args = [
    393             $script_args[] = [ 'key' => 'jarallax', 'file' => 'jarallax.min.js', 'lib' => array('jquery'), 'version' => '2.1.3' ],
    394            
     394            [ 'key' => 'jarallax', 'file' => 'jarallax.min.js', 'lib' => array('jquery'), 'version' => '2.1.3' ],
     395            [ 'key' => 'ai-front-end', 'file' => 'ai-front-end.js', 'lib' => array('jquery'), 'version' => '1.0' ]
    395396        ];
    396397       
     
    428429            $shortcode_emty_stat = true;
    429430        }
    430                
     431                       
    431432        foreach( $available_shortcodes as $key => $widget ){
    432433           
     
    446447               
    447448                if( $saved_val ){
    448                    
     449                                       
    449450                    require_once( AIEA_DIR . 'includes/widgets/'. esc_attr( $key ) .'.php' );
    450451                   
  • ai-addons-for-elementor/trunk/includes/base/addon-base.php

    r2945960 r3147511  
    8282            'pretty-hover' => [ 'url' => 'https://aiaddons.ai/pretty-hover-demo/', 'pro' => true, 'title' => esc_html__( 'Elementor Pretty Hover Widget', 'ai-addons' ) ],
    8383            'image-accordion' => [ 'url' => 'https://aiaddons.ai/image-accordion-demo/', 'pro' => true, 'title' => esc_html__( 'Elementor Image Accordion Widget', 'ai-addons' ) ],
     84            'weather' => [ 'url' => 'https://aiaddons.ai/weather-demo/', 'pro' => false, 'title' => esc_html__( 'Elementor Weather Widget', 'ai-addons' ) ],
    8485           
    8586            'team'              => [ 'url' => 'https://aiaddons.ai/team/', 'pro' => false, 'title' => esc_html__( 'Elementor Team Widget', 'ai-addons' ) ],
     
    100101            'ninja-form'    => [ 'url' => 'https://aiaddons.ai/ninja-form-demo/', 'pro' => false, 'title' => esc_html__( 'Elementor Ninja Form Widget', 'ai-addons' ) ],
    101102            'wp-form'   => [ 'url' => 'https://aiaddons.ai/wp-form-demo/', 'pro' => false, 'title' => esc_html__( 'Elementor WP Form Widget', 'ai-addons' ) ],
    102             'posts-magazine'    => [ 'url' => 'https://aiaddons.ai/post-magazine-demo/', 'pro' => true, 'title' => esc_html__( 'Elementor Posts Magazine Widget', 'ai-addons' ) ],         
    103103           
    104104            //Post Widget
     
    202202            break;
    203203            case "team":
    204                 $content = 'Get team widget now for Elementor along with a fully responsive & mobile friendly interface to help you manage your client testimonials. Never waste your time finding widgets, get everything you need in one place.';
     204                $content = 'Get team widget now for Elementor along with a fully responsive & mobile friendly interface to help you manage your client teams. Never waste your time finding widgets, get everything you need in one place.';
    205205            break;
    206206            case "testimonial":
    207207                $content = 'Get testimonial widget now for Elementor along with a fully responsive & mobile friendly interface to help you manage your client testimonials. Never waste your time finding widgets, get everything you need in one place.';
     208            break;
     209            case "pretty-hover":
     210                $content = 'We bring most ai and awesome Pretty Hover Effects.';
    208211            break;
    209212        }
     
    358361    }
    359362   
     363    function widget_icon_classes( $key = '' ) {
     364       
     365        $icon_classes = [
     366            'ai-title' => 'aieaicon-title',
     367            'ai-content' => 'aieaicon-content',
     368            'fancy-text' => 'aieaicon-fancy-text',
     369            'tooltip' => 'aieaicon-tool-tip',
     370            'contact-info' => 'aieaicon-contact-info',
     371            'google-map' => 'aieaicon-google-map',
     372            'button' => 'aieaicon-button',
     373            'creative-button' => 'aieaicon-creative-button',
     374            'icon-list' => 'aieaicon-icon-list',
     375            'icon' => 'aieaicon-icon',
     376            'icon-box' => 'aieaicon-icon-box',
     377            'image-box' => 'aieaicon-image',
     378            'feature-box' => 'aieaicon-featured-box',
     379            'flip-box' => 'aieaicon-flip-box',
     380            'section-title' => 'aieaicon-section-title',
     381            'chart' => 'aieaicon-charts',
     382            'bar-chart' => 'aieaicon-bar-chart',
     383            'line-chart' => 'aieaicon-line-chart',
     384            'polar-area-chart' => 'aieaicon-polar-chart',
     385            'pie-chart' => 'aieaicon-pie-chart',
     386            'circle-progress' => 'aieaicon-circle-progress',
     387            'progress-bar' => 'aieaicon-progress-bar',
     388            'counter' => 'aieaicon-counter',
     389            'day-counter' => 'aieaicon-day-counter',
     390            'pricing-table' => 'aieaicon-pricing-table',
     391            'timeline' => 'aieaicon-timeline',
     392            'timeline-slide' => 'aieaicon-timeline-slide',
     393            'offcanvas' => 'aieaicon-offcanvas',
     394            'image-grid' => 'aieaicon-image-grid',
     395            'social-icons' => 'aieaicon-social-links',
     396            'social-share' => 'aieaicon-social-share',
     397            'modal-popup' => 'aieaicon-pop-up',
     398            'mailchimp' => 'aieaicon-mailchimp',
     399            'image-before-after' => 'aieaicon-before-after',
     400            'image-hotspot' => 'aieaicon-image-hotspot',
     401            'image-hover' => 'aieaicon-image-hover',
     402            'pretty-hover' => 'aieaicon-pretty-hover',
     403            'image-accordion' => 'aieaicon-image-accordion',
     404            'team' => 'aieaicon-team',
     405            'testimonial' => 'aieaicon-testimonial',
     406            'portfolio' => 'aieaicon-portfolio',
     407            'accordion' => 'aieaicon-accordion',
     408            'tab' => 'aieaicon-tab',
     409            'video-popup' => 'aieaicon-video-popup',
     410            'content-carousel' => 'aieaicon-carousel',
     411            'content-switcher' => 'aieaicon-content-switcher',
     412            'toggle-content' => 'aieaicon-toggle-content',
     413            'data-table' => 'aieaicon-table',
     414            'contact-form-7' => 'aieaicon-form',
     415            'ninja-form' => 'aieaicon-form',
     416            'wp-form' => 'aieaicon-form',
     417            'posts-magazine' => 'aieaicon-magazine',
     418            'posts' => 'aieaicon-post',
     419            'product' => 'aieaicon-product',
     420            'product-slider' => 'aieaicon-product-slider',
     421            'products-category' => 'aieaicon-product-category',
     422            'products-category-slider' => 'aieaicon-product-category-slider',
     423            'product-single' => 'aieaicon-single-product',
     424            'logo' => 'aieaicon-logo',
     425            'menu' => 'aieaicon-menu',
     426            'search' => 'aieaicon-search',
     427            'copyright' => 'aieaicon-copyright',
     428            'page-title' => 'aieaicon-page-title',
     429            'post-title' => 'aieaicon-post-title',
     430            'archive-title' => 'aieaicon-archive-title',
     431            'site-title' => 'aieaicon-site-title',
     432            'breadcrumbs' => 'aieaicon-breadcrumb',
     433            'smoke' => 'aieaicon-smoke',
     434            'rain-drops' => 'aieaicon-rain-drops',
     435            'parallax' => 'aieaicon-parallax',
     436            'float-image' => 'aieaicon-float',
     437            'header-footer' => 'aieaicon-header-footer',
     438            'mega-menu' => 'aieaicon-maga-menu',
     439            'weather' => 'aieaicon-weather'
     440        ];
     441       
     442        if( empty( $key ) ) return $icon_classes;
     443       
     444        return isset( $icon_classes[$key] ) ? $icon_classes[$key] : '';
     445       
     446    }
     447   
    360448}
    361449
  • ai-addons-for-elementor/trunk/includes/modules/section.php

    r3142932 r3147511  
    6969    public function custom_section_print_template( $template, $widget ) {
    7070       
    71         //if( $widget->get_name() != 'section' ) return $template;
    72        
    73         $aiea_pointer = '<i class="ai-section-pointer" data-section-id="{{ view.getID() }}" data-ai="{{ JSON.stringify(settings) }}"></i>';
     71        //if( $widget->get_name() != 'section' || $widget->get_name() != 'container' ) return $template;
     72       
     73        $aiea_pointer = '<i class="ai-section-pointer screen-reader-text" data-section-id="{{ view.getID() }}" data-ai="{{ JSON.stringify(settings) }}"></i>';
    7474        return $template . $aiea_pointer;
    7575       
  • ai-addons-for-elementor/trunk/includes/traits/helper.php

    r2913771 r3147511  
    77} // Exit if accessed directly
    88
    9 trait Post_Helper
    10 {
     9class Post_Helper {
    1110    /**
    1211     * Get all types of post.
  • ai-addons-for-elementor/trunk/includes/widgets/accordion.php

    r2966856 r3147511  
    5757     */
    5858    public function get_icon() {
    59         return 'ai-default-icon eicon-accordion';
     59        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('accordion');
    6060    }
    6161
  • ai-addons-for-elementor/trunk/includes/widgets/ai-content.php

    r2938131 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon ai-icon-toggle';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('ai-content');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/ai-title.php

    r2966856 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon ai-icon-toggle';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('ai-title');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/archive-title.php

    r3056115 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-archive-title';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('archive-title');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/button.php

    r2966856 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-button';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('button');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/chart.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon ai-icon-charts'; //eicon-dot-circle-o
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('chart');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/circle-progress.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-counter-circle';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('circle-progress');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/contact-form-7.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-form-horizontal';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('contact-form-7');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/contact-info.php

    r3140123 r3147511  
    7272     */
    7373    public function get_icon() {
    74         return 'ai-default-icon eicon-post-info';
     74        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('contact-info');
    7575    }
    7676
  • ai-addons-for-elementor/trunk/includes/widgets/content-carousel.php

    r2966856 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon  eicon-carousel-loop';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('content-carousel');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/content-switcher.php

    r3142081 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-slides';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('content-switcher');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/copyright.php

    r2938131 r3147511  
    5252     */
    5353    public function get_icon() {
    54         return "ai-default-icon eicon-footer";
     54        return "ai-default-icon ". aiea_addon_base()->widget_icon_classes('copyright');
    5555    }
    5656
  • ai-addons-for-elementor/trunk/includes/widgets/counter.php

    r3142081 r3147511  
    5959     */
    6060    public function get_icon() {
    61         return 'ai-default-icon eicon-counter';
     61        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('counter');
    6262    }
    6363
  • ai-addons-for-elementor/trunk/includes/widgets/creative-button.php

    r2966856 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-button';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('creative-button');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/data-table.php

    r2966856 r3147511  
    5959     */
    6060    public function get_icon() {
    61         return 'ai-default-icon eicon-table';
     61        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('data-table');
    6262    }
    6363   
  • ai-addons-for-elementor/trunk/includes/widgets/fancy-text.php

    r3140123 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-animation-text';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('fancy-text');
    6161    }
    6262   
  • ai-addons-for-elementor/trunk/includes/widgets/feature-box.php

    r3142081 r3147511  
    6666     */
    6767    public function get_icon() {
    68         return 'ai-default-icon eicon-info-box';
     68        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('feature-box');
    6969    }
    7070
  • ai-addons-for-elementor/trunk/includes/widgets/google-map.php

    r2966856 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-google-maps';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('google-map');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/icon-box.php

    r2966856 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-icon-box';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('icon-box');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/icon-list.php

    r2966856 r3147511  
    5757     */
    5858    public function get_icon() {
    59         return 'ai-default-icon eicon-bullet-list';
     59        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('icon-list');
    6060    }
    6161
  • ai-addons-for-elementor/trunk/includes/widgets/icon.php

    r3142081 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-favorite';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('icon');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/logo.php

    r2938131 r3147511  
    5252     */
    5353    public function get_icon() {
    54         return "ai-default-icon eicon-logo";
     54        return "ai-default-icon ". aiea_addon_base()->widget_icon_classes('logo');
    5555    }
    5656
  • ai-addons-for-elementor/trunk/includes/widgets/menu.php

    r2938131 r3147511  
    5252     */
    5353    public function get_icon() {
    54         return "ai-default-icon eicon-menu-bar";
     54        return "ai-default-icon ". aiea_addon_base()->widget_icon_classes('menu');
    5555    }
    5656   
  • ai-addons-for-elementor/trunk/includes/widgets/ninja-form.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-form-horizontal';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('ninja-form');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/page-title.php

    r2941358 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-post-title';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('page-title');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/post-title.php

    r2941358 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-post-title';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('post-title');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/posts.php

    r2966856 r3147511  
    5959     */
    6060    public function get_icon() {
    61         return 'ai-default-icon eicon-post';
     61        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('posts');
    6262    }
    6363
  • ai-addons-for-elementor/trunk/includes/widgets/product-single.php

    r2966856 r3147511  
    6161     */
    6262    public function get_icon() {
    63         return 'ai-default-icon eicon-cart';
     63        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('product-single');
    6464    }
    6565
     
    103103   
    104104    public function aiea_woo_quick_view_scripts() {
     105       
     106        if( !class_exists( 'WooCommerce' ) ) return;
     107       
    105108        wp_enqueue_script( 'wc-add-to-cart-variation' );
    106109        if( version_compare( WC()->version, '3.0.0', '>=' ) ) {
     
    10361039            Group_Control_Typography::get_type(),
    10371040            [
    1038                 'name'          => 'price_typography',
     1041                'name'          => 'desc_typography',
    10391042                'selector'      => '{{WRAPPER}} .aiea-product-desc'
    10401043            ]
     
    14471450        );     
    14481451        $this->add_control(
    1449             'off_text_color',
     1452            'tag_text_color',
    14501453            [
    14511454                'label' => esc_html__( 'Text Color', 'ai-addons' ),
  • ai-addons-for-elementor/trunk/includes/widgets/product.php

    r2966856 r3147511  
    6161     */
    6262    public function get_icon() {
    63         return 'ai-default-icon eicon-products';
     63        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('product');
    6464    }
    6565
  • ai-addons-for-elementor/trunk/includes/widgets/progress-bar.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-skill-bar';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('progress-bar');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/search.php

    r2966856 r3147511  
    5353     */
    5454    public function get_icon() {
    55         return "ai-default-icon eicon-search";
     55        return "ai-default-icon ". aiea_addon_base()->widget_icon_classes('search');
    5656    }
    5757
  • ai-addons-for-elementor/trunk/includes/widgets/section-title.php

    r3142081 r3147511  
    5656     */
    5757    public function get_icon() {
    58         return 'ai-default-icon eicon-site-title';
     58        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('section-title');
    5959    }
    6060
  • ai-addons-for-elementor/trunk/includes/widgets/site-title.php

    r2941358 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-site-title';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('site-title');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/social-icons.php

    r2966856 r3147511  
    5353     */
    5454    public function get_icon() {
    55         return 'ai-default-icon eicon-social-icons';
     55        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('social-icons');
    5656    }
    5757
  • ai-addons-for-elementor/trunk/includes/widgets/social-share.php

    r2966856 r3147511  
    5353     */
    5454    public function get_icon() {
    55         return 'ai-default-icon eicon-share';
     55        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('social-share');
    5656    }
    5757
  • ai-addons-for-elementor/trunk/includes/widgets/tab.php

    r2966856 r3147511  
    5757     */
    5858    public function get_icon() {
    59         return 'ai-default-icon eicon-tabs';
     59        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('tab');
    6060    }
    6161
  • ai-addons-for-elementor/trunk/includes/widgets/team.php

    r3142081 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-person';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('team');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/testimonial.php

    r2966856 r3147511  
    5454     */
    5555    public function get_icon() {
    56         return 'ai-default-icon eicon-testimonial';
     56        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('testimonial');
    5757    }
    5858
  • ai-addons-for-elementor/trunk/includes/widgets/toggle-content.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon ai-icon-toggle';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('toggle-content');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/includes/widgets/wp-form.php

    r2966856 r3147511  
    5858     */
    5959    public function get_icon() {
    60         return 'ai-default-icon eicon-form-horizontal';
     60        return 'ai-default-icon '. aiea_addon_base()->widget_icon_classes('wp-form');
    6161    }
    6262
  • ai-addons-for-elementor/trunk/readme.txt

    r3142932 r3147511  
    1 === Elementor Addons AI Addons - 70 Widgets, Templates, Ultimate Elements ===
     1=== AI Elementor Addons - 70 Essential Widgets, Premium Templates, Ultimate Elements ===
    22Contributors: aiwp
    3 Tags: elementor, elementor addons, elementor elements, elementor templates, elementor widgets
    4 Stable tag: 2.1.0
     3Tags: elementor addons, elementor, , addon, widgets, elementor templates
     4Stable tag: 2.2.0
    55Tested up to: 6.6
    66Requires at least: 5.0
    7 Requires PHP: 5.6
     7Requires PHP: 7.0
    88License: GPLv3
    99License URI: https://www.gnu.org/licenses/gpl-3.0.html
    1010
    11 Elementor Addons AI Addons comes with Ultimate 70 widgets, 200 templates, ChatGPT elementor addon, Essential Elements with Drag & Drop features.
     11AI Elementor Addons comes with Ultimate 70 widgets, 200 premium templates, ChatGPT Elementor features and Essential Elements
    1212
    1313== Description ==
    1414
    15 The Elementor Addons AI Addons is a powerful tools that enhance the functionality and capabilities of the [Elementor page builder plugin](https://wordpress.org/plugins/elementor). 70+ Widgets, 200+ Pre-made Templates and Ultimate Elements with ChatGPT features save your time to build a beautiful wordpress elementor website.
     15The  AI Elementor Addons is a powerful tools that enhance the functionality and capabilities of the Elementor page builder plugin. 70+ Widgets, 200+ Pre-made Templates and Ultimate Elements with ChatGPT features save your time to build a beautiful wordpress elementor website.
    1616
    1717### The Elementor Addons with Ultimate Elements and ChatGPT Features
     
    2929- [Chart](https://aiaddons.ai/chart-demo/) - The Chart widget is a powerful feature commonly available allowing you to visually represent data and information in the form of charts and graphs. This widget is used to create visually appealing and interactive data visualizations on your website.
    3030- [Circle Progress](https://aiaddons.ai/circle-progress-demo/) - The Circle Progress widget is a popular feature that allows you to display progress or percentage values in a visually appealing circular format. This widget is often used to showcase progress bars, skill levels, achievements, or any other metric that can be represented as a percentage.
    31 - [Contact Info](https://aiaddons.ai/contact-form-demo/) - The Contact Info widget in Elementor Addons AI addons is a useful tool that allows you to display contact information on your website in a visually appealing and easily accessible manner.
     31- [Contact Info](https://aiaddons.ai/contact-form-demo/) - The Contact Info widget in AI Elementor addons is a useful tool that allows you to display contact information on your website in a visually appealing and easily accessible manner.
    3232- [Content Carousel](https://aiaddons.ai/content-carousel-demo/) - The Content Carousel widget in the addons plays a significant role in visually showcasing and organizing content in a compact and engaging manner.
    3333- [Content Switcher](https://aiaddons.ai/content-switcher-demo/) - The Content Switcher widget plays a crucial role in dynamically presenting and organizing content variations on your website. The Content Switcher widget helps you engage your visitors and effectively showcase different aspects of your content.
    3434- [Copyright](https://aiaddons.ai/) - Displaying a copyright notice is often a legal requirement to protect your website's content. The Copyright widget allows you to easily add a copyright symbol (©), the year, and your website's name or company name to create a copyright notice.
    35 - [Counter](https://aiaddons.ai/chart-demo/) - The Counter widget is a useful feature often available in this Elementor Addon AI addons that allows you to display animated numerical counters on your website. These counters are commonly used to showcase statistics, milestones, achievements, or any other numerical values that you want to highlight.
     35- [Counter](https://aiaddons.ai/chart-demo/) - The Counter widget is a useful feature often available in this AI Elementor Addon that allows you to display animated numerical counters on your website. These counters are commonly used to showcase statistics, milestones, achievements, or any other numerical values that you want to highlight.
    3636- [Data Table](https://aiaddons.ai/data-table-demo/) - The Data Table widget allows you to present tabular data in a structured and organized manner. It provides a visually appealing and user-friendly format to display data, making it easier for visitors to comprehend and analyze information.
    3737- [Fancy Text](https://aiaddons.ai/fancy-text-demo/) - The Fancy Text widget is a creative and eye-catching feature commonly found in this best Elementor addon.
     
    3939- [Google Map](https://aiaddons.ai/widgets-demo/#) - The Google Maps widget in allows you to integrate fully interactive and customizable maps into your website with unlimited themes.
    4040- [Icon](https://aiaddons.ai/icon-demo/) - The Icon widget provides an easy and efficient way to incorporate icons into your website designs. With an extensive icon library, customization options, icon styles, effects, integration with other widgets, and responsiveness, you can enhance the visual appeal and user experience of your website by effectively utilizing icons.
    41 - [Icon Box](https://aiaddons.ai/icon-box-demo/) - The icon box widget enables you to present a quick description of the services or products you offer inside boxes. The Icon Box widget in this Elementor Addons AI addons  allows you to create visually appealing and informative boxes with icons and text to highlight key information, features, or services on your website.
     41- [Icon Box](https://aiaddons.ai/icon-box-demo/) - The icon box widget enables you to present a quick description of the services or products you offer inside boxes. The Icon Box widget in this AI Elementor Addons  allows you to create visually appealing and informative boxes with icons and text to highlight key information, features, or services on your website.
    4242- [Icon List](https://aiaddons.ai/icon-list-demo/) - The Icon List widget is a powerful tool that allows you to create visually appealing and informative lists with icons and text.
    4343- [Logo](https://aiaddons.ai/) - The Logo widget allows you to prominently display your brand logo on your website in different styles. Your logo represents your brand identity and serves as a visual symbol that helps visitors recognize and remember your brand. Placing your logo in a prominent location using the Logo widget ensures consistent branding across your website.
     
    4646- [Progress Bar](https://aiaddons.ai/progress-bar-demo/) - Enhance your website's visual appeal and user experience with the Progress Bar Widget. Track progress effortlessly.
    4747- [Search](https://aiaddons.ai/) - The dynamic and customizable Search widget improves the discoverability of your website's content. Visitors can directly search for specific topics, products, or information they are interested in, regardless of the website's structure or navigation menus.
    48 - [Section Title](https://aiaddons.ai/section-title-demo/) - The Section Title widget this Elementor Addon provides a convenient and flexible way to create visually appealing section headings on your website.
     48- [Section Title](https://aiaddons.ai/section-title-demo/) - The Section Title widget this AI Elementor Addon provides a convenient and flexible way to create visually appealing section headings on your website.
    4949- [Social Icons](https://aiaddons.ai/social-icons-demo/) - Use our Social Icons Widget to display your social media icons, such as Facebook, Instagram, Twitter, and Linkedin, on your WordPress website. When visitors click on the social media icons, they will be redirected to your respective social media accounts.
    5050- [Social Share](https://aiaddons.ai/social-share-demo/) - Social Share Elementor Widget empowers users to effortlessly add customizable social share buttons, fostering easy content sharing on WordPress websites.
    51 - [Tabs](https://aiaddons.ai/tab-demo/) - The AI Tab widget in Elementor Addons AI Elementor Addons is an essential element for content organization and user-friendly navigation.
     51- [Tabs](https://aiaddons.ai/tab-demo/) - The AI Tab widget in AI Elementor Addons is an essential element for content organization and user-friendly navigation.
    5252- [Team](https://aiaddons.ai/team-demo/) - With the help of our team widget, you can highlight each member's name, title, biography, image, and social media connections. You may edit the team section as necessary by using the team member.
    5353- [Testimonial](https://aiaddons.ai/testimonial-demo/) - Display customer opinions and suggestions on your websites with a suitable testimonial widget. It has several adjustable features, like layout, wrapper content style, description, title separator, client, and others, much like our other extensions.
     
    7878- [Pricing Table](https://aiaddons.ai/pricing-table-demo/) - The Pricing Table widget enables you to display multiple pricing plans side by side, allowing your visitors to easily compare the features and prices of different options.
    7979- [Timeline](https://aiaddons.ai/timeline-demo/) - The Timeline widget enables you to present your content in a chronological order, allowing visitors to easily follow the progression of events or information. You can add timeline items or entries in the order they occurred, and the widget will display them accordingly.
    80 - [Modal Popup](https://aiaddons.ai/modal-popup-demo/) - The Modal Popup widget in Elementor Addons AI Addons is a powerful tool that allows you to create eye-catching and interactive pop-up windows on your website
     80- [Modal Popup](https://aiaddons.ai/modal-popup-demo/) - The Modal Popup widget in AI Elementor Addons is a powerful tool that allows you to create eye-catching and interactive pop-up windows on your website
    8181- [Mailchimp](https://aiaddons.ai/counter-demo/) - The MailChimp widget provides seamless integration with MailChimp, allowing you to create and customize email subscription forms on your website.
    8282- [Timeline Slide](https://aiaddons.ai/timeline-slide-demo/) - The timeline Slide widget typically refers to a feature that allows you to create a timeline with sliding functionality. It combines the concept of a timeline, which displays events in chronological order, with a sliding or carousel effect, enabling users to navigate through the timeline horizontally.
     
    101101### 3 FREE PLEASANT MODULES
    102102
    103 - [Background Parallax](https://aiaddons.ai/counter-demo/) - The Background Parallax module of this Elementor Addon adds depth and dimension to your website's design. It creates an illusion of movement by making the background image or video move at a different speed than the foreground content as users scroll down the page.
     103- [Background Parallax](https://aiaddons.ai/counter-demo/) - The Background Parallax module of this AI Elementor Addon adds depth and dimension to your website's design. It creates an illusion of movement by making the background image or video move at a different speed than the foreground content as users scroll down the page.
    104104- [Header & Footer Builder](https://aiaddons.ai/) - The Header and Footer module allows you to maintain design consistency throughout your website. You can create a cohesive look and feel by designing a custom header and footer that aligns with your brand identity, colors, typography, and overall website design.
    105105- [Mega Menu Builder](https://aiaddons.ai/) - This module is a tool used to create and customize a mega menu for a website. Mega menus are large menus that display multiple levels of navigation items and sub-items.
     
    107107### 3 PRO ELEMENTOR ADDONS MODULES
    108108
    109 - [Smoke Effects](https://aiaddons.ai/image-box-demo/) -  Smoke effects of this Elementor Addons AI Addonscan enhance the visual aesthetics of your website, making it more visually appealing and captivating to visitors by displaying smoke effects in your sections.
     109- [Smoke Effects](https://aiaddons.ai/image-box-demo/) -  Smoke effects of this AI Elementor Addons can enhance the visual aesthetics of your website, making it more visually appealing and captivating to visitors by displaying smoke effects in your sections.
    110110- [Rain Drop Effects](https://aiaddons.ai/content-carousel-demo/) - By adding raindrop effects, you can create a specific ambiance or mood that aligns with your website's theme or content. This can evoke certain emotions or enhance the overall user experience.
    111111- [Floating Images](https://aiaddons.ai/content-carousel-demo/) - By incorporating floating images, you can create a dynamic and interactive experience for your website visitors. The movement of the images can create a sense of liveliness and encourage user engagement.
     
    113113### OPENAI
    114114
    115 We are providing OpenAI services in our Elementor Addons AI Addons. You can create an Account in OpenAI and generate OpenAI API then use it here to create custom/dynamic content using ChatGPT.
     115We are providing OpenAI services in our AI Elementor Addons. You can create an Account in OpenAI and generate OpenAI API then use it here to create custom/dynamic content using ChatGPT.
    116116
    117117Generate OpenAI API Key here: [OpenAI API](https://beta.openai.com/account/api-keys)
     
    150150== Screenshots ==
    151151
    152 1. Elementor Addons AI Addons Widgets
    153 2. Elementor Addons AI Addons Settings
    154 3. Elementor Addons AI Addons Tools
    155 4. Elementor Addons AI Addons Modules
     1521. AI Elementor Addons Widgets
     1532. AI Elementor Addons Settings
     1543. AI Elementor Addons Light
    156155
    157156== Changelog ==
    158157
    159 = Elementor Addons AI Addons Version 2.1.0 - 2024-08-28 =
     158= AI Elementor Addons Version 2.2.0 - 2024-09-06 =
     159
     160* Fix: Elementor container issue fixed
     161* Fix: Section issue fixed
     162* Updated: Plugin UI/UX Updated
     163* Improvement: Fixed some minor bugs
     164
     165= AI Elementor Addons Version 2.1.0 - 2024-08-28 =
    160166
    161167* Fix: Section related container Elementor update issue fixed.
     
    163169* Updated: Admin widgets UI updated.
    164170
    165 = Elementor Addons AI Addons Version 2.0.0 - 2024-08-27 =
     171= AI Elementor Addons Version 2.0.0 - 2024-08-27 =
    166172
    167173* Fix: Icon related widgets
     
    170176
    171177
    172 = Elementor Addons AI Addons Version 1.4.9 - 2024-08-26 =
     178= AI Elementor Addons Version 1.4.9 - 2024-08-26 =
    173179
    174180* Improvement: Style Updated
    175181* Improvement: Fix some minor bugs
    176182
    177 = Elementor Addons AI Addons Version 1.4.8 - August 23, 2024 =
     183= AI Elementor Addons Version 1.4.8 - August 23, 2024 =
    178184
    179185* New: 10+ new templates added
     
    183189* Compatibility : Till WordPress version 6.6.1
    184190
    185 = Elementor Addons AI Addons Version 1.4.7 - March 21, 2024 =
     191= AI Elementor Addons Version 1.4.7 - March 21, 2024 =
    186192
    187193* 7+ Page templates added(New)
     
    189195* Archive Title Shortcode updated
    190196
    191 = Elementor Addons AI Addons Version 1.4.6 - October 04, 2023 =
     197= AI Elementor Addons Version 1.4.6 - October 04, 2023 =
    192198
    193199* 10+ Page templates added(New)
    194200* Front-end styles updated
    195201
    196 = Elementor Addons AI Addons Version 1.4.5 - September 14, 2023 =
     202= AI Elementor Addons Version 1.4.5 - September 14, 2023 =
    197203
    198204* 15+ Page templates added(New)
     
    200206* Front-end styles updated
    201207
    202 = Elementor Addons AI Addons Version 1.4.4 - August 01, 2023 =
     208= AI Elementor Addons Version 1.4.4 - August 01, 2023 =
    203209
    204210* Creative Button widget widget added
     
    207213* Front-end styles updated
    208214
    209 = Elementor Addons AI Addons Version 1.4.3 - July 21, 2023 =
     215= AI Elementor Addons Version 1.4.3 - July 21, 2023 =
    210216
    211217* Page Title widget added
     
    215221* Front-end styles updated
    216222
    217 = Elementor Addons AI Addons Version 1.4.2 - July 18, 2023 =
     223= AI Elementor Addons Version 1.4.2 - July 18, 2023 =
    218224
    219225* Wp Form widget added
     
    221227* Front-end styles updated
    222228
    223 = Elementor Addons AI Addons Version 1.4.1 - July 13, 2023 =
     229= AI Elementor Addons Version 1.4.1 - July 13, 2023 =
    224230
    225231* Product single Quick view option updated
    226232
    227 = Elementor Addons AI Addons Version 1.4.0 - July 13, 2023 =
     233= AI Elementor Addons Version 1.4.0 - July 13, 2023 =
    228234
    229235* Product widget added
     
    232238* Styles updated
    233239
    234 = Elementor Addons AI Addons Version 1.3.0 - June 29, 2023 =
     240= AI Elementor Addons Version 1.3.0 - June 29, 2023 =
    235241
    236242* Team widget added
     
    239245* Styles updated
    240246
    241 = Elementor Addons AI Addons Version 1.2.1 - June 06, 2023 =
     247= AI Elementor Addons Version 1.2.1 - June 06, 2023 =
    242248
    243249* Templates updated
     
    245251* Styles updated
    246252
    247 = Elementor Addons AI Addons Version 1.2.0 - May 19, 2023 =
     253= AI Elementor Addons Version 1.2.0 - May 19, 2023 =
    248254
    249255* Widgets styles improved
    250256* Admin styles updated
    251257
    252 = Elementor Addons AI Addons Version 1.1.0 - May 18, 2023 =
     258= AI Elementor Addons Version 1.1.0 - May 18, 2023 =
    253259
    254260* Admin styles updated
    255261
    256 = Elementor Addons AI Addons Version 1.0.0 - May 17, 2023 =
     262= AI Elementor Addons Version 1.0.0 - May 17, 2023 =
    257263
    258264* Initial release.
Note: See TracChangeset for help on using the changeset viewer.