PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.2
ShopBuilder – WooCommerce Builder For Elementor v3.2.2
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Models/ModuleList.php +159 -617 3.4.13.2.2 View file →
@@ -7,9 +7,8 @@
7 7
8 8 namespace RadiusTheme\SB\Models;
9 9
10 10 use RadiusTheme\SB\Helpers\Fns;
11 -use RadiusTheme\SB\Helpers\SvgIcons;
12 11 use RadiusTheme\SB\Models\Base\ListModel;
13 12 use RadiusTheme\SB\Modules\Badges\Badges;
14 13 use RadiusTheme\SB\Modules\CheckoutEditor\CheckoutFns;
15 14 use RadiusTheme\SB\Modules\VariationSwatches\SwatchesFns;
@@ -68,8 +67,9 @@
68 67 'badge' => 'new',
69 68 'package' => 'free',
70 69 'active' => 'on',
71 70 'base_class' => VariationSwatches::class,
71 + 'category' => 'general',
72 72 'active_field' => [
73 73 'label' => esc_html__( 'Enable Variation Swatches Module?', 'shopbuilder' ),
74 74 'help' => esc_html__( 'Switch on to enable variation swatches module.', 'shopbuilder' ),
75 75 ],
@@ -95,8 +95,9 @@
95 95 'rtsb/module/variation_swatches/options',
96 96 [
97 97 'id' => 'variation_swatches',
98 98 'external' => true,
99 + 'category' => 'general',
99 100 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
100 101 'pluginSlug' => 'woo-product-variation-swatches',
101 102 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
102 103 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
@@ -126,8 +127,9 @@
126 127 'badge' => 'new',
127 128 'package' => 'free',
128 129 'active' => 'on',
129 130 'base_class' => VariationGalleryInit::class,
131 + 'category' => 'general',
130 132 'active_field' => [
131 133 'label' => esc_html__( 'Enable Variation Gallery Module?', 'shopbuilder' ),
132 134 'help' => esc_html__( 'Switch on to enable variation gallery module.', 'shopbuilder' ),
133 135 ],
@@ -149,8 +151,9 @@
149 151 'rtsb/module/variation_gallery/options',
150 152 [
151 153 'id' => 'variation_gallery',
152 154 'external' => true,
155 + 'category' => 'general',
153 156 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
154 157 'pluginSlug' => 'woo-product-variation-gallery',
155 158 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
156 159 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
@@ -178,8 +181,9 @@
178 181 [
179 182 'id' => 'quick_view',
180 183 'title' => esc_html__( 'Quick View', 'shopbuilder' ),
181 184 'base_class' => QuickView::class,
185 + 'category' => 'general',
182 186 'active' => 'on',
183 187 'package' => 'free',
184 188 'active_field' => [
185 189 'label' => esc_html__( 'Enable Quick View?', 'shopbuilder' ),
@@ -199,14 +203,14 @@
199 203 'loop_btn_position' => [
200 204 'id' => 'loop_btn_position',
201 205 'type' => 'select',
202 206 'value' => 'custom',
203 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
204 - 'help' => esc_html__( 'Manage quick view button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
207 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
208 + 'help' => esc_html__( 'You can manage quick view button position in shop page.', 'shopbuilder' ),
205 209 'tab' => 'general',
206 210 'options' => [
207 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
208 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
211 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
212 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
209 213 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
210 214 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
211 215 ],
212 216
@@ -290,11 +294,11 @@
290 294 ],
291 295
292 296 'modal_height' => [
293 297 'id' => 'modal_height',
294 - 'label' => esc_html__( 'Modal Height (in px)', 'shopbuilder' ),
295 - 'help' => esc_html__( 'Quick view button modal height. Example: 450', 'shopbuilder' ),
296 - 'type' => 'number',
298 + 'label' => esc_html__( 'Modal Height', 'shopbuilder' ),
299 + 'help' => esc_html__( 'Quick view button modal height. Example: 450px', 'shopbuilder' ),
300 + 'type' => 'text',
297 301 'value' => '',
298 302 'tab' => 'style',
299 303 ],
300 304
@@ -343,8 +347,9 @@
343 347 'title' => esc_html__( 'Wishlist', 'shopbuilder' ),
344 348 'package' => 'free',
345 349 'active' => 'on',
346 350 'base_class' => Wishlist::class,
351 + 'category' => 'general',
347 352 'active_field' => [
348 353 'label' => esc_html__( 'Enable Wishlist?', 'shopbuilder' ),
349 354 'help' => esc_html__( 'Switch on to enable wishlist module.', 'shopbuilder' ),
350 355 ],
@@ -376,9 +381,9 @@
376 381 ],
377 382 'wishlist_shop_wrapper_heading' => [
378 383 'id' => 'wishlist_shop_wrapper_heading',
379 384 'type' => 'title',
380 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
385 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
381 386 'tab' => 'button',
382 387 ],
383 388 'show_btn_on_loop' => [
384 389 'id' => 'show_btn_on_loop',
@@ -383,9 +388,9 @@
383 388 'show_btn_on_loop' => [
384 389 'id' => 'show_btn_on_loop',
385 390 'value' => 'on',
386 391 'type' => 'switch',
387 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
392 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
388 393 'tab' => 'button',
389 394 ],
390 395 'loop_btn_position' => [
391 396 'id' => 'loop_btn_position',
@@ -390,13 +395,13 @@
390 395 'loop_btn_position' => [
391 396 'id' => 'loop_btn_position',
392 397 'type' => 'select',
393 398 'value' => 'custom',
394 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
395 - 'help' => esc_html__( 'Manage wishlist button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
399 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
400 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
396 401 'options' => [
397 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
398 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
402 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
403 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
399 404 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
400 405 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
401 406 ],
402 407 'dependency' => [
@@ -503,10 +508,10 @@
503 508 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
504 509 'type' => 'select',
505 510 'value' => 'custom',
506 511 'options' => [
507 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
508 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
512 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
513 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
509 514 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
510 515 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
511 516 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
512 517 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -655,54 +660,20 @@
655 660 'label' => esc_html__( 'Wishlist Table Fields Visibility', 'shopbuilder' ),
656 661 'tab' => 'page',
657 662 ],
658 663
659 - 'shortcode_list_heading' => [
660 - 'id' => 'shortcode_list_heading',
661 - 'type' => 'title',
662 - 'label' => esc_html__( 'Available Shortcodes', 'shopbuilder' ),
663 - 'tab' => 'shortcodes',
664 - ],
665 - 'shortcode_wishlist_table' => [
666 - 'type' => 'raw',
667 - 'label' => esc_html__( 'Wishlist Table', 'shopbuilder' ),
668 - 'html' => '<code>[rtsb_wishlist]</code><p class="description">'
669 - . esc_html__( 'Displays the wishlist table with all added products. Use this shortcode on the wishlist page.', 'shopbuilder' )
670 - . '</p>',
671 - 'tab' => 'shortcodes',
672 - ],
673 - 'shortcode_wishlist_button' => [
674 - 'type' => 'raw',
675 - 'label' => esc_html__( 'Wishlist Button', 'shopbuilder' ),
676 - 'html' => '<code>[rtsb_wishlist_button]</code><p class="description">'
677 - . esc_html__( 'Displays the "Add to Wishlist" button. Use inside a product loop or on a single product page.', 'shopbuilder' )
678 - . '</p>',
679 - 'tab' => 'shortcodes',
680 - ],
681 - 'shortcode_wishlist_counter' => [
682 - 'type' => 'raw',
683 - 'label' => esc_html__( 'Wishlist Counter', 'shopbuilder' ),
684 - 'html' => '<code>[rtsb_wishlist_counter]</code><p class="description">'
685 - . esc_html__( 'Displays the wishlist item count. Place it in the header or menu to show total wishlist items.', 'shopbuilder' )
686 - . '</p>',
687 - 'tab' => 'shortcodes',
688 - ],
689 -
690 664 ]
691 665 ),
692 666 'tabs' => [
693 - 'general' => [
667 + 'general' => [
694 668 'title' => esc_html__( 'General', 'shopbuilder' ),
695 669 ],
696 - 'button' => [
670 + 'button' => [
697 671 'title' => esc_html__( 'Button', 'shopbuilder' ),
698 672 ],
699 - 'page' => [
673 + 'page' => [
700 674 'title' => esc_html__( 'Page', 'shopbuilder' ),
701 675 ],
702 - 'shortcodes' => [
703 - 'title' => esc_html__( 'Shortcodes', 'shopbuilder' ),
704 - ],
705 676 ],
706 677 ]
707 678 ),
708 679 'compare' => apply_filters(
@@ -709,8 +680,9 @@
709 680 'rtsb/module/compare/options',
710 681 [
711 682 'id' => 'compare',
712 683 'base_class' => Compare::class,
684 + 'category' => 'general',
713 685 'title' => esc_html__( 'Product Compare', 'shopbuilder' ),
714 686 'package' => 'free',
715 687 'active' => 'on',
716 688 'active_field' => [
@@ -722,9 +694,9 @@
722 694 [
723 695 'compare_shop_wrapper_heading' => [
724 696 'id' => 'compare_shop_wrapper_heading',
725 697 'type' => 'title',
726 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
698 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
727 699 'tab' => 'button',
728 700 ],
729 701 'show_btn_on_loop' => [
730 702 'id' => 'show_btn_on_loop',
@@ -729,9 +701,9 @@
729 701 'show_btn_on_loop' => [
730 702 'id' => 'show_btn_on_loop',
731 703 'value' => 'on',
732 704 'type' => 'switch',
733 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
705 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
734 706 'tab' => 'button',
735 707 ],
736 708 'loop_btn_position' => [
737 709 'id' => 'loop_btn_position',
@@ -736,13 +708,13 @@
736 708 'loop_btn_position' => [
737 709 'id' => 'loop_btn_position',
738 710 'type' => 'select',
739 711 'value' => 'custom',
740 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
741 - 'help' => esc_html__( 'Manage compare button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
712 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
713 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
742 714 'options' => [
743 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
744 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
715 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
716 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
745 717 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
746 718 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
747 719 ],
748 720 'dependency' => [
@@ -849,10 +821,10 @@
849 821 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
850 822 'type' => 'select',
851 823 'value' => 'custom',
852 824 'options' => [
853 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
854 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
825 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
826 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
855 827 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
856 828 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
857 829 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
858 830 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -1432,9 +1404,9 @@
1432 1404 'rtsb/module/bulk_discounts/options',
1433 1405 [
1434 1406 'id' => 'bulk_discounts',
1435 1407 'active' => '',
1436 - 'title' => esc_html__( 'Volume Discount', 'shopbuilder' ),
1408 + 'title' => esc_html__( 'Bulk Discounts', 'shopbuilder' ),
1437 1409 'active_field' => [
1438 1410 'label' => esc_html__( 'Enable Bulk Discounts?', 'shopbuilder' ),
1439 1411 'help' => esc_html__( 'Switch on to enable bulk discounts module.', 'shopbuilder' ),
1440 1412 ],
@@ -1517,9 +1489,9 @@
1517 1489 [
1518 1490 'id' => 'abandoned_cart_recovery',
1519 1491 'active' => '',
1520 1492 'badge' => 'new',
1521 - 'title' => esc_html__( 'Abandoned Cart Recovery', 'shopbuilder' ),
1493 + 'title' => esc_html__( 'Cart Recovery', 'shopbuilder' ),
1522 1494 'active_field' => [
1523 1495 'label' => esc_html__( 'Enable Abandoned Cart Recovery?', 'shopbuilder' ),
1524 1496 'help' => esc_html__( 'Cart will be considered abandoned if order is not completed in cut-off time.', 'shopbuilder' ),
1525 1497 ],
@@ -1541,9 +1513,9 @@
1541 1513 'id' => 'popup_builder',
1542 1514 'active' => '',
1543 1515 'title' => esc_html__( 'Popup Builder', 'shopbuilder' ),
1544 1516 'active_field' => [
1545 - 'label' => esc_html__( 'Enable Popup Builder?', 'shopbuilder' ),
1517 + 'label' => esc_html__( 'Popup Builder?', 'shopbuilder' ),
1546 1518 'help' => esc_html__( 'Switch on to enable Popup Builder.', 'shopbuilder' ),
1547 1519 ],
1548 1520 'package' => $this->pro_package(),
1549 1521 'fields' => Fns::pro_version_notice( '2.1.5', 'general', 'ShopBuilder Pro', false ),
@@ -1548,227 +1520,12 @@
1548 1520 'package' => $this->pro_package(),
1549 1521 'fields' => Fns::pro_version_notice( '2.1.5', 'general', 'ShopBuilder Pro', false ),
1550 1522 ]
1551 1523 ),
1552 - 'save_for_buy_later' => apply_filters(
1553 - 'rtsb/module/save_for_buy_later/options',
1554 - [
1555 - 'id' => 'save_for_buy_later',
1556 - 'active' => '',
1557 - 'title' => esc_html__( 'Save Cart For Buy Later', 'shopbuilder' ),
1558 - 'active_field' => [
1559 - 'label' => esc_html__( 'Enable Save Cart For Buy Later?', 'shopbuilder' ),
1560 - 'help' => esc_html__( 'Switch on to enable Save Cart For Buy Later.', 'shopbuilder' ),
1561 - ],
1562 - 'package' => $this->pro_package(),
1563 - 'fields' => Fns::pro_version_notice( '2.1.8', 'general', 'ShopBuilder Pro', false ),
1564 - ]
1565 - ),
1566 - 'catalog_mode' => apply_filters(
1567 - 'rtsb/module/catalog_mode/options',
1568 - [
1569 - 'id' => 'catalog_mode',
1570 - 'active' => '',
1571 - 'title' => esc_html__( 'Catalog Mode', 'shopbuilder' ),
1572 - 'active_field' => [
1573 - 'label' => esc_html__( 'Enable Catalog Mode?', 'shopbuilder' ),
1574 - 'help' => esc_html__( 'Switch on to enable Catalog Mode.', 'shopbuilder' ),
1575 - ],
1576 - 'package' => $this->pro_package(),
1577 - 'fields' => Fns::pro_version_notice( '2.1.9', 'general', 'ShopBuilder Pro', false ),
1578 - ]
1579 - ),
1580 - 'back_in_stock_notifier' => apply_filters(
1581 - 'rtsb/module/back_in_stock_notifier/options',
1582 - [
1583 - 'id' => 'back_in_stock_notifier',
1584 - 'active' => '',
1585 - 'title' => esc_html__( 'Back In Stock Notifier', 'shopbuilder' ),
1586 - 'active_field' => [
1587 - 'label' => esc_html__( 'Enable Back In Stock Notifier?', 'shopbuilder' ),
1588 - 'help' => esc_html__( 'Switch on to enable Back In Stock Notifier.', 'shopbuilder' ),
1589 - ],
1590 - 'package' => $this->pro_package(),
1591 - 'fields' => Fns::pro_version_notice( '2.1.11', 'general', 'ShopBuilder Pro', false ),
1592 - ]
1593 - ),
1594 - 'mega_menu' => apply_filters(
1595 - 'rtsb/module/mega_menu/options',
1596 - [
1597 - 'id' => 'mega_menu',
1598 - 'active' => '',
1599 - 'title' => esc_html__( 'Mega Menu', 'shopbuilder' ),
1600 - 'active_field' => [
1601 - 'label' => esc_html__( 'Enable Mega Menu?', 'shopbuilder' ),
1602 - 'help' => esc_html__( 'Switch on to enable Mega Menu module.', 'shopbuilder' ),
1603 - ],
1604 - 'package' => $this->pro_package(),
1605 - 'fields' => Fns::pro_version_notice( '2.1.12', 'general', 'ShopBuilder Pro', false ),
1606 - ]
1607 - ),
1608 1524 ];
1609 - // Inject icons, descriptions and links per module.
1610 - $meta = self::module_meta();
1611 - foreach ( $list as $key => &$item ) {
1612 - if ( isset( $meta[ $key ] ) ) {
1613 - $item['icon'] = SvgIcons::get( $meta[ $key ]['icon'] ?? 'default' );
1614 - $item['description'] = $meta[ $key ]['desc'] ?? '';
1615 - } else {
1616 - $item['icon'] = SvgIcons::get( 'default' );
1617 - $item['description'] = '';
1618 - }
1619 - $item['links'] = [
1620 - 'doc' => '',
1621 - 'video' => '',
1622 - ];
1623 - }
1624 - unset( $item );
1625 -
1626 1525 return apply_filters( 'rtsb/core/modules/raw_list', $list );
1627 1526 }
1628 -
1629 1527 /**
1630 - * Module icon and description metadata.
1631 - *
1632 - * @return array<string, array{icon: string, desc: string}>
1633 - */
1634 - private static function module_meta() {
1635 - return [
1636 - 'variation_swatches' => [
1637 - 'icon' => 'dots',
1638 - 'desc' => 'Replace dropdowns with color, image, label, or radio swatches.',
1639 - ],
1640 - 'variation_gallery' => [
1641 - 'icon' => 'image',
1642 - 'desc' => 'Show a unique product gallery for every variation.',
1643 - ],
1644 - 'quick_view' => [
1645 - 'icon' => 'eye',
1646 - 'desc' => 'Open a popup product preview from grids without a full page load.',
1647 - ],
1648 - 'wishlist' => [
1649 - 'icon' => 'heart',
1650 - 'desc' => 'Let customers save products to a wishlist they can revisit or share.',
1651 - ],
1652 - 'compare' => [
1653 - 'icon' => 'flip_box',
1654 - 'desc' => 'Side-by-side product attribute comparison with sticky header.',
1655 - ],
1656 - 'product_badges' => [
1657 - 'icon' => 'onsale',
1658 - 'desc' => 'Sale, new, featured, low-stock, and custom badges with rules.',
1659 - ],
1660 - 'checkout_fields_editor' => [
1661 - 'icon' => 'form',
1662 - 'desc' => 'Add, edit, reorder, or remove billing, shipping, and checkout fields.',
1663 - ],
1664 - 'shopify_checkout' => [
1665 - 'icon' => 'cart',
1666 - 'desc' => 'Single-page Shopify-style checkout with autofill and express pay.',
1667 - ],
1668 - 'mini_cart' => [
1669 - 'icon' => 'cart',
1670 - 'desc' => 'Sliding cart drawer with AJAX add-to-cart and quantity edits.',
1671 - ],
1672 - 'product_size_chart' => [
1673 - 'icon' => 'ruler',
1674 - 'desc' => 'Per-category size guides with units, conversion, and modal preview.',
1675 - ],
1676 - 'customize_my_account' => [
1677 - 'icon' => 'user',
1678 - 'desc' => 'Build the customer dashboard with custom tabs, fields, and layouts.',
1679 - ],
1680 - 'pre_order' => [
1681 - 'icon' => 'countdown',
1682 - 'desc' => 'Accept orders before launch with deposit and scheduled release.',
1683 - ],
1684 - 'currency_switcher' => [
1685 - 'icon' => 'currency',
1686 - 'desc' => 'Geo-detected switcher with live exchange rates and pricing rules.',
1687 - ],
1688 - 'product_add_ons' => [
1689 - 'icon' => 'grid',
1690 - 'desc' => 'Optional extras like gift wrap and warranties with conditional pricing.',
1691 - ],
1692 - 'sales_notification' => [
1693 - 'icon' => 'notification',
1694 - 'desc' => 'Real-time sales popups to create social proof and urgency.',
1695 - ],
1696 - 'flash_sale_countdown' => [
1697 - 'icon' => 'flash',
1698 - 'desc' => 'Scheduled flash sale countdown timers with auto-pricing.',
1699 - ],
1700 - 'quick_checkout' => [
1701 - 'icon' => 'checkout',
1702 - 'desc' => 'One-click checkout from product pages, skipping the cart.',
1703 - ],
1704 - 'multi_step_checkout' => [
1705 - 'icon' => 'multi_step',
1706 - 'desc' => 'Break checkout into guided steps with progress indicator.',
1707 - ],
1708 - 'back_order' => [
1709 - 'icon' => 'document',
1710 - 'desc' => 'Allow orders on out-of-stock products with availability dates.',
1711 - ],
1712 - 'sticky_add_to_cart' => [
1713 - 'icon' => 'button',
1714 - 'desc' => 'Sticky add-to-cart bar that follows the user on product pages.',
1715 - ],
1716 - 'smart_coupons' => [
1717 - 'icon' => 'discount',
1718 - 'desc' => 'Advanced coupon rules, URL coupons, and auto-apply conditions.',
1719 - ],
1720 - 'bulk_discounts' => [
1721 - 'icon' => 'pricing',
1722 - 'desc' => 'Tiered quantity-based pricing tables for bulk purchases.',
1723 - ],
1724 - 'bogo_bxgy_free_gift_discounts' => [
1725 - 'icon' => 'star',
1726 - 'desc' => 'Buy-one-get-one, buy-X-get-Y, and free gift promotions.',
1727 - ],
1728 - 'partial_pay' => [
1729 - 'icon' => 'payment',
1730 - 'desc' => 'Allow customers to pay in installments or deposits.',
1731 - ],
1732 - 'gift_card' => [
1733 - 'icon' => 'coupon',
1734 - 'desc' => 'Digital gift cards with email delivery and balance management.',
1735 - ],
1736 - 'pdf_invoice' => [
1737 - 'icon' => 'note',
1738 - 'desc' => 'Auto-generated PDF invoices and packing slips for orders.',
1739 - ],
1740 - 'extended_cross_sell' => [
1741 - 'icon' => 'grid',
1742 - 'desc' => 'Extended cross-sell recommendations across cart and checkout.',
1743 - ],
1744 - 'abandoned_cart_recovery' => [
1745 - 'icon' => 'cart',
1746 - 'desc' => 'Automated email nudges, discount triggers, and recovery analytics.',
1747 - ],
1748 - 'popup_builder' => [
1749 - 'icon' => 'popup',
1750 - 'desc' => 'Create promotional popups with triggers, targeting, and templates.',
1751 - ],
1752 - 'save_for_buy_later' => [
1753 - 'icon' => 'heart',
1754 - 'desc' => 'Save cart items for later purchase with one-click restore.',
1755 - ],
1756 - 'catalog_mode' => [
1757 - 'icon' => 'list',
1758 - 'desc' => 'Hide prices and add-to-cart buttons for catalog-only browsing.',
1759 - ],
1760 - 'back_in_stock_notifier' => [
1761 - 'icon' => 'notification',
1762 - 'desc' => 'Email notifications when out-of-stock products become available.',
1763 - ],
1764 - 'mega_menu' => [
1765 - 'icon' => 'grid',
1766 - 'desc' => 'Multi-column mega menus with widgets, images, and icons.',
1767 - ],
1768 - ];
1769 - }
1770 - /**
1771 1528 * Get All Menu
1772 1529 */
1773 1530 public function get_all_menu() {
1774 1531 $manus = [
@@ -3050,179 +2807,8 @@
3050 2807 ],
3051 2808 ],
3052 2809 ],
3053 2810 ],
3054 - 'cart_button_styles_settings' => [
3055 - 'id' => 'cart_button_styles_settings',
3056 - 'type' => 'title',
3057 - 'tab' => 'styles',
3058 - 'label' => esc_html__( 'Cart Button Style', 'shopbuilder' ),
3059 - 'dependency' => [
3060 - 'rules' => [
3061 - [
3062 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3063 - 'value' => 'select_icon',
3064 - 'operator' => '==',
3065 - ],
3066 - ],
3067 - ],
3068 - ],
3069 - 'cart_button_height' => [
3070 - 'id' => 'cart_button_height',
3071 - 'label' => esc_html__( 'Button Height (px)', 'shopbuilder' ),
3072 - 'type' => 'slider',
3073 - 'min' => 10,
3074 - 'max' => 200,
3075 - 'unit' => 'px',
3076 - 'tab' => 'styles',
3077 - 'dependency' => [
3078 - 'rules' => [
3079 - [
3080 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3081 - 'value' => 'select_icon',
3082 - 'operator' => '==',
3083 - ],
3084 - ],
3085 - ],
3086 - ],
3087 - 'cart_button_width' => [
3088 - 'id' => 'cart_button_width',
3089 - 'label' => esc_html__( 'Button Width (px)', 'shopbuilder' ),
3090 - 'type' => 'slider',
3091 - 'min' => 10,
3092 - 'max' => 200,
3093 - 'unit' => 'px',
3094 - 'tab' => 'styles',
3095 - 'dependency' => [
3096 - 'rules' => [
3097 - [
3098 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3099 - 'value' => 'select_icon',
3100 - 'operator' => '==',
3101 - ],
3102 - ],
3103 - ],
3104 - ],
3105 - 'cart_button_padding' => [
3106 - 'id' => 'cart_button_padding',
3107 - 'label' => esc_html__( 'Padding (px)', 'shopbuilder' ),
3108 - 'type' => 'slider',
3109 - 'min' => 0,
3110 - 'max' => 50,
3111 - 'unit' => 'px',
3112 - 'tab' => 'styles',
3113 - 'dependency' => [
3114 - 'rules' => [
3115 - [
3116 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3117 - 'value' => 'select_icon',
3118 - 'operator' => '==',
3119 - ],
3120 - ],
3121 - ],
3122 - ],
3123 - 'cart_button_border_style' => [
3124 - 'id' => 'cart_button_border_style',
3125 - 'label' => esc_html__( 'Border Style', 'shopbuilder' ),
3126 - 'type' => 'select',
3127 - 'options' => [
3128 - 'none' => esc_html__( 'None', 'shopbuilder' ),
3129 - 'solid' => esc_html__( 'Solid', 'shopbuilder' ),
3130 - 'dashed' => esc_html__( 'Dashed', 'shopbuilder' ),
3131 - 'dotted' => esc_html__( 'Dotted', 'shopbuilder' ),
3132 - ],
3133 - 'tab' => 'styles',
3134 - 'dependency' => [
3135 - 'rules' => [
3136 - [
3137 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3138 - 'value' => 'select_icon',
3139 - 'operator' => '==',
3140 - ],
3141 - ],
3142 - ],
3143 - ],
3144 - 'cart_button_border_width' => [
3145 - 'id' => 'cart_button_border_width',
3146 - 'label' => esc_html__( 'Border Width (px)', 'shopbuilder' ),
3147 - 'type' => 'slider',
3148 - 'min' => 0,
3149 - 'max' => 10,
3150 - 'unit' => 'px',
3151 - 'tab' => 'styles',
3152 - 'dependency' => [
3153 - 'rules' => [
3154 - [
3155 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3156 - 'value' => 'select_icon',
3157 - 'operator' => '==',
3158 - ],
3159 - ],
3160 - ],
3161 - ],
3162 - 'cart_button_border_color' => [
3163 - 'id' => 'cart_button_border_color',
3164 - 'label' => esc_html__( 'Border Color', 'shopbuilder' ),
3165 - 'tab' => 'styles',
3166 - 'type' => 'color',
3167 - 'dependency' => [
3168 - 'rules' => [
3169 - [
3170 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3171 - 'value' => 'select_icon',
3172 - 'operator' => '==',
3173 - ],
3174 - ],
3175 - ],
3176 - ],
3177 - 'cart_button_border_radius' => [
3178 - 'id' => 'cart_button_border_radius',
3179 - 'label' => esc_html__( 'Border Radius (px)', 'shopbuilder' ),
3180 - 'type' => 'slider',
3181 - 'min' => 0,
3182 - 'max' => 100,
3183 - 'unit' => 'px',
3184 - 'tab' => 'styles',
3185 - 'dependency' => [
3186 - 'rules' => [
3187 - [
3188 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3189 - 'value' => 'select_icon',
3190 - 'operator' => '==',
3191 - ],
3192 - ],
3193 - ],
3194 - ],
3195 - 'cart_button_bg_color' => [
3196 - 'id' => 'cart_button_bg_color',
3197 - 'label' => esc_html__( 'Background Color', 'shopbuilder' ),
3198 - 'tab' => 'styles',
3199 - 'type' => 'color',
3200 - 'dependency' => [
3201 - 'rules' => [
3202 - [
3203 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3204 - 'value' => 'select_icon',
3205 - 'operator' => '==',
3206 - ],
3207 - ],
3208 - ],
3209 - ],
3210 - 'cart_button_hover_bg_color' => [
3211 - 'id' => 'cart_button_hover_bg_color',
3212 - 'label' => esc_html__( 'Hover Background Color', 'shopbuilder' ),
3213 - 'tab' => 'styles',
3214 - 'type' => 'color',
3215 - 'dependency' => [
3216 - 'rules' => [
3217 - [
3218 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3219 - 'value' => 'select_icon',
3220 - 'operator' => '==',
3221 - ],
3222 - ],
3223 - ],
3224 - ],
3225 2811 'footer_menu_styles_settings' => [
3226 2812 'id' => 'footer_menu_styles_settings',
3227 2813 'type' => 'title',
3228 2814 'tab' => 'styles',
@@ -3442,10 +3028,10 @@
3442 3028 'options' => [
3443 3029 'above_image' => esc_html__( 'Floating Above Image', 'shopbuilder' ),
3444 3030 'before_product_title' => esc_html__( 'Before Product Title', 'shopbuilder' ),
3445 3031 'after_product_title' => esc_html__( 'After Product Title', 'shopbuilder' ),
3446 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
3447 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
3032 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3033 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3448 3034 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
3449 3035 ],
3450 3036 'tab' => 'group',
3451 3037 ],
@@ -3524,10 +3110,10 @@
3524 3110 'label' => esc_html__( 'Product Page Group Position', 'shopbuilder' ),
3525 3111 'help' => esc_html__( 'Choose the group badges position in product page.', 'shopbuilder' ),
3526 3112 'options' => [
3527 3113 'above_image' => esc_html__( 'Floating Above Image', 'shopbuilder' ),
3528 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
3529 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
3114 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3115 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3530 3116 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
3531 3117 'after_short_desc' => esc_html__( 'After Short Description', 'shopbuilder' ),
3532 3118 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
3533 3119 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -4133,8 +3719,26 @@
4133 3719 'label' => esc_html__( 'Enable Tooltip', 'shopbuilder' ),
4134 3720 'help' => esc_html__( 'Enable / Disable plugin default tooltip on each product attribute.', 'shopbuilder' ),
4135 3721 'tab' => 'general',
4136 3722 ],
3723 + 'shape_style' => [
3724 + 'id' => 'shape_style',
3725 + 'label' => esc_html__( 'Default Shape Style', 'shopbuilder' ),
3726 + 'help' => esc_html__( 'Attribute Shape Style. Note: This option will not be applied to radio and button attributes.', 'shopbuilder' ),
3727 + 'type' => 'image_select',
3728 + 'value' => 'rounded',
3729 + 'options' => [
3730 + 'rounded' => [
3731 + 'label' => esc_html__( 'Rounded Shape', 'shopbuilder' ),
3732 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/rounded-shape.svg' ) ),
3733 + ],
3734 + 'squared' => [
3735 + 'label' => esc_html__( 'Squared Shape', 'shopbuilder' ),
3736 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/squared-shape.svg' ) ),
3737 + ],
3738 + ],
3739 + 'tab' => 'general',
3740 + ],
4137 3741 'shape_style_checkmark' => [
4138 3742 'id' => 'shape_style_checkmark',
4139 3743 'type' => 'switch',
4140 3744 'isPro' => ! rtsb()->has_pro(),
@@ -4304,27 +3908,8 @@
4304 3908 ],
4305 3909 ],
4306 3910 'tab' => 'showcase_shop',
4307 3911 ],
4308 - 'showcase_image_size' => [
4309 - 'id' => 'showcase_image_size',
4310 - 'label' => esc_html__( 'Showcase Image Size', 'shopbuilder' ),
4311 - 'help' => __( 'Choose showcase variation image size.', 'shopbuilder' ) ,
4312 - 'type' => 'select',
4313 - 'isPro' => ! rtsb()->has_pro(),
4314 - 'value' => 'woocommerce_thumbnail',
4315 - 'options' => array_diff_key( Fns::get_image_sizes(), [ 'rtsb_custom' => '' ] ),
4316 - 'dependency' => [
4317 - 'rules' => [
4318 - [
4319 - 'item' => 'modules.variation_swatches.enable_showcase_swatches',
4320 - 'value' => 'on',
4321 - 'operator' => '==',
4322 - ],
4323 - ],
4324 - ],
4325 - 'tab' => 'showcase_shop',
4326 - ],
4327 3912 'showcase_swatches_position' => [
4328 3913 'id' => 'showcase_swatches_position',
4329 3914 'label' => esc_html__( 'Swatches Position', 'shopbuilder' ),
4330 3915 'help' => esc_html__( 'Display showcase swatches in a specific position.', 'shopbuilder' ) . '<br/>' . __( 'Note: Some themes remove or override default WooCommerce hooks. If the swatches do not appear as expected, you may need to manually set a custom position.', 'shopbuilder' ),
@@ -4334,10 +3919,10 @@
4334 3919 'options' => apply_filters(
4335 3920 'rtsb_showcase_swatches_positions',
4336 3921 [
4337 3922 'custom_hook' => esc_html__( 'Custom Hook', 'shopbuilder' ),
4338 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
4339 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
3923 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3924 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
4340 3925 ]
4341 3926 ),
4342 3927 'dependency' => [
4343 3928 'rules' => [
@@ -4568,9 +4153,9 @@
4568 4153 'attribute_border_radius' => [
4569 4154 'id' => 'attribute_border_radius',
4570 4155 'label' => esc_html__( 'Attribute Border Radius', 'shopbuilder' ),
4571 4156 'isPro' => ! rtsb()->has_pro(),
4572 - 'help' => esc_html__( 'Set the border radius (in px) for attribute items. Use a small value for squared corners or a large value (e.g. 100+) for fully rounded / circular swatches.', 'shopbuilder' ),
4157 + 'help' => esc_html__( 'Set the border radius (in px) for attribute items to control how rounded the corners appear.', 'shopbuilder' ),
4573 4158 'type' => 'slider',
4574 4159 'min' => 0,
4575 4160 'max' => 200,
4576 4161 'unit' => 'px',
@@ -4632,19 +4217,8 @@
4632 4217 'unit' => 'px',
4633 4218 'value' => 16,
4634 4219 'tab' => 'style',
4635 4220 ],
4636 - 'details_page_radio_size' => [
4637 - 'id' => 'details_page_radio_size',
4638 - 'label' => esc_html__( 'Radio Attribute Size', 'shopbuilder' ),
4639 - 'help' => esc_html__( 'Set the size (in px) for radio-button variation attributes. Independent from the Variation Item Width/Height settings.', 'shopbuilder' ),
4640 - 'type' => 'slider',
4641 - 'min' => 10,
4642 - 'max' => 80,
4643 - 'unit' => 'px',
4644 - 'value' => 25,
4645 - 'tab' => 'style',
4646 - ],
4647 4221 'showcase_attribute_size' => [
4648 4222 'id' => 'showcase_attribute_size',
4649 4223 'type' => 'title',
4650 4224 'label' => esc_html__( 'Shop Page / Product Showcase Attributes Size', 'shopbuilder' ),
@@ -4682,19 +4256,8 @@
4682 4256 'unit' => 'px',
4683 4257 'value' => 16,
4684 4258 'tab' => 'style',
4685 4259 ],
4686 - 'showcase_radio_size' => [
4687 - 'id' => 'showcase_radio_size',
4688 - 'label' => esc_html__( 'Radio Attribute Size', 'shopbuilder' ),
4689 - 'help' => esc_html__( 'Set the size (in px) for radio-button variation attributes in shop/showcase contexts.', 'shopbuilder' ),
4690 - 'type' => 'slider',
4691 - 'min' => 10,
4692 - 'max' => 80,
4693 - 'unit' => 'px',
4694 - 'value' => 25,
4695 - 'tab' => 'style',
4696 - ],
4697 4260 'tooltip_style' => [
4698 4261 'id' => 'tooltip_style',
4699 4262 'type' => 'title',
4700 4263 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
@@ -4699,22 +4262,8 @@
4699 4262 'type' => 'title',
4700 4263 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
4701 4264 'tab' => 'style',
4702 4265 ],
4703 - 'tooltip_text_color' => [
4704 - 'id' => 'tooltip_text_color',
4705 - 'label' => esc_html__( 'Tooltip Text Color', 'shopbuilder' ),
4706 - 'type' => 'color',
4707 - 'value' => '#ffffff',
4708 - 'tab' => 'style',
4709 - ],
4710 - 'tooltip_bg_color' => [
4711 - 'id' => 'tooltip_bg_color',
4712 - 'label' => esc_html__( 'Tooltip Background Color', 'shopbuilder' ),
4713 - 'type' => 'color',
4714 - 'value' => '#333333',
4715 - 'tab' => 'style',
4716 - ],
4717 4266 'tooltip_images_padding' => [
4718 4267 'id' => 'tooltip_images_padding',
4719 4268 'label' => esc_html__( 'Tooltip Images Padding', 'shopbuilder' ),
4720 4269 'type' => 'slider',
@@ -4723,16 +4272,29 @@
4723 4272 'unit' => 'px',
4724 4273 'value' => 3,
4725 4274 'tab' => 'style',
4726 4275 ],
4276 + 'tooltip_bg_color' => [
4277 + 'id' => 'tooltip_bg_color',
4278 + 'label' => esc_html__( 'Tooltip Background Color', 'shopbuilder' ),
4279 + 'type' => 'color',
4280 + 'value' => '#333333',
4281 + 'tab' => 'style',
4282 + ],
4727 4283 'tooltip_image_bg_color' => [
4728 - 'id' => 'tooltip_image_bg_color',
4284 + 'id' => 'tooltip_bg_color',
4729 4285 'label' => esc_html__( 'Tooltip Image Background Color', 'shopbuilder' ),
4730 4286 'type' => 'color',
4731 4287 'value' => '#333333',
4732 4288 'tab' => 'style',
4733 4289 ],
4734 -
4290 + 'tooltip_text_color' => [
4291 + 'id' => 'tooltip_text_color',
4292 + 'label' => esc_html__( 'Tooltip Text Color', 'shopbuilder' ),
4293 + 'type' => 'color',
4294 + 'value' => '#ffffff',
4295 + 'tab' => 'style',
4296 + ],
4735 4297 ]
4736 4298 ); // @phpstan-ignore-line
4737 4299 }
4738 4300 /**
@@ -4741,15 +4303,9 @@
4741 4303 public function get_variation_gallery_fields() {
4742 4304 return apply_filters(
4743 4305 'rtsb/module/variation_gallery/fields',
4744 4306 [
4745 - 'main_image_controls_title' => [
4746 - 'id' => 'main_image_controls_title',
4747 - 'type' => 'title',
4748 - 'label' => esc_html__( 'Main Image Controls', 'shopbuilder' ),
4749 - 'tab' => 'general',
4750 - ],
4751 - 'image_zoom' => [
4307 + 'image_zoom' => [
4752 4308 'id' => 'image_zoom',
4753 4309 'type' => 'switch',
4754 4310 'default' => false,
4755 4311 'label' => esc_html__( 'Zoom Gallery image', 'shopbuilder' ),
@@ -4754,9 +4310,9 @@
4754 4310 'default' => false,
4755 4311 'label' => esc_html__( 'Zoom Gallery image', 'shopbuilder' ),
4756 4312 'tab' => 'general',
4757 4313 ],
4758 - 'lightBox' => [
4314 + 'lightBox' => [
4759 4315 'id' => 'lightBox',
4760 4316 'type' => 'switch',
4761 4317 'default' => false,
4762 4318 'label' => esc_html__( 'Enable Images lightBox', 'shopbuilder' ),
@@ -4761,9 +4317,9 @@
4761 4317 'default' => false,
4762 4318 'label' => esc_html__( 'Enable Images lightBox', 'shopbuilder' ),
4763 4319 'tab' => 'general',
4764 4320 ],
4765 - 'lightBox_button_position' => [
4321 + 'lightBox_button_position' => [
4766 4322 'id' => 'lightBox_button_position',
4767 4323 'type' => 'select',
4768 4324 'value' => 'top-right',
4769 4325 'label' => esc_html__( 'Zoom Button Position', 'shopbuilder' ),
@@ -4775,26 +4331,61 @@
4775 4331 'bottom-left' => esc_html__( 'Bottom Left', 'shopbuilder' ),
4776 4332 ],
4777 4333 'tab' => 'general',
4778 4334 ],
4779 -
4780 - 'adaptive_height' => [
4335 + 'thumbnails_columns' => [
4336 + 'id' => 'thumbnails_columns',
4337 + 'type' => 'slider',
4338 + 'label' => esc_html__( 'Thumbnails Items per row / slider view', 'shopbuilder' ),
4339 + 'help' => esc_html__( 'Product Thumbnails Item Image. Default value is: 4. Limit: 2-8. The field required for slider.', 'shopbuilder' ),
4340 + 'min' => 2,
4341 + 'max' => 8,
4342 + 'unit' => '',
4343 + 'value' => 4,
4344 + 'tab' => 'general',
4345 + ],
4346 + 'thumbnails_gap' => [
4347 + 'id' => 'thumbnails_gap',
4348 + 'type' => 'slider',
4349 + 'label' => esc_html__( 'Thumbnails Gap', 'shopbuilder' ),
4350 + 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
4351 + 'min' => 0,
4352 + 'max' => 50,
4353 + 'unit' => 'px',
4354 + 'value' => 0,
4355 + 'tab' => 'general',
4356 + ],
4357 + 'gallery_style' => [
4358 + 'id' => 'gallery_style',
4359 + 'type' => 'select',
4360 + 'value' => 'bottom',
4361 + 'label' => esc_html__( 'Gallery Style', 'shopbuilder' ),
4362 + 'isPro' => ! rtsb()->has_pro(),
4363 + 'options' => [
4364 + 'bottom' => esc_html__( 'Thumbnail Position Bottom', 'shopbuilder' ),
4365 + 'left' => esc_html__( 'Thumbnail Position Left', 'shopbuilder' ),
4366 + 'right' => esc_html__( 'Thumbnail Position Right', 'shopbuilder' ),
4367 + 'grid' => esc_html__( 'Grid View Images', 'shopbuilder' ),
4368 + ],
4369 + 'tab' => 'general',
4370 + ],
4371 + 'adaptive_height' => [
4781 4372 'id' => 'adaptive_height',
4782 4373 'type' => 'switch',
4783 4374 'default' => false,
4784 - 'label' => esc_html__( 'Main Images Slider Adaptive Height', 'shopbuilder' ),
4375 + 'label' => esc_html__( 'Main Slider Adaptive Height', 'shopbuilder' ),
4785 4376 'tab' => 'general',
4786 4377 'dependency' => [
4787 4378 'rules' => [
4788 4379 [
4789 4380 'item' => 'modules.variation_gallery.gallery_style',
4790 - 'value' => 'grid',
4791 - 'operator' => '!=',
4381 + 'value' => 'bottom',
4382 + 'operator' => '==',
4792 4383 ],
4793 4384 ],
4794 4385 ],
4795 4386 ],
4796 - 'main_slider_alignment' => [
4387 + 'main_slider_alignment' => [
4797 4388 'id' => 'main_slider_alignment',
4798 4389 'type' => 'switch',
4799 4390 'value' => 'center',
4800 4391 'label' => esc_html__( 'Main Image Middle Position', 'shopbuilder' ),
@@ -4809,13 +4400,14 @@
4809 4400 ],
4810 4401 ],
4811 4402 ],
4812 4403 ],
4813 - 'main_image_transition_effect' => [
4404 +
4405 + 'main_image_transition_effect' => [
4814 4406 'id' => 'main_image_transition_effect',
4815 4407 'type' => 'select',
4816 4408 'value' => 'slide',
4817 - 'label' => esc_html__( 'Transition Effect For Main Image Carousel', 'shopbuilder' ),
4409 + 'label' => esc_html__( 'Main Image Transition Effect', 'shopbuilder' ),
4818 4410 'isPro' => ! rtsb()->has_pro(),
4819 4411 'options' => [
4820 4412 'slide' => esc_html__( 'Slide', 'shopbuilder' ),
4821 4413 'fade' => esc_html__( 'Fade', 'shopbuilder' ),
@@ -4830,92 +4422,49 @@
4830 4422 ],
4831 4423 ],
4832 4424 ],
4833 4425 ],
4834 - 'preloader' => [
4835 - 'id' => 'preloader',
4836 - 'type' => 'switch',
4837 - 'default' => false,
4838 - 'label' => esc_html__( 'Preloader', 'shopbuilder' ),
4839 - 'help' => esc_html__( 'Show a loading animation while the gallery images are being loaded.', 'shopbuilder' ),
4840 - 'tab' => 'general',
4841 - ],
4842 - 'preloader_image' => [
4843 - 'id' => 'preloader_image',
4844 - 'type' => 'fileupload',
4845 - 'label' => esc_html__( 'Preloader Image', 'shopbuilder' ),
4846 - 'help' => esc_html__( 'Upload a custom preloader image to replace the default loading animation. Recommended size: 60x60 pixels.', 'shopbuilder' ),
4847 - 'tab' => 'general',
4848 - // Preserve the { id, source } media array on save (the default text
4849 - // sanitizer would flatten it to an empty string and drop the upload).
4850 - 'sanitize_fn' => [ Fns::class, 'sanitize_fileupload_value' ],
4851 - 'dependency' => [
4426 + 'thumb_image_section_width' => [
4427 + 'id' => 'thumb_image_section_width',
4428 + 'type' => 'slider',
4429 + 'label' => esc_html__( 'Thumbnail Image Section Width', 'shopbuilder' ),
4430 + 'help' => esc_html__( 'Product Thumbnails Section Width In Pixel.', 'shopbuilder' ),
4431 + 'min' => 150,
4432 + 'max' => 1000,
4433 + 'unit' => 'px',
4434 + 'value' => 150,
4435 + 'tab' => 'general',
4436 + 'dependency' => [
4852 4437 'rules' => [
4853 4438 [
4854 - 'item' => 'modules.variation_gallery.preloader',
4855 - 'value' => 'on',
4856 - 'operator' => '==',
4439 + 'item' => 'modules.variation_gallery.gallery_style',
4440 + 'value' => [ 'left', 'right' ],
4441 + 'operator' => 'in',
4857 4442 ],
4858 4443 ],
4859 4444 ],
4860 4445 ],
4861 - 'gallery_change_effect' => [
4862 - 'id' => 'gallery_change_effect',
4863 - 'type' => 'select',
4864 - 'value' => 'blur',
4865 - 'label' => esc_html__( 'Gallery Change Effect', 'shopbuilder' ),
4866 - 'help' => esc_html__( 'Choose the visual effect applied to the gallery when switching between variations.', 'shopbuilder' ),
4867 - 'options' => [
4868 - 'blur' => esc_html__( 'Blur', 'shopbuilder' ),
4869 - 'fade' => esc_html__( 'Fade', 'shopbuilder' ),
4870 - 'gray' => esc_html__( 'Gray', 'shopbuilder' ),
4871 - 'none' => esc_html__( 'No Effect', 'shopbuilder' ),
4446 + 'image_section_height' => [
4447 + 'id' => 'image_section_height',
4448 + 'type' => 'slider',
4449 + 'label' => esc_html__( 'Slider Height/Image Section Height', 'shopbuilder' ),
4450 + 'help' => esc_html__( 'Product Thumbnails And Main Image Section Height In Pixel.', 'shopbuilder' ),
4451 + 'min' => 400,
4452 + 'max' => 2000,
4453 + 'unit' => 'px',
4454 + 'value' => 500,
4455 + 'tab' => 'general',
4456 + 'dependency' => [
4457 + 'rules' => [
4458 + [
4459 + 'item' => 'modules.variation_gallery.gallery_style',
4460 + 'value' => [ 'left', 'right' ],
4461 + 'operator' => 'in',
4462 + ],
4463 + ],
4872 4464 ],
4873 - 'tab' => 'general',
4874 4465 ],
4875 - 'gallery_thumbnail_controls_title' => [
4876 - 'id' => 'gallery_thumbnail_controls_title',
4877 - 'type' => 'title',
4878 - 'label' => esc_html__( 'Gallery / Thumbnail Item Controls', 'shopbuilder' ),
4879 - 'tab' => 'general',
4880 - ],
4881 - 'gallery_style' => [
4882 - 'id' => 'gallery_style',
4883 - 'type' => 'select',
4884 - 'value' => 'bottom',
4885 - 'label' => esc_html__( 'Thumbnail Position/Gallery Style', 'shopbuilder' ),
4886 - 'isPro' => ! rtsb()->has_pro(),
4887 - 'options' => [
4888 - 'bottom' => esc_html__( 'Thumbnail Position Bottom', 'shopbuilder' ),
4889 - 'left' => esc_html__( 'Thumbnail Position Left', 'shopbuilder' ),
4890 - 'right' => esc_html__( 'Thumbnail Position Right', 'shopbuilder' ),
4891 - 'grid' => esc_html__( 'Grid View Images', 'shopbuilder' ),
4892 - ],
4893 - 'tab' => 'general',
4894 - ],
4895 - 'thumbnails_columns' => [
4896 - 'id' => 'thumbnails_columns',
4897 - 'type' => 'slider',
4898 - 'label' => esc_html__( 'Thumbnail Items', 'shopbuilder' ),
4899 - 'help' => esc_html__( 'Add slides per view, or items per row if the slider is not activated.', 'shopbuilder' ),
4900 - 'min' => 2,
4901 - 'max' => 8,
4902 - 'unit' => '',
4903 - 'value' => 4,
4904 - 'tab' => 'general',
4905 - ],
4906 - 'thumbnails_gap' => [
4907 - 'id' => 'thumbnails_gap',
4908 - 'type' => 'slider',
4909 - 'label' => esc_html__( 'Thumbnails Gap', 'shopbuilder' ),
4910 - 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
4911 - 'min' => 0,
4912 - 'max' => 50,
4913 - 'unit' => 'px',
4914 - 'value' => 10,
4915 - 'tab' => 'general',
4916 - ],
4917 - 'main_image_border_color' => [
4466 + 'main_image_border_color' => [
4918 4467 'id' => 'main_image_border_color',
4919 4468 'label' => esc_html__( 'Main Image Border Color', 'shopbuilder' ),
4920 4469 'tab' => 'styles',
4921 4470 'type' => 'color',
@@ -4928,22 +4477,15 @@
4928 4477 ],
4929 4478 ],
4930 4479 ],
4931 4480 ],
4932 - 'thumbnail_item_border_color' => [
4481 + 'thumbnail_item_border_color' => [
4933 4482 'id' => 'thumbnail_item_border_color',
4934 4483 'label' => esc_html__( 'Thumbnail item Border Color', 'shopbuilder' ),
4935 4484 'tab' => 'styles',
4936 4485 'type' => 'color',
4937 4486 ],
4938 - 'thumbnail_active_border_color' => [
4939 - 'id' => 'thumbnail_active_border_color',
4940 - 'label' => esc_html__( 'Active Thumbnail Border Color', 'shopbuilder' ),
4941 - 'help' => esc_html__( 'Border color of the currently selected thumbnail.', 'shopbuilder' ),
4942 - 'tab' => 'styles',
4943 - 'type' => 'color',
4944 - ],
4945 - 'thumbnail_item_inner_padding' => [
4487 + 'thumbnail_item_inner_padding' => [
4946 4488 'id' => 'thumbnail_item_inner_padding',
4947 4489 'type' => 'slider',
4948 4490 'label' => esc_html__( 'Thumbnail Item Inner Padding', 'shopbuilder' ),
4949 4491 'min' => 0,
@@ -4951,9 +4493,9 @@
4951 4493 'unit' => 'px',
4952 4494 'value' => 10,
4953 4495 'tab' => 'styles',
4954 4496 ],
4955 - 'thumbnail_item_border_radius' => [
4497 + 'thumbnail_item_border_radius' => [
4956 4498 'id' => 'thumbnail_item_border_radius',
4957 4499 'type' => 'slider',
4958 4500 'label' => esc_html__( 'Thumbnail Item Border Radius', 'shopbuilder' ),
4959 4501 'min' => 0,