@salla.sa/twilight-theme-engine 1.0.82 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AddToCartForm-PDYMJQXZ.js → AddToCartForm-JUMFLSKN.js} +3 -3
- package/dist/{AddToCartForm-PDYMJQXZ.js.map → AddToCartForm-JUMFLSKN.js.map} +1 -1
- package/dist/{BlogAuthorPage-LAGHH24W.js → BlogAuthorPage-LFAUMKC7.js} +7 -7
- package/dist/{BlogAuthorPage-LAGHH24W.js.map → BlogAuthorPage-LFAUMKC7.js.map} +1 -1
- package/dist/{BlogCategoryPage-IRYWGLDL.js → BlogCategoryPage-NWYFFPCD.js} +7 -7
- package/dist/{BlogCategoryPage-IRYWGLDL.js.map → BlogCategoryPage-NWYFFPCD.js.map} +1 -1
- package/dist/{BlogPage-NJEA3M2P.js → BlogPage-BOHXFV7E.js} +6 -6
- package/dist/{BlogPage-NJEA3M2P.js.map → BlogPage-BOHXFV7E.js.map} +1 -1
- package/dist/{BlogSinglePage-NCUCJ5AY.js → BlogSinglePage-FYEXQPMB.js} +6 -6
- package/dist/{BlogSinglePage-NCUCJ5AY.js.map → BlogSinglePage-FYEXQPMB.js.map} +1 -1
- package/dist/{BlogTagPage-4YIH3OZ6.js → BlogTagPage-DAM3RNVA.js} +7 -7
- package/dist/{BlogTagPage-4YIH3OZ6.js.map → BlogTagPage-DAM3RNVA.js.map} +1 -1
- package/dist/{BrandsPage-VJSJUN2O.js → BrandsPage-GAKQCE6O.js} +6 -6
- package/dist/{BrandsPage-VJSJUN2O.js.map → BrandsPage-GAKQCE6O.js.map} +1 -1
- package/dist/{Breadcrumb-P43JSL26.js → Breadcrumb-NAYSZNRV.js} +6 -6
- package/dist/{Breadcrumb-P43JSL26.js.map → Breadcrumb-NAYSZNRV.js.map} +1 -1
- package/dist/{CartItem-R5FUNTIF.js → CartItem-ZRVLIZT3.js} +6 -6
- package/dist/{CartItem-R5FUNTIF.js.map → CartItem-ZRVLIZT3.js.map} +1 -1
- package/dist/{CartSummary-J7IE36U7.js → CartSummary-U2TVLG35.js} +6 -6
- package/dist/{CartSummary-J7IE36U7.js.map → CartSummary-U2TVLG35.js.map} +1 -1
- package/dist/{chunk-JKIRRMBU.js → Copyright-2LSBADZD.js} +7 -2
- package/dist/Copyright-2LSBADZD.js.map +1 -0
- package/dist/{CustomerLayout-LP36XBEU.js → CustomerLayout-WSKXWI7D.js} +6 -6
- package/dist/{CustomerLayout-LP36XBEU.js.map → CustomerLayout-WSKXWI7D.js.map} +1 -1
- package/dist/Footer-ONNRJU4G.js +15 -0
- package/dist/{Footer-JAKCUDNO.js.map → Footer-ONNRJU4G.js.map} +1 -1
- package/dist/{Header-LB35B7CC.js → Header-C6VXLLUC.js} +4 -4
- package/dist/{Header-LB35B7CC.js.map → Header-C6VXLLUC.js.map} +1 -1
- package/dist/{LoyaltyPage-HMJNBRTX.js → LoyaltyPage-IG5KSYNO.js} +6 -6
- package/dist/{LoyaltyPage-HMJNBRTX.js.map → LoyaltyPage-IG5KSYNO.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-YLK4WHUL.js → LoyaltyPointsPage-RKO56ZER.js} +3 -3
- package/dist/{LoyaltyPointsPage-YLK4WHUL.js.map → LoyaltyPointsPage-RKO56ZER.js.map} +1 -1
- package/dist/{MainMenu-UCUSTQ7U.js → MainMenu-USOYTKPU.js} +3 -3
- package/dist/{MainMenu-UCUSTQ7U.js.map → MainMenu-USOYTKPU.js.map} +1 -1
- package/dist/{Footer-JAKCUDNO.js → MasterLayout-2W24ACEK.js} +6 -6
- package/dist/{MasterLayout-BUSHNS3V.js.map → MasterLayout-2W24ACEK.js.map} +1 -1
- package/dist/{MobileMenu-HDNT4KZV.js → MobileMenu-E4X2GOZ3.js} +6 -6
- package/dist/{MobileMenu-HDNT4KZV.js.map → MobileMenu-E4X2GOZ3.js.map} +1 -1
- package/dist/{NotificationsPage-VNDSFO5H.js → NotificationsPage-BJ5XVWEG.js} +6 -6
- package/dist/{NotificationsPage-VNDSFO5H.js.map → NotificationsPage-BJ5XVWEG.js.map} +1 -1
- package/dist/{OrderSinglePage-OEFB5ISH.js → OrderSinglePage-544E36FJ.js} +6 -6
- package/dist/{OrderSinglePage-OEFB5ISH.js.map → OrderSinglePage-544E36FJ.js.map} +1 -1
- package/dist/{OrdersPage-VKYPZRFO.js → OrdersPage-AFBWVTZU.js} +6 -6
- package/dist/{OrdersPage-VKYPZRFO.js.map → OrdersPage-AFBWVTZU.js.map} +1 -1
- package/dist/{PageSingle-JXBKLT7A.js → PageSingle-H2EJIL74.js} +3 -3
- package/dist/{PageSingle-JXBKLT7A.js.map → PageSingle-H2EJIL74.js.map} +1 -1
- package/dist/{ProductDetails-SI7GL3X6.js → ProductDetails-SDZHALU6.js} +3 -3
- package/dist/{ProductDetails-SI7GL3X6.js.map → ProductDetails-SDZHALU6.js.map} +1 -1
- package/dist/{ProfilePage-MWRV6CTH.js → ProfilePage-V5KV6GQK.js} +6 -6
- package/dist/{ProfilePage-MWRV6CTH.js.map → ProfilePage-V5KV6GQK.js.map} +1 -1
- package/dist/{ReviewsPage-UAV3NBRA.js → ReviewsPage-CXKJABXP.js} +3 -3
- package/dist/{ReviewsPage-UAV3NBRA.js.map → ReviewsPage-CXKJABXP.js.map} +1 -1
- package/dist/{SeoCartWidget-GBYQVJCI.js → SeoCartWidget-JAV6M3X5.js} +6 -6
- package/dist/{SeoCartWidget-GBYQVJCI.js.map → SeoCartWidget-JAV6M3X5.js.map} +1 -1
- package/dist/{SettingsPage-SPO5KDZJ.js → SettingsPage-43SUCLQR.js} +6 -6
- package/dist/{SettingsPage-SPO5KDZJ.js.map → SettingsPage-43SUCLQR.js.map} +1 -1
- package/dist/{StoreClosedNotification-7HPLBXEB.js → StoreClosedNotification-MINBJOGZ.js} +7 -7
- package/dist/{StoreClosedNotification-7HPLBXEB.js.map → StoreClosedNotification-MINBJOGZ.js.map} +1 -1
- package/dist/{TestimonialsPage-HTBFPP6F.js → TestimonialsPage-RLLIDLOA.js} +3 -3
- package/dist/{TestimonialsPage-HTBFPP6F.js.map → TestimonialsPage-RLLIDLOA.js.map} +1 -1
- package/dist/{ThankYouPage-2LVBC6UX.js → ThankYouPage-52SSZ7FV.js} +6 -6
- package/dist/{ThankYouPage-2LVBC6UX.js.map → ThankYouPage-52SSZ7FV.js.map} +1 -1
- package/dist/{WalletPage-ETW3U3HM.js → WalletPage-4AN4UJ52.js} +6 -6
- package/dist/{WalletPage-ETW3U3HM.js.map → WalletPage-4AN4UJ52.js.map} +1 -1
- package/dist/{WishlistPage-BPVYHAG7.js → WishlistPage-L6IYJUJZ.js} +8 -8
- package/dist/{WishlistPage-BPVYHAG7.js.map → WishlistPage-L6IYJUJZ.js.map} +1 -1
- package/dist/api/product.d.ts +19 -0
- package/dist/api/product.d.ts.map +1 -1
- package/dist/api/product.js +1 -1
- package/dist/api/wishlist.js +2 -2
- package/dist/{chunk-WYNHJWET.js → chunk-3PWARKZX.js} +5 -5
- package/dist/{chunk-WYNHJWET.js.map → chunk-3PWARKZX.js.map} +1 -1
- package/dist/chunk-4EA56R6I.js +14 -0
- package/dist/{chunk-VXIHM3AY.js.map → chunk-4EA56R6I.js.map} +1 -1
- package/dist/{chunk-TWJXVT6S.js → chunk-556OT3BN.js} +14 -3
- package/dist/chunk-556OT3BN.js.map +1 -0
- package/dist/{chunk-5OB335IP.js → chunk-CCUE2FMU.js} +3 -3
- package/dist/{chunk-5OB335IP.js.map → chunk-CCUE2FMU.js.map} +1 -1
- package/dist/{chunk-GPSF6AGU.js → chunk-EFF2WO6W.js} +45 -143
- package/dist/chunk-EFF2WO6W.js.map +1 -0
- package/dist/{chunk-O7TGNZSL.js → chunk-FFWSQJLV.js} +3 -3
- package/dist/{chunk-O7TGNZSL.js.map → chunk-FFWSQJLV.js.map} +1 -1
- package/dist/{chunk-5SD7BUSA.js → chunk-I4LYRR2O.js} +3 -3
- package/dist/{chunk-5SD7BUSA.js.map → chunk-I4LYRR2O.js.map} +1 -1
- package/dist/{chunk-FLSDOTVB.js → chunk-IC6XW3PD.js} +7 -7
- package/dist/{chunk-FLSDOTVB.js.map → chunk-IC6XW3PD.js.map} +1 -1
- package/dist/{chunk-4JSPPUCC.js → chunk-MECSOKS7.js} +4 -4
- package/dist/{chunk-4JSPPUCC.js.map → chunk-MECSOKS7.js.map} +1 -1
- package/dist/{chunk-IWZ6Z22J.js → chunk-R54GSKJS.js} +5 -5
- package/dist/{chunk-IWZ6Z22J.js.map → chunk-R54GSKJS.js.map} +1 -1
- package/dist/{chunk-PIC4F2CI.js → chunk-R5BQDCDK.js} +4 -4
- package/dist/{chunk-PIC4F2CI.js.map → chunk-R5BQDCDK.js.map} +1 -1
- package/dist/{chunk-TSOZPJCY.js → chunk-RRGEASAL.js} +6 -6
- package/dist/{chunk-TSOZPJCY.js.map → chunk-RRGEASAL.js.map} +1 -1
- package/dist/{chunk-YR7AZDZ6.js → chunk-UNEZZMQA.js} +4 -4
- package/dist/{chunk-YR7AZDZ6.js.map → chunk-UNEZZMQA.js.map} +1 -1
- package/dist/{chunk-R774LHY5.js → chunk-WSRVPR7V.js} +3 -3
- package/dist/{chunk-R774LHY5.js.map → chunk-WSRVPR7V.js.map} +1 -1
- package/dist/chunk-YFQUSAET.js +268 -0
- package/dist/chunk-YFQUSAET.js.map +1 -0
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/drawer/index.js +4 -4
- package/dist/components/home/index.js +7 -7
- package/dist/components/layout/Footer.d.ts +27 -1
- package/dist/components/layout/Footer.d.ts.map +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/product/index.js +5 -5
- package/dist/components/store/index.js +6 -6
- package/dist/{document-class-7W2LQ3Q4.js → document-class-SD6BUMZN.js} +4 -4
- package/dist/{document-class-7W2LQ3Q4.js.map → document-class-SD6BUMZN.js.map} +1 -1
- package/dist/hooks/index.js +4 -4
- package/dist/hooks/useGtm.js +4 -4
- package/dist/hooks/useMoney.js +4 -4
- package/dist/hooks/useStore.js +4 -4
- package/dist/index.js +4 -4
- package/dist/{not-found-3GLU2HK6.js → not-found-TUU7WQLL.js} +7 -7
- package/dist/{not-found-3GLU2HK6.js.map → not-found-TUU7WQLL.js.map} +1 -1
- package/dist/providers/TwilightProvider.d.ts.map +1 -1
- package/dist/providers/index.js +4 -4
- package/dist/providers/twilight-init.d.ts.map +1 -1
- package/dist/routes/account/orders.js +1 -1
- package/dist/routes/account/wishlist/WishlistPage.d.ts.map +1 -1
- package/dist/routes/account.js +8 -8
- package/dist/routes/blog.js +5 -5
- package/dist/routes/brands.js +1 -1
- package/dist/routes/cart.js +9 -9
- package/dist/routes/home.js +8 -8
- package/dist/routes/loyalty.js +2 -2
- package/dist/routes/page.js +1 -1
- package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -1
- package/dist/routes/product-listing.js +9 -10
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +7 -7
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +1 -1
- package/dist/skeleton.js +8 -8
- package/dist/tanstack.js +2 -2
- package/dist/utils/apply-theme.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/Copyright-G4CO5XGL.js +0 -10
- package/dist/Copyright-G4CO5XGL.js.map +0 -1
- package/dist/MasterLayout-BUSHNS3V.js +0 -49
- package/dist/chunk-GPSF6AGU.js.map +0 -1
- package/dist/chunk-JKIRRMBU.js.map +0 -1
- package/dist/chunk-TWJXVT6S.js.map +0 -1
- package/dist/chunk-VXIHM3AY.js +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/common/lazy.ts","../src/components/common/Image.tsx","../src/components/common/DeferredData.tsx"],"names":["Image","memo","DeferredRenderer","jsx"],"mappings":"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","file":"chunk-5OB335IP.js","sourcesContent":["import { lazy } from 'react';\n\n/**\n * Lazy-loaded common components\n * Use these for code-splitting non-critical components\n *\n * NOTE: Skeleton components are sourced from @salla.sa/twilight-components-react\n * because they must render instantly during route transitions.\n */\nexport const LazyBreadcrumb = lazy(() =>\n import('./Breadcrumb').then((m) => ({ default: m.Breadcrumb }))\n);\n\nexport const LazyNoContent = lazy(() =>\n import('./NoContent').then((m) => ({ default: m.NoContent }))\n);\n\nexport const LazyRenderWhenVisible = lazy(() =>\n import('./RenderWhenVisible').then((m) => ({ default: m.RenderWhenVisible }))\n);\n\nexport const LazyCurrencySymbol = lazy(() =>\n import('./CurrencySymbol').then((m) => ({ default: m.CurrencySymbol }))\n);\n\nexport const LazyErrorPage = lazy(() =>\n import('./ErrorPage').then((m) => ({ default: m.ErrorPage }))\n);\n","import { memo } from 'react';\nimport { getCdnImageSrcSet, getCdnImageUrl } from '../../utils/cdn-image';\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Image source URL */\n src?: string;\n /** Alt text for accessibility */\n alt: string;\n /** Whether this image is above the fold / LCP candidate */\n priority?: boolean;\n /** Aspect ratio for CLS prevention (e.g. \"16/9\", \"1/1\", \"4/3\") */\n aspectRatio?: string;\n /** Object fit mode */\n objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\n /** Mobile image source for <picture> element */\n mobileSrc?: string;\n /** Mobile breakpoint for <source> media query (default: 768px) */\n mobileBreakpoint?: number;\n /** Skip the wrapper div */\n noWrapper?: boolean;\n /**\n * CDN widths for a density `srcset`. Pass `sizes` so the browser picks a\n * candidate close to the displayed CSS size.\n */\n srcSetWidths?: readonly number[];\n}\n\n/**\n * Optimized Image component with native browser lazy loading.\n *\n * - Uses `loading=\"lazy\"` + `decoding=\"async\"` by default for below-the-fold images.\n * - Uses `loading=\"eager\"` + `fetchPriority=\"high\"` for priority (above-the-fold / LCP) images.\n * - Supports responsive `<picture>` with mobile source.\n * - Provides `aspectRatio` for CLS prevention.\n * - When `srcSetWidths` + `sizes` are set, emits a sized CDN `srcset`.\n */\nexport const Image = memo(function Image({\n src,\n alt,\n priority = false,\n aspectRatio,\n objectFit = 'cover',\n mobileSrc,\n mobileBreakpoint = 768,\n noWrapper = false,\n className = '',\n style,\n width,\n height,\n sizes,\n srcSet: srcSetProp,\n srcSetWidths,\n ...rest\n}: ImageProps) {\n if (!src) return null;\n\n const generatedSrcSet =\n srcSetProp || (srcSetWidths?.length ? getCdnImageSrcSet(src, srcSetWidths) : undefined);\n const generatedMobileSrcSet =\n srcSetWidths?.length && mobileSrc ? getCdnImageSrcSet(mobileSrc, srcSetWidths) : undefined;\n const cdnWidth = srcSetWidths?.length\n ? width != null && srcSetWidths.includes(Number(width))\n ? Number(width)\n : srcSetWidths[0]\n : width;\n // Width-only CDN URLs so `src` matches a srcset candidate for preload.\n const cdnOptions = generatedSrcSet ? { width: cdnWidth } : { width: cdnWidth, height };\n\n const optimizedSrc = getCdnImageUrl(src, cdnOptions);\n const optimizedMobileSrc = getCdnImageUrl(mobileSrc, cdnOptions);\n\n const objectFitClass = `object-${objectFit}`;\n const imgClasses = [className, objectFitClass].filter(Boolean).join(' ');\n\n const loadingProps: React.ImgHTMLAttributes<HTMLImageElement> = priority\n ? { loading: 'eager' as const, fetchPriority: 'high' as const, decoding: 'sync' as const }\n : { loading: 'lazy' as const, decoding: 'async' as const };\n\n const hasWrapper = !noWrapper && !!aspectRatio;\n\n const img = (\n <img\n src={optimizedSrc}\n alt={alt}\n className={imgClasses}\n width={width}\n height={height}\n sizes={sizes}\n srcSet={generatedSrcSet}\n // With a wrapper, `style` goes to the wrapper; otherwise it must land on the <img>.\n style={hasWrapper ? undefined : style}\n {...loadingProps}\n {...rest}\n />\n );\n\n const imgElement = optimizedMobileSrc ? (\n <picture>\n <source\n media={`(max-width: ${mobileBreakpoint}px)`}\n srcSet={generatedMobileSrcSet || optimizedMobileSrc}\n sizes={generatedMobileSrcSet ? sizes : undefined}\n />\n {img}\n </picture>\n ) : (\n img\n );\n\n if (!hasWrapper) {\n return imgElement;\n }\n\n return (\n <div className=\"relative overflow-hidden\" style={{ aspectRatio, ...style }}>\n {imgElement}\n </div>\n );\n});\n","import { Suspense, memo, use, type ReactNode } from 'react';\n\nexport interface DeferredDataProps<T> {\n promise: Promise<T> | T;\n fallback: ReactNode;\n children: (data: T) => ReactNode;\n}\n\nconst DEFERRED_KEY = Symbol.for('twilight.deferred');\n\ninterface DeferredState<T> {\n status: 'pending' | 'success' | 'error';\n value?: T;\n error?: unknown;\n}\n\nexport interface DeferredPromise<T> extends Promise<T> {\n [DEFERRED_KEY]?: DeferredState<T>;\n}\n\nconst seenPromises = typeof WeakSet !== 'undefined' ? new WeakSet() : null;\n\nfunction defer<T>(promise: Promise<T>): DeferredPromise<T> {\n const existing = (promise as DeferredPromise<T>)[DEFERRED_KEY];\n if (existing) return promise as DeferredPromise<T>;\n\n const state: DeferredState<T> = { status: 'pending' };\n\n const deferred = promise as DeferredPromise<T>;\n deferred[DEFERRED_KEY] = state;\n\n promise.then(\n (value) => {\n state.status = 'success';\n state.value = value;\n },\n (error) => {\n state.status = 'error';\n state.error = error;\n }\n );\n\n return deferred;\n}\n\nconst DeferredRenderer = memo(function DeferredRenderer<T>({\n promise,\n children,\n}: {\n promise: DeferredPromise<T>;\n children: (data: T) => ReactNode;\n}) {\n const state = promise[DEFERRED_KEY];\n\n if (state?.status === 'success') {\n return children(state.value!);\n }\n\n if (state?.status === 'error') {\n throw state.error;\n }\n\n const data = use(promise);\n return children(data);\n}) as <T>(props: { promise: DeferredPromise<T>; children: (data: T) => ReactNode }) => ReactNode;\n\nfunction DeferredFallback<T>({\n promise,\n fallback,\n children,\n}: {\n promise: DeferredPromise<T>;\n fallback: ReactNode;\n children: (data: T) => ReactNode;\n}) {\n const state = promise[DEFERRED_KEY];\n if (state?.status === 'success') {\n return children(state.value!);\n }\n return <>{fallback}</>;\n}\n\nexport function resolveDeferred<T>(\n promiseOrValue: Promise<T> | T | undefined\n): T | Promise<T> | undefined {\n if (promiseOrValue == null || !(promiseOrValue instanceof Promise)) return promiseOrValue;\n const deferred = defer(promiseOrValue);\n const state = deferred[DEFERRED_KEY];\n if (state?.status === 'success') return state.value as T;\n return promiseOrValue;\n}\n\nexport function DeferredData<T>({ promise, fallback, children }: DeferredDataProps<T>) {\n if (!(promise instanceof Promise)) {\n return children(promise);\n }\n\n if (seenPromises && promise instanceof Promise) seenPromises.add(promise);\n\n const deferred = defer(promise);\n const state = deferred[DEFERRED_KEY];\n\n if (state?.status === 'success') {\n return children(state.value!);\n }\n\n if (state?.status === 'error') {\n throw state.error;\n }\n\n return (\n <Suspense\n fallback={\n <DeferredFallback promise={deferred} fallback={fallback}>\n {children}\n </DeferredFallback>\n }\n >\n <DeferredRenderer promise={deferred}>{children}</DeferredRenderer>\n </Suspense>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/common/lazy.ts","../src/components/common/Image.tsx","../src/components/common/DeferredData.tsx"],"names":["Image","memo","DeferredRenderer","jsx"],"mappings":"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","file":"chunk-CCUE2FMU.js","sourcesContent":["import { lazy } from 'react';\n\n/**\n * Lazy-loaded common components\n * Use these for code-splitting non-critical components\n *\n * NOTE: Skeleton components are sourced from @salla.sa/twilight-components-react\n * because they must render instantly during route transitions.\n */\nexport const LazyBreadcrumb = lazy(() =>\n import('./Breadcrumb').then((m) => ({ default: m.Breadcrumb }))\n);\n\nexport const LazyNoContent = lazy(() =>\n import('./NoContent').then((m) => ({ default: m.NoContent }))\n);\n\nexport const LazyRenderWhenVisible = lazy(() =>\n import('./RenderWhenVisible').then((m) => ({ default: m.RenderWhenVisible }))\n);\n\nexport const LazyCurrencySymbol = lazy(() =>\n import('./CurrencySymbol').then((m) => ({ default: m.CurrencySymbol }))\n);\n\nexport const LazyErrorPage = lazy(() =>\n import('./ErrorPage').then((m) => ({ default: m.ErrorPage }))\n);\n","import { memo } from 'react';\nimport { getCdnImageSrcSet, getCdnImageUrl } from '../../utils/cdn-image';\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Image source URL */\n src?: string;\n /** Alt text for accessibility */\n alt: string;\n /** Whether this image is above the fold / LCP candidate */\n priority?: boolean;\n /** Aspect ratio for CLS prevention (e.g. \"16/9\", \"1/1\", \"4/3\") */\n aspectRatio?: string;\n /** Object fit mode */\n objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\n /** Mobile image source for <picture> element */\n mobileSrc?: string;\n /** Mobile breakpoint for <source> media query (default: 768px) */\n mobileBreakpoint?: number;\n /** Skip the wrapper div */\n noWrapper?: boolean;\n /**\n * CDN widths for a density `srcset`. Pass `sizes` so the browser picks a\n * candidate close to the displayed CSS size.\n */\n srcSetWidths?: readonly number[];\n}\n\n/**\n * Optimized Image component with native browser lazy loading.\n *\n * - Uses `loading=\"lazy\"` + `decoding=\"async\"` by default for below-the-fold images.\n * - Uses `loading=\"eager\"` + `fetchPriority=\"high\"` for priority (above-the-fold / LCP) images.\n * - Supports responsive `<picture>` with mobile source.\n * - Provides `aspectRatio` for CLS prevention.\n * - When `srcSetWidths` + `sizes` are set, emits a sized CDN `srcset`.\n */\nexport const Image = memo(function Image({\n src,\n alt,\n priority = false,\n aspectRatio,\n objectFit = 'cover',\n mobileSrc,\n mobileBreakpoint = 768,\n noWrapper = false,\n className = '',\n style,\n width,\n height,\n sizes,\n srcSet: srcSetProp,\n srcSetWidths,\n ...rest\n}: ImageProps) {\n if (!src) return null;\n\n const generatedSrcSet =\n srcSetProp || (srcSetWidths?.length ? getCdnImageSrcSet(src, srcSetWidths) : undefined);\n const generatedMobileSrcSet =\n srcSetWidths?.length && mobileSrc ? getCdnImageSrcSet(mobileSrc, srcSetWidths) : undefined;\n const cdnWidth = srcSetWidths?.length\n ? width != null && srcSetWidths.includes(Number(width))\n ? Number(width)\n : srcSetWidths[0]\n : width;\n // Width-only CDN URLs so `src` matches a srcset candidate for preload.\n const cdnOptions = generatedSrcSet ? { width: cdnWidth } : { width: cdnWidth, height };\n\n const optimizedSrc = getCdnImageUrl(src, cdnOptions);\n const optimizedMobileSrc = getCdnImageUrl(mobileSrc, cdnOptions);\n\n const objectFitClass = `object-${objectFit}`;\n const imgClasses = [className, objectFitClass].filter(Boolean).join(' ');\n\n const loadingProps: React.ImgHTMLAttributes<HTMLImageElement> = priority\n ? { loading: 'eager' as const, fetchPriority: 'high' as const, decoding: 'sync' as const }\n : { loading: 'lazy' as const, decoding: 'async' as const };\n\n const hasWrapper = !noWrapper && !!aspectRatio;\n\n const img = (\n <img\n src={optimizedSrc}\n alt={alt}\n className={imgClasses}\n width={width}\n height={height}\n sizes={sizes}\n srcSet={generatedSrcSet}\n // With a wrapper, `style` goes to the wrapper; otherwise it must land on the <img>.\n style={hasWrapper ? undefined : style}\n {...loadingProps}\n {...rest}\n />\n );\n\n const imgElement = optimizedMobileSrc ? (\n <picture>\n <source\n media={`(max-width: ${mobileBreakpoint}px)`}\n srcSet={generatedMobileSrcSet || optimizedMobileSrc}\n sizes={generatedMobileSrcSet ? sizes : undefined}\n />\n {img}\n </picture>\n ) : (\n img\n );\n\n if (!hasWrapper) {\n return imgElement;\n }\n\n return (\n <div className=\"relative overflow-hidden\" style={{ aspectRatio, ...style }}>\n {imgElement}\n </div>\n );\n});\n","import { Suspense, memo, use, type ReactNode } from 'react';\n\nexport interface DeferredDataProps<T> {\n promise: Promise<T> | T;\n fallback: ReactNode;\n children: (data: T) => ReactNode;\n}\n\nconst DEFERRED_KEY = Symbol.for('twilight.deferred');\n\ninterface DeferredState<T> {\n status: 'pending' | 'success' | 'error';\n value?: T;\n error?: unknown;\n}\n\nexport interface DeferredPromise<T> extends Promise<T> {\n [DEFERRED_KEY]?: DeferredState<T>;\n}\n\nconst seenPromises = typeof WeakSet !== 'undefined' ? new WeakSet() : null;\n\nfunction defer<T>(promise: Promise<T>): DeferredPromise<T> {\n const existing = (promise as DeferredPromise<T>)[DEFERRED_KEY];\n if (existing) return promise as DeferredPromise<T>;\n\n const state: DeferredState<T> = { status: 'pending' };\n\n const deferred = promise as DeferredPromise<T>;\n deferred[DEFERRED_KEY] = state;\n\n promise.then(\n (value) => {\n state.status = 'success';\n state.value = value;\n },\n (error) => {\n state.status = 'error';\n state.error = error;\n }\n );\n\n return deferred;\n}\n\nconst DeferredRenderer = memo(function DeferredRenderer<T>({\n promise,\n children,\n}: {\n promise: DeferredPromise<T>;\n children: (data: T) => ReactNode;\n}) {\n const state = promise[DEFERRED_KEY];\n\n if (state?.status === 'success') {\n return children(state.value!);\n }\n\n if (state?.status === 'error') {\n throw state.error;\n }\n\n const data = use(promise);\n return children(data);\n}) as <T>(props: { promise: DeferredPromise<T>; children: (data: T) => ReactNode }) => ReactNode;\n\nfunction DeferredFallback<T>({\n promise,\n fallback,\n children,\n}: {\n promise: DeferredPromise<T>;\n fallback: ReactNode;\n children: (data: T) => ReactNode;\n}) {\n const state = promise[DEFERRED_KEY];\n if (state?.status === 'success') {\n return children(state.value!);\n }\n return <>{fallback}</>;\n}\n\nexport function resolveDeferred<T>(\n promiseOrValue: Promise<T> | T | undefined\n): T | Promise<T> | undefined {\n if (promiseOrValue == null || !(promiseOrValue instanceof Promise)) return promiseOrValue;\n const deferred = defer(promiseOrValue);\n const state = deferred[DEFERRED_KEY];\n if (state?.status === 'success') return state.value as T;\n return promiseOrValue;\n}\n\nexport function DeferredData<T>({ promise, fallback, children }: DeferredDataProps<T>) {\n if (!(promise instanceof Promise)) {\n return children(promise);\n }\n\n if (seenPromises && promise instanceof Promise) seenPromises.add(promise);\n\n const deferred = defer(promise);\n const state = deferred[DEFERRED_KEY];\n\n if (state?.status === 'success') {\n return children(state.value!);\n }\n\n if (state?.status === 'error') {\n throw state.error;\n }\n\n return (\n <Suspense\n fallback={\n <DeferredFallback promise={deferred} fallback={fallback}>\n {children}\n </DeferredFallback>\n }\n >\n <DeferredRenderer promise={deferred}>{children}</DeferredRenderer>\n </Suspense>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Footer } from './chunk-YFQUSAET.js';
|
|
2
|
+
import { Header } from './chunk-3PWARKZX.js';
|
|
3
3
|
import { useDevSettingsOverrides } from './chunk-2JV6WZ6O.js';
|
|
4
4
|
import { resolveTwilightSdkUrl, TICKETING_SCRIPT_URL } from './chunk-22SH7OVF.js';
|
|
5
5
|
import { apps } from './chunk-ZVZGLEZ6.js';
|
|
@@ -8,28 +8,18 @@ import { applyThemeHookSlots, installAppScope } from './chunk-5G7NYNX6.js';
|
|
|
8
8
|
import { useLocation, useIsHome, NavigationInterceptor } from './chunk-6ZMNTJM3.js';
|
|
9
9
|
import { useUser } from './chunk-66K5P5ZX.js';
|
|
10
10
|
import { getActiveCurrency } from './chunk-QGOPTVV5.js';
|
|
11
|
-
import { useAsset } from './chunk-Z653O7MX.js';
|
|
12
11
|
import { DocumentClassProvider, useDocumentClass } from './chunk-JWXJPJBO.js';
|
|
13
12
|
import { useTranslation, I18nProvider } from './chunk-TYNZ5B2B.js';
|
|
14
13
|
import { WidgetHead } from './chunk-V2ZDTY6H.js';
|
|
15
14
|
import { HookSlot } from './chunk-5XDPAKF5.js';
|
|
16
15
|
import { hookRegistry } from './chunk-GCPEMNSU.js';
|
|
17
|
-
import { Image } from './chunk-5OB335IP.js';
|
|
18
|
-
import { Link } from './chunk-AXW67SY7.js';
|
|
19
|
-
import { LazyImageModal } from './chunk-7V5HOZW4.js';
|
|
20
16
|
import { Toaster } from './chunk-HIZ2SEJE.js';
|
|
21
17
|
import { isNativeApp } from './chunk-6N33IKYP.js';
|
|
22
18
|
import { whenSallaLoaded, AUTH_TOKEN_COOKIE_NAME, rememberDevStoreId, clearAuthTokenCookie, whenSallaReady, onSallaEvent, syncSdkLocale, syncScopeCookie, escapeForInlineScript } from './chunk-HSWRYXC7.js';
|
|
23
|
-
import { getTwilightContext, updateTwilightContext } from './chunk-N2S25NXP.js';
|
|
19
|
+
import { getTwilightContext, subscribeTwilight, updateTwilightContext, hasTwilightSettings } from './chunk-N2S25NXP.js';
|
|
24
20
|
import { FALLBACK_LOCALE, getLanguageInfo } from './chunk-T72DAX7R.js';
|
|
25
21
|
import { useTwilight, TwilightContext } from './chunk-DF6FBKDN.js';
|
|
26
|
-
import React2, { lazy, Suspense, useEffect, useCallback, useMemo, useRef, useState, createElement } from 'react';
|
|
27
|
-
import { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';
|
|
28
|
-
import { SallaContacts } from '@salla.sa/twilight-components-react/contacts';
|
|
29
|
-
import { SallaMenu } from '@salla.sa/twilight-components-react/menu';
|
|
30
|
-
import { SallaPayments } from '@salla.sa/twilight-components-react/payments';
|
|
31
|
-
import { SallaSocial } from '@salla.sa/twilight-components-react/social';
|
|
32
|
-
import { SallaTrustBadges } from '@salla.sa/twilight-components-react/trust-badges';
|
|
22
|
+
import React2, { lazy, Suspense, useEffect, useCallback, useMemo, useRef, useState, useSyncExternalStore, createElement } from 'react';
|
|
33
23
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
34
24
|
import { useQuery } from '@tanstack/react-query';
|
|
35
25
|
|
|
@@ -72,12 +62,19 @@ function themeCssVars(theme) {
|
|
|
72
62
|
vars.push(["--page-height", "100%"]);
|
|
73
63
|
return vars;
|
|
74
64
|
}
|
|
65
|
+
var applied = /* @__PURE__ */ new Set();
|
|
75
66
|
function applyTheme(theme) {
|
|
76
67
|
if (typeof document === "undefined") return;
|
|
77
68
|
const root = document.documentElement;
|
|
78
|
-
|
|
69
|
+
const vars = themeCssVars(theme);
|
|
70
|
+
const next = new Set(vars.map(([prop]) => prop));
|
|
71
|
+
for (const prop of applied) {
|
|
72
|
+
if (!next.has(prop)) root.style.removeProperty(prop);
|
|
73
|
+
}
|
|
74
|
+
for (const [prop, val] of vars) {
|
|
79
75
|
root.style.setProperty(prop, val);
|
|
80
76
|
}
|
|
77
|
+
applied = next;
|
|
81
78
|
}
|
|
82
79
|
|
|
83
80
|
// src/providers/twilight-theme.ts
|
|
@@ -125,7 +122,7 @@ function ThemeDocumentSync({
|
|
|
125
122
|
}
|
|
126
123
|
|
|
127
124
|
// src/utils/engine-version.ts
|
|
128
|
-
var ENGINE_VERSION = "1.0.
|
|
125
|
+
var ENGINE_VERSION = "1.0.84" ;
|
|
129
126
|
|
|
130
127
|
// src/providers/twilight-init.ts
|
|
131
128
|
function getSalla() {
|
|
@@ -185,6 +182,7 @@ function seedSdkTranslations(sdk, settings, locale) {
|
|
|
185
182
|
}
|
|
186
183
|
}
|
|
187
184
|
var initializedSdks = /* @__PURE__ */ new WeakSet();
|
|
185
|
+
var EMPTY_STORE = {};
|
|
188
186
|
function useTwilightInit({
|
|
189
187
|
debug: _debug,
|
|
190
188
|
initialData,
|
|
@@ -196,19 +194,33 @@ function useTwilightInit({
|
|
|
196
194
|
const initialLanguage = getLanguageInfo(initialLocale);
|
|
197
195
|
const settingsData = initialData;
|
|
198
196
|
const [isReady, setReady] = useState(() => !!settingsData);
|
|
199
|
-
const
|
|
200
|
-
|
|
197
|
+
const settingsStore = settingsData?.store ?? EMPTY_STORE;
|
|
198
|
+
const [storePatch, setStorePatch] = useState(null);
|
|
199
|
+
const patch = storePatch?.base === settingsStore ? storePatch.patch : null;
|
|
200
|
+
const storeData = useMemo(
|
|
201
|
+
() => patch ? { ...settingsStore, ...patch } : settingsStore,
|
|
202
|
+
[settingsStore, patch]
|
|
203
|
+
);
|
|
204
|
+
const setStoreData = useCallback(
|
|
205
|
+
(action) => setStorePatch((prev) => {
|
|
206
|
+
const prevPatch = prev?.base === settingsStore ? prev.patch : null;
|
|
207
|
+
return {
|
|
208
|
+
base: settingsStore,
|
|
209
|
+
patch: typeof action === "function" ? action({ ...settingsStore, ...prevPatch }) : action
|
|
210
|
+
};
|
|
211
|
+
}),
|
|
212
|
+
[settingsStore]
|
|
201
213
|
);
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
if (
|
|
214
|
+
const settingsTheme = settingsData?.theme;
|
|
215
|
+
const baseTheme = useMemo(() => {
|
|
216
|
+
if (settingsTheme) {
|
|
205
217
|
return {
|
|
206
|
-
...
|
|
207
|
-
is_rtl:
|
|
218
|
+
...settingsTheme,
|
|
219
|
+
is_rtl: settingsTheme.is_rtl ?? initialLanguage.dir === "rtl"
|
|
208
220
|
};
|
|
209
221
|
}
|
|
210
222
|
return { is_rtl: initialLanguage.dir === "rtl" };
|
|
211
|
-
});
|
|
223
|
+
}, [settingsTheme, initialLanguage.dir]);
|
|
212
224
|
const devOverrides = useDevSettingsOverrides();
|
|
213
225
|
const themeData = useMemo(() => {
|
|
214
226
|
if (import.meta.env.DEV && devOverrides.enabled) {
|
|
@@ -315,7 +327,7 @@ var navigationSetups = {
|
|
|
315
327
|
};
|
|
316
328
|
var routeDocumentSyncs = {
|
|
317
329
|
tanstack: lazy(
|
|
318
|
-
() => import('./document-class-
|
|
330
|
+
() => import('./document-class-SD6BUMZN.js').then((m) => ({
|
|
319
331
|
default: m.TanStackDocumentSync
|
|
320
332
|
}))
|
|
321
333
|
)
|
|
@@ -837,7 +849,7 @@ var LazySiftSnippet = lazy(
|
|
|
837
849
|
() => import('./SiftSnippet-5FCU6TR6.js').then((m) => ({ default: m.SiftSnippet }))
|
|
838
850
|
);
|
|
839
851
|
var LazyStoreClosedNotification = lazy(
|
|
840
|
-
() => import('./StoreClosedNotification-
|
|
852
|
+
() => import('./StoreClosedNotification-MINBJOGZ.js').then((m) => ({
|
|
841
853
|
default: m.StoreClosedNotification
|
|
842
854
|
}))
|
|
843
855
|
);
|
|
@@ -916,115 +928,6 @@ function registerDefaultHooks() {
|
|
|
916
928
|
hookRegistry.register("cart:items.start", preOrderNotificationHandler, 100);
|
|
917
929
|
}
|
|
918
930
|
registerDefaultHooks();
|
|
919
|
-
function Footer() {
|
|
920
|
-
const { store, theme } = useTwilight();
|
|
921
|
-
const { cdn } = useAsset();
|
|
922
|
-
const { t } = useTranslation();
|
|
923
|
-
const [isTaxModalOpen, setIsTaxModalOpen] = useState(false);
|
|
924
|
-
const [taxImageSrc, setTaxImageSrc] = useState("");
|
|
925
|
-
const handleTaxImageClick = (event) => {
|
|
926
|
-
event.preventDefault();
|
|
927
|
-
const modalId = event.currentTarget.dataset.modalId;
|
|
928
|
-
const modal = document.getElementById(modalId || "");
|
|
929
|
-
const img = modal?.querySelector("img");
|
|
930
|
-
const imgSrc = img?.dataset.src;
|
|
931
|
-
if (imgSrc) {
|
|
932
|
-
setTaxImageSrc(imgSrc);
|
|
933
|
-
setIsTaxModalOpen(true);
|
|
934
|
-
}
|
|
935
|
-
};
|
|
936
|
-
return /* @__PURE__ */ jsxs("footer", { className: "store-footer", suppressHydrationWarning: true, children: [
|
|
937
|
-
/* @__PURE__ */ jsx(HookSlot, { name: "footer:start" }),
|
|
938
|
-
/* @__PURE__ */ jsx("div", { "aria-label": "footer", className: "store-footer__inner", children: /* @__PURE__ */ jsxs("div", { className: "container grid grid-cols-1 lg:grid-cols-6 gap-8 lg:gap-6", children: [
|
|
939
|
-
/* @__PURE__ */ jsxs("div", { className: "lg:col-span-2 rtl:lg:pl-20 ltr:lg:pr-20", children: [
|
|
940
|
-
/* @__PURE__ */ jsx(Link, { to: "/", className: "flex items-center m-0", children: /* @__PURE__ */ jsx("h3", { children: store.name }) }),
|
|
941
|
-
store.description && /* @__PURE__ */ jsx(
|
|
942
|
-
"div",
|
|
943
|
-
{
|
|
944
|
-
className: "max-w-sm leading-6 mb-6",
|
|
945
|
-
dangerouslySetInnerHTML: { __html: store.description }
|
|
946
|
-
}
|
|
947
|
-
),
|
|
948
|
-
/* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx(SallaSocial, { className: "block mb-6" }) }),
|
|
949
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
|
|
950
|
-
/* @__PURE__ */ jsx(SallaTrustBadges, { ...theme.settings?.footer_is_dark ? { dark: true } : {} }),
|
|
951
|
-
store.settings?.tax?.number && /* @__PURE__ */ jsxs("div", { className: "flex rtl:space-x-reverse space-x-2 items-end", children: [
|
|
952
|
-
store.settings?.tax?.certificate && /* @__PURE__ */ jsx(
|
|
953
|
-
"a",
|
|
954
|
-
{
|
|
955
|
-
"data-modal-id": "modal-value-tax",
|
|
956
|
-
href: "#/",
|
|
957
|
-
"aria-label": store.settings?.tax?.number,
|
|
958
|
-
onClick: handleTaxImageClick,
|
|
959
|
-
children: /* @__PURE__ */ jsx(
|
|
960
|
-
"img",
|
|
961
|
-
{
|
|
962
|
-
width: 40,
|
|
963
|
-
height: 40,
|
|
964
|
-
src: cdn("/images/placeholder.png"),
|
|
965
|
-
className: "w-10 rounded-sm hover:opacity-80 transition-opacity",
|
|
966
|
-
alt: "value added tax",
|
|
967
|
-
loading: "lazy",
|
|
968
|
-
decoding: "async"
|
|
969
|
-
}
|
|
970
|
-
)
|
|
971
|
-
}
|
|
972
|
-
),
|
|
973
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
974
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-text-grey mb-1", children: t("common.elements.tax_number", "Tax Number") }),
|
|
975
|
-
/* @__PURE__ */ jsx("b", { className: "text-sm", children: store.settings?.tax?.number })
|
|
976
|
-
] })
|
|
977
|
-
] })
|
|
978
|
-
] })
|
|
979
|
-
] }),
|
|
980
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
981
|
-
/* @__PURE__ */ jsx("h3", { children: t("blocks.footer.pages_links", "Important Links") }),
|
|
982
|
-
/* @__PURE__ */ jsx(SallaMenu, { source: "footer" })
|
|
983
|
-
] }),
|
|
984
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
985
|
-
/* @__PURE__ */ jsx(
|
|
986
|
-
SallaContacts,
|
|
987
|
-
{
|
|
988
|
-
contacts: store.contacts,
|
|
989
|
-
contactsTitle: t("blocks.footer.social", "Stay in touch")
|
|
990
|
-
}
|
|
991
|
-
),
|
|
992
|
-
/* @__PURE__ */ jsx("div", { className: "lg:hidden contact-social", children: /* @__PURE__ */ jsx(SallaSocial, {}) })
|
|
993
|
-
] }),
|
|
994
|
-
/* @__PURE__ */ jsx(
|
|
995
|
-
SallaAppsIcons,
|
|
996
|
-
{
|
|
997
|
-
apps: store.apps,
|
|
998
|
-
appsTitle: t("blocks.footer.download_apps", "Get our apps"),
|
|
999
|
-
className: "lg:col-span-2 rtl:lg:pr-20 ltr:lg:pl-20"
|
|
1000
|
-
}
|
|
1001
|
-
)
|
|
1002
|
-
] }) }),
|
|
1003
|
-
/* @__PURE__ */ jsxs("div", { className: "md:flex items-center justify-between py-4 container text-center", children: [
|
|
1004
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm copyright-text", children: /* @__PURE__ */ jsx(
|
|
1005
|
-
HookSlot,
|
|
1006
|
-
{
|
|
1007
|
-
name: "copyright",
|
|
1008
|
-
context: { storeName: store.name },
|
|
1009
|
-
fallback: /* @__PURE__ */ jsx(Copyright, { storeName: store.name })
|
|
1010
|
-
}
|
|
1011
|
-
) }),
|
|
1012
|
-
/* @__PURE__ */ jsx(SallaPayments, {})
|
|
1013
|
-
] }),
|
|
1014
|
-
/* @__PURE__ */ jsx("div", { id: "modal-value-tax", className: "hidden", children: /* @__PURE__ */ jsx(Image, { src: store.settings?.tax?.certificate || void 0, alt: "Tax Certificate" }) }),
|
|
1015
|
-
/* @__PURE__ */ jsx(
|
|
1016
|
-
LazyImageModal,
|
|
1017
|
-
{
|
|
1018
|
-
isOpen: isTaxModalOpen,
|
|
1019
|
-
onClose: () => setIsTaxModalOpen(false),
|
|
1020
|
-
src: taxImageSrc,
|
|
1021
|
-
alt: "Tax Certificate",
|
|
1022
|
-
title: t("common.elements.tax_certificate", "Tax Certificate")
|
|
1023
|
-
}
|
|
1024
|
-
),
|
|
1025
|
-
/* @__PURE__ */ jsx(HookSlot, { name: "footer:end" })
|
|
1026
|
-
] });
|
|
1027
|
-
}
|
|
1028
931
|
var SallaLoginModal = lazy(
|
|
1029
932
|
() => import('@salla.sa/twilight-components-react/login-modal').then((m) => ({
|
|
1030
933
|
default: m.SallaLoginModal
|
|
@@ -1199,6 +1102,9 @@ var TWILIGHT_LOG_STYLES = {
|
|
|
1199
1102
|
label: "color: #7c3aed; font-weight: bold;",
|
|
1200
1103
|
value: "color: inherit;"
|
|
1201
1104
|
};
|
|
1105
|
+
function currentSettings() {
|
|
1106
|
+
return hasTwilightSettings() ? getTwilightContext().settings : void 0;
|
|
1107
|
+
}
|
|
1202
1108
|
function TwilightProvider({
|
|
1203
1109
|
children,
|
|
1204
1110
|
debug = false,
|
|
@@ -1215,11 +1121,7 @@ function TwilightProvider({
|
|
|
1215
1121
|
}) {
|
|
1216
1122
|
const ctx = getTwilightContext();
|
|
1217
1123
|
const initialLocale = ctx.locale || FALLBACK_LOCALE;
|
|
1218
|
-
|
|
1219
|
-
try {
|
|
1220
|
-
initialData = ctx.settings;
|
|
1221
|
-
} catch {
|
|
1222
|
-
}
|
|
1124
|
+
const initialData = useSyncExternalStore(subscribeTwilight, currentSettings, currentSettings);
|
|
1223
1125
|
const [authToken, setAuthToken] = useState(() => {
|
|
1224
1126
|
if (typeof window !== "undefined") {
|
|
1225
1127
|
return ctx.authToken ?? window.localStorage.getItem(AUTH_TOKEN_COOKIE_NAME);
|
|
@@ -1447,6 +1349,6 @@ function useStore() {
|
|
|
1447
1349
|
return { ...store, refresh };
|
|
1448
1350
|
}
|
|
1449
1351
|
|
|
1450
|
-
export {
|
|
1451
|
-
//# sourceMappingURL=chunk-
|
|
1452
|
-
//# sourceMappingURL=chunk-
|
|
1352
|
+
export { MasterLayout, TwilightProvider, fastCheckoutScript, registerDefaultHooks, registerDocumentSync, routeDocumentSyncs, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore };
|
|
1353
|
+
//# sourceMappingURL=chunk-EFF2WO6W.js.map
|
|
1354
|
+
//# sourceMappingURL=chunk-EFF2WO6W.js.map
|