@salla.sa/twilight-theme-engine 1.0.63 → 1.0.65

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 (223) hide show
  1. package/dist/{AddToCartForm-365O6IQY.js → AddToCartForm-NKXOZ6TW.js} +3 -3
  2. package/dist/{AddToCartForm-365O6IQY.js.map → AddToCartForm-NKXOZ6TW.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-QIII3YRK.js → BlogAuthorPage-GQPWTGT2.js} +9 -9
  4. package/dist/{BlogAuthorPage-QIII3YRK.js.map → BlogAuthorPage-GQPWTGT2.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-HNGWYTN6.js → BlogCategoryPage-LTSZDBIZ.js} +9 -9
  6. package/dist/{BlogCategoryPage-HNGWYTN6.js.map → BlogCategoryPage-LTSZDBIZ.js.map} +1 -1
  7. package/dist/{BlogPage-7NGO5VLL.js → BlogPage-QN7QL562.js} +7 -7
  8. package/dist/{BlogPage-7NGO5VLL.js.map → BlogPage-QN7QL562.js.map} +1 -1
  9. package/dist/{BlogSinglePage-Y42LPA2L.js → BlogSinglePage-7GVVVVBL.js} +7 -7
  10. package/dist/{BlogSinglePage-Y42LPA2L.js.map → BlogSinglePage-7GVVVVBL.js.map} +1 -1
  11. package/dist/{BlogTagPage-ZCFYLXH6.js → BlogTagPage-QKYXFRET.js} +9 -9
  12. package/dist/{BlogTagPage-ZCFYLXH6.js.map → BlogTagPage-QKYXFRET.js.map} +1 -1
  13. package/dist/{BrandsPage-PPJVASUW.js → BrandsPage-LF5NVBUE.js} +8 -8
  14. package/dist/{BrandsPage-PPJVASUW.js.map → BrandsPage-LF5NVBUE.js.map} +1 -1
  15. package/dist/{Breadcrumb-4DUAJK3V.js → Breadcrumb-E7KDHZX4.js} +7 -7
  16. package/dist/{Breadcrumb-4DUAJK3V.js.map → Breadcrumb-E7KDHZX4.js.map} +1 -1
  17. package/dist/{CartItem-T4N3HMXU.js → CartItem-RB5CTJT6.js} +7 -7
  18. package/dist/{CartItem-T4N3HMXU.js.map → CartItem-RB5CTJT6.js.map} +1 -1
  19. package/dist/{CartSummary-Z25JDFWN.js → CartSummary-JCYQ2SQD.js} +12 -7
  20. package/dist/CartSummary-JCYQ2SQD.js.map +1 -0
  21. package/dist/{Copyright-WNJIDKSR.js → Copyright-XXSKQ3TB.js} +3 -3
  22. package/dist/{Copyright-WNJIDKSR.js.map → Copyright-XXSKQ3TB.js.map} +1 -1
  23. package/dist/{CustomerLayout-A6DVYYC3.js → CustomerLayout-CBFF4QEB.js} +27 -11
  24. package/dist/CustomerLayout-CBFF4QEB.js.map +1 -0
  25. package/dist/{Footer-3YBOSAO5.js → Footer-NFN2EMI2.js} +7 -7
  26. package/dist/{Footer-3YBOSAO5.js.map → Footer-NFN2EMI2.js.map} +1 -1
  27. package/dist/{Header-6M7TVMSW.js → Header-THQIZ2IR.js} +5 -5
  28. package/dist/{Header-6M7TVMSW.js.map → Header-THQIZ2IR.js.map} +1 -1
  29. package/dist/{LoyaltyPage-XQJ6RDT6.js → LoyaltyPage-5SLR7TJX.js} +7 -7
  30. package/dist/{LoyaltyPage-XQJ6RDT6.js.map → LoyaltyPage-5SLR7TJX.js.map} +1 -1
  31. package/dist/{LoyaltyPointsPage-K75LJNNP.js → LoyaltyPointsPage-HSXFTJUH.js} +3 -3
  32. package/dist/{LoyaltyPointsPage-K75LJNNP.js.map → LoyaltyPointsPage-HSXFTJUH.js.map} +1 -1
  33. package/dist/{MainMenu-V7GPKDTU.js → MainMenu-7SVMOZ6P.js} +3 -3
  34. package/dist/{MainMenu-V7GPKDTU.js.map → MainMenu-7SVMOZ6P.js.map} +1 -1
  35. package/dist/{MasterLayout-MBQ4JM3D.js → MasterLayout-7IHDLNPZ.js} +7 -7
  36. package/dist/{MasterLayout-MBQ4JM3D.js.map → MasterLayout-7IHDLNPZ.js.map} +1 -1
  37. package/dist/{MobileMenu-UFX4ZHW7.js → MobileMenu-7HKRWQBQ.js} +7 -7
  38. package/dist/{MobileMenu-UFX4ZHW7.js.map → MobileMenu-7HKRWQBQ.js.map} +1 -1
  39. package/dist/{NotificationsPage-M3YK2HRM.js → NotificationsPage-4JX7GFXF.js} +7 -7
  40. package/dist/{NotificationsPage-M3YK2HRM.js.map → NotificationsPage-4JX7GFXF.js.map} +1 -1
  41. package/dist/OrderSinglePage-B7TBZ7TX.js +719 -0
  42. package/dist/OrderSinglePage-B7TBZ7TX.js.map +1 -0
  43. package/dist/OrdersPage-XZ2DAJYB.js +68 -0
  44. package/dist/OrdersPage-XZ2DAJYB.js.map +1 -0
  45. package/dist/{PageSingle-HRMSVNHN.js → PageSingle-QWT77P4S.js} +3 -3
  46. package/dist/{PageSingle-HRMSVNHN.js.map → PageSingle-QWT77P4S.js.map} +1 -1
  47. package/dist/{ProductDetails-GAC3NYQM.js → ProductDetails-5IQHNQPS.js} +3 -3
  48. package/dist/{ProductDetails-GAC3NYQM.js.map → ProductDetails-5IQHNQPS.js.map} +1 -1
  49. package/dist/{ProfilePage-33I2XTJ6.js → ProfilePage-R2JDY6BF.js} +7 -7
  50. package/dist/{ProfilePage-33I2XTJ6.js.map → ProfilePage-R2JDY6BF.js.map} +1 -1
  51. package/dist/{SeoCartWidget-AEG2YLEF.js → SeoCartWidget-I2FBWKI4.js} +7 -7
  52. package/dist/{SeoCartWidget-AEG2YLEF.js.map → SeoCartWidget-I2FBWKI4.js.map} +1 -1
  53. package/dist/{SettingsPage-N3M677LP.js → SettingsPage-7X5YPAXL.js} +7 -7
  54. package/dist/{SettingsPage-N3M677LP.js.map → SettingsPage-7X5YPAXL.js.map} +1 -1
  55. package/dist/{StoreClosedNotification-5MTDRRC3.js → StoreClosedNotification-5F4I3N27.js} +8 -8
  56. package/dist/{StoreClosedNotification-5MTDRRC3.js.map → StoreClosedNotification-5F4I3N27.js.map} +1 -1
  57. package/dist/{TestimonialsPage-Z64P6MZX.js → TestimonialsPage-7YXSU33Z.js} +3 -3
  58. package/dist/{TestimonialsPage-Z64P6MZX.js.map → TestimonialsPage-7YXSU33Z.js.map} +1 -1
  59. package/dist/{ThankYouPage-ZXQZMWCX.js → ThankYouPage-7BN53JTK.js} +7 -7
  60. package/dist/{ThankYouPage-ZXQZMWCX.js.map → ThankYouPage-7BN53JTK.js.map} +1 -1
  61. package/dist/{WalletPage-557AU5GH.js → WalletPage-JKXQSYPX.js} +7 -7
  62. package/dist/{WalletPage-557AU5GH.js.map → WalletPage-JKXQSYPX.js.map} +1 -1
  63. package/dist/{WishlistPage-HTDQW2N2.js → WishlistPage-CSFHKERP.js} +9 -9
  64. package/dist/{WishlistPage-HTDQW2N2.js.map → WishlistPage-CSFHKERP.js.map} +1 -1
  65. package/dist/api/brands.js +2 -2
  66. package/dist/api/cart.d.ts +5 -0
  67. package/dist/api/cart.d.ts.map +1 -1
  68. package/dist/api/cart.js +2 -2
  69. package/dist/api/category.js +2 -2
  70. package/dist/api/loyalty.js +2 -2
  71. package/dist/api/order.d.ts +22 -0
  72. package/dist/api/order.d.ts.map +1 -1
  73. package/dist/api/order.js +2 -2
  74. package/dist/api/page.js +2 -2
  75. package/dist/api/product.js +2 -2
  76. package/dist/api/wishlist.js +3 -3
  77. package/dist/{chunk-Q5UYV2EN.js → chunk-24QOBDMC.js} +8 -4
  78. package/dist/chunk-24QOBDMC.js.map +1 -0
  79. package/dist/{chunk-KILNHLWE.js → chunk-2BRCE7MK.js} +4 -4
  80. package/dist/{chunk-KILNHLWE.js.map → chunk-2BRCE7MK.js.map} +1 -1
  81. package/dist/{chunk-YEY3SO23.js → chunk-2QNDO2OY.js} +12 -3
  82. package/dist/chunk-2QNDO2OY.js.map +1 -0
  83. package/dist/{chunk-LUTMPFRW.js → chunk-347K33DP.js} +3 -3
  84. package/dist/{chunk-LUTMPFRW.js.map → chunk-347K33DP.js.map} +1 -1
  85. package/dist/{chunk-KHRIGLYL.js → chunk-43XFO6KF.js} +3 -3
  86. package/dist/{chunk-KHRIGLYL.js.map → chunk-43XFO6KF.js.map} +1 -1
  87. package/dist/{chunk-EIJXSBL6.js → chunk-55VTMG2H.js} +31 -51
  88. package/dist/chunk-55VTMG2H.js.map +1 -0
  89. package/dist/{chunk-UFPZXWGM.js → chunk-65JM62NV.js} +4 -4
  90. package/dist/{chunk-UFPZXWGM.js.map → chunk-65JM62NV.js.map} +1 -1
  91. package/dist/{chunk-HSVGQ2DV.js → chunk-6AV7RQ6H.js} +27 -21
  92. package/dist/chunk-6AV7RQ6H.js.map +1 -0
  93. package/dist/{chunk-KWHCKGLL.js → chunk-A6SKDX5E.js} +3 -3
  94. package/dist/{chunk-KWHCKGLL.js.map → chunk-A6SKDX5E.js.map} +1 -1
  95. package/dist/chunk-D5UIBY3V.js +47 -0
  96. package/dist/chunk-D5UIBY3V.js.map +1 -0
  97. package/dist/{chunk-Y7HKVYDG.js → chunk-EBMMJWX6.js} +7 -7
  98. package/dist/{chunk-Y7HKVYDG.js.map → chunk-EBMMJWX6.js.map} +1 -1
  99. package/dist/{chunk-YLPI4HDD.js → chunk-FY573DJA.js} +6 -6
  100. package/dist/{chunk-YLPI4HDD.js.map → chunk-FY573DJA.js.map} +1 -1
  101. package/dist/{chunk-EXKTSWBC.js → chunk-GRV7ELSP.js} +5 -5
  102. package/dist/{chunk-EXKTSWBC.js.map → chunk-GRV7ELSP.js.map} +1 -1
  103. package/dist/{chunk-PE3LLBNR.js → chunk-GXDBY4WB.js} +3 -3
  104. package/dist/{chunk-PE3LLBNR.js.map → chunk-GXDBY4WB.js.map} +1 -1
  105. package/dist/{chunk-I62RENKM.js → chunk-KBQXQKPZ.js} +14 -2
  106. package/dist/chunk-KBQXQKPZ.js.map +1 -0
  107. package/dist/{chunk-IC7YN4OQ.js → chunk-OJPJP7ML.js} +3 -3
  108. package/dist/{chunk-IC7YN4OQ.js.map → chunk-OJPJP7ML.js.map} +1 -1
  109. package/dist/{chunk-VLBQPVHM.js → chunk-P6DV6EHM.js} +3 -3
  110. package/dist/{chunk-VLBQPVHM.js.map → chunk-P6DV6EHM.js.map} +1 -1
  111. package/dist/{chunk-NPEI4SAZ.js → chunk-PDMVQCEV.js} +3 -3
  112. package/dist/{chunk-NPEI4SAZ.js.map → chunk-PDMVQCEV.js.map} +1 -1
  113. package/dist/{chunk-W66OHTSM.js → chunk-QYUYQPXN.js} +3 -3
  114. package/dist/{chunk-W66OHTSM.js.map → chunk-QYUYQPXN.js.map} +1 -1
  115. package/dist/{chunk-XFCJM6RN.js → chunk-RWTZH6G3.js} +16 -12
  116. package/dist/chunk-RWTZH6G3.js.map +1 -0
  117. package/dist/{chunk-OBSAH7K6.js → chunk-SVPXQCOA.js} +12 -4
  118. package/dist/chunk-SVPXQCOA.js.map +1 -0
  119. package/dist/{chunk-4KTY2FT6.js → chunk-UEKIAED3.js} +6 -6
  120. package/dist/{chunk-4KTY2FT6.js.map → chunk-UEKIAED3.js.map} +1 -1
  121. package/dist/{chunk-UH5ZXDEO.js → chunk-WF7DYPR6.js} +3 -3
  122. package/dist/{chunk-UH5ZXDEO.js.map → chunk-WF7DYPR6.js.map} +1 -1
  123. package/dist/chunk-XMZPFHE7.js +14 -0
  124. package/dist/{chunk-JKT44Y2M.js.map → chunk-XMZPFHE7.js.map} +1 -1
  125. package/dist/{chunk-S3CC2YGF.js → chunk-ZBARSETM.js} +3 -3
  126. package/dist/{chunk-S3CC2YGF.js.map → chunk-ZBARSETM.js.map} +1 -1
  127. package/dist/components/cart/CartSummary.d.ts.map +1 -1
  128. package/dist/components/cart/index.js +1 -1
  129. package/dist/components/common/index.js +1 -1
  130. package/dist/components/drawer/index.js +5 -5
  131. package/dist/components/home/index.js +8 -8
  132. package/dist/components/layout/CustomerLayout.d.ts.map +1 -1
  133. package/dist/components/layout/index.js +1 -1
  134. package/dist/components/product/index.js +6 -6
  135. package/dist/components/store/index.js +7 -7
  136. package/dist/components/toast/Toaster.d.ts.map +1 -1
  137. package/dist/components/toast/index.js +1 -1
  138. package/dist/{document-class-SKCL6IJF.js → document-class-ZLPAWZEX.js} +5 -5
  139. package/dist/{document-class-SKCL6IJF.js.map → document-class-ZLPAWZEX.js.map} +1 -1
  140. package/dist/hooks/index.js +5 -5
  141. package/dist/hooks/useGtm.js +5 -5
  142. package/dist/hooks/useMoney.d.ts +3 -3
  143. package/dist/hooks/useMoney.d.ts.map +1 -1
  144. package/dist/hooks/useMoney.js +5 -5
  145. package/dist/hooks/useStore.js +5 -5
  146. package/dist/index.js +5 -5
  147. package/dist/{navigation-YKRXGGSL.js → navigation-DU3BF72V.js} +3 -3
  148. package/dist/{navigation-YKRXGGSL.js.map → navigation-DU3BF72V.js.map} +1 -1
  149. package/dist/{navigation-ESPAHRXM.js → navigation-WB75NC6Y.js} +4 -4
  150. package/dist/{navigation-ESPAHRXM.js.map → navigation-WB75NC6Y.js.map} +1 -1
  151. package/dist/{not-found-KBOXJ3AG.js → not-found-MA54AXJB.js} +8 -8
  152. package/dist/{not-found-KBOXJ3AG.js.map → not-found-MA54AXJB.js.map} +1 -1
  153. package/dist/providers/NavigationProvider.d.ts.map +1 -1
  154. package/dist/providers/index.js +5 -5
  155. package/dist/providers/twilight-init.d.ts.map +1 -1
  156. package/dist/routes/account/notifications/loader.d.ts.map +1 -1
  157. package/dist/routes/account/orders/OrderSinglePage.d.ts +7 -1
  158. package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -1
  159. package/dist/routes/account/orders/OrdersPage.d.ts +2 -1
  160. package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -1
  161. package/dist/routes/account/orders/loader.d.ts.map +1 -1
  162. package/dist/routes/account/orders/single/OrderActions.d.ts +7 -0
  163. package/dist/routes/account/orders/single/OrderActions.d.ts.map +1 -0
  164. package/dist/routes/account/orders/single/OrderHeader.d.ts +8 -0
  165. package/dist/routes/account/orders/single/OrderHeader.d.ts.map +1 -0
  166. package/dist/routes/account/orders/single/OrderItemRow.d.ts +9 -0
  167. package/dist/routes/account/orders/single/OrderItemRow.d.ts.map +1 -0
  168. package/dist/routes/account/orders/single/OrderSections.d.ts +23 -0
  169. package/dist/routes/account/orders/single/OrderSections.d.ts.map +1 -0
  170. package/dist/routes/account/orders/single/types.d.ts +53 -0
  171. package/dist/routes/account/orders/single/types.d.ts.map +1 -0
  172. package/dist/routes/account/orders/types.d.ts +3 -0
  173. package/dist/routes/account/orders/types.d.ts.map +1 -1
  174. package/dist/routes/account/orders.js +3 -3
  175. package/dist/routes/account/profile/loader.d.ts.map +1 -1
  176. package/dist/routes/account/settings/loader.d.ts.map +1 -1
  177. package/dist/routes/account/wallet/loader.d.ts.map +1 -1
  178. package/dist/routes/account/wishlist/loader.d.ts.map +1 -1
  179. package/dist/routes/account.js +16 -15
  180. package/dist/routes/account.js.map +1 -1
  181. package/dist/routes/blog.js +7 -7
  182. package/dist/routes/brands.js +3 -3
  183. package/dist/routes/cart/CartPage.d.ts.map +1 -1
  184. package/dist/routes/cart.js +14 -18
  185. package/dist/routes/cart.js.map +1 -1
  186. package/dist/routes/home.js +9 -9
  187. package/dist/routes/index.js +2 -2
  188. package/dist/routes/loyalty.js +4 -4
  189. package/dist/routes/page.js +3 -3
  190. package/dist/routes/product-listing.js +12 -11
  191. package/dist/routes/product-listing.js.map +1 -1
  192. package/dist/routes/product.js +8 -8
  193. package/dist/routes/seo-redirects.d.ts +4 -0
  194. package/dist/routes/seo-redirects.d.ts.map +1 -1
  195. package/dist/routes/seo-redirects.js +2 -2
  196. package/dist/routes/testimonials.js +1 -1
  197. package/dist/routes/thank-you.js +3 -3
  198. package/dist/skeleton.js +9 -9
  199. package/dist/tanstack/document-class.d.ts.map +1 -1
  200. package/dist/tanstack/router.d.ts.map +1 -1
  201. package/dist/tanstack.js +6 -6
  202. package/dist/types/salla-sdk.d.ts +1 -1
  203. package/dist/types/salla-sdk.d.ts.map +1 -1
  204. package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
  205. package/dist/vite/index.js +12 -2
  206. package/dist/vite/index.js.map +1 -1
  207. package/package.json +1 -1
  208. package/dist/CartSummary-Z25JDFWN.js.map +0 -1
  209. package/dist/CustomerLayout-A6DVYYC3.js.map +0 -1
  210. package/dist/OrderSinglePage-7LIUMNRB.js +0 -502
  211. package/dist/OrderSinglePage-7LIUMNRB.js.map +0 -1
  212. package/dist/OrdersPage-WI4OSGBF.js +0 -252
  213. package/dist/OrdersPage-WI4OSGBF.js.map +0 -1
  214. package/dist/chunk-EIJXSBL6.js.map +0 -1
  215. package/dist/chunk-HSVGQ2DV.js.map +0 -1
  216. package/dist/chunk-I62RENKM.js.map +0 -1
  217. package/dist/chunk-IIYK56TI.js +0 -29
  218. package/dist/chunk-IIYK56TI.js.map +0 -1
  219. package/dist/chunk-JKT44Y2M.js +0 -14
  220. package/dist/chunk-OBSAH7K6.js.map +0 -1
  221. package/dist/chunk-Q5UYV2EN.js.map +0 -1
  222. package/dist/chunk-XFCJM6RN.js.map +0 -1
  223. package/dist/chunk-YEY3SO23.js.map +0 -1
@@ -3,6 +3,27 @@ import type { Pagination } from './types';
3
3
  export interface OrderDetailResponse {
4
4
  order: Order;
5
5
  }
6
+ /**
7
+ * The order in the shape the Twilight web components read (`salla-order-details`,
8
+ * `salla-order-totals-card`) and the Twig themes render: the API answers `orders/{id}` this
9
+ * way when the request does not say it comes from a React theme (`s-theme-type`).
10
+ */
11
+ export interface TwilightOrder {
12
+ items: Array<{
13
+ name: string;
14
+ quantity: number;
15
+ product?: {
16
+ id: number;
17
+ url?: string;
18
+ type?: string;
19
+ image?: {
20
+ url?: string;
21
+ };
22
+ };
23
+ options?: unknown[];
24
+ }>;
25
+ [key: string]: unknown;
26
+ }
6
27
  export interface CheckoutThankYouData {
7
28
  thank_you_title?: string;
8
29
  messages?: string[];
@@ -25,6 +46,7 @@ export interface OrdersListParams {
25
46
  export declare const order: {
26
47
  list: (params?: OrdersListParams) => Promise<OrdersListResponse>;
27
48
  find: (id: string) => Promise<OrderDetailResponse>;
49
+ findForComponents: (id: string) => Promise<TwilightOrder>;
28
50
  shipments: (orderId: string) => Promise<OrderShipmentItem[]>;
29
51
  ratings: (orderId: string) => Promise<OrderRatingItem[]>;
30
52
  findOrThrow: (id: string) => Promise<OrderDetailResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/api/order.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,KAAK;oBACM,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;eA8BnD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;yBAM3B,MAAM,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;uBAOvC,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC;sBAK1C,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;wBAE7B,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;+BAOrC,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;;wBAI/C,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;;mBAKrC,MAAM;;;6BAKI,MAAM;;;2BAKR,MAAM;;;4BAKL,MAAM;;;;CAM7B,CAAC"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/api/order.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QAChF,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC,CAAC;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,KAAK;oBACM,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;eA8BnD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;4BAMxB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;yBAYlC,MAAM,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;uBAOvC,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC;sBAK1C,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;wBAE7B,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;+BAOrC,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;;wBAI/C,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;;mBAKrC,MAAM;;;6BAKI,MAAM;;;2BAKR,MAAM;;;4BAKL,MAAM;;;;CAM7B,CAAC"}
package/dist/api/order.js CHANGED
@@ -1,5 +1,5 @@
1
- export { order } from '../chunk-YEY3SO23.js';
2
- import '../chunk-I62RENKM.js';
1
+ export { order } from '../chunk-2QNDO2OY.js';
2
+ import '../chunk-KBQXQKPZ.js';
3
3
  import '../chunk-ZGHRSRDO.js';
4
4
  import '../chunk-P3OPJL6I.js';
5
5
  import '../chunk-WY4IYO3G.js';
package/dist/api/page.js CHANGED
@@ -1,5 +1,5 @@
1
- export { page } from '../chunk-S3CC2YGF.js';
2
- import '../chunk-I62RENKM.js';
1
+ export { page } from '../chunk-ZBARSETM.js';
2
+ import '../chunk-KBQXQKPZ.js';
3
3
  import '../chunk-ZGHRSRDO.js';
4
4
  import '../chunk-P3OPJL6I.js';
5
5
  import '../chunk-WY4IYO3G.js';
@@ -1,5 +1,5 @@
1
- export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-W66OHTSM.js';
2
- import '../chunk-I62RENKM.js';
1
+ export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-QYUYQPXN.js';
2
+ import '../chunk-KBQXQKPZ.js';
3
3
  import '../chunk-ZGHRSRDO.js';
4
4
  import '../chunk-P3OPJL6I.js';
5
5
  import '../chunk-WY4IYO3G.js';
@@ -1,6 +1,6 @@
1
- export { wishlist } from '../chunk-VLBQPVHM.js';
2
- import '../chunk-W66OHTSM.js';
3
- import '../chunk-I62RENKM.js';
1
+ export { wishlist } from '../chunk-P6DV6EHM.js';
2
+ import '../chunk-QYUYQPXN.js';
3
+ import '../chunk-KBQXQKPZ.js';
4
4
  import '../chunk-ZGHRSRDO.js';
5
5
  import '../chunk-P3OPJL6I.js';
6
6
  import '../chunk-WY4IYO3G.js';
@@ -1,4 +1,4 @@
1
- import { redirect } from './chunk-I62RENKM.js';
1
+ import { redirect } from './chunk-KBQXQKPZ.js';
2
2
  import { clearAuthTokenCookie } from './chunk-SR4OTLTJ.js';
3
3
  import { FALLBACK_LOCALE } from './chunk-T72DAX7R.js';
4
4
  import { useEffect } from 'react';
@@ -11,6 +11,10 @@ async function pendingOrdersRedirectLoader(ctx = { params: {} }) {
11
11
  const locale = ctx.params.locale || FALLBACK_LOCALE;
12
12
  throw redirect(`/${locale}/account/orders?status=pending`);
13
13
  }
14
+ async function ratingRedirectLoader(ctx = { params: {} }) {
15
+ const locale = ctx.params.locale || FALLBACK_LOCALE;
16
+ throw redirect(`/${locale}/account/orders`);
17
+ }
14
18
  function LogoutRedirect() {
15
19
  useEffect(() => {
16
20
  clearAuthTokenCookie();
@@ -19,6 +23,6 @@ function LogoutRedirect() {
19
23
  return null;
20
24
  }
21
25
 
22
- export { LogoutRedirect, pendingOrdersRedirectLoader, slugBrandRedirectLoader };
23
- //# sourceMappingURL=chunk-Q5UYV2EN.js.map
24
- //# sourceMappingURL=chunk-Q5UYV2EN.js.map
26
+ export { LogoutRedirect, pendingOrdersRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader };
27
+ //# sourceMappingURL=chunk-24QOBDMC.js.map
28
+ //# sourceMappingURL=chunk-24QOBDMC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/routes/seo-redirects.ts"],"names":[],"mappings":";;;;;AAcA,eAAsB,wBAAwB,GAAA,EAAkD;AAC9F,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,SAAS,CAAA,CAAA,EAAI,MAAM,WAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACrD;AAOA,eAAsB,4BACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAC3D;AAGA,eAAsB,qBACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,eAAA,CAAiB,CAAA;AAC5C;AAUO,SAAS,cAAA,GAAuB;AACrC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,EAAqB;AAErB,IAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,MAAA,CAAO,QAAA,CAAS,KAAK,OAAA,CAAQ,8BAAA,EAAgC,EAAE,CAAC,CAAA;AAAA,EAC1F,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,IAAA;AACT","file":"chunk-24QOBDMC.js","sourcesContent":["import { useEffect } from 'react';\nimport { redirect } from '../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../providers/locale-constants';\nimport { clearAuthTokenCookie } from '../utils/cookies';\n\nexport interface SlugBrandParams {\n /** SEO slug segment (ignored — only here to match the route pattern). */\n slug: string;\n /** Brand numeric ID to redirect to. */\n id: string;\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function slugBrandRedirectLoader(ctx: { params: SlugBrandParams }): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/brands/${ctx.params.id}`);\n}\n\nexport interface PendingOrdersRedirectParams {\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function pendingOrdersRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders?status=pending`);\n}\n\n/** `/account/rating`: the loyalty \"rate your orders\" link. Twig Raed has no rating page and sends it to the orders list. */\nexport async function ratingRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders`);\n}\n\n/**\n * `/logout` — where the SDK sends the browser once `salla.auth.logout()` has run\n * (`salla.url.get('logout?from=…')`). The Twig storefront serves that URL server-side. Here\n * it renders nothing and, in the browser, removes the theme's own `token` cookie (the SDK's\n * `cookie.clearAll()` leaves it) and then does a full navigation home. It has to be a\n * component, not a loader redirect: a loader runs during server rendering, where the cookie\n * can't be cleared, so the redirect would leave the visitor signed in on the next request.\n */\nexport function LogoutRedirect(): null {\n useEffect(() => {\n clearAuthTokenCookie();\n // `/{store base}/{locale}/logout?from=…` → `/{store base}/{locale}`\n window.location.replace(window.location.href.replace(/\\/logout\\/?(\\?[^#]*)?(#.*)?$/, ''));\n }, []);\n return null;\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { useDate } from './chunk-EIJXSBL6.js';
1
+ import { useDate } from './chunk-55VTMG2H.js';
2
2
  import { useTranslation } from './chunk-TYNZ5B2B.js';
3
- import { Image } from './chunk-UH5ZXDEO.js';
3
+ import { Image } from './chunk-WF7DYPR6.js';
4
4
  import { Link } from './chunk-AXW67SY7.js';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -61,5 +61,5 @@ function BlogListLayout({
61
61
  }
62
62
 
63
63
  export { BlogArticleCard, BlogListLayout };
64
- //# sourceMappingURL=chunk-KILNHLWE.js.map
65
- //# sourceMappingURL=chunk-KILNHLWE.js.map
64
+ //# sourceMappingURL=chunk-2BRCE7MK.js.map
65
+ //# sourceMappingURL=chunk-2BRCE7MK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-KILNHLWE.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-2BRCE7MK.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { orThrow, orUnauthorized } from './chunk-I62RENKM.js';
1
+ import { orThrow, orUnauthorized } from './chunk-KBQXQKPZ.js';
2
2
  import { api } from './chunk-P3OPJL6I.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
@@ -30,6 +30,15 @@ var order = {
30
30
  const response = await api.get(`orders/${id}`).json();
31
31
  return { order: response.data };
32
32
  },
33
+ findForComponents: async (id) => {
34
+ const response = await api.get(`orders/${id}`, {
35
+ hooks: {
36
+ // Runs after the client's own hook, which marks every request as from a React theme.
37
+ beforeRequest: [({ request }) => request.headers.delete("s-theme-type")]
38
+ }
39
+ }).json();
40
+ return response.data;
41
+ },
33
42
  shipments: async (orderId) => {
34
43
  const response = await api.get(`orders/${orderId}/shipments`).json();
35
44
  return response.data ?? [];
@@ -69,5 +78,5 @@ var order = {
69
78
  };
70
79
 
71
80
  export { order };
72
- //# sourceMappingURL=chunk-YEY3SO23.js.map
73
- //# sourceMappingURL=chunk-YEY3SO23.js.map
81
+ //# sourceMappingURL=chunk-2QNDO2OY.js.map
82
+ //# sourceMappingURL=chunk-2QNDO2OY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/order.ts"],"names":[],"mappings":"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","file":"chunk-2QNDO2OY.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type {\n Order,\n OrderListItem,\n OrderShipmentItem,\n OrderRatingItem,\n} from '../routes/account/types';\nimport type { Pagination } from './types';\nimport { orThrow, orUnauthorized } from '../providers/NavigationProvider';\n\nexport interface OrderDetailResponse {\n order: Order;\n}\n\n/**\n * The order in the shape the Twilight web components read (`salla-order-details`,\n * `salla-order-totals-card`) and the Twig themes render: the API answers `orders/{id}` this\n * way when the request does not say it comes from a React theme (`s-theme-type`).\n */\nexport interface TwilightOrder {\n items: Array<{\n name: string;\n quantity: number;\n product?: { id: number; url?: string; type?: string; image?: { url?: string } };\n options?: unknown[];\n }>;\n [key: string]: unknown;\n}\n\nexport interface CheckoutThankYouData {\n thank_you_title?: string;\n messages?: string[];\n share_message?: string;\n short_share_message?: string;\n}\n\nexport interface OrdersListResponse {\n data: OrderListItem[];\n cursor?: Pagination;\n}\n\nexport interface OrdersListParams {\n page?: number;\n cursor?: string | null;\n status?: string;\n feedback_status?: string;\n /** When set, the list payload includes each order's `items[]` (`with_items=1`). */\n with_items?: boolean | number;\n signal?: AbortSignal;\n}\n\nexport const order = {\n list: async (params?: OrdersListParams): Promise<OrdersListResponse> => {\n const {\n page,\n cursor,\n status,\n feedback_status: feedbackStatus,\n with_items: withItems,\n signal,\n } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (status) searchParams.set('status', status);\n if (feedbackStatus) searchParams.set('feedback_status', feedbackStatus);\n if (withItems) searchParams.set('with_items', '1');\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`orders?${searchParams.toString()}`, options as any)\n .json<{ data: OrderListItem[] | null; cursor?: Pagination }>();\n\n return {\n data: response.data ?? [],\n cursor: response.cursor,\n };\n },\n\n find: async (id: string): Promise<OrderDetailResponse> => {\n const response = await api.get(`orders/${id}`).json<{ data: Order }>();\n\n return { order: response.data };\n },\n\n findForComponents: async (id: string): Promise<TwilightOrder> => {\n const response = await api\n .get(`orders/${id}`, {\n hooks: {\n // Runs after the client's own hook, which marks every request as from a React theme.\n beforeRequest: [({ request }) => request.headers.delete('s-theme-type')],\n },\n })\n .json<{ data: TwilightOrder }>();\n return response.data;\n },\n\n shipments: async (orderId: string): Promise<OrderShipmentItem[]> => {\n const response = await api\n .get(`orders/${orderId}/shipments`)\n .json<{ data: OrderShipmentItem[] }>();\n return response.data ?? [];\n },\n\n ratings: async (orderId: string): Promise<OrderRatingItem[]> => {\n const response = await api.get(`orders/${orderId}/ratings`).json<{ data: OrderRatingItem[] }>();\n return response.data ?? [];\n },\n\n findOrThrow: (id: string): Promise<OrderDetailResponse> => orUnauthorized(order.find(id)),\n\n thankYou: async (orderId: string): Promise<CheckoutThankYouData> => {\n const { data } = await api\n .get(`checkout/thank-you/${orderId}`)\n .json<{ data: CheckoutThankYouData }>();\n return data;\n },\n\n thankYouOrThrow: (orderId: string): Promise<CheckoutThankYouData> =>\n orThrow(order.thankYou(orderId)),\n\n queries: {\n list: (params?: Omit<OrdersListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['orders', 'list', params],\n queryFn: ({ signal }) => order.list({ ...params, signal }),\n }),\n find: (id: string) =>\n queryOptions({\n queryKey: ['orders', 'detail', id],\n queryFn: () => order.find(id),\n }),\n shipments: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'shipments', orderId],\n queryFn: () => order.shipments(orderId),\n }),\n ratings: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'ratings', orderId],\n queryFn: () => order.ratings(orderId),\n }),\n thankYou: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'thankYou', orderId],\n queryFn: () => order.thankYou(orderId),\n }),\n },\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { home } from './chunk-NQVJ7NJ6.js';
2
2
  import { buildHreflangAlternates } from './chunk-TZ3E5BN4.js';
3
- import { HomeComponentRenderer } from './chunk-EXKTSWBC.js';
3
+ import { HomeComponentRenderer } from './chunk-GRV7ELSP.js';
4
4
  import { useDevHomeComponentOverrides } from './chunk-2JV6WZ6O.js';
5
5
  import { RouteId } from './chunk-ZGHRSRDO.js';
6
6
  import { getTwilightContext } from './chunk-N2S25NXP.js';
@@ -84,5 +84,5 @@ function head(ctx) {
84
84
  var Home = { id: RouteId.INDEX, loader, head, Component: HomePage };
85
85
 
86
86
  export { Home, HomeSkeleton, homeLoader };
87
- //# sourceMappingURL=chunk-LUTMPFRW.js.map
88
- //# sourceMappingURL=chunk-LUTMPFRW.js.map
87
+ //# sourceMappingURL=chunk-347K33DP.js.map
88
+ //# sourceMappingURL=chunk-347K33DP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-LUTMPFRW.js","sourcesContent":["import { getTwilightContext } from '../../twilight/context';\nimport { home } from '../../api/home';\nimport type { HomeComponentData } from '../../types';\nimport { RouteId } from '../../router/route-ids';\n\nexport interface HomeLoaderData {\n locale: string;\n components: HomeComponentData[];\n page: { slug: string };\n}\n\nexport async function homeLoader(ctx?: { locale?: string }): Promise<HomeLoaderData> {\n const { queryClient } = getTwilightContext();\n const components = await queryClient.ensureQueryData(home.queries.components());\n const result = {\n locale: ctx?.locale || 'ar',\n components: components.map((comp) => ({\n ...comp,\n path: comp.path?.replace('home.', '') || comp.path,\n })),\n page: { slug: RouteId.INDEX },\n };\n return result;\n}\n","import { memo } from 'react';\nimport { useDevHomeComponentOverrides } from '../../dev/dev-settings-store';\nimport { HookSlot } from '../../hooks';\nimport { HomeComponentRenderer } from '../../components/home';\nimport type { HomePageProps } from './types';\nimport { Pulse } from '@salla.sa/twilight-components-react';\n\nexport const HomeSkeleton = memo(function HomeSkeleton() {\n return (\n <>\n <div className=\"s-block container skeleton-block-hero\">\n <Pulse className=\"h-64 sm:h-80 rounded-md\" />\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n </>\n );\n});\n\nexport const HomePage = memo(function HomePage({ components = [] }: HomePageProps) {\n // Dev-mode only: overlay DevSettingsWidget component-field overrides onto the\n // blocks so edits render live. No-op passthrough in production builds.\n const renderedComponents = useDevHomeComponentOverrides(components);\n return (\n <>\n <HookSlot name=\"home:start\" />\n <HookSlot name=\"home:content\" />\n {renderedComponents.map((data, index) => (\n // `data.key` is the twilight.json catalog id, shared by every placement\n // of that block. Platform blocks send null. Position is unique.\n <HomeComponentRenderer key={index} data={data} index={index} />\n ))}\n <HookSlot name=\"home:end\" />\n </>\n );\n});\n\nexport { HomePage as default };\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { HomeLoaderData } from './loader';\nimport { homeLoader } from './loader';\nimport type { TwilightContext } from '../../twilight/context';\nimport { HomePage } from './HomePage';\nimport { RouteId } from '../../router/route-ids';\n\nexport { HomeSkeleton } from './HomePage';\nexport { registerHomeComponents, DefaultHomeComponents } from '../../components/home/register';\nexport { registerHomeComponentConfig } from '../../components/home';\nexport type { HomePageProps } from './types';\nexport type { HomeLoaderData } from './loader';\nexport type {\n HomeComponentsProps,\n AnyHomeComponent,\n HomeComponentConfig,\n} from '../../components/home';\n\nfunction loader(_ctx?: { locale?: string }): Promise<HomeLoaderData> {\n return homeLoader({ locale: _ctx?.locale });\n}\n\nfunction head(ctx: TwilightContext): HeadDescriptor {\n const store = ctx.settings?.store;\n if (!store) return {};\n\n const title = store.meta?.title ?? store.name;\n const description = store.meta?.description ?? store.description;\n const keywords = store.meta?.keywords;\n\n return {\n title,\n description,\n keywords,\n canonical: store.url,\n openGraph: {\n type: 'website',\n title,\n description,\n images: store.logo,\n url: store.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: store.logo,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n}\n\nexport const Home = { id: RouteId.INDEX, loader, head, Component: HomePage } as const;\n\nexport { homeLoader };\n"]}
1
+ {"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-347K33DP.js","sourcesContent":["import { getTwilightContext } from '../../twilight/context';\nimport { home } from '../../api/home';\nimport type { HomeComponentData } from '../../types';\nimport { RouteId } from '../../router/route-ids';\n\nexport interface HomeLoaderData {\n locale: string;\n components: HomeComponentData[];\n page: { slug: string };\n}\n\nexport async function homeLoader(ctx?: { locale?: string }): Promise<HomeLoaderData> {\n const { queryClient } = getTwilightContext();\n const components = await queryClient.ensureQueryData(home.queries.components());\n const result = {\n locale: ctx?.locale || 'ar',\n components: components.map((comp) => ({\n ...comp,\n path: comp.path?.replace('home.', '') || comp.path,\n })),\n page: { slug: RouteId.INDEX },\n };\n return result;\n}\n","import { memo } from 'react';\nimport { useDevHomeComponentOverrides } from '../../dev/dev-settings-store';\nimport { HookSlot } from '../../hooks';\nimport { HomeComponentRenderer } from '../../components/home';\nimport type { HomePageProps } from './types';\nimport { Pulse } from '@salla.sa/twilight-components-react';\n\nexport const HomeSkeleton = memo(function HomeSkeleton() {\n return (\n <>\n <div className=\"s-block container skeleton-block-hero\">\n <Pulse className=\"h-64 sm:h-80 rounded-md\" />\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n </>\n );\n});\n\nexport const HomePage = memo(function HomePage({ components = [] }: HomePageProps) {\n // Dev-mode only: overlay DevSettingsWidget component-field overrides onto the\n // blocks so edits render live. No-op passthrough in production builds.\n const renderedComponents = useDevHomeComponentOverrides(components);\n return (\n <>\n <HookSlot name=\"home:start\" />\n <HookSlot name=\"home:content\" />\n {renderedComponents.map((data, index) => (\n // `data.key` is the twilight.json catalog id, shared by every placement\n // of that block. Platform blocks send null. Position is unique.\n <HomeComponentRenderer key={index} data={data} index={index} />\n ))}\n <HookSlot name=\"home:end\" />\n </>\n );\n});\n\nexport { HomePage as default };\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { HomeLoaderData } from './loader';\nimport { homeLoader } from './loader';\nimport type { TwilightContext } from '../../twilight/context';\nimport { HomePage } from './HomePage';\nimport { RouteId } from '../../router/route-ids';\n\nexport { HomeSkeleton } from './HomePage';\nexport { registerHomeComponents, DefaultHomeComponents } from '../../components/home/register';\nexport { registerHomeComponentConfig } from '../../components/home';\nexport type { HomePageProps } from './types';\nexport type { HomeLoaderData } from './loader';\nexport type {\n HomeComponentsProps,\n AnyHomeComponent,\n HomeComponentConfig,\n} from '../../components/home';\n\nfunction loader(_ctx?: { locale?: string }): Promise<HomeLoaderData> {\n return homeLoader({ locale: _ctx?.locale });\n}\n\nfunction head(ctx: TwilightContext): HeadDescriptor {\n const store = ctx.settings?.store;\n if (!store) return {};\n\n const title = store.meta?.title ?? store.name;\n const description = store.meta?.description ?? store.description;\n const keywords = store.meta?.keywords;\n\n return {\n title,\n description,\n keywords,\n canonical: store.url,\n openGraph: {\n type: 'website',\n title,\n description,\n images: store.logo,\n url: store.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: store.logo,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n}\n\nexport const Home = { id: RouteId.INDEX, loader, head, Component: HomePage } as const;\n\nexport { homeLoader };\n"]}
@@ -1,4 +1,4 @@
1
- import { orThrow } from './chunk-I62RENKM.js';
1
+ import { orThrow } from './chunk-KBQXQKPZ.js';
2
2
  import { api } from './chunk-P3OPJL6I.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
@@ -63,5 +63,5 @@ var blog = {
63
63
  };
64
64
 
65
65
  export { blog };
66
- //# sourceMappingURL=chunk-KHRIGLYL.js.map
67
- //# sourceMappingURL=chunk-KHRIGLYL.js.map
66
+ //# sourceMappingURL=chunk-43XFO6KF.js.map
67
+ //# sourceMappingURL=chunk-43XFO6KF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-KHRIGLYL.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-43XFO6KF.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
@@ -1,10 +1,10 @@
1
- import { Header } from './chunk-4KTY2FT6.js';
1
+ import { Header } from './chunk-UEKIAED3.js';
2
2
  import { Copyright } from './chunk-JKIRRMBU.js';
3
3
  import { useDevSettingsOverrides } from './chunk-2JV6WZ6O.js';
4
4
  import { apps } from './chunk-UIOLSYKV.js';
5
5
  import { color } from './chunk-VVZNW5CB.js';
6
6
  import { applyThemeHookSlots, installAppScope } from './chunk-2XGQSJKH.js';
7
- import { useLocation, useIsHome, NavigationInterceptor } from './chunk-I62RENKM.js';
7
+ import { useLocation, useIsHome, NavigationInterceptor } from './chunk-KBQXQKPZ.js';
8
8
  import { useUser } from './chunk-UZKTK6YV.js';
9
9
  import { syncSdkLocale } from './chunk-WY4IYO3G.js';
10
10
  import { AUTH_TOKEN_COOKIE_NAME, rememberDevStoreId, clearAuthTokenCookie, syncScopeCookie } from './chunk-SR4OTLTJ.js';
@@ -16,10 +16,10 @@ import { FALLBACK_LOCALE, getLanguageInfo } from './chunk-T72DAX7R.js';
16
16
  import { WidgetHead } from './chunk-RJPPO3ET.js';
17
17
  import { HookSlot } from './chunk-Q7VWURUR.js';
18
18
  import { hookRegistry } from './chunk-GU2KUQVD.js';
19
- import { Image } from './chunk-UH5ZXDEO.js';
19
+ import { Image } from './chunk-WF7DYPR6.js';
20
20
  import { Link } from './chunk-AXW67SY7.js';
21
21
  import { LazyImageModal } from './chunk-CUG6VOLM.js';
22
- import { Toaster } from './chunk-OBSAH7K6.js';
22
+ import { Toaster } from './chunk-SVPXQCOA.js';
23
23
  import { useTwilight, TwilightContext } from './chunk-DF6FBKDN.js';
24
24
  import React2, { lazy, Suspense, useEffect, useCallback, useMemo, useRef, useState } from 'react';
25
25
  import { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';
@@ -109,7 +109,7 @@ function ThemeDocumentSync({
109
109
  }
110
110
 
111
111
  // src/utils/engine-version.ts
112
- var ENGINE_VERSION = "1.0.63" ;
112
+ var ENGINE_VERSION = "1.0.65" ;
113
113
 
114
114
  // src/providers/twilight-init.ts
115
115
  function getSalla() {
@@ -132,6 +132,7 @@ function withSettingsUser(sdk, settings) {
132
132
  user: { ...visitor, currency_code: sdk.cookie?.get?.("s-curr") ?? SDK_GUEST_CURRENCY }
133
133
  };
134
134
  }
135
+ var initializedSdks = /* @__PURE__ */ new WeakSet();
135
136
  function useTwilightInit({
136
137
  debug: _debug,
137
138
  initialData,
@@ -196,7 +197,10 @@ function useTwilightInit({
196
197
  url: pageCtx.url ?? ctx.location.pathname + ctx.location.searchStr
197
198
  }
198
199
  } : baseData;
199
- sdk.init(initData);
200
+ if (!initializedSdks.has(sdk)) {
201
+ initializedSdks.add(sdk);
202
+ sdk.init(initData);
203
+ }
200
204
  const initSdk = async () => {
201
205
  try {
202
206
  await sdk.onReady();
@@ -224,13 +228,13 @@ function useTwilightInit({
224
228
  }
225
229
  var navigationSetups = {
226
230
  tanstack: lazy(
227
- () => import('./navigation-ESPAHRXM.js').then((m) => ({ default: m.NavigationSetup }))
231
+ () => import('./navigation-WB75NC6Y.js').then((m) => ({ default: m.NavigationSetup }))
228
232
  ),
229
- nextjs: lazy(() => import('./navigation-YKRXGGSL.js').then((m) => ({ default: m.NavigationSetup })))
233
+ nextjs: lazy(() => import('./navigation-DU3BF72V.js').then((m) => ({ default: m.NavigationSetup })))
230
234
  };
231
235
  var routeDocumentSyncs = {
232
236
  tanstack: lazy(
233
- () => import('./document-class-SKCL6IJF.js').then((m) => ({
237
+ () => import('./document-class-ZLPAWZEX.js').then((m) => ({
234
238
  default: m.TanStackDocumentSync
235
239
  }))
236
240
  )
@@ -317,18 +321,14 @@ function useNumber() {
317
321
  useArabicNumerals
318
322
  };
319
323
  }
320
- var AR_LOCALE = "ar";
321
- var SAR_CURRENCY = "SAR";
322
- var intlCache = /* @__PURE__ */ new Map();
323
- function getCachedIntl(loc, opts) {
324
- const key = `${loc}|${JSON.stringify(opts)}`;
325
- let fmt = intlCache.get(key);
326
- if (!fmt) {
327
- fmt = new Intl.NumberFormat(loc, opts);
328
- intlCache.set(key, fmt);
329
- }
330
- return fmt;
324
+
325
+ // src/utils/number.ts
326
+ var ARABIC_NUMERALS2 = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
327
+ function toArabicNumerals(input) {
328
+ const str = String(input);
329
+ return str.replace(/[0-9]/g, (d) => ARABIC_NUMERALS2[parseInt(d)]);
331
330
  }
331
+ var SAR_SYMBOLS = ["SAR", "\u0631.\u0633"];
332
332
  var parse = (moneyString) => {
333
333
  const cleaned = moneyString.replace(/[^\d.,٬٫]/g, "");
334
334
  const normalized = cleaned.replace(/٬/g, "").replace(/٫/g, ".");
@@ -347,48 +347,28 @@ var isValid = (value) => {
347
347
  return false;
348
348
  };
349
349
  function useMoney() {
350
- const { store } = useTwilight();
351
- const { locale } = useTranslation();
350
+ const { store, settings } = useTwilight();
352
351
  const useArabicNumerals = store?.settings?.arabic_numbers_enabled ?? false;
352
+ const useSarSymbol = store?.settings?.use_sar_symbol ?? false;
353
353
  const format = (amount, options) => {
354
354
  const currency = options?.currency ?? "SAR";
355
- const loc = options?.locale ?? locale;
356
355
  const type = options?.type ?? "product";
357
356
  if (amount == null || amount === "") {
358
357
  const showDash = type === "product" ? store?.settings?.product?.show_price_as_dash : false;
359
358
  return showDash ? "-" : "";
360
359
  }
361
- const numericAmount = typeof amount === "string" ? parseFloat(amount) : amount;
362
360
  if (typeof amount === "string" && amount === "-") return amount;
363
- if (isNaN(numericAmount)) return String(amount);
364
- if (!numericAmount && numericAmount !== 0) {
365
- const showDash = type === "product" ? store?.settings?.product?.show_price_as_dash : false;
366
- return showDash ? "-" : "";
367
- }
368
- let formatted = getCachedIntl(loc, {
369
- minimumFractionDigits: 2,
370
- maximumFractionDigits: 2
371
- }).format(numericAmount);
372
- if (useArabicNumerals && loc.startsWith(AR_LOCALE)) {
373
- formatted = formatted.replace(/[0-9]/g, (d) => "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669"[parseInt(d)]);
374
- }
375
- if (currency === SAR_CURRENCY) {
361
+ if (isNaN(typeof amount === "string" ? parseFloat(amount) : amount)) return String(amount);
362
+ const number = useArabicNumerals ? toArabicNumerals(amount).replace(".", "\u066B") : String(amount);
363
+ const symbol = settings?.currencies?.[currency]?.symbol ?? currency;
364
+ if (useSarSymbol && SAR_SYMBOLS.includes(symbol)) {
376
365
  return /* @__PURE__ */ jsxs(Fragment, { children: [
377
- formatted,
366
+ number,
378
367
  " ",
379
368
  /* @__PURE__ */ jsx("i", { className: "sicon-sar" })
380
369
  ] });
381
370
  }
382
- try {
383
- return getCachedIntl(loc, {
384
- style: "currency",
385
- currency,
386
- minimumFractionDigits: 2,
387
- maximumFractionDigits: 2
388
- }).format(numericAmount);
389
- } catch {
390
- return `${formatted} ${currency}`;
391
- }
371
+ return `${number} ${symbol}`;
392
372
  };
393
373
  return { format, parse, isValid };
394
374
  }
@@ -774,7 +754,7 @@ var LazySiftSnippet = lazy(
774
754
  () => import('./SiftSnippet-5FCU6TR6.js').then((m) => ({ default: m.SiftSnippet }))
775
755
  );
776
756
  var LazyStoreClosedNotification = lazy(
777
- () => import('./StoreClosedNotification-5MTDRRC3.js').then((m) => ({
757
+ () => import('./StoreClosedNotification-5F4I3N27.js').then((m) => ({
778
758
  default: m.StoreClosedNotification
779
759
  }))
780
760
  );
@@ -1357,5 +1337,5 @@ function useStore() {
1357
1337
  }
1358
1338
 
1359
1339
  export { Footer, MasterLayout, TwilightProvider, fastCheckoutScript, registerDefaultHooks, registerDocumentSync, routeDocumentSyncs, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore };
1360
- //# sourceMappingURL=chunk-EIJXSBL6.js.map
1361
- //# sourceMappingURL=chunk-EIJXSBL6.js.map
1340
+ //# sourceMappingURL=chunk-55VTMG2H.js.map
1341
+ //# sourceMappingURL=chunk-55VTMG2H.js.map