diff --git a/Includes/Modules.php b/Includes/Modules.php
index 2c95e293..2dc0d454 100644
--- a/Includes/Modules.php
+++ b/Includes/Modules.php
@@ -80,6 +80,7 @@ public function list_all_modules() {
$all_modules[] = array(
'id' => $module_id,
'name' => $module->get_name(),
+ 'dir' =>$module->get_dir(),
'icon' => $module->get_icon(),
'banner' => $module->get_banner(),
'description' => $module->get_description(),
diff --git a/Includes/Modules/BoGo/BoGoModule.php b/Includes/Modules/BoGo/BoGoModule.php
index 4f8d3e89..c3f5d303 100644
--- a/Includes/Modules/BoGo/BoGoModule.php
+++ b/Includes/Modules/BoGo/BoGoModule.php
@@ -32,6 +32,15 @@ public function get_id() {
return 'bogo';
}
+ /**
+ * directory Name for a module.
+ *
+ * @return string
+ */
+ public function get_dir() {
+ return 'BoGo';
+ }
+
/**
* Icon for a module.
*
diff --git a/Includes/Modules/CountdownTimer/CountdownTimerModule.php b/Includes/Modules/CountdownTimer/CountdownTimerModule.php
index 087d7250..211ce831 100644
--- a/Includes/Modules/CountdownTimer/CountdownTimerModule.php
+++ b/Includes/Modules/CountdownTimer/CountdownTimerModule.php
@@ -31,6 +31,15 @@ public function get_id() {
return 'countdown-timer';
}
+ /**
+ * directory Name for a module.
+ *
+ * @return string
+ */
+ public function get_dir() {
+ return 'SalesCountdown';
+ }
+
/**
* Icon for a module.
*
diff --git a/Includes/Modules/DirectCheckout/DirectCheckoutModule.php b/Includes/Modules/DirectCheckout/DirectCheckoutModule.php
index 9d39fe2f..06b4149b 100644
--- a/Includes/Modules/DirectCheckout/DirectCheckoutModule.php
+++ b/Includes/Modules/DirectCheckout/DirectCheckoutModule.php
@@ -31,6 +31,15 @@ public function get_id() {
return 'direct-checkout';
}
+ /**
+ * directory Name for a module.
+ *
+ * @return string
+ */
+ public function get_dir() {
+ return 'DirectCheckout';
+ }
+
/**
* Icon for a module.
*
diff --git a/Includes/Modules/FloatingNotificationBar/FloatingNotificationBarModule.php b/Includes/Modules/FloatingNotificationBar/FloatingNotificationBarModule.php
index 2d7d09ef..cd8101a4 100644
--- a/Includes/Modules/FloatingNotificationBar/FloatingNotificationBarModule.php
+++ b/Includes/Modules/FloatingNotificationBar/FloatingNotificationBarModule.php
@@ -31,6 +31,16 @@ public function get_id() {
return 'floating-notification-bar';
}
+ /**
+ * directory Name for a module.
+ *
+ * @return string
+ */
+ public function get_dir() {
+ return 'FloatingNotificationBar';
+ }
+
+
/**
* Icon for a module.
*
diff --git a/Includes/Modules/FlyCart/FlyCartModule.php b/Includes/Modules/FlyCart/FlyCartModule.php
index f32039f6..26bad2b8 100644
--- a/Includes/Modules/FlyCart/FlyCartModule.php
+++ b/Includes/Modules/FlyCart/FlyCartModule.php
@@ -31,6 +31,15 @@ public function get_id() {
return 'fly-cart';
}
+ /**
+ * directory Name for a module.
+ *
+ * @return string
+ */
+ public function get_dir() {
+ return 'QuickCart';
+ }
+
/**
* Icon for a module.
*
diff --git a/Includes/Modules/FrequentlyBought/FrequentlyBoughtModule.php b/Includes/Modules/FrequentlyBought/FrequentlyBoughtModule.php
new file mode 100644
index 00000000..1036a093
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/FrequentlyBoughtModule.php
@@ -0,0 +1,125 @@
+ admin_url( 'admin-ajax.php' ),
+ 'ajd_nonce' => $ajd_nonce,
+ 'image_folder' => sgsb_modules_url( 'FrequentlyBought/assets/images' ),
+ )
+ );
+ }
+ }
+
+ /**
+ * Add CSS scripts to admin.
+ */
+ public function admin_enqueue_styles() {
+ $ftime = filemtime( sgsb_modules_path( 'FrequentlyBought/assets/css/frequently-bought-custom-admin.css' ) );
+ $ftime_template = filemtime( sgsb_modules_path( 'FrequentlyBought/assets/css/frequently-bought-template.css' ) );
+
+ wp_enqueue_style(
+ 'sgsb-frequently-bought-custom-admin-css',
+ sgsb_modules_url( 'FrequentlyBought/assets/css/frequently-bought-custom-admin.css' ),
+ null,
+ $ftime
+ );
+
+ wp_enqueue_style(
+ 'sgsb-frequently-bought-template-css',
+ sgsb_modules_url( 'FrequentlyBought/assets/css/frequently-bought-template.css' ),
+ null,
+ $ftime_template
+ );
+ }
+}
diff --git a/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-custom-admin.css b/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-custom-admin.css
new file mode 100644
index 00000000..4201ac47
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-custom-admin.css
@@ -0,0 +1,147 @@
+
+.tab-pan-wrapper .ant-tabs-nav{
+ background: #d9ede1;
+ padding: 0 15px;
+ color: black;
+}
+
+
+.order-bump-offer{
+ font-size: 16px;
+ background: #7979F5;
+ height: 50px;
+ font-size: 20px;
+}
+
+.order-bump-appearance{
+ font-size: 16px;
+ background: #7979F5;
+ height: 50px;
+ font-size: 20px;
+ margin-bottom: 10px;
+}
+
+.order-bump-offer-text, .order-bump-appearance-text{
+ font-size: 27px;
+}
+
+.order-bump-offer-section{
+ background: #EEEEEE;
+ height: 35px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding-left: 5px;
+ padding-top: 5px;
+}
+
+.order-bump-offer-section-text{
+ font-size: 16px;
+ color: #9b9bf5;
+}
+.order-bump-save-change-button{
+ background: #7979F5;
+ border: 1px solid #7979F5;
+ margin-top: 20px;
+}
+
+
+/* Start Order Bump List Table Styles. */
+.create-upsell-order-bump-button {
+ border: 0;
+ width: 126px;
+ height: auto;
+ font-size: 15px;
+ font-weight: 500;
+ padding: 8px 24px;
+ line-height: 20px;
+ background-color: #CCE3FF;
+ border-radius: 5px !important;
+}
+
+.create-upsell-order-bump-button,
+.create-upsell-order-bump-button:hover {
+ color: #073B4C !important;
+}
+
+.upsell-order-list-table .ant-table-container,
+.upsell-order-list-table .ant-table-placeholder .ant-table-cell {
+ /*border-radius: 5px;*/
+ border: 0 !important;
+}
+
+.upsell-order-list-table .ant-table.ant-table-bordered {
+ overflow: hidden;
+ border-radius: 10px;
+ border: 1px solid #DDE5F9;
+}
+
+.upsell-order-list-table .ant-table .ant-table-thead .ant-table-cell:last-child {
+ border-inline-end: 0 !important;
+}
+
+/*.upsell-order-list-table .ant-table .ant-table-body .ant-table-cell {*/
+/* border: 0;*/
+/*}*/
+
+.upsell-order-list-table .ant-table-thead .ant-table-cell {
+ color: #073B4C;
+ font-size: 16px;
+ background: #FFF;
+ font-weight: 500;
+ padding: 13px 20px;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row,
+.upsell-order-list-table .ant-table-tbody .ant-table-placeholder {
+ background: #f7f9ff !important;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell {
+ color: #073B4C;
+ font-size: 14px;
+ font-weight: 500;
+ padding: 18px 16px;
+ vertical-align: top;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .table-products,
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .table-categories {
+ gap: 8px;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 8px;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .category-pills,
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .product-pills {
+ border-radius: 4px;
+ padding: 2px 12px;
+ font-weight: 400;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .product-pills {
+ color: #008DFF;
+ background: #EBF6FF;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell .category-pills {
+ color: #32DBBE;
+ background: #EEFCF9;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row .ant-table-cell:last-child {
+ border-right: 0 !important;
+}
+
+.upsell-order-list-table .ant-table-tbody .ant-table-row:last-child td.ant-table-cell {
+ border: 0;
+}
+
+.upsell-order-list-table .ant-table-container,
+.upsell-order-list-table .ant-table-content .ant-table-cell {
+ border-color: #DDE6F9 !important;
+}
+
+/* End Order Bump List Table Styles. */
+
+
diff --git a/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-template.css b/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-template.css
new file mode 100644
index 00000000..6893b16b
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/css/frequently-bought-template.css
@@ -0,0 +1,157 @@
+.bump-template-main-wrapper{
+ width: 100%;
+ /* height: 900px; */
+ /* background: rgb(185, 179, 190); */
+ margin-bottom: 30px;
+ /* padding: 0 20px ; */
+}
+
+.bump-template-main-wrapper .demo-template-design-change-area{
+ width: 55%;
+ float: left;
+}
+
+.bump-template-main-wrapper .template-overview-area{
+ width: 45%;
+ min-height: 800px;
+ float: left;
+ padding: 10 20px ;
+}
+
+.offer-overview-top-text{
+ width: 100%;
+ height: 45px;
+ background: rgb(146, 218, 146);
+ padding: 10px;
+ font-size: 16px;
+ font-weight: bold;
+ margin-bottom: 20px;
+}
+
+.offer-main-wrap{
+ width: 100%;
+ height: 600px;
+ padding: 10px;
+}
+
+.offer-main-wrap .dynamic-offer-text{
+ gap: 4px;
+ width: 100%;
+ display: flex;
+ min-height: 30px;
+ font-weight: bold;
+ align-items: center;
+ margin-bottom: 15px;
+ justify-content: center;
+}
+
+.offer-main-wrap .product-image-and-title{
+ width: 100%;
+ min-height: 160px;
+ margin-bottom: 20px;
+ padding: 5px;
+}
+
+.offer-main-wrap .product-image-and-title .offer-product-image{
+ background: rgb(247, 242, 242);
+ min-height: 120px;
+ width: 30%;
+ padding: 5px;
+ float: left;
+
+}
+
+.offer-main-wrap .product-image-and-title .offer-product-title{
+ min-height: 150px;
+ width: 70%;
+ padding: 5px;
+ margin-bottom: 10px;
+ float: left;
+}
+
+.offer-main-wrap .product-checkbox-and-excitement-message{
+ width: 100%;
+ min-height: 35px;
+ margin-bottom: 20px;
+ padding: 5px;
+ font-size: 15px;
+ margin-top: 20px;
+ clear: both;
+ display: flex;
+ align-items: center;
+ gap: 5px;
+}
+
+.offer-main-wrap .product-checkbox-and-excitement-message .custom-checkbox{
+ height: 25px;
+ width: 25px;
+}
+
+.offer-main-wrap .product-description{
+ width: 100%;
+ height: 200px;
+ background: rgba(48, 33, 182, 0.678);
+ margin-bottom: 20px;
+ padding: 5px;
+}
+
+/* Teamplate design change area */
+.demo-template-design-change-area .offer-offer-box-text{
+ width: 98%;
+ height: 25px;
+ background: rgb(236, 233, 233);
+ padding-left: 5px;
+ font-size: 15px;
+ font-weight: bold;
+ margin-bottom: 10px;
+ border-radius: 5px;
+}
+
+.form-input-distance{
+ margin-top: -20px;
+}
+
+.offer-discount-title::before{
+ content: 'For Discount %dfgdfgdfg';
+}
+
+.App {
+ font-family: sans-serif;
+ padding: 20px;
+ }
+
+ h2 {
+ margin-top: 40px;
+ }
+
+ .rc-color-picker-panel {
+ border: 1px solid #ccc;
+ }
+ .rc-color-picker-panel-inner {
+ border: none;
+ box-shadow: none;
+ }
+ .rc-color-picker-panel-board-hsv {
+ border-radius: 12px;
+ outline: none;
+ }
+ .rc-color-picker-panel-board-value {
+ border: none;
+ border-radius: 12px;
+ }
+ .rc-color-picker-panel-board-saturation {
+ border: none;
+ border-radius: 12px;
+ }
+ .rc-color-picker-panel-ribbon {
+ border-radius: 12px;
+ }
+ .rc-color-picker-panel-wrap-preview {
+ border-radius: 12px;
+ }
+ .rc-color-picker-panel-preview span {
+ border-radius: 12px;
+ }
+ .rc-color-picker-panel-preview input {
+ border-radius: 12px;
+ }
diff --git a/Includes/Modules/FrequentlyBought/assets/images/bump-preview.svg b/Includes/Modules/FrequentlyBought/assets/images/bump-preview.svg
new file mode 100644
index 00000000..7d65a651
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/images/bump-preview.svg
@@ -0,0 +1,10 @@
+
diff --git a/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump-module-img.webp b/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump-module-img.webp
new file mode 100644
index 00000000..e9704306
Binary files /dev/null and b/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump-module-img.webp differ
diff --git a/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump.svg b/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump.svg
new file mode 100644
index 00000000..abb27fdf
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/images/upsell-order-bump.svg
@@ -0,0 +1,11 @@
+
diff --git a/Includes/Modules/FrequentlyBought/assets/js/frequently-bought-admin-custom.js b/Includes/Modules/FrequentlyBought/assets/js/frequently-bought-admin-custom.js
new file mode 100644
index 00000000..9bb15ac1
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/js/frequently-bought-admin-custom.js
@@ -0,0 +1,4 @@
+;(function($){
+ $('#_custom_product_text_field').select2();
+ $('#_discount_rate_for_bump_product').select2();
+})(jQuery);
diff --git a/Includes/Modules/FrequentlyBought/assets/package.json b/Includes/Modules/FrequentlyBought/assets/package.json
new file mode 100644
index 00000000..ca0ce02c
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "sales-booster-frequently-bought",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "wp-scripts start src/settings.js",
+ "build": "wp-scripts build src/settings.js"
+ },
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "@wordpress/scripts": "^23.0.0"
+ },
+ "dependencies": {
+ "antd": "^5.5.0",
+ "nanoid": "^3.3.4",
+ "@wordpress/i18n": "^4.24.0",
+ "react-input-color": "^4.0.0"
+ }
+}
diff --git a/Includes/Modules/FrequentlyBought/assets/src/settings.js b/Includes/Modules/FrequentlyBought/assets/src/settings.js
new file mode 100644
index 00000000..47918efc
--- /dev/null
+++ b/Includes/Modules/FrequentlyBought/assets/src/settings.js
@@ -0,0 +1,32 @@
+import { addFilter,applyFilters } from "@wordpress/hooks";
+import { __ } from "@wordpress/i18n";
+import PlanUpgradeModal from "sales-booster/src/components/pro-previews/PromptNotice/PlanUpgradeModal";
+
+/**
+ * Add routes to sidebar.
+ */
+
+const componentObject = {
+ element:
+ Elevate your WooCommerce store with our sales booster plugin. Drive increased sales and enhance the shopping experience for your customers. +
+