@salla.sa/twilight-theme-engine 1.0.50 → 1.0.52

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.
Files changed (155) hide show
  1. package/dist/{AddToCartForm-YAHPV2C3.js → AddToCartForm-CO5QIWTJ.js} +3 -3
  2. package/dist/{AddToCartForm-YAHPV2C3.js.map → AddToCartForm-CO5QIWTJ.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-JSJUEQN4.js → BlogAuthorPage-MTGRJW6C.js} +6 -6
  4. package/dist/{BlogAuthorPage-JSJUEQN4.js.map → BlogAuthorPage-MTGRJW6C.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-XS23GSJZ.js → BlogCategoryPage-J5643FWA.js} +6 -6
  6. package/dist/{BlogCategoryPage-XS23GSJZ.js.map → BlogCategoryPage-J5643FWA.js.map} +1 -1
  7. package/dist/{BlogPage-2OFSXR3P.js → BlogPage-IQDW2HYN.js} +5 -5
  8. package/dist/{BlogPage-2OFSXR3P.js.map → BlogPage-IQDW2HYN.js.map} +1 -1
  9. package/dist/{BlogSinglePage-MJZPJF3L.js → BlogSinglePage-J7POWQFT.js} +5 -5
  10. package/dist/{BlogSinglePage-MJZPJF3L.js.map → BlogSinglePage-J7POWQFT.js.map} +1 -1
  11. package/dist/{BlogTagPage-DVF47A6M.js → BlogTagPage-STS5PZHM.js} +6 -6
  12. package/dist/{BlogTagPage-DVF47A6M.js.map → BlogTagPage-STS5PZHM.js.map} +1 -1
  13. package/dist/{BrandsPage-KXLRKGMS.js → BrandsPage-E2HRAZN3.js} +5 -5
  14. package/dist/{BrandsPage-KXLRKGMS.js.map → BrandsPage-E2HRAZN3.js.map} +1 -1
  15. package/dist/{Breadcrumb-NE32QNQ2.js → Breadcrumb-I2CYGO5K.js} +5 -5
  16. package/dist/{Breadcrumb-NE32QNQ2.js.map → Breadcrumb-I2CYGO5K.js.map} +1 -1
  17. package/dist/{CartItem-BNJBC625.js → CartItem-CRUPTVF6.js} +5 -5
  18. package/dist/{CartItem-BNJBC625.js.map → CartItem-CRUPTVF6.js.map} +1 -1
  19. package/dist/{CartSummary-MRCBKU7M.js → CartSummary-PPTKJM2S.js} +5 -5
  20. package/dist/{CartSummary-MRCBKU7M.js.map → CartSummary-PPTKJM2S.js.map} +1 -1
  21. package/dist/{Copyright-FQOOELST.js → Copyright-67RVBNSV.js} +3 -3
  22. package/dist/{Copyright-FQOOELST.js.map → Copyright-67RVBNSV.js.map} +1 -1
  23. package/dist/{CustomerLayout-Q44HCS3A.js → CustomerLayout-ZJUNE4NT.js} +7 -6
  24. package/dist/CustomerLayout-ZJUNE4NT.js.map +1 -0
  25. package/dist/{Footer-PHRI3YVQ.js → Footer-K25ISQ6E.js} +5 -5
  26. package/dist/{Footer-PHRI3YVQ.js.map → Footer-K25ISQ6E.js.map} +1 -1
  27. package/dist/{Header-PGYFFCJT.js → Header-L7ZAPT45.js} +4 -4
  28. package/dist/{Header-PGYFFCJT.js.map → Header-L7ZAPT45.js.map} +1 -1
  29. package/dist/{LoyaltyPage-RFN2UQFQ.js → LoyaltyPage-X7BFPO4O.js} +5 -5
  30. package/dist/{LoyaltyPage-RFN2UQFQ.js.map → LoyaltyPage-X7BFPO4O.js.map} +1 -1
  31. package/dist/{MainMenu-OMVXJIFY.js → MainMenu-ZI57F6VG.js} +3 -3
  32. package/dist/{MainMenu-OMVXJIFY.js.map → MainMenu-ZI57F6VG.js.map} +1 -1
  33. package/dist/{MasterLayout-UULUBWE2.js → MasterLayout-FGMCLVWW.js} +5 -5
  34. package/dist/{MasterLayout-UULUBWE2.js.map → MasterLayout-FGMCLVWW.js.map} +1 -1
  35. package/dist/{MobileMenu-WRKCMIKG.js → MobileMenu-QKQZSSOA.js} +5 -5
  36. package/dist/{MobileMenu-WRKCMIKG.js.map → MobileMenu-QKQZSSOA.js.map} +1 -1
  37. package/dist/{NotificationsPage-6MRG2NUF.js → NotificationsPage-OMVSSTVA.js} +5 -5
  38. package/dist/{NotificationsPage-6MRG2NUF.js.map → NotificationsPage-OMVSSTVA.js.map} +1 -1
  39. package/dist/{OrderSinglePage-432Y6VX4.js → OrderSinglePage-CPX6J7YO.js} +48 -6
  40. package/dist/OrderSinglePage-CPX6J7YO.js.map +1 -0
  41. package/dist/{OrdersPage-DF6BGH5S.js → OrdersPage-SFLQKJFQ.js} +63 -7
  42. package/dist/OrdersPage-SFLQKJFQ.js.map +1 -0
  43. package/dist/{PageSingle-QFVGVOMX.js → PageSingle-R2W2QSTE.js} +3 -3
  44. package/dist/{PageSingle-QFVGVOMX.js.map → PageSingle-R2W2QSTE.js.map} +1 -1
  45. package/dist/{ProductDetails-6YDEUO7V.js → ProductDetails-2L34UXT3.js} +3 -3
  46. package/dist/{ProductDetails-6YDEUO7V.js.map → ProductDetails-2L34UXT3.js.map} +1 -1
  47. package/dist/{ProfilePage-UYKPJ5CH.js → ProfilePage-LPAZYMHH.js} +5 -5
  48. package/dist/{ProfilePage-UYKPJ5CH.js.map → ProfilePage-LPAZYMHH.js.map} +1 -1
  49. package/dist/{SeoCartWidget-II274FVM.js → SeoCartWidget-AH4VVASI.js} +5 -5
  50. package/dist/{SeoCartWidget-II274FVM.js.map → SeoCartWidget-AH4VVASI.js.map} +1 -1
  51. package/dist/{SettingsPage-DUR3FBEQ.js → SettingsPage-RJUZW3V4.js} +5 -5
  52. package/dist/{SettingsPage-DUR3FBEQ.js.map → SettingsPage-RJUZW3V4.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-7CGAUSVC.js → StoreClosedNotification-FPNPF2GW.js} +6 -6
  54. package/dist/{StoreClosedNotification-7CGAUSVC.js.map → StoreClosedNotification-FPNPF2GW.js.map} +1 -1
  55. package/dist/{TestimonialsPage-BJOG3NYE.js → TestimonialsPage-KCTMCLFB.js} +3 -3
  56. package/dist/{TestimonialsPage-BJOG3NYE.js.map → TestimonialsPage-KCTMCLFB.js.map} +1 -1
  57. package/dist/{ThankYouPage-MEILFVYA.js → ThankYouPage-WOD6Y6TV.js} +11 -5
  58. package/dist/ThankYouPage-WOD6Y6TV.js.map +1 -0
  59. package/dist/{WalletPage-5ZCAQGGM.js → WalletPage-W2IDME7R.js} +5 -5
  60. package/dist/{WalletPage-5ZCAQGGM.js.map → WalletPage-W2IDME7R.js.map} +1 -1
  61. package/dist/{WishlistPage-XWSJ5QBM.js → WishlistPage-NE74MFAD.js} +7 -7
  62. package/dist/{WishlistPage-XWSJ5QBM.js.map → WishlistPage-NE74MFAD.js.map} +1 -1
  63. package/dist/ambient/salla-components.d.ts +2 -0
  64. package/dist/api/product.d.ts +8 -0
  65. package/dist/api/product.d.ts.map +1 -1
  66. package/dist/api/product.js +1 -1
  67. package/dist/api/wishlist.js +2 -2
  68. package/dist/{chunk-ZW6ZUOM5.js → chunk-5NHSIK3V.js} +10 -8
  69. package/dist/chunk-5NHSIK3V.js.map +1 -0
  70. package/dist/{chunk-UWS2QXFK.js → chunk-AEPO4POY.js} +5 -5
  71. package/dist/{chunk-UWS2QXFK.js.map → chunk-AEPO4POY.js.map} +1 -1
  72. package/dist/{chunk-6ZAG7QEF.js → chunk-ASN3HL47.js} +3 -3
  73. package/dist/{chunk-6ZAG7QEF.js.map → chunk-ASN3HL47.js.map} +1 -1
  74. package/dist/{chunk-Y5SXSIZ7.js → chunk-GWKCKU4G.js} +8 -7
  75. package/dist/chunk-GWKCKU4G.js.map +1 -0
  76. package/dist/{chunk-WYD2ZWWY.js → chunk-MQGAYYYV.js} +3 -3
  77. package/dist/{chunk-WYD2ZWWY.js.map → chunk-MQGAYYYV.js.map} +1 -1
  78. package/dist/{chunk-2BHKKJLP.js → chunk-QBRYGYIP.js} +5 -5
  79. package/dist/{chunk-2BHKKJLP.js.map → chunk-QBRYGYIP.js.map} +1 -1
  80. package/dist/{chunk-VSBG4G2C.js → chunk-TEOX2GUU.js} +3 -3
  81. package/dist/{chunk-VSBG4G2C.js.map → chunk-TEOX2GUU.js.map} +1 -1
  82. package/dist/{chunk-CBNUZ7LI.js → chunk-UYK4CSL3.js} +28 -3
  83. package/dist/chunk-UYK4CSL3.js.map +1 -0
  84. package/dist/chunk-V4ILJDUG.js +14 -0
  85. package/dist/{chunk-BOFY2AY5.js.map → chunk-V4ILJDUG.js.map} +1 -1
  86. package/dist/{chunk-6LTCVLW6.js → chunk-VW7N4JHG.js} +4 -4
  87. package/dist/{chunk-6LTCVLW6.js.map → chunk-VW7N4JHG.js.map} +1 -1
  88. package/dist/{chunk-4QPX5WQZ.js → chunk-WEN7W6YS.js} +4 -4
  89. package/dist/{chunk-4QPX5WQZ.js.map → chunk-WEN7W6YS.js.map} +1 -1
  90. package/dist/{chunk-CFDDMZSU.js → chunk-YHHYXRFV.js} +4 -4
  91. package/dist/{chunk-CFDDMZSU.js.map → chunk-YHHYXRFV.js.map} +1 -1
  92. package/dist/{chunk-K7KOSHNZ.js → chunk-YIAM7LGR.js} +3 -3
  93. package/dist/{chunk-K7KOSHNZ.js.map → chunk-YIAM7LGR.js.map} +1 -1
  94. package/dist/components/cart/index.js +1 -1
  95. package/dist/components/common/index.js +1 -1
  96. package/dist/components/drawer/index.js +3 -3
  97. package/dist/components/home/index.js +6 -6
  98. package/dist/components/layout/CustomerLayout.d.ts.map +1 -1
  99. package/dist/components/layout/index.js +5 -5
  100. package/dist/components/product/ProductCard.d.ts.map +1 -1
  101. package/dist/components/product/index.js +4 -4
  102. package/dist/components/store/index.js +5 -5
  103. package/dist/{document-class-GIJJRQVN.js → document-class-XJ3QIMBO.js} +4 -4
  104. package/dist/{document-class-GIJJRQVN.js.map → document-class-XJ3QIMBO.js.map} +1 -1
  105. package/dist/hooks/index.js +3 -3
  106. package/dist/hooks/useGtm.js +3 -3
  107. package/dist/hooks/useMoney.js +3 -3
  108. package/dist/hooks/usePageConfig.d.ts.map +1 -1
  109. package/dist/hooks/useStore.js +3 -3
  110. package/dist/index.js +3 -3
  111. package/dist/{not-found-MZ7B6HCJ.js → not-found-DLUE3J4K.js} +53 -7
  112. package/dist/not-found-DLUE3J4K.js.map +1 -0
  113. package/dist/providers/index.js +3 -3
  114. package/dist/routes/account/orders/OrderSinglePage.d.ts +1 -1
  115. package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -1
  116. package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -1
  117. package/dist/routes/account/orders.js +1 -1
  118. package/dist/routes/account.js +8 -8
  119. package/dist/routes/blog.js +5 -5
  120. package/dist/routes/brands.js +1 -1
  121. package/dist/routes/cart.js +8 -8
  122. package/dist/routes/home.js +7 -7
  123. package/dist/routes/loyalty.js +1 -1
  124. package/dist/routes/not-found.d.ts +1 -1
  125. package/dist/routes/not-found.d.ts.map +1 -1
  126. package/dist/routes/page.js +1 -1
  127. package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -1
  128. package/dist/routes/product-listing/index.d.ts +2 -0
  129. package/dist/routes/product-listing/index.d.ts.map +1 -1
  130. package/dist/routes/product-listing/useAppliedFilters.d.ts +43 -0
  131. package/dist/routes/product-listing/useAppliedFilters.d.ts.map +1 -0
  132. package/dist/routes/product-listing.js +143 -45
  133. package/dist/routes/product-listing.js.map +1 -1
  134. package/dist/routes/product-short-link.d.ts +20 -0
  135. package/dist/routes/product-short-link.d.ts.map +1 -0
  136. package/dist/routes/product.js +7 -7
  137. package/dist/routes/product.js.map +1 -1
  138. package/dist/routes/testimonials.js +1 -1
  139. package/dist/routes/thank-you/ThankYouPage.d.ts +1 -1
  140. package/dist/routes/thank-you/ThankYouPage.d.ts.map +1 -1
  141. package/dist/routes/thank-you.js +1 -1
  142. package/dist/skeleton.js +7 -7
  143. package/dist/tanstack.js +3 -3
  144. package/dist/types/index.d.ts +7 -0
  145. package/dist/types/index.d.ts.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/CustomerLayout-Q44HCS3A.js.map +0 -1
  148. package/dist/OrderSinglePage-432Y6VX4.js.map +0 -1
  149. package/dist/OrdersPage-DF6BGH5S.js.map +0 -1
  150. package/dist/ThankYouPage-MEILFVYA.js.map +0 -1
  151. package/dist/chunk-BOFY2AY5.js +0 -14
  152. package/dist/chunk-CBNUZ7LI.js.map +0 -1
  153. package/dist/chunk-Y5SXSIZ7.js.map +0 -1
  154. package/dist/chunk-ZW6ZUOM5.js.map +0 -1
  155. package/dist/not-found-MZ7B6HCJ.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { wallet } from '../chunk-PZL3JWM2.js';
2
- export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-4QPX5WQZ.js';
2
+ export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-WEN7W6YS.js';
3
3
  import '../chunk-OKP6LUT7.js';
4
4
  import { notification } from '../chunk-MENDTTOA.js';
5
- import { wishlist } from '../chunk-VSBG4G2C.js';
5
+ import { wishlist } from '../chunk-TEOX2GUU.js';
6
6
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
7
- import '../chunk-CBNUZ7LI.js';
7
+ import '../chunk-UYK4CSL3.js';
8
8
  import { unauthorized, orUnauthorized } from '../chunk-JK77XRXR.js';
9
9
  import { RouteId } from '../chunk-MTONGOJD.js';
10
10
  import '../chunk-O6XXHXC4.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-UYKPJ5CH.js').then((m) => ({ default: m.ProfilePage }))
33
+ () => import('../ProfilePage-LPAZYMHH.js').then((m) => ({ default: m.ProfilePage }))
34
34
  );
35
35
  var ProfilePage = LazyProfilePage;
36
36
  var Profile = {
@@ -71,7 +71,7 @@ async function wishlistLoader(ctx) {
71
71
 
72
72
  // src/routes/account/wishlist/index.tsx
73
73
  var LazyWishlistPage = lazy(
74
- () => import('../WishlistPage-XWSJ5QBM.js').then((m) => ({ default: m.WishlistPage }))
74
+ () => import('../WishlistPage-NE74MFAD.js').then((m) => ({ default: m.WishlistPage }))
75
75
  );
76
76
  var WishlistPage = LazyWishlistPage;
77
77
  var Wishlist = {
@@ -112,7 +112,7 @@ async function walletLoader(ctx) {
112
112
  }
113
113
 
114
114
  // src/routes/account/wallet/index.tsx
115
- var LazyWalletPage = lazy(() => import('../WalletPage-5ZCAQGGM.js').then((m) => ({ default: m.WalletPage })));
115
+ var LazyWalletPage = lazy(() => import('../WalletPage-W2IDME7R.js').then((m) => ({ default: m.WalletPage })));
116
116
  var WalletPage = LazyWalletPage;
117
117
  var Wallet = {
118
118
  id: RouteId.CUSTOMER_WALLET,
@@ -147,7 +147,7 @@ async function notificationsLoader(_ctx) {
147
147
 
148
148
  // src/routes/account/notifications/index.tsx
149
149
  var LazyNotificationsPage = lazy(
150
- () => import('../NotificationsPage-6MRG2NUF.js').then((m) => ({ default: m.NotificationsPage }))
150
+ () => import('../NotificationsPage-OMVSSTVA.js').then((m) => ({ default: m.NotificationsPage }))
151
151
  );
152
152
  var NotificationsPage = LazyNotificationsPage;
153
153
  var Notifications = {
@@ -179,7 +179,7 @@ async function settingsLoader(_ctx) {
179
179
 
180
180
  // src/routes/account/settings/index.tsx
181
181
  var LazySettingsPage = lazy(
182
- () => import('../SettingsPage-DUR3FBEQ.js').then((m) => ({ default: m.SettingsPage }))
182
+ () => import('../SettingsPage-RJUZW3V4.js').then((m) => ({ default: m.SettingsPage }))
183
183
  );
184
184
  var SettingsPage = LazySettingsPage;
185
185
  var Settings = {
@@ -134,18 +134,18 @@ async function blogTagLoader({
134
134
  }
135
135
 
136
136
  // src/routes/blog/index.tsx
137
- var LazyBlogPage = lazy(() => import('../BlogPage-2OFSXR3P.js').then((m) => ({ default: m.BlogPage })));
137
+ var LazyBlogPage = lazy(() => import('../BlogPage-IQDW2HYN.js').then((m) => ({ default: m.BlogPage })));
138
138
  var LazyBlogSinglePage = lazy(
139
- () => import('../BlogSinglePage-MJZPJF3L.js').then((m) => ({ default: m.BlogSinglePage }))
139
+ () => import('../BlogSinglePage-J7POWQFT.js').then((m) => ({ default: m.BlogSinglePage }))
140
140
  );
141
141
  var LazyBlogAuthorPage = lazy(
142
- () => import('../BlogAuthorPage-JSJUEQN4.js').then((m) => ({ default: m.BlogAuthorPage }))
142
+ () => import('../BlogAuthorPage-MTGRJW6C.js').then((m) => ({ default: m.BlogAuthorPage }))
143
143
  );
144
144
  var LazyBlogCategoryPage = lazy(
145
- () => import('../BlogCategoryPage-XS23GSJZ.js').then((m) => ({ default: m.BlogCategoryPage }))
145
+ () => import('../BlogCategoryPage-J5643FWA.js').then((m) => ({ default: m.BlogCategoryPage }))
146
146
  );
147
147
  var LazyBlogTagPage = lazy(
148
- () => import('../BlogTagPage-DVF47A6M.js').then((m) => ({ default: m.BlogTagPage }))
148
+ () => import('../BlogTagPage-STS5PZHM.js').then((m) => ({ default: m.BlogTagPage }))
149
149
  );
150
150
  var BlogPage = LazyBlogPage;
151
151
  var BlogSinglePage = LazyBlogSinglePage;
@@ -34,7 +34,7 @@ async function brandsLoader() {
34
34
  }
35
35
 
36
36
  // src/routes/brands/index.tsx
37
- var LazyBrandsPage = lazy(() => import('../BrandsPage-KXLRKGMS.js').then((m) => ({ default: m.BrandsPage })));
37
+ var LazyBrandsPage = lazy(() => import('../BrandsPage-E2HRAZN3.js').then((m) => ({ default: m.BrandsPage })));
38
38
  var BrandsPage = LazyBrandsPage;
39
39
  async function brandsLoaderWithExtend(_ctx, extend) {
40
40
  const data = await brandsLoader();
@@ -1,16 +1,16 @@
1
1
  import { cart } from '../chunk-GXNQX4Z2.js';
2
2
  import { loyalty } from '../chunk-EMKO3C2V.js';
3
3
  import { CartSkeleton } from '../chunk-N7CCSGZF.js';
4
- import '../chunk-6ZAG7QEF.js';
4
+ import '../chunk-ASN3HL47.js';
5
5
  import '../chunk-P4DUWQU4.js';
6
6
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
7
- import '../chunk-UWS2QXFK.js';
8
- import '../chunk-CBNUZ7LI.js';
9
- import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-BOFY2AY5.js';
10
- import '../chunk-ZW6ZUOM5.js';
7
+ import '../chunk-AEPO4POY.js';
8
+ import '../chunk-UYK4CSL3.js';
9
+ import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-V4ILJDUG.js';
10
+ import '../chunk-5NHSIK3V.js';
11
11
  import '../chunk-342EPVXN.js';
12
- import '../chunk-Y5SXSIZ7.js';
13
- import '../chunk-2BHKKJLP.js';
12
+ import '../chunk-GWKCKU4G.js';
13
+ import '../chunk-QBRYGYIP.js';
14
14
  import '../chunk-JKIRRMBU.js';
15
15
  import '../chunk-2JV6WZ6O.js';
16
16
  import '../chunk-6IATCGID.js';
@@ -41,7 +41,7 @@ import '../chunk-YMVLYYLU.js';
41
41
  import '../chunk-RJPPO3ET.js';
42
42
  import { HookSlot } from '../chunk-Q7VWURUR.js';
43
43
  import '../chunk-GU2KUQVD.js';
44
- import { LazyBreadcrumb, LazyNoContent } from '../chunk-WYD2ZWWY.js';
44
+ import { LazyBreadcrumb, LazyNoContent } from '../chunk-MQGAYYYV.js';
45
45
  import '../chunk-AXW67SY7.js';
46
46
  import '../chunk-BYMOPN2S.js';
47
47
  import '../chunk-SKLEJJ6M.js';
@@ -1,12 +1,12 @@
1
- export { Home, HomeSkeleton, homeLoader } from '../chunk-6ZAG7QEF.js';
1
+ export { Home, HomeSkeleton, homeLoader } from '../chunk-ASN3HL47.js';
2
2
  import '../chunk-P4DUWQU4.js';
3
3
  import '../chunk-TZ3E5BN4.js';
4
- export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-UWS2QXFK.js';
5
- import '../chunk-CBNUZ7LI.js';
6
- import '../chunk-ZW6ZUOM5.js';
4
+ export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-AEPO4POY.js';
5
+ import '../chunk-UYK4CSL3.js';
6
+ import '../chunk-5NHSIK3V.js';
7
7
  import '../chunk-342EPVXN.js';
8
- import '../chunk-Y5SXSIZ7.js';
9
- import '../chunk-2BHKKJLP.js';
8
+ import '../chunk-GWKCKU4G.js';
9
+ import '../chunk-QBRYGYIP.js';
10
10
  import '../chunk-JKIRRMBU.js';
11
11
  import '../chunk-2JV6WZ6O.js';
12
12
  import '../chunk-6IATCGID.js';
@@ -37,7 +37,7 @@ import '../chunk-YMVLYYLU.js';
37
37
  import '../chunk-RJPPO3ET.js';
38
38
  import '../chunk-Q7VWURUR.js';
39
39
  import '../chunk-GU2KUQVD.js';
40
- import '../chunk-WYD2ZWWY.js';
40
+ import '../chunk-MQGAYYYV.js';
41
41
  import '../chunk-AXW67SY7.js';
42
42
  import '../chunk-BYMOPN2S.js';
43
43
  import '../chunk-SKLEJJ6M.js';
@@ -19,7 +19,7 @@ async function loyaltyLoader() {
19
19
 
20
20
  // src/routes/loyalty/index.tsx
21
21
  var LazyLoyaltyPage = lazy(
22
- () => import('../LoyaltyPage-RFN2UQFQ.js').then((m) => ({ default: m.LoyaltyPage }))
22
+ () => import('../LoyaltyPage-X7BFPO4O.js').then((m) => ({ default: m.LoyaltyPage }))
23
23
  );
24
24
  var LoyaltyPage = LazyLoyaltyPage;
25
25
  async function loader(_ctx, extend) {
@@ -11,5 +11,5 @@ export interface NotFoundPageProps {
11
11
  children: ReactNode;
12
12
  }>;
13
13
  }
14
- export declare function NotFoundPage(props?: NotFoundPageProps): import("react").JSX.Element;
14
+ export declare function NotFoundPage(props?: NotFoundPageProps): import("react").JSX.Element | null;
15
15
  //# sourceMappingURL=not-found.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../../src/routes/not-found.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC5B,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,iBAAsB,+BA0BzD"}
1
+ {"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../../src/routes/not-found.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC5B,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,iBAAsB,sCA8BzD"}
@@ -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-QFVGVOMX.js').then((m) => ({ default: m.PageSingle })));
31
+ var LazyPageSingle = lazy(() => import('../PageSingle-R2W2QSTE.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 +1 @@
1
- {"version":3,"file":"ProductListPage.d.ts","sourceRoot":"","sources":["../../../src/routes/product-listing/ProductListPage.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAOrD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,OAAO,GACR,EAAE,qBAAqB,+BAwOvB"}
1
+ {"version":3,"file":"ProductListPage.d.ts","sourceRoot":"","sources":["../../../src/routes/product-listing/ProductListPage.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAOrD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,OAAO,GACR,EAAE,qBAAqB,+BA2RvB"}
@@ -12,5 +12,7 @@ export declare const ProductListing: {
12
12
  };
13
13
  export { ProductListPage };
14
14
  export { productListLoader };
15
+ export { useAppliedFilters, parseFiltersFromSearch } from './useAppliedFilters';
16
+ export type { AppliedFiltersStatus } from './useAppliedFilters';
15
17
  export type { ProductListLoaderData, ProductListLoaderParams, ProductListLoaderContext, ProductListSource, ProductListTag, ProductListEntity, ProductListPageMeta, ProductListSourceConfig, ProductListQuery, CategoryPageProps, } from './types';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/product-listing/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAA4B,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,wBAAgB,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc,CA8BtF;AAED,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/product-listing/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAA4B,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,wBAAgB,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc,CA8BtF;AAED,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { ProductListFilters } from '../../api/product';
2
+ import type { Product } from '../../types';
3
+ import type { ProductListLoaderData } from './types';
4
+ type Source = ProductListLoaderData['source'];
5
+ /**
6
+ * Reads the `filters[...]` selection `<salla-filters>` writes to the address bar
7
+ * (`filters[k]=v`, `filters[k][]=v`, `filters[k][sub]=v`) back into an object, so a
8
+ * filtered link can be opened directly.
9
+ *
10
+ * The keys come straight from the URL, so nodes are null-prototype objects and any
11
+ * `__proto__` / `constructor` / `prototype` segment drops the whole entry — a crafted
12
+ * `?filters[__proto__][x]=1` must never reach `Object.prototype`.
13
+ */
14
+ export declare function parseFiltersFromSearch(search: string): ProductListFilters | null;
15
+ interface FilteredPage {
16
+ items: Product[];
17
+ next: string | null;
18
+ }
19
+ export type AppliedFiltersStatus = 'idle' | 'loading' | 'ready' | 'error';
20
+ /**
21
+ * Applies the `<salla-filters>` selection to the product list.
22
+ *
23
+ * The filters component only rewrites the address bar (`history.pushState`, invisible
24
+ * to the router) and emits `salla-filters::changed`; nothing re-queries the list, so
25
+ * the route's loader output — fetched without filters — kept showing. This listens
26
+ * for that event (and for a filtered URL on first load) and fetches the first page
27
+ * with the selection.
28
+ *
29
+ * Each fetched page is stored with the selection that produced it, so `page` is only
30
+ * ever the page for the *current* selection. Until it arrives `status` is `loading`
31
+ * (and `lastPage` is the previous selection's page, for a dimmed placeholder); if the
32
+ * request fails `status` is `error` and `retry` re-runs it — the old products never
33
+ * pass for the new selection.
34
+ */
35
+ export declare function useAppliedFilters(source: Source, sort: string, enabled: boolean): {
36
+ filters: ProductListFilters | null;
37
+ page: FilteredPage | null;
38
+ lastPage: FilteredPage | null;
39
+ status: AppliedFiltersStatus;
40
+ retry: () => void;
41
+ };
42
+ export {};
43
+ //# sourceMappingURL=useAppliedFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppliedFilters.d.ts","sourceRoot":"","sources":["../../../src/routes/product-listing/useAppliedFilters.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,KAAK,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAM9C;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAyBhF;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf;IACD,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAmDA"}
@@ -2,13 +2,13 @@ import { sortOptions } from '../chunk-6Z4MOC4S.js';
2
2
  import { category } from '../chunk-WHOWSSX4.js';
3
3
  import { brand } from '../chunk-IH3TQ3LD.js';
4
4
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
5
- import { LazyTestimonials } from '../chunk-UWS2QXFK.js';
6
- import { product } from '../chunk-CBNUZ7LI.js';
5
+ import { LazyTestimonials } from '../chunk-AEPO4POY.js';
6
+ import { product } from '../chunk-UYK4CSL3.js';
7
7
  import { Drawer } from '../chunk-6TKIUG5C.js';
8
- import { ProductCard } from '../chunk-ZW6ZUOM5.js';
8
+ import { ProductCard } from '../chunk-5NHSIK3V.js';
9
9
  import '../chunk-342EPVXN.js';
10
- import { useStore } from '../chunk-Y5SXSIZ7.js';
11
- import '../chunk-2BHKKJLP.js';
10
+ import { useStore } from '../chunk-GWKCKU4G.js';
11
+ import '../chunk-QBRYGYIP.js';
12
12
  import '../chunk-JKIRRMBU.js';
13
13
  import '../chunk-2JV6WZ6O.js';
14
14
  import '../chunk-6IATCGID.js';
@@ -39,7 +39,7 @@ import '../chunk-YMVLYYLU.js';
39
39
  import '../chunk-RJPPO3ET.js';
40
40
  import { HookSlot } from '../chunk-Q7VWURUR.js';
41
41
  import '../chunk-GU2KUQVD.js';
42
- import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-WYD2ZWWY.js';
42
+ import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-MQGAYYYV.js';
43
43
  import '../chunk-AXW67SY7.js';
44
44
  import '../chunk-BYMOPN2S.js';
45
45
  import '../chunk-SKLEJJ6M.js';
@@ -48,9 +48,9 @@ import '../chunk-FZKRSGLP.js';
48
48
  import '../chunk-CUG6VOLM.js';
49
49
  import '../chunk-HX3YKS5W.js';
50
50
  import '../chunk-OBSAH7K6.js';
51
- import '../chunk-DF6FBKDN.js';
51
+ import { useTwilight } from '../chunk-DF6FBKDN.js';
52
52
  import '../chunk-DGUM43GV.js';
53
- import { useState, useMemo, useEffect, useCallback, useRef } from 'react';
53
+ import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
54
54
  import { SallaFilters } from '@salla.sa/twilight-components-react/filters';
55
55
  import { ItemsList, ReviewItemSkeleton } from '@salla.sa/twilight-components-react';
56
56
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -294,6 +294,72 @@ async function loadStaticProducts(source, title, slug, cursor, sort) {
294
294
  }
295
295
  };
296
296
  }
297
+ var UNSAFE_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
298
+ function parseFiltersFromSearch(search) {
299
+ const out = /* @__PURE__ */ Object.create(null);
300
+ new URLSearchParams(search).forEach((value, rawKey) => {
301
+ if (!rawKey.startsWith("filters[")) return;
302
+ const path = [...rawKey.matchAll(/\[([^\]]*)\]/g)].map((m) => m[1]);
303
+ const isList = path[path.length - 1] === "";
304
+ const keys = isList ? path.slice(0, -1) : path;
305
+ if (!keys.length || keys.includes("") || keys.some((key) => UNSAFE_KEYS.has(key))) return;
306
+ let node = out;
307
+ keys.slice(0, -1).forEach((key) => {
308
+ const existing = node[key];
309
+ if (typeof existing !== "object" || existing === null || Array.isArray(existing)) {
310
+ node[key] = /* @__PURE__ */ Object.create(null);
311
+ }
312
+ node = node[key];
313
+ });
314
+ const leaf = keys[keys.length - 1];
315
+ if (isList) {
316
+ node[leaf] = [...Array.isArray(node[leaf]) ? node[leaf] : [], value];
317
+ } else {
318
+ node[leaf] = value;
319
+ }
320
+ });
321
+ return Object.keys(out).length ? out : null;
322
+ }
323
+ function useAppliedFilters(source, sort, enabled) {
324
+ const [filters, setFilters] = useState(null);
325
+ const [result, setResult] = useState(null);
326
+ const [failedKey, setFailedKey] = useState(null);
327
+ const [attempt, setAttempt] = useState(0);
328
+ useEffect(() => {
329
+ if (!enabled) return;
330
+ setFilters(parseFiltersFromSearch(window.location.search));
331
+ const sdk = window.salla;
332
+ if (!sdk?.event) return;
333
+ const onChanged = (...args) => {
334
+ const next = args[0];
335
+ setFilters(next && Object.keys(next).length ? { ...next } : null);
336
+ };
337
+ sdk.event.on("salla-filters::changed", onChanged);
338
+ return () => sdk.event.off("salla-filters::changed", onChanged);
339
+ }, [enabled, source.type, source.value]);
340
+ const key = filters ? JSON.stringify([source.type, source.value, sort, filters]) : "";
341
+ useEffect(() => {
342
+ if (!filters) return;
343
+ const controller = new AbortController();
344
+ setFailedKey(null);
345
+ product.list({
346
+ source: source.type,
347
+ sourceValue: source.value,
348
+ sort,
349
+ filterable: true,
350
+ filters,
351
+ signal: controller.signal
352
+ }).then((res) => setResult({ key, page: { items: res.items, next: res.next } })).catch(() => {
353
+ if (!controller.signal.aborted) setFailedKey(key);
354
+ });
355
+ return () => controller.abort();
356
+ }, [key, attempt]);
357
+ const retry = useCallback(() => setAttempt((n) => n + 1), []);
358
+ if (!filters) return { filters: null, page: null, lastPage: null, status: "idle", retry };
359
+ const page = result?.key === key ? result.page : null;
360
+ const status = page ? "ready" : failedKey === key ? "error" : "loading";
361
+ return { filters, page, lastPage: result?.page ?? null, status, retry };
362
+ }
297
363
  var FILTERED_PRODUCT_IMAGE_SIZES = "(min-width: 768px) 25vw, 33vw";
298
364
  function ProductListPage({
299
365
  page,
@@ -305,6 +371,7 @@ function ProductListPage({
305
371
  }) {
306
372
  const { t } = useTranslation();
307
373
  const store = useStore();
374
+ const { theme } = useTwilight();
308
375
  const navigate = useNavigate();
309
376
  const selectedSort = query.sort;
310
377
  const [filtersOpen, setFiltersOpen] = useState(false);
@@ -313,6 +380,17 @@ function ProductListPage({
313
380
  const brand2 = isBrand ? source.entity : null;
314
381
  const sortOptionsWithTrans = useMemo(() => sortOptions(selectedSort, t), [selectedSort, t]);
315
382
  const location = useLocation();
383
+ const {
384
+ filters: appliedFilters,
385
+ page: filteredPage,
386
+ lastPage,
387
+ status: filterStatus,
388
+ retry: retryFilters
389
+ } = useAppliedFilters(source, selectedSort, !!showFilters);
390
+ const shownPage = filterStatus === "ready" ? filteredPage : lastPage;
391
+ const shownProducts = filterStatus === "error" ? [] : filterStatus === "idle" ? products : shownPage?.items ?? products;
392
+ const shownNext = filterStatus === "idle" ? pagination?.next : filterStatus === "ready" ? filteredPage?.next : null;
393
+ const filteredKey = filterStatus === "idle" ? "" : `-${filterStatus}${filterStatus === "ready" ? JSON.stringify(appliedFilters) : ""}`;
316
394
  useEffect(() => {
317
395
  const handleFiltersChanged = () => setFiltersOpen(false);
318
396
  const sdk = window.salla;
@@ -333,10 +411,10 @@ function ProductListPage({
333
411
  [navigate, location.pathname, location.searchStr]
334
412
  );
335
413
  const listKey = source.value ?? source.type;
336
- const nextCursorRef = useRef(pagination?.next ?? null);
414
+ const nextCursorRef = useRef(shownNext ?? null);
337
415
  useEffect(() => {
338
- nextCursorRef.current = pagination?.next ?? null;
339
- }, [pagination?.next]);
416
+ nextCursorRef.current = shownNext ?? null;
417
+ }, [shownNext]);
340
418
  const loader = useCallback(async () => {
341
419
  const nextUrl = nextCursorRef.current;
342
420
  const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);
@@ -345,13 +423,14 @@ function ProductListPage({
345
423
  source: source.type,
346
424
  sourceValue: source.value,
347
425
  ...cursor && { cursor },
348
- sort: selectedSort
426
+ sort: selectedSort,
427
+ ...appliedFilters && { filterable: true, filters: appliedFilters }
349
428
  });
350
429
  nextCursorRef.current = result.next;
351
430
  return result;
352
- }, [source.type, source.value, selectedSort]);
431
+ }, [source.type, source.value, selectedSort, appliedFilters]);
353
432
  return /* @__PURE__ */ jsxs("div", { className: "container px-2.5 ms:px-5 mb-10", children: [
354
- /* @__PURE__ */ jsx(LazyBreadcrumb, { page }),
433
+ theme?.settings?.product_index_show_breadcrumbs !== false && /* @__PURE__ */ jsx(LazyBreadcrumb, { page }),
355
434
  isBrand && brand2 && /* @__PURE__ */ jsxs(Fragment, { children: [
356
435
  /* @__PURE__ */ jsx(
357
436
  Image,
@@ -432,39 +511,58 @@ function ProductListPage({
432
511
  ] })
433
512
  ] }),
434
513
  /* @__PURE__ */ jsx(HookSlot, { name: "product:list.items.start" }),
435
- /* @__PURE__ */ jsx("div", { className: "flex min-h-screen", children: /* @__PURE__ */ jsx(
436
- ItemsList,
514
+ /* @__PURE__ */ jsx(
515
+ "div",
437
516
  {
438
- resetKey: `${listKey}-${selectedSort}`,
439
- items: products,
440
- loader,
441
- mode: pagination?.next ? "infinite" : "static",
442
- pageUrl: location.pathname + location.searchStr,
443
- className: "s-products-list flex-1 min-w-0",
444
- itemsClassName: `s-products-list-wrapper s-products-list-vertical-cards${showFilters ? " s-products-list-with-filters" : ""}`,
445
- skeleton: /* @__PURE__ */ jsx(ProductCardSkeleton, {}),
446
- skeletonType: "item",
447
- skeletonCount: 12,
448
- empty: /* @__PURE__ */ jsx(
449
- LazyNoContent,
450
- {
451
- icon: "sicon-shopping-bag",
452
- message: t("pages.categories.no_products", "No products found in this category")
453
- }
454
- ),
455
- t: (key, fallback) => t(key, fallback || key),
456
- children: (items) => items.map((prod, idx) => /* @__PURE__ */ jsx(
457
- ProductCard,
517
+ className: `flex min-h-screen${filterStatus === "loading" ? " opacity-60" : ""}`,
518
+ "aria-busy": filterStatus === "loading",
519
+ children: filterStatus === "error" ? /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 flex flex-col items-center", children: [
520
+ /* @__PURE__ */ jsx(
521
+ LazyNoContent,
522
+ {
523
+ icon: "sicon-shopping-bag",
524
+ message: t("common.errors.error_occurred", "Something went wrong")
525
+ }
526
+ ),
527
+ /* @__PURE__ */ jsx("button", { type: "button", className: "link--primary mt-4", onClick: retryFilters, children: t("common.elements.try_again", "Try again") })
528
+ ] }) : /* @__PURE__ */ jsx(
529
+ ItemsList,
458
530
  {
459
- product: prod,
460
- index: idx,
461
- sizes: showFilters ? FILTERED_PRODUCT_IMAGE_SIZES : void 0
531
+ resetKey: `${listKey}-${selectedSort}${filteredKey}`,
532
+ items: shownProducts,
533
+ loader,
534
+ mode: shownNext ? "infinite" : "static",
535
+ pageUrl: location.pathname + location.searchStr,
536
+ className: "s-products-list flex-1 min-w-0",
537
+ itemsClassName: `s-products-list-wrapper s-products-list-vertical-cards${showFilters ? " s-products-list-with-filters" : ""}`,
538
+ skeleton: /* @__PURE__ */ jsx(ProductCardSkeleton, {}),
539
+ skeletonType: "item",
540
+ skeletonCount: 12,
541
+ empty: /* @__PURE__ */ jsx(
542
+ LazyNoContent,
543
+ {
544
+ icon: "sicon-shopping-bag",
545
+ message: t(
546
+ "pages.categories.no_products",
547
+ "No products found in this category"
548
+ )
549
+ }
550
+ ),
551
+ t: (key, fallback) => t(key, fallback || key),
552
+ children: (items) => items.map((prod, idx) => /* @__PURE__ */ jsx(
553
+ ProductCard,
554
+ {
555
+ product: prod,
556
+ index: idx,
557
+ sizes: showFilters ? FILTERED_PRODUCT_IMAGE_SIZES : void 0
558
+ },
559
+ prod.id
560
+ ))
462
561
  },
463
- prod.id
464
- ))
465
- },
466
- `${listKey}-${selectedSort}`
467
- ) }),
562
+ `${listKey}-${selectedSort}${filteredKey}`
563
+ )
564
+ }
565
+ ),
468
566
  /* @__PURE__ */ jsx(HookSlot, { name: "product:list.items.end" })
469
567
  ] })
470
568
  ] }),
@@ -523,6 +621,6 @@ var ProductListing = {
523
621
  Component: ProductListPage
524
622
  };
525
623
 
526
- export { ProductListPage, ProductListing, head, productListLoader };
624
+ export { ProductListPage, ProductListing, head, parseFiltersFromSearch, productListLoader, useAppliedFilters };
527
625
  //# sourceMappingURL=product-listing.js.map
528
626
  //# sourceMappingURL=product-listing.js.map