@growupsell/react-ecommerce-core 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/provider.cjs CHANGED
@@ -5,8 +5,6 @@ var api = require('@growupsell/api');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var api$1 = require('@growupsell/api/api');
7
7
  require('lodash');
8
- var reactToastify = require('react-toastify');
9
- var fa = require('react-icons/fa');
10
8
 
11
9
  // src/provider/AuthProvider.tsx
12
10
  var StorageContext = react.createContext({
@@ -210,57 +208,28 @@ var BusinessConfigProvider = ({
210
208
  };
211
209
  var useBusinessContext = () => react.useContext(BusinessConfigContext);
212
210
  var useBusiness = () => react.useContext(BusinessConfigContext);
213
- var show = (type, message, options) => {
214
- const defaultOptions = {
215
- position: "top-right",
216
- autoClose: 3e3
211
+ function createNoopToastSupport() {
212
+ const noop = () => {
217
213
  };
218
- switch (type) {
219
- case "success":
220
- reactToastify.toast.success(message, {
221
- ...defaultOptions,
222
- ...options
223
- });
224
- break;
225
- case "error":
226
- reactToastify.toast.error(message, {
227
- ...defaultOptions,
228
- ...options
229
- });
230
- break;
231
- case "info":
232
- reactToastify.toast.info(message, {
233
- ...defaultOptions,
234
- ...options
235
- });
236
- break;
237
- case "warning":
238
- reactToastify.toast.warning(message, {
239
- ...defaultOptions,
240
- ...options
241
- });
242
- break;
243
- case "default":
244
- reactToastify.toast(message, {
245
- ...defaultOptions,
246
- ...options
247
- });
248
- break;
249
- default:
250
- reactToastify.toast(message, {
251
- ...defaultOptions,
252
- ...options
253
- });
254
- break;
255
- }
256
- };
257
- var toast = {
258
- success: (message, options) => show("success", message, options),
259
- error: (message, options) => show("error", message, options),
260
- info: (message, options) => show("info", message, options),
261
- warning: (message, options) => show("warning", message, options),
262
- default: (message, options) => show("default", message, options)
263
- };
214
+ return {
215
+ success: noop,
216
+ error: noop,
217
+ info: noop,
218
+ warning: noop,
219
+ default: noop
220
+ };
221
+ }
222
+ var ToastSupportContext = react.createContext(createNoopToastSupport());
223
+ function ToastSupportProvider({ children, value }) {
224
+ const api13 = react.useMemo(() => {
225
+ if (!value) return createNoopToastSupport();
226
+ return { ...createNoopToastSupport(), ...value };
227
+ }, [value]);
228
+ return /* @__PURE__ */ jsxRuntime.jsx(ToastSupportContext.Provider, { value: api13, children });
229
+ }
230
+ function useToastSupport() {
231
+ return react.useContext(ToastSupportContext);
232
+ }
264
233
  var CartWishlistRefreshContext = react.createContext({
265
234
  refreshType: null,
266
235
  setRefreshType: () => null
@@ -281,6 +250,7 @@ var CartContext = react.createContext({
281
250
  onChangeOffer: () => null,
282
251
  onChangeOrderType: () => null,
283
252
  session: {},
253
+ setSession: () => null,
284
254
  removeAppliedOffer: () => null,
285
255
  moveToWishlist: () => null,
286
256
  moveToWishlistLoading: false,
@@ -290,6 +260,7 @@ var CartContext = react.createContext({
290
260
  errorMessage: null
291
261
  });
292
262
  var CartProvider = (props) => {
263
+ const toast = useToastSupport();
293
264
  const [cartItems, setCartItems] = react.useState([]);
294
265
  const [orderFetchLoading, setOrderFetchLoading] = react.useState(true);
295
266
  const [addToCartLoading, setAddToCartLoading] = react.useState(false);
@@ -563,6 +534,7 @@ var CartProvider = (props) => {
563
534
  onChangeOffer,
564
535
  onChangeOrderType,
565
536
  session,
537
+ setSession,
566
538
  removeAppliedOffer,
567
539
  moveToWishlist,
568
540
  moveToWishlistLoading,
@@ -866,51 +838,6 @@ var ProductDetailProvider = (props) => {
866
838
  );
867
839
  };
868
840
  var useProductDetail = () => react.useContext(ProductDetailContext);
869
-
870
- // src/tailwind/applyTheme.ts
871
- function applyTheme(themeRGB) {
872
- const themeObject = mapTheme(themeRGB);
873
- const root = document.documentElement;
874
- Object.keys(themeObject).forEach((v) => {
875
- const propertyVal = themeObject[v];
876
- const validation = validateRGB(propertyVal);
877
- if (!validation) {
878
- throw new Error(`Invalid RGB value for ${v}: ${propertyVal}`);
879
- }
880
- root.style.setProperty(v, propertyVal);
881
- });
882
- }
883
- function mapTheme(rgb) {
884
- return {
885
- "--color-primary": rgb["primary"] ?? ""
886
- };
887
- }
888
- function validateRGB(rgb) {
889
- if (!rgb) return true;
890
- const rgbRegex = /^(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})$/;
891
- return rgbRegex.test(rgb);
892
- }
893
- function hexToRgb(hex) {
894
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
895
- return result ? `${parseInt(result[1], 16).toString()},${parseInt(result[2], 16).toString()},${parseInt(result[3], 16).toString()}` : null;
896
- }
897
- var ThemeContext = react.createContext({
898
- themeRGB: {}
899
- });
900
- function ThemeProvider(props) {
901
- const config = react.useContext(BusinessConfigContext);
902
- const { theme } = config;
903
- const pcolor = hexToRgb(theme?.primary_color);
904
- const primaryColor = !!pcolor ? pcolor : "0, 72, 76";
905
- react.useEffect(() => {
906
- applyTheme({ primary: primaryColor });
907
- }, []);
908
- const value = react.useMemo(() => {
909
- return { themeRGB: { primary: primaryColor } };
910
- }, [primaryColor]);
911
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value, children: props.children });
912
- }
913
- var useTheme = () => react.useContext(ThemeContext);
914
841
  var ProductConfigContext = react.createContext({});
915
842
  var ProductConfigProvider = (props) => {
916
843
  const [productConfig, setProductConfig] = react.useState({});
@@ -1224,6 +1151,7 @@ var WishlistContext = react.createContext({
1224
1151
  moveToCartLoading: false
1225
1152
  });
1226
1153
  var WishlistProvider = (props) => {
1154
+ const toast = useToastSupport();
1227
1155
  const [wishlistItems, setWishlistItems] = react.useState([]);
1228
1156
  const { user } = useAuth();
1229
1157
  const [fetchWishlistLoading, setFetchWishlistLoading] = react.useState(true);
@@ -1314,32 +1242,6 @@ var WishlistProvider = (props) => {
1314
1242
  return /* @__PURE__ */ jsxRuntime.jsx(WishlistContext.Provider, { value: { wishlistItems, addToWishlist, deleteWishlistItem, moveToCart, fetchWishlistLoading, addToWishlistLoading, moveToCartLoading }, children: props.children });
1315
1243
  };
1316
1244
  var useWishlist = () => react.useContext(WishlistContext);
1317
- function LiveSupportWidget() {
1318
- const { config, loading } = useLiveSupportWidget();
1319
- if (loading || !config?.is_active || config?.type !== "whatsapp" || !config?.whatsapp_no?.trim()) {
1320
- return null;
1321
- }
1322
- const phone = config.whatsapp_no.replace(/\D/g, "");
1323
- const whatsappUrl = `https://wa.me/${phone}`;
1324
- const handleClick = () => {
1325
- window.open(whatsappUrl, "_blank", "noopener,noreferrer");
1326
- };
1327
- console.log(config);
1328
- console.log(loading);
1329
- return /* @__PURE__ */ jsxRuntime.jsx(
1330
- "button",
1331
- {
1332
- type: "button",
1333
- onClick: handleClick,
1334
- style: {
1335
- bottom: "15px"
1336
- },
1337
- className: "fixed bottom-6 fixed right-6 z-[9999] flex h-14 w-14 items-center justify-center rounded-full bg-[#25D366] text-white shadow-lg transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-[#25D366] focus:ring-offset-2",
1338
- "aria-label": "Chat on WhatsApp",
1339
- children: /* @__PURE__ */ jsxRuntime.jsx(fa.FaWhatsapp, { className: "h-8 w-8" })
1340
- }
1341
- );
1342
- }
1343
1245
  var BaseProvider = ({
1344
1246
  children,
1345
1247
  baseURL,
@@ -1350,12 +1252,10 @@ var BaseProvider = ({
1350
1252
  isHeader,
1351
1253
  isFooter,
1352
1254
  isAnnouncementBar,
1353
- referralCodeFromUrl = null
1255
+ referralCodeFromUrl = null,
1256
+ toast
1354
1257
  }) => {
1355
- return /* @__PURE__ */ jsxRuntime.jsx(StorageProvider, { storage, children: /* @__PURE__ */ jsxRuntime.jsx(BusinessConfigProvider, { data: businessConfig, baseURL, children: /* @__PURE__ */ jsxRuntime.jsx(ReferralCodeProvider, { referralCodeFromUrl, children: /* @__PURE__ */ jsxRuntime.jsx(ThemeEditProvider, { isThemeEdit: isEdit, token, isHeader, isFooter, isAnnouncementBar, children: /* @__PURE__ */ jsxRuntime.jsx(BusinessMediaProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CustomerConfigProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(AuthProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(ModalProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(ThemeProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(LiveSupportWidgetProvider, { children: [
1356
- businessConfig.category.type == "retail" ? /* @__PURE__ */ jsxRuntime.jsx(ProductConfigProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CartWishlistRefreshProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CartProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(WishlistProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(FilterProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) }) }) }) }) }) : /* @__PURE__ */ jsxRuntime.jsx(MenuCartProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(MenuFilterProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) }) }),
1357
- /* @__PURE__ */ jsxRuntime.jsx(LiveSupportWidget, {})
1358
- ] }) }) }) }) }) }) }) }) }) });
1258
+ return /* @__PURE__ */ jsxRuntime.jsx(StorageProvider, { storage, children: /* @__PURE__ */ jsxRuntime.jsx(ToastSupportProvider, { value: toast, children: /* @__PURE__ */ jsxRuntime.jsx(BusinessConfigProvider, { data: businessConfig, baseURL, children: /* @__PURE__ */ jsxRuntime.jsx(ReferralCodeProvider, { referralCodeFromUrl, children: /* @__PURE__ */ jsxRuntime.jsx(ThemeEditProvider, { isThemeEdit: isEdit, token, isHeader, isFooter, isAnnouncementBar, children: /* @__PURE__ */ jsxRuntime.jsx(BusinessMediaProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CustomerConfigProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(AuthProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(ModalProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(LiveSupportWidgetProvider, { children: businessConfig.category.type == "retail" ? /* @__PURE__ */ jsxRuntime.jsx(ProductConfigProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CartWishlistRefreshProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(CartProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(WishlistProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(FilterProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) }) }) }) }) }) : /* @__PURE__ */ jsxRuntime.jsx(MenuCartProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(MenuFilterProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) }) }) }) }) }) }) }) }) }) }) }) });
1359
1259
  };
1360
1260
  var ModalContext = react.createContext(void 0);
1361
1261
  var ModalProvider = ({ children }) => {
@@ -1899,16 +1799,6 @@ var MenuCartProvider = (props) => {
1899
1799
  );
1900
1800
  };
1901
1801
  var useMenuCart = () => react.useContext(MenuCartContext);
1902
- var ToastProvider = () => {
1903
- return /* @__PURE__ */ jsxRuntime.jsx(
1904
- reactToastify.ToastContainer,
1905
- {
1906
- position: "top-right",
1907
- autoClose: 3e3,
1908
- theme: "colored"
1909
- }
1910
- );
1911
- };
1912
1802
  var REFERRAL_STORAGE_KEY = "referralCode";
1913
1803
  var ReferralCodeContext = react.createContext(null);
1914
1804
  function ReferralCodeProvider({
@@ -2000,11 +1890,9 @@ exports.ProductDetailProvider = ProductDetailProvider;
2000
1890
  exports.ReferralCodeProvider = ReferralCodeProvider;
2001
1891
  exports.StorageContext = StorageContext;
2002
1892
  exports.StorageProvider = StorageProvider;
2003
- exports.ThemeContext = ThemeContext;
2004
1893
  exports.ThemeEditContext = ThemeEditContext;
2005
1894
  exports.ThemeEditProvider = ThemeEditProvider;
2006
- exports.ThemeProvider = ThemeProvider;
2007
- exports.ToastProvider = ToastProvider;
1895
+ exports.ToastSupportProvider = ToastSupportProvider;
2008
1896
  exports.WishlistContext = WishlistContext;
2009
1897
  exports.WishlistProvider = WishlistProvider;
2010
1898
  exports.useAuth = useAuth;
@@ -2027,8 +1915,8 @@ exports.useProductConfig = useProductConfig;
2027
1915
  exports.useProductDetail = useProductDetail;
2028
1916
  exports.useReferralCode = useReferralCode;
2029
1917
  exports.useStorage = useStorage;
2030
- exports.useTheme = useTheme;
2031
1918
  exports.useThemeEdit = useThemeEdit;
1919
+ exports.useToastSupport = useToastSupport;
2032
1920
  exports.useWishlist = useWishlist;
2033
1921
  //# sourceMappingURL=provider.cjs.map
2034
1922
  //# sourceMappingURL=provider.cjs.map