Plugin Directory

Changeset 3445042


Ignore:
Timestamp:
01/22/2026 05:12:58 PM (4 weeks ago)
Author:
wpcoder75
Message:

Widget Manager UI with enhanced layout featuring demo links and better visual organization

Location:
daily-slider
Files:
119 added
5 edited

Legend:

Unmodified
Added
Removed
  • daily-slider/trunk/admin/welcome-page.php

    r3423731 r3445042  
    44}
    55
    6 class DailySliderWelcomePage {
    7    
    8     public static function render() {
    9         ?>
    10         <div class="daily-slider-welcome">
    11            
    12             <!-- Header Section -->
    13             <?php self::render_header(); ?>
    14 
    15             <!-- New Widget Notice -->
     6class DailySliderWelcomePage
     7{
     8
     9    public static function render()
     10    {
     11        $plugin_data = self::get_plugin_data();
     12        $version = !empty($plugin_data['Version']) ? $plugin_data['Version'] : '';
     13
     14        $enabled_widgets = get_option('daily_slider_widgets', array());
     15        if (!is_array($enabled_widgets)) {
     16            $enabled_widgets = array();
     17        }
     18
     19        $available_widgets = array(
     20            'pixel' => array('name' => __('Pixel', 'daily-slider')),
     21            'eldorado' => array('name' => __('Eldorado', 'daily-slider')),
     22            'review_carousel' => array('name' => __('Review Carousel', 'daily-slider')),
     23            'marquee' => array('name' => __('Marquee Slider', 'daily-slider')),
     24            'testimonials_marquee' => array('name' => __('Testimonials Marquee', 'daily-slider')),
     25        );
     26
     27        $coming_features = array(
     28            array(
     29                'name' => __('Post Slider', 'daily-slider'),
     30                'desc' => __('Display posts in a slider layout.', 'daily-slider'),
     31                'icon' => 'dashicons-admin-post',
     32            ),
     33            array(
     34                'name' => __('WooCommerce Slider', 'daily-slider'),
     35                'desc' => __('Showcase products in a slider layout.', 'daily-slider'),
     36                'icon' => 'dashicons-cart',
     37            ),
     38            array(
     39                'name' => __('Showcase Slider', 'daily-slider'),
     40                'desc' => __('Showcase projects in engaging slider layouts.', 'daily-slider'),
     41                'icon' => 'dashicons-format-gallery',
     42            ),
     43            array(
     44                'name' => __('Video Slider', 'daily-slider'),
     45                'desc' => __('Display videos in engaging slider layouts.', 'daily-slider'),
     46                'icon' => 'dashicons-video-alt3',
     47            ),
     48        );
     49
     50        $active_count = count(array_filter($enabled_widgets));
     51        $available_count = count($available_widgets);
     52        $coming_count_label = count($coming_features) >= 10 ? '10+' : (string)count($coming_features);
     53
     54        $welcome_url = admin_url('admin.php?page=daily-slider-dashboard');
     55        $widgets_url = admin_url('admin.php?page=daily-slider-widgets');
     56        $pages_url = admin_url('edit.php?post_type=page');
     57        $home_url = home_url('/');
     58
     59?>
     60        <div class="daily-slider-admin">
     61            <div class="ds-topbar">
     62                <div class="ds-topbar__left">
     63                    <div class="ds-brand">
     64                        <span class="ds-brand__icon dashicons dashicons-slides"></span>
     65                    </div>
     66                    <div class="ds-tabs">
     67                        <a class="ds-tab is-active" href="<?php echo esc_url($welcome_url); ?>"><?php _e('Dashboard', 'daily-slider'); ?></a>
     68                        <a class="ds-tab" href="<?php echo esc_url($widgets_url); ?>"><?php _e('Widgets', 'daily-slider'); ?></a>
     69                    </div>
     70                </div>
     71                <div class="ds-topbar__right">
     72                    <?php if (!empty($version)) : ?>
     73                        <span class="ds-version"><?php echo esc_html(sprintf(__('Version %s', 'daily-slider'), $version)); ?></span>
     74                    <?php endif; ?>
     75                </div>
     76            </div>
     77
    1678            <?php self::render_new_widget_notice(); ?>
    1779
    18             <!-- Main Content -->
    19             <div class="welcome-content">
    20                 <?php self::render_quick_actions(); ?>
    21                 <?php self::render_widgets_overview(); ?>
    22                 <?php self::render_coming_soon(); ?>
     80            <div class="ds-grid">
     81                <div class="ds-col ds-col--main">
     82                    <div class="ds-card ds-hero">
     83                        <h1 class="ds-hero__title"><?php _e('Welcome to Daily Slider', 'daily-slider'); ?></h1>
     84                        <p class="ds-hero__subtitle"><?php _e('Build beautiful Elementor pages effortlessly with our advanced slider widgets and features.', 'daily-slider'); ?></p>
     85                        <div class="ds-hero__actions">
     86                            <a class="ds-btn ds-btn--primary" href="https://xpospark.com/plugin/daily-slider/" target="_blank" rel="noopener noreferrer">
     87                                <?php _e('View Website', 'daily-slider'); ?>
     88                            </a>
     89                            <a class="ds-btn ds-btn--ghost" href="<?php echo esc_url($pages_url); ?>">
     90                                <span class="dashicons dashicons-plus-alt2"></span>
     91                                <?php _e('Create New Page', 'daily-slider'); ?>
     92                            </a>
     93                        </div>
     94                    </div>
     95
     96                    <div class="ds-card">
     97                        <div class="ds-card__head">
     98                            <h2 class="ds-card__title"><?php _e('Widget Statistics Overview', 'daily-slider'); ?></h2>
     99                        </div>
     100                        <div class="ds-stats">
     101                            <div class="ds-stat">
     102                                <div class="ds-stat__icon dashicons dashicons-yes"></div>
     103                                <div class="ds-stat__meta">
     104                                    <div class="ds-stat__label"><?php _e('Active Widgets', 'daily-slider'); ?></div>
     105                                    <div class="ds-stat__value"><?php echo esc_html((string)$active_count); ?></div>
     106                                </div>
     107                            </div>
     108                            <div class="ds-stat">
     109                                <div class="ds-stat__icon dashicons dashicons-screenoptions"></div>
     110                                <div class="ds-stat__meta">
     111                                    <div class="ds-stat__label"><?php _e('Available Widgets', 'daily-slider'); ?></div>
     112                                    <div class="ds-stat__value"><?php echo esc_html((string)$available_count); ?></div>
     113                                </div>
     114                            </div>
     115                            <div class="ds-stat">
     116                                <div class="ds-stat__icon dashicons dashicons-backup"></div>
     117                                <div class="ds-stat__meta">
     118                                    <div class="ds-stat__label"><?php _e('Widgets Coming Soon', 'daily-slider'); ?></div>
     119                                    <div class="ds-stat__value"><?php echo esc_html($coming_count_label); ?></div>
     120                                </div>
     121                            </div>
     122                        </div>
     123                    </div>
     124
     125                    <div class="ds-card">
     126                        <div class="ds-card__head ds-card__head--split">
     127                            <h2 class="ds-card__title"><?php _e('Key Features', 'daily-slider'); ?></h2>
     128                            <span class="ds-pill"><?php _e('Coming Soon', 'daily-slider'); ?></span>
     129                        </div>
     130                        <div class="ds-features">
     131                            <?php foreach ($coming_features as $feature) : ?>
     132                                <div class="ds-feature">
     133                                    <div class="ds-feature__meta">
     134                                        <div class="ds-feature__title"><?php echo esc_html($feature['name']); ?></div>
     135                                        <div class="ds-feature__desc"><?php echo esc_html($feature['desc']); ?></div>
     136                                    </div>
     137                                    <div class="ds-feature__icon dashicons <?php echo esc_attr($feature['icon']); ?>"></div>
     138                                </div>
     139                            <?php endforeach; ?>
     140                        </div>
     141                    </div>
     142                </div>
     143
     144                <div class="ds-col ds-col--side">
     145                    <div class="ds-card ds-pro">
     146                        <div class="ds-pro__badge">
     147                            <span class="dashicons dashicons-star-filled"></span>
     148                            <?php _e('UNLOCK UPCOMING WIDGETS', 'daily-slider'); ?>
     149                        </div>
     150                        <div class="ds-pro__title"><?php _e('Design Smarter with Daily Slider!', 'daily-slider'); ?></div>
     151                        <div class="ds-pro__text"><?php _e('Craft stunning websites faster with powerful widgets, advanced features, and total flexibility.', 'daily-slider'); ?></div>
     152                        <div class="ds-pro__list">
     153                            <div class="ds-pro__item"><span class="ds-check"></span><?php _e('Classic Slider', 'daily-slider'); ?></div>
     154                            <div class="ds-pro__item"><span class="ds-check"></span><?php _e('Post Slider', 'daily-slider'); ?></div>
     155                            <div class="ds-pro__item"><span class="ds-check"></span><?php _e('Product Slide', 'daily-slider'); ?></div>
     156                            <div class="ds-pro__item"><span class="ds-check"></span><?php _e('Video Slider', 'daily-slider'); ?></div>
     157                            <div class="ds-pro__item"><span class="ds-check"></span><?php _e('News / Blog Slider', 'daily-slider'); ?></div>
     158                        </div>
     159                        <a class="ds-btn ds-btn--wide" href="<?php echo esc_url($widgets_url); ?>"><?php _e('View Plans', 'daily-slider'); ?></a>
     160                    </div>
     161
     162                    <div class="ds-card ds-quick">
     163                        <div class="ds-card__head">
     164                            <h2 class="ds-card__title"><?php _e('Quick Access', 'daily-slider'); ?></h2>
     165                        </div>
     166                        <div class="ds-quick__list">
     167                            <a class="ds-quick__item" href="https://xpospark.com/plugin/daily-slider/" target="_blank" rel="noopener noreferrer">
     168                                <span class="dashicons dashicons-book-alt"></span>
     169                                <?php _e('Knowledge Base', 'daily-slider'); ?>
     170                            </a>
     171                            <a class="ds-quick__item" href="https://xpospark.com/plugin/daily-slider/" target="_blank" rel="noopener noreferrer">
     172                                <span class="dashicons dashicons-lightbulb"></span>
     173                                <?php _e('Request a Feature', 'daily-slider'); ?>
     174                            </a>
     175                            <a class="ds-quick__item" href="https://wordpress.org/support/plugin/daily-slider/reviews/#new-post" target="_blank" rel="noopener noreferrer">
     176                                <span class="dashicons dashicons-star-empty"></span>
     177                                <?php _e('Rate Us', 'daily-slider'); ?>
     178                            </a>
     179                        </div>
     180                    </div>
     181                </div>
    23182            </div>
    24183
     184            <div class="ds-footer">
     185                <?php echo esc_html(sprintf(__('© %s Daily Slider. All rights reserved.', 'daily-slider'), date_i18n('Y'))); ?>
     186            </div>
    25187        </div>
    26        
     188
    27189        <?php self::render_styles(); ?>
    28         <?php
     190    <?php
    29191    }
    30192
    31     private static function render_header() {
    32         ?>
     193    private static function get_plugin_data()
     194    {
     195        if (!function_exists('get_plugin_data')) {
     196            require_once ABSPATH . 'wp-admin/includes/plugin.php';
     197        }
     198        $plugin_file = dirname(__DIR__) . '/daily-slider.php';
     199        if (!file_exists($plugin_file)) {
     200            return array();
     201        }
     202        $data = get_plugin_data($plugin_file, false, false);
     203        return is_array($data) ? $data : array();
     204    }
     205
     206    private static function render_header()
     207    {
     208    ?>
    33209        <div class="welcome-hero">
    34210            <!-- <div class="hero-background">
     
    40216            </div>
    41217        </div>
    42         <?php
     218    <?php
    43219    }
    44220
    45     private static function render_new_widget_notice() {
     221    private static function render_new_widget_notice()
     222    {
    46223        // Check if user has seen this notice (you can implement this with user meta)
    47224        $notice_dismissed = get_user_meta(get_current_user_id(), 'daily_slider_testimonials_notice_dismissed', true);
    48        
     225
    49226        if ($notice_dismissed) {
    50227            return;
    51228        }
    52         ?>
     229    ?>
    53230        <div class="daily-slider-notice-container">
    54231            <div class="new-widget-notice">
     
    58235                    </div>
    59236                    <div class="notice-text">
    60                         <h3><?php _e('🎉 New Widget Added!', 'daily-slider'); ?></h3>
     237                        <h3><?php _e('New Widget Added!', 'daily-slider'); ?></h3>
    61238                        <p><?php _e('Introducing the <span class="highlight-widget-name">Testimonials Marquee</span> widget - showcase customer reviews with star ratings, author profiles, and smooth scrolling animations. Perfect for building trust and social proof!', 'daily-slider'); ?></p>
    62239                    </div>
     
    72249            </div>
    73250        </div>
    74         <?php
     251    <?php
    75252    }
    76253
    77     private static function render_quick_actions() {
    78         ?>
     254    private static function render_quick_actions()
     255    {
     256    ?>
    79257        <div class="quick-actions-section">
    80258            <div class="section-header">
     
    115293            </div>
    116294        </div>
    117         <?php
     295    <?php
    118296    }
    119297
    120     private static function render_widgets_overview() {
     298    private static function render_widgets_overview()
     299    {
    121300        $widgets = [
    122301            'pixel' => [
     
    152331            ]
    153332        ];
    154         ?>
     333    ?>
    155334        <div class="widgets-showcase">
    156335            <div class="section-header">
     
    160339            <div class="widgets-grid">
    161340                <?php foreach ($widgets as $key => $widget): ?>
    162                 <div class="widget-card">
    163                     <div class="widget-header">
    164                         <div class="widget-icon" style="background: <?php echo esc_attr($widget['icon_color']); ?>;">
    165                             <span class="widget-letter"><?php echo strtoupper(substr($widget['name'], 0, 1)); ?></span>
     341                    <div class="widget-card">
     342                        <div class="widget-header">
     343                            <div class="widget-icon" style="background: <?php echo esc_attr($widget['icon_color']); ?>;">
     344                                <span class="widget-letter"><?php echo strtoupper(substr($widget['name'], 0, 1)); ?></span>
     345                            </div>
     346                            <div class="widget-status free">
     347                                <span class="status-dot"></span>
     348                                <?php _e('Free', 'daily-slider'); ?>
     349                            </div>
    166350                        </div>
    167                         <div class="widget-status free">
    168                             <span class="status-dot"></span>
    169                             <?php _e('Free', 'daily-slider'); ?>
     351                        <div class="widget-content">
     352                            <h3><?php echo esc_html($widget['name']); ?></h3>
     353                            <p class="widget-description"><?php echo esc_html($widget['description']); ?></p>
     354                            <div class="widget-features">
     355                                <?php foreach ($widget['features'] as $feature): ?>
     356                                    <span class="feature-tag"><?php echo esc_html($feature); ?></span>
     357                                <?php endforeach; ?>
     358                            </div>
    170359                        </div>
    171360                    </div>
    172                     <div class="widget-content">
    173                         <h3><?php echo esc_html($widget['name']); ?></h3>
    174                         <p class="widget-description"><?php echo esc_html($widget['description']); ?></p>
    175                         <div class="widget-features">
    176                             <?php foreach ($widget['features'] as $feature): ?>
    177                             <span class="feature-tag"><?php echo esc_html($feature); ?></span>
    178                             <?php endforeach; ?>
    179                         </div>
    180                     </div>
    181                 </div>
    182361                <?php endforeach; ?>
    183362            </div>
    184363        </div>
    185         <?php
     364    <?php
    186365    }
    187366
    188     private static function render_coming_soon() {
     367    private static function render_coming_soon()
     368    {
    189369        $coming_features = [
    190370            'post_slider' => [
     
    207387            ]
    208388        ];
    209         ?>
     389    ?>
    210390        <div class="coming-soon-section">
    211391            <div class="coming-content">
     
    219399                <div class="coming-widgets">
    220400                    <?php foreach ($coming_features as $key => $feature): ?>
    221                     <div class="coming-widget">
    222                         <div class="coming-widget-icon" style="background: <?php echo esc_attr($feature['gradient']); ?>;">
    223                             <span class="widget-emoji"><?php echo $feature['emoji']; ?></span>
     401                        <div class="coming-widget">
     402                            <div class="coming-widget-icon" style="background: <?php echo esc_attr($feature['gradient']); ?>;">
     403                                <span class="widget-emoji"><?php echo $feature['emoji']; ?></span>
     404                            </div>
     405                            <div class="coming-widget-content">
     406                                <h3><?php echo esc_html($feature['name']); ?></h3>
     407                                <p><?php echo esc_html($feature['description']); ?></p>
     408                            </div>
     409                            <div class="coming-status">
     410                                <span class="status-text"><?php _e('Coming Soon', 'daily-slider'); ?></span>
     411                            </div>
    224412                        </div>
    225                         <div class="coming-widget-content">
    226                             <h3><?php echo esc_html($feature['name']); ?></h3>
    227                             <p><?php echo esc_html($feature['description']); ?></p>
    228                         </div>
    229                         <div class="coming-status">
    230                             <span class="status-text"><?php _e('Coming Soon', 'daily-slider'); ?></span>
    231                         </div>
    232                     </div>
    233413                    <?php endforeach; ?>
    234414                </div>
    235415            </div>
    236416        </div>
    237         <?php
     417    <?php
    238418    }
    239419
    240420
    241421
    242     private static function render_styles() {
    243         ?>
     422    private static function render_styles()
     423    {
     424    ?>
    244425        <style>
    245         /* Welcome Page Styles */
    246         .daily-slider-welcome {
    247             max-width: 1000px;
    248             margin: 20px 0;
    249             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    250             background: #f7f7f7;
    251             padding: 30px;
    252             border-radius: 10px;
    253         }
    254 
    255         /* New Widget Notice Styles */
    256         .daily-slider-notice-container {
    257             margin: 20px 0;
    258         }
    259         .new-widget-notice {
    260             background: linear-gradient(135deg, #000000 0%, #ff6b35 100%);
    261             border-radius: 12px;
    262             padding: 24px;
    263             margin-bottom: 20px;
    264             box-shadow: 0 4px 15px rgba(255, 107, 53, 0.3);
    265             border: 1px solid rgba(255, 255, 255, 0.2);
    266         }
    267         .notice-content {
    268             display: flex;
    269             align-items: center;
    270             justify-content: center;
    271             gap: 20px;
    272             text-align: left;
    273         }
    274         .notice-icon {
    275             background: rgba(255, 255, 255, 0.3);
    276             border-radius: 50%;
    277             width: 60px;
    278             height: 60px;
    279             display: flex;
    280             align-items: center;
    281             justify-content: center;
    282             flex-shrink: 0;
    283             margin: 0 auto;
    284         }
    285         .notice-icon .dashicons {
    286             color: #fff200;
    287             font-size: 28px;
    288             display: block;
    289             width: 28px;
    290             height: 28px;
    291         }
    292         .notice-text {
    293             flex: 1;
    294             color: white;
    295         }
    296         .notice-text h3 {
    297             margin: 0 0 8px 0;
    298             font-size: 18px;
    299             font-weight: 600;
    300             color: white;
    301         }
    302         .notice-text p {
    303             margin: 0;
    304             line-height: 1.5;
    305             opacity: 0.95;
    306         }
    307         .highlight-widget-name {
    308             background: rgba(255, 215, 0, 0.2);
    309             color: #ffd700;
    310             padding: 2px 8px;
    311             border-radius: 4px;
    312             font-weight: 700;
    313             border: 1px solid rgba(255, 215, 0, 0.3);
    314             font-style: normal;
    315             text-shadow: 0 0 8px rgba(255, 215, 0, 0.3);
    316         }
    317         .notice-actions {
    318             display: flex;
    319             gap: 12px;
    320             flex-shrink: 0;
    321         }
    322         .notice-btn {
    323             padding: 8px 16px;
    324             border-radius: 6px;
    325             text-decoration: none;
    326             font-weight: 500;
    327             font-size: 14px;
    328             border: none;
    329             cursor: pointer;
    330             transition: all 0.3s ease;
    331         }
    332         .notice-btn.primary {
    333             background: rgba(255, 255, 255, 0.9);
    334             color: #667eea;
    335         }
    336         .notice-btn.primary:hover {
    337             background: white;
    338             transform: translateY(-1px);
    339         }
    340         .notice-btn.secondary {
    341             background: rgba(255, 255, 255, 0.2);
    342             color: white;
    343             border: 1px solid rgba(255, 255, 255, 0.3);
    344         }
    345         .notice-btn.secondary:hover {
    346             background: rgba(255, 255, 255, 0.3);
    347         }
    348         @media (max-width: 768px) {
     426            /* Atomic-style Dashboard (new design) */
     427            .daily-slider-admin {
     428                max-width: 1200px;
     429                margin: 20px 0 0;
     430                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     431                background: #f9fafb;
     432                border-radius: 6px;
     433                overflow: hidden;
     434            }
     435
     436            .daily-slider-admin a {
     437                text-decoration: none;
     438            }
     439
     440            .ds-topbar {
     441                display: flex;
     442                align-items: center;
     443                justify-content: space-between;
     444                background: #fff;
     445                padding: 0 20px;
     446                border-bottom: 1px solid #e5e7eb;
     447            }
     448
     449            .ds-topbar__left {
     450                display: flex;
     451                align-items: center;
     452                gap: 30px;
     453            }
     454
     455            .ds-brand {
     456                width: 40px;
     457                height: 40px;
     458                border-radius: 6px;
     459                background: linear-gradient(135deg, #a855f7, #7c3aed);
     460                display: flex;
     461                align-items: center;
     462                justify-content: center;
     463            }
     464
     465            .ds-brand__icon {
     466                color: #fff;
     467                font-size: 18px;
     468                width: 18px;
     469                height: 18px;
     470            }
     471
     472            .ds-tabs {
     473                display: flex;
     474                gap: 18px;
     475            }
     476
     477            .ds-tab {
     478                color: #111827;
     479                font-weight: 600;
     480                padding: 24px 0;
     481                border-bottom: 2px solid transparent;
     482                box-shadow: none !important;
     483                outline: none !important;
     484            }
     485
     486            .ds-tab.is-active {
     487                color: #7c3aed;
     488                border-bottom-color: #7c3aed;
     489            }
     490
     491            .ds-version {
     492                display: inline-flex;
     493                align-items: center;
     494                background: rgba(124, 58, 237, 0.12);
     495                color: #7c3aed;
     496                padding: 6px 12px;
     497                border-radius: 999px;
     498                font-weight: 700;
     499                font-size: 12px;
     500            }
     501
     502            .ds-grid {
     503                display: grid;
     504                grid-template-columns: 1.6fr 1fr;
     505                gap: 18px;
     506                align-items: start;
     507                padding: 20px;
     508            }
     509
     510            .ds-card {
     511                background: #fff;
     512                padding: 20px;
     513                border-radius: 8px;
     514                border: 1px solid #f1f1f1;
     515            }
     516
     517            .ds-col--main,
     518            .ds-col--side {
     519                display: flex;
     520                flex-direction: column;
     521                gap: 18px;
     522            }
     523
     524            .ds-hero {
     525                padding: 22px;
     526            }
     527
     528            .ds-hero__title {
     529                margin: 0 0 15px;
     530                font-size: 28px;
     531                color: #111827;
     532                font-weight: 700;
     533            }
     534
     535            .ds-hero__subtitle {
     536                margin: 0 0 16px;
     537                color: #6b7280;
     538                font-size: 14px;
     539                line-height: 1.5;
     540                max-width: 620px;
     541            }
     542
     543            .ds-hero__actions {
     544                display: flex;
     545                gap: 12px;
     546                flex-wrap: wrap;
     547            }
     548
     549            .ds-btn {
     550                display: inline-flex;
     551                align-items: center;
     552                justify-content: center;
     553                gap: 8px;
     554                padding: 10px 16px;
     555                border-radius: 6px;
     556                font-weight: 700;
     557                font-size: 13px;
     558                border: 1px solid transparent;
     559                cursor: pointer;
     560            }
     561
     562            .ds-btn .dashicons {
     563                font-size: 16px;
     564                width: 16px;
     565                height: 16px;
     566            }
     567
     568            .ds-btn--primary {
     569                background: #a855f7;
     570                color: #fff;
     571            }
     572
     573            .ds-btn--primary:hover {
     574                background: #9333ea;
     575                color: #fff;
     576            }
     577
     578            .ds-btn--ghost {
     579                background: #fff;
     580                border-color: #e5e7eb;
     581                color: #111827;
     582            }
     583
     584            .ds-btn--ghost:hover {
     585                border-color: #cbd5e1;
     586                background: #f9fafb;
     587                color: #111827;
     588            }
     589
     590            .ds-btn--wide {
     591                width: 100%;
     592                background: #a855f7;
     593                color: #fff;
     594                margin-top:20px;
     595                padding: 12px 16px;
     596                box-sizing: border-box;
     597            }
     598
     599            .ds-btn--wide:hover {
     600                background: #9333ea;
     601                color: #fff;
     602            }
     603
     604            .ds-card__head {
     605                margin-bottom: 12px;
     606            }
     607
     608            .ds-card__head--split {
     609                display: flex;
     610                align-items: center;
     611                justify-content: space-between;
     612                gap: 12px;
     613            }
     614
     615            .ds-card__title {
     616                margin: 0;
     617                font-size: 16px;
     618                color: #111827;
     619                font-weight: 800;
     620            }
     621
     622            .ds-pill {
     623                font-size: 12px;
     624                font-weight: 800;
     625                color: #a855f7;
     626                background: rgba(168, 85, 247, 0.12);
     627                padding: 6px 10px;
     628                border-radius: 999px;
     629            }
     630
     631            .ds-stats {
     632                display: grid;
     633                grid-template-columns: repeat(3, minmax(0, 1fr));
     634                gap: 12px;
     635            }
     636
     637            .ds-stat {
     638                border: 1px solid #eef2f7;
     639                border-radius: 6px;
     640                padding: 14px;
     641                display: flex;
     642                align-items: center;
     643                gap: 12px;
     644            }
     645
     646            .ds-stat__icon {
     647                width: 36px;
     648                height: 36px;
     649                border-radius: 6px;
     650                background: #fff;
     651                border: 1px solid #eef2f7;
     652                display: flex;
     653                align-items: center;
     654                justify-content: center;
     655                color: #111827;
     656                font-size: 18px;
     657            }
     658
     659            .ds-stat__label {
     660                font-size: 12px;
     661                color: #6b7280;
     662                font-weight: 700;
     663            }
     664
     665            .ds-stat__value {
     666                font-size: 18px;
     667                color: #111827;
     668                font-weight: 900;
     669                margin-top: 2px;
     670            }
     671
     672            .ds-features {
     673                display: grid;
     674                grid-template-columns: repeat(2, minmax(0, 1fr));
     675                gap: 12px;
     676            }
     677
     678            .ds-feature {
     679                border: 1px solid #eef2f7;
     680                border-radius: 6px;
     681                padding: 14px;
     682                display: flex;
     683                align-items: center;
     684                justify-content: space-between;
     685                gap: 12px;
     686                background: #fff;
     687            }
     688
     689            .ds-feature__title {
     690                font-weight: 800;
     691                color: #111827;
     692                margin-bottom: 4px;
     693            }
     694
     695            .ds-feature__desc {
     696                color: #6b7280;
     697                font-size: 12px;
     698                line-height: 1.4;
     699            }
     700
     701            .ds-feature__icon {
     702                color: #111827;
     703                font-size: 18px;
     704                width: 18px;
     705                height: 18px;
     706                opacity: 0.75;
     707            }
     708
     709            .ds-pro__badge {
     710                display: inline-flex;
     711                align-items: center;
     712                gap: 8px;
     713                color: #111827;
     714                font-weight: 900;
     715                font-size: 12px;
     716                letter-spacing: 0.04em;
     717                margin-bottom: 10px;
     718            }
     719
     720            .ds-pro__badge .dashicons {
     721                color: #a855f7;
     722            }
     723
     724            .ds-pro__title {
     725                font-size: 20px;
     726                font-weight: 900;
     727                color: #111827;
     728                margin: 0 0 8px;
     729            }
     730
     731            .ds-pro__text {
     732                color: #6b7280;
     733                font-size: 13px;
     734                line-height: 1.5;
     735                margin-bottom: 20px;
     736            }
     737
     738            .ds-pro__list {
     739                display: grid;
     740                grid-template-columns: repeat(2, minmax(0, 1fr));
     741                gap: 20px;
     742                margin-top: 10px;
     743            }
     744
     745            .ds-pro__item {
     746                display: flex;
     747                align-items: center;
     748                gap: 8px;
     749                color: #374151;
     750                font-weight: 700;
     751                font-size: 12px;
     752            }
     753
     754            .ds-check {
     755                width: 16px;
     756                height: 16px;
     757                border-radius: 999px;
     758                background: rgba(168, 85, 247, 0.18);
     759                border: 1px solid rgba(168, 85, 247, 0.25);
     760                position: relative;
     761                flex: 0 0 16px;
     762            }
     763
     764            .ds-check:after {
     765                content: "";
     766                position: absolute;
     767                left: 5px;
     768                top: 3px;
     769                width: 5px;
     770                height: 8px;
     771                border-right: 2px solid #a855f7;
     772                border-bottom: 2px solid #a855f7;
     773                transform: rotate(45deg);
     774            }
     775
     776            .ds-quick__list {
     777                display: flex;
     778                flex-direction: column;
     779                gap: 10px;
     780            }
     781
     782            .ds-quick__item {
     783                display: flex;
     784                align-items: center;
     785                gap: 10px;
     786                padding: 10px 12px;
     787                border-radius: 6px;
     788                border: 1px solid #eef2f7;
     789                background: #fff;
     790                color: #111827;
     791                font-weight: 700;
     792            }
     793
     794            .ds-quick__item:hover {
     795                background: #f9fafb;
     796                border-color: #e5e7eb;
     797                color: #111827;
     798            }
     799
     800            .ds-quick__item .dashicons {
     801                color: #111827;
     802                opacity: 0.75;
     803            }
     804
     805
     806            .ds-footer {
     807                text-align: center;
     808                padding: 20px 0;
     809                border-top: 1px solid #f3f3f3;
     810                background: #ffffff;
     811                color: #6d7882;
     812                font-size: 14px;
     813            }
     814
     815            /* New Widget Notice Styles */
     816            .daily-slider-notice-container {
     817                margin: 0 0 16px;
     818            }
     819
     820            .new-widget-notice {
     821                background: linear-gradient(135deg, #a855f7 0%, #7c3aed 100%);
     822                border-radius: 6px;
     823                padding: 24px;
     824                margin-bottom: 20px;
     825                box-shadow: 0 6px 18px rgba(124, 58, 237, 0.25);
     826                border: 1px solid rgba(255, 255, 255, 0.2);
     827            }
     828
    349829            .notice-content {
     830                display: flex;
     831                align-items: center;
     832                justify-content: center;
     833                gap: 20px;
     834                text-align: left;
     835            }
     836
     837            .notice-icon {
     838                background: rgba(255, 255, 255, 0.3);
     839                border-radius: 50%;
     840                width: 60px;
     841                height: 60px;
     842                display: flex;
     843                align-items: center;
     844                justify-content: center;
     845                flex-shrink: 0;
     846                margin: 0 auto;
     847            }
     848
     849            .notice-icon .dashicons {
     850                color: #ffffff;
     851                font-size: 28px;
     852                display: block;
     853                width: 28px;
     854                height: 28px;
     855            }
     856
     857            .notice-text {
     858                flex: 1;
     859                color: white;
     860            }
     861
     862            .notice-text h3 {
     863                margin: 0 0 8px 0;
     864                font-size: 18px;
     865                font-weight: 600;
     866                color: white;
     867            }
     868
     869            .notice-text p {
     870                margin: 0;
     871                line-height: 1.5;
     872                opacity: 0.95;
     873            }
     874
     875            .highlight-widget-name {
     876                background: rgba(255, 255, 255, 0.18);
     877                color: #ffffff;
     878                padding: 2px 8px;
     879                border-radius: 4px;
     880                font-weight: 700;
     881                border: 1px solid rgba(255, 255, 255, 0.28);
     882                font-style: normal;
     883                text-shadow: 0 0 8px rgba(255, 255, 255, 0.12);
     884            }
     885
     886            .notice-actions {
     887                display: flex;
     888                gap: 12px;
     889                flex-shrink: 0;
     890            }
     891
     892            .notice-btn {
     893                padding: 8px 16px;
     894                border-radius: 6px;
     895                text-decoration: none;
     896                font-weight: 500;
     897                font-size: 14px;
     898                border: none;
     899                cursor: pointer;
     900                transition: all 0.3s ease;
     901            }
     902
     903            .notice-btn.primary {
     904                background: rgba(255, 255, 255, 0.9);
     905                color: #7c3aed;
     906            }
     907
     908            .notice-btn.primary:hover {
     909                background: white;
     910                transform: translateY(-1px);
     911            }
     912
     913            .notice-btn.secondary {
     914                background: rgba(255, 255, 255, 0.2);
     915                color: white;
     916                border: 1px solid rgba(255, 255, 255, 0.3);
     917            }
     918
     919            .notice-btn.secondary:hover {
     920                background: rgba(255, 255, 255, 0.3);
     921            }
     922
     923            @media (max-width: 768px) {
     924                .ds-grid {
     925                    grid-template-columns: 1fr;
     926                }
     927
     928                .ds-stats {
     929                    grid-template-columns: 1fr;
     930                }
     931
     932                .ds-features {
     933                    grid-template-columns: 1fr;
     934                }
     935
     936                .ds-pro__list {
     937                    grid-template-columns: 1fr;
     938                }
     939
     940                .notice-content {
     941                    flex-direction: column;
     942                    text-align: center;
     943                }
     944
     945                .notice-actions {
     946                    width: 100%;
     947                    justify-content: center;
     948                }
     949            }
     950
     951            /* Hero Section */
     952            .welcome-hero {
     953                position: relative;
     954                background: #000000;
     955                border-radius: 6px;
     956                padding: 30px 25px;
     957                text-align: center;
     958                color: white;
     959                margin-bottom: 20px;
     960                overflow: hidden;
     961            }
     962
     963
     964            .hero-content {
     965                position: relative;
     966                z-index: 2;
     967                display: flex;
    350968                flex-direction: column;
    351                 text-align: center;
    352             }
    353             .notice-actions {
    354                 width: 100%;
     969                align-items: flex-start;
     970            }
     971
     972            .hero-icon {
     973                width: 80px;
     974                height: 80px;
     975                background: rgba(255, 255, 255, 0.2);
     976                border-radius: 50%;
     977                display: inline-flex;
     978                align-items: center;
    355979                justify-content: center;
    356             }
    357         }
    358 
    359         /* Hero Section */
    360         .welcome-hero {
    361             position: relative;
    362             background: #000000;
    363             border-radius: 12px;
    364             padding: 30px 25px;
    365             text-align: center;
    366             color: white;
    367             margin-bottom: 20px;
    368             overflow: hidden;
    369         }
    370 
    371 
    372         .hero-content {
    373             position: relative;
    374             z-index: 2;
    375             display: flex;
    376             flex-direction: column;
    377             align-items: flex-start;
    378         }
    379 
    380         .hero-icon {
    381             width: 80px;
    382             height: 80px;
    383             background: rgba(255,255,255,0.2);
    384             border-radius: 50%;
    385             display: inline-flex;
    386             align-items: center;
    387             justify-content: center;
    388             margin-bottom: 20px;
    389             backdrop-filter: blur(10px);
    390             border: 1px solid rgba(255,255,255,0.3);
    391         }
    392 
    393         .hero-icon .dashicons {
    394             font-size: 40px;
    395             color: white;
    396         }
    397 
    398         .welcome-hero h1 {
    399             font-size: 28px;
    400             margin: 0 0 8px;
    401             font-weight: 600;
    402             color: #ffffff;
    403             padding: 0;
    404         }
    405 
    406         .hero-subtitle {
    407             font-size: 16px;
    408             margin: 0;
    409             max-width: 600px;
    410             line-height: 1.4;
    411             color: #ddd;
    412             text-align: left;
    413         }
    414 
    415         /* Content Sections */
    416         .welcome-content {
    417             display: flex;
    418             flex-direction: column;
    419             gap: 20px;
    420         }
    421 
    422         .section-header {
    423             text-align: center;
    424             margin-bottom: 20px;
    425         }
    426 
    427         .section-header h2 {
    428             margin: 0 0 6px;
    429             font-size: 22px;
    430             color: #1e1e1e;
    431             font-weight: 600;
    432         }
    433 
    434         .section-header p {
    435             margin: 0;
    436             font-size: 14px;
    437             color: #666;
    438         }
    439 
    440         /* Quick Actions */
    441         .quick-actions-section {
    442             background: white;
    443             padding: 25px;
    444             border-radius: 12px;
    445             box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    446         }
    447 
    448         .actions-grid {
    449             display: grid;
    450             grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    451             gap: 15px;
    452         }
    453 
    454         .action-card {
    455             display: flex;
    456             align-items: center;
    457             padding: 18px;
    458             background: #f8f9fa;
    459             border: 2px solid transparent;
    460             border-radius: 10px;
    461             text-decoration: none;
    462             color: inherit;
    463             transition: all 0.3s ease;
    464             position: relative;
    465             overflow: hidden;
    466         }
    467 
    468         .action-card:hover {
    469             transform: translateY(-5px);
    470             box-shadow: 0 10px 30px rgba(0,0,0,0.15);
    471             border-color: #000000;
    472         }
    473 
    474         .action-icon {
    475             width: 40px;
    476             height: 40px;
    477             background: #000;
    478             border-radius: 10px;
    479             display: flex;
    480             align-items: center;
    481             justify-content: center;
    482             margin-right: 15px;
    483             flex-shrink: 0;
    484         }
    485 
    486 
    487         .action-icon .dashicons {
    488             font-size: 20px;
    489             color: white;
    490         }
    491 
    492         .action-content {
    493             flex: 1;
    494         }
    495 
    496         .action-content h3 {
    497             margin: 0 0 4px;
    498             font-size: 16px;
    499             font-weight: 600;
    500         }
    501 
    502         .action-content p {
    503             margin: 0;
    504             font-size: 13px;
    505             opacity: 0.8;
    506         }
    507 
    508         .action-arrow {
    509             font-size: 20px;
    510             font-weight: bold;
    511             margin-left: 15px;
    512             transition: transform 0.3s ease;
    513         }
    514 
    515         .action-card:hover .action-arrow {
    516             transform: translateX(5px);
    517         }
    518 
    519         /* Widgets Showcase */
    520         .widgets-showcase {
    521             background: white;
    522             padding: 25px;
    523             border-radius: 12px;
    524             box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    525         }
    526 
    527         .widgets-grid {
    528             display: grid;
    529             grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    530             gap: 18px;
    531         }
    532 
    533         .widget-card {
    534             background: #f8f9fa;
    535             border-radius: 10px;
    536             padding: 18px;
    537             transition: all 0.3s ease;
    538             border: 2px solid transparent;
    539             position: relative;
    540         }
    541 
    542         .widget-card:hover {
    543             transform: translateY(-5px);
    544             box-shadow: 0 15px 40px rgba(0,0,0,0.1);
    545             border-color: #e1e5f2;
    546             background: white;
    547         }
    548 
    549         .widget-header {
    550             display: flex;
    551             justify-content: space-between;
    552             align-items: center;
    553             margin-bottom: 15px;
    554         }
    555 
    556         .widget-icon {
    557             width: 38px;
    558             height: 38px;
    559             border-radius: 10px;
    560             display: flex;
    561             align-items: center;
    562             justify-content: center;
    563             color: white;
    564             font-weight: bold;
    565             font-size: 18px;
    566         }
    567 
    568         .widget-letter {
    569             font-size: 18px;
    570             font-weight: 700;
    571         }
    572 
    573         .widget-status {
    574             display: flex;
    575             align-items: center;
    576             gap: 6px;
    577             font-size: 12px;
    578             color: #27ae60;
    579             background: rgba(39, 174, 96, 0.1);
    580             padding: 4px 10px;
    581             border-radius: 20px;
    582         }
    583 
    584         .widget-status.free {
    585             color: #2271b1;
    586             background: rgba(34, 113, 177, 0.1);
    587         }
    588 
    589         .status-dot {
    590             width: 6px;
    591             height: 6px;
    592             background: #27ae60;
    593             border-radius: 50%;
    594             animation: pulse-dot 2s infinite;
    595         }
    596 
    597         .widget-status.free .status-dot {
    598             background: #2271b1;
    599         }
    600 
    601         @keyframes pulse-dot {
    602             0%, 100% { opacity: 1; }
    603             50% { opacity: 0.5; }
    604         }
    605 
    606         .widget-content h3 {
    607             margin: 0 0 6px;
    608             font-size: 17px;
    609             font-weight: 600;
    610             color: #1e1e1e;
    611         }
    612 
    613         .widget-description {
    614             margin: 0 0 12px;
    615             color: #666;
    616             font-size: 13px;
    617         }
    618 
    619         .widget-features {
    620             display: flex;
    621             flex-wrap: wrap;
    622             gap: 8px;
    623         }
    624 
    625         .feature-tag {
    626             background: #e1e5f2;
    627             color: #5a67d8;
    628             padding: 3px 8px;
    629             border-radius: 15px;
    630             font-size: 10px;
    631             font-weight: 500;
    632         }
    633 
    634         /* Coming Soon Section */
    635         .coming-soon-section {
    636             position: relative;
    637             margin-top: 20px;
    638         }
    639 
    640         .coming-content {
    641             position: relative;
    642             z-index: 2;
    643         }
    644 
    645         .coming-header {
    646             text-align: center;
    647             margin-bottom: 25px;
    648         }
    649 
    650 
    651         .coming-header h2 {
    652             font-size: 24px;
    653             margin: 0 0 12px;
    654             font-weight: 600;
    655         }
    656 
    657         .beta-badge {
    658             display: inline-flex;
    659             align-items: center;
    660             gap: 8px;
    661             background: rgba(255,255,255,0.2);
    662             padding: 8px 20px;
    663             border-radius: 25px;
    664             backdrop-filter: blur(10px);
    665             border: 1px solid rgba(255,255,255,0.3);
    666         }
    667 
    668         .badge-text {
    669             font-size: 12px;
    670             font-weight: 500;
    671             text-transform: uppercase;
    672             letter-spacing: 1px;
    673         }
    674 
    675         .badge-pulse {
    676             width: 8px;
    677             height: 8px;
    678             background: #ff4757;
    679             border-radius: 50%;
    680             animation: pulse-badge 1.5s infinite;
    681         }
    682 
    683         @keyframes pulse-badge {
    684             0% {
    685                 box-shadow: 0 0 0 0 rgba(255, 71, 87, 0.7);
    686             }
    687             70% {
    688                 box-shadow: 0 0 0 10px rgba(255, 71, 87, 0);
    689             }
    690             100% {
    691                 box-shadow: 0 0 0 0 rgba(255, 71, 87, 0);
    692             }
    693         }
    694 
    695         .coming-widgets {
    696             display: grid;
    697             grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    698             gap: 18px;
    699             margin-bottom: 25px;
    700         }
    701 
    702         .coming-widget {
    703             background: #fff;
    704             border-radius: 12px;
    705             padding: 20px;
    706             backdrop-filter: blur(10px);
    707             border: 1px solid rgba(255,255,255,0.2);
    708             transition: all 0.3s ease;
    709         }
    710 
    711         .coming-widget:hover {
    712             transform: translateY(-5px);
    713         }
    714 
    715         .coming-widget-icon {
    716             width: 50px;
    717             height: 50px;
    718             border-radius: 12px;
    719             display: flex;
    720             align-items: center;
    721             justify-content: center;
    722             margin-bottom: 15px;
    723             position: relative;
    724             overflow: hidden;
    725         }
    726 
    727         .widget-emoji {
    728             font-size: 20px;
    729             z-index: 2;
    730         }
    731 
    732         .coming-widget-content h3 {
    733             margin: 0 0 8px;
    734             font-size: 17px;
    735             font-weight: 600;
    736         }
    737 
    738         .coming-widget-content p {
    739             margin: 0 0 12px;
    740             opacity: 0.9;
    741             line-height: 1.4;
    742             font-size: 13px;
    743         }
    744 
    745         .coming-status {
    746             display: inline-flex;
    747             align-items: center;
    748             background: rgba(255,255,255,0.2);
    749             padding: 5px 12px;
    750             border-radius: 20px;
    751             font-size: 11px;
    752             font-weight: 500;
    753         }
    754 
    755         .newsletter-signup {
    756             display: flex;
    757             align-items: center;
    758             gap: 15px;
    759             background: #fff;
    760             padding: 18px;
    761             border-radius: 12px;
    762             backdrop-filter: blur(10px);
    763         }
    764 
    765         .newsletter-icon {
    766             font-size: 32px;
    767         }
    768 
    769         .newsletter-content {
    770             flex: 1;
    771         }
    772 
    773         .newsletter-content h4 {
    774             margin: 0 0 4px;
    775             font-size: 16px;
    776         }
    777 
    778         .newsletter-content p {
    779             margin: 0;
    780             opacity: 0.9;
    781             font-size: 13px;
    782         }
    783 
    784         .newsletter-btn {
    785             background: white;
    786             color: #000000;
    787             padding: 10px 20px;
    788             border-radius: 20px;
    789             text-decoration: none;
    790             font-weight: 600;
    791             transition: all 0.3s ease;
    792             font-size: 13px;
    793             box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    794         }
    795 
    796         .newsletter-btn:hover {
    797             transform: translateY(-2px);
    798             box-shadow: 0 5px 15px rgba(0,0,0,0.2);
    799         }
    800 
    801 
    802 
    803         /* Responsive Design */
    804         @media (max-width: 768px) {
    805             .daily-slider-welcome {
    806                 margin: 10px;
    807             }
    808 
    809             .welcome-hero {
    810                 padding: 40px 25px;
    811             }
    812 
    813             .hero-stats {
    814                 gap: 15px;
    815             }
    816 
    817             .quick-actions-section,
    818             .widgets-showcase {
    819                 padding: 25px 20px;
    820             }
    821 
    822             .coming-soon-section {
    823                 padding: 40px 25px;
    824             }
    825 
    826             .actions-grid {
    827                 grid-template-columns: 1fr;
    828             }
    829 
    830             .widgets-grid {
    831                 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    832                 gap: 20px;
    833             }
    834 
    835             .coming-widgets {
    836                 grid-template-columns: 1fr;
    837                 gap: 20px;
    838             }
    839 
    840             .newsletter-signup {
    841                 flex-direction: column;
    842                 text-align: center;
    843                 gap: 15px;
    844             }
    845 
    846 
    847 
    848             .section-header h2 {
    849                 font-size: 24px;
     980                margin-bottom: 20px;
     981                backdrop-filter: blur(10px);
     982                border: 1px solid rgba(255, 255, 255, 0.3);
     983            }
     984
     985            .hero-icon .dashicons {
     986                font-size: 40px;
     987                color: white;
    850988            }
    851989
    852990            .welcome-hero h1 {
    853991                font-size: 28px;
    854             }
     992                margin: 0 0 8px;
     993                font-weight: 600;
     994                color: #ffffff;
     995                padding: 0;
     996            }
     997
     998            .hero-subtitle {
     999                font-size: 16px;
     1000                margin: 0;
     1001                max-width: 600px;
     1002                line-height: 1.4;
     1003                color: #ddd;
     1004                text-align: left;
     1005            }
     1006
     1007            /* Content Sections */
     1008            .welcome-content {
     1009                display: flex;
     1010                flex-direction: column;
     1011                gap: 20px;
     1012            }
     1013
     1014            .section-header {
     1015                text-align: center;
     1016                margin-bottom: 20px;
     1017            }
     1018
     1019            .section-header h2 {
     1020                margin: 0 0 6px;
     1021                font-size: 22px;
     1022                color: #1e1e1e;
     1023                font-weight: 600;
     1024            }
     1025
     1026            .section-header p {
     1027                margin: 0;
     1028                font-size: 14px;
     1029                color: #666;
     1030            }
     1031
     1032            /* Quick Actions */
     1033            .quick-actions-section {
     1034                background: white;
     1035                padding: 25px;
     1036                border-radius: 6px;
     1037                box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
     1038            }
     1039
     1040            .actions-grid {
     1041                display: grid;
     1042                grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
     1043                gap: 15px;
     1044            }
     1045
     1046            .action-card {
     1047                display: flex;
     1048                align-items: center;
     1049                padding: 18px;
     1050                background: #f8f9fa;
     1051                border: 2px solid transparent;
     1052                border-radius: 6px;
     1053                text-decoration: none;
     1054                color: inherit;
     1055                transition: all 0.3s ease;
     1056                position: relative;
     1057                overflow: hidden;
     1058            }
     1059
     1060            .action-card:hover {
     1061                transform: translateY(-5px);
     1062                box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
     1063                border-color: #000000;
     1064            }
     1065
     1066            .action-icon {
     1067                width: 40px;
     1068                height: 40px;
     1069                background: #000;
     1070                border-radius: 6px;
     1071                display: flex;
     1072                align-items: center;
     1073                justify-content: center;
     1074                margin-right: 15px;
     1075                flex-shrink: 0;
     1076            }
     1077
     1078
     1079            .action-icon .dashicons {
     1080                font-size: 20px;
     1081                color: white;
     1082            }
     1083
     1084            .action-content {
     1085                flex: 1;
     1086            }
     1087
     1088            .action-content h3 {
     1089                margin: 0 0 4px;
     1090                font-size: 16px;
     1091                font-weight: 600;
     1092            }
     1093
     1094            .action-content p {
     1095                margin: 0;
     1096                font-size: 13px;
     1097                opacity: 0.8;
     1098            }
     1099
     1100            .action-arrow {
     1101                font-size: 20px;
     1102                font-weight: bold;
     1103                margin-left: 15px;
     1104                transition: transform 0.3s ease;
     1105            }
     1106
     1107            .action-card:hover .action-arrow {
     1108                transform: translateX(5px);
     1109            }
     1110
     1111            /* Widgets Showcase */
     1112            .widgets-showcase {
     1113                background: white;
     1114                padding: 25px;
     1115                border-radius: 6px;
     1116                box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
     1117            }
     1118
     1119            .widgets-grid {
     1120                display: grid;
     1121                grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
     1122                gap: 18px;
     1123            }
     1124
     1125            .widget-card {
     1126                background: #f8f9fa;
     1127                border-radius: 6px;
     1128                padding: 18px;
     1129                transition: all 0.3s ease;
     1130                border: 2px solid transparent;
     1131                position: relative;
     1132            }
     1133
     1134            .widget-card:hover {
     1135                transform: translateY(-5px);
     1136                box-shadow: 0 15px 40px rgba(0, 0, 0, 0.1);
     1137                border-color: #e1e5f2;
     1138                background: white;
     1139            }
     1140
     1141            .widget-header {
     1142                display: flex;
     1143                justify-content: space-between;
     1144                align-items: center;
     1145                margin-bottom: 15px;
     1146            }
     1147
     1148            .widget-icon {
     1149                width: 38px;
     1150                height: 38px;
     1151                border-radius: 6px;
     1152                display: flex;
     1153                align-items: center;
     1154                justify-content: center;
     1155                color: white;
     1156                font-weight: bold;
     1157                font-size: 18px;
     1158            }
     1159
     1160            .widget-letter {
     1161                font-size: 18px;
     1162                font-weight: 700;
     1163            }
     1164
     1165            .widget-status {
     1166                display: flex;
     1167                align-items: center;
     1168                gap: 6px;
     1169                font-size: 12px;
     1170                color: #27ae60;
     1171                background: rgba(39, 174, 96, 0.1);
     1172                padding: 4px 10px;
     1173                border-radius: 20px;
     1174            }
     1175
     1176            .widget-status.free {
     1177                color: #2271b1;
     1178                background: rgba(34, 113, 177, 0.1);
     1179            }
     1180
     1181            .status-dot {
     1182                width: 6px;
     1183                height: 6px;
     1184                background: #27ae60;
     1185                border-radius: 50%;
     1186                animation: pulse-dot 2s infinite;
     1187            }
     1188
     1189            .widget-status.free .status-dot {
     1190                background: #2271b1;
     1191            }
     1192
     1193            @keyframes pulse-dot {
     1194
     1195                0%,
     1196                100% {
     1197                    opacity: 1;
     1198                }
     1199
     1200                50% {
     1201                    opacity: 0.5;
     1202                }
     1203            }
     1204
     1205            .widget-content h3 {
     1206                margin: 0 0 6px;
     1207                font-size: 17px;
     1208                font-weight: 600;
     1209                color: #1e1e1e;
     1210            }
     1211
     1212            .widget-description {
     1213                margin: 0 0 12px;
     1214                color: #666;
     1215                font-size: 13px;
     1216            }
     1217
     1218            .widget-features {
     1219                display: flex;
     1220                flex-wrap: wrap;
     1221                gap: 8px;
     1222            }
     1223
     1224            .feature-tag {
     1225                background: #e1e5f2;
     1226                color: #5a67d8;
     1227                padding: 3px 8px;
     1228                border-radius: 15px;
     1229                font-size: 10px;
     1230                font-weight: 500;
     1231            }
     1232
     1233            /* Coming Soon Section */
     1234            .coming-soon-section {
     1235                position: relative;
     1236                margin-top: 20px;
     1237            }
     1238
     1239            .coming-content {
     1240                position: relative;
     1241                z-index: 2;
     1242            }
     1243
     1244            .coming-header {
     1245                text-align: center;
     1246                margin-bottom: 25px;
     1247            }
     1248
    8551249
    8561250            .coming-header h2 {
    857                 font-size: 26px;
    858             }
    859         }
    860 
    861         @media (max-width: 480px) {
    862             .hero-stats {
    863                 flex-direction: column;
    864                 gap: 10px;
    865             }
    866 
    867             .stat-divider {
    868                 display: none;
    869             }
    870         }
     1251                font-size: 24px;
     1252                margin: 0 0 12px;
     1253                font-weight: 600;
     1254            }
     1255
     1256            .beta-badge {
     1257                display: inline-flex;
     1258                align-items: center;
     1259                gap: 8px;
     1260                background: rgba(255, 255, 255, 0.2);
     1261                padding: 8px 20px;
     1262                border-radius: 25px;
     1263                backdrop-filter: blur(10px);
     1264                border: 1px solid rgba(255, 255, 255, 0.3);
     1265            }
     1266
     1267            .badge-text {
     1268                font-size: 12px;
     1269                font-weight: 500;
     1270                text-transform: uppercase;
     1271                letter-spacing: 1px;
     1272            }
     1273
     1274            .badge-pulse {
     1275                width: 8px;
     1276                height: 8px;
     1277                background: #ff4757;
     1278                border-radius: 50%;
     1279                animation: pulse-badge 1.5s infinite;
     1280            }
     1281
     1282            @keyframes pulse-badge {
     1283                0% {
     1284                    box-shadow: 0 0 0 0 rgba(255, 71, 87, 0.7);
     1285                }
     1286
     1287                70% {
     1288                    box-shadow: 0 0 0 10px rgba(255, 71, 87, 0);
     1289                }
     1290
     1291                100% {
     1292                    box-shadow: 0 0 0 0 rgba(255, 71, 87, 0);
     1293                }
     1294            }
     1295
     1296            .coming-widgets {
     1297                display: grid;
     1298                grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
     1299                gap: 18px;
     1300                margin-bottom: 25px;
     1301            }
     1302
     1303            .coming-widget {
     1304                background: #fff;
     1305                border-radius: 6px;
     1306                padding: 20px;
     1307                backdrop-filter: blur(10px);
     1308                border: 1px solid rgba(255, 255, 255, 0.2);
     1309                transition: all 0.3s ease;
     1310            }
     1311
     1312            .coming-widget:hover {
     1313                transform: translateY(-5px);
     1314            }
     1315
     1316            .coming-widget-icon {
     1317                width: 50px;
     1318                height: 50px;
     1319                border-radius: 6px;
     1320                display: flex;
     1321                align-items: center;
     1322                justify-content: center;
     1323                margin-bottom: 15px;
     1324                position: relative;
     1325                overflow: hidden;
     1326            }
     1327
     1328            .widget-emoji {
     1329                font-size: 20px;
     1330                z-index: 2;
     1331            }
     1332
     1333            .coming-widget-content h3 {
     1334                margin: 0 0 8px;
     1335                font-size: 17px;
     1336                font-weight: 600;
     1337            }
     1338
     1339            .coming-widget-content p {
     1340                margin: 0 0 12px;
     1341                opacity: 0.9;
     1342                line-height: 1.4;
     1343                font-size: 13px;
     1344            }
     1345
     1346            .coming-status {
     1347                display: inline-flex;
     1348                align-items: center;
     1349                background: rgba(255, 255, 255, 0.2);
     1350                padding: 5px 12px;
     1351                border-radius: 20px;
     1352                font-size: 11px;
     1353                font-weight: 500;
     1354            }
     1355
     1356            .newsletter-signup {
     1357                display: flex;
     1358                align-items: center;
     1359                gap: 15px;
     1360                background: #fff;
     1361                padding: 18px;
     1362                border-radius: 6px;
     1363                backdrop-filter: blur(10px);
     1364            }
     1365
     1366            .newsletter-icon {
     1367                font-size: 32px;
     1368            }
     1369
     1370            .newsletter-content {
     1371                flex: 1;
     1372            }
     1373
     1374            .newsletter-content h4 {
     1375                margin: 0 0 4px;
     1376                font-size: 16px;
     1377            }
     1378
     1379            .newsletter-content p {
     1380                margin: 0;
     1381                opacity: 0.9;
     1382                font-size: 13px;
     1383            }
     1384
     1385            .newsletter-btn {
     1386                background: white;
     1387                color: #000000;
     1388                padding: 10px 20px;
     1389                border-radius: 20px;
     1390                text-decoration: none;
     1391                font-weight: 600;
     1392                transition: all 0.3s ease;
     1393                font-size: 13px;
     1394                box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
     1395            }
     1396
     1397            .newsletter-btn:hover {
     1398                transform: translateY(-2px);
     1399                box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
     1400            }
     1401
     1402
     1403
     1404            /* Responsive Design */
     1405            @media (max-width: 768px) {
     1406                .daily-slider-welcome {
     1407                    margin: 10px;
     1408                }
     1409
     1410                .welcome-hero {
     1411                    padding: 40px 25px;
     1412                }
     1413
     1414                .hero-stats {
     1415                    gap: 15px;
     1416                }
     1417
     1418                .quick-actions-section,
     1419                .widgets-showcase {
     1420                    padding: 25px 20px;
     1421                }
     1422
     1423                .coming-soon-section {
     1424                    padding: 40px 25px;
     1425                }
     1426
     1427                .actions-grid {
     1428                    grid-template-columns: 1fr;
     1429                }
     1430
     1431                .widgets-grid {
     1432                    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
     1433                    gap: 20px;
     1434                }
     1435
     1436                .coming-widgets {
     1437                    grid-template-columns: 1fr;
     1438                    gap: 20px;
     1439                }
     1440
     1441                .newsletter-signup {
     1442                    flex-direction: column;
     1443                    text-align: center;
     1444                    gap: 15px;
     1445                }
     1446
     1447
     1448
     1449                .section-header h2 {
     1450                    font-size: 24px;
     1451                }
     1452
     1453                .welcome-hero h1 {
     1454                    font-size: 28px;
     1455                }
     1456
     1457                .coming-header h2 {
     1458                    font-size: 26px;
     1459                }
     1460            }
     1461
     1462            @media (max-width: 480px) {
     1463                .hero-stats {
     1464                    flex-direction: column;
     1465                    gap: 10px;
     1466                }
     1467
     1468                .stat-divider {
     1469                    display: none;
     1470                }
     1471            }
    8711472        </style>
    872        
     1473
    8731474        <script>
    874         jQuery(document).ready(function($) {
    875             // Handle notice dismissal
    876             $('.dismiss-notice').on('click', function(e) {
    877                 e.preventDefault();
    878                 var widget = $(this).data('widget');
    879                
    880                 $.ajax({
    881                     url: ajaxurl,
    882                     type: 'POST',
    883                     data: {
    884                         action: 'dismiss_daily_slider_notice',
    885                         widget: widget,
    886                         nonce: '<?php echo wp_create_nonce('daily_slider_dismiss_notice'); ?>'
    887                     },
    888                     success: function(response) {
    889                         $('.daily-slider-notice-container').fadeOut(300, function() {
    890                             $(this).remove();
    891                         });
    892                     }
     1475            jQuery(document).ready(function($) {
     1476                // Handle notice dismissal
     1477                $('.dismiss-notice').on('click', function(e) {
     1478                    e.preventDefault();
     1479                    var widget = $(this).data('widget');
     1480
     1481                    $.ajax({
     1482                        url: ajaxurl,
     1483                        type: 'POST',
     1484                        data: {
     1485                            action: 'dismiss_daily_slider_notice',
     1486                            widget: widget,
     1487                            nonce: '<?php echo wp_create_nonce('daily_slider_dismiss_notice'); ?>'
     1488                        },
     1489                        success: function(response) {
     1490                            $('.daily-slider-notice-container').fadeOut(300, function() {
     1491                                $(this).remove();
     1492                            });
     1493                        }
     1494                    });
    8931495                });
    8941496            });
    895         });
    8961497        </script>
    897         <?php
     1498<?php
    8981499    }
    8991500}
  • daily-slider/trunk/admin/widget-manager.php

    r3423716 r3445042  
    1919        self::add_widget('pixel', [
    2020            'name' => __('Pixel (Hero Slider)', 'daily-slider'),
    21             'description' => __('Full-screen hero slider widget for showcasing high-quality images and content.', 'daily-slider'),
    2221            'icon' => 'dashicons-format-image',
    2322            'category' => 'current',
    2423            'status' => 'active',
    25             'features' => [
    26                 __('Full-screen layouts', 'daily-slider'),
    27                 __('Responsive design', 'daily-slider'),
    28                 __('Custom animations', 'daily-slider')
    29             ]
     24            'url' => 'https://xpospark.com/plugin/daily-slider/demo/pixel/',
    3025        ]);
    3126
    3227        self::add_widget('eldorado', [
    3328            'name' => __('Eldorado (Image Carousel)', 'daily-slider'),
    34             'description' => __('Elegant image carousel for portfolio showcases and image galleries.', 'daily-slider'),
    3529            'icon' => 'dashicons-images-alt2',
    3630            'category' => 'current',
    3731            'status' => 'active',
    38             'features' => [
    39                 __('Portfolio showcase', 'daily-slider'),
    40                 __('Image galleries', 'daily-slider'),
    41                 __('Hover effects', 'daily-slider')
    42             ]
     32            'url' => 'https://xpospark.com/plugin/daily-slider/demo/eldorado/',
    4333        ]);
    4434
    4535        self::add_widget('review_carousel', [
    4636            'name' => __('Review Carousel', 'daily-slider'),
    47             'description' => __('Display customer testimonials and reviews in an interactive carousel format.', 'daily-slider'),
    4837            'icon' => 'dashicons-star-filled',
    4938            'category' => 'current',
    5039            'status' => 'active',
    51             'features' => [
    52                 __('Customer reviews', 'daily-slider'),
    53                 __('Star ratings', 'daily-slider'),
    54                 __('Interactive carousel', 'daily-slider')
    55             ]
     40            'url' => 'https://xpospark.com/plugin/daily-slider/demo/review-carousel/',
    5641        ]);
    5742
    5843        self::add_widget('marquee', [
    5944            'name' => __('Marquee Slider', 'daily-slider'),
    60             'description' => __('Smooth scrolling marquee for logos, testimonials, and continuous content loops with horizontal and vertical scrolling options.', 'daily-slider'),
    6145            'icon' => 'dashicons-editor-code',
    6246            'category' => 'current',
    6347            'status' => 'active',
    64             'features' => [
    65                 __('Horizontal & vertical scrolling', 'daily-slider'),
    66                 __('Continuous scrolling', 'daily-slider'),
    67                 __('Logo showcase', 'daily-slider'),
    68                 __('Speed control', 'daily-slider'),
    69                 __('Pause on hover', 'daily-slider'),
    70                 __('Edge masking effects', 'daily-slider')
    71             ]
     48            'url' => 'https://xpospark.com/plugin/daily-slider/demo/marquee-slider/',
    7249        ]);
    7350
    7451
    7552        self::add_widget('testimonials_marquee', [
    76             'name' => __('Testimonials Slider', 'daily-slider'),
    77             'description' => __('Smooth scrolling marquee for logos, testimonials, and continuous content loops with horizontal and vertical scrolling options.', 'daily-slider'),
     53            'name' => __('Testimonials Marquee', 'daily-slider'),
    7854            'icon' => 'dashicons-editor-code',
    7955            'category' => 'current',
    8056            'status' => 'active',
    81             'features' => [
    82                 __('Horizontal & vertical scrolling', 'daily-slider'),
    83                 __('Continuous scrolling', 'daily-slider'),
    84                 __('Review showcase', 'daily-slider'),
    85                 __('Speed control', 'daily-slider'),
    86                 __('Pause on hover', 'daily-slider'),
    87                 __('Edge masking effects', 'daily-slider')
    88             ]
     57            'url' => 'https://xpospark.com/plugin/daily-slider/demo/marquee-testimonials/',
    8958        ]);
    9059
     
    9261        self::add_widget('post_slider', [
    9362            'name' => __('Post Slider', 'daily-slider'),
    94             'description' => __('Dynamic blog post slider with custom layouts, filters, and WordPress integration.', 'daily-slider'),
    9563            'icon' => 'dashicons-admin-post',
    9664            'category' => 'coming_soon',
    9765            'status' => 'coming_soon',
    98             'features' => [
    99                 __('Dynamic content', 'daily-slider'),
    100                 __('Custom post types', 'daily-slider'),
    101                 __('Advanced filters', 'daily-slider')
    102             ]
    10366        ]);
    10467
    10568        self::add_widget('post_carousel', [
    10669            'name' => __('Post Carousel', 'daily-slider'),
    107             'description' => __('Interactive carousel for WordPress posts with categories, tags, and custom layouts.', 'daily-slider'),
    10870            'icon' => 'dashicons-admin-page',
    10971            'category' => 'coming_soon',
    11072            'status' => 'coming_soon',
    111             'features' => [
    112                 __('WordPress posts', 'daily-slider'),
    113                 __('Category filters', 'daily-slider'),
    114                 __('Custom layouts', 'daily-slider')
    115             ]
    11673        ]);
    11774
    11875        self::add_widget('woo_products', [
    11976            'name' => __('WooCommerce Products', 'daily-slider'),
    120             'description' => __('Product carousel with cart integration, pricing display, and WooCommerce compatibility.', 'daily-slider'),
    12177            'icon' => 'dashicons-cart',
    12278            'category' => 'coming_soon',
    12379            'status' => 'coming_soon',
    124             'features' => [
    125                 __('Product showcase', 'daily-slider'),
    126                 __('Cart integration', 'daily-slider'),
    127                 __('Pricing display', 'daily-slider')
    128             ]
    12980        ]);
    13081    }
     
    199150            $enabled_widgets = array();
    200151        }
     152
     153        // Get plugin data for version
     154        $plugin_data = get_file_data(plugin_dir_path(dirname(__FILE__)) . 'daily-slider.php', array(
     155            'Version' => 'Version'
     156        ));
     157        $version = !empty($plugin_data['Version']) ? $plugin_data['Version'] : '1.0.4';
     158
     159        // Calculate widget counts
     160        $total_widgets = count($current_widgets);
     161        $enabled_count = count(array_filter($enabled_widgets));
     162       
     163        // Dashboard and widgets URLs
     164        $dashboard_url = admin_url('admin.php?page=daily-slider-dashboard');
     165        $widgets_url = admin_url('admin.php?page=daily-slider-widgets');
     166
    201167        ?>
    202         <div class="daily-slider-widgets-manager">
    203            
     168        <div class="daily-slider-admin">
     169            <div class="ds-topbar">
     170                <div class="ds-topbar__left">
     171                    <div class="ds-brand">
     172                        <span class="ds-brand__icon dashicons dashicons-slides"></span>
     173                    </div>
     174                    <div class="ds-tabs">
     175                        <a class="ds-tab" href="<?php echo esc_url($dashboard_url); ?>"><?php _e('Dashboard', 'daily-slider'); ?></a>
     176                        <a class="ds-tab is-active" href="<?php echo esc_url($widgets_url); ?>"><?php _e('Widgets', 'daily-slider'); ?></a>
     177                    </div>
     178                </div>
     179                <div class="ds-topbar__right">
     180                    <span class="ds-version"><?php echo esc_html(sprintf(__('Version %s', 'daily-slider'), $version)); ?></span>
     181                </div>
     182            </div>
     183
    204184            <!-- Show success message after saving -->
    205185            <?php if (isset($_GET['settings-updated']) && $_GET['settings-updated'] === 'true'): ?>
     
    208188            </div>
    209189            <?php endif; ?>
    210            
    211             <!-- Header -->
    212             <div class="widgets-header">
    213                 <div class="header-content">
    214                     <h1><?php _e('Widget Manager', 'daily-slider'); ?></h1>
    215                     <p><?php _e('Enable or disable widgets as needed for your website. Only enabled widgets will appear in Elementor.', 'daily-slider'); ?></p>
    216                 </div>
    217                 <div class="header-actions">
    218                     <button type="submit" form="widgets-form" class="button button-primary button-large header-save-btn">
    219                         <span class="dashicons dashicons-saved"></span>
    220                         <?php _e('Save Settings', 'daily-slider'); ?>
    221                     </button>
    222                 </div>
    223             </div>
    224 
    225             <!-- Widget Form -->
    226             <form method="post" action="options.php" class="widgets-form" id="widgets-form">
    227                 <?php settings_fields('daily_slider_settings'); ?>
    228                
    229                 <!-- Current Widgets Section -->
    230                 <div class="widgets-section">
    231                     <div class="section-header">
    232                         <h2><?php _e('Available Widgets', 'daily-slider'); ?></h2>
    233                         <div class="bulk-actions">
    234                             <button type="button" class="button enable-all"><?php _e('Enable All', 'daily-slider'); ?></button>
    235                             <button type="button" class="button disable-all"><?php _e('Disable All', 'daily-slider'); ?></button>
     190
     191            <div class="ds-col ds-col--main">
     192                <form method="post" action="options.php" class="widgets-form" id="widgets-form">
     193                    <?php settings_fields('daily_slider_settings'); ?>
     194                   
     195                    <div class="ds-card">
     196                        <div class="ds-card__head ds-card__head--split">
     197                            <h2 class="ds-card__title"><?php _e('Available Widgets', 'daily-slider'); ?></h2>
     198                             <div class="ds-hero__actions">
     199                                <button type="button" class="ds-btn ds-btn--ghost enable-all">
     200                                    <span class="dashicons dashicons-yes"></span>
     201                                    <?php _e('Enable All', 'daily-slider'); ?>
     202                                </button>
     203                                <button type="button" class="ds-btn ds-btn--ghost disable-all">
     204                                    <span class="dashicons dashicons-dismiss"></span>
     205                                    <?php _e('Disable All', 'daily-slider'); ?>
     206                                </button>
     207                                <button type="submit" form="widgets-form" class="ds-btn ds-btn--primary">
     208                                    <span class="dashicons dashicons-saved"></span>
     209                                    <?php _e('Save Settings', 'daily-slider'); ?>
     210                                </button>
     211                            </div>
     212                        </div>
     213
     214                        <div class="ds-features">
     215                            <?php foreach ($current_widgets as $key => $widget):
     216                                $is_enabled = isset($enabled_widgets[$key]) && $enabled_widgets[$key];
     217                            ?>
     218                            <div class="ds-feature ds-widget-item <?php echo $is_enabled ? 'is-enabled' : ''; ?>">
     219                                <div class="ds-feature__meta">
     220                                    <div class="ds-feature__title"><?php echo esc_html($widget['name']); ?></div>
     221                                    <a href="<?php echo esc_url($widget['url']); ?>" target="_blank" rel="noopener noreferrer" class="ds-feature__link">
     222                                        <?php _e('View Demo', 'daily-slider'); ?>
     223                                    </a>
     224                                </div>
     225                                <div class="ds-feature__actions">
     226                                    <div class="ds-feature__icon">
     227                                        <span class="dashicons <?php echo esc_attr($widget['icon']); ?>"></span>
     228                                    </div>
     229                                    <div class="ds-widget-toggle">
     230                                        <label class="ds-toggle-switch">
     231                                            <input type="checkbox"
     232                                                    name="daily_slider_widgets[<?php echo esc_attr($key); ?>]"
     233                                                    value="1"
     234                                                    <?php checked($is_enabled); ?>
     235                                                    class="ds-widget-checkbox">
     236                                            <span class="ds-toggle-slider"></span>
     237                                        </label>
     238                                    </div>
     239                                </div>
     240                            </div>
     241                            <?php endforeach; ?>
    236242                        </div>
    237243                    </div>
    238                    
    239                     <div class="widgets-grid">
    240                         <?php foreach ($current_widgets as $key => $widget): ?>
    241                         <div class="widget-card">
    242                             <div class="widget-header">
    243                                 <div class="widget-icon">
    244                                     <span class="dashicons <?php echo esc_attr($widget['icon']); ?>"></span>
    245                                 </div>
    246                                 <div class="widget-toggle">
    247                                     <label class="toggle-switch">
    248                                         <input type="checkbox"
    249                                                name="daily_slider_widgets[<?php echo esc_attr($key); ?>]"
    250                                                value="1"
    251                                                <?php checked(isset($enabled_widgets[$key]) && $enabled_widgets[$key]); ?>
    252                                                class="widget-checkbox">
    253                                         <span class="toggle-slider"></span>
    254                                     </label>
    255                                 </div>
    256                             </div>
    257                            
    258                             <div class="widget-content">
    259                                 <h3><?php echo esc_html($widget['name']); ?></h3>
    260                                 <p class="widget-description"><?php echo esc_html($widget['description']); ?></p>
    261                                
    262                                 <div class="widget-features">
    263                                     <h4><?php _e('Features:', 'daily-slider'); ?></h4>
    264                                     <ul class="features-list">
    265                                         <?php foreach ($widget['features'] as $feature): ?>
    266                                         <li><?php echo esc_html($feature); ?></li>
    267                                         <?php endforeach; ?>
    268                                     </ul>
    269                                 </div>
    270                                
    271                                 <div class="widget-status">
    272                                     <span class="status-badge free">
    273                                         <span class="status-dot"></span>
    274                                         <?php _e('Free', 'daily-slider'); ?>
    275                                     </span>
    276                                 </div>
    277                             </div>
    278                         </div>
    279                         <?php endforeach; ?>
    280                     </div>
    281                 </div>
    282 
    283             </form>
    284 
     244                </form>
     245            </div>
     246
     247            <div class="ds-footer">
     248                <?php echo esc_html(sprintf(__('© %s Daily Slider. All rights reserved.', 'daily-slider'), date_i18n('Y'))); ?>
     249            </div>
    285250        </div>
    286251
     
    296261        ?>
    297262        <style>
    298         .daily-slider-widgets-manager {
    299             max-width: 1200px;
    300             margin: 15px 0;
    301             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     263        /* Atomic-style Dashboard (matching welcome page) */
     264        .daily-slider-admin {
     265                max-width: 1200px;
     266                margin: 20px 0 0;
     267                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     268                background: #f9fafb;
     269                border-radius: 6px;
     270                overflow: hidden;
     271        }
     272
     273        .daily-slider-admin a {
     274            text-decoration: none;
     275        }
     276
     277        .ds-topbar {
     278                display: flex;
     279                align-items: center;
     280                justify-content: space-between;
     281                background: #fff;
     282                padding: 0 20px;
     283                border-bottom: 1px solid #e5e7eb;
     284        }
     285
     286        .ds-topbar__left {
     287            display: flex;
     288            align-items: center;
     289            gap: 30px;
     290        }
     291
     292        .ds-brand {
     293            width: 40px;
     294            height: 40px;
     295            border-radius: 6px;
     296            background: linear-gradient(135deg, #a855f7, #7c3aed);
     297            display: flex;
     298            align-items: center;
     299            justify-content: center;
     300        }
     301
     302        .ds-brand__icon {
     303            color: #fff;
     304            font-size: 18px;
     305            width: 18px;
     306            height: 18px;
     307        }
     308
     309        .ds-tabs {
     310            display: flex;
     311            gap: 18px;
     312        }
     313
     314            .ds-tab {
     315                color: #111827;
     316                font-weight: 600;
     317                padding: 24px 0;
     318                border-bottom: 2px solid transparent;
     319                box-shadow: none !important;
     320                outline: none !important;
     321            }
     322
     323        .ds-tab.is-active {
     324            color: #7c3aed;
     325            border-bottom-color: #7c3aed;
     326        }
     327
     328        .ds-version {
     329            display: inline-flex;
     330            align-items: center;
     331            background: rgba(124, 58, 237, 0.12);
     332            color: #7c3aed;
     333            padding: 6px 12px;
     334            border-radius: 999px;
     335            font-weight: 700;
     336            font-size: 12px;
     337        }
     338
     339        .ds-grid {
     340            display: grid;
     341            grid-template-columns: 1.6fr 1fr;
     342            gap: 18px;
     343            align-items: start;
     344        }
     345
     346        .ds-card {
     347            background: #fff;
     348            padding: 20px;
     349            border-radius: 8px;
     350            border: 1px solid #f1f1f1;
     351        }
     352
     353        .ds-col--main{
     354            padding: 20px;
     355        }
     356
     357        .ds-hero {
     358            padding: 22px;
     359        }
     360
     361        .ds-hero__title {
     362            margin: 0 0 6px;
     363            font-size: 28px;
     364            color: #111827;
     365        }
     366
     367        .ds-hero__subtitle {
     368            margin: 0 0 16px;
     369            color: #6b7280;
     370            font-size: 14px;
     371            line-height: 1.5;
     372            max-width: 620px;
     373        }
     374
     375        .ds-hero__actions {
     376            display: flex;
     377            gap: 12px;
     378            flex-wrap: wrap;
     379        }
     380
     381        .ds-btn {
     382            display: inline-flex;
     383            align-items: center;
     384            justify-content: center;
     385            gap: 8px;
     386            padding: 10px 16px;
     387            border-radius: 6px;
     388            font-weight: 700;
     389            font-size: 13px;
     390            border: 1px solid transparent;
     391            cursor: pointer;
     392            background: transparent;
     393        }
     394
     395        .ds-btn .dashicons {
     396            font-size: 16px;
     397            width: 16px;
     398            height: 16px;
     399        }
     400
     401        .ds-btn--primary {
     402            background: #a855f7;
     403            color: #fff;
     404        }
     405
     406        .ds-btn--primary:hover {
     407            background: #9333ea;
     408            color: #fff;
     409        }
     410
     411        .ds-btn--ghost {
     412            background: #fff;
     413            border-color: #e5e7eb;
     414            color: #111827;
     415        }
     416
     417        .ds-btn--ghost:hover {
     418            border-color: #cbd5e1;
     419            background: #f9fafb;
     420            color: #111827;
     421        }
     422
     423        .ds-btn--wide {
     424            width: 100%;
     425            background: #a855f7;
     426            color: #fff;
     427            margin-top: 14px;
     428            padding: 12px 16px;
     429        }
     430
     431        .ds-btn--wide:hover {
     432            background: #9333ea;
     433            color: #fff;
     434        }
     435
     436        .ds-card__head {
     437            margin-bottom: 20px;
     438        }
     439
     440        .ds-card__head--split {
     441            display: flex;
     442            align-items: center;
     443            justify-content: space-between;
     444            gap: 12px;
     445        }
     446
     447        .ds-card__title {
     448            margin: 0;
     449            font-size: 16px;
     450            color: #111827;
     451            font-weight: 800;
     452        }
     453
     454        .ds-stats {
     455            display: grid;
     456            grid-template-columns: repeat(3, minmax(0, 1fr));
     457            gap: 12px;
     458        }
     459
     460        .ds-stat {
     461            background: #f9fafb;
     462            border: 1px solid #eef2f7;
     463            border-radius: 6px;
     464            padding: 14px;
     465            display: flex;
     466            align-items: center;
     467            gap: 12px;
     468        }
     469
     470        .ds-stat__icon {
     471            width: 36px;
     472            height: 36px;
     473            border-radius: 6px;
     474            background: #fff;
     475            border: 1px solid #eef2f7;
     476            display: flex;
     477            align-items: center;
     478            justify-content: center;
     479            color: #111827;
     480            font-size: 18px;
     481        }
     482
     483        .ds-stat__label {
     484            font-size: 12px;
     485            color: #6b7280;
     486            font-weight: 700;
     487        }
     488
     489        .ds-stat__value {
     490            font-size: 18px;
     491            color: #111827;
     492            font-weight: 900;
     493            margin-top: 2px;
     494        }
     495
     496        .ds-features {
     497            display: grid;
     498            grid-template-columns: repeat(4, minmax(0, 1fr));
     499            gap: 12px;
     500        }
     501
     502        .ds-feature {
     503            border: 1px solid #eef2f7;
     504            border-radius: 6px;
     505            padding: 14px;
     506            display: flex;
     507            align-items: center;
     508            justify-content: space-between;
     509            flex-direction: column-reverse;
     510            gap: 20px;
     511            background: #fff;
     512            transition: all 0.3s ease;
     513        }
     514
     515        .ds-feature__actions,
     516        .ds-feature__meta {
     517            display: flex;
     518            align-items: center;
     519            justify-content: space-between;
     520            width: 100%;
     521            box-sizing: border-box;
     522        }
     523
     524        .ds-feature__title {
     525            font-weight: 800;
     526            color: #111827;
     527            margin: 0;
     528        }
     529
     530        .ds-feature__link {
     531            font-size: 12px;
     532            font-weight: 500;
     533            color: #626474;
     534            outline: none;
     535            text-decoration: none;
     536            box-shadow: none;
     537            &:hover {
     538                color: #111827;
     539            }
     540        }
     541
     542        .ds-feature__desc {
     543            color: #6b7280;
     544            font-size: 12px;
     545            line-height: 1.4;
     546        }
     547
     548        .ds-widget-toggle {
     549            flex-shrink: 0;
     550        }
     551
     552        .ds-toggle-switch {
     553            position: relative;
     554            display: inline-block;
     555            width: 44px;
     556            height: 24px;
     557        }
     558
     559        .ds-widget-checkbox {
     560            opacity: 0;
     561            width: 0;
     562            height: 0;
     563        }
     564
     565        .ds-toggle-slider {
     566            position: absolute;
     567            cursor: pointer;
     568            top: 0;
     569            left: 0;
     570            right: 0;
     571            bottom: 0;
     572            background-color: #e5e7eb;
     573            transition: .3s;
     574            border-radius: 24px;
     575        }
     576
     577        .ds-toggle-slider:before {
     578            position: absolute;
     579            content: "";
     580            height: 18px;
     581            width: 18px;
     582            left: 3px;
     583            bottom: 3px;
     584            background-color: white;
     585            transition: .3s;
     586            border-radius: 50%;
     587        }
     588
     589        .ds-widget-checkbox:checked + .ds-toggle-slider {
     590            background-color: #a855f7;
     591        }
     592
     593        .ds-widget-checkbox:checked + .ds-toggle-slider:before {
     594            transform: translateX(20px);
     595        }
     596
     597        .ds-pro__badge {
     598            display: inline-flex;
     599            align-items: center;
     600            gap: 8px;
     601            color: #111827;
     602            font-weight: 900;
     603            font-size: 12px;
     604            letter-spacing: 0.04em;
     605            margin-bottom: 10px;
     606        }
     607
     608        .ds-pro__badge .dashicons {
     609            color: #a855f7;
     610        }
     611
     612        .ds-pro__title {
     613            font-size: 20px;
     614            font-weight: 900;
     615            color: #111827;
     616            margin: 0 0 8px;
     617        }
     618
     619        .ds-pro__text {
     620            color: #6b7280;
     621            font-size: 13px;
     622            line-height: 1.5;
     623            margin-bottom: 12px;
     624        }
     625
     626        .ds-pro__list {
     627            display: grid;
     628            grid-template-columns: repeat(2, minmax(0, 1fr));
     629            gap: 10px 14px;
     630            margin-top: 10px;
     631        }
     632
     633        .ds-pro__item {
     634            display: flex;
     635            align-items: center;
     636            gap: 8px;
     637            color: #374151;
     638            font-weight: 700;
     639            font-size: 12px;
     640        }
     641
     642        .ds-check {
     643            width: 16px;
     644            height: 16px;
     645            border-radius: 999px;
     646            background: rgba(168, 85, 247, 0.18);
     647            border: 1px solid rgba(168, 85, 247, 0.25);
     648            position: relative;
     649            flex: 0 0 16px;
     650        }
     651
     652        .ds-check:after {
     653            content: "";
     654            position: absolute;
     655            left: 5px;
     656            top: 3px;
     657            width: 5px;
     658            height: 8px;
     659            border-right: 2px solid #a855f7;
     660            border-bottom: 2px solid #a855f7;
     661            transform: rotate(45deg);
     662        }
     663
     664        .ds-quick__list {
     665            display: flex;
     666            flex-direction: column;
     667            gap: 10px;
     668        }
     669
     670        .ds-quick__item {
     671            display: flex;
     672            align-items: center;
     673            gap: 10px;
     674            padding: 10px 12px;
     675            border-radius: 6px;
     676            border: 1px solid #eef2f7;
     677            background: #fff;
     678            color: #111827;
     679            font-weight: 700;
     680            cursor: pointer;
     681        }
     682
     683        .ds-quick__item:hover {
     684            background: #f9fafb;
     685            border-color: #e5e7eb;
     686            color: #111827;
     687        }
     688
     689        .ds-quick__item--primary {
     690            background: #a855f7;
     691            color: #fff;
     692            border-color: #a855f7;
     693        }
     694
     695        .ds-quick__item--primary:hover {
     696            background: #9333ea;
     697            color: #fff;
     698            border-color: #9333ea;
     699        }
     700
     701        .ds-footer {
     702            text-align: center;
     703            padding: 20px 0;
     704            border-top: 1px solid #f3f3f3;
     705            background: #ffffff;
     706            color: #6d7882;
     707            font-size: 14px;
    302708        }
    303709
     
    319725        }
    320726
     727        /* Responsive Design */
     728        @media (max-width: 768px) {
     729            .ds-grid {
     730                grid-template-columns: 1fr;
     731            }
     732           
     733            .ds-stats {
     734                grid-template-columns: 1fr;
     735            }
     736           
     737            .ds-pro__list {
     738                grid-template-columns: 1fr;
     739            }
     740           
     741            .ds-hero__actions {
     742                flex-direction: column;
     743                align-items: stretch;
     744            }
     745           
     746            .ds-card__head--split {
     747                flex-direction: column;
     748                align-items: stretch;
     749                gap: 8px;
     750            }
     751        }
     752
    321753        /* Header */
    322754        .widgets-header {
     
    326758            background: white;
    327759            padding: 30px 40px;
    328             border-radius: 12px;
     760            border-radius: 6px;
    329761            box-shadow: 0 2px 10px rgba(0,0,0,0.08);
    330762            margin-bottom: 30px;
     
    383815        .widgets-section {
    384816            background: white;
    385             border-radius: 12px;
     817            border-radius: 6px;
    386818            padding: 25px;
    387819            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
     
    433865        .widget-card {
    434866            border: 2px solid #e1e1e1;
    435             border-radius: 10px;
     867            border-radius: 6px;
    436868            padding: 20px;
    437869            transition: all 0.3s ease;
     
    457889            height: 42px;
    458890            background: #000000;
    459             border-radius: 10px;
     891            border-radius: 6px;
    460892            display: flex;
    461893            align-items: center;
     
    6531085            $('.enable-all').on('click', function(e) {
    6541086                e.preventDefault();
    655                 $('.widget-checkbox').prop('checked', true);
    656                 $('.header-save-btn, .form-actions .button-primary').addClass('button-pulse');
     1087                $('.ds-widget-checkbox').prop('checked', true);
     1088                updateWidgetStates();
     1089                highlightSaveButton();
    6571090            });
    6581091
     
    6601093            $('.disable-all').on('click', function(e) {
    6611094                e.preventDefault();
    662                 $('.widget-checkbox').prop('checked', false);
    663                 $('.header-save-btn, .form-actions .button-primary').addClass('button-pulse');
     1095                $('.ds-widget-checkbox').prop('checked', false);
     1096                updateWidgetStates();
     1097                highlightSaveButton();
    6641098            });
    6651099           
    6661100            // Add visual feedback when checkboxes change
    667             $('.widget-checkbox').on('change', function() {
    668                 $('.header-save-btn, .form-actions .button-primary').addClass('button-pulse');
     1101            $('.ds-widget-checkbox').on('change', function() {
     1102                updateWidgetStates();
     1103                highlightSaveButton();
    6691104            });
    670            
    671             // Remove pulse effect after a short time
    672             setTimeout(function() {
    673                 $('.button-pulse').removeClass('button-pulse');
    674             }, 2000);
     1105
     1106            // Update widget visual states
     1107            function updateWidgetStates() {
     1108                $('.ds-widget-item').each(function() {
     1109                    var $item = $(this);
     1110                    var $checkbox = $item.find('.ds-widget-checkbox');
     1111                   
     1112                    if ($checkbox.prop('checked')) {
     1113                        $item.addClass('is-enabled');
     1114                    } else {
     1115                        $item.removeClass('is-enabled');
     1116                    }
     1117                });
     1118            }
     1119
     1120            // Highlight save buttons when changes are made
     1121            function highlightSaveButton() {
     1122                $('.ds-btn--primary').addClass('ds-btn-pulse');
     1123                $('.ds-quick__item--primary').addClass('ds-btn-pulse');
     1124               
     1125                setTimeout(function() {
     1126                    $('.ds-btn-pulse').removeClass('ds-btn-pulse');
     1127                }, 2000);
     1128            }
    6751129           
    6761130            // Form submission handler
    6771131            $('.widgets-form').on('submit', function() {
    678                 $('.header-save-btn, .form-actions .button-primary').text('<?php _e('Saving...', 'daily-slider'); ?>').prop('disabled', true);
    679                 $('.header-save-btn .dashicons').removeClass('dashicons-saved').addClass('dashicons-update');
     1132                $('.ds-btn--primary').text('<?php _e('Saving...', 'daily-slider'); ?>').prop('disabled', true);
     1133                $('.ds-quick__item--primary').text('<?php _e('Saving...', 'daily-slider'); ?>').prop('disabled', true);
    6801134            });
     1135
     1136            // Initialize widget states on page load
     1137            updateWidgetStates();
    6811138        });
    6821139        </script>
    6831140       
    6841141        <style>
    685         .button-pulse {
    686             animation: pulse-button 1s infinite;
     1142        .ds-btn-pulse {
     1143            animation: pulse 1s infinite;
    6871144        }
    6881145       
    689         @keyframes pulse-button {
    690             0% { box-shadow: 0 0 0 0 rgba(34, 113, 177, 0.7); }
    691             70% { box-shadow: 0 0 0 10px rgba(34, 113, 177, 0); }
    692             100% { box-shadow: 0 0 0 0 rgba(34, 113, 177, 0); }
     1146        @keyframes pulse {
     1147            0% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0.7); }
     1148            70% { box-shadow: 0 0 0 10px rgba(168, 85, 247, 0); }
     1149            100% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0); }
    6931150        }
    6941151        </style>
  • daily-slider/trunk/assets/css/widgets/testimonials-marquee.css

    r3423716 r3445042  
    9090.testimonial-card {
    9191  background: #ffffff;
    92   border-radius: 12px;
     92  border-radius: 6px;
    9393  padding: 24px;
    9494  border: 1px solid #f0f0f0;
  • daily-slider/trunk/daily-slider.php

    r3423731 r3445042  
    33 * Plugin Name: Daily Slider
    44 * Description: Enhance Elementor with customizable hero sliders, review carousels, and portfolio showcases, featuring responsive design, animations, and hover effects.
    5  * Version: 2.5.0
     5 * Version: 2.6.0
    66 * Author: wpcoder75
    77 * Author URI: https://github.com/asikwp75
     
    1919
    2020class DailySliderPlugin {
    21     const VERSION = '2.3.0';
     21    const VERSION = '2.6.0';
    2222    const MINIMUM_ELEMENTOR_VERSION = '3.26.0';
    2323    const MINIMUM_PHP_VERSION = '7.4';
  • daily-slider/trunk/readme.txt

    r3423731 r3445042  
    44Requires at least: 5.0
    55Tested up to: 6.9
    6 Stable Tag: 2.5.0
     6Stable Tag: 2.6.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    1111Professional Elementor slider addon with hero sliders, testimonial carousels, image galleries, and animated marquee widgets. Mobile-responsive with advanced customization options.
    1212
     13**[View Live Demos](https://xpospark.com/plugin/daily-slider/)** | **[Plugin Homepage](https://xpospark.com/plugin/daily-slider/)**
     14
    1315== Description ==
    1416
     
    1618
    1719**Perfect for WordPress developers, designers, and business owners** who want to build engaging websites that convert visitors into customers. Our slider widgets are mobile-first, SEO-optimized, and performance-focused to ensure fast loading times across all devices.
     20
     21### 🎬 Live Demos
     22
     23See Daily Slider in action! Explore our interactive demos to experience the full potential of each widget:
     24
     25**[View All Demos](https://xpospark.com/plugin/daily-slider/)** | **[Pixel Hero Slider](https://xpospark.com/plugin/daily-slider/demo/pixel/)** | **[Review Carousel](https://xpospark.com/plugin/daily-slider/demo/review/)** | **[Eldorado Gallery](https://xpospark.com/plugin/daily-slider/demo/eldorado/)** | **[Marquee Slider](https://xpospark.com/plugin/daily-slider/demo/marquee-slider/)** | **[Testimonials Marquee](https://xpospark.com/plugin/daily-slider/demo/marquee-testimonials/)**
    1826
    1927### Why Choose Daily Slider?
     
    2735**Regular Updates** - Compatible with latest WordPress and Elementor versions
    2836
    29 
    30 
    3137### Complete Slider Solution for WordPress:
    3238
     
    5258**Get started in minutes** with our intuitive drag-and-drop interface and transform your WordPress website into a conversion-focused, professional online presence.
    5359
     60**[Explore Live Demos →](https://xpospark.com/plugin/daily-slider/)**
     61
    5462== Premium Slider Widgets ==
    5563
    56 **Pixel Hero Slider**
     64**Explore each widget with live interactive demos:**
     65
     66**Pixel Hero Slider** - **[View Demo](https://xpospark.com/plugin/daily-slider/demo/pixel/)**
    5767- Full-screen responsive hero sections with parallax scrolling effects
    5868- Custom call-to-action buttons with conversion tracking
     
    6070- Perfect for landing pages, homepages, and sales pages
    6171
    62 **Review & Testimonial Carousel**  
     72**Review & Testimonial Carousel** - **[View Demo](https://xpospark.com/plugin/daily-slider/demo/review/)**
    6373- Customer testimonial slider with star ratings and photos
    6474- Social proof widgets to increase trust and conversions
     
    6676- Ideal for service businesses and e-commerce stores
    6777
    68 **Eldorado Image Gallery**
     78**Eldorado Image Gallery** - **[View Demo](https://xpospark.com/plugin/daily-slider/demo/eldorado/)**
    6979- Portfolio and product image carousels with lightbox
    7080- Masonry grid layouts and hover animation effects 
     
    7282- Great for photographers, designers, and online stores
    7383
    74 **Marquee Slider (NEW)**
     84**Marquee Slider** - **[View Demo](https://xpospark.com/plugin/daily-slider/demo/marquee-slider/)**
    7585- Horizontal and vertical scrolling text/logo animations
    7686- News ticker, brand showcase, and announcement bars
     
    7888- Perfect for promotions, partnerships, and dynamic content
    7989
     90**Testimonials Marquee (NEW)** - **[View Demo](https://xpospark.com/plugin/daily-slider/demo/marquee-testimonials/)**
     91- Dedicated testimonial scrolling widget with smooth animations
     92- Star rating system with customizable colors and sizes
     93- User profile sections with author names and company details
     94- Comprehensive styling controls for cards, backgrounds, and hover effects
     95- Responsive width controls for optimal display on all devices
     96
    8097== Installation ==
    8198
     
    109126
    110127== Changelog ==
     128
     129### = 2.6.0 [22nd January 2026] =
     130
     131* Improved: Widget Manager UI with enhanced layout featuring demo links and better visual organization.
     132* Improved: Welcome page dashboard with updated website links pointing to official plugin homepage.
     133* Improved: Quick Access section in dashboard with updated links to knowledge base and feature requests.
     134* Enhanced: Overall dashboard design with better spacing, alignment, and user-friendly interface improvements.
     135* Updated: Plugin homepage and demo URLs to https://xpospark.com/plugin/daily-slider/ for centralized documentation.
    111136
    112137### = 2.5.0 [19th December 2025] =
Note: See TracChangeset for help on using the changeset viewer.