@salla.sa/twilight-theme-engine 1.0.92 → 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.
Files changed (192) hide show
  1. package/dist/{AddToCartForm-NJDWY5UO.js → AddToCartForm-MASXVJOI.js} +3 -3
  2. package/dist/{AddToCartForm-NJDWY5UO.js.map → AddToCartForm-MASXVJOI.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-KNLY6INT.js → BlogAuthorPage-KRT7MRTC.js} +11 -11
  4. package/dist/{BlogAuthorPage-KNLY6INT.js.map → BlogAuthorPage-KRT7MRTC.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-PKJJEVJN.js → BlogCategoryPage-OP3ETAMT.js} +11 -11
  6. package/dist/{BlogCategoryPage-PKJJEVJN.js.map → BlogCategoryPage-OP3ETAMT.js.map} +1 -1
  7. package/dist/{BlogPage-JSCQWH4K.js → BlogPage-RGAQVUDI.js} +9 -9
  8. package/dist/{BlogPage-JSCQWH4K.js.map → BlogPage-RGAQVUDI.js.map} +1 -1
  9. package/dist/{BlogSinglePage-VGSUYBPQ.js → BlogSinglePage-VG4UXBTL.js} +9 -9
  10. package/dist/{BlogSinglePage-VGSUYBPQ.js.map → BlogSinglePage-VG4UXBTL.js.map} +1 -1
  11. package/dist/{BlogTagPage-7RBVWWVO.js → BlogTagPage-G4IVHJD5.js} +11 -11
  12. package/dist/{BlogTagPage-7RBVWWVO.js.map → BlogTagPage-G4IVHJD5.js.map} +1 -1
  13. package/dist/{BrandsPage-2EZAYDFS.js → BrandsPage-2JMPPOOU.js} +10 -10
  14. package/dist/{BrandsPage-2EZAYDFS.js.map → BrandsPage-2JMPPOOU.js.map} +1 -1
  15. package/dist/{Breadcrumb-3BZBCWDK.js → Breadcrumb-I3ZOGG2Y.js} +9 -9
  16. package/dist/{Breadcrumb-3BZBCWDK.js.map → Breadcrumb-I3ZOGG2Y.js.map} +1 -1
  17. package/dist/{CartItem-O6DFABXA.js → CartItem-YTPYETW6.js} +9 -9
  18. package/dist/{CartItem-O6DFABXA.js.map → CartItem-YTPYETW6.js.map} +1 -1
  19. package/dist/{CartSummary-3U4F2BLY.js → CartSummary-DND7BO26.js} +9 -9
  20. package/dist/{CartSummary-3U4F2BLY.js.map → CartSummary-DND7BO26.js.map} +1 -1
  21. package/dist/{Copyright-UGII52NH.js → Copyright-RWML3BQV.js} +3 -3
  22. package/dist/{Copyright-UGII52NH.js.map → Copyright-RWML3BQV.js.map} +1 -1
  23. package/dist/{CustomerLayout-EI2PAOU6.js → CustomerLayout-HCYVBODI.js} +9 -9
  24. package/dist/{CustomerLayout-EI2PAOU6.js.map → CustomerLayout-HCYVBODI.js.map} +1 -1
  25. package/dist/{Footer-TW4N2GMF.js → Footer-3GEKWEQD.js} +4 -4
  26. package/dist/{Footer-TW4N2GMF.js.map → Footer-3GEKWEQD.js.map} +1 -1
  27. package/dist/{Header-YW7FOVIW.js → Header-QG4UO3MF.js} +6 -5
  28. package/dist/{Header-YW7FOVIW.js.map → Header-QG4UO3MF.js.map} +1 -1
  29. package/dist/{LoyaltyPage-G6IYKWME.js → LoyaltyPage-ZMFYQMQY.js} +9 -9
  30. package/dist/{LoyaltyPage-G6IYKWME.js.map → LoyaltyPage-ZMFYQMQY.js.map} +1 -1
  31. package/dist/{LoyaltyPointsPage-RXXL6C74.js → LoyaltyPointsPage-5PB6IFLY.js} +3 -3
  32. package/dist/{LoyaltyPointsPage-RXXL6C74.js.map → LoyaltyPointsPage-5PB6IFLY.js.map} +1 -1
  33. package/dist/{MainMenu-7KRYJ7OP.js → MainMenu-SAUMNMBF.js} +3 -3
  34. package/dist/{MainMenu-7KRYJ7OP.js.map → MainMenu-SAUMNMBF.js.map} +1 -1
  35. package/dist/{MasterLayout-WLLTQJAY.js → MasterLayout-TY223YR7.js} +9 -9
  36. package/dist/{MasterLayout-WLLTQJAY.js.map → MasterLayout-TY223YR7.js.map} +1 -1
  37. package/dist/{MobileMenu-MV4SBF2W.js → MobileMenu-2WOWOFQB.js} +9 -9
  38. package/dist/{MobileMenu-MV4SBF2W.js.map → MobileMenu-2WOWOFQB.js.map} +1 -1
  39. package/dist/{NotificationsPage-MSVZN25W.js → NotificationsPage-6FX4SOZU.js} +9 -9
  40. package/dist/{NotificationsPage-MSVZN25W.js.map → NotificationsPage-6FX4SOZU.js.map} +1 -1
  41. package/dist/{OrderSinglePage-3YXNPLEV.js → OrderSinglePage-RUMSJIFD.js} +10 -10
  42. package/dist/{OrderSinglePage-3YXNPLEV.js.map → OrderSinglePage-RUMSJIFD.js.map} +1 -1
  43. package/dist/{OrdersPage-JXQSQLSQ.js → OrdersPage-B4Q4QIEM.js} +9 -9
  44. package/dist/{OrdersPage-JXQSQLSQ.js.map → OrdersPage-B4Q4QIEM.js.map} +1 -1
  45. package/dist/{PageSingle-4S2G45RQ.js → PageSingle-F4TDNKUM.js} +3 -3
  46. package/dist/{PageSingle-4S2G45RQ.js.map → PageSingle-F4TDNKUM.js.map} +1 -1
  47. package/dist/{ProductDetails-OUZMXQCC.js → ProductDetails-BNVVUDBH.js} +3 -3
  48. package/dist/{ProductDetails-OUZMXQCC.js.map → ProductDetails-BNVVUDBH.js.map} +1 -1
  49. package/dist/{ProfilePage-HK5LZYDT.js → ProfilePage-OJSAXSC2.js} +9 -9
  50. package/dist/{ProfilePage-HK5LZYDT.js.map → ProfilePage-OJSAXSC2.js.map} +1 -1
  51. package/dist/{ReviewsPage-V3MPIT6B.js → ReviewsPage-3IJKJKTY.js} +3 -3
  52. package/dist/{ReviewsPage-V3MPIT6B.js.map → ReviewsPage-3IJKJKTY.js.map} +1 -1
  53. package/dist/{SeoCartWidget-JOCFGXSU.js → SeoCartWidget-4PN2DW54.js} +9 -9
  54. package/dist/{SeoCartWidget-JOCFGXSU.js.map → SeoCartWidget-4PN2DW54.js.map} +1 -1
  55. package/dist/{SettingsPage-4BBBQQQJ.js → SettingsPage-BCRNV4GU.js} +9 -9
  56. package/dist/{SettingsPage-4BBBQQQJ.js.map → SettingsPage-BCRNV4GU.js.map} +1 -1
  57. package/dist/{StoreClosedNotification-BL5BRSY7.js → StoreClosedNotification-IRUTRLIH.js} +10 -10
  58. package/dist/{StoreClosedNotification-BL5BRSY7.js.map → StoreClosedNotification-IRUTRLIH.js.map} +1 -1
  59. package/dist/{TestimonialsPage-KT5PM4SO.js → TestimonialsPage-YU4PLOLR.js} +3 -3
  60. package/dist/{TestimonialsPage-KT5PM4SO.js.map → TestimonialsPage-YU4PLOLR.js.map} +1 -1
  61. package/dist/{ThankYouPage-4MXMOGE3.js → ThankYouPage-MUDELEIQ.js} +9 -9
  62. package/dist/{ThankYouPage-4MXMOGE3.js.map → ThankYouPage-MUDELEIQ.js.map} +1 -1
  63. package/dist/{WalletPage-SPNV3SVO.js → WalletPage-2I4KTR5E.js} +9 -9
  64. package/dist/{WalletPage-SPNV3SVO.js.map → WalletPage-2I4KTR5E.js.map} +1 -1
  65. package/dist/{WishlistPage-GZYVL7M4.js → WishlistPage-7AYL3RUD.js} +11 -11
  66. package/dist/{WishlistPage-GZYVL7M4.js.map → WishlistPage-7AYL3RUD.js.map} +1 -1
  67. package/dist/api/blog.js +3 -2
  68. package/dist/api/brands.js +3 -2
  69. package/dist/api/cart.js +3 -2
  70. package/dist/api/category.js +3 -2
  71. package/dist/api/loyalty.js +3 -2
  72. package/dist/api/order.js +3 -2
  73. package/dist/api/page.js +3 -2
  74. package/dist/api/product.js +3 -2
  75. package/dist/api/wishlist.js +4 -3
  76. package/dist/{chunk-B2G7S4UR.js → chunk-3MIFT4VQ.js} +3 -3
  77. package/dist/{chunk-B2G7S4UR.js.map → chunk-3MIFT4VQ.js.map} +1 -1
  78. package/dist/{chunk-HIZ2SEJE.js → chunk-3PXONLUK.js} +3 -3
  79. package/dist/{chunk-HIZ2SEJE.js.map → chunk-3PXONLUK.js.map} +1 -1
  80. package/dist/{chunk-GAXVDCMA.js → chunk-43D2CG4F.js} +3 -3
  81. package/dist/{chunk-GAXVDCMA.js.map → chunk-43D2CG4F.js.map} +1 -1
  82. package/dist/{chunk-AMSEXJGY.js → chunk-AV6AAVNU.js} +6 -6
  83. package/dist/{chunk-AMSEXJGY.js.map → chunk-AV6AAVNU.js.map} +1 -1
  84. package/dist/{chunk-UGLZPGPF.js → chunk-C4RXPVDF.js} +4 -4
  85. package/dist/{chunk-UGLZPGPF.js.map → chunk-C4RXPVDF.js.map} +1 -1
  86. package/dist/{chunk-556OT3BN.js → chunk-CEYT3JER.js} +3 -3
  87. package/dist/{chunk-556OT3BN.js.map → chunk-CEYT3JER.js.map} +1 -1
  88. package/dist/{chunk-FFCYACTA.js → chunk-DV6SJHL5.js} +3 -3
  89. package/dist/{chunk-FFCYACTA.js.map → chunk-DV6SJHL5.js.map} +1 -1
  90. package/dist/{chunk-JWJK5K6G.js → chunk-H7CVJFTK.js} +7 -7
  91. package/dist/{chunk-JWJK5K6G.js.map → chunk-H7CVJFTK.js.map} +1 -1
  92. package/dist/{chunk-27Z442XF.js → chunk-HCA2TE4G.js} +3 -3
  93. package/dist/{chunk-27Z442XF.js.map → chunk-HCA2TE4G.js.map} +1 -1
  94. package/dist/{chunk-X35KC3VM.js → chunk-HR3QJ3LW.js} +4 -4
  95. package/dist/{chunk-X35KC3VM.js.map → chunk-HR3QJ3LW.js.map} +1 -1
  96. package/dist/{chunk-6N33IKYP.js → chunk-JJARU7YP.js} +18 -3
  97. package/dist/chunk-JJARU7YP.js.map +1 -0
  98. package/dist/{chunk-6ZMNTJM3.js → chunk-JTOVO3ZU.js} +23 -2
  99. package/dist/chunk-JTOVO3ZU.js.map +1 -0
  100. package/dist/chunk-KZM7HXJ3.js +14 -0
  101. package/dist/{chunk-JPQSCLDG.js.map → chunk-KZM7HXJ3.js.map} +1 -1
  102. package/dist/{chunk-I4O4BOJV.js → chunk-LA7KZ2XY.js} +7 -7
  103. package/dist/{chunk-I4O4BOJV.js.map → chunk-LA7KZ2XY.js.map} +1 -1
  104. package/dist/{chunk-7X4XGKXO.js → chunk-LPQ5FUMJ.js} +3 -3
  105. package/dist/{chunk-7X4XGKXO.js.map → chunk-LPQ5FUMJ.js.map} +1 -1
  106. package/dist/{chunk-VCIGJB62.js → chunk-OM26SAHA.js} +4 -4
  107. package/dist/{chunk-VCIGJB62.js.map → chunk-OM26SAHA.js.map} +1 -1
  108. package/dist/{chunk-ROZYGY5L.js → chunk-OMKLPCBA.js} +3 -3
  109. package/dist/{chunk-ROZYGY5L.js.map → chunk-OMKLPCBA.js.map} +1 -1
  110. package/dist/{chunk-OHXODJAA.js → chunk-RKQH63G2.js} +3 -3
  111. package/dist/{chunk-OHXODJAA.js.map → chunk-RKQH63G2.js.map} +1 -1
  112. package/dist/{chunk-A2F2YCMS.js → chunk-RPDMNNRW.js} +27 -14
  113. package/dist/chunk-RPDMNNRW.js.map +1 -0
  114. package/dist/{chunk-YGJMUJVR.js → chunk-TEOVJ6WU.js} +3 -3
  115. package/dist/{chunk-YGJMUJVR.js.map → chunk-TEOVJ6WU.js.map} +1 -1
  116. package/dist/{chunk-VBZFPXFW.js → chunk-TJF6YZ5I.js} +5 -5
  117. package/dist/{chunk-VBZFPXFW.js.map → chunk-TJF6YZ5I.js.map} +1 -1
  118. package/dist/{chunk-I4LYRR2O.js → chunk-UURVAJ42.js} +3 -3
  119. package/dist/{chunk-I4LYRR2O.js.map → chunk-UURVAJ42.js.map} +1 -1
  120. package/dist/{chunk-FCWHOLVA.js → chunk-WHJZP3QJ.js} +6 -6
  121. package/dist/{chunk-FCWHOLVA.js.map → chunk-WHJZP3QJ.js.map} +1 -1
  122. package/dist/{chunk-Y2SZHUTP.js → chunk-Y357MBJI.js} +3 -3
  123. package/dist/{chunk-Y2SZHUTP.js.map → chunk-Y357MBJI.js.map} +1 -1
  124. package/dist/{chunk-WSBVUIRW.js → chunk-Y7XVWQXG.js} +3 -3
  125. package/dist/{chunk-WSBVUIRW.js.map → chunk-Y7XVWQXG.js.map} +1 -1
  126. package/dist/{chunk-L2JL2J2X.js → chunk-YDFOJBEY.js} +19 -3
  127. package/dist/chunk-YDFOJBEY.js.map +1 -0
  128. package/dist/{chunk-L5RO65A4.js → chunk-ZFNLX3F7.js} +5 -5
  129. package/dist/{chunk-L5RO65A4.js.map → chunk-ZFNLX3F7.js.map} +1 -1
  130. package/dist/components/cart/index.js +1 -1
  131. package/dist/components/common/index.js +1 -1
  132. package/dist/components/drawer/index.js +7 -7
  133. package/dist/components/home/index.js +10 -10
  134. package/dist/components/layout/Footer.d.ts.map +1 -1
  135. package/dist/components/layout/index.js +1 -1
  136. package/dist/components/product/index.js +8 -8
  137. package/dist/components/store/index.js +9 -9
  138. package/dist/components/toast/index.js +2 -2
  139. package/dist/{document-class-DUYOFGG5.js → document-class-AJGI7GKJ.js} +6 -5
  140. package/dist/{document-class-DUYOFGG5.js.map → document-class-AJGI7GKJ.js.map} +1 -1
  141. package/dist/hooks/index.js +7 -7
  142. package/dist/hooks/useGtm.js +7 -7
  143. package/dist/hooks/useMoney.js +7 -7
  144. package/dist/hooks/useStore.js +7 -7
  145. package/dist/index.js +7 -7
  146. package/dist/native-app/index.d.ts +21 -0
  147. package/dist/native-app/index.d.ts.map +1 -1
  148. package/dist/native-app/index.js +1 -1
  149. package/dist/{navigation-BRWTNATO.js → navigation-BARZWXJZ.js} +5 -5
  150. package/dist/{navigation-BRWTNATO.js.map → navigation-BARZWXJZ.js.map} +1 -1
  151. package/dist/{navigation-ZEY4KF4D.js → navigation-KTFJWOWI.js} +4 -3
  152. package/dist/navigation-KTFJWOWI.js.map +1 -0
  153. package/dist/{not-found-GEOZNKN5.js → not-found-NK6ZFJ7H.js} +10 -10
  154. package/dist/{not-found-GEOZNKN5.js.map → not-found-NK6ZFJ7H.js.map} +1 -1
  155. package/dist/providers/NavigationProvider.d.ts +6 -0
  156. package/dist/providers/NavigationProvider.d.ts.map +1 -1
  157. package/dist/providers/TwilightProvider.d.ts.map +1 -1
  158. package/dist/providers/index.js +7 -7
  159. package/dist/providers/native-spa-webview.d.ts +13 -0
  160. package/dist/providers/native-spa-webview.d.ts.map +1 -0
  161. package/dist/routes/account/orders.js +4 -3
  162. package/dist/routes/account.js +11 -10
  163. package/dist/routes/account.js.map +1 -1
  164. package/dist/routes/blog.js +8 -7
  165. package/dist/routes/blog.js.map +1 -1
  166. package/dist/routes/brands.js +4 -3
  167. package/dist/routes/brands.js.map +1 -1
  168. package/dist/routes/cart.js +14 -14
  169. package/dist/routes/home.js +11 -11
  170. package/dist/routes/index.js +3 -2
  171. package/dist/routes/loyalty.js +5 -4
  172. package/dist/routes/loyalty.js.map +1 -1
  173. package/dist/routes/page.js +4 -3
  174. package/dist/routes/page.js.map +1 -1
  175. package/dist/routes/product-listing.js +12 -12
  176. package/dist/routes/product.js +10 -10
  177. package/dist/routes/seo-redirects.js +3 -2
  178. package/dist/routes/testimonials.js +2 -2
  179. package/dist/routes/thank-you.js +4 -3
  180. package/dist/routes/thank-you.js.map +1 -1
  181. package/dist/skeleton.js +11 -11
  182. package/dist/tanstack.js +6 -6
  183. package/dist/types/salla-sdk.d.ts +4 -0
  184. package/dist/types/salla-sdk.d.ts.map +1 -1
  185. package/package.json +1 -1
  186. package/tailwind/components/layout/Footer.tsx.txt +24 -3
  187. package/dist/chunk-6N33IKYP.js.map +0 -1
  188. package/dist/chunk-6ZMNTJM3.js.map +0 -1
  189. package/dist/chunk-A2F2YCMS.js.map +0 -1
  190. package/dist/chunk-JPQSCLDG.js +0 -14
  191. package/dist/chunk-L2JL2J2X.js.map +0 -1
  192. package/dist/navigation-ZEY4KF4D.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Inside the Salla app, tells the SDK this storefront is the app's SPA shell
3
+ * (`theme.is_spa_webview`). The SDK and Salla's components keep their native
4
+ * hand-offs behind that flag, so with it set:
5
+ * - `salla.cart.submit()` (every checkout button) opens the app's checkout
6
+ * (`mobile::checkout.open`) instead of loading the checkout page in the webview;
7
+ * - `<salla-scopes>` opens the app's branch sheet (`mobile::scope.open`).
8
+ *
9
+ * A value the app or the store config already gives (even `false`) is kept.
10
+ * Nothing happens outside the app.
11
+ */
12
+ export declare function useNativeSpaWebview(): void;
13
+ //# sourceMappingURL=native-spa-webview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-spa-webview.d.ts","sourceRoot":"","sources":["../../src/providers/native-spa-webview.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAU1C"}
@@ -1,9 +1,10 @@
1
- export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-AMSEXJGY.js';
2
- import '../../chunk-YGJMUJVR.js';
1
+ export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-AV6AAVNU.js';
2
+ import '../../chunk-TEOVJ6WU.js';
3
3
  import '../../chunk-4SZZPXM2.js';
4
- import '../../chunk-6ZMNTJM3.js';
4
+ import '../../chunk-JTOVO3ZU.js';
5
5
  import '../../chunk-OUW6WESU.js';
6
6
  import '../../chunk-QGOPTVV5.js';
7
+ import '../../chunk-JJARU7YP.js';
7
8
  import '../../chunk-HSWRYXC7.js';
8
9
  import '../../chunk-N2S25NXP.js';
9
10
  import '../../chunk-T72DAX7R.js';
@@ -1,13 +1,14 @@
1
1
  import { wallet } from '../chunk-HQAFPDJK.js';
2
- export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-AMSEXJGY.js';
3
- import '../chunk-YGJMUJVR.js';
2
+ export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-AV6AAVNU.js';
3
+ import '../chunk-TEOVJ6WU.js';
4
4
  import { notification } from '../chunk-6OOTDFC7.js';
5
- import { wishlist } from '../chunk-I4LYRR2O.js';
6
- import '../chunk-556OT3BN.js';
5
+ import { wishlist } from '../chunk-UURVAJ42.js';
6
+ import '../chunk-CEYT3JER.js';
7
7
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
8
- import { unauthorized, orUnauthorized } from '../chunk-6ZMNTJM3.js';
8
+ import { unauthorized, orUnauthorized } from '../chunk-JTOVO3ZU.js';
9
9
  import { RouteId } from '../chunk-OUW6WESU.js';
10
10
  import { getAuthToken } from '../chunk-QGOPTVV5.js';
11
+ import '../chunk-JJARU7YP.js';
11
12
  import '../chunk-HSWRYXC7.js';
12
13
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
13
14
  import '../chunk-T72DAX7R.js';
@@ -29,7 +30,7 @@ async function profileLoader(_ctx) {
29
30
 
30
31
  // src/routes/account/profile/index.tsx
31
32
  var LazyProfilePage = lazy(
32
- () => import('../ProfilePage-HK5LZYDT.js').then((m) => ({ default: m.ProfilePage }))
33
+ () => import('../ProfilePage-OJSAXSC2.js').then((m) => ({ default: m.ProfilePage }))
33
34
  );
34
35
  var ProfilePage = LazyProfilePage;
35
36
  var Profile = {
@@ -71,7 +72,7 @@ async function wishlistLoader(ctx) {
71
72
 
72
73
  // src/routes/account/wishlist/index.tsx
73
74
  var LazyWishlistPage = lazy(
74
- () => import('../WishlistPage-GZYVL7M4.js').then((m) => ({ default: m.WishlistPage }))
75
+ () => import('../WishlistPage-7AYL3RUD.js').then((m) => ({ default: m.WishlistPage }))
75
76
  );
76
77
  var WishlistPage = LazyWishlistPage;
77
78
  var Wishlist = {
@@ -113,7 +114,7 @@ async function walletLoader(ctx) {
113
114
  }
114
115
 
115
116
  // src/routes/account/wallet/index.tsx
116
- var LazyWalletPage = lazy(() => import('../WalletPage-SPNV3SVO.js').then((m) => ({ default: m.WalletPage })));
117
+ var LazyWalletPage = lazy(() => import('../WalletPage-2I4KTR5E.js').then((m) => ({ default: m.WalletPage })));
117
118
  var WalletPage = LazyWalletPage;
118
119
  var Wallet = {
119
120
  id: RouteId.CUSTOMER_WALLET,
@@ -149,7 +150,7 @@ async function notificationsLoader(_ctx) {
149
150
 
150
151
  // src/routes/account/notifications/index.tsx
151
152
  var LazyNotificationsPage = lazy(
152
- () => import('../NotificationsPage-MSVZN25W.js').then((m) => ({ default: m.NotificationsPage }))
153
+ () => import('../NotificationsPage-6FX4SOZU.js').then((m) => ({ default: m.NotificationsPage }))
153
154
  );
154
155
  var NotificationsPage = LazyNotificationsPage;
155
156
  var Notifications = {
@@ -182,7 +183,7 @@ async function settingsLoader(_ctx) {
182
183
 
183
184
  // src/routes/account/settings/index.tsx
184
185
  var LazySettingsPage = lazy(
185
- () => import('../SettingsPage-4BBBQQQJ.js').then((m) => ({ default: m.SettingsPage }))
186
+ () => import('../SettingsPage-BCRNV4GU.js').then((m) => ({ default: m.SettingsPage }))
186
187
  );
187
188
  var SettingsPage = LazySettingsPage;
188
189
  var Settings = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/account/profile/loader.ts","../../src/routes/account/profile/index.tsx","../../src/routes/account/wishlist/loader.ts","../../src/routes/account/wishlist/index.tsx","../../src/routes/account/wallet/loader.ts","../../src/routes/account/wallet/index.tsx","../../src/routes/account/notifications/loader.ts","../../src/routes/account/notifications/index.tsx","../../src/routes/account/settings/loader.ts","../../src/routes/account/settings/index.tsx"],"names":["lazy"],"mappings":"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","file":"account.js","sourcesContent":["import type { ProfilePageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function profileLoader(_ctx: { locale: string }): Promise<ProfilePageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n page: {\n title: i18n.t('common.titles.profile') || 'Profile',\n slug: RouteId.CUSTOMER_PROFILE,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { profileLoader } from './loader';\nimport type { ProfilePageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyProfilePage = lazy(() =>\n import('./ProfilePage').then((m) => ({ default: m.ProfilePage }))\n);\n\nexport const ProfilePage = LazyProfilePage;\nexport { profileLoader } from './loader';\nexport type { ProfilePageProps } from './types';\n\nexport const Profile = {\n id: RouteId.CUSTOMER_PROFILE,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: ProfilePageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<ProfilePageProps> => {\n const data = await profileLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as ProfilePageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: ProfilePageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyProfilePage,\n} as const;\n","import type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wishlist } from '../../../api/wishlist';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function wishlistLoader(ctx: LoaderContext): Promise<WishlistPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wishlist.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wishlist') || 'Wishlist',\n slug: RouteId.CUSTOMER_WISHLIST,\n },\n query: { page: pageNum },\n products: data.items,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { wishlistLoader } from './loader';\nimport type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWishlistPage = lazy(() =>\n import('./WishlistPage').then((m) => ({ default: m.WishlistPage }))\n);\n\nexport const WishlistPage = LazyWishlistPage;\nexport { wishlistLoader } from './loader';\nexport type { WishlistPageProps } from './types';\n\nexport const Wishlist = {\n id: RouteId.CUSTOMER_WISHLIST,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WishlistPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WishlistPageProps> => {\n const data = await wishlistLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WishlistPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WishlistPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWishlistPage,\n} as const;\n","import type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wallet } from '../../../api/wallet';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function walletLoader(ctx: LoaderContext): Promise<WalletPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wallet.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wallet') || 'Wallet',\n slug: RouteId.CUSTOMER_WALLET,\n },\n query: { page: pageNum },\n transactions: data.items,\n balance: data.balance,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { walletLoader } from './loader';\nimport type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWalletPage = lazy(() => import('./WalletPage').then((m) => ({ default: m.WalletPage })));\n\nexport const WalletPage = LazyWalletPage;\nexport { walletLoader } from './loader';\nexport type { WalletPageProps } from './types';\n\nexport const Wallet = {\n id: RouteId.CUSTOMER_WALLET,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WalletPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WalletPageProps> => {\n const data = await walletLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WalletPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WalletPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWalletPage,\n} as const;\n","import { notification } from '../../../api/notification';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport type { NotificationsPageProps } from './types';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function notificationsLoader(_ctx: {\n locale: string;\n}): Promise<NotificationsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const i18n = getTwilightContext().i18n;\n const response = await orUnauthorized(notification.list());\n\n return {\n page: {\n title: i18n.t('common.titles.notifications') || 'Notifications',\n slug: RouteId.CUSTOMER_NOTIFICATIONS,\n },\n notifications: response.data,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { notificationsLoader } from './loader';\nimport type { NotificationsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyNotificationsPage = lazy(() =>\n import('./NotificationsPage').then((m) => ({ default: m.NotificationsPage }))\n);\n\nexport const NotificationsPage = LazyNotificationsPage;\nexport { notificationsLoader } from './loader';\nexport type { NotificationsPageProps, Notification } from './types';\n\nexport const Notifications = {\n id: RouteId.CUSTOMER_NOTIFICATIONS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: NotificationsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<NotificationsPageProps> => {\n const data = await notificationsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as NotificationsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: NotificationsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyNotificationsPage,\n} as const;\n","import type { SettingsPageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\n\nexport async function settingsLoader(_ctx: { locale: string }): Promise<SettingsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n // Twig's slug for this page; the advertisements API does not filter it, as on Twig.\n page: { title: i18n.t('common.titles.settings') || 'Settings', slug: 'customer-settings' },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { settingsLoader } from './loader';\nimport type { SettingsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazySettingsPage = lazy(() =>\n import('./SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nexport const SettingsPage = LazySettingsPage;\nexport { settingsLoader } from './loader';\nexport type { SettingsPageProps } from './types';\n\nexport const Settings = {\n id: RouteId.CUSTOMER_SETTINGS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: SettingsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<SettingsPageProps> => {\n const data = await settingsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as SettingsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: SettingsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazySettingsPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/account/profile/loader.ts","../../src/routes/account/profile/index.tsx","../../src/routes/account/wishlist/loader.ts","../../src/routes/account/wishlist/index.tsx","../../src/routes/account/wallet/loader.ts","../../src/routes/account/wallet/index.tsx","../../src/routes/account/notifications/loader.ts","../../src/routes/account/notifications/index.tsx","../../src/routes/account/settings/loader.ts","../../src/routes/account/settings/index.tsx"],"names":["lazy"],"mappings":"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","file":"account.js","sourcesContent":["import type { ProfilePageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function profileLoader(_ctx: { locale: string }): Promise<ProfilePageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n page: {\n title: i18n.t('common.titles.profile') || 'Profile',\n slug: RouteId.CUSTOMER_PROFILE,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { profileLoader } from './loader';\nimport type { ProfilePageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyProfilePage = lazy(() =>\n import('./ProfilePage').then((m) => ({ default: m.ProfilePage }))\n);\n\nexport const ProfilePage = LazyProfilePage;\nexport { profileLoader } from './loader';\nexport type { ProfilePageProps } from './types';\n\nexport const Profile = {\n id: RouteId.CUSTOMER_PROFILE,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: ProfilePageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<ProfilePageProps> => {\n const data = await profileLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as ProfilePageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: ProfilePageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyProfilePage,\n} as const;\n","import type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wishlist } from '../../../api/wishlist';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function wishlistLoader(ctx: LoaderContext): Promise<WishlistPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wishlist.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wishlist') || 'Wishlist',\n slug: RouteId.CUSTOMER_WISHLIST,\n },\n query: { page: pageNum },\n products: data.items,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { wishlistLoader } from './loader';\nimport type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWishlistPage = lazy(() =>\n import('./WishlistPage').then((m) => ({ default: m.WishlistPage }))\n);\n\nexport const WishlistPage = LazyWishlistPage;\nexport { wishlistLoader } from './loader';\nexport type { WishlistPageProps } from './types';\n\nexport const Wishlist = {\n id: RouteId.CUSTOMER_WISHLIST,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WishlistPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WishlistPageProps> => {\n const data = await wishlistLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WishlistPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WishlistPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWishlistPage,\n} as const;\n","import type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wallet } from '../../../api/wallet';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function walletLoader(ctx: LoaderContext): Promise<WalletPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wallet.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wallet') || 'Wallet',\n slug: RouteId.CUSTOMER_WALLET,\n },\n query: { page: pageNum },\n transactions: data.items,\n balance: data.balance,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { walletLoader } from './loader';\nimport type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWalletPage = lazy(() => import('./WalletPage').then((m) => ({ default: m.WalletPage })));\n\nexport const WalletPage = LazyWalletPage;\nexport { walletLoader } from './loader';\nexport type { WalletPageProps } from './types';\n\nexport const Wallet = {\n id: RouteId.CUSTOMER_WALLET,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WalletPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WalletPageProps> => {\n const data = await walletLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WalletPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WalletPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWalletPage,\n} as const;\n","import { notification } from '../../../api/notification';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport type { NotificationsPageProps } from './types';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function notificationsLoader(_ctx: {\n locale: string;\n}): Promise<NotificationsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const i18n = getTwilightContext().i18n;\n const response = await orUnauthorized(notification.list());\n\n return {\n page: {\n title: i18n.t('common.titles.notifications') || 'Notifications',\n slug: RouteId.CUSTOMER_NOTIFICATIONS,\n },\n notifications: response.data,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { notificationsLoader } from './loader';\nimport type { NotificationsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyNotificationsPage = lazy(() =>\n import('./NotificationsPage').then((m) => ({ default: m.NotificationsPage }))\n);\n\nexport const NotificationsPage = LazyNotificationsPage;\nexport { notificationsLoader } from './loader';\nexport type { NotificationsPageProps, Notification } from './types';\n\nexport const Notifications = {\n id: RouteId.CUSTOMER_NOTIFICATIONS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: NotificationsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<NotificationsPageProps> => {\n const data = await notificationsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as NotificationsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: NotificationsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyNotificationsPage,\n} as const;\n","import type { SettingsPageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\n\nexport async function settingsLoader(_ctx: { locale: string }): Promise<SettingsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n // Twig's slug for this page; the advertisements API does not filter it, as on Twig.\n page: { title: i18n.t('common.titles.settings') || 'Settings', slug: 'customer-settings' },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { settingsLoader } from './loader';\nimport type { SettingsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazySettingsPage = lazy(() =>\n import('./SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nexport const SettingsPage = LazySettingsPage;\nexport { settingsLoader } from './loader';\nexport type { SettingsPageProps } from './types';\n\nexport const Settings = {\n id: RouteId.CUSTOMER_SETTINGS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: SettingsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<SettingsPageProps> => {\n const data = await settingsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as SettingsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: SettingsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazySettingsPage,\n} as const;\n"]}
@@ -1,8 +1,9 @@
1
- import { blog } from '../chunk-FFCYACTA.js';
1
+ import { blog } from '../chunk-DV6SJHL5.js';
2
2
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
3
- import { notFound, orThrow } from '../chunk-6ZMNTJM3.js';
3
+ import { notFound, orThrow } from '../chunk-JTOVO3ZU.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
5
  import '../chunk-QGOPTVV5.js';
6
+ import '../chunk-JJARU7YP.js';
6
7
  import '../chunk-HSWRYXC7.js';
7
8
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
8
9
  import '../chunk-T72DAX7R.js';
@@ -143,18 +144,18 @@ async function blogTagLoader({
143
144
  }
144
145
 
145
146
  // src/routes/blog/index.tsx
146
- var LazyBlogPage = lazy(() => import('../BlogPage-JSCQWH4K.js').then((m) => ({ default: m.BlogPage })));
147
+ var LazyBlogPage = lazy(() => import('../BlogPage-RGAQVUDI.js').then((m) => ({ default: m.BlogPage })));
147
148
  var LazyBlogSinglePage = lazy(
148
- () => import('../BlogSinglePage-VGSUYBPQ.js').then((m) => ({ default: m.BlogSinglePage }))
149
+ () => import('../BlogSinglePage-VG4UXBTL.js').then((m) => ({ default: m.BlogSinglePage }))
149
150
  );
150
151
  var LazyBlogAuthorPage = lazy(
151
- () => import('../BlogAuthorPage-KNLY6INT.js').then((m) => ({ default: m.BlogAuthorPage }))
152
+ () => import('../BlogAuthorPage-KRT7MRTC.js').then((m) => ({ default: m.BlogAuthorPage }))
152
153
  );
153
154
  var LazyBlogCategoryPage = lazy(
154
- () => import('../BlogCategoryPage-PKJJEVJN.js').then((m) => ({ default: m.BlogCategoryPage }))
155
+ () => import('../BlogCategoryPage-OP3ETAMT.js').then((m) => ({ default: m.BlogCategoryPage }))
155
156
  );
156
157
  var LazyBlogTagPage = lazy(
157
- () => import('../BlogTagPage-7RBVWWVO.js').then((m) => ({ default: m.BlogTagPage }))
158
+ () => import('../BlogTagPage-G4IVHJD5.js').then((m) => ({ default: m.BlogTagPage }))
158
159
  );
159
160
  var BlogPage = LazyBlogPage;
160
161
  var BlogSinglePage = LazyBlogSinglePage;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/blog/loader.ts","../../src/routes/blog/index.tsx"],"names":[],"mappings":"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","file":"blog.js","sourcesContent":["import { blog } from '../../api/blog';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport { notFound, orThrow } from '../../providers/NavigationProvider';\nimport type { Breadcrumb } from '../../types';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\n\nexport async function blogLoader(): Promise<BlogPageProps> {\n const i18n = getTwilightContext().i18n;\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n ];\n\n const page = {\n slug: RouteId.BLOG_INDEX,\n title: i18n.t('blocks.footer.blog') || 'Blog',\n breadcrumbs,\n };\n\n try {\n const overview = await blog.get();\n return {\n page,\n articles: overview.articles,\n categories: overview.categories,\n slides: overview.slides,\n popular: overview.popular,\n };\n } catch (_error) {\n return {\n page,\n articles: [],\n categories: [],\n slides: [],\n popular: [],\n };\n }\n}\n\nexport async function blogSingleLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogSinglePageProps> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n // The API answers a non-numeric id with 417, which `orThrow` would pass through as an error.\n if (!/^\\d+$/.test(id)) throw notFound();\n const article = await blog.articles.findOrThrow(id);\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: article.name, url: article.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_SINGLE,\n id: article.id,\n title: article.name,\n breadcrumbs,\n },\n article,\n related: article.related,\n };\n}\n\nexport async function blogAuthorLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<BlogAuthorLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ author: id })),\n blog.get(),\n ]);\n const author = response.author;\n // The API answers an unknown id without the author object: 404 instead of a TypeError (500).\n if (!author) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: author.name, url: author.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_INDEX_AUTHOR,\n id,\n title: author.name,\n breadcrumbs,\n },\n author,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogCategoryLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogCategoryLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ category: id })),\n blog.get(),\n ]);\n const category = response.category;\n if (!category) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: category.name, url: category.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_CATEGORY, id: category.id, title: category.name, breadcrumbs },\n blogCategory: category,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogTagLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogTagLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ tag: id })),\n blog.get(),\n ]);\n const tag = response.tag;\n if (!tag) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: tag.name, url: tag.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_TAG, id: tag.id, title: tag.name, breadcrumbs },\n blogTag: tag,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategory as BlogCategoryType,\n CategoryMeta,\n BlogTag as BlogTagType,\n BlogAuthor as BlogAuthorType,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nconst LazyBlogPage = lazy(() => import('./BlogPage').then((m) => ({ default: m.BlogPage })));\nconst LazyBlogSinglePage = lazy(() =>\n import('./BlogSinglePage').then((m) => ({ default: m.BlogSinglePage }))\n);\nconst LazyBlogAuthorPage = lazy(() =>\n import('./BlogAuthorPage').then((m) => ({ default: m.BlogAuthorPage }))\n);\nconst LazyBlogCategoryPage = lazy(() =>\n import('./BlogCategoryPage').then((m) => ({ default: m.BlogCategoryPage }))\n);\nconst LazyBlogTagPage = lazy(() =>\n import('./BlogTagPage').then((m) => ({ default: m.BlogTagPage }))\n);\n\nexport const BlogPage = LazyBlogPage;\nexport const BlogSinglePage = LazyBlogSinglePage;\nexport const BlogAuthorPage = LazyBlogAuthorPage;\nexport const BlogCategoryPage = LazyBlogCategoryPage;\nexport const BlogTagPage = LazyBlogTagPage;\nexport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nexport type {\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n BlogPageProps,\n BlogSinglePageProps,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategoryType,\n CategoryMeta,\n BlogTagType,\n BlogAuthorType,\n};\n\nasync function blogLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BlogPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogPageProps> {\n const data = await blogLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BlogPageProps;\n }\n return data;\n}\n\nfunction blogHead(ctx: TwilightContext, data: BlogPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogSingleLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogSinglePageProps,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogSinglePageProps> {\n const data = await blogSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogSinglePageProps;\n }\n return data;\n}\n\nfunction blogSingleHead(ctx: TwilightContext, data: BlogSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.article.meta?.title ?? data.article.name,\n description: data.article.meta?.description ?? data.article.description,\n canonical: data.article.meta?.canonical ?? data.article.url,\n openGraph: {\n title: data.article.meta?.title ?? data.article.name,\n images: data.article.meta?.og_image ?? data.article.image,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogAuthorLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: BlogAuthorLoaderData,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogAuthorLoaderData> {\n const data = await blogAuthorLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogAuthorLoaderData;\n }\n return data;\n}\n\nfunction blogAuthorHead(ctx: TwilightContext, data: BlogAuthorLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.author.name,\n description: `Articles by ${data.author.name}`,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogCategoryLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogCategoryLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogCategoryLoaderData> {\n const data = await blogCategoryLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogCategoryLoaderData;\n }\n return data;\n}\n\nfunction blogCategoryHead(ctx: TwilightContext, data: BlogCategoryLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogCategory.meta?.title ?? data.blogCategory.name,\n description: data.blogCategory.meta?.description ?? `Articles in ${data.blogCategory.name}`,\n canonical: data.blogCategory.meta?.canonical ?? data.blogCategory.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogTagLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogTagLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogTagLoaderData> {\n const data = await blogTagLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogTagLoaderData;\n }\n return data;\n}\n\nfunction blogTagHead(ctx: TwilightContext, data: BlogTagLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogTag.name,\n description: `Articles tagged with ${data.blogTag.name}`,\n canonical: data.blogTag.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Blog = {\n id: RouteId.BLOG_INDEX,\n loader: blogLoaderWithExtend,\n head: blogHead,\n Component: LazyBlogPage,\n} as const;\nexport const BlogSingle = {\n id: RouteId.BLOG_SINGLE,\n loader: blogSingleLoaderWithExtend,\n head: blogSingleHead,\n Component: LazyBlogSinglePage,\n} as const;\nexport const BlogAuthorRoute = {\n id: RouteId.BLOG_INDEX_AUTHOR,\n loader: blogAuthorLoaderWithExtend,\n head: blogAuthorHead,\n Component: LazyBlogAuthorPage,\n} as const;\nexport const BlogCategoryRoute = {\n id: RouteId.BLOG_INDEX_CATEGORY,\n loader: blogCategoryLoaderWithExtend,\n head: blogCategoryHead,\n Component: LazyBlogCategoryPage,\n} as const;\nexport const BlogTagRoute = {\n id: RouteId.BLOG_INDEX_TAG,\n loader: blogTagLoaderWithExtend,\n head: blogTagHead,\n Component: LazyBlogTagPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/blog/loader.ts","../../src/routes/blog/index.tsx"],"names":[],"mappings":"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","file":"blog.js","sourcesContent":["import { blog } from '../../api/blog';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport { notFound, orThrow } from '../../providers/NavigationProvider';\nimport type { Breadcrumb } from '../../types';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\n\nexport async function blogLoader(): Promise<BlogPageProps> {\n const i18n = getTwilightContext().i18n;\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n ];\n\n const page = {\n slug: RouteId.BLOG_INDEX,\n title: i18n.t('blocks.footer.blog') || 'Blog',\n breadcrumbs,\n };\n\n try {\n const overview = await blog.get();\n return {\n page,\n articles: overview.articles,\n categories: overview.categories,\n slides: overview.slides,\n popular: overview.popular,\n };\n } catch (_error) {\n return {\n page,\n articles: [],\n categories: [],\n slides: [],\n popular: [],\n };\n }\n}\n\nexport async function blogSingleLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogSinglePageProps> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n // The API answers a non-numeric id with 417, which `orThrow` would pass through as an error.\n if (!/^\\d+$/.test(id)) throw notFound();\n const article = await blog.articles.findOrThrow(id);\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: article.name, url: article.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_SINGLE,\n id: article.id,\n title: article.name,\n breadcrumbs,\n },\n article,\n related: article.related,\n };\n}\n\nexport async function blogAuthorLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<BlogAuthorLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ author: id })),\n blog.get(),\n ]);\n const author = response.author;\n // The API answers an unknown id without the author object: 404 instead of a TypeError (500).\n if (!author) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: author.name, url: author.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_INDEX_AUTHOR,\n id,\n title: author.name,\n breadcrumbs,\n },\n author,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogCategoryLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogCategoryLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ category: id })),\n blog.get(),\n ]);\n const category = response.category;\n if (!category) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: category.name, url: category.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_CATEGORY, id: category.id, title: category.name, breadcrumbs },\n blogCategory: category,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogTagLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogTagLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ tag: id })),\n blog.get(),\n ]);\n const tag = response.tag;\n if (!tag) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: tag.name, url: tag.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_TAG, id: tag.id, title: tag.name, breadcrumbs },\n blogTag: tag,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategory as BlogCategoryType,\n CategoryMeta,\n BlogTag as BlogTagType,\n BlogAuthor as BlogAuthorType,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nconst LazyBlogPage = lazy(() => import('./BlogPage').then((m) => ({ default: m.BlogPage })));\nconst LazyBlogSinglePage = lazy(() =>\n import('./BlogSinglePage').then((m) => ({ default: m.BlogSinglePage }))\n);\nconst LazyBlogAuthorPage = lazy(() =>\n import('./BlogAuthorPage').then((m) => ({ default: m.BlogAuthorPage }))\n);\nconst LazyBlogCategoryPage = lazy(() =>\n import('./BlogCategoryPage').then((m) => ({ default: m.BlogCategoryPage }))\n);\nconst LazyBlogTagPage = lazy(() =>\n import('./BlogTagPage').then((m) => ({ default: m.BlogTagPage }))\n);\n\nexport const BlogPage = LazyBlogPage;\nexport const BlogSinglePage = LazyBlogSinglePage;\nexport const BlogAuthorPage = LazyBlogAuthorPage;\nexport const BlogCategoryPage = LazyBlogCategoryPage;\nexport const BlogTagPage = LazyBlogTagPage;\nexport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nexport type {\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n BlogPageProps,\n BlogSinglePageProps,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategoryType,\n CategoryMeta,\n BlogTagType,\n BlogAuthorType,\n};\n\nasync function blogLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BlogPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogPageProps> {\n const data = await blogLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BlogPageProps;\n }\n return data;\n}\n\nfunction blogHead(ctx: TwilightContext, data: BlogPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogSingleLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogSinglePageProps,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogSinglePageProps> {\n const data = await blogSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogSinglePageProps;\n }\n return data;\n}\n\nfunction blogSingleHead(ctx: TwilightContext, data: BlogSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.article.meta?.title ?? data.article.name,\n description: data.article.meta?.description ?? data.article.description,\n canonical: data.article.meta?.canonical ?? data.article.url,\n openGraph: {\n title: data.article.meta?.title ?? data.article.name,\n images: data.article.meta?.og_image ?? data.article.image,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogAuthorLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: BlogAuthorLoaderData,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogAuthorLoaderData> {\n const data = await blogAuthorLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogAuthorLoaderData;\n }\n return data;\n}\n\nfunction blogAuthorHead(ctx: TwilightContext, data: BlogAuthorLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.author.name,\n description: `Articles by ${data.author.name}`,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogCategoryLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogCategoryLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogCategoryLoaderData> {\n const data = await blogCategoryLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogCategoryLoaderData;\n }\n return data;\n}\n\nfunction blogCategoryHead(ctx: TwilightContext, data: BlogCategoryLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogCategory.meta?.title ?? data.blogCategory.name,\n description: data.blogCategory.meta?.description ?? `Articles in ${data.blogCategory.name}`,\n canonical: data.blogCategory.meta?.canonical ?? data.blogCategory.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogTagLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogTagLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogTagLoaderData> {\n const data = await blogTagLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogTagLoaderData;\n }\n return data;\n}\n\nfunction blogTagHead(ctx: TwilightContext, data: BlogTagLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogTag.name,\n description: `Articles tagged with ${data.blogTag.name}`,\n canonical: data.blogTag.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Blog = {\n id: RouteId.BLOG_INDEX,\n loader: blogLoaderWithExtend,\n head: blogHead,\n Component: LazyBlogPage,\n} as const;\nexport const BlogSingle = {\n id: RouteId.BLOG_SINGLE,\n loader: blogSingleLoaderWithExtend,\n head: blogSingleHead,\n Component: LazyBlogSinglePage,\n} as const;\nexport const BlogAuthorRoute = {\n id: RouteId.BLOG_INDEX_AUTHOR,\n loader: blogAuthorLoaderWithExtend,\n head: blogAuthorHead,\n Component: LazyBlogAuthorPage,\n} as const;\nexport const BlogCategoryRoute = {\n id: RouteId.BLOG_INDEX_CATEGORY,\n loader: blogCategoryLoaderWithExtend,\n head: blogCategoryHead,\n Component: LazyBlogCategoryPage,\n} as const;\nexport const BlogTagRoute = {\n id: RouteId.BLOG_INDEX_TAG,\n loader: blogTagLoaderWithExtend,\n head: blogTagHead,\n Component: LazyBlogTagPage,\n} as const;\n"]}
@@ -1,8 +1,9 @@
1
- import { brand } from '../chunk-7X4XGKXO.js';
1
+ import { brand } from '../chunk-LPQ5FUMJ.js';
2
2
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
3
- import '../chunk-6ZMNTJM3.js';
3
+ import '../chunk-JTOVO3ZU.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
5
  import '../chunk-QGOPTVV5.js';
6
+ import '../chunk-JJARU7YP.js';
6
7
  import '../chunk-HSWRYXC7.js';
7
8
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
8
9
  import '../chunk-T72DAX7R.js';
@@ -22,7 +23,7 @@ async function brandsLoader() {
22
23
  }
23
24
 
24
25
  // src/routes/brands/index.tsx
25
- var LazyBrandsPage = lazy(() => import('../BrandsPage-2EZAYDFS.js').then((m) => ({ default: m.BrandsPage })));
26
+ var LazyBrandsPage = lazy(() => import('../BrandsPage-2JMPPOOU.js').then((m) => ({ default: m.BrandsPage })));
26
27
  var BrandsPage = LazyBrandsPage;
27
28
  async function brandsLoaderWithExtend(_ctx, extend) {
28
29
  const data = await brandsLoader();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/brands/loader.ts","../../src/routes/brands/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAKA,eAAsB,YAAA,GAAyC;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,MAAM,MAAM,IAAA,EAAK;AACzC,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,YAAA,EAAc,OAAO,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,IAAK,QAAA,EAAS;AAAA,IACtF,MAAA,EAAQ,KAAA;AAAA,IACR,UAAA,EAAY,EAAE,IAAA;AAAK,GACrB;AACF;;;ACJA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,UAAA,GAAa;AAI1B,eAAe,sBAAA,CACb,MACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,IAAA,GAAO,MAAM,YAAA,EAAa;AAEhC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAI,CAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,UAAA,CAAW,KAAsB,IAAA,EAAuC;AAC/E,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,IACjB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,IACvB,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAI,OAAA,CAAQ,YAAA;AAAA,EACZ,MAAA,EAAQ,sBAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AACb","file":"brands.js","sourcesContent":["import type { BrandsPageProps } from './types';\nimport { brand } from '../../api/brands';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function brandsLoader(): Promise<BrandsPageProps> {\n const { items, next } = await brand.list();\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.BRANDS_INDEX, title: i18n.t('common.titles.brands') || 'Brands' },\n brands: items,\n pagination: { next },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { brandsLoader } from './loader';\nimport type { BrandsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyBrandsPage = lazy(() => import('./BrandsPage').then((m) => ({ default: m.BrandsPage })));\n\nexport const BrandsPage = LazyBrandsPage;\nexport { brandsLoader };\nexport type { BrandsPageProps, Brand, BrandsGroup } from './types';\n\nasync function brandsLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BrandsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BrandsPageProps> {\n const data = await brandsLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BrandsPageProps;\n }\n return data;\n}\n\nfunction brandsHead(ctx: TwilightContext, data: BrandsPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Brands = {\n id: RouteId.BRANDS_INDEX,\n loader: brandsLoaderWithExtend,\n head: brandsHead,\n Component: LazyBrandsPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/brands/loader.ts","../../src/routes/brands/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,eAAsB,YAAA,GAAyC;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,MAAM,MAAM,IAAA,EAAK;AACzC,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,YAAA,EAAc,OAAO,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,IAAK,QAAA,EAAS;AAAA,IACtF,MAAA,EAAQ,KAAA;AAAA,IACR,UAAA,EAAY,EAAE,IAAA;AAAK,GACrB;AACF;;;ACJA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,UAAA,GAAa;AAI1B,eAAe,sBAAA,CACb,MACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,IAAA,GAAO,MAAM,YAAA,EAAa;AAEhC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAI,CAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,UAAA,CAAW,KAAsB,IAAA,EAAuC;AAC/E,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,IACjB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,IACvB,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAI,OAAA,CAAQ,YAAA;AAAA,EACZ,MAAA,EAAQ,sBAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AACb","file":"brands.js","sourcesContent":["import type { BrandsPageProps } from './types';\nimport { brand } from '../../api/brands';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function brandsLoader(): Promise<BrandsPageProps> {\n const { items, next } = await brand.list();\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.BRANDS_INDEX, title: i18n.t('common.titles.brands') || 'Brands' },\n brands: items,\n pagination: { next },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { brandsLoader } from './loader';\nimport type { BrandsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyBrandsPage = lazy(() => import('./BrandsPage').then((m) => ({ default: m.BrandsPage })));\n\nexport const BrandsPage = LazyBrandsPage;\nexport { brandsLoader };\nexport type { BrandsPageProps, Brand, BrandsGroup } from './types';\n\nasync function brandsLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BrandsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BrandsPageProps> {\n const data = await brandsLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BrandsPageProps;\n }\n return data;\n}\n\nfunction brandsHead(ctx: TwilightContext, data: BrandsPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Brands = {\n id: RouteId.BRANDS_INDEX,\n loader: brandsLoaderWithExtend,\n head: brandsHead,\n Component: LazyBrandsPage,\n} as const;\n"]}
@@ -1,16 +1,16 @@
1
- import { cart } from '../chunk-27Z442XF.js';
2
- import { loyalty } from '../chunk-B2G7S4UR.js';
1
+ import { cart } from '../chunk-HCA2TE4G.js';
2
+ import { loyalty } from '../chunk-3MIFT4VQ.js';
3
3
  import { CartSkeleton } from '../chunk-N7CCSGZF.js';
4
- import '../chunk-Y2SZHUTP.js';
5
- import '../chunk-VBZFPXFW.js';
4
+ import '../chunk-Y357MBJI.js';
5
+ import '../chunk-TJF6YZ5I.js';
6
6
  import '../chunk-FZYR4BA2.js';
7
- import '../chunk-556OT3BN.js';
8
- import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-JPQSCLDG.js';
9
- import '../chunk-I4O4BOJV.js';
7
+ import '../chunk-CEYT3JER.js';
8
+ import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-KZM7HXJ3.js';
9
+ import '../chunk-LA7KZ2XY.js';
10
10
  import '../chunk-Y32RHCOH.js';
11
- import '../chunk-A2F2YCMS.js';
12
- import '../chunk-FCWHOLVA.js';
13
- import '../chunk-L2JL2J2X.js';
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';
@@ -19,7 +19,7 @@ import '../chunk-VVZNW5CB.js';
19
19
  import '../chunk-5G7NYNX6.js';
20
20
  import '../chunk-GD26FI4J.js';
21
21
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
22
- import '../chunk-6ZMNTJM3.js';
22
+ import '../chunk-JTOVO3ZU.js';
23
23
  import { RouteId } from '../chunk-OUW6WESU.js';
24
24
  import '../chunk-SAGXF3MU.js';
25
25
  import '../chunk-HI5V5X3S.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-ROZYGY5L.js';
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';
@@ -50,8 +50,8 @@ import '../chunk-6BZ5TKEV.js';
50
50
  import '../chunk-FZKRSGLP.js';
51
51
  import '../chunk-7V5HOZW4.js';
52
52
  import '../chunk-YA6ABQB7.js';
53
- import '../chunk-HIZ2SEJE.js';
54
- import '../chunk-6N33IKYP.js';
53
+ import '../chunk-3PXONLUK.js';
54
+ import '../chunk-JJARU7YP.js';
55
55
  import '../chunk-HSWRYXC7.js';
56
56
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
57
57
  import '../chunk-T72DAX7R.js';
@@ -1,12 +1,12 @@
1
- export { Home, HomeSkeleton, homeLoader } from '../chunk-Y2SZHUTP.js';
2
- export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-VBZFPXFW.js';
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
- import '../chunk-556OT3BN.js';
5
- import '../chunk-I4O4BOJV.js';
4
+ import '../chunk-CEYT3JER.js';
5
+ import '../chunk-LA7KZ2XY.js';
6
6
  import '../chunk-Y32RHCOH.js';
7
- import '../chunk-A2F2YCMS.js';
8
- import '../chunk-FCWHOLVA.js';
9
- import '../chunk-L2JL2J2X.js';
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';
@@ -15,7 +15,7 @@ import '../chunk-VVZNW5CB.js';
15
15
  import '../chunk-5G7NYNX6.js';
16
16
  import '../chunk-GD26FI4J.js';
17
17
  import '../chunk-4SZZPXM2.js';
18
- import '../chunk-6ZMNTJM3.js';
18
+ import '../chunk-JTOVO3ZU.js';
19
19
  import '../chunk-OUW6WESU.js';
20
20
  import '../chunk-SAGXF3MU.js';
21
21
  import '../chunk-HI5V5X3S.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-ROZYGY5L.js';
41
+ import '../chunk-OMKLPCBA.js';
42
42
  import '../chunk-AXW67SY7.js';
43
43
  import '../chunk-BYMOPN2S.js';
44
44
  import '../chunk-SKLEJJ6M.js';
@@ -46,8 +46,8 @@ import '../chunk-6BZ5TKEV.js';
46
46
  import '../chunk-FZKRSGLP.js';
47
47
  import '../chunk-7V5HOZW4.js';
48
48
  import '../chunk-YA6ABQB7.js';
49
- import '../chunk-HIZ2SEJE.js';
50
- import '../chunk-6N33IKYP.js';
49
+ import '../chunk-3PXONLUK.js';
50
+ import '../chunk-JJARU7YP.js';
51
51
  import '../chunk-HSWRYXC7.js';
52
52
  import '../chunk-N2S25NXP.js';
53
53
  import '../chunk-T72DAX7R.js';
@@ -1,8 +1,9 @@
1
- export { slugBrandRedirectLoader } from '../chunk-OHXODJAA.js';
2
- import '../chunk-6ZMNTJM3.js';
1
+ export { slugBrandRedirectLoader } from '../chunk-RKQH63G2.js';
2
+ import '../chunk-JTOVO3ZU.js';
3
3
  import '../chunk-OUW6WESU.js';
4
4
  import '../chunk-QGOPTVV5.js';
5
5
  import '../chunk-TYNZ5B2B.js';
6
+ import '../chunk-JJARU7YP.js';
6
7
  import '../chunk-HSWRYXC7.js';
7
8
  import '../chunk-N2S25NXP.js';
8
9
  export { FALLBACK_LOCALE, SUPPORTED_LOCALES, getLanguageInfo, isLocale } from '../chunk-T72DAX7R.js';
@@ -1,8 +1,9 @@
1
- import { loyalty } from '../chunk-B2G7S4UR.js';
1
+ import { loyalty } from '../chunk-3MIFT4VQ.js';
2
2
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
3
- import { unauthorized, orUnauthorized, redirect } from '../chunk-6ZMNTJM3.js';
3
+ import { unauthorized, orUnauthorized, redirect } from '../chunk-JTOVO3ZU.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
5
  import { getAuthToken } from '../chunk-QGOPTVV5.js';
6
+ import '../chunk-JJARU7YP.js';
6
7
  import '../chunk-HSWRYXC7.js';
7
8
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
8
9
  import { FALLBACK_LOCALE } from '../chunk-T72DAX7R.js';
@@ -56,10 +57,10 @@ async function loyaltyPointsLoader(locale) {
56
57
 
57
58
  // src/routes/loyalty/index.tsx
58
59
  var LazyLoyaltyPage = lazy(
59
- () => import('../LoyaltyPage-G6IYKWME.js').then((m) => ({ default: m.LoyaltyPage }))
60
+ () => import('../LoyaltyPage-ZMFYQMQY.js').then((m) => ({ default: m.LoyaltyPage }))
60
61
  );
61
62
  var LazyLoyaltyPointsPage = lazy(
62
- () => import('../LoyaltyPointsPage-RXXL6C74.js').then((m) => ({ default: m.LoyaltyPointsPage }))
63
+ () => import('../LoyaltyPointsPage-5PB6IFLY.js').then((m) => ({ default: m.LoyaltyPointsPage }))
63
64
  );
64
65
  var LoyaltyPage = LazyLoyaltyPage;
65
66
  var LoyaltyPointsPage = LazyLoyaltyPointsPage;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/loyalty/loader.ts","../../src/routes/loyalty/index.tsx"],"names":[],"mappings":"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","file":"loyalty.js","sourcesContent":["import { loyalty } from '../../api/loyalty';\nimport type { Loyalty, LoyaltyPageProps, LoyaltyPointsPageProps } from './types';\nimport { RouteId } from '../../router/route-ids';\nimport { orUnauthorized, redirect, unauthorized } from '../../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../../providers/locale-constants';\nimport { getTwilightContext } from '../../twilight/context';\nimport { getAuthToken } from '../../api/client';\n\nasync function getProgramOrGoHome(locale?: string): Promise<Loyalty> {\n try {\n return await loyalty.get();\n } catch (error) {\n // The API answers 400 when the store's loyalty program is off; like the Twig storefront, go home.\n if ((error as { response?: { status?: number } })?.response?.status === 400) {\n throw redirect(`/${locale || FALLBACK_LOCALE}`);\n }\n throw error;\n }\n}\n\nexport async function loyaltyLoader(locale?: string): Promise<LoyaltyPageProps> {\n const data = await getProgramOrGoHome(locale);\n const { i18n } = getTwilightContext();\n return {\n page: {\n slug: RouteId.LOYALTY,\n title: data.name,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('common.titles.loyalty_program'), url: '/loyalty' },\n ],\n },\n loyalty: data,\n };\n}\n\nexport async function loyaltyPointsLoader(locale?: string): Promise<LoyaltyPointsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n await orUnauthorized(getProgramOrGoHome(locale));\n const { i18n } = getTwilightContext();\n const title = i18n.t('pages.loyalty_program.loyalty_points');\n return {\n page: {\n slug: RouteId.CUSTOMER_LOYALTY_POINTS,\n title,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('common.titles.profile'), url: '/account/profile' },\n { name: title, url: '/loyalty_points' },\n ],\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { loyaltyLoader, loyaltyPointsLoader } from './loader';\nimport type { LoyaltyPageProps, LoyaltyPointsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyLoyaltyPage = lazy(() =>\n import('./LoyaltyPage').then((m) => ({ default: m.LoyaltyPage }))\n);\n\nconst LazyLoyaltyPointsPage = lazy(() =>\n import('./LoyaltyPointsPage').then((m) => ({ default: m.LoyaltyPointsPage }))\n);\n\nexport const LoyaltyPage = LazyLoyaltyPage;\nexport const LoyaltyPointsPage = LazyLoyaltyPointsPage;\nexport { loyaltyLoader, loyaltyPointsLoader } from './loader';\nexport type {\n LoyaltyPageProps,\n LoyaltyPointsPageProps,\n LoyaltyPoint,\n LoyaltyPrize,\n LoyaltyPrizeItem,\n} from './types';\n\nasync function loader(\n ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPageProps> {\n const data = await loyaltyLoader(ctx?.locale);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: LoyaltyPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Loyalty = { id: RouteId.LOYALTY, loader, head, Component: LazyLoyaltyPage } as const;\n\nasync function pointsLoader(\n ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPointsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPointsPageProps> {\n const data = await loyaltyPointsLoader(ctx?.locale);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPointsPageProps;\n }\n return data;\n}\n\nexport const LoyaltyPoints = {\n id: RouteId.CUSTOMER_LOYALTY_POINTS,\n loader: pointsLoader,\n head: (ctx: TwilightContext, data: LoyaltyPointsPageProps): HeadDescriptor => ({\n title: data.page.title,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyLoyaltyPointsPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/loyalty/loader.ts","../../src/routes/loyalty/index.tsx"],"names":[],"mappings":"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","file":"loyalty.js","sourcesContent":["import { loyalty } from '../../api/loyalty';\nimport type { Loyalty, LoyaltyPageProps, LoyaltyPointsPageProps } from './types';\nimport { RouteId } from '../../router/route-ids';\nimport { orUnauthorized, redirect, unauthorized } from '../../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../../providers/locale-constants';\nimport { getTwilightContext } from '../../twilight/context';\nimport { getAuthToken } from '../../api/client';\n\nasync function getProgramOrGoHome(locale?: string): Promise<Loyalty> {\n try {\n return await loyalty.get();\n } catch (error) {\n // The API answers 400 when the store's loyalty program is off; like the Twig storefront, go home.\n if ((error as { response?: { status?: number } })?.response?.status === 400) {\n throw redirect(`/${locale || FALLBACK_LOCALE}`);\n }\n throw error;\n }\n}\n\nexport async function loyaltyLoader(locale?: string): Promise<LoyaltyPageProps> {\n const data = await getProgramOrGoHome(locale);\n const { i18n } = getTwilightContext();\n return {\n page: {\n slug: RouteId.LOYALTY,\n title: data.name,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('common.titles.loyalty_program'), url: '/loyalty' },\n ],\n },\n loyalty: data,\n };\n}\n\nexport async function loyaltyPointsLoader(locale?: string): Promise<LoyaltyPointsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n await orUnauthorized(getProgramOrGoHome(locale));\n const { i18n } = getTwilightContext();\n const title = i18n.t('pages.loyalty_program.loyalty_points');\n return {\n page: {\n slug: RouteId.CUSTOMER_LOYALTY_POINTS,\n title,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('common.titles.profile'), url: '/account/profile' },\n { name: title, url: '/loyalty_points' },\n ],\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { loyaltyLoader, loyaltyPointsLoader } from './loader';\nimport type { LoyaltyPageProps, LoyaltyPointsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyLoyaltyPage = lazy(() =>\n import('./LoyaltyPage').then((m) => ({ default: m.LoyaltyPage }))\n);\n\nconst LazyLoyaltyPointsPage = lazy(() =>\n import('./LoyaltyPointsPage').then((m) => ({ default: m.LoyaltyPointsPage }))\n);\n\nexport const LoyaltyPage = LazyLoyaltyPage;\nexport const LoyaltyPointsPage = LazyLoyaltyPointsPage;\nexport { loyaltyLoader, loyaltyPointsLoader } from './loader';\nexport type {\n LoyaltyPageProps,\n LoyaltyPointsPageProps,\n LoyaltyPoint,\n LoyaltyPrize,\n LoyaltyPrizeItem,\n} from './types';\n\nasync function loader(\n ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPageProps> {\n const data = await loyaltyLoader(ctx?.locale);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: LoyaltyPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Loyalty = { id: RouteId.LOYALTY, loader, head, Component: LazyLoyaltyPage } as const;\n\nasync function pointsLoader(\n ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPointsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPointsPageProps> {\n const data = await loyaltyPointsLoader(ctx?.locale);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPointsPageProps;\n }\n return data;\n}\n\nexport const LoyaltyPoints = {\n id: RouteId.CUSTOMER_LOYALTY_POINTS,\n loader: pointsLoader,\n head: (ctx: TwilightContext, data: LoyaltyPointsPageProps): HeadDescriptor => ({\n title: data.page.title,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyLoyaltyPointsPage,\n} as const;\n"]}
@@ -1,8 +1,9 @@
1
- import { page } from '../chunk-WSBVUIRW.js';
1
+ import { page } from '../chunk-Y7XVWQXG.js';
2
2
  import { buildHreflangAlternates } from '../chunk-4SZZPXM2.js';
3
- import '../chunk-6ZMNTJM3.js';
3
+ import '../chunk-JTOVO3ZU.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
5
  import '../chunk-QGOPTVV5.js';
6
+ import '../chunk-JJARU7YP.js';
6
7
  import '../chunk-HSWRYXC7.js';
7
8
  import '../chunk-N2S25NXP.js';
8
9
  import '../chunk-T72DAX7R.js';
@@ -27,7 +28,7 @@ async function pageSingleLoader({ params }) {
27
28
  }
28
29
 
29
30
  // src/routes/page/index.tsx
30
- var LazyPageSingle = lazy(() => import('../PageSingle-4S2G45RQ.js').then((m) => ({ default: m.PageSingle })));
31
+ var LazyPageSingle = lazy(() => import('../PageSingle-F4TDNKUM.js').then((m) => ({ default: m.PageSingle })));
31
32
  var PageSingleLazy = LazyPageSingle;
32
33
  async function loader(ctx, extend) {
33
34
  const data = await pageSingleLoader({ params: ctx.params });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/page/loader.ts","../../src/routes/page/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAKA,eAAsB,gBAAA,CAAiB,EAAE,MAAA,EAAO,EAAmD;AACjG,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,WAAA,CAAY,OAAO,EAAE,CAAA;AAC7C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,MAAM,OAAA,CAAQ,WAAA;AAAA,MACd,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA;AACnB,GACF;AACF;;;ACRA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,cAAA,GAAiB;AAI9B,eAAe,MAAA,CACb,KACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,OAAO,MAAM,gBAAA,CAAiB,EAAE,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAE1D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAuC;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,KAAA;AACxB,EAAA,MAAM,cAAc,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,YAAY,EAAE,CAAA;AAE7D,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,KAAK,IAAA,CAAK,GAAA;AAAA,IACrB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA,EAAK,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,cAAA;AAAA,MACrC,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY;AAAA,KACtC;AAAA,IACA,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAI,OAAA,CAAQ,WAAA;AAAA,EACZ,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,EAAW;AACb","file":"page.js","sourcesContent":["import type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport { page } from '../../api/page';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function pageSingleLoader({ params }: { params: IdParams }): Promise<PageSingleProps> {\n const data = await page.findOrThrow(params.id);\n return {\n page: {\n slug: RouteId.PAGE_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n content: data.content,\n metadata: data.metadata,\n created_at: data.created_at,\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { pageSingleLoader } from './loader';\nimport type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyPageSingle = lazy(() => import('./PageSingle').then((m) => ({ default: m.PageSingle })));\n\nexport const PageSingleLazy = LazyPageSingle;\nexport { pageSingleLoader } from './loader';\nexport type { PageSingleProps, StaticPage } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: PageSingleProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<PageSingleProps> {\n const data = await pageSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as PageSingleProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: PageSingleProps): HeadDescriptor {\n const title = data.page.title;\n const description = data.page.content?.replace(/<[^>]+>/g, '');\n\n const base: HeadDescriptor = {\n title,\n description,\n canonical: data.page.url,\n openGraph: {\n type: 'article',\n title,\n description,\n url: data.page.url,\n publishedTime: data.page.created_at?.published_time,\n modifiedTime: data.page.created_at?.modified_time,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const PageSingle = {\n id: RouteId.PAGE_SINGLE,\n loader,\n head,\n Component: LazyPageSingle,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/page/loader.ts","../../src/routes/page/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,eAAsB,gBAAA,CAAiB,EAAE,MAAA,EAAO,EAAmD;AACjG,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,WAAA,CAAY,OAAO,EAAE,CAAA;AAC7C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,MAAM,OAAA,CAAQ,WAAA;AAAA,MACd,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA;AACnB,GACF;AACF;;;ACRA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,cAAA,GAAiB;AAI9B,eAAe,MAAA,CACb,KACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,OAAO,MAAM,gBAAA,CAAiB,EAAE,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAE1D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAuC;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,KAAA;AACxB,EAAA,MAAM,cAAc,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,YAAY,EAAE,CAAA;AAE7D,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,KAAK,IAAA,CAAK,GAAA;AAAA,IACrB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA,EAAK,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,cAAA;AAAA,MACrC,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY;AAAA,KACtC;AAAA,IACA,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAI,OAAA,CAAQ,WAAA;AAAA,EACZ,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,EAAW;AACb","file":"page.js","sourcesContent":["import type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport { page } from '../../api/page';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function pageSingleLoader({ params }: { params: IdParams }): Promise<PageSingleProps> {\n const data = await page.findOrThrow(params.id);\n return {\n page: {\n slug: RouteId.PAGE_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n content: data.content,\n metadata: data.metadata,\n created_at: data.created_at,\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { pageSingleLoader } from './loader';\nimport type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyPageSingle = lazy(() => import('./PageSingle').then((m) => ({ default: m.PageSingle })));\n\nexport const PageSingleLazy = LazyPageSingle;\nexport { pageSingleLoader } from './loader';\nexport type { PageSingleProps, StaticPage } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: PageSingleProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<PageSingleProps> {\n const data = await pageSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as PageSingleProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: PageSingleProps): HeadDescriptor {\n const title = data.page.title;\n const description = data.page.content?.replace(/<[^>]+>/g, '');\n\n const base: HeadDescriptor = {\n title,\n description,\n canonical: data.page.url,\n openGraph: {\n type: 'article',\n title,\n description,\n url: data.page.url,\n publishedTime: data.page.created_at?.published_time,\n modifiedTime: data.page.created_at?.modified_time,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const PageSingle = {\n id: RouteId.PAGE_SINGLE,\n loader,\n head,\n Component: LazyPageSingle,\n} as const;\n"]}