@growupsell/react-ecommerce-core 1.0.2 → 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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/StorageProvider.tsx","../src/provider/AuthProvider.tsx","../src/provider/BusinessMedia.tsx","../src/provider/BusinessProvider.tsx","../src/toast.ts","../src/provider/CartWishlistRefreshProvider.tsx","../src/provider/CartProvider.tsx","../src/provider/FilterProvider.tsx","../src/provider/ProductDetailProvider.tsx","../src/tailwind/applyTheme.ts","../src/tailwind/colors.ts","../src/provider/ThemeProvider.tsx","../src/provider/ProductConfig.tsx","../src/provider/CustomerConfigProvider.tsx","../src/provider/ThemeEditProvider.tsx","../src/provider/HomeConfigProvider.tsx","../src/provider/CustomPageConfigProvider.tsx","../src/provider/WishlistProvider.tsx","../src/ui/LiveSupportWidget.tsx","../src/provider/BaseProvider.tsx","../src/provider/AuthModalProvider.tsx","../src/provider/HomeConfigHeroSliderProvider.tsx","../src/provider/HeaderFooterProvider.tsx","../src/provider/MenuFilterProvider.tsx","../src/provider/MenuCartProvider.tsx","../src/provider/ToastProvider.tsx","../src/provider/ReferralCodeProvider.tsx","../src/provider/LiveSupportWidgetProvider.tsx"],"names":["createContext","useState","jsx","useContext","WAApi","createCustomerSession","useEffect","api","rewardPoint","getBusinessSetting","getRewardPointBusinessConfig","getOrderBusinessConfig","reactToast","errorMessage","productDetail","useMemo","useRef","useCallback","retrieveThemeContent","updateThemeContent","_","getCustomPageContent","updateCustomPageContent","FaWhatsapp","Fragment","ToastContainer"],"mappings":"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","file":"provider.cjs","sourcesContent":["import React, { createContext, useState, useEffect, useContext } from 'react';\n\nexport const StorageContext = createContext<{\n setItem: (key: string, data: any, type: any) => null;\n getItem: (key: string, type?: any) => null;\n clearAll: () => null;\n removeItem: (key: string, type?: any) => null;\n}>({\n setItem: (key: string, data: any, type: any) => null,\n getItem: (key: string) => null,\n clearAll: () => null,\n removeItem: (key: string) => null,\n});\n\ntype Props = {\n storage: any;\n};\n\nexport const StorageProvider = (props: React.PropsWithChildren<Props>) => {\n const [loading, setLoading] = useState(false);\n\n return (\n <StorageContext.Provider\n value={{\n setItem: props.storage.setItem,\n getItem: props.storage.getItem,\n clearAll: props.storage.clearAll,\n removeItem: props.storage.removeItem,\n }}\n >\n {loading ? null : props.children}\n </StorageContext.Provider>\n );\n};\n\nexport const useStorage = () => useContext(StorageContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api, WAApi } from '@growupsell/api';\nimport { useStorage } from './StorageProvider';\nimport { createCustomerSession } from '@growupsell/api/api';\n\nexport const AuthContext = createContext<{\n signIn: (data: any, rememberMe: boolean) => void;\n signOut: () => void;\n user: any;\n setUser: (o: any) => void;\n customerSession: any;\n loadingToken: any;\n loadingUser: any;\n token: any;\n}>({\n signIn: () => null,\n signOut: () => null,\n user: null,\n setUser: (o: any) => null,\n customerSession: null,\n loadingToken: null,\n loadingUser: null,\n token: null,\n});\n\nexport const AuthProvider = (props: React.PropsWithChildren) => {\n const [user, setUser] = useState<any>(null);\n const [loading, setLoading] = useState(true);\n const [customerSession, setCustomerSession] = useState();\n const [loadingUser, setLoadingUser] = useState(true);\n const [loadingToken, setLoadingToken] = useState(false);\n const storage = useStorage();\n const [token, setToken] = useState();\n\n const signIn = (data: any, rememberMe?: any) => {\n if (data.is_active) {\n WAApi.defaults.headers.common['x-customer-token'] = `${data.token}`;\n }\n // TODO: need to think for if user is not active then active first\n const type = rememberMe ? 'local' : 'session';\n storage.setItem('user', JSON.stringify(data), type);\n setUser(data);\n };\n\n const signOut = () => {\n setUser(null);\n storage.clearAll();\n delete WAApi.defaults.headers.common['x-customer-token'];\n };\n\n let sessionCreationInProgress = false;\n const initializedCustomerSession = async () => {\n setLoading(true);\n if (sessionCreationInProgress) {\n return;\n }\n sessionCreationInProgress = true;\n let savedSession: any = storage.getItem('session', 'session')\n ? JSON.parse(storage.getItem('session', 'session')!)\n : null;\n if (savedSession) {\n setCustomerSession(savedSession);\n WAApi.defaults.headers.common['x-session-token'] =\n savedSession?.session_token;\n } else {\n try {\n let body = {\n customer: user?.id,\n };\n const response = await createCustomerSession(body);\n setCustomerSession(response);\n WAApi.defaults.headers.common['x-session-token'] =\n response?.session_token;\n storage.setItem('session', JSON.stringify(response), 'session');\n } catch (error) {\n console.log('Error--->', error);\n }\n }\n\n setLoading(false);\n sessionCreationInProgress = false;\n };\n\n useEffect(() => {\n !loadingUser && initializedCustomerSession();\n }, [loadingUser]);\n\n useEffect(() => {\n setLoadingUser(true);\n let local_user = storage.getItem('user', 'local');\n let session_user = storage.getItem('user', 'session');\n\n if (local_user) {\n let customer = JSON.parse(local_user);\n WAApi.defaults.headers.common['x-customer-token'] = customer.token;\n setUser(customer);\n } else if (session_user) {\n let session_customer = JSON.parse(session_user);\n WAApi.defaults.headers.common['x-customer-token'] =\n session_customer.token;\n setUser(session_customer);\n }\n\n setLoadingUser(false);\n }, []);\n\n useEffect(() => {\n if (user) {\n setLoadingToken(true);\n try {\n if (user?.token) {\n WAApi.defaults.headers.common['x-customer-token'] = user.token;\n setToken(user.token);\n }\n } catch (error) {\n console.log('User not available');\n } finally {\n setLoadingToken(false);\n }\n }\n }, [user]);\n\n // if (loadingUser || loadingToken) {\n // return <div>Loading...</div>;\n // }\n\n return (\n <AuthContext.Provider\n value={{\n signIn,\n signOut,\n user,\n setUser,\n customerSession,\n loadingToken,\n loadingUser,\n token,\n }}\n >\n {loading ? null : props.children}\n {/* {props.children} */}\n </AuthContext.Provider>\n );\n};\n\nexport const useAuth = () => useContext(AuthContext);\n","import { api } from '@growupsell/api';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nexport const BusinessMediaContext = createContext({});\n\nexport const BusinessMediaProvider = (props: React.PropsWithChildren) => {\n const [businessMedia, setBusinessMeadia] = useState({});\n\n const fetchBusinessMedia = async () => {\n const response = await api.getBusinessMedia();\n setBusinessMeadia({ ...response });\n };\n\n const updateBusinessMedia = (data: object) => {\n setBusinessMeadia({ ...data });\n };\n\n useEffect(() => {\n fetchBusinessMedia();\n }, []);\n\n return (\n <BusinessMediaContext.Provider value={{ businessMedia, updateBusinessMedia }}>\n {props.children}\n </BusinessMediaContext.Provider>\n );\n};\n\nexport const useBusinessMedia = () => useContext(BusinessMediaContext);","import React, { useContext, useState } from 'react';\nimport { createContext, useEffect } from 'react';\nimport { WAApi } from '@growupsell/api';\nimport {\n getBusinessSetting,\n getOrderBusinessConfig,\n getRewardPointBusinessConfig,\n} from '@growupsell/api/api';\nimport { useAuth } from './AuthProvider';\n\nexport const BusinessConfigContext = createContext<{\n currency: any;\n reward_point_config: any;\n orderConfig: any;\n}>({\n currency: null,\n reward_point_config: null,\n orderConfig: null,\n});\n\nexport const BusinessConfigProvider = ({\n children,\n data,\n baseURL,\n}: {\n data: any;\n children: React.ReactNode;\n baseURL: string;\n}) => {\n WAApi.defaults.headers.common['business'] = data?.id;\n WAApi.defaults.baseURL = baseURL;\n\n const [loading, setLoading] = useState(true);\n const { user } = useAuth();\n const [currency, setCurrency] = useState<any>({});\n const [rewardPoint, setRewardPoint] = useState<any>({});\n const [orderConfig, setOrderConfig] = useState<any>({});\n const [domain, setDomain] = useState('');\n\n const fetchData = async () => {\n try {\n const [business_setting, rewardPoint, order_business_config] =\n await Promise.all([\n getBusinessSetting(),\n getRewardPointBusinessConfig(),\n getOrderBusinessConfig(),\n ]);\n setCurrency(business_setting.currency);\n setDomain(business_setting.domain);\n setRewardPoint(rewardPoint);\n setOrderConfig(order_business_config);\n } catch (error) {\n console.log('error in fetching data-->', error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchData();\n }, []);\n\n return (\n <BusinessConfigContext.Provider\n value={{\n ...data,\n currency: currency,\n reward_point_config: rewardPoint,\n domain,\n orderConfig,\n }}\n >\n {loading ? null : children}\n </BusinessConfigContext.Provider>\n );\n};\n\nexport const useBusinessContext = () => useContext(BusinessConfigContext);\nexport const useBusiness = () => useContext(BusinessConfigContext);\n","import { toast as reactToast, ToastOptions } from \"react-toastify\";\n\ntype ToastType = \"success\" | \"error\" | \"info\" | \"warning\" | \"default\";\n\nconst show = (\n type: ToastType,\n message: string,\n options?: ToastOptions\n) => {\n const defaultOptions: ToastOptions = {\n position: \"top-right\",\n autoClose: 3000,\n };\n switch (type) {\n case \"success\":\n reactToast.success(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n case \"error\":\n reactToast.error(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n case \"info\":\n reactToast.info(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n case \"warning\":\n reactToast.warning(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n case \"default\":\n reactToast(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n default:\n // fallback to default toast\n reactToast(message, {\n ...defaultOptions,\n ...options,\n });\n break;\n }\n};\n\nexport const toast = {\n success: (message: string, options?: ToastOptions) =>\n show(\"success\", message, options),\n\n error: (message: string, options?: ToastOptions) =>\n show(\"error\", message, options),\n\n info: (message: string, options?: ToastOptions) =>\n show(\"info\", message, options),\n\n warning: (message: string, options?: ToastOptions) =>\n show(\"warning\", message, options),\n\n default: (message: string, options?: ToastOptions) =>\n show(\"default\", message, options),\n};","import React, { createContext, useContext, useState } from 'react'\n\nexport const CartWishlistRefreshContext = createContext<{\n refreshType: 'cart' | 'wishlist' | null;\n setRefreshType: any;\n}>({\n refreshType: null,\n setRefreshType: () => null,\n})\n\nexport const CartWishlistRefreshProvider = (props: React.PropsWithChildren) => {\n const [refreshType, setRefreshType] = useState(null);\n\n return (\n <CartWishlistRefreshContext.Provider value={{ refreshType, setRefreshType }}>\n {props.children}\n </CartWishlistRefreshContext.Provider>\n )\n}\n\nexport const useCartWishlistRefresh = () => useContext(CartWishlistRefreshContext);","import React, { createContext, useState, useEffect, useContext } from 'react';\nimport _ from 'lodash';\nimport { api } from '@growupsell/api';\nimport { toast } from '../toast';\nimport { useAuth } from './AuthProvider';\nimport { useStorage } from './StorageProvider';\nimport { useCartWishlistRefresh } from './CartWishlistRefreshProvider';\n\nconst isArrayEqual = (a: any, b: any) => _.isEmpty(_.xorWith(a, b, _.isEqual));\n\ntype ORDER_TYPES = 'delivery' | 'cod';\n\nexport const CartContext = createContext<{\n cartItems: any[];\n addToCart: (sku: any, quantity: number) => void;\n addToCartLoading: boolean;\n addToCartError: string | null;\n clearCart: () => void;\n onChangeAddress: (addressId: number, addressType: string) => void;\n onChangeTax: (tax_number: string, legal_name: string) => void;\n onChangeOffer: (offers: number | null) => void;\n onChangeOrderType: (type: ORDER_TYPES) => void;\n session: any;\n removeAppliedOffer: () => void;\n moveToWishlist: (sku: any) => void;\n moveToWishlistLoading: boolean;\n orderFetchLoading: boolean;\n onChangePromoCode: (promoCode: string | null) => void;\n onChangeGiftCard: (pin: number, code: string) => void;\n errorMessage?: string | null;\n}>({\n cartItems: [],\n addToCart: () => null,\n addToCartLoading: false,\n addToCartError: null,\n clearCart: () => null,\n onChangeAddress: () => null,\n onChangeTax: () => null,\n onChangeOffer: () => null,\n onChangeOrderType: () => null,\n session: {},\n removeAppliedOffer: () => null,\n moveToWishlist: () => null,\n moveToWishlistLoading: false,\n orderFetchLoading: true,\n onChangePromoCode: () => null,\n onChangeGiftCard: () => null,\n errorMessage: null,\n});\n\nexport const CartProvider = (props: React.PropsWithChildren) => {\n const [cartItems, setCartItems] = useState<any>([]);\n const [orderFetchLoading, setOrderFetchLoading] = useState(true);\n const [addToCartLoading, setAddToCartLoading] = useState(false);\n const [addToCartError, setAddToCartError] = useState<string | null>(null);\n const [moveToWishlistLoading, setMoveToWishlistLoading] = useState(false);\n const [session, setSession] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const { user } = useAuth();\n const storage = useStorage();\n const { refreshType, setRefreshType } = useCartWishlistRefresh();\n\n useEffect(() => {\n if (refreshType == 'cart') {\n fetchOrderDetail();\n setRefreshType(null);\n }\n }, [refreshType]);\n\n const onChangeAddress = async (addressId: number, addressType: string) => {\n let body = {};\n if (addressType === 'shipping') {\n body = {\n shipping_address: addressId,\n };\n } else if (addressType === 'billing') {\n body = {\n billing_address: addressId,\n };\n } else {\n body = {\n shipping_address: addressId,\n billing_address: addressId,\n };\n }\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateAddressCartOrder(body);\n setSession({\n ...session,\n shipping_address: response.shipping_address,\n billing_address: response.billing_address,\n });\n }\n } catch (error) {\n console.log('Error---->', error);\n }\n };\n\n const onChangePromoCode = async (promoCodeID: string | null) => {\n let body = {\n promo: promoCodeID,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateCartPromoCode(body);\n setSession({\n ...session,\n promo: response.promo,\n promo_redeem_amount: Number(response.promo_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n if (promoCodeID) {\n toast.success('Promo code applied successfully');\n } else {\n toast.info('Promo code removed');\n }\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.message);\n console.log('Error---->', error);\n const errorMsg = error?.response?.message || 'Failed to apply promo code';\n toast.error(errorMsg);\n }\n };\n\n const onChangeGiftCard = async (pin: number, code: string) => {\n let body = {\n pin,\n code,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateCartGiftCard(body);\n setSession({\n ...session,\n giftcard: response.giftcard,\n giftcard_redeem_amount: Number(response.giftcard_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n setErrorMessage(null);\n fetchOrderDetail();\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.message);\n console.log('Error---->', error);\n }\n };\n\n const onChangeOffer = async (offers: number | null) => {\n let body = {\n offer: offers,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateOfferCartOrder(body);\n const orderData = await api.getOrderCartDetail();\n setSession({\n ...session,\n offers: response.offers,\n final_payable_amount: Number(orderData.final_payable_amount),\n offer_redeem_amount: Number(orderData.offer_redeem_amount),\n });\n if (offers) {\n toast.success('Offer applied successfully');\n } else {\n toast.info('Offer removed');\n }\n fetchOrderDetail();\n }\n } catch (error) {\n console.log('Error---->', error);\n toast.error('Failed to apply offer');\n }\n };\n\n const onChangeOrderType = async (type: ORDER_TYPES) => {\n const prevType = session?.type;\n // Update UI immediately so checkbox reflects selection without waiting for API.\n setSession((prev: any) => ({\n ...prev,\n type,\n }));\n\n let body = { type };\n try {\n const response = await api.updateCartOrderType(body);\n setSession((prev: any) => ({\n ...prev,\n type: response?.type ?? type,\n }));\n } catch (error) {\n console.log('Error---->', error);\n // Roll back if API fails so local state stays consistent with backend.\n setSession((prev: any) => ({\n ...prev,\n type: prevType,\n }));\n toast.error('Something went wrong! Please try again.');\n }\n };\n\n const onChangeTax = async (legal_name: string, tax_number: string) => {\n let body = {\n tax_number,\n legal_name,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateTaxCartOrder(body);\n setSession({\n ...session,\n tax: response,\n });\n }\n } catch (error) {\n console.log('Error---->', error);\n }\n };\n\n useEffect(() => {\n session && storage.setItem('cart', JSON.stringify(session), 'local');\n }, [session]);\n\n const fetchOrderDetail = async () => {\n setOrderFetchLoading(true);\n const response = await api.getOrderCartDetail();\n setSession({\n ...session,\n ...response,\n });\n setCartItems(response.products);\n setOrderFetchLoading(false);\n };\n\n useEffect(() => {\n fetchOrderDetail();\n }, [user]);\n\n const removeAppliedOffer = async () => {\n setSession({\n ...session,\n offers: null,\n offer_redeem_amount: 0,\n });\n toast.info('Offer removed');\n };\n\n const addToCart = async (sku: any, quantity: number) => {\n setAddToCartLoading(true);\n setAddToCartError(null);\n setOrderFetchLoading(true);\n let isItemInCart = cartItems?.find((item: any) => item.sku.id == sku);\n try {\n if (quantity === 0) {\n if (isItemInCart) {\n await api.deleteCartItem(isItemInCart.id);\n console.log('Item removed from cart');\n setCartItems(\n cartItems?.filter(\n (cartItem: any) => cartItem.id !== isItemInCart.id,\n ),\n );\n await fetchOrderDetail();\n }\n return;\n }\n if (isItemInCart) {\n await api.updateCartItem(isItemInCart.id, {\n sku: isItemInCart.sku.id,\n qty: isItemInCart.qty + quantity,\n });\n await fetchOrderDetail();\n console.log('Cart item updated successfully');\n } else {\n let body = {\n qty: quantity,\n sku: sku,\n };\n await api.addProductToCart(body);\n console.log('New item added to cart.');\n toast.success('Item added to cart');\n await fetchOrderDetail();\n }\n } catch (error: any) {\n setOrderFetchLoading(false);\n console.log('Error---->', error);\n const message =\n error?.response?.message ||\n error?.response?.data?.message ||\n error?.message ||\n 'Unable to add to cart. Please try again.';\n setAddToCartError(message);\n toast.error(message);\n } finally {\n setAddToCartLoading(false);\n }\n };\n\n const clearCart = () => {\n setCartItems([]);\n setSession(null);\n storage.removeItem('cart');\n fetchOrderDetail();\n };\n\n const moveToWishlist = async (id: number) => {\n let isItemInCart = cartItems?.find((item: any) => item.id === id);\n\n if (!isItemInCart) {\n console.log('Item not found in cart.');\n toast.warning('Item not found in cart');\n return;\n }\n\n try {\n setMoveToWishlistLoading(true);\n // First, try to add to wishlist\n let body = { sku: isItemInCart.sku.id };\n await api.addProductToWishlist(body);\n\n // Only if successfully added to wishlist, then remove from cart\n await api.deleteCartItem(isItemInCart.id);\n\n setCartItems((prevCartItems: any[]) =>\n prevCartItems.filter((cartItem) => cartItem.id !== isItemInCart.id),\n );\n\n toast.success('Item moved to wishlist');\n setRefreshType('wishlist');\n } catch (error: any) {\n console.error('Error moving item to wishlist:', error);\n const errorMessage =\n error?.response?.data?.message ||\n error?.response?.message ||\n 'Something went wrong! Please try again.';\n toast.error(errorMessage);\n } finally {\n setMoveToWishlistLoading(false);\n }\n };\n\n return (\n <CartContext.Provider\n value={{\n cartItems,\n addToCart,\n addToCartLoading,\n addToCartError,\n clearCart,\n onChangeAddress,\n onChangeTax,\n onChangeOffer,\n onChangeOrderType,\n session,\n removeAppliedOffer,\n moveToWishlist,\n moveToWishlistLoading,\n orderFetchLoading,\n onChangePromoCode,\n onChangeGiftCard,\n errorMessage,\n }}\n >\n {props.children}\n </CartContext.Provider>\n );\n};\n\nexport const useCart = () => useContext(CartContext);\n","import React, { createContext, useContext, useState, useEffect } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const FilterContext = createContext<{\n selectedCategoryId: number[];\n addCategoryFilterId: (id: number) => void;\n removeCategoryFilterId: (id: number) => void;\n menuList: any[];\n productLoading: boolean;\n currentPage: number;\n handlePageChange: (page: number) => void;\n setMenuList: (x: any) => void;\n filterConfig: any;\n setSelectedSortOption: (x: string) => void;\n seletedRattingNumber: number | undefined | string;\n setSelectedRattingNumber: (x: any) => void;\n selectedDiscountOff: number | undefined;\n setSelectedDiscountOff: (x: any) => void;\n selectedMinPrice: number;\n selectedMaxPrice: number;\n setSelectedMinPrice: (x: any) => void;\n setSelectedMaxPrice: (x: any) => void;\n brandList: any[];\n selectedBrandId: any[];\n updateBrandIds: (x: any) => void;\n brandLoading: boolean;\n variantList: any[];\n selectedVariants: any[];\n updateSelectedVariants: (x: any) => void;\n variantLoading: boolean;\n total: number;\n limit: number;\n offset: number;\n}>({\n selectedCategoryId: [],\n addCategoryFilterId: () => null,\n removeCategoryFilterId: () => null,\n menuList: [],\n productLoading: true,\n currentPage: 1,\n handlePageChange: () => null,\n setMenuList: () => null,\n filterConfig: null,\n setSelectedSortOption: () => null,\n seletedRattingNumber: 0,\n setSelectedRattingNumber: () => null,\n selectedDiscountOff: 0,\n setSelectedDiscountOff: () => null,\n selectedMinPrice: 0,\n selectedMaxPrice: 0,\n setSelectedMinPrice: () => null,\n setSelectedMaxPrice: () => null,\n brandList: [],\n selectedBrandId: [],\n updateBrandIds: () => null,\n brandLoading: false,\n variantList: [],\n selectedVariants: [],\n updateSelectedVariants: () => null,\n variantLoading: false,\n total: 0,\n limit: 10,\n offset: 0,\n});\n\nexport const FilterProvider = (props: React.PropsWithChildren) => {\n const [filterConfig, setFilterConfig] = useState<any>();\n const [selectedCategoryId, setSelectedCategoryId] = useState<number[]>([]);\n const [selectedSortOption, setSelectedSortOption] =\n useState<string>('newest_first');\n const [seletedRattingNumber, setSelectedRattingNumber] = useState<any>();\n const [selectedDiscountOff, setSelectedDiscountOff] = useState();\n const [selectedMinPrice, setSelectedMinPrice] = useState(\n filterConfig?.price?.min,\n );\n const [selectedMaxPrice, setSelectedMaxPrice] = useState(\n filterConfig?.price?.max,\n );\n const [menuList, setMenuList] = useState([]);\n const [productLoading, setProductLoading] = useState(true);\n const [currentPage, setCurrentPage] = useState(1);\n const [filterConfigLoading, setFilterConfigLoading] = useState(false);\n const [brandList, setBrandList] = useState([]);\n const [selectedBrandId, setSelectedBrandId] = useState([]);\n const [brandLoading, setBrandLoading] = useState(false);\n const [variantList, setVariantList] = useState([]);\n const [selectedVariants, setSelectedVariants] = useState([]);\n const [variantLoading, setVariantLoading] = useState(false);\n const [limit, setLimit] = useState<number>(10);\n const [offset, setOffset] = useState<number>(0);\n const [total, setTotal] = useState(0);\n\n const fetchBrandList = async () => {\n setBrandLoading(true);\n let body = {\n category_ids: selectedCategoryId,\n };\n try {\n const brands = await api.getBrandList(body);\n setBrandList(brands);\n } catch (error) {\n console.log(error);\n } finally {\n setBrandLoading(false);\n }\n };\n\n const addCategoryFilterId = (id: number) => {\n setSelectedCategoryId((prevIds) => {\n if (prevIds.includes(id)) {\n return prevIds;\n }\n return [...prevIds, id];\n });\n setCurrentPage(1);\n };\n\n const fetchFilterConfig = async () => {\n setFilterConfigLoading(true);\n const response = await api.getProductFilterConfig();\n setFilterConfig(response);\n setFilterConfigLoading(false);\n };\n\n useEffect(() => {\n fetchFilterConfig();\n }, []);\n\n const removeCategoryFilterId = (id: number) => {\n setSelectedCategoryId((x) => {\n return x.filter((o) => o !== id);\n });\n setCurrentPage(1);\n };\n\n const fetchProductList = async () => {\n setProductLoading(true);\n let body = {\n category_id: selectedCategoryId,\n sort_by: selectedSortOption,\n min_rating: seletedRattingNumber,\n min_discount: selectedDiscountOff,\n min_price: selectedMinPrice,\n max_price: selectedMaxPrice,\n brand_ids: selectedCategoryId.length > 0 ? selectedBrandId : null,\n variants: selectedCategoryId.length > 0 ? selectedVariants : null,\n limit: limit,\n offset: offset,\n };\n try {\n const productSearch = await api.getProductSearch(body);\n setTotal(productSearch.count);\n setMenuList(productSearch.results);\n } catch (error) {\n console.log(error);\n } finally {\n setProductLoading(false);\n }\n };\n\n const updateBrandIds = (id: number) => {\n setSelectedBrandId((prevIds: any) => {\n if (prevIds.includes(id)) {\n return prevIds.filter((x: any) => x !== id);\n }\n return [...prevIds, id];\n });\n };\n\n const updateSelectedVariants = (label: string) => {\n setSelectedVariants((prevVariants: any) => {\n if (prevVariants.includes(label)) {\n return prevVariants.filter((x: any) => x !== label);\n }\n return [...prevVariants, label];\n });\n };\n\n const fetchVariantList = async () => {\n setVariantLoading(true);\n let body = {\n category_ids: selectedCategoryId,\n };\n const response = await api.getProductVariantByCategory(body);\n setVariantList(response);\n setVariantLoading(false);\n };\n\n useEffect(() => {\n if (!filterConfigLoading) {\n fetchProductList();\n }\n }, [\n selectedCategoryId,\n currentPage,\n selectedSortOption,\n seletedRattingNumber,\n selectedDiscountOff,\n selectedMinPrice,\n selectedMaxPrice,\n selectedBrandId,\n selectedVariants,\n limit,\n offset,\n ]);\n\n const handlePageChange = (newOffset: number) => {\n setOffset(newOffset);\n };\n\n useEffect(() => {\n if (selectedCategoryId.length > 0) {\n fetchBrandList();\n fetchVariantList();\n }\n }, [selectedCategoryId]);\n\n return (\n <FilterContext.Provider\n value={{\n selectedCategoryId,\n setMenuList,\n addCategoryFilterId,\n removeCategoryFilterId,\n menuList,\n productLoading,\n currentPage,\n handlePageChange,\n filterConfig,\n setSelectedSortOption,\n seletedRattingNumber,\n setSelectedRattingNumber,\n selectedDiscountOff,\n setSelectedDiscountOff,\n selectedMinPrice,\n selectedMaxPrice,\n setSelectedMinPrice,\n setSelectedMaxPrice,\n brandList,\n selectedBrandId,\n updateBrandIds,\n brandLoading,\n variantList,\n selectedVariants,\n updateSelectedVariants,\n variantLoading,\n total,\n limit,\n offset,\n }}\n >\n {!filterConfigLoading && props.children}\n </FilterContext.Provider>\n );\n};\n\nexport const useFilter = () => useContext(FilterContext);\n","import { api } from '@growupsell/api';\nimport React, { useState, createContext, useEffect, useContext } from 'react';\n\nexport const ProductDetailContext = createContext<{\n selectedVariants: any[];\n selectUnselectVariants: (type: string, value: string, id: number) => void;\n productDetail: any;\n waitProductLoading: boolean;\n setSelectedVariants: (x: any) => void;\n}>({\n selectedVariants: [],\n selectUnselectVariants: () => null,\n productDetail: [],\n waitProductLoading: true,\n setSelectedVariants: () => null,\n});\n\ntype Props = {\n productId: any;\n selected_variants: any;\n};\n\nexport const ProductDetailProvider = (\n props: React.PropsWithChildren<Props>,\n) => {\n const [selectedVariants, setSelectedVariants] = useState<any>([]);\n const [productDetail, setProductDetail] = useState([]);\n const [waitProductLoading, setWaitProductLoading] = useState(true);\n const selectedIds = props?.selected_variants?.split(',').map(Number);\n\n const selectUnselectVariants = (type: string, value: string, id: number) => {\n // Set loading to true when function is called\n setWaitProductLoading(true);\n\n setSelectedVariants((prev: any) => {\n const existingIndex = prev.findIndex((item: any) => item.type === type);\n\n if (existingIndex > -1) {\n const updatedVariants = [...prev];\n updatedVariants[existingIndex] = { type, value, id };\n return updatedVariants;\n } else {\n const newVariants = [...prev, { type, value, id }];\n return newVariants;\n }\n });\n\n setTimeout(() => {\n setWaitProductLoading(false);\n }, 1000); // 1 seconds delay\n };\n\n useEffect(() => {\n (async () => {\n setWaitProductLoading(true);\n try {\n const productDetail = await api.getProductDetail(props.productId);\n setProductDetail(productDetail);\n\n if (props.selected_variants !== null) {\n const initialV = productDetail?.variant\n ?.map((vType: any) => {\n const matchedVariant = vType.variants.find((variant: any) =>\n selectedIds.includes(variant.id),\n );\n if (matchedVariant) {\n return {\n id: matchedVariant.id,\n type: vType.variant_type.type,\n value: matchedVariant.label,\n };\n }\n return null;\n })\n .filter(Boolean);\n setSelectedVariants(initialV || []);\n } else {\n let initialV = productDetail.variant.map((vType: any) => {\n return {\n id: vType.variants[0].id,\n type: vType.variant_type.type,\n value: vType.variants[0].label,\n };\n });\n setSelectedVariants(initialV || []);\n }\n } catch (error) {\n console.error('Error loading product details:', error);\n } finally {\n setWaitProductLoading(false);\n }\n })();\n }, [props.productId]);\n\n return (\n <ProductDetailContext.Provider\n value={{\n selectedVariants,\n setSelectedVariants,\n selectUnselectVariants,\n productDetail,\n waitProductLoading,\n }}\n >\n {props.children}\n </ProductDetailContext.Provider>\n );\n};\n\nexport const useProductDetail = () => useContext(ProductDetailContext);\n","// components/tailwind/context/applyTheme.ts\nimport { IThemeRGB, IThemeVariables } from \"@growupsell/api/interface\";\n\nexport function applyTheme(themeRGB: IThemeRGB) {\n const themeObject: IThemeVariables = mapTheme(themeRGB);\n const root = document.documentElement;\n\n Object.keys(themeObject).forEach((v) => {\n const propertyVal = themeObject[v as keyof IThemeVariables];\n const validation = validateRGB(propertyVal);\n if (!validation) {\n throw new Error(`Invalid RGB value for ${v}: ${propertyVal}`);\n }\n\n root.style.setProperty(v, propertyVal);\n });\n}\n\nfunction mapTheme(rgb: IThemeRGB): IThemeVariables {\n return {\n \"--color-primary\": rgb[\"primary\"] ?? \"\",\n };\n}\n\nfunction validateRGB(rgb: string): boolean {\n if (!rgb) return true;\n const rgbRegex = /^(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})$/;\n return rgbRegex.test(rgb);\n}","// components/tailwind/base/colors.ts\n\nimport {IThemeColors, IThemeRGB, IThemeVariables} from \"@growupsell/api/interface\";\n\nconst staticColors = {\n // define any static colors that will have the same value for all apps\n};\n\nconst configurableColors: IThemeColors = {\n primary: {\n 100: withOpacity(\"--color-primary\"),\n 200: withOpacity(\"--color-primary\"),\n 300: withOpacity(\"--color-primary\"),\n 400: withOpacity(\"--color-primary\"),\n 500: withOpacity(\"--color-primary\"),\n DEFAULT: withOpacity(\"--color-primary\"),\n 600: withOpacity(\"--color-primary\"),\n 700: withOpacity(\"--color-primary\"),\n 800: withOpacity(\"--color-primary\"),\n 900: withOpacity(\"--color-primary\"),\n },\n};\n\nfunction withOpacity(variableName: keyof IThemeVariables): string {\n return `rgba(var(${variableName}), <alpha-value>)`;\n}\n\n export const colors = { ...staticColors, ...configurableColors };\n\n\nexport function hexToRgb(hex: string): string | null {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? `${parseInt(result[1], 16).toString()},${parseInt(result[2], 16).toString()},${parseInt(result[3], 16).toString()}`\n : null;\n}\n\nexport function rgbStringToHex(rgbString: string) {\n // Split the string into individual RGB components\n const rgb = rgbString.split(',').map(val => parseInt(val.trim()));\n \n // Convert each component to hexadecimal and ensure it's two digits\n const toHex = (color: number) => color.toString(16).padStart(2, '0');\n \n // Return the hex color code\n return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;\n}","import React, { createContext, PropsWithChildren, useContext, useEffect, useMemo } from 'react';\nimport {applyTheme} from '../tailwind/applyTheme';\nimport { BusinessConfigContext } from './BusinessProvider';\nimport { hexToRgb } from '../tailwind/colors';\nimport { IThemeRGB } from '@growupsell/api/interface';\n\ntype ThemeContextType = {\n themeRGB: IThemeRGB;\n};\n\nexport const ThemeContext = createContext<ThemeContextType>({\n themeRGB: {} as IThemeRGB,\n});\n\nexport function ThemeProvider(props: PropsWithChildren) {\n const config = useContext(BusinessConfigContext);\n const { theme }: any = config;\n\n const pcolor = hexToRgb(theme?.primary_color)\n const primaryColor: string = !!pcolor ? pcolor : \"0, 72, 76\";\n\n useEffect(() => {\n applyTheme({ primary: primaryColor });\n }, []);\n\n const value = useMemo(() => {\n return { themeRGB: { primary: primaryColor } };\n }, [primaryColor]);\n\n return <ThemeContext.Provider value={value}>{props.children}</ThemeContext.Provider>;\n}\n\nexport const useTheme = () => useContext(ThemeContext);","import { api } from '@growupsell/api';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nexport const ProductConfigContext = createContext({});\n\nexport const ProductConfigProvider = (props: React.PropsWithChildren) => {\n const [productConfig, setProductConfig] = useState({});\n\n const fetchProductConfig = async () => {\n const response = await api.getProductConfig();\n setProductConfig({ ...response });\n };\n\n const updateProductConfig = (data: object) => {\n setProductConfig({ ...data });\n };\n\n useEffect(() => {\n fetchProductConfig();\n }, []);\n\n return (\n <ProductConfigContext.Provider\n value={{ productConfig, updateProductConfig }}\n >\n {props.children}\n </ProductConfigContext.Provider>\n );\n};\n\nexport const useProductConfig = () => useContext(ProductConfigContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const CustomerConfigContext = createContext<{\n customerConfig: any;\n}>({ customerConfig: null });\n\nexport const CustomerConfigProvider = (props: React.PropsWithChildren) => {\n const [customerConfig, setCustomerConfig] = useState();\n const [loading, setLoading] = useState<boolean>(false);\n\n const fetchCustomerConfig = async () => {\n setLoading(true);\n try {\n const response = await api.getCustomerBusinessConfig();\n setCustomerConfig(response);\n } catch (error) {\n console.log('Error in fetching customer config---->', error);\n }\n setLoading(false);\n };\n\n useEffect(() => {\n fetchCustomerConfig();\n }, []);\n\n return (\n <CustomerConfigContext.Provider value={{ customerConfig }}>\n {loading ? null : props.children}\n </CustomerConfigContext.Provider>\n );\n};\n\nexport const useCustomer = () => useContext(CustomerConfigContext);\n","import React, { createContext, useContext, useState } from 'react';\n\nexport const ThemeEditContext = createContext<{\n token: string;\n isThemeEdit: boolean;\n isHeader: boolean;\n isFooter: boolean;\n isAnnouncementBar: boolean;\n}>({\n token: '',\n isThemeEdit: false,\n isHeader: false,\n isFooter: false,\n isAnnouncementBar: false,\n});\n\nexport const ThemeEditProvider = (props: {\n isThemeEdit: boolean;\n token: string;\n isHeader: boolean;\n isFooter: boolean;\n isAnnouncementBar: boolean;\n children: React.ReactNode;\n}) => {\n const [isThemeEdit, setIsThemeEdit] = useState(props.isThemeEdit);\n const [token, setToken] = useState(props.token);\n const [isHeader, setIsHeader] = useState(props.isHeader);\n const [isFooter, setIsFooter] = useState(props.isFooter);\n const [isAnnouncementBar, setIsAnnouncementBar] = useState(props.isAnnouncementBar);\n\n return (\n <ThemeEditContext.Provider\n value={{ token, isThemeEdit, isHeader, isFooter, isAnnouncementBar}}\n >\n {props.children}\n </ThemeEditContext.Provider>\n );\n};\n\nexport const useThemeEdit = () => useContext(ThemeEditContext);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from 'react';\nimport { retrieveThemeContent, updateThemeContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { BusinessConfigContext } from './BusinessProvider';\n\nexport const HomeConfigContext = createContext<{\n selectedConfig: any[];\n setSelectedConfig: (x: any) => void;\n addConfig: (x: any) => void;\n updateConfig: (config: any, index: number) => void;\n removeConfig: (index: number) => void;\n moveConfig: (fromIndex: number, toIndex: number) => void;\n themeConfigData: any;\n loading: boolean;\n}>({\n selectedConfig: [],\n setSelectedConfig: () => null,\n addConfig: () => null,\n updateConfig: () => null,\n removeConfig: () => null,\n moveConfig: () => null,\n themeConfigData: {},\n loading: true,\n});\n\nexport const HomeConfigProvider = (props: {\n page: string;\n children: React.ReactNode;\n}) => {\n const [selectedConfig, setSelectedConfig] = useState<any[]>([]);\n const { token } = useThemeEdit();\n const themeConfig: any = useContext(BusinessConfigContext);\n const [themeConfigData, setThemeConfigData] = useState<any>({});\n const [isInitialized, setIsInitialized] = useState(false);\n const updateRef = useRef(false);\n const [loading, setLoading] = useState(true);\n\n const getThemeConfig = useCallback(async () => {\n setLoading(true);\n try {\n const response = await retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n setThemeConfigData(response);\n if (response?.data && Array.isArray(response.data)) {\n setSelectedConfig(\n response.data.filter(\n (item: any) => item !== null && item !== undefined,\n ),\n );\n }\n setIsInitialized(true);\n } catch (error) {\n console.error('Error fetching theme content:', error);\n } finally {\n setLoading(false);\n }\n }, [themeConfig.theme.id]);\n\n const onUpdateThemeContent = useCallback(\n async (configToUpdate = selectedConfig) => {\n try {\n const body = {\n data: configToUpdate,\n slug: props.page,\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n\n // Prevent duplicate updates\n if (updateRef.current) return;\n updateRef.current = true;\n\n await updateThemeContent(\n body,\n themeConfig?.theme?.id,\n props.page,\n token,\n );\n const updatedResponse = await retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n setThemeConfigData(updatedResponse);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n updateRef.current = false;\n }\n },\n [isInitialized, token, themeConfig?.theme?.id, selectedConfig],\n );\n\n // Add new config\n const addConfig = useCallback(\n async (config: any) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev, config];\n onUpdateThemeContent(newConfig); // Update with new config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Update existing config\n const updateConfig = useCallback(\n async (config: any, index: number) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev];\n newConfig[index] = config;\n onUpdateThemeContent(newConfig); // Update with modified config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n const moveConfig = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev];\n const [movedItem] = newConfig.splice(fromIndex, 1);\n newConfig.splice(toIndex, 0, movedItem);\n onUpdateThemeContent(newConfig);\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Remove config\n const removeConfig = useCallback(\n async (index: number) => {\n setSelectedConfig((prev) => {\n const newConfig = prev.filter((_, i) => i !== index);\n onUpdateThemeContent(newConfig); // Update with removed config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Initial load\n useEffect(() => {\n getThemeConfig();\n }, [getThemeConfig]);\n\n return (\n <HomeConfigContext.Provider\n value={{\n selectedConfig,\n setSelectedConfig,\n addConfig,\n updateConfig,\n removeConfig,\n moveConfig,\n themeConfigData,\n loading,\n }}\n >\n {props.children}\n </HomeConfigContext.Provider>\n );\n};\n\nexport const useHomeConfig = () => useContext(HomeConfigContext);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from 'react';\nimport { getCustomPageContent, updateCustomPageContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\n\nexport const CustomPageConfigContext = createContext<{\n selectedConfig: any[];\n setSelectedConfig: (x: any) => void;\n addConfig: (x: any) => void;\n updateConfig: (config: any, index: number) => void;\n removeConfig: (index: number) => void;\n moveConfig: (fromIndex: number, toIndex: number) => void;\n loading: boolean;\n}>({\n selectedConfig: [],\n setSelectedConfig: () => null,\n addConfig: () => null,\n updateConfig: () => null,\n removeConfig: () => null,\n moveConfig: () => null,\n loading: true,\n});\n\nexport const CustomPageConfigProvider = (props: {\n pageId: number;\n children: React.ReactNode;\n}) => {\n const { token } = useThemeEdit();\n const [selectedConfig, setSelectedConfig] = useState<any[]>([]);\n const [loading, setLoading] = useState(true);\n const updateRef = useRef(false);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const row = await getCustomPageContent(props.pageId, token);\n const data = row?.content;\n setSelectedConfig(Array.isArray(data) ? data.filter((x) => x != null) : []);\n } catch (e) {\n console.error('Error loading custom page content:', e);\n } finally {\n setLoading(false);\n }\n }, [props.pageId, token]);\n\n const persist = useCallback(\n async (configToSave: any[]) => {\n try {\n if (updateRef.current) return;\n updateRef.current = true;\n await updateCustomPageContent(props.pageId, configToSave, token);\n await load();\n } catch (e) {\n console.error('Error saving custom page content:', e);\n } finally {\n updateRef.current = false;\n }\n },\n [props.pageId, token, load],\n );\n\n const addConfig = useCallback(\n async (config: any) => {\n setSelectedConfig((prev) => {\n const next = [...prev, config];\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const updateConfig = useCallback(\n async (config: any, index: number) => {\n setSelectedConfig((prev) => {\n const next = [...prev];\n next[index] = config;\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const moveConfig = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedConfig((prev) => {\n const next = [...prev];\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const removeConfig = useCallback(\n async (index: number) => {\n setSelectedConfig((prev) => {\n const next = prev.filter((_, i) => i !== index);\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n useEffect(() => {\n load();\n }, [load]);\n\n return (\n <CustomPageConfigContext.Provider\n value={{\n selectedConfig,\n setSelectedConfig,\n addConfig,\n updateConfig,\n removeConfig,\n moveConfig,\n loading,\n }}\n >\n {props.children}\n </CustomPageConfigContext.Provider>\n );\n};\n\nexport const useCustomPageConfig = () => useContext(CustomPageConfigContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react'\nimport { api } from '@growupsell/api';\nimport { toast } from '../toast';\nimport { useAuth } from './AuthProvider';\nimport { useCartWishlistRefresh } from './CartWishlistRefreshProvider';\nimport { useCart } from './CartProvider';\n\nexport const WishlistContext = createContext<{\n wishlistItems: any[];\n addToWishlist: (sku: any) => void;\n deleteWishlistItem: (id: number) => void;\n moveToCart: (sku: any, quantity: number) => void;\n fetchWishlistLoading: boolean;\n addToWishlistLoading: boolean;\n moveToCartLoading: boolean;\n}>({\n wishlistItems: [],\n addToWishlist: () => null,\n deleteWishlistItem: () => { },\n moveToCart: () => { },\n fetchWishlistLoading: false,\n addToWishlistLoading: false,\n moveToCartLoading: false,\n})\n\nexport const WishlistProvider = (props: React.PropsWithChildren) => {\n\n const [wishlistItems, setWishlistItems] = useState<any>([]);\n const { user } = useAuth();\n const [fetchWishlistLoading, setFetchWishlistLoading] = useState(true);\n const [addToWishlistLoading, setAddToWishlistLoading] = useState(false);\n const [moveToCartLoading, setMoveToCartLoading] = useState(false);\n const { addToCart } = useCart();\n\n const { refreshType, setRefreshType } = useCartWishlistRefresh();\n\n useEffect(() => {\n if (refreshType == 'wishlist') {\n fetchWishlistDetail();\n setRefreshType(null);\n }\n }, [refreshType])\n\n const fetchWishlistDetail = async () => {\n if (!!user) {\n setFetchWishlistLoading(true);\n try {\n const response = await api.getWishlist();\n console.log('fetchWishlistDetail response:', response);\n setWishlistItems(response); // Update the state\n return response; // ✅ Ensure it returns data\n } catch (error) {\n console.error('Error fetching wishlist details:', error);\n return null;\n } finally {\n setFetchWishlistLoading(false);\n }\n }\n };\n\n useEffect(() => {\n user && user.is_active && fetchWishlistDetail();\n }, [user]);\n\n const addToWishlist = async (sku: any) => {\n try {\n setAddToWishlistLoading(true);\n let body = {\n sku: sku,\n };\n await api.addProductToWishlist(body);\n console.log('New item added to Wishlist');\n toast.success('Item added to wishlist');\n fetchWishlistDetail();\n\n } catch (error: any) {\n console.log('error==', error);\n\n const errorMessage = error?.response?.data?.message || error?.response?.message || 'Something went wrong! Please try again.';\n toast.error(errorMessage);\n } finally {\n setAddToWishlistLoading(false);\n }\n };\n\n const deleteWishlistItem = async (id: number) => {\n try {\n setFetchWishlistLoading(true);\n const response = await api.deleteWishlist(id); // Call the API to delete the item\n console.log('Item deleted:', response); // Logging response for debugging\n setWishlistItems((prevItems: any[]) => prevItems.filter(item => item.id !== id));\n toast.success('Item removed from wishlist');\n await fetchWishlistDetail();\n } catch (error) {\n console.log('Error deleting item:', error);\n toast.error('Failed to remove item from wishlist');\n } finally {\n setFetchWishlistLoading(false);\n }\n };\n\n const moveToCart = async (id: number, quantity: number) => {\n let isItemInWishlist = wishlistItems?.find((item: any) => item.id === id);\n\n if (!isItemInWishlist) {\n console.log('Item not found in wishlist.');\n toast.warning('Item not found in wishlist');\n return;\n }\n\n try {\n setMoveToCartLoading(true);\n // Use CartProvider's addToCart which handles updating quantity if item already exists\n addToCart(isItemInWishlist.sku.id, quantity);\n\n // Remove from wishlist after successfully adding to cart\n await api.deleteWishlist(isItemInWishlist.id);\n setWishlistItems(wishlistItems?.filter((item: any) => item.id !== isItemInWishlist.id));\n\n setRefreshType('cart');\n\n } catch (error: any) {\n console.log('Error moving item to cart:', error);\n const errorMessage = error?.response?.data?.message || error?.response?.message || error?.message || '';\n const errorMsg = errorMessage || 'Failed to move item to cart';\n toast.error(errorMsg);\n } finally {\n setMoveToCartLoading(false);\n }\n };\n\n return (\n <WishlistContext.Provider value={{ wishlistItems, addToWishlist, deleteWishlistItem, moveToCart, fetchWishlistLoading, addToWishlistLoading, moveToCartLoading }}>\n {props.children}\n </WishlistContext.Provider>\n )\n}\n\nexport const useWishlist = () => useContext(WishlistContext);\n","import React from 'react';\nimport { FaWhatsapp } from 'react-icons/fa';\nimport { useLiveSupportWidget } from '../provider';\n\n/**\n * Renders a bottom-right FAB that opens WhatsApp when the live-support widget is enabled.\n * Must be used inside LiveSupportWidgetProvider (e.g. within BaseProvider).\n */\nexport default function LiveSupportWidget() {\n const { config, loading } = useLiveSupportWidget();\n\n if (loading || !config?.is_active || config?.type !== 'whatsapp' || !config?.whatsapp_no?.trim()) {\n return null;\n }\n\n const phone = config.whatsapp_no.replace(/\\D/g, '');\n const whatsappUrl = `https://wa.me/${phone}`;\n\n const handleClick = () => {\n window.open(whatsappUrl, '_blank', 'noopener,noreferrer');\n };\n console.log(config);\n console.log(loading);\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n style={{\n bottom: '15px',\n }}\n 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\"\n aria-label=\"Chat on WhatsApp\"\n >\n <FaWhatsapp className=\"h-8 w-8\" />\n </button>\n );\n}\n","import React from 'react';\nimport {\n BusinessConfigProvider,\n BusinessMediaProvider,\n AuthProvider,\n ModalProvider,\n CartProvider,\n FilterProvider,\n ThemeProvider,\n ProductConfigProvider,\n StorageProvider,\n CustomerConfigProvider,\n WishlistProvider,\n CartWishlistRefreshProvider,\n ThemeEditProvider,\n MenuFilterProvider,\n MenuCartProvider,\n ReferralCodeProvider,\n LiveSupportWidgetProvider,\n} from '../provider';\nimport LiveSupportWidget from '../ui/LiveSupportWidget';\n\ninterface BaseProviderProps {\n children: React.ReactNode;\n baseURL: any;\n token?: string;\n isEdit?: boolean;\n businessConfig: any;\n storage: {\n setItem: (key: string, value: string, type?: string) => void;\n getItem: (key: string, type?: string) => string | null;\n clearAll: () => void;\n removeItem: (key: string, type?: string) => void;\n };\n isHeader?: boolean;\n isFooter?: boolean;\n isAnnouncementBar?: boolean;\n /** Referral code from URL (e.g. ?referralCode=xxx). Persisted and passed to register API. */\n referralCodeFromUrl?: string | null;\n}\n\nexport const BaseProvider: React.FC<BaseProviderProps> = ({\n children,\n baseURL,\n token,\n isEdit,\n businessConfig,\n storage,\n isHeader,\n isFooter,\n isAnnouncementBar,\n referralCodeFromUrl = null,\n}) => {\n return (\n <StorageProvider storage={storage}>\n <BusinessConfigProvider data={businessConfig} baseURL={baseURL}>\n <ReferralCodeProvider referralCodeFromUrl={referralCodeFromUrl}>\n <ThemeEditProvider isThemeEdit={isEdit!} token={token!} isHeader={isHeader!} isFooter={isFooter!} isAnnouncementBar={isAnnouncementBar!}>\n <BusinessMediaProvider>\n <CustomerConfigProvider>\n <AuthProvider>\n <ModalProvider>\n <ThemeProvider>\n <LiveSupportWidgetProvider>\n {businessConfig.category.type == 'retail' ?\n <ProductConfigProvider>\n <CartWishlistRefreshProvider>\n <CartProvider>\n <WishlistProvider>\n <FilterProvider>\n <>{children}</>\n </FilterProvider>\n </WishlistProvider>\n </CartProvider>\n </CartWishlistRefreshProvider>\n </ProductConfigProvider>\n :\n <MenuCartProvider>\n <MenuFilterProvider>\n <>{children}</>\n </MenuFilterProvider>\n </MenuCartProvider>}\n {/* <ProductConfigProvider>\n <CartWishlistRefreshProvider>\n <CartProvider>\n <WishlistProvider>\n <FilterProvider>\n <MenuFilterProvider>\n <>{children}</>\n </MenuFilterProvider>\n </FilterProvider>\n </WishlistProvider>\n </CartProvider>\n </CartWishlistRefreshProvider>\n </ProductConfigProvider> */}\n <LiveSupportWidget />\n </LiveSupportWidgetProvider>\n </ThemeProvider>\n </ModalProvider>\n </AuthProvider>\n </CustomerConfigProvider>\n </BusinessMediaProvider>\n </ThemeEditProvider>\n </ReferralCodeProvider>\n </BusinessConfigProvider>\n </StorageProvider>\n );\n};\n","\nimport React, { createContext, useContext, useState, ReactNode } from \"react\";\n\ntype ModalType = \"\" | \"login\" | \"signup\" | \"forgot\" | \"otp\" | \"reset\";\n\ntype ModalUserData = {\n otp?: { id: string; value: string };\n reset?: string;\n};\n\ntype ModalContextType = {\n openModal: ModalType;\n showModal: (modal: ModalType) => void;\n closeModal: () => void;\n userData: ModalUserData;\n setUserData: (data: ModalUserData) => void;\n clearUserData: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | undefined>(undefined);\n\nexport const ModalProvider = ({ children }: { children: ReactNode }) => {\n const [openModal, setOpenModal] = useState<ModalType>(\"\");\n const [userData, setUserData] = useState<ModalUserData>({});\n\n const showModal = (modal: ModalType) => setOpenModal(modal);\n const closeModal = () => setOpenModal(\"\");\n const clearUserData = () => setUserData({});\n\n return (\n <ModalContext.Provider\n value={{\n openModal,\n showModal,\n closeModal,\n userData,\n setUserData,\n clearUserData,\n }}\n >\n {children}\n </ModalContext.Provider>\n );\n};\n\nexport const useModal = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error(\"useModal must be used within a ModalProvider\");\n }\n return context;\n};\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { retrieveThemeContent, updateThemeContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { BusinessConfigContext } from './BusinessProvider';\n\nexport const HomeConfigHeroSliderContext = createContext<{\n loading: boolean;\n heroSliderConfigData: any;\n onUpdateHeroSlider: (updatedSlides: any) => void;\n}>({\n loading: true,\n heroSliderConfigData: [],\n onUpdateHeroSlider: () => null,\n});\n\nexport const HomeConfigHeroSliderProvider = (props: {\n children: React.ReactNode;\n}) => {\n const [loading, setLoading] = useState(true);\n const [heroSliderConfigData, setHeroSliderConfigData] = useState<any>([]);\n const { token } = useThemeEdit();\n const themeConfig: any = useContext(BusinessConfigContext);\n\n const getHeroSliderConfig = async () => {\n setLoading(true);\n try {\n const response = await retrieveThemeContent(\n themeConfig.theme.id,\n 'hero_slider',\n );\n setHeroSliderConfigData(response.data);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n getHeroSliderConfig();\n }, []);\n\n const onUpdateHeroSlider = async (configToUpdate: any) => {\n setLoading(true);\n try {\n const body = {\n data: configToUpdate,\n slug: 'hero_slider',\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n await updateThemeContent(\n body,\n themeConfig?.theme?.id,\n 'hero_slider',\n token,\n );\n const updatedResponse = await retrieveThemeContent(\n themeConfig.theme.id,\n 'hero_slider',\n );\n setHeroSliderConfigData(updatedResponse.data);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <HomeConfigHeroSliderContext.Provider\n value={{ loading, heroSliderConfigData, onUpdateHeroSlider }}\n >\n {props.children}\n </HomeConfigHeroSliderContext.Provider>\n );\n};\n\nexport const useHomeConfigHeroSlider = () =>\n useContext(HomeConfigHeroSliderContext);\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { useBusiness } from './BusinessProvider';\nimport { api } from '@growupsell/api';\n\nexport const HeaderFooterContext = createContext<{\n headerConfig: any;\n footerConfig: any;\n onUpdateThemeContent: (configToUpdate: any) => Promise<void>;\n loading: boolean;\n announcementConfig: any;\n}>({\n headerConfig: {},\n footerConfig: {},\n onUpdateThemeContent: () => Promise.resolve(),\n loading: false,\n announcementConfig: {},\n});\n\nexport const HeaderFooterProvider = (props: {\n page: string;\n children: React.ReactNode;\n}) => {\n const [headerConfig, setHeaderConfig] = useState<any>({});\n const [footerConfig, setFooterConfig] = useState<any>({});\n const [announcementConfig, setAnnouncementConfig] = useState<any>({});\n const { token } = useThemeEdit();\n const themeConfig: any = useBusiness();\n const [loading, setLoading] = useState(true);\n\n const getThemeConfig = useCallback(async () => {\n setLoading(true);\n try {\n const response = await api.retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n response.slug === 'header' && setHeaderConfig(response.data);\n response.slug === 'footer' && setFooterConfig(response.data);\n response.slug === 'announcement' && setAnnouncementConfig(response.data);\n } catch (error) {\n console.error('Error fetching theme content:', error);\n } finally {\n setLoading(false);\n }\n }, [themeConfig.theme.id]);\n\n const onUpdateThemeContent = useCallback(\n async (configToUpdate: any) => {\n try {\n const body = {\n data: configToUpdate,\n slug: props.page,\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n\n await api.updateThemeContent(\n body,\n themeConfig.theme.id,\n props.page,\n token,\n );\n const updatedResponse = await api.retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n updatedResponse.slug === 'header' &&\n setHeaderConfig(updatedResponse.data);\n updatedResponse.slug === 'footer' &&\n setFooterConfig(updatedResponse.data);\n updatedResponse.slug === 'announcement' &&\n setAnnouncementConfig(updatedResponse.data);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n setLoading(false);\n }\n },\n [props.page],\n );\n\n useEffect(() => {\n getThemeConfig();\n }, [getThemeConfig]);\n\n return (\n <HeaderFooterContext.Provider\n value={{ headerConfig, footerConfig, onUpdateThemeContent, loading, announcementConfig }}\n >\n {loading ? null : props.children}\n </HeaderFooterContext.Provider>\n );\n};\n\nexport const useHeaderFooter = () => {\n return useContext(HeaderFooterContext);\n};\n","import React, { createContext, useContext, useState, useEffect, useRef } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const MenuFilterContext = createContext<{\n menuList: any[];\n categoryList: any[];\n selectedCategoryId: number[];\n addCategoryFilterId: (id: number) => void;\n removeCategoryFilterId: (id: number) => void;\n menuLoading: boolean;\n categoryLoading: boolean;\n isInitialLoad: boolean;\n currentPage: number;\n totalPages: number;\n handlePageChange: (page: number) => void;\n setMenuList: (x: any) => void;\n selectedSortOption: string;\n setSelectedSortOption: (x: string) => void;\n selectedMinPrice: number | undefined;\n selectedMaxPrice: number | undefined;\n setSelectedMinPrice: (x: any) => void;\n setSelectedMaxPrice: (x: any) => void;\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n selectedFoodType: string;\n setSelectedFoodType: (type: string) => void;\n}>({\n menuList: [],\n categoryList: [],\n selectedCategoryId: [],\n addCategoryFilterId: () => null,\n removeCategoryFilterId: () => null,\n menuLoading: true,\n categoryLoading: true,\n isInitialLoad: true,\n currentPage: 1,\n totalPages: 1,\n handlePageChange: () => null,\n setMenuList: () => null,\n selectedSortOption: 'newest_first',\n setSelectedSortOption: () => null,\n selectedMinPrice: undefined,\n selectedMaxPrice: undefined,\n setSelectedMinPrice: () => null,\n setSelectedMaxPrice: () => null,\n searchQuery: '',\n setSearchQuery: () => null,\n selectedFoodType: '',\n setSelectedFoodType: () => null,\n});\n\nexport const MenuFilterProvider = (props: React.PropsWithChildren) => {\n const [menuList, setMenuList] = useState<any[]>([]);\n const [categoryList, setCategoryList] = useState<any[]>([]);\n const [selectedCategoryId, setSelectedCategoryId] = useState<number[]>([]);\n const [selectedSortOption, setSelectedSortOption] = useState<string>('newest_first');\n const [selectedMinPrice, setSelectedMinPrice] = useState<number | undefined>();\n const [selectedMaxPrice, setSelectedMaxPrice] = useState<number | undefined>();\n const [menuLoading, setMenuLoading] = useState(true);\n const [categoryLoading, setCategoryLoading] = useState(true);\n const [isInitialLoad, setIsInitialLoad] = useState(true);\n const [currentPage, setCurrentPage] = useState(1);\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearchQuery, setDebouncedSearchQuery] = useState('');\n const [selectedFoodType, setSelectedFoodType] = useState('');\n const limit = 12;\n const [totalCount, setTotalCount] = useState(0);\n const totalPages = Math.ceil(totalCount / limit);\n const searchTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Fetch menu categories\n const fetchCategoryList = async () => {\n setCategoryLoading(true);\n try {\n const response = await api.getMenuCategories();\n setCategoryList(response.data || response);\n } catch (error) {\n console.log('Error fetching categories:', error);\n } finally {\n setCategoryLoading(false);\n }\n };\n\n // Fetch menu list\n const fetchMenuList = async () => {\n setMenuLoading(true);\n try {\n let body: any = {\n limit: limit,\n offset: (currentPage - 1) * limit,\n };\n\n // Add category_ids if selected (as comma-separated string)\n if (selectedCategoryId.length > 0) {\n body.category_ids = selectedCategoryId.join(',');\n }\n\n // Add food_type if selected\n if (selectedFoodType) {\n body.food_type = selectedFoodType;\n }\n\n // Add search query if provided\n if (debouncedSearchQuery.trim()) {\n body.search = debouncedSearchQuery;\n }\n\n const response = await api.getMenuList(body);\n\n // Get menu data from response\n let filteredMenus = response.data || response;\n\n // If response is an object with results/data array, extract it\n if (filteredMenus && typeof filteredMenus === 'object' && !Array.isArray(filteredMenus)) {\n filteredMenus = filteredMenus.results || filteredMenus.data || filteredMenus.items || [];\n }\n\n // Ensure it's an array\n if (!Array.isArray(filteredMenus)) {\n filteredMenus = [];\n }\n\n setMenuList(filteredMenus);\n setTotalCount(filteredMenus.length);\n } catch (error) {\n console.log('Error fetching menus:', error);\n } finally {\n setMenuLoading(false);\n if (isInitialLoad) {\n setIsInitialLoad(false);\n }\n }\n };\n\n const addCategoryFilterId = (id: number) => {\n setSelectedCategoryId((prevIds) => {\n if (prevIds.includes(id)) {\n return prevIds;\n }\n return [...prevIds, id];\n });\n setCurrentPage(1);\n };\n\n const removeCategoryFilterId = (id: number) => {\n setSelectedCategoryId((x) => {\n return x.filter((o) => o !== id);\n });\n setCurrentPage(1);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n };\n\n // Debounce search query\n useEffect(() => {\n // Clear existing timeout\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n\n // Set new timeout\n searchTimeoutRef.current = setTimeout(() => {\n setDebouncedSearchQuery(searchQuery);\n }, 1000);\n\n // Cleanup function\n return () => {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n };\n }, [searchQuery]);\n\n // Fetch categories on mount\n useEffect(() => {\n fetchCategoryList();\n }, []);\n\n // Fetch menus when filters change\n useEffect(() => {\n fetchMenuList();\n }, [\n selectedCategoryId,\n currentPage,\n selectedSortOption,\n selectedMinPrice,\n selectedMaxPrice,\n debouncedSearchQuery,\n selectedFoodType,\n ]);\n\n return (\n <MenuFilterContext.Provider\n value={{\n menuList,\n categoryList,\n selectedCategoryId,\n addCategoryFilterId,\n removeCategoryFilterId,\n menuLoading,\n categoryLoading,\n isInitialLoad,\n currentPage,\n totalPages,\n handlePageChange,\n setMenuList,\n selectedSortOption,\n setSelectedSortOption,\n selectedMinPrice,\n selectedMaxPrice,\n setSelectedMinPrice,\n setSelectedMaxPrice,\n searchQuery,\n setSearchQuery,\n selectedFoodType,\n setSelectedFoodType,\n }}\n >\n {props.children}\n </MenuFilterContext.Provider>\n );\n};\n\nexport const useMenuFilter = () => useContext(MenuFilterContext);","import React, { createContext, useState, useEffect, useContext } from 'react';\nimport { api } from '@growupsell/api';\nimport { useStorage } from './StorageProvider';\nimport { useAuth } from './AuthProvider';\n\nexport const MenuCartContext = createContext<{\n menuCartItems: any[];\n cartLength: number;\n cartType: 'delivery' | 'pickup' | 'self_dinein';\n session: any;\n errorMessage?: string | null;\n menuCartLoading: boolean;\n promoCodeLoading: boolean;\n updateOrderType: (params: { type: 'delivery' | 'pickup' | 'self_dinein'; pickup_time?: string; table_no?: string | number; shipping_address?: number }) => void;\n addMenuToCart: (itemId: number, quantity: number, customizeOptions?: any[]) => Promise<void>;\n updateMenuCartItem: (id: number, quantity: number, customizeOptions?: any[]) => Promise<void>;\n deleteMenuCartItem: (id: number) => Promise<void>;\n updateMenuCartPromoCode: (promoCode: string | null) => Promise<void>;\n updateMenuCartAddress: (shippingAddress: number) => Promise<void>;\n getMenuOrderCharge: (orderId: number, body: object) => Promise<any>;\n clearMenuCart: () => void;\n}>({\n menuCartItems: [],\n cartLength: 0,\n cartType: 'delivery',\n session: null,\n errorMessage: null,\n menuCartLoading: false,\n promoCodeLoading: false,\n updateOrderType: () => { },\n addMenuToCart: async () => { },\n updateMenuCartItem: async () => { },\n deleteMenuCartItem: async () => { },\n updateMenuCartPromoCode: async () => { },\n updateMenuCartAddress: async () => { },\n getMenuOrderCharge: async () => { },\n clearMenuCart: () => { },\n});\n\nexport const MenuCartProvider = (props: React.PropsWithChildren) => {\n const [menuCartItems, setMenuCartItems] = useState<any[]>([]);\n const [cartLength, setCartLength] = useState<number>(0);\n const [cartType, setCartTypeState] = useState<'delivery' | 'pickup' | 'self_dinein'>('delivery');\n const [session, setSession] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [menuCartLoading, setMenuCartLoading] = useState<boolean>(false);\n const [promoCodeLoading, setPromoCodeLoading] = useState<boolean>(false);\n const { user } = useAuth();\n\n const storage = useStorage();\n\n const fetchMenuCartDetail = async () => {\n setMenuCartLoading(true);\n try {\n const response = await api.getMenuCartDetail();\n setMenuCartItems(response?.items || response?.products || []);\n setCartLength(response?.items?.length || response?.products?.length || 0);\n setCartTypeState(response?.type || 'delivery');\n setSession(response);\n } catch (error) {\n console.error('Error fetching menu cart:', error);\n setMenuCartItems([]);\n setCartLength(0);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n useEffect(() => {\n fetchMenuCartDetail();\n }, [user]);\n\n // Update cartLength whenever menuCartItems changes\n useEffect(() => {\n setCartLength(menuCartItems.length);\n }, [menuCartItems]);\n\n // Save session to localStorage whenever session changes\n useEffect(() => {\n session && storage.setItem('menuCart', JSON.stringify(session), 'local');\n }, [session, storage]);\n\n // This function handles both local state and API call\n const updateOrderType = async (params: { type: 'delivery' | 'pickup' | 'self_dinein'; pickup_time?: string; table_no?: string | number; shipping_address?: number }) => {\n setMenuCartLoading(true);\n try {\n const { type, pickup_time, table_no, shipping_address } = params;\n const body: any = { type };\n\n if (type === 'pickup' && pickup_time) {\n body.pickup_time = pickup_time;\n }\n\n if (type === 'self_dinein' && table_no) {\n body.table_no = table_no;\n }\n\n if (type === 'delivery' && user && shipping_address) {\n body.shipping_address = shipping_address;\n }\n\n await api.updateMenuCartType(body);\n setCartTypeState(type);\n fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to update cart type:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to update promo code\n const updateMenuCartPromoCode = async (promoCode: string | null) => {\n let body = {\n promo_code: promoCode,\n };\n setPromoCodeLoading(true);\n setErrorMessage(null);\n try {\n if (session) {\n const response = await api.updateMenuCartPromoCode(body);\n setSession({\n ...session,\n promo: response.promo,\n promo_redeem_amount: Number(response.promo_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n // Refresh cart data after updating promo code\n await fetchMenuCartDetail();\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to apply promo code');\n console.error('Failed to update promo code:', error);\n } finally {\n setPromoCodeLoading(false);\n }\n };\n\n // Function to update menu cart address\n const updateMenuCartAddress = async (shippingAddress: number) => {\n setMenuCartLoading(true);\n setErrorMessage(null);\n try {\n const body = {\n shipping_address: shippingAddress\n };\n\n const response = await api.updateMenuOrderCartAddress(body);\n setSession({\n ...session,\n shipping_address: response.shipping_address,\n });\n // Refresh cart data after updating address\n await fetchMenuCartDetail();\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to update address');\n console.error('Failed to update menu cart address:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to get menu order charge\n const getMenuOrderCharge = async (orderId: number, body: object) => {\n setMenuCartLoading(true);\n setErrorMessage(null);\n try {\n const response = await api.getMenuOrderCharge(orderId, body);\n return response;\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to get order charge');\n console.error('Failed to get menu order charge:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to add menu item to cart\n const addMenuToCart = async (itemId: number, quantity: number, customizeOptions?: any[]) => {\n setMenuCartLoading(true);\n try {\n const body = {\n item: itemId,\n qty: quantity,\n customize_option: customizeOptions || []\n };\n\n await api.addMenuToCart(body);\n // Refresh cart data after adding item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to add menu item to cart:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to update menu cart item\n const updateMenuCartItem = async (id: number, quantity: number, customizeOptions?: any[]) => {\n setMenuCartLoading(true);\n try {\n const body = {\n qty: quantity,\n customize_option: customizeOptions || []\n };\n\n await api.updateMenuCartItem(id, body);\n // Refresh cart data after updating item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to update menu cart item:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to delete menu cart item\n const deleteMenuCartItem = async (id: number) => {\n setMenuCartLoading(true);\n try {\n await api.deleteMenuCartItem(id);\n // Refresh cart data after deleting item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to delete menu cart item:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n const clearMenuCart = () => {\n setMenuCartItems([]);\n setSession(null);\n storage.removeItem('menuCart');\n fetchMenuCartDetail();\n };\n\n return (\n <MenuCartContext.Provider\n value={{\n menuCartItems,\n cartLength,\n cartType,\n session,\n errorMessage,\n menuCartLoading,\n promoCodeLoading,\n updateOrderType,\n addMenuToCart,\n updateMenuCartItem,\n deleteMenuCartItem,\n updateMenuCartPromoCode,\n updateMenuCartAddress,\n getMenuOrderCharge,\n clearMenuCart,\n }}\n >\n {props.children}\n </MenuCartContext.Provider>\n );\n};\n\nexport const useMenuCart = () => useContext(MenuCartContext);\n","import React from \"react\";\nimport { ToastContainer } from \"react-toastify\";\n\nexport const ToastProvider = () => {\n return (\n <ToastContainer\n position=\"top-right\"\n autoClose={3000}\n theme=\"colored\"\n />\n );\n};","import React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst REFERRAL_STORAGE_KEY = 'referralCode';\n\nconst ReferralCodeContext = createContext<string | null>(null);\n\nexport function ReferralCodeProvider({\n children,\n referralCodeFromUrl,\n}: {\n children: React.ReactNode;\n referralCodeFromUrl: string | null;\n}) {\n const [referralCode, setReferralCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (referralCodeFromUrl) {\n if (typeof window !== 'undefined') {\n sessionStorage.setItem(REFERRAL_STORAGE_KEY, referralCodeFromUrl);\n }\n setReferralCode(referralCodeFromUrl);\n } else if (typeof window !== 'undefined') {\n setReferralCode(sessionStorage.getItem(REFERRAL_STORAGE_KEY));\n }\n }, [referralCodeFromUrl]);\n\n return (\n <ReferralCodeContext.Provider value={referralCode}>\n {children}\n </ReferralCodeContext.Provider>\n );\n}\n\nexport function useReferralCode() {\n return useContext(ReferralCodeContext);\n}\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api } from '@growupsell/api';\nimport type { LiveSupportWidgetConfig } from '@growupsell/api/api';\n\nexport type { LiveSupportWidgetConfig };\n\ntype LiveSupportWidgetContextValue = {\n config: LiveSupportWidgetConfig | null;\n loading: boolean;\n};\n\nconst LiveSupportWidgetContext = createContext<LiveSupportWidgetContextValue>({\n config: null,\n loading: true,\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const LiveSupportWidgetProvider: React.FC<Props> = ({ children }) => {\n const [config, setConfig] = useState<LiveSupportWidgetConfig | null>(null);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let isMounted = true;\n\n (async () => {\n try {\n const data = await api.getLiveSupportWidgetConfig();\n if (isMounted) {\n setConfig(data);\n }\n } catch (e) {\n if (isMounted) {\n setConfig(null);\n }\n } finally {\n if (isMounted) {\n setLoading(false);\n }\n }\n })();\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n return (\n <LiveSupportWidgetContext.Provider value={{ config, loading }}>\n {children}\n </LiveSupportWidgetContext.Provider>\n );\n};\n\nexport const useLiveSupportWidget = () => useContext(LiveSupportWidgetContext);\n\n"]}
1
+ {"version":3,"sources":["../src/provider/StorageProvider.tsx","../src/provider/AuthProvider.tsx","../src/provider/BusinessMedia.tsx","../src/provider/BusinessConfigContext.tsx","../src/provider/BusinessProvider.tsx","../src/provider/ToastSupportProvider.tsx","../src/provider/CartWishlistRefreshProvider.tsx","../src/provider/CartProvider.tsx","../src/provider/FilterProvider.tsx","../src/provider/ProductDetailProvider.tsx","../src/provider/ProductConfig.tsx","../src/provider/CustomerConfigProvider.tsx","../src/provider/ThemeEditProvider.tsx","../src/provider/HomeConfigProvider.tsx","../src/provider/CustomPageConfigProvider.tsx","../src/provider/WishlistProvider.tsx","../src/provider/BaseProvider.tsx","../src/provider/AuthModalProvider.tsx","../src/provider/HomeConfigHeroSliderProvider.tsx","../src/provider/HeaderFooterProvider.tsx","../src/provider/MenuFilterProvider.tsx","../src/provider/MenuCartProvider.tsx","../src/provider/ReferralCodeProvider.tsx","../src/provider/LiveSupportWidgetProvider.tsx"],"names":["createContext","useState","jsx","useContext","WAApi","createCustomerSession","useEffect","api","rewardPoint","getBusinessSetting","getRewardPointBusinessConfig","getOrderBusinessConfig","useMemo","errorMessage","productDetail","useRef","useCallback","retrieveThemeContent","updateThemeContent","_","getCustomPageContent","updateCustomPageContent","Fragment"],"mappings":"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","file":"provider.cjs","sourcesContent":["import React, { createContext, useState, useEffect, useContext } from 'react';\n\nexport const StorageContext = createContext<{\n setItem: (key: string, data: any, type: any) => null;\n getItem: (key: string, type?: any) => null;\n clearAll: () => null;\n removeItem: (key: string, type?: any) => null;\n}>({\n setItem: (key: string, data: any, type: any) => null,\n getItem: (key: string) => null,\n clearAll: () => null,\n removeItem: (key: string) => null,\n});\n\ntype Props = {\n storage: any;\n};\n\nexport const StorageProvider = (props: React.PropsWithChildren<Props>) => {\n const [loading, setLoading] = useState(false);\n\n return (\n <StorageContext.Provider\n value={{\n setItem: props.storage.setItem,\n getItem: props.storage.getItem,\n clearAll: props.storage.clearAll,\n removeItem: props.storage.removeItem,\n }}\n >\n {loading ? null : props.children}\n </StorageContext.Provider>\n );\n};\n\nexport const useStorage = () => useContext(StorageContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api, WAApi } from '@growupsell/api';\nimport { useStorage } from './StorageProvider';\nimport { createCustomerSession } from '@growupsell/api/api';\n\nexport const AuthContext = createContext<{\n signIn: (data: any, rememberMe: boolean) => void;\n signOut: () => void;\n user: any;\n setUser: (o: any) => void;\n customerSession: any;\n loadingToken: any;\n loadingUser: any;\n token: any;\n}>({\n signIn: () => null,\n signOut: () => null,\n user: null,\n setUser: (o: any) => null,\n customerSession: null,\n loadingToken: null,\n loadingUser: null,\n token: null,\n});\n\nexport const AuthProvider = (props: React.PropsWithChildren) => {\n const [user, setUser] = useState<any>(null);\n const [loading, setLoading] = useState(true);\n const [customerSession, setCustomerSession] = useState();\n const [loadingUser, setLoadingUser] = useState(true);\n const [loadingToken, setLoadingToken] = useState(false);\n const storage = useStorage();\n const [token, setToken] = useState();\n\n const signIn = (data: any, rememberMe?: any) => {\n if (data.is_active) {\n WAApi.defaults.headers.common['x-customer-token'] = `${data.token}`;\n }\n // TODO: need to think for if user is not active then active first\n const type = rememberMe ? 'local' : 'session';\n storage.setItem('user', JSON.stringify(data), type);\n setUser(data);\n };\n\n const signOut = () => {\n setUser(null);\n storage.clearAll();\n delete WAApi.defaults.headers.common['x-customer-token'];\n };\n\n let sessionCreationInProgress = false;\n const initializedCustomerSession = async () => {\n setLoading(true);\n if (sessionCreationInProgress) {\n return;\n }\n sessionCreationInProgress = true;\n let savedSession: any = storage.getItem('session', 'session')\n ? JSON.parse(storage.getItem('session', 'session')!)\n : null;\n if (savedSession) {\n setCustomerSession(savedSession);\n WAApi.defaults.headers.common['x-session-token'] =\n savedSession?.session_token;\n } else {\n try {\n let body = {\n customer: user?.id,\n };\n const response = await createCustomerSession(body);\n setCustomerSession(response);\n WAApi.defaults.headers.common['x-session-token'] =\n response?.session_token;\n storage.setItem('session', JSON.stringify(response), 'session');\n } catch (error) {\n console.log('Error--->', error);\n }\n }\n\n setLoading(false);\n sessionCreationInProgress = false;\n };\n\n useEffect(() => {\n !loadingUser && initializedCustomerSession();\n }, [loadingUser]);\n\n useEffect(() => {\n setLoadingUser(true);\n let local_user = storage.getItem('user', 'local');\n let session_user = storage.getItem('user', 'session');\n\n if (local_user) {\n let customer = JSON.parse(local_user);\n WAApi.defaults.headers.common['x-customer-token'] = customer.token;\n setUser(customer);\n } else if (session_user) {\n let session_customer = JSON.parse(session_user);\n WAApi.defaults.headers.common['x-customer-token'] =\n session_customer.token;\n setUser(session_customer);\n }\n\n setLoadingUser(false);\n }, []);\n\n useEffect(() => {\n if (user) {\n setLoadingToken(true);\n try {\n if (user?.token) {\n WAApi.defaults.headers.common['x-customer-token'] = user.token;\n setToken(user.token);\n }\n } catch (error) {\n console.log('User not available');\n } finally {\n setLoadingToken(false);\n }\n }\n }, [user]);\n\n // if (loadingUser || loadingToken) {\n // return <div>Loading...</div>;\n // }\n\n return (\n <AuthContext.Provider\n value={{\n signIn,\n signOut,\n user,\n setUser,\n customerSession,\n loadingToken,\n loadingUser,\n token,\n }}\n >\n {loading ? null : props.children}\n {/* {props.children} */}\n </AuthContext.Provider>\n );\n};\n\nexport const useAuth = () => useContext(AuthContext);\n","import { api } from '@growupsell/api';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nexport const BusinessMediaContext = createContext({});\n\nexport const BusinessMediaProvider = (props: React.PropsWithChildren) => {\n const [businessMedia, setBusinessMeadia] = useState({});\n\n const fetchBusinessMedia = async () => {\n const response = await api.getBusinessMedia();\n setBusinessMeadia({ ...response });\n };\n\n const updateBusinessMedia = (data: object) => {\n setBusinessMeadia({ ...data });\n };\n\n useEffect(() => {\n fetchBusinessMedia();\n }, []);\n\n return (\n <BusinessMediaContext.Provider value={{ businessMedia, updateBusinessMedia }}>\n {props.children}\n </BusinessMediaContext.Provider>\n );\n};\n\nexport const useBusinessMedia = () => useContext(BusinessMediaContext);","import { createContext } from 'react';\n\n/** Split out so `@growupsell/react-ecommerce-ui` can consume theme without importing the full provider graph. */\nexport const BusinessConfigContext = createContext<{\n currency: any;\n reward_point_config: any;\n orderConfig: any;\n}>({\n currency: null,\n reward_point_config: null,\n orderConfig: null,\n});\n","import React, { useContext, useState } from 'react';\nimport { useEffect } from 'react';\nimport { WAApi } from '@growupsell/api';\nimport {\n getBusinessSetting,\n getOrderBusinessConfig,\n getRewardPointBusinessConfig,\n} from '@growupsell/api/api';\nimport { useAuth } from './AuthProvider';\nimport { BusinessConfigContext } from './BusinessConfigContext';\n\nexport { BusinessConfigContext };\n\nexport const BusinessConfigProvider = ({\n children,\n data,\n baseURL,\n}: {\n data: any;\n children: React.ReactNode;\n baseURL: string;\n}) => {\n WAApi.defaults.headers.common['business'] = data?.id;\n WAApi.defaults.baseURL = baseURL;\n\n const [loading, setLoading] = useState(true);\n const { user } = useAuth();\n const [currency, setCurrency] = useState<any>({});\n const [rewardPoint, setRewardPoint] = useState<any>({});\n const [orderConfig, setOrderConfig] = useState<any>({});\n const [domain, setDomain] = useState('');\n\n const fetchData = async () => {\n try {\n const [business_setting, rewardPoint, order_business_config] =\n await Promise.all([\n getBusinessSetting(),\n getRewardPointBusinessConfig(),\n getOrderBusinessConfig(),\n ]);\n setCurrency(business_setting.currency);\n setDomain(business_setting.domain);\n setRewardPoint(rewardPoint);\n setOrderConfig(order_business_config);\n } catch (error) {\n console.log('error in fetching data-->', error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchData();\n }, []);\n\n return (\n <BusinessConfigContext.Provider\n value={{\n ...data,\n currency: currency,\n reward_point_config: rewardPoint,\n domain,\n orderConfig,\n }}\n >\n {loading ? null : children}\n </BusinessConfigContext.Provider>\n );\n};\n\nexport const useBusinessContext = () => useContext(BusinessConfigContext);\nexport const useBusiness = () => useContext(BusinessConfigContext);\n","import React, {\n createContext,\n useContext,\n useMemo,\n type PropsWithChildren,\n} from 'react';\n\n/** Options bag for platform-specific toast implementations (e.g. react-toastify). */\nexport type ToastSupportOptions = Record<string, unknown>;\n\n/**\n * Pluggable toast API. Web passes the host app’s `toast` implementation (e.g. react-toastify wrapper);\n * React Native can pass a native implementation. Defaults are no-ops.\n */\nexport type ToastSupportApi = {\n success: (message: string, options?: ToastSupportOptions) => void;\n error: (message: string, options?: ToastSupportOptions) => void;\n info: (message: string, options?: ToastSupportOptions) => void;\n warning: (message: string, options?: ToastSupportOptions) => void;\n default: (message: string, options?: ToastSupportOptions) => void;\n};\n\nfunction createNoopToastSupport(): ToastSupportApi {\n const noop = () => {};\n return {\n success: noop,\n error: noop,\n info: noop,\n warning: noop,\n default: noop,\n };\n}\n\nconst ToastSupportContext = createContext<ToastSupportApi>(createNoopToastSupport());\n\ntype ToastSupportProviderProps = PropsWithChildren<{\n /** When omitted, all toast calls from core providers are no-ops (e.g. RN until wired). */\n value?: ToastSupportApi;\n}>;\n\nexport function ToastSupportProvider({ children, value }: ToastSupportProviderProps) {\n const api = useMemo(() => {\n if (!value) return createNoopToastSupport();\n return { ...createNoopToastSupport(), ...value };\n }, [value]);\n\n return (\n <ToastSupportContext.Provider value={api}>{children}</ToastSupportContext.Provider>\n );\n}\n\nexport function useToastSupport(): ToastSupportApi {\n return useContext(ToastSupportContext);\n}\n","import React, { createContext, useContext, useState } from 'react'\n\nexport const CartWishlistRefreshContext = createContext<{\n refreshType: 'cart' | 'wishlist' | null;\n setRefreshType: any;\n}>({\n refreshType: null,\n setRefreshType: () => null,\n})\n\nexport const CartWishlistRefreshProvider = (props: React.PropsWithChildren) => {\n const [refreshType, setRefreshType] = useState(null);\n\n return (\n <CartWishlistRefreshContext.Provider value={{ refreshType, setRefreshType }}>\n {props.children}\n </CartWishlistRefreshContext.Provider>\n )\n}\n\nexport const useCartWishlistRefresh = () => useContext(CartWishlistRefreshContext);","import React, { createContext, useState, useEffect, useContext } from 'react';\nimport _ from 'lodash';\nimport { api } from '@growupsell/api';\nimport { useAuth } from './AuthProvider';\nimport { useToastSupport } from './ToastSupportProvider';\nimport { useStorage } from './StorageProvider';\nimport { useCartWishlistRefresh } from './CartWishlistRefreshProvider';\n\nconst isArrayEqual = (a: any, b: any) => _.isEmpty(_.xorWith(a, b, _.isEqual));\n\ntype ORDER_TYPES = 'delivery' | 'cod';\n\nexport const CartContext = createContext<{\n cartItems: any[];\n addToCart: (sku: any, quantity: number) => void;\n addToCartLoading: boolean;\n addToCartError: string | null;\n clearCart: () => void;\n onChangeAddress: (addressId: number, addressType: string) => void;\n onChangeTax: (tax_number: string, legal_name: string) => void;\n onChangeOffer: (offers: number | null) => void;\n onChangeOrderType: (type: ORDER_TYPES) => void;\n session: any;\n setSession: (session: any) => void;\n removeAppliedOffer: () => void;\n moveToWishlist: (sku: any) => void;\n moveToWishlistLoading: boolean;\n orderFetchLoading: boolean;\n onChangePromoCode: (promoCode: string | null) => void;\n onChangeGiftCard: (pin: number, code: string) => void;\n errorMessage?: string | null;\n}>({\n cartItems: [],\n addToCart: () => null,\n addToCartLoading: false,\n addToCartError: null,\n clearCart: () => null,\n onChangeAddress: () => null,\n onChangeTax: () => null,\n onChangeOffer: () => null,\n onChangeOrderType: () => null,\n session: {},\n setSession: () => null,\n removeAppliedOffer: () => null,\n moveToWishlist: () => null,\n moveToWishlistLoading: false,\n orderFetchLoading: true,\n onChangePromoCode: () => null,\n onChangeGiftCard: () => null,\n errorMessage: null,\n});\n\nexport const CartProvider = (props: React.PropsWithChildren) => {\n const toast = useToastSupport();\n const [cartItems, setCartItems] = useState<any>([]);\n const [orderFetchLoading, setOrderFetchLoading] = useState(true);\n const [addToCartLoading, setAddToCartLoading] = useState(false);\n const [addToCartError, setAddToCartError] = useState<string | null>(null);\n const [moveToWishlistLoading, setMoveToWishlistLoading] = useState(false);\n const [session, setSession] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const { user } = useAuth();\n const storage = useStorage();\n const { refreshType, setRefreshType } = useCartWishlistRefresh();\n\n useEffect(() => {\n if (refreshType == 'cart') {\n fetchOrderDetail();\n setRefreshType(null);\n }\n }, [refreshType]);\n\n const onChangeAddress = async (addressId: number, addressType: string) => {\n let body = {};\n if (addressType === 'shipping') {\n body = {\n shipping_address: addressId,\n };\n } else if (addressType === 'billing') {\n body = {\n billing_address: addressId,\n };\n } else {\n body = {\n shipping_address: addressId,\n billing_address: addressId,\n };\n }\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateAddressCartOrder(body);\n setSession({\n ...session,\n shipping_address: response.shipping_address,\n billing_address: response.billing_address,\n });\n }\n } catch (error) {\n console.log('Error---->', error);\n }\n };\n\n const onChangePromoCode = async (promoCodeID: string | null) => {\n let body = {\n promo: promoCodeID,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateCartPromoCode(body);\n setSession({\n ...session,\n promo: response.promo,\n promo_redeem_amount: Number(response.promo_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n if (promoCodeID) {\n toast.success('Promo code applied successfully');\n } else {\n toast.info('Promo code removed');\n }\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.message);\n console.log('Error---->', error);\n const errorMsg = error?.response?.message || 'Failed to apply promo code';\n toast.error(errorMsg);\n }\n };\n\n const onChangeGiftCard = async (pin: number, code: string) => {\n let body = {\n pin,\n code,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateCartGiftCard(body);\n setSession({\n ...session,\n giftcard: response.giftcard,\n giftcard_redeem_amount: Number(response.giftcard_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n setErrorMessage(null);\n fetchOrderDetail();\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.message);\n console.log('Error---->', error);\n }\n };\n\n const onChangeOffer = async (offers: number | null) => {\n let body = {\n offer: offers,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateOfferCartOrder(body);\n const orderData = await api.getOrderCartDetail();\n setSession({\n ...session,\n offers: response.offers,\n final_payable_amount: Number(orderData.final_payable_amount),\n offer_redeem_amount: Number(orderData.offer_redeem_amount),\n });\n if (offers) {\n toast.success('Offer applied successfully');\n } else {\n toast.info('Offer removed');\n }\n fetchOrderDetail();\n }\n } catch (error) {\n console.log('Error---->', error);\n toast.error('Failed to apply offer');\n }\n };\n\n const onChangeOrderType = async (type: ORDER_TYPES) => {\n const prevType = session?.type;\n // Update UI immediately so checkbox reflects selection without waiting for API.\n setSession((prev: any) => ({\n ...prev,\n type,\n }));\n\n let body = { type };\n try {\n const response = await api.updateCartOrderType(body);\n setSession((prev: any) => ({\n ...prev,\n type: response?.type ?? type,\n }));\n } catch (error) {\n console.log('Error---->', error);\n // Roll back if API fails so local state stays consistent with backend.\n setSession((prev: any) => ({\n ...prev,\n type: prevType,\n }));\n toast.error('Something went wrong! Please try again.');\n }\n };\n\n const onChangeTax = async (legal_name: string, tax_number: string) => {\n let body = {\n tax_number,\n legal_name,\n };\n try {\n if (!orderFetchLoading && session && user) {\n const response = await api.updateTaxCartOrder(body);\n setSession({\n ...session,\n tax: response,\n });\n }\n } catch (error) {\n console.log('Error---->', error);\n }\n };\n\n useEffect(() => {\n session && storage.setItem('cart', JSON.stringify(session), 'local');\n }, [session]);\n\n const fetchOrderDetail = async () => {\n setOrderFetchLoading(true);\n const response = await api.getOrderCartDetail();\n setSession({\n ...session,\n ...response,\n });\n setCartItems(response.products);\n setOrderFetchLoading(false);\n };\n\n useEffect(() => {\n fetchOrderDetail();\n }, [user]);\n\n const removeAppliedOffer = async () => {\n setSession({\n ...session,\n offers: null,\n offer_redeem_amount: 0,\n });\n toast.info('Offer removed');\n };\n\n const addToCart = async (sku: any, quantity: number) => {\n setAddToCartLoading(true);\n setAddToCartError(null);\n setOrderFetchLoading(true);\n let isItemInCart = cartItems?.find((item: any) => item.sku.id == sku);\n try {\n if (quantity === 0) {\n if (isItemInCart) {\n await api.deleteCartItem(isItemInCart.id);\n console.log('Item removed from cart');\n setCartItems(\n cartItems?.filter(\n (cartItem: any) => cartItem.id !== isItemInCart.id,\n ),\n );\n await fetchOrderDetail();\n }\n return;\n }\n if (isItemInCart) {\n await api.updateCartItem(isItemInCart.id, {\n sku: isItemInCart.sku.id,\n qty: isItemInCart.qty + quantity,\n });\n await fetchOrderDetail();\n console.log('Cart item updated successfully');\n } else {\n let body = {\n qty: quantity,\n sku: sku,\n };\n await api.addProductToCart(body);\n console.log('New item added to cart.');\n toast.success('Item added to cart');\n await fetchOrderDetail();\n }\n } catch (error: any) {\n setOrderFetchLoading(false);\n console.log('Error---->', error);\n const message =\n error?.response?.message ||\n error?.response?.data?.message ||\n error?.message ||\n 'Unable to add to cart. Please try again.';\n setAddToCartError(message);\n toast.error(message);\n } finally {\n setAddToCartLoading(false);\n }\n };\n\n const clearCart = () => {\n setCartItems([]);\n setSession(null);\n storage.removeItem('cart');\n fetchOrderDetail();\n };\n\n const moveToWishlist = async (id: number) => {\n let isItemInCart = cartItems?.find((item: any) => item.id === id);\n\n if (!isItemInCart) {\n console.log('Item not found in cart.');\n toast.warning('Item not found in cart');\n return;\n }\n\n try {\n setMoveToWishlistLoading(true);\n // First, try to add to wishlist\n let body = { sku: isItemInCart.sku.id };\n await api.addProductToWishlist(body);\n\n // Only if successfully added to wishlist, then remove from cart\n await api.deleteCartItem(isItemInCart.id);\n\n setCartItems((prevCartItems: any[]) =>\n prevCartItems.filter((cartItem) => cartItem.id !== isItemInCart.id),\n );\n\n toast.success('Item moved to wishlist');\n setRefreshType('wishlist');\n } catch (error: any) {\n console.error('Error moving item to wishlist:', error);\n const errorMessage =\n error?.response?.data?.message ||\n error?.response?.message ||\n 'Something went wrong! Please try again.';\n toast.error(errorMessage);\n } finally {\n setMoveToWishlistLoading(false);\n }\n };\n\n return (\n <CartContext.Provider\n value={{\n cartItems,\n addToCart,\n addToCartLoading,\n addToCartError,\n clearCart,\n onChangeAddress,\n onChangeTax,\n onChangeOffer,\n onChangeOrderType,\n session,\n setSession,\n removeAppliedOffer,\n moveToWishlist,\n moveToWishlistLoading,\n orderFetchLoading,\n onChangePromoCode,\n onChangeGiftCard,\n errorMessage,\n }}\n >\n {props.children}\n </CartContext.Provider>\n );\n};\n\nexport const useCart = () => useContext(CartContext);\n","import React, { createContext, useContext, useState, useEffect } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const FilterContext = createContext<{\n selectedCategoryId: number[];\n addCategoryFilterId: (id: number) => void;\n removeCategoryFilterId: (id: number) => void;\n menuList: any[];\n productLoading: boolean;\n currentPage: number;\n handlePageChange: (page: number) => void;\n setMenuList: (x: any) => void;\n filterConfig: any;\n setSelectedSortOption: (x: string) => void;\n seletedRattingNumber: number | undefined | string;\n setSelectedRattingNumber: (x: any) => void;\n selectedDiscountOff: number | undefined;\n setSelectedDiscountOff: (x: any) => void;\n selectedMinPrice: number;\n selectedMaxPrice: number;\n setSelectedMinPrice: (x: any) => void;\n setSelectedMaxPrice: (x: any) => void;\n brandList: any[];\n selectedBrandId: any[];\n updateBrandIds: (x: any) => void;\n brandLoading: boolean;\n variantList: any[];\n selectedVariants: any[];\n updateSelectedVariants: (x: any) => void;\n variantLoading: boolean;\n total: number;\n limit: number;\n offset: number;\n}>({\n selectedCategoryId: [],\n addCategoryFilterId: () => null,\n removeCategoryFilterId: () => null,\n menuList: [],\n productLoading: true,\n currentPage: 1,\n handlePageChange: () => null,\n setMenuList: () => null,\n filterConfig: null,\n setSelectedSortOption: () => null,\n seletedRattingNumber: 0,\n setSelectedRattingNumber: () => null,\n selectedDiscountOff: 0,\n setSelectedDiscountOff: () => null,\n selectedMinPrice: 0,\n selectedMaxPrice: 0,\n setSelectedMinPrice: () => null,\n setSelectedMaxPrice: () => null,\n brandList: [],\n selectedBrandId: [],\n updateBrandIds: () => null,\n brandLoading: false,\n variantList: [],\n selectedVariants: [],\n updateSelectedVariants: () => null,\n variantLoading: false,\n total: 0,\n limit: 10,\n offset: 0,\n});\n\nexport const FilterProvider = (props: React.PropsWithChildren) => {\n const [filterConfig, setFilterConfig] = useState<any>();\n const [selectedCategoryId, setSelectedCategoryId] = useState<number[]>([]);\n const [selectedSortOption, setSelectedSortOption] =\n useState<string>('newest_first');\n const [seletedRattingNumber, setSelectedRattingNumber] = useState<any>();\n const [selectedDiscountOff, setSelectedDiscountOff] = useState();\n const [selectedMinPrice, setSelectedMinPrice] = useState(\n filterConfig?.price?.min,\n );\n const [selectedMaxPrice, setSelectedMaxPrice] = useState(\n filterConfig?.price?.max,\n );\n const [menuList, setMenuList] = useState([]);\n const [productLoading, setProductLoading] = useState(true);\n const [currentPage, setCurrentPage] = useState(1);\n const [filterConfigLoading, setFilterConfigLoading] = useState(false);\n const [brandList, setBrandList] = useState([]);\n const [selectedBrandId, setSelectedBrandId] = useState([]);\n const [brandLoading, setBrandLoading] = useState(false);\n const [variantList, setVariantList] = useState([]);\n const [selectedVariants, setSelectedVariants] = useState([]);\n const [variantLoading, setVariantLoading] = useState(false);\n const [limit, setLimit] = useState<number>(10);\n const [offset, setOffset] = useState<number>(0);\n const [total, setTotal] = useState(0);\n\n const fetchBrandList = async () => {\n setBrandLoading(true);\n let body = {\n category_ids: selectedCategoryId,\n };\n try {\n const brands = await api.getBrandList(body);\n setBrandList(brands);\n } catch (error) {\n console.log(error);\n } finally {\n setBrandLoading(false);\n }\n };\n\n const addCategoryFilterId = (id: number) => {\n setSelectedCategoryId((prevIds) => {\n if (prevIds.includes(id)) {\n return prevIds;\n }\n return [...prevIds, id];\n });\n setCurrentPage(1);\n };\n\n const fetchFilterConfig = async () => {\n setFilterConfigLoading(true);\n const response = await api.getProductFilterConfig();\n setFilterConfig(response);\n setFilterConfigLoading(false);\n };\n\n useEffect(() => {\n fetchFilterConfig();\n }, []);\n\n const removeCategoryFilterId = (id: number) => {\n setSelectedCategoryId((x) => {\n return x.filter((o) => o !== id);\n });\n setCurrentPage(1);\n };\n\n const fetchProductList = async () => {\n setProductLoading(true);\n let body = {\n category_id: selectedCategoryId,\n sort_by: selectedSortOption,\n min_rating: seletedRattingNumber,\n min_discount: selectedDiscountOff,\n min_price: selectedMinPrice,\n max_price: selectedMaxPrice,\n brand_ids: selectedCategoryId.length > 0 ? selectedBrandId : null,\n variants: selectedCategoryId.length > 0 ? selectedVariants : null,\n limit: limit,\n offset: offset,\n };\n try {\n const productSearch = await api.getProductSearch(body);\n setTotal(productSearch.count);\n setMenuList(productSearch.results);\n } catch (error) {\n console.log(error);\n } finally {\n setProductLoading(false);\n }\n };\n\n const updateBrandIds = (id: number) => {\n setSelectedBrandId((prevIds: any) => {\n if (prevIds.includes(id)) {\n return prevIds.filter((x: any) => x !== id);\n }\n return [...prevIds, id];\n });\n };\n\n const updateSelectedVariants = (label: string) => {\n setSelectedVariants((prevVariants: any) => {\n if (prevVariants.includes(label)) {\n return prevVariants.filter((x: any) => x !== label);\n }\n return [...prevVariants, label];\n });\n };\n\n const fetchVariantList = async () => {\n setVariantLoading(true);\n let body = {\n category_ids: selectedCategoryId,\n };\n const response = await api.getProductVariantByCategory(body);\n setVariantList(response);\n setVariantLoading(false);\n };\n\n useEffect(() => {\n if (!filterConfigLoading) {\n fetchProductList();\n }\n }, [\n selectedCategoryId,\n currentPage,\n selectedSortOption,\n seletedRattingNumber,\n selectedDiscountOff,\n selectedMinPrice,\n selectedMaxPrice,\n selectedBrandId,\n selectedVariants,\n limit,\n offset,\n ]);\n\n const handlePageChange = (newOffset: number) => {\n setOffset(newOffset);\n };\n\n useEffect(() => {\n if (selectedCategoryId.length > 0) {\n fetchBrandList();\n fetchVariantList();\n }\n }, [selectedCategoryId]);\n\n return (\n <FilterContext.Provider\n value={{\n selectedCategoryId,\n setMenuList,\n addCategoryFilterId,\n removeCategoryFilterId,\n menuList,\n productLoading,\n currentPage,\n handlePageChange,\n filterConfig,\n setSelectedSortOption,\n seletedRattingNumber,\n setSelectedRattingNumber,\n selectedDiscountOff,\n setSelectedDiscountOff,\n selectedMinPrice,\n selectedMaxPrice,\n setSelectedMinPrice,\n setSelectedMaxPrice,\n brandList,\n selectedBrandId,\n updateBrandIds,\n brandLoading,\n variantList,\n selectedVariants,\n updateSelectedVariants,\n variantLoading,\n total,\n limit,\n offset,\n }}\n >\n {!filterConfigLoading && props.children}\n </FilterContext.Provider>\n );\n};\n\nexport const useFilter = () => useContext(FilterContext);\n","import { api } from '@growupsell/api';\nimport React, { useState, createContext, useEffect, useContext } from 'react';\n\nexport const ProductDetailContext = createContext<{\n selectedVariants: any[];\n selectUnselectVariants: (type: string, value: string, id: number) => void;\n productDetail: any;\n waitProductLoading: boolean;\n setSelectedVariants: (x: any) => void;\n}>({\n selectedVariants: [],\n selectUnselectVariants: () => null,\n productDetail: [],\n waitProductLoading: true,\n setSelectedVariants: () => null,\n});\n\ntype Props = {\n productId: any;\n selected_variants: any;\n};\n\nexport const ProductDetailProvider = (\n props: React.PropsWithChildren<Props>,\n) => {\n const [selectedVariants, setSelectedVariants] = useState<any>([]);\n const [productDetail, setProductDetail] = useState([]);\n const [waitProductLoading, setWaitProductLoading] = useState(true);\n const selectedIds = props?.selected_variants?.split(',').map(Number);\n\n const selectUnselectVariants = (type: string, value: string, id: number) => {\n // Set loading to true when function is called\n setWaitProductLoading(true);\n\n setSelectedVariants((prev: any) => {\n const existingIndex = prev.findIndex((item: any) => item.type === type);\n\n if (existingIndex > -1) {\n const updatedVariants = [...prev];\n updatedVariants[existingIndex] = { type, value, id };\n return updatedVariants;\n } else {\n const newVariants = [...prev, { type, value, id }];\n return newVariants;\n }\n });\n\n setTimeout(() => {\n setWaitProductLoading(false);\n }, 1000); // 1 seconds delay\n };\n\n useEffect(() => {\n (async () => {\n setWaitProductLoading(true);\n try {\n const productDetail = await api.getProductDetail(props.productId);\n setProductDetail(productDetail);\n\n if (props.selected_variants !== null) {\n const initialV = productDetail?.variant\n ?.map((vType: any) => {\n const matchedVariant = vType.variants.find((variant: any) =>\n selectedIds.includes(variant.id),\n );\n if (matchedVariant) {\n return {\n id: matchedVariant.id,\n type: vType.variant_type.type,\n value: matchedVariant.label,\n };\n }\n return null;\n })\n .filter(Boolean);\n setSelectedVariants(initialV || []);\n } else {\n let initialV = productDetail.variant.map((vType: any) => {\n return {\n id: vType.variants[0].id,\n type: vType.variant_type.type,\n value: vType.variants[0].label,\n };\n });\n setSelectedVariants(initialV || []);\n }\n } catch (error) {\n console.error('Error loading product details:', error);\n } finally {\n setWaitProductLoading(false);\n }\n })();\n }, [props.productId]);\n\n return (\n <ProductDetailContext.Provider\n value={{\n selectedVariants,\n setSelectedVariants,\n selectUnselectVariants,\n productDetail,\n waitProductLoading,\n }}\n >\n {props.children}\n </ProductDetailContext.Provider>\n );\n};\n\nexport const useProductDetail = () => useContext(ProductDetailContext);\n","import { api } from '@growupsell/api';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nexport const ProductConfigContext = createContext({});\n\nexport const ProductConfigProvider = (props: React.PropsWithChildren) => {\n const [productConfig, setProductConfig] = useState({});\n\n const fetchProductConfig = async () => {\n const response = await api.getProductConfig();\n setProductConfig({ ...response });\n };\n\n const updateProductConfig = (data: object) => {\n setProductConfig({ ...data });\n };\n\n useEffect(() => {\n fetchProductConfig();\n }, []);\n\n return (\n <ProductConfigContext.Provider\n value={{ productConfig, updateProductConfig }}\n >\n {props.children}\n </ProductConfigContext.Provider>\n );\n};\n\nexport const useProductConfig = () => useContext(ProductConfigContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const CustomerConfigContext = createContext<{\n customerConfig: any;\n}>({ customerConfig: null });\n\nexport const CustomerConfigProvider = (props: React.PropsWithChildren) => {\n const [customerConfig, setCustomerConfig] = useState();\n const [loading, setLoading] = useState<boolean>(false);\n\n const fetchCustomerConfig = async () => {\n setLoading(true);\n try {\n const response = await api.getCustomerBusinessConfig();\n setCustomerConfig(response);\n } catch (error) {\n console.log('Error in fetching customer config---->', error);\n }\n setLoading(false);\n };\n\n useEffect(() => {\n fetchCustomerConfig();\n }, []);\n\n return (\n <CustomerConfigContext.Provider value={{ customerConfig }}>\n {loading ? null : props.children}\n </CustomerConfigContext.Provider>\n );\n};\n\nexport const useCustomer = () => useContext(CustomerConfigContext);\n","import React, { createContext, useContext, useState } from 'react';\n\nexport const ThemeEditContext = createContext<{\n token: string;\n isThemeEdit: boolean;\n isHeader: boolean;\n isFooter: boolean;\n isAnnouncementBar: boolean;\n}>({\n token: '',\n isThemeEdit: false,\n isHeader: false,\n isFooter: false,\n isAnnouncementBar: false,\n});\n\nexport const ThemeEditProvider = (props: {\n isThemeEdit: boolean;\n token: string;\n isHeader: boolean;\n isFooter: boolean;\n isAnnouncementBar: boolean;\n children: React.ReactNode;\n}) => {\n const [isThemeEdit, setIsThemeEdit] = useState(props.isThemeEdit);\n const [token, setToken] = useState(props.token);\n const [isHeader, setIsHeader] = useState(props.isHeader);\n const [isFooter, setIsFooter] = useState(props.isFooter);\n const [isAnnouncementBar, setIsAnnouncementBar] = useState(props.isAnnouncementBar);\n\n return (\n <ThemeEditContext.Provider\n value={{ token, isThemeEdit, isHeader, isFooter, isAnnouncementBar}}\n >\n {props.children}\n </ThemeEditContext.Provider>\n );\n};\n\nexport const useThemeEdit = () => useContext(ThemeEditContext);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from 'react';\nimport { retrieveThemeContent, updateThemeContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { BusinessConfigContext } from './BusinessConfigContext';\n\nexport const HomeConfigContext = createContext<{\n selectedConfig: any[];\n setSelectedConfig: (x: any) => void;\n addConfig: (x: any) => void;\n updateConfig: (config: any, index: number) => void;\n removeConfig: (index: number) => void;\n moveConfig: (fromIndex: number, toIndex: number) => void;\n themeConfigData: any;\n loading: boolean;\n}>({\n selectedConfig: [],\n setSelectedConfig: () => null,\n addConfig: () => null,\n updateConfig: () => null,\n removeConfig: () => null,\n moveConfig: () => null,\n themeConfigData: {},\n loading: true,\n});\n\nexport const HomeConfigProvider = (props: {\n page: string;\n children: React.ReactNode;\n}) => {\n const [selectedConfig, setSelectedConfig] = useState<any[]>([]);\n const { token } = useThemeEdit();\n const themeConfig: any = useContext(BusinessConfigContext);\n const [themeConfigData, setThemeConfigData] = useState<any>({});\n const [isInitialized, setIsInitialized] = useState(false);\n const updateRef = useRef(false);\n const [loading, setLoading] = useState(true);\n\n const getThemeConfig = useCallback(async () => {\n setLoading(true);\n try {\n const response = await retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n setThemeConfigData(response);\n if (response?.data && Array.isArray(response.data)) {\n setSelectedConfig(\n response.data.filter(\n (item: any) => item !== null && item !== undefined,\n ),\n );\n }\n setIsInitialized(true);\n } catch (error) {\n console.error('Error fetching theme content:', error);\n } finally {\n setLoading(false);\n }\n }, [themeConfig.theme.id]);\n\n const onUpdateThemeContent = useCallback(\n async (configToUpdate = selectedConfig) => {\n try {\n const body = {\n data: configToUpdate,\n slug: props.page,\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n\n // Prevent duplicate updates\n if (updateRef.current) return;\n updateRef.current = true;\n\n await updateThemeContent(\n body,\n themeConfig?.theme?.id,\n props.page,\n token,\n );\n const updatedResponse = await retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n setThemeConfigData(updatedResponse);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n updateRef.current = false;\n }\n },\n [isInitialized, token, themeConfig?.theme?.id, selectedConfig],\n );\n\n // Add new config\n const addConfig = useCallback(\n async (config: any) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev, config];\n onUpdateThemeContent(newConfig); // Update with new config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Update existing config\n const updateConfig = useCallback(\n async (config: any, index: number) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev];\n newConfig[index] = config;\n onUpdateThemeContent(newConfig); // Update with modified config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n const moveConfig = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedConfig((prev) => {\n const newConfig = [...prev];\n const [movedItem] = newConfig.splice(fromIndex, 1);\n newConfig.splice(toIndex, 0, movedItem);\n onUpdateThemeContent(newConfig);\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Remove config\n const removeConfig = useCallback(\n async (index: number) => {\n setSelectedConfig((prev) => {\n const newConfig = prev.filter((_, i) => i !== index);\n onUpdateThemeContent(newConfig); // Update with removed config\n return newConfig;\n });\n },\n [onUpdateThemeContent],\n );\n\n // Initial load\n useEffect(() => {\n getThemeConfig();\n }, [getThemeConfig]);\n\n return (\n <HomeConfigContext.Provider\n value={{\n selectedConfig,\n setSelectedConfig,\n addConfig,\n updateConfig,\n removeConfig,\n moveConfig,\n themeConfigData,\n loading,\n }}\n >\n {props.children}\n </HomeConfigContext.Provider>\n );\n};\n\nexport const useHomeConfig = () => useContext(HomeConfigContext);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from 'react';\nimport { getCustomPageContent, updateCustomPageContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\n\nexport const CustomPageConfigContext = createContext<{\n selectedConfig: any[];\n setSelectedConfig: (x: any) => void;\n addConfig: (x: any) => void;\n updateConfig: (config: any, index: number) => void;\n removeConfig: (index: number) => void;\n moveConfig: (fromIndex: number, toIndex: number) => void;\n loading: boolean;\n}>({\n selectedConfig: [],\n setSelectedConfig: () => null,\n addConfig: () => null,\n updateConfig: () => null,\n removeConfig: () => null,\n moveConfig: () => null,\n loading: true,\n});\n\nexport const CustomPageConfigProvider = (props: {\n pageId: number;\n children: React.ReactNode;\n}) => {\n const { token } = useThemeEdit();\n const [selectedConfig, setSelectedConfig] = useState<any[]>([]);\n const [loading, setLoading] = useState(true);\n const updateRef = useRef(false);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const row = await getCustomPageContent(props.pageId, token);\n const data = row?.content;\n setSelectedConfig(Array.isArray(data) ? data.filter((x) => x != null) : []);\n } catch (e) {\n console.error('Error loading custom page content:', e);\n } finally {\n setLoading(false);\n }\n }, [props.pageId, token]);\n\n const persist = useCallback(\n async (configToSave: any[]) => {\n try {\n if (updateRef.current) return;\n updateRef.current = true;\n await updateCustomPageContent(props.pageId, configToSave, token);\n await load();\n } catch (e) {\n console.error('Error saving custom page content:', e);\n } finally {\n updateRef.current = false;\n }\n },\n [props.pageId, token, load],\n );\n\n const addConfig = useCallback(\n async (config: any) => {\n setSelectedConfig((prev) => {\n const next = [...prev, config];\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const updateConfig = useCallback(\n async (config: any, index: number) => {\n setSelectedConfig((prev) => {\n const next = [...prev];\n next[index] = config;\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const moveConfig = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedConfig((prev) => {\n const next = [...prev];\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n const removeConfig = useCallback(\n async (index: number) => {\n setSelectedConfig((prev) => {\n const next = prev.filter((_, i) => i !== index);\n persist(next);\n return next;\n });\n },\n [persist],\n );\n\n useEffect(() => {\n load();\n }, [load]);\n\n return (\n <CustomPageConfigContext.Provider\n value={{\n selectedConfig,\n setSelectedConfig,\n addConfig,\n updateConfig,\n removeConfig,\n moveConfig,\n loading,\n }}\n >\n {props.children}\n </CustomPageConfigContext.Provider>\n );\n};\n\nexport const useCustomPageConfig = () => useContext(CustomPageConfigContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react'\nimport { api } from '@growupsell/api';\nimport { useAuth } from './AuthProvider';\nimport { useToastSupport } from './ToastSupportProvider';\nimport { useCartWishlistRefresh } from './CartWishlistRefreshProvider';\nimport { useCart } from './CartProvider';\n\nexport const WishlistContext = createContext<{\n wishlistItems: any[];\n addToWishlist: (sku: any) => void;\n deleteWishlistItem: (id: number) => void;\n moveToCart: (sku: any, quantity: number) => void;\n fetchWishlistLoading: boolean;\n addToWishlistLoading: boolean;\n moveToCartLoading: boolean;\n}>({\n wishlistItems: [],\n addToWishlist: () => null,\n deleteWishlistItem: () => { },\n moveToCart: () => { },\n fetchWishlistLoading: false,\n addToWishlistLoading: false,\n moveToCartLoading: false,\n})\n\nexport const WishlistProvider = (props: React.PropsWithChildren) => {\n const toast = useToastSupport();\n\n const [wishlistItems, setWishlistItems] = useState<any>([]);\n const { user } = useAuth();\n const [fetchWishlistLoading, setFetchWishlistLoading] = useState(true);\n const [addToWishlistLoading, setAddToWishlistLoading] = useState(false);\n const [moveToCartLoading, setMoveToCartLoading] = useState(false);\n const { addToCart } = useCart();\n\n const { refreshType, setRefreshType } = useCartWishlistRefresh();\n\n useEffect(() => {\n if (refreshType == 'wishlist') {\n fetchWishlistDetail();\n setRefreshType(null);\n }\n }, [refreshType])\n\n const fetchWishlistDetail = async () => {\n if (!!user) {\n setFetchWishlistLoading(true);\n try {\n const response = await api.getWishlist();\n console.log('fetchWishlistDetail response:', response);\n setWishlistItems(response); // Update the state\n return response; // ✅ Ensure it returns data\n } catch (error) {\n console.error('Error fetching wishlist details:', error);\n return null;\n } finally {\n setFetchWishlistLoading(false);\n }\n }\n };\n\n useEffect(() => {\n user && user.is_active && fetchWishlistDetail();\n }, [user]);\n\n const addToWishlist = async (sku: any) => {\n try {\n setAddToWishlistLoading(true);\n let body = {\n sku: sku,\n };\n await api.addProductToWishlist(body);\n console.log('New item added to Wishlist');\n toast.success('Item added to wishlist');\n fetchWishlistDetail();\n\n } catch (error: any) {\n console.log('error==', error);\n\n const errorMessage = error?.response?.data?.message || error?.response?.message || 'Something went wrong! Please try again.';\n toast.error(errorMessage);\n } finally {\n setAddToWishlistLoading(false);\n }\n };\n\n const deleteWishlistItem = async (id: number) => {\n try {\n setFetchWishlistLoading(true);\n const response = await api.deleteWishlist(id); // Call the API to delete the item\n console.log('Item deleted:', response); // Logging response for debugging\n setWishlistItems((prevItems: any[]) => prevItems.filter(item => item.id !== id));\n toast.success('Item removed from wishlist');\n await fetchWishlistDetail();\n } catch (error) {\n console.log('Error deleting item:', error);\n toast.error('Failed to remove item from wishlist');\n } finally {\n setFetchWishlistLoading(false);\n }\n };\n\n const moveToCart = async (id: number, quantity: number) => {\n let isItemInWishlist = wishlistItems?.find((item: any) => item.id === id);\n\n if (!isItemInWishlist) {\n console.log('Item not found in wishlist.');\n toast.warning('Item not found in wishlist');\n return;\n }\n\n try {\n setMoveToCartLoading(true);\n // Use CartProvider's addToCart which handles updating quantity if item already exists\n addToCart(isItemInWishlist.sku.id, quantity);\n\n // Remove from wishlist after successfully adding to cart\n await api.deleteWishlist(isItemInWishlist.id);\n setWishlistItems(wishlistItems?.filter((item: any) => item.id !== isItemInWishlist.id));\n\n setRefreshType('cart');\n\n } catch (error: any) {\n console.log('Error moving item to cart:', error);\n const errorMessage = error?.response?.data?.message || error?.response?.message || error?.message || '';\n const errorMsg = errorMessage || 'Failed to move item to cart';\n toast.error(errorMsg);\n } finally {\n setMoveToCartLoading(false);\n }\n };\n\n return (\n <WishlistContext.Provider value={{ wishlistItems, addToWishlist, deleteWishlistItem, moveToCart, fetchWishlistLoading, addToWishlistLoading, moveToCartLoading }}>\n {props.children}\n </WishlistContext.Provider>\n )\n}\n\nexport const useWishlist = () => useContext(WishlistContext);\n","import React from 'react';\nimport {\n BusinessConfigProvider,\n BusinessMediaProvider,\n AuthProvider,\n ModalProvider,\n CartProvider,\n FilterProvider,\n ProductConfigProvider,\n StorageProvider,\n CustomerConfigProvider,\n WishlistProvider,\n CartWishlistRefreshProvider,\n ThemeEditProvider,\n MenuFilterProvider,\n MenuCartProvider,\n ReferralCodeProvider,\n LiveSupportWidgetProvider,\n} from '../provider';\nimport { ToastSupportProvider, type ToastSupportApi } from './ToastSupportProvider';\n\ninterface BaseProviderProps {\n children: React.ReactNode;\n baseURL: any;\n token?: string;\n isEdit?: boolean;\n businessConfig: any;\n storage: {\n setItem: (key: string, value: string, type?: string) => void;\n getItem: (key: string, type?: string) => string | null;\n clearAll: () => void;\n removeItem: (key: string, type?: string) => void;\n };\n isHeader?: boolean;\n isFooter?: boolean;\n isAnnouncementBar?: boolean;\n /** Referral code from URL (e.g. ?referralCode=xxx). Persisted and passed to register API. */\n referralCodeFromUrl?: string | null;\n /**\n * Web: pass your host app’s toast API (e.g. Next.js `utils/toast` wrapping react-toastify) so Cart/Wishlist can notify.\n * React Native: pass your own implementation or omit (no-ops).\n */\n toast?: ToastSupportApi;\n}\n\nexport const BaseProvider: React.FC<BaseProviderProps> = ({\n children,\n baseURL,\n token,\n isEdit,\n businessConfig,\n storage,\n isHeader,\n isFooter,\n isAnnouncementBar,\n referralCodeFromUrl = null,\n toast,\n}) => {\n return (\n <StorageProvider storage={storage}>\n <ToastSupportProvider value={toast}>\n <BusinessConfigProvider data={businessConfig} baseURL={baseURL}>\n <ReferralCodeProvider referralCodeFromUrl={referralCodeFromUrl}>\n <ThemeEditProvider isThemeEdit={isEdit!} token={token!} isHeader={isHeader!} isFooter={isFooter!} isAnnouncementBar={isAnnouncementBar!}>\n <BusinessMediaProvider>\n <CustomerConfigProvider>\n <AuthProvider>\n <ModalProvider>\n <LiveSupportWidgetProvider>\n {businessConfig.category.type == 'retail' ?\n <ProductConfigProvider>\n <CartWishlistRefreshProvider>\n <CartProvider>\n <WishlistProvider>\n <FilterProvider>\n <>{children}</>\n </FilterProvider>\n </WishlistProvider>\n </CartProvider>\n </CartWishlistRefreshProvider>\n </ProductConfigProvider>\n :\n <MenuCartProvider>\n <MenuFilterProvider>\n <>{children}</>\n </MenuFilterProvider>\n </MenuCartProvider>}\n {/* <ProductConfigProvider>\n <CartWishlistRefreshProvider>\n <CartProvider>\n <WishlistProvider>\n <FilterProvider>\n <MenuFilterProvider>\n <>{children}</>\n </MenuFilterProvider>\n </FilterProvider>\n </WishlistProvider>\n </CartProvider>\n </CartWishlistRefreshProvider>\n </ProductConfigProvider> */}\n </LiveSupportWidgetProvider>\n </ModalProvider>\n </AuthProvider>\n </CustomerConfigProvider>\n </BusinessMediaProvider>\n </ThemeEditProvider>\n </ReferralCodeProvider>\n </BusinessConfigProvider>\n </ToastSupportProvider>\n </StorageProvider>\n );\n};\n","\nimport React, { createContext, useContext, useState, ReactNode } from \"react\";\n\ntype ModalType = \"\" | \"login\" | \"signup\" | \"forgot\" | \"otp\" | \"reset\";\n\ntype ModalUserData = {\n otp?: { id: string; value: string };\n reset?: string;\n};\n\ntype ModalContextType = {\n openModal: ModalType;\n showModal: (modal: ModalType) => void;\n closeModal: () => void;\n userData: ModalUserData;\n setUserData: (data: ModalUserData) => void;\n clearUserData: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | undefined>(undefined);\n\nexport const ModalProvider = ({ children }: { children: ReactNode }) => {\n const [openModal, setOpenModal] = useState<ModalType>(\"\");\n const [userData, setUserData] = useState<ModalUserData>({});\n\n const showModal = (modal: ModalType) => setOpenModal(modal);\n const closeModal = () => setOpenModal(\"\");\n const clearUserData = () => setUserData({});\n\n return (\n <ModalContext.Provider\n value={{\n openModal,\n showModal,\n closeModal,\n userData,\n setUserData,\n clearUserData,\n }}\n >\n {children}\n </ModalContext.Provider>\n );\n};\n\nexport const useModal = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error(\"useModal must be used within a ModalProvider\");\n }\n return context;\n};\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { retrieveThemeContent, updateThemeContent } from '@growupsell/api/api';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { BusinessConfigContext } from './BusinessConfigContext';\n\nexport const HomeConfigHeroSliderContext = createContext<{\n loading: boolean;\n heroSliderConfigData: any;\n onUpdateHeroSlider: (updatedSlides: any) => void;\n}>({\n loading: true,\n heroSliderConfigData: [],\n onUpdateHeroSlider: () => null,\n});\n\nexport const HomeConfigHeroSliderProvider = (props: {\n children: React.ReactNode;\n}) => {\n const [loading, setLoading] = useState(true);\n const [heroSliderConfigData, setHeroSliderConfigData] = useState<any>([]);\n const { token } = useThemeEdit();\n const themeConfig: any = useContext(BusinessConfigContext);\n\n const getHeroSliderConfig = async () => {\n setLoading(true);\n try {\n const response = await retrieveThemeContent(\n themeConfig.theme.id,\n 'hero_slider',\n );\n setHeroSliderConfigData(response.data);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n getHeroSliderConfig();\n }, []);\n\n const onUpdateHeroSlider = async (configToUpdate: any) => {\n setLoading(true);\n try {\n const body = {\n data: configToUpdate,\n slug: 'hero_slider',\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n await updateThemeContent(\n body,\n themeConfig?.theme?.id,\n 'hero_slider',\n token,\n );\n const updatedResponse = await retrieveThemeContent(\n themeConfig.theme.id,\n 'hero_slider',\n );\n setHeroSliderConfigData(updatedResponse.data);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <HomeConfigHeroSliderContext.Provider\n value={{ loading, heroSliderConfigData, onUpdateHeroSlider }}\n >\n {props.children}\n </HomeConfigHeroSliderContext.Provider>\n );\n};\n\nexport const useHomeConfigHeroSlider = () =>\n useContext(HomeConfigHeroSliderContext);\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useThemeEdit } from './ThemeEditProvider';\nimport { useBusiness } from './BusinessProvider';\nimport { api } from '@growupsell/api';\n\nexport const HeaderFooterContext = createContext<{\n headerConfig: any;\n footerConfig: any;\n onUpdateThemeContent: (configToUpdate: any) => Promise<void>;\n loading: boolean;\n announcementConfig: any;\n}>({\n headerConfig: {},\n footerConfig: {},\n onUpdateThemeContent: () => Promise.resolve(),\n loading: false,\n announcementConfig: {},\n});\n\nexport const HeaderFooterProvider = (props: {\n page: string;\n children: React.ReactNode;\n}) => {\n const [headerConfig, setHeaderConfig] = useState<any>({});\n const [footerConfig, setFooterConfig] = useState<any>({});\n const [announcementConfig, setAnnouncementConfig] = useState<any>({});\n const { token } = useThemeEdit();\n const themeConfig: any = useBusiness();\n const [loading, setLoading] = useState(true);\n\n const getThemeConfig = useCallback(async () => {\n setLoading(true);\n try {\n const response = await api.retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n response.slug === 'header' && setHeaderConfig(response.data);\n response.slug === 'footer' && setFooterConfig(response.data);\n response.slug === 'announcement' && setAnnouncementConfig(response.data);\n } catch (error) {\n console.error('Error fetching theme content:', error);\n } finally {\n setLoading(false);\n }\n }, [themeConfig.theme.id]);\n\n const onUpdateThemeContent = useCallback(\n async (configToUpdate: any) => {\n try {\n const body = {\n data: configToUpdate,\n slug: props.page,\n platform: typeof window !== 'undefined' ? 'website' : 'app',\n };\n\n await api.updateThemeContent(\n body,\n themeConfig.theme.id,\n props.page,\n token,\n );\n const updatedResponse = await api.retrieveThemeContent(\n themeConfig.theme.id,\n props.page,\n );\n updatedResponse.slug === 'header' &&\n setHeaderConfig(updatedResponse.data);\n updatedResponse.slug === 'footer' &&\n setFooterConfig(updatedResponse.data);\n updatedResponse.slug === 'announcement' &&\n setAnnouncementConfig(updatedResponse.data);\n } catch (error) {\n console.error('Error updating theme content:', error);\n } finally {\n setLoading(false);\n }\n },\n [props.page],\n );\n\n useEffect(() => {\n getThemeConfig();\n }, [getThemeConfig]);\n\n return (\n <HeaderFooterContext.Provider\n value={{ headerConfig, footerConfig, onUpdateThemeContent, loading, announcementConfig }}\n >\n {loading ? null : props.children}\n </HeaderFooterContext.Provider>\n );\n};\n\nexport const useHeaderFooter = () => {\n return useContext(HeaderFooterContext);\n};\n","import React, { createContext, useContext, useState, useEffect, useRef } from 'react';\nimport { api } from '@growupsell/api';\n\nexport const MenuFilterContext = createContext<{\n menuList: any[];\n categoryList: any[];\n selectedCategoryId: number[];\n addCategoryFilterId: (id: number) => void;\n removeCategoryFilterId: (id: number) => void;\n menuLoading: boolean;\n categoryLoading: boolean;\n isInitialLoad: boolean;\n currentPage: number;\n totalPages: number;\n handlePageChange: (page: number) => void;\n setMenuList: (x: any) => void;\n selectedSortOption: string;\n setSelectedSortOption: (x: string) => void;\n selectedMinPrice: number | undefined;\n selectedMaxPrice: number | undefined;\n setSelectedMinPrice: (x: any) => void;\n setSelectedMaxPrice: (x: any) => void;\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n selectedFoodType: string;\n setSelectedFoodType: (type: string) => void;\n}>({\n menuList: [],\n categoryList: [],\n selectedCategoryId: [],\n addCategoryFilterId: () => null,\n removeCategoryFilterId: () => null,\n menuLoading: true,\n categoryLoading: true,\n isInitialLoad: true,\n currentPage: 1,\n totalPages: 1,\n handlePageChange: () => null,\n setMenuList: () => null,\n selectedSortOption: 'newest_first',\n setSelectedSortOption: () => null,\n selectedMinPrice: undefined,\n selectedMaxPrice: undefined,\n setSelectedMinPrice: () => null,\n setSelectedMaxPrice: () => null,\n searchQuery: '',\n setSearchQuery: () => null,\n selectedFoodType: '',\n setSelectedFoodType: () => null,\n});\n\nexport const MenuFilterProvider = (props: React.PropsWithChildren) => {\n const [menuList, setMenuList] = useState<any[]>([]);\n const [categoryList, setCategoryList] = useState<any[]>([]);\n const [selectedCategoryId, setSelectedCategoryId] = useState<number[]>([]);\n const [selectedSortOption, setSelectedSortOption] = useState<string>('newest_first');\n const [selectedMinPrice, setSelectedMinPrice] = useState<number | undefined>();\n const [selectedMaxPrice, setSelectedMaxPrice] = useState<number | undefined>();\n const [menuLoading, setMenuLoading] = useState(true);\n const [categoryLoading, setCategoryLoading] = useState(true);\n const [isInitialLoad, setIsInitialLoad] = useState(true);\n const [currentPage, setCurrentPage] = useState(1);\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearchQuery, setDebouncedSearchQuery] = useState('');\n const [selectedFoodType, setSelectedFoodType] = useState('');\n const limit = 12;\n const [totalCount, setTotalCount] = useState(0);\n const totalPages = Math.ceil(totalCount / limit);\n const searchTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Fetch menu categories\n const fetchCategoryList = async () => {\n setCategoryLoading(true);\n try {\n const response = await api.getMenuCategories();\n setCategoryList(response.data || response);\n } catch (error) {\n console.log('Error fetching categories:', error);\n } finally {\n setCategoryLoading(false);\n }\n };\n\n // Fetch menu list\n const fetchMenuList = async () => {\n setMenuLoading(true);\n try {\n let body: any = {\n limit: limit,\n offset: (currentPage - 1) * limit,\n };\n\n // Add category_ids if selected (as comma-separated string)\n if (selectedCategoryId.length > 0) {\n body.category_ids = selectedCategoryId.join(',');\n }\n\n // Add food_type if selected\n if (selectedFoodType) {\n body.food_type = selectedFoodType;\n }\n\n // Add search query if provided\n if (debouncedSearchQuery.trim()) {\n body.search = debouncedSearchQuery;\n }\n\n const response = await api.getMenuList(body);\n\n // Get menu data from response\n let filteredMenus = response.data || response;\n\n // If response is an object with results/data array, extract it\n if (filteredMenus && typeof filteredMenus === 'object' && !Array.isArray(filteredMenus)) {\n filteredMenus = filteredMenus.results || filteredMenus.data || filteredMenus.items || [];\n }\n\n // Ensure it's an array\n if (!Array.isArray(filteredMenus)) {\n filteredMenus = [];\n }\n\n setMenuList(filteredMenus);\n setTotalCount(filteredMenus.length);\n } catch (error) {\n console.log('Error fetching menus:', error);\n } finally {\n setMenuLoading(false);\n if (isInitialLoad) {\n setIsInitialLoad(false);\n }\n }\n };\n\n const addCategoryFilterId = (id: number) => {\n setSelectedCategoryId((prevIds) => {\n if (prevIds.includes(id)) {\n return prevIds;\n }\n return [...prevIds, id];\n });\n setCurrentPage(1);\n };\n\n const removeCategoryFilterId = (id: number) => {\n setSelectedCategoryId((x) => {\n return x.filter((o) => o !== id);\n });\n setCurrentPage(1);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n };\n\n // Debounce search query\n useEffect(() => {\n // Clear existing timeout\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n\n // Set new timeout\n searchTimeoutRef.current = setTimeout(() => {\n setDebouncedSearchQuery(searchQuery);\n }, 1000);\n\n // Cleanup function\n return () => {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n };\n }, [searchQuery]);\n\n // Fetch categories on mount\n useEffect(() => {\n fetchCategoryList();\n }, []);\n\n // Fetch menus when filters change\n useEffect(() => {\n fetchMenuList();\n }, [\n selectedCategoryId,\n currentPage,\n selectedSortOption,\n selectedMinPrice,\n selectedMaxPrice,\n debouncedSearchQuery,\n selectedFoodType,\n ]);\n\n return (\n <MenuFilterContext.Provider\n value={{\n menuList,\n categoryList,\n selectedCategoryId,\n addCategoryFilterId,\n removeCategoryFilterId,\n menuLoading,\n categoryLoading,\n isInitialLoad,\n currentPage,\n totalPages,\n handlePageChange,\n setMenuList,\n selectedSortOption,\n setSelectedSortOption,\n selectedMinPrice,\n selectedMaxPrice,\n setSelectedMinPrice,\n setSelectedMaxPrice,\n searchQuery,\n setSearchQuery,\n selectedFoodType,\n setSelectedFoodType,\n }}\n >\n {props.children}\n </MenuFilterContext.Provider>\n );\n};\n\nexport const useMenuFilter = () => useContext(MenuFilterContext);","import React, { createContext, useState, useEffect, useContext } from 'react';\nimport { api } from '@growupsell/api';\nimport { useStorage } from './StorageProvider';\nimport { useAuth } from './AuthProvider';\n\nexport const MenuCartContext = createContext<{\n menuCartItems: any[];\n cartLength: number;\n cartType: 'delivery' | 'pickup' | 'self_dinein';\n session: any;\n errorMessage?: string | null;\n menuCartLoading: boolean;\n promoCodeLoading: boolean;\n updateOrderType: (params: { type: 'delivery' | 'pickup' | 'self_dinein'; pickup_time?: string; table_no?: string | number; shipping_address?: number }) => void;\n addMenuToCart: (itemId: number, quantity: number, customizeOptions?: any[]) => Promise<void>;\n updateMenuCartItem: (id: number, quantity: number, customizeOptions?: any[]) => Promise<void>;\n deleteMenuCartItem: (id: number) => Promise<void>;\n updateMenuCartPromoCode: (promoCode: string | null) => Promise<void>;\n updateMenuCartAddress: (shippingAddress: number) => Promise<void>;\n getMenuOrderCharge: (orderId: number, body: object) => Promise<any>;\n clearMenuCart: () => void;\n}>({\n menuCartItems: [],\n cartLength: 0,\n cartType: 'delivery',\n session: null,\n errorMessage: null,\n menuCartLoading: false,\n promoCodeLoading: false,\n updateOrderType: () => { },\n addMenuToCart: async () => { },\n updateMenuCartItem: async () => { },\n deleteMenuCartItem: async () => { },\n updateMenuCartPromoCode: async () => { },\n updateMenuCartAddress: async () => { },\n getMenuOrderCharge: async () => { },\n clearMenuCart: () => { },\n});\n\nexport const MenuCartProvider = (props: React.PropsWithChildren) => {\n const [menuCartItems, setMenuCartItems] = useState<any[]>([]);\n const [cartLength, setCartLength] = useState<number>(0);\n const [cartType, setCartTypeState] = useState<'delivery' | 'pickup' | 'self_dinein'>('delivery');\n const [session, setSession] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [menuCartLoading, setMenuCartLoading] = useState<boolean>(false);\n const [promoCodeLoading, setPromoCodeLoading] = useState<boolean>(false);\n const { user } = useAuth();\n\n const storage = useStorage();\n\n const fetchMenuCartDetail = async () => {\n setMenuCartLoading(true);\n try {\n const response = await api.getMenuCartDetail();\n setMenuCartItems(response?.items || response?.products || []);\n setCartLength(response?.items?.length || response?.products?.length || 0);\n setCartTypeState(response?.type || 'delivery');\n setSession(response);\n } catch (error) {\n console.error('Error fetching menu cart:', error);\n setMenuCartItems([]);\n setCartLength(0);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n useEffect(() => {\n fetchMenuCartDetail();\n }, [user]);\n\n // Update cartLength whenever menuCartItems changes\n useEffect(() => {\n setCartLength(menuCartItems.length);\n }, [menuCartItems]);\n\n // Save session to localStorage whenever session changes\n useEffect(() => {\n session && storage.setItem('menuCart', JSON.stringify(session), 'local');\n }, [session, storage]);\n\n // This function handles both local state and API call\n const updateOrderType = async (params: { type: 'delivery' | 'pickup' | 'self_dinein'; pickup_time?: string; table_no?: string | number; shipping_address?: number }) => {\n setMenuCartLoading(true);\n try {\n const { type, pickup_time, table_no, shipping_address } = params;\n const body: any = { type };\n\n if (type === 'pickup' && pickup_time) {\n body.pickup_time = pickup_time;\n }\n\n if (type === 'self_dinein' && table_no) {\n body.table_no = table_no;\n }\n\n if (type === 'delivery' && user && shipping_address) {\n body.shipping_address = shipping_address;\n }\n\n await api.updateMenuCartType(body);\n setCartTypeState(type);\n fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to update cart type:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to update promo code\n const updateMenuCartPromoCode = async (promoCode: string | null) => {\n let body = {\n promo_code: promoCode,\n };\n setPromoCodeLoading(true);\n setErrorMessage(null);\n try {\n if (session) {\n const response = await api.updateMenuCartPromoCode(body);\n setSession({\n ...session,\n promo: response.promo,\n promo_redeem_amount: Number(response.promo_redeem_amount),\n final_payable_amount: Number(response.final_payable_amount),\n });\n // Refresh cart data after updating promo code\n await fetchMenuCartDetail();\n }\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to apply promo code');\n console.error('Failed to update promo code:', error);\n } finally {\n setPromoCodeLoading(false);\n }\n };\n\n // Function to update menu cart address\n const updateMenuCartAddress = async (shippingAddress: number) => {\n setMenuCartLoading(true);\n setErrorMessage(null);\n try {\n const body = {\n shipping_address: shippingAddress\n };\n\n const response = await api.updateMenuOrderCartAddress(body);\n setSession({\n ...session,\n shipping_address: response.shipping_address,\n });\n // Refresh cart data after updating address\n await fetchMenuCartDetail();\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to update address');\n console.error('Failed to update menu cart address:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to get menu order charge\n const getMenuOrderCharge = async (orderId: number, body: object) => {\n setMenuCartLoading(true);\n setErrorMessage(null);\n try {\n const response = await api.getMenuOrderCharge(orderId, body);\n return response;\n } catch (error: any) {\n setErrorMessage(error?.response?.data?.error || error?.message || 'Failed to get order charge');\n console.error('Failed to get menu order charge:', error);\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to add menu item to cart\n const addMenuToCart = async (itemId: number, quantity: number, customizeOptions?: any[]) => {\n setMenuCartLoading(true);\n try {\n const body = {\n item: itemId,\n qty: quantity,\n customize_option: customizeOptions || []\n };\n\n await api.addMenuToCart(body);\n // Refresh cart data after adding item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to add menu item to cart:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to update menu cart item\n const updateMenuCartItem = async (id: number, quantity: number, customizeOptions?: any[]) => {\n setMenuCartLoading(true);\n try {\n const body = {\n qty: quantity,\n customize_option: customizeOptions || []\n };\n\n await api.updateMenuCartItem(id, body);\n // Refresh cart data after updating item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to update menu cart item:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n // Function to delete menu cart item\n const deleteMenuCartItem = async (id: number) => {\n setMenuCartLoading(true);\n try {\n await api.deleteMenuCartItem(id);\n // Refresh cart data after deleting item\n await fetchMenuCartDetail();\n } catch (error) {\n console.error('Failed to delete menu cart item:', error);\n throw error;\n } finally {\n setMenuCartLoading(false);\n }\n };\n\n const clearMenuCart = () => {\n setMenuCartItems([]);\n setSession(null);\n storage.removeItem('menuCart');\n fetchMenuCartDetail();\n };\n\n return (\n <MenuCartContext.Provider\n value={{\n menuCartItems,\n cartLength,\n cartType,\n session,\n errorMessage,\n menuCartLoading,\n promoCodeLoading,\n updateOrderType,\n addMenuToCart,\n updateMenuCartItem,\n deleteMenuCartItem,\n updateMenuCartPromoCode,\n updateMenuCartAddress,\n getMenuOrderCharge,\n clearMenuCart,\n }}\n >\n {props.children}\n </MenuCartContext.Provider>\n );\n};\n\nexport const useMenuCart = () => useContext(MenuCartContext);\n","import React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst REFERRAL_STORAGE_KEY = 'referralCode';\n\nconst ReferralCodeContext = createContext<string | null>(null);\n\nexport function ReferralCodeProvider({\n children,\n referralCodeFromUrl,\n}: {\n children: React.ReactNode;\n referralCodeFromUrl: string | null;\n}) {\n const [referralCode, setReferralCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (referralCodeFromUrl) {\n if (typeof window !== 'undefined') {\n sessionStorage.setItem(REFERRAL_STORAGE_KEY, referralCodeFromUrl);\n }\n setReferralCode(referralCodeFromUrl);\n } else if (typeof window !== 'undefined') {\n setReferralCode(sessionStorage.getItem(REFERRAL_STORAGE_KEY));\n }\n }, [referralCodeFromUrl]);\n\n return (\n <ReferralCodeContext.Provider value={referralCode}>\n {children}\n </ReferralCodeContext.Provider>\n );\n}\n\nexport function useReferralCode() {\n return useContext(ReferralCodeContext);\n}\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { api } from '@growupsell/api';\nimport type { LiveSupportWidgetConfig } from '@growupsell/api/api';\n\nexport type { LiveSupportWidgetConfig };\n\ntype LiveSupportWidgetContextValue = {\n config: LiveSupportWidgetConfig | null;\n loading: boolean;\n};\n\nconst LiveSupportWidgetContext = createContext<LiveSupportWidgetContextValue>({\n config: null,\n loading: true,\n});\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const LiveSupportWidgetProvider: React.FC<Props> = ({ children }) => {\n const [config, setConfig] = useState<LiveSupportWidgetConfig | null>(null);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let isMounted = true;\n\n (async () => {\n try {\n const data = await api.getLiveSupportWidgetConfig();\n if (isMounted) {\n setConfig(data);\n }\n } catch (e) {\n if (isMounted) {\n setConfig(null);\n }\n } finally {\n if (isMounted) {\n setLoading(false);\n }\n }\n })();\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n return (\n <LiveSupportWidgetContext.Provider value={{ config, loading }}>\n {children}\n </LiveSupportWidgetContext.Provider>\n );\n};\n\nexport const useLiveSupportWidget = () => useContext(LiveSupportWidgetContext);\n\n"]}