@salla.sa/twilight-theme-engine 1.0.93 → 1.0.94
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-S74M3KJH.js → AddToCartForm-MASXVJOI.js} +3 -3
- package/dist/{AddToCartForm-S74M3KJH.js.map → AddToCartForm-MASXVJOI.js.map} +1 -1
- package/dist/{BlogAuthorPage-IYNLHM3D.js → BlogAuthorPage-KRT7MRTC.js} +7 -7
- package/dist/{BlogAuthorPage-IYNLHM3D.js.map → BlogAuthorPage-KRT7MRTC.js.map} +1 -1
- package/dist/{BlogCategoryPage-WHJLTBFR.js → BlogCategoryPage-OP3ETAMT.js} +7 -7
- package/dist/{BlogCategoryPage-WHJLTBFR.js.map → BlogCategoryPage-OP3ETAMT.js.map} +1 -1
- package/dist/{BlogPage-QFJHI6P4.js → BlogPage-RGAQVUDI.js} +6 -6
- package/dist/{BlogPage-QFJHI6P4.js.map → BlogPage-RGAQVUDI.js.map} +1 -1
- package/dist/{BlogSinglePage-ROXUFVN7.js → BlogSinglePage-VG4UXBTL.js} +6 -6
- package/dist/{BlogSinglePage-ROXUFVN7.js.map → BlogSinglePage-VG4UXBTL.js.map} +1 -1
- package/dist/{BlogTagPage-QOQYJAZK.js → BlogTagPage-G4IVHJD5.js} +7 -7
- package/dist/{BlogTagPage-QOQYJAZK.js.map → BlogTagPage-G4IVHJD5.js.map} +1 -1
- package/dist/{BrandsPage-Q5KIKCS6.js → BrandsPage-2JMPPOOU.js} +6 -6
- package/dist/{BrandsPage-Q5KIKCS6.js.map → BrandsPage-2JMPPOOU.js.map} +1 -1
- package/dist/{Breadcrumb-AE4O67KU.js → Breadcrumb-I3ZOGG2Y.js} +6 -6
- package/dist/{Breadcrumb-AE4O67KU.js.map → Breadcrumb-I3ZOGG2Y.js.map} +1 -1
- package/dist/{CartItem-OIJ3U3HJ.js → CartItem-YTPYETW6.js} +6 -6
- package/dist/{CartItem-OIJ3U3HJ.js.map → CartItem-YTPYETW6.js.map} +1 -1
- package/dist/{CartSummary-FZEH2QD3.js → CartSummary-DND7BO26.js} +6 -6
- package/dist/{CartSummary-FZEH2QD3.js.map → CartSummary-DND7BO26.js.map} +1 -1
- package/dist/{Copyright-N2UG6NNX.js → Copyright-RWML3BQV.js} +3 -3
- package/dist/{Copyright-N2UG6NNX.js.map → Copyright-RWML3BQV.js.map} +1 -1
- package/dist/{CustomerLayout-WWI6V56Q.js → CustomerLayout-HCYVBODI.js} +6 -6
- package/dist/{CustomerLayout-WWI6V56Q.js.map → CustomerLayout-HCYVBODI.js.map} +1 -1
- package/dist/{Footer-BILG7UOY.js → Footer-3GEKWEQD.js} +4 -4
- package/dist/{Footer-BILG7UOY.js.map → Footer-3GEKWEQD.js.map} +1 -1
- package/dist/{Header-ODLQT5I6.js → Header-QG4UO3MF.js} +4 -4
- package/dist/{Header-ODLQT5I6.js.map → Header-QG4UO3MF.js.map} +1 -1
- package/dist/{LoyaltyPage-UVWC5UIH.js → LoyaltyPage-ZMFYQMQY.js} +6 -6
- package/dist/{LoyaltyPage-UVWC5UIH.js.map → LoyaltyPage-ZMFYQMQY.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-2NFWJMFC.js → LoyaltyPointsPage-5PB6IFLY.js} +3 -3
- package/dist/{LoyaltyPointsPage-2NFWJMFC.js.map → LoyaltyPointsPage-5PB6IFLY.js.map} +1 -1
- package/dist/{MainMenu-3RVCNA4E.js → MainMenu-SAUMNMBF.js} +3 -3
- package/dist/{MainMenu-3RVCNA4E.js.map → MainMenu-SAUMNMBF.js.map} +1 -1
- package/dist/{MasterLayout-SI4JKGRR.js → MasterLayout-TY223YR7.js} +6 -6
- package/dist/{MasterLayout-SI4JKGRR.js.map → MasterLayout-TY223YR7.js.map} +1 -1
- package/dist/{MobileMenu-QROSE4PJ.js → MobileMenu-2WOWOFQB.js} +6 -6
- package/dist/{MobileMenu-QROSE4PJ.js.map → MobileMenu-2WOWOFQB.js.map} +1 -1
- package/dist/{NotificationsPage-V5OC6UIT.js → NotificationsPage-6FX4SOZU.js} +6 -6
- package/dist/{NotificationsPage-V5OC6UIT.js.map → NotificationsPage-6FX4SOZU.js.map} +1 -1
- package/dist/{OrderSinglePage-GUA5GH3N.js → OrderSinglePage-RUMSJIFD.js} +6 -6
- package/dist/{OrderSinglePage-GUA5GH3N.js.map → OrderSinglePage-RUMSJIFD.js.map} +1 -1
- package/dist/{OrdersPage-W23QNIRH.js → OrdersPage-B4Q4QIEM.js} +6 -6
- package/dist/{OrdersPage-W23QNIRH.js.map → OrdersPage-B4Q4QIEM.js.map} +1 -1
- package/dist/{PageSingle-HOQXGN3U.js → PageSingle-F4TDNKUM.js} +3 -3
- package/dist/{PageSingle-HOQXGN3U.js.map → PageSingle-F4TDNKUM.js.map} +1 -1
- package/dist/{ProductDetails-6BRTZY7H.js → ProductDetails-BNVVUDBH.js} +3 -3
- package/dist/{ProductDetails-6BRTZY7H.js.map → ProductDetails-BNVVUDBH.js.map} +1 -1
- package/dist/{ProfilePage-Q5FVFGWG.js → ProfilePage-OJSAXSC2.js} +6 -6
- package/dist/{ProfilePage-Q5FVFGWG.js.map → ProfilePage-OJSAXSC2.js.map} +1 -1
- package/dist/{ReviewsPage-LOUU4WD6.js → ReviewsPage-3IJKJKTY.js} +3 -3
- package/dist/{ReviewsPage-LOUU4WD6.js.map → ReviewsPage-3IJKJKTY.js.map} +1 -1
- package/dist/{SeoCartWidget-LWFHKRRO.js → SeoCartWidget-4PN2DW54.js} +6 -6
- package/dist/{SeoCartWidget-LWFHKRRO.js.map → SeoCartWidget-4PN2DW54.js.map} +1 -1
- package/dist/{SettingsPage-44QZUHLI.js → SettingsPage-BCRNV4GU.js} +6 -6
- package/dist/{SettingsPage-44QZUHLI.js.map → SettingsPage-BCRNV4GU.js.map} +1 -1
- package/dist/{StoreClosedNotification-EEIU2YWM.js → StoreClosedNotification-IRUTRLIH.js} +7 -7
- package/dist/{StoreClosedNotification-EEIU2YWM.js.map → StoreClosedNotification-IRUTRLIH.js.map} +1 -1
- package/dist/{TestimonialsPage-YI4FC5E5.js → TestimonialsPage-YU4PLOLR.js} +3 -3
- package/dist/{TestimonialsPage-YI4FC5E5.js.map → TestimonialsPage-YU4PLOLR.js.map} +1 -1
- package/dist/{ThankYouPage-4C2GGIO7.js → ThankYouPage-MUDELEIQ.js} +6 -6
- package/dist/{ThankYouPage-4C2GGIO7.js.map → ThankYouPage-MUDELEIQ.js.map} +1 -1
- package/dist/{WalletPage-5NGE6GQX.js → WalletPage-2I4KTR5E.js} +6 -6
- package/dist/{WalletPage-5NGE6GQX.js.map → WalletPage-2I4KTR5E.js.map} +1 -1
- package/dist/{WishlistPage-AVLNE2CB.js → WishlistPage-7AYL3RUD.js} +6 -6
- package/dist/{WishlistPage-AVLNE2CB.js.map → WishlistPage-7AYL3RUD.js.map} +1 -1
- package/dist/{chunk-AG5KE4WD.js → chunk-AV6AAVNU.js} +4 -4
- package/dist/{chunk-AG5KE4WD.js.map → chunk-AV6AAVNU.js.map} +1 -1
- package/dist/{chunk-NQUZ3IME.js → chunk-H7CVJFTK.js} +7 -7
- package/dist/{chunk-NQUZ3IME.js.map → chunk-H7CVJFTK.js.map} +1 -1
- package/dist/{chunk-T5U73NRX.js → chunk-HR3QJ3LW.js} +3 -3
- package/dist/{chunk-T5U73NRX.js.map → chunk-HR3QJ3LW.js.map} +1 -1
- package/dist/chunk-KZM7HXJ3.js +14 -0
- package/dist/{chunk-QHE3C4NU.js.map → chunk-KZM7HXJ3.js.map} +1 -1
- package/dist/{chunk-XCI2KDMK.js → chunk-LA7KZ2XY.js} +6 -6
- package/dist/{chunk-XCI2KDMK.js.map → chunk-LA7KZ2XY.js.map} +1 -1
- package/dist/{chunk-GOQZVW5O.js → chunk-OM26SAHA.js} +4 -4
- package/dist/{chunk-GOQZVW5O.js.map → chunk-OM26SAHA.js.map} +1 -1
- package/dist/{chunk-KCXOYLFK.js → chunk-OMKLPCBA.js} +3 -3
- package/dist/{chunk-KCXOYLFK.js.map → chunk-OMKLPCBA.js.map} +1 -1
- package/dist/{chunk-VPFBG3HF.js → chunk-RPDMNNRW.js} +7 -7
- package/dist/{chunk-VPFBG3HF.js.map → chunk-RPDMNNRW.js.map} +1 -1
- package/dist/{chunk-B373WMX6.js → chunk-TJF6YZ5I.js} +4 -4
- package/dist/{chunk-B373WMX6.js.map → chunk-TJF6YZ5I.js.map} +1 -1
- package/dist/{chunk-OZC7HYOU.js → chunk-WHJZP3QJ.js} +5 -5
- package/dist/{chunk-OZC7HYOU.js.map → chunk-WHJZP3QJ.js.map} +1 -1
- package/dist/{chunk-YKLDXH5S.js → chunk-Y357MBJI.js} +3 -3
- package/dist/{chunk-YKLDXH5S.js.map → chunk-Y357MBJI.js.map} +1 -1
- package/dist/{chunk-IT74HLW3.js → chunk-YDFOJBEY.js} +19 -3
- package/dist/chunk-YDFOJBEY.js.map +1 -0
- package/dist/{chunk-6TZ3SO3Y.js → chunk-ZFNLX3F7.js} +3 -3
- package/dist/{chunk-6TZ3SO3Y.js.map → chunk-ZFNLX3F7.js.map} +1 -1
- 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 +6 -6
- 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-FIGA7FZI.js → document-class-AJGI7GKJ.js} +3 -3
- package/dist/{document-class-FIGA7FZI.js.map → document-class-AJGI7GKJ.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-EIWVYG7Z.js → not-found-NK6ZFJ7H.js} +6 -6
- package/dist/{not-found-EIWVYG7Z.js.map → not-found-NK6ZFJ7H.js.map} +1 -1
- package/dist/providers/index.js +4 -4
- package/dist/routes/account/orders.js +1 -1
- package/dist/routes/account.js +6 -6
- package/dist/routes/blog.js +5 -5
- package/dist/routes/brands.js +1 -1
- package/dist/routes/cart.js +8 -8
- package/dist/routes/home.js +7 -7
- package/dist/routes/loyalty.js +2 -2
- package/dist/routes/page.js +1 -1
- package/dist/routes/product-listing.js +6 -6
- package/dist/routes/product.js +6 -6
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +1 -1
- package/dist/skeleton.js +7 -7
- package/dist/tanstack.js +1 -1
- package/package.json +1 -1
- package/tailwind/components/layout/Footer.tsx.txt +24 -3
- package/dist/chunk-IT74HLW3.js.map +0 -1
- package/dist/chunk-QHE3C4NU.js +0 -14
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-
|
|
1
|
+
export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-ZFNLX3F7.js';
|
|
2
2
|
import './chunk-Z4Y55HWX.js';
|
|
3
3
|
import './chunk-N2A72R2I.js';
|
|
4
4
|
import './chunk-MKVCFBVF.js';
|
|
@@ -24,5 +24,5 @@ import './chunk-N2S25NXP.js';
|
|
|
24
24
|
import './chunk-T72DAX7R.js';
|
|
25
25
|
import './chunk-DF6FBKDN.js';
|
|
26
26
|
import './chunk-DGUM43GV.js';
|
|
27
|
-
//# sourceMappingURL=document-class-
|
|
28
|
-
//# sourceMappingURL=document-class-
|
|
27
|
+
//# sourceMappingURL=document-class-AJGI7GKJ.js.map
|
|
28
|
+
//# sourceMappingURL=document-class-AJGI7GKJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-AJGI7GKJ.js"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { registerDefaultHooks, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { registerDefaultHooks, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore } from '../chunk-RPDMNNRW.js';
|
|
2
|
+
import '../chunk-WHJZP3QJ.js';
|
|
3
|
+
import '../chunk-YDFOJBEY.js';
|
|
4
4
|
import '../chunk-SFZ7IIWL.js';
|
|
5
5
|
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
@@ -32,7 +32,7 @@ export { HookSlot, useIsClient } from '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
export { HookRegistry, defineHooks, hookRegistry } from '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-OMKLPCBA.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
37
|
import '../chunk-BYMOPN2S.js';
|
|
38
38
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/hooks/useGtm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { useGtm } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { useGtm } from '../chunk-RPDMNNRW.js';
|
|
2
|
+
import '../chunk-WHJZP3QJ.js';
|
|
3
|
+
import '../chunk-YDFOJBEY.js';
|
|
4
4
|
import '../chunk-SFZ7IIWL.js';
|
|
5
5
|
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
@@ -32,7 +32,7 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-OMKLPCBA.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
37
|
import '../chunk-BYMOPN2S.js';
|
|
38
38
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/hooks/useMoney.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { useMoney } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { useMoney } from '../chunk-RPDMNNRW.js';
|
|
2
|
+
import '../chunk-WHJZP3QJ.js';
|
|
3
|
+
import '../chunk-YDFOJBEY.js';
|
|
4
4
|
import '../chunk-SFZ7IIWL.js';
|
|
5
5
|
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
@@ -32,7 +32,7 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-OMKLPCBA.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
37
|
import '../chunk-BYMOPN2S.js';
|
|
38
38
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/hooks/useStore.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { useStore } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { useStore } from '../chunk-RPDMNNRW.js';
|
|
2
|
+
import '../chunk-WHJZP3QJ.js';
|
|
3
|
+
import '../chunk-YDFOJBEY.js';
|
|
4
4
|
import '../chunk-SFZ7IIWL.js';
|
|
5
5
|
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
@@ -32,7 +32,7 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-OMKLPCBA.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
37
|
import '../chunk-BYMOPN2S.js';
|
|
38
38
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { registry } from './chunk-Y32RHCOH.js';
|
|
2
2
|
export { ComponentRegistry, registry } from './chunk-Y32RHCOH.js';
|
|
3
|
-
export { TwilightProvider } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
export { TwilightProvider } from './chunk-RPDMNNRW.js';
|
|
4
|
+
import './chunk-WHJZP3QJ.js';
|
|
5
|
+
import './chunk-YDFOJBEY.js';
|
|
6
6
|
import './chunk-SFZ7IIWL.js';
|
|
7
7
|
import './chunk-2JV6WZ6O.js';
|
|
8
8
|
import './chunk-RV54D2D7.js';
|
|
@@ -34,7 +34,7 @@ import './chunk-5XDPAKF5.js';
|
|
|
34
34
|
import './chunk-GCPEMNSU.js';
|
|
35
35
|
import './chunk-QGOPTVV5.js';
|
|
36
36
|
import './chunk-TYNZ5B2B.js';
|
|
37
|
-
import './chunk-
|
|
37
|
+
import './chunk-OMKLPCBA.js';
|
|
38
38
|
import './chunk-AXW67SY7.js';
|
|
39
39
|
import './chunk-BYMOPN2S.js';
|
|
40
40
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { product } from './chunk-CEYT3JER.js';
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
2
|
+
import './chunk-RPDMNNRW.js';
|
|
3
|
+
import './chunk-WHJZP3QJ.js';
|
|
4
|
+
import './chunk-YDFOJBEY.js';
|
|
5
5
|
import './chunk-SFZ7IIWL.js';
|
|
6
6
|
import './chunk-2JV6WZ6O.js';
|
|
7
7
|
import './chunk-RV54D2D7.js';
|
|
@@ -33,7 +33,7 @@ import { HookSlot } from './chunk-5XDPAKF5.js';
|
|
|
33
33
|
import './chunk-GCPEMNSU.js';
|
|
34
34
|
import './chunk-QGOPTVV5.js';
|
|
35
35
|
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
36
|
-
import { LazyErrorPage } from './chunk-
|
|
36
|
+
import { LazyErrorPage } from './chunk-OMKLPCBA.js';
|
|
37
37
|
import './chunk-AXW67SY7.js';
|
|
38
38
|
import './chunk-BYMOPN2S.js';
|
|
39
39
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -149,5 +149,5 @@ function NotFoundPage(props = {}) {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
export { NotFoundPage };
|
|
152
|
-
//# sourceMappingURL=not-found-
|
|
153
|
-
//# sourceMappingURL=not-found-
|
|
152
|
+
//# sourceMappingURL=not-found-NK6ZFJ7H.js.map
|
|
153
|
+
//# sourceMappingURL=not-found-NK6ZFJ7H.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-EIWVYG7Z.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** A product URL in the stores' \"new URLs\" format: `{sku}-{name}`, or `p{id}-{name}` without a SKU. */\nconst PRODUCT_KEY = /^([0-9A-Za-z]+)-./;\n\n/** The `{sku}` or `p{id}` key of `/{locale}/{sku}-{name}` or `/{sku}-{name}`, with that locale. */\nexport function parseProductKeyPath(pathname: string): { key: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n const hasLocale = segments.length === 2 && isLocale(segments[0]);\n if (!hasLocale && (segments.length !== 1 || isLocale(segments[0]))) return null;\n const key = segments[segments.length - 1].match(PRODUCT_KEY)?.[1];\n if (!key) return null;\n return hasLocale ? { key, locale: segments[0] } : { key };\n}\n\nfunction productKeyOf(url: string | undefined): string | undefined {\n try {\n const last = new URL(url ?? '').pathname.split('/').filter(Boolean).pop() ?? '';\n return last.match(PRODUCT_KEY)?.[1];\n } catch {\n return undefined;\n }\n}\n\n/** Like Laravel: `p{id}` is the id; anything else is a SKU, which only search can find. */\nasync function findByProductKey(key: string): Promise<number | null> {\n const id = key.match(/^p(\\d+)$/)?.[1];\n if (id) return Number(id);\n const { items } = await product.list({ source: 'search', keyword: key, perPage: 50 });\n const found = items.find((item) => productKeyOf(item.url) === key);\n return found ? Number(found.id) : null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product URL that matched no route, a short link (`/ar/lvXvzln`) or\n * a \"new URLs\" one (`/ar/1213asa-chocolate`), and replaces the URL with the\n * product's page. Returns `true` while a lookup is in flight (so the 404 isn't\n * flashed); settles to `false` when the path is neither or doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const shortLink = parseShortLinkPath(pathname);\n const productKey = parseProductKeyPath(pathname);\n const lookup = shortLink?.code ?? productKey?.key;\n const locale = shortLink?.locale ?? productKey?.locale;\n const isShortLink = !!shortLink;\n const [failed, setFailed] = useState<string | null>(null);\n\n useEffect(() => {\n if (!lookup) return;\n let cancelled = false;\n const productPath = isShortLink\n ? product\n .find(lookup)\n .then((found) => (found?.id ? `${slugFromProductUrl(found.url)}/p${found.id}` : null))\n : findByProductKey(lookup).then((id) => (id ? `-/p${id}` : null));\n productPath\n .then((path) => {\n if (cancelled) return;\n if (!path) return setFailed(lookup);\n navigate(`${locale ? `/${locale}` : ''}/${path}`, { replace: true });\n })\n .catch(() => !cancelled && setFailed(lookup));\n return () => {\n cancelled = true;\n };\n }, [lookup, isShortLink, locale, navigate]);\n\n return !!lookup && failed !== lookup;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) or \"new URLs\" link (`/ar/1213asa-name`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-NK6ZFJ7H.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** A product URL in the stores' \"new URLs\" format: `{sku}-{name}`, or `p{id}-{name}` without a SKU. */\nconst PRODUCT_KEY = /^([0-9A-Za-z]+)-./;\n\n/** The `{sku}` or `p{id}` key of `/{locale}/{sku}-{name}` or `/{sku}-{name}`, with that locale. */\nexport function parseProductKeyPath(pathname: string): { key: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n const hasLocale = segments.length === 2 && isLocale(segments[0]);\n if (!hasLocale && (segments.length !== 1 || isLocale(segments[0]))) return null;\n const key = segments[segments.length - 1].match(PRODUCT_KEY)?.[1];\n if (!key) return null;\n return hasLocale ? { key, locale: segments[0] } : { key };\n}\n\nfunction productKeyOf(url: string | undefined): string | undefined {\n try {\n const last = new URL(url ?? '').pathname.split('/').filter(Boolean).pop() ?? '';\n return last.match(PRODUCT_KEY)?.[1];\n } catch {\n return undefined;\n }\n}\n\n/** Like Laravel: `p{id}` is the id; anything else is a SKU, which only search can find. */\nasync function findByProductKey(key: string): Promise<number | null> {\n const id = key.match(/^p(\\d+)$/)?.[1];\n if (id) return Number(id);\n const { items } = await product.list({ source: 'search', keyword: key, perPage: 50 });\n const found = items.find((item) => productKeyOf(item.url) === key);\n return found ? Number(found.id) : null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product URL that matched no route, a short link (`/ar/lvXvzln`) or\n * a \"new URLs\" one (`/ar/1213asa-chocolate`), and replaces the URL with the\n * product's page. Returns `true` while a lookup is in flight (so the 404 isn't\n * flashed); settles to `false` when the path is neither or doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const shortLink = parseShortLinkPath(pathname);\n const productKey = parseProductKeyPath(pathname);\n const lookup = shortLink?.code ?? productKey?.key;\n const locale = shortLink?.locale ?? productKey?.locale;\n const isShortLink = !!shortLink;\n const [failed, setFailed] = useState<string | null>(null);\n\n useEffect(() => {\n if (!lookup) return;\n let cancelled = false;\n const productPath = isShortLink\n ? product\n .find(lookup)\n .then((found) => (found?.id ? `${slugFromProductUrl(found.url)}/p${found.id}` : null))\n : findByProductKey(lookup).then((id) => (id ? `-/p${id}` : null));\n productPath\n .then((path) => {\n if (cancelled) return;\n if (!path) return setFailed(lookup);\n navigate(`${locale ? `/${locale}` : ''}/${path}`, { replace: true });\n })\n .catch(() => !cancelled && setFailed(lookup));\n return () => {\n cancelled = true;\n };\n }, [lookup, isShortLink, locale, navigate]);\n\n return !!lookup && failed !== lookup;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) or \"new URLs\" link (`/ar/1213asa-name`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-RPDMNNRW.js';
|
|
2
|
+
import '../chunk-WHJZP3QJ.js';
|
|
3
|
+
import '../chunk-YDFOJBEY.js';
|
|
4
4
|
import '../chunk-SFZ7IIWL.js';
|
|
5
5
|
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
@@ -32,7 +32,7 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-OMKLPCBA.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
37
|
export { LinkProvider, LinkProviderError, createLinkWithAdapter, useLinkAdapter } from '../chunk-BYMOPN2S.js';
|
|
38
38
|
import '../chunk-SKLEJJ6M.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-
|
|
1
|
+
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-AV6AAVNU.js';
|
|
2
2
|
import '../../chunk-TEOVJ6WU.js';
|
|
3
3
|
import '../../chunk-4SZZPXM2.js';
|
|
4
4
|
import '../../chunk-JTOVO3ZU.js';
|
package/dist/routes/account.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { wallet } from '../chunk-HQAFPDJK.js';
|
|
2
|
-
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-
|
|
2
|
+
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-AV6AAVNU.js';
|
|
3
3
|
import '../chunk-TEOVJ6WU.js';
|
|
4
4
|
import { notification } from '../chunk-6OOTDFC7.js';
|
|
5
5
|
import { wishlist } from '../chunk-UURVAJ42.js';
|
|
@@ -30,7 +30,7 @@ async function profileLoader(_ctx) {
|
|
|
30
30
|
|
|
31
31
|
// src/routes/account/profile/index.tsx
|
|
32
32
|
var LazyProfilePage = lazy(
|
|
33
|
-
() => import('../ProfilePage-
|
|
33
|
+
() => import('../ProfilePage-OJSAXSC2.js').then((m) => ({ default: m.ProfilePage }))
|
|
34
34
|
);
|
|
35
35
|
var ProfilePage = LazyProfilePage;
|
|
36
36
|
var Profile = {
|
|
@@ -72,7 +72,7 @@ async function wishlistLoader(ctx) {
|
|
|
72
72
|
|
|
73
73
|
// src/routes/account/wishlist/index.tsx
|
|
74
74
|
var LazyWishlistPage = lazy(
|
|
75
|
-
() => import('../WishlistPage-
|
|
75
|
+
() => import('../WishlistPage-7AYL3RUD.js').then((m) => ({ default: m.WishlistPage }))
|
|
76
76
|
);
|
|
77
77
|
var WishlistPage = LazyWishlistPage;
|
|
78
78
|
var Wishlist = {
|
|
@@ -114,7 +114,7 @@ async function walletLoader(ctx) {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
// src/routes/account/wallet/index.tsx
|
|
117
|
-
var LazyWalletPage = lazy(() => import('../WalletPage-
|
|
117
|
+
var LazyWalletPage = lazy(() => import('../WalletPage-2I4KTR5E.js').then((m) => ({ default: m.WalletPage })));
|
|
118
118
|
var WalletPage = LazyWalletPage;
|
|
119
119
|
var Wallet = {
|
|
120
120
|
id: RouteId.CUSTOMER_WALLET,
|
|
@@ -150,7 +150,7 @@ async function notificationsLoader(_ctx) {
|
|
|
150
150
|
|
|
151
151
|
// src/routes/account/notifications/index.tsx
|
|
152
152
|
var LazyNotificationsPage = lazy(
|
|
153
|
-
() => import('../NotificationsPage-
|
|
153
|
+
() => import('../NotificationsPage-6FX4SOZU.js').then((m) => ({ default: m.NotificationsPage }))
|
|
154
154
|
);
|
|
155
155
|
var NotificationsPage = LazyNotificationsPage;
|
|
156
156
|
var Notifications = {
|
|
@@ -183,7 +183,7 @@ async function settingsLoader(_ctx) {
|
|
|
183
183
|
|
|
184
184
|
// src/routes/account/settings/index.tsx
|
|
185
185
|
var LazySettingsPage = lazy(
|
|
186
|
-
() => import('../SettingsPage-
|
|
186
|
+
() => import('../SettingsPage-BCRNV4GU.js').then((m) => ({ default: m.SettingsPage }))
|
|
187
187
|
);
|
|
188
188
|
var SettingsPage = LazySettingsPage;
|
|
189
189
|
var Settings = {
|
package/dist/routes/blog.js
CHANGED
|
@@ -144,18 +144,18 @@ async function blogTagLoader({
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
// src/routes/blog/index.tsx
|
|
147
|
-
var LazyBlogPage = lazy(() => import('../BlogPage-
|
|
147
|
+
var LazyBlogPage = lazy(() => import('../BlogPage-RGAQVUDI.js').then((m) => ({ default: m.BlogPage })));
|
|
148
148
|
var LazyBlogSinglePage = lazy(
|
|
149
|
-
() => import('../BlogSinglePage-
|
|
149
|
+
() => import('../BlogSinglePage-VG4UXBTL.js').then((m) => ({ default: m.BlogSinglePage }))
|
|
150
150
|
);
|
|
151
151
|
var LazyBlogAuthorPage = lazy(
|
|
152
|
-
() => import('../BlogAuthorPage-
|
|
152
|
+
() => import('../BlogAuthorPage-KRT7MRTC.js').then((m) => ({ default: m.BlogAuthorPage }))
|
|
153
153
|
);
|
|
154
154
|
var LazyBlogCategoryPage = lazy(
|
|
155
|
-
() => import('../BlogCategoryPage-
|
|
155
|
+
() => import('../BlogCategoryPage-OP3ETAMT.js').then((m) => ({ default: m.BlogCategoryPage }))
|
|
156
156
|
);
|
|
157
157
|
var LazyBlogTagPage = lazy(
|
|
158
|
-
() => import('../BlogTagPage-
|
|
158
|
+
() => import('../BlogTagPage-G4IVHJD5.js').then((m) => ({ default: m.BlogTagPage }))
|
|
159
159
|
);
|
|
160
160
|
var BlogPage = LazyBlogPage;
|
|
161
161
|
var BlogSinglePage = LazyBlogSinglePage;
|
package/dist/routes/brands.js
CHANGED
|
@@ -23,7 +23,7 @@ async function brandsLoader() {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
// src/routes/brands/index.tsx
|
|
26
|
-
var LazyBrandsPage = lazy(() => import('../BrandsPage-
|
|
26
|
+
var LazyBrandsPage = lazy(() => import('../BrandsPage-2JMPPOOU.js').then((m) => ({ default: m.BrandsPage })));
|
|
27
27
|
var BrandsPage = LazyBrandsPage;
|
|
28
28
|
async function brandsLoaderWithExtend(_ctx, extend) {
|
|
29
29
|
const data = await brandsLoader();
|
package/dist/routes/cart.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { cart } from '../chunk-HCA2TE4G.js';
|
|
2
2
|
import { loyalty } from '../chunk-3MIFT4VQ.js';
|
|
3
3
|
import { CartSkeleton } from '../chunk-N7CCSGZF.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-Y357MBJI.js';
|
|
5
|
+
import '../chunk-TJF6YZ5I.js';
|
|
6
6
|
import '../chunk-FZYR4BA2.js';
|
|
7
7
|
import '../chunk-CEYT3JER.js';
|
|
8
|
-
import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-
|
|
9
|
-
import '../chunk-
|
|
8
|
+
import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-KZM7HXJ3.js';
|
|
9
|
+
import '../chunk-LA7KZ2XY.js';
|
|
10
10
|
import '../chunk-Y32RHCOH.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-RPDMNNRW.js';
|
|
12
|
+
import '../chunk-WHJZP3QJ.js';
|
|
13
|
+
import '../chunk-YDFOJBEY.js';
|
|
14
14
|
import '../chunk-SFZ7IIWL.js';
|
|
15
15
|
import '../chunk-2JV6WZ6O.js';
|
|
16
16
|
import '../chunk-RV54D2D7.js';
|
|
@@ -42,7 +42,7 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
42
42
|
import '../chunk-GCPEMNSU.js';
|
|
43
43
|
import '../chunk-QGOPTVV5.js';
|
|
44
44
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
45
|
-
import { LazyBreadcrumb, LazyNoContent } from '../chunk-
|
|
45
|
+
import { LazyBreadcrumb, LazyNoContent } from '../chunk-OMKLPCBA.js';
|
|
46
46
|
import '../chunk-AXW67SY7.js';
|
|
47
47
|
import '../chunk-BYMOPN2S.js';
|
|
48
48
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/routes/home.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { Home, HomeSkeleton, homeLoader } from '../chunk-
|
|
2
|
-
export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-
|
|
1
|
+
export { Home, HomeSkeleton, homeLoader } from '../chunk-Y357MBJI.js';
|
|
2
|
+
export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-TJF6YZ5I.js';
|
|
3
3
|
import '../chunk-FZYR4BA2.js';
|
|
4
4
|
import '../chunk-CEYT3JER.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-LA7KZ2XY.js';
|
|
6
6
|
import '../chunk-Y32RHCOH.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-RPDMNNRW.js';
|
|
8
|
+
import '../chunk-WHJZP3QJ.js';
|
|
9
|
+
import '../chunk-YDFOJBEY.js';
|
|
10
10
|
import '../chunk-SFZ7IIWL.js';
|
|
11
11
|
import '../chunk-2JV6WZ6O.js';
|
|
12
12
|
import '../chunk-RV54D2D7.js';
|
|
@@ -38,7 +38,7 @@ import '../chunk-5XDPAKF5.js';
|
|
|
38
38
|
import '../chunk-GCPEMNSU.js';
|
|
39
39
|
import '../chunk-QGOPTVV5.js';
|
|
40
40
|
import '../chunk-TYNZ5B2B.js';
|
|
41
|
-
import '../chunk-
|
|
41
|
+
import '../chunk-OMKLPCBA.js';
|
|
42
42
|
import '../chunk-AXW67SY7.js';
|
|
43
43
|
import '../chunk-BYMOPN2S.js';
|
|
44
44
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/routes/loyalty.js
CHANGED
|
@@ -57,10 +57,10 @@ async function loyaltyPointsLoader(locale) {
|
|
|
57
57
|
|
|
58
58
|
// src/routes/loyalty/index.tsx
|
|
59
59
|
var LazyLoyaltyPage = lazy(
|
|
60
|
-
() => import('../LoyaltyPage-
|
|
60
|
+
() => import('../LoyaltyPage-ZMFYQMQY.js').then((m) => ({ default: m.LoyaltyPage }))
|
|
61
61
|
);
|
|
62
62
|
var LazyLoyaltyPointsPage = lazy(
|
|
63
|
-
() => import('../LoyaltyPointsPage-
|
|
63
|
+
() => import('../LoyaltyPointsPage-5PB6IFLY.js').then((m) => ({ default: m.LoyaltyPointsPage }))
|
|
64
64
|
);
|
|
65
65
|
var LoyaltyPage = LazyLoyaltyPage;
|
|
66
66
|
var LoyaltyPointsPage = LazyLoyaltyPointsPage;
|
package/dist/routes/page.js
CHANGED
|
@@ -28,7 +28,7 @@ async function pageSingleLoader({ params }) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// src/routes/page/index.tsx
|
|
31
|
-
var LazyPageSingle = lazy(() => import('../PageSingle-
|
|
31
|
+
var LazyPageSingle = lazy(() => import('../PageSingle-F4TDNKUM.js').then((m) => ({ default: m.PageSingle })));
|
|
32
32
|
var PageSingleLazy = LazyPageSingle;
|
|
33
33
|
async function loader(ctx, extend) {
|
|
34
34
|
const data = await pageSingleLoader({ params: ctx.params });
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { SORT_IDS, availableSortIds, sortOptions } from '../chunk-3LZJXKVO.js';
|
|
2
2
|
import { category } from '../chunk-43D2CG4F.js';
|
|
3
3
|
import { brand } from '../chunk-LPQ5FUMJ.js';
|
|
4
|
-
import { useReorderButtons, LazyTestimonials } from '../chunk-
|
|
4
|
+
import { useReorderButtons, LazyTestimonials } from '../chunk-TJF6YZ5I.js';
|
|
5
5
|
import '../chunk-FZYR4BA2.js';
|
|
6
6
|
import { product, parseNextPageToken } from '../chunk-CEYT3JER.js';
|
|
7
7
|
import { Drawer } from '../chunk-6TKIUG5C.js';
|
|
8
|
-
import { ProductCard } from '../chunk-
|
|
8
|
+
import { ProductCard } from '../chunk-LA7KZ2XY.js';
|
|
9
9
|
import { registry, COMPONENT_KEYS } from '../chunk-Y32RHCOH.js';
|
|
10
|
-
import { useStore } from '../chunk-
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
10
|
+
import { useStore } from '../chunk-RPDMNNRW.js';
|
|
11
|
+
import '../chunk-WHJZP3QJ.js';
|
|
12
|
+
import '../chunk-YDFOJBEY.js';
|
|
13
13
|
import '../chunk-SFZ7IIWL.js';
|
|
14
14
|
import '../chunk-2JV6WZ6O.js';
|
|
15
15
|
import '../chunk-RV54D2D7.js';
|
|
@@ -41,7 +41,7 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
41
41
|
import '../chunk-GCPEMNSU.js';
|
|
42
42
|
import { getAuthToken } from '../chunk-QGOPTVV5.js';
|
|
43
43
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
44
|
-
import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-
|
|
44
|
+
import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-OMKLPCBA.js';
|
|
45
45
|
import '../chunk-AXW67SY7.js';
|
|
46
46
|
import '../chunk-BYMOPN2S.js';
|
|
47
47
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/routes/product.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ProductsSlider, LazyTestimonials } from '../chunk-
|
|
1
|
+
import { ProductsSlider, LazyTestimonials } from '../chunk-TJF6YZ5I.js';
|
|
2
2
|
import '../chunk-FZYR4BA2.js';
|
|
3
3
|
import { product } from '../chunk-CEYT3JER.js';
|
|
4
|
-
import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-
|
|
4
|
+
import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-LA7KZ2XY.js';
|
|
5
5
|
import '../chunk-Y32RHCOH.js';
|
|
6
|
-
import { fastCheckoutScript } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import { fastCheckoutScript } from '../chunk-RPDMNNRW.js';
|
|
7
|
+
import '../chunk-WHJZP3QJ.js';
|
|
8
|
+
import '../chunk-YDFOJBEY.js';
|
|
9
9
|
import '../chunk-SFZ7IIWL.js';
|
|
10
10
|
import '../chunk-2JV6WZ6O.js';
|
|
11
11
|
import '../chunk-RV54D2D7.js';
|
|
@@ -37,7 +37,7 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
37
37
|
import '../chunk-GCPEMNSU.js';
|
|
38
38
|
import { getActiveCurrency } from '../chunk-QGOPTVV5.js';
|
|
39
39
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
40
|
-
import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-
|
|
40
|
+
import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-OMKLPCBA.js';
|
|
41
41
|
import '../chunk-AXW67SY7.js';
|
|
42
42
|
import '../chunk-BYMOPN2S.js';
|
|
43
43
|
import '../chunk-SKLEJJ6M.js';
|
|
@@ -32,10 +32,10 @@ async function reviewsLoader() {
|
|
|
32
32
|
|
|
33
33
|
// src/routes/testimonials/index.tsx
|
|
34
34
|
var LazyTestimonialsPage = lazy(
|
|
35
|
-
() => import('../TestimonialsPage-
|
|
35
|
+
() => import('../TestimonialsPage-YU4PLOLR.js').then((m) => ({ default: m.TestimonialsPage }))
|
|
36
36
|
);
|
|
37
37
|
var LazyReviewsPage = lazy(
|
|
38
|
-
() => import('../ReviewsPage-
|
|
38
|
+
() => import('../ReviewsPage-3IJKJKTY.js').then((m) => ({ default: m.ReviewsPage }))
|
|
39
39
|
);
|
|
40
40
|
var TestimonialsPage = LazyTestimonialsPage;
|
|
41
41
|
var ReviewsPage = LazyReviewsPage;
|
package/dist/routes/thank-you.js
CHANGED
|
@@ -39,7 +39,7 @@ async function thankYouLoader({
|
|
|
39
39
|
|
|
40
40
|
// src/routes/thank-you/index.tsx
|
|
41
41
|
var LazyThankYouPage = lazy(
|
|
42
|
-
() => import('../ThankYouPage-
|
|
42
|
+
() => import('../ThankYouPage-MUDELEIQ.js').then((m) => ({ default: m.ThankYouPage }))
|
|
43
43
|
);
|
|
44
44
|
var ThankYouPage = LazyThankYouPage;
|
|
45
45
|
async function loader(ctx, extend) {
|
package/dist/skeleton.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
|
|
2
|
-
export { HomeSkeleton } from './chunk-
|
|
3
|
-
import './chunk-
|
|
2
|
+
export { HomeSkeleton } from './chunk-Y357MBJI.js';
|
|
3
|
+
import './chunk-TJF6YZ5I.js';
|
|
4
4
|
import './chunk-FZYR4BA2.js';
|
|
5
5
|
import './chunk-CEYT3JER.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-LA7KZ2XY.js';
|
|
7
7
|
import './chunk-Y32RHCOH.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
8
|
+
import './chunk-RPDMNNRW.js';
|
|
9
|
+
import './chunk-WHJZP3QJ.js';
|
|
10
|
+
import './chunk-YDFOJBEY.js';
|
|
11
11
|
import './chunk-SFZ7IIWL.js';
|
|
12
12
|
import './chunk-2JV6WZ6O.js';
|
|
13
13
|
import './chunk-RV54D2D7.js';
|
|
@@ -39,7 +39,7 @@ import './chunk-5XDPAKF5.js';
|
|
|
39
39
|
import './chunk-GCPEMNSU.js';
|
|
40
40
|
import './chunk-QGOPTVV5.js';
|
|
41
41
|
import './chunk-TYNZ5B2B.js';
|
|
42
|
-
import './chunk-
|
|
42
|
+
import './chunk-OMKLPCBA.js';
|
|
43
43
|
import './chunk-AXW67SY7.js';
|
|
44
44
|
import './chunk-BYMOPN2S.js';
|
|
45
45
|
import './chunk-SKLEJJ6M.js';
|
package/dist/tanstack.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-
|
|
1
|
+
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-ZFNLX3F7.js';
|
|
2
2
|
import { requestHostOf } from './chunk-C4RXPVDF.js';
|
|
3
3
|
export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-C4RXPVDF.js';
|
|
4
4
|
import './chunk-Z4Y55HWX.js';
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';
|
|
3
|
+
import { SallaContacts } from '@salla.sa/twilight-components-react/contacts';
|
|
3
4
|
import { SallaSocial } from '@salla.sa/twilight-components-react/social';
|
|
4
5
|
import { SallaMenu } from '@salla.sa/twilight-components-react/menu';
|
|
5
6
|
import { SallaTrustBadges } from '@salla.sa/twilight-components-react/trust-badges';
|
|
@@ -217,13 +218,32 @@ function FooterDescription({ className }: { className: string }) {
|
|
|
217
218
|
);
|
|
218
219
|
}
|
|
219
220
|
|
|
220
|
-
/**
|
|
221
|
-
*
|
|
221
|
+
/** The store's phone and email as one "Contact us: …" row under the description
|
|
222
|
+
* (`<salla-contacts>`'s compact `isHeader` layout, which shows only those two).
|
|
223
|
+
* Renders nothing when the store has neither. */
|
|
224
|
+
function FooterContacts({ className }: { className: string }) {
|
|
225
|
+
const { store } = useTwilight();
|
|
226
|
+
const { t } = useTranslation();
|
|
227
|
+
if (!store.contacts?.phone && !store.contacts?.email) return null;
|
|
228
|
+
return (
|
|
229
|
+
<div className={`store-footer__contacts ${className}`}>
|
|
230
|
+
<SallaContacts
|
|
231
|
+
contacts={store.contacts}
|
|
232
|
+
contactsTitle={t('blocks.footer.social', 'Contact us')}
|
|
233
|
+
isHeader
|
|
234
|
+
/>
|
|
235
|
+
</div>
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** Centered layout: logo, description, contacts, social, footer menu, trust
|
|
240
|
+
* badges and app buttons stacked as one centered column. */
|
|
222
241
|
function FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {
|
|
223
242
|
return (
|
|
224
243
|
<div className="container mx-auto flex max-w-2xl flex-col items-center gap-6 text-center">
|
|
225
244
|
<FooterLogo className="" />
|
|
226
245
|
<FooterDescription className="" />
|
|
246
|
+
<FooterContacts className="" />
|
|
227
247
|
<SallaSocial />
|
|
228
248
|
|
|
229
249
|
<FooterLinksMenu
|
|
@@ -239,7 +259,7 @@ function FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boo
|
|
|
239
259
|
);
|
|
240
260
|
}
|
|
241
261
|
|
|
242
|
-
/** Columns layout: brand (logo / description / social / trust) and app
|
|
262
|
+
/** Columns layout: brand (logo / description / contacts / social / trust) and app
|
|
243
263
|
* buttons side by side, with the footer menu as its own labeled column. */
|
|
244
264
|
function FooterColumnsBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {
|
|
245
265
|
const { t } = useTranslation();
|
|
@@ -249,6 +269,7 @@ function FooterColumnsBody({ inSheet, isDark }: { inSheet: boolean; isDark: bool
|
|
|
249
269
|
<div className="store-footer__brand rtl:lg:pl-16 ltr:lg:pr-16 sm:col-span-2">
|
|
250
270
|
<FooterLogo className="mb-5" />
|
|
251
271
|
<FooterDescription className="max-w-sm leading-6 my-5" />
|
|
272
|
+
<FooterContacts className="mb-6" />
|
|
252
273
|
<SallaSocial className="block mb-6" />
|
|
253
274
|
<FooterTrust dark={isDark} centered={false} />
|
|
254
275
|
</div>
|