@salla.sa/twilight-theme-engine 1.0.57 → 1.0.59

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 (214) hide show
  1. package/dist/{AddToCartForm-5BF2GB4I.js → AddToCartForm-IFK5P6XK.js} +3 -3
  2. package/dist/{AddToCartForm-5BF2GB4I.js.map → AddToCartForm-IFK5P6XK.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-GT5AWDSE.js → BlogAuthorPage-KA3EWFJC.js} +15 -15
  4. package/dist/{BlogAuthorPage-GT5AWDSE.js.map → BlogAuthorPage-KA3EWFJC.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-5KYCRJ53.js → BlogCategoryPage-EWFNGPTS.js} +15 -15
  6. package/dist/{BlogCategoryPage-5KYCRJ53.js.map → BlogCategoryPage-EWFNGPTS.js.map} +1 -1
  7. package/dist/{BlogPage-RNLPP255.js → BlogPage-E3CN2WJL.js} +13 -13
  8. package/dist/{BlogPage-RNLPP255.js.map → BlogPage-E3CN2WJL.js.map} +1 -1
  9. package/dist/{BlogSinglePage-QO5VRR6I.js → BlogSinglePage-Z4GIRBWI.js} +13 -13
  10. package/dist/{BlogSinglePage-QO5VRR6I.js.map → BlogSinglePage-Z4GIRBWI.js.map} +1 -1
  11. package/dist/{BlogTagPage-4NV6VLDY.js → BlogTagPage-4D6GMTHN.js} +15 -15
  12. package/dist/{BlogTagPage-4NV6VLDY.js.map → BlogTagPage-4D6GMTHN.js.map} +1 -1
  13. package/dist/{BrandsPage-6YR6AB6S.js → BrandsPage-C6EZVXQC.js} +13 -13
  14. package/dist/{BrandsPage-6YR6AB6S.js.map → BrandsPage-C6EZVXQC.js.map} +1 -1
  15. package/dist/{Breadcrumb-PEW6KRBX.js → Breadcrumb-HZVWJZC4.js} +13 -13
  16. package/dist/{Breadcrumb-PEW6KRBX.js.map → Breadcrumb-HZVWJZC4.js.map} +1 -1
  17. package/dist/{CartItem-DECJ6B5L.js → CartItem-OBF3TBDK.js} +13 -13
  18. package/dist/{CartItem-DECJ6B5L.js.map → CartItem-OBF3TBDK.js.map} +1 -1
  19. package/dist/{CartSummary-DTYN6PL4.js → CartSummary-GHMZ5LAL.js} +13 -13
  20. package/dist/{CartSummary-DTYN6PL4.js.map → CartSummary-GHMZ5LAL.js.map} +1 -1
  21. package/dist/{Copyright-RRXSEKFJ.js → Copyright-XLIZFWVM.js} +3 -3
  22. package/dist/{Copyright-RRXSEKFJ.js.map → Copyright-XLIZFWVM.js.map} +1 -1
  23. package/dist/{CustomerLayout-BR5M4K3W.js → CustomerLayout-JG4GOVSO.js} +13 -13
  24. package/dist/{CustomerLayout-BR5M4K3W.js.map → CustomerLayout-JG4GOVSO.js.map} +1 -1
  25. package/dist/{Footer-UNS4HHGY.js → Footer-FV7ZXLY4.js} +13 -13
  26. package/dist/{Footer-UNS4HHGY.js.map → Footer-FV7ZXLY4.js.map} +1 -1
  27. package/dist/{Header-CLUOKYL4.js → Header-WQ675B65.js} +6 -6
  28. package/dist/{Header-CLUOKYL4.js.map → Header-WQ675B65.js.map} +1 -1
  29. package/dist/{LoyaltyPage-YSYGKYRN.js → LoyaltyPage-SJUUOW3V.js} +14 -14
  30. package/dist/{LoyaltyPage-YSYGKYRN.js.map → LoyaltyPage-SJUUOW3V.js.map} +1 -1
  31. package/dist/{MainMenu-5TUQ7MMR.js → MainMenu-SH3YM2CA.js} +7 -7
  32. package/dist/{MainMenu-5TUQ7MMR.js.map → MainMenu-SH3YM2CA.js.map} +1 -1
  33. package/dist/{MasterLayout-XRKNPXIG.js → MasterLayout-VJQDAL7N.js} +13 -13
  34. package/dist/{MasterLayout-XRKNPXIG.js.map → MasterLayout-VJQDAL7N.js.map} +1 -1
  35. package/dist/{MobileMenu-ZWHB356Z.js → MobileMenu-JGO33EPX.js} +14 -14
  36. package/dist/{MobileMenu-ZWHB356Z.js.map → MobileMenu-JGO33EPX.js.map} +1 -1
  37. package/dist/{NotificationsPage-SB5SUDZY.js → NotificationsPage-DBXZUQW6.js} +13 -13
  38. package/dist/{NotificationsPage-SB5SUDZY.js.map → NotificationsPage-DBXZUQW6.js.map} +1 -1
  39. package/dist/{OrderSinglePage-3VY4PCRT.js → OrderSinglePage-2ME6HVFH.js} +14 -14
  40. package/dist/{OrderSinglePage-3VY4PCRT.js.map → OrderSinglePage-2ME6HVFH.js.map} +1 -1
  41. package/dist/{OrdersPage-YCWNERSY.js → OrdersPage-6XMYJQAB.js} +14 -14
  42. package/dist/{OrdersPage-YCWNERSY.js.map → OrdersPage-6XMYJQAB.js.map} +1 -1
  43. package/dist/{PageSingle-ZK7MK36O.js → PageSingle-ATWHQBS7.js} +3 -3
  44. package/dist/{PageSingle-ZK7MK36O.js.map → PageSingle-ATWHQBS7.js.map} +1 -1
  45. package/dist/{ProductDetails-5XPECKXG.js → ProductDetails-DH2MRJQ2.js} +3 -3
  46. package/dist/{ProductDetails-5XPECKXG.js.map → ProductDetails-DH2MRJQ2.js.map} +1 -1
  47. package/dist/{ProfilePage-6JU23UFG.js → ProfilePage-FGJHE5AD.js} +13 -13
  48. package/dist/{ProfilePage-6JU23UFG.js.map → ProfilePage-FGJHE5AD.js.map} +1 -1
  49. package/dist/{SeoCartWidget-LEIOSHHG.js → SeoCartWidget-ALMYKXRG.js} +13 -13
  50. package/dist/{SeoCartWidget-LEIOSHHG.js.map → SeoCartWidget-ALMYKXRG.js.map} +1 -1
  51. package/dist/{SettingsPage-X4ES5JZ7.js → SettingsPage-K5EM4BLS.js} +13 -13
  52. package/dist/{SettingsPage-X4ES5JZ7.js.map → SettingsPage-K5EM4BLS.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-CJN33ZT7.js → StoreClosedNotification-3NKLFBKL.js} +14 -14
  54. package/dist/{StoreClosedNotification-CJN33ZT7.js.map → StoreClosedNotification-3NKLFBKL.js.map} +1 -1
  55. package/dist/{TestimonialsPage-DOBUWLW6.js → TestimonialsPage-UBRVYDQW.js} +3 -3
  56. package/dist/{TestimonialsPage-DOBUWLW6.js.map → TestimonialsPage-UBRVYDQW.js.map} +1 -1
  57. package/dist/{ThankYouPage-6Y2QLZGQ.js → ThankYouPage-WPR576XD.js} +13 -13
  58. package/dist/{ThankYouPage-6Y2QLZGQ.js.map → ThankYouPage-WPR576XD.js.map} +1 -1
  59. package/dist/{WalletPage-WNKEFQR4.js → WalletPage-ZMTV7GVF.js} +14 -14
  60. package/dist/{WalletPage-WNKEFQR4.js.map → WalletPage-ZMTV7GVF.js.map} +1 -1
  61. package/dist/{WishlistPage-6BKGGSPU.js → WishlistPage-BRB7RZEF.js} +15 -15
  62. package/dist/{WishlistPage-6BKGGSPU.js.map → WishlistPage-BRB7RZEF.js.map} +1 -1
  63. package/dist/api/apps.js +4 -4
  64. package/dist/api/brands.js +5 -5
  65. package/dist/api/cart.js +5 -5
  66. package/dist/api/category.js +5 -5
  67. package/dist/api/client.d.ts +9 -0
  68. package/dist/api/client.d.ts.map +1 -1
  69. package/dist/api/client.js +3 -3
  70. package/dist/api/home.js +4 -4
  71. package/dist/api/loyalty.js +5 -5
  72. package/dist/api/menu.js +4 -4
  73. package/dist/api/notification.js +4 -4
  74. package/dist/api/order.js +5 -5
  75. package/dist/api/page.js +5 -5
  76. package/dist/api/product.js +5 -5
  77. package/dist/api/profile.js +3 -3
  78. package/dist/api/store.js +4 -4
  79. package/dist/api/translations-key.d.ts +42 -0
  80. package/dist/api/translations-key.d.ts.map +1 -0
  81. package/dist/api/translations.d.ts +71 -4
  82. package/dist/api/translations.d.ts.map +1 -1
  83. package/dist/api/translations.js +4 -4
  84. package/dist/api/user.js +4 -4
  85. package/dist/api/wishlist.js +6 -6
  86. package/dist/{chunk-QM75GGXX.js → chunk-232SREMP.js} +4 -4
  87. package/dist/{chunk-QM75GGXX.js.map → chunk-232SREMP.js.map} +1 -1
  88. package/dist/{chunk-UIDPX3GA.js → chunk-35B7ACNO.js} +3 -3
  89. package/dist/{chunk-UIDPX3GA.js.map → chunk-35B7ACNO.js.map} +1 -1
  90. package/dist/{chunk-PQDWDCXJ.js → chunk-55NGYH3V.js} +39 -16
  91. package/dist/chunk-55NGYH3V.js.map +1 -0
  92. package/dist/{chunk-TQ4MPUBW.js → chunk-5EPR726Z.js} +7 -7
  93. package/dist/{chunk-TQ4MPUBW.js.map → chunk-5EPR726Z.js.map} +1 -1
  94. package/dist/{chunk-4D44TJ72.js → chunk-AEQ6NRTE.js} +3 -3
  95. package/dist/{chunk-4D44TJ72.js.map → chunk-AEQ6NRTE.js.map} +1 -1
  96. package/dist/{chunk-DUMNDVZW.js → chunk-B3Z7WNO5.js} +15 -15
  97. package/dist/{chunk-DUMNDVZW.js.map → chunk-B3Z7WNO5.js.map} +1 -1
  98. package/dist/{chunk-63GHZIAG.js → chunk-FLAJQXOM.js} +3 -3
  99. package/dist/{chunk-63GHZIAG.js.map → chunk-FLAJQXOM.js.map} +1 -1
  100. package/dist/{chunk-TDNFNYT5.js → chunk-G2UPOKZZ.js} +6 -6
  101. package/dist/{chunk-TDNFNYT5.js.map → chunk-G2UPOKZZ.js.map} +1 -1
  102. package/dist/{chunk-QKIQ3K24.js → chunk-G5ZVKWD7.js} +4 -4
  103. package/dist/{chunk-QKIQ3K24.js.map → chunk-G5ZVKWD7.js.map} +1 -1
  104. package/dist/{chunk-R6M6RM6U.js → chunk-GJXCHLKY.js} +3 -3
  105. package/dist/{chunk-R6M6RM6U.js.map → chunk-GJXCHLKY.js.map} +1 -1
  106. package/dist/{chunk-PZL3JWM2.js → chunk-IUZ2IZFK.js} +3 -3
  107. package/dist/{chunk-PZL3JWM2.js.map → chunk-IUZ2IZFK.js.map} +1 -1
  108. package/dist/{chunk-URLGDAVJ.js → chunk-JMBO6VHQ.js} +3 -3
  109. package/dist/{chunk-URLGDAVJ.js.map → chunk-JMBO6VHQ.js.map} +1 -1
  110. package/dist/{chunk-P4DUWQU4.js → chunk-JNB2WC5Z.js} +3 -3
  111. package/dist/{chunk-P4DUWQU4.js.map → chunk-JNB2WC5Z.js.map} +1 -1
  112. package/dist/{chunk-6SHNR7I5.js → chunk-JNCLDK5D.js} +5 -5
  113. package/dist/{chunk-6SHNR7I5.js.map → chunk-JNCLDK5D.js.map} +1 -1
  114. package/dist/{chunk-WMSOSA74.js → chunk-JR2NYBZS.js} +5 -5
  115. package/dist/{chunk-WMSOSA74.js.map → chunk-JR2NYBZS.js.map} +1 -1
  116. package/dist/{chunk-NCGZMLBS.js → chunk-JVKDYZMW.js} +3 -3
  117. package/dist/{chunk-NCGZMLBS.js.map → chunk-JVKDYZMW.js.map} +1 -1
  118. package/dist/{chunk-TIDHWQIS.js → chunk-K3WTFB6A.js} +4 -4
  119. package/dist/{chunk-TIDHWQIS.js.map → chunk-K3WTFB6A.js.map} +1 -1
  120. package/dist/{chunk-MRDFOEJ7.js → chunk-MFL6R2WL.js} +6 -6
  121. package/dist/{chunk-MRDFOEJ7.js.map → chunk-MFL6R2WL.js.map} +1 -1
  122. package/dist/{chunk-3MHDV5JS.js → chunk-MJGW6YZQ.js} +3 -3
  123. package/dist/{chunk-3MHDV5JS.js.map → chunk-MJGW6YZQ.js.map} +1 -1
  124. package/dist/chunk-MU4ACHQU.js +14 -0
  125. package/dist/{chunk-QVLXGXKB.js.map → chunk-MU4ACHQU.js.map} +1 -1
  126. package/dist/{chunk-XEQ6ILIP.js → chunk-NQHOKDDF.js} +4 -4
  127. package/dist/{chunk-XEQ6ILIP.js.map → chunk-NQHOKDDF.js.map} +1 -1
  128. package/dist/{chunk-BQ4CV7YX.js → chunk-NXJJ3IP3.js} +4 -4
  129. package/dist/{chunk-BQ4CV7YX.js.map → chunk-NXJJ3IP3.js.map} +1 -1
  130. package/dist/{chunk-7XBSSGRK.js → chunk-ODNUSQLR.js} +4 -4
  131. package/dist/{chunk-7XBSSGRK.js.map → chunk-ODNUSQLR.js.map} +1 -1
  132. package/dist/{chunk-JD4J2ZB6.js → chunk-POATRFUM.js} +3 -3
  133. package/dist/{chunk-JD4J2ZB6.js.map → chunk-POATRFUM.js.map} +1 -1
  134. package/dist/{chunk-O6XXHXC4.js → chunk-POLSCD5O.js} +9 -5
  135. package/dist/chunk-POLSCD5O.js.map +1 -0
  136. package/dist/{chunk-SHDUUBL2.js → chunk-PU6G2UIX.js} +4 -4
  137. package/dist/{chunk-SHDUUBL2.js.map → chunk-PU6G2UIX.js.map} +1 -1
  138. package/dist/{chunk-QBIW266S.js → chunk-RA6FYDRQ.js} +4 -4
  139. package/dist/{chunk-QBIW266S.js.map → chunk-RA6FYDRQ.js.map} +1 -1
  140. package/dist/{chunk-MENDTTOA.js → chunk-RL4VZU3P.js} +3 -3
  141. package/dist/{chunk-MENDTTOA.js.map → chunk-RL4VZU3P.js.map} +1 -1
  142. package/dist/{chunk-3FIWHGCZ.js → chunk-RLNBEDA4.js} +3 -3
  143. package/dist/{chunk-3FIWHGCZ.js.map → chunk-RLNBEDA4.js.map} +1 -1
  144. package/dist/{chunk-62SHHET3.js → chunk-RQOCJRHY.js} +4 -4
  145. package/dist/{chunk-62SHHET3.js.map → chunk-RQOCJRHY.js.map} +1 -1
  146. package/dist/{chunk-QVDNZX57.js → chunk-SDXKGWMC.js} +5 -5
  147. package/dist/{chunk-QVDNZX57.js.map → chunk-SDXKGWMC.js.map} +1 -1
  148. package/dist/chunk-SHHF6XXL.js +133 -0
  149. package/dist/chunk-SHHF6XXL.js.map +1 -0
  150. package/dist/{chunk-UV5BRJH4.js → chunk-UFOSIY3P.js} +4 -4
  151. package/dist/{chunk-UV5BRJH4.js.map → chunk-UFOSIY3P.js.map} +1 -1
  152. package/dist/{chunk-A2ZO3IR7.js → chunk-UIC4FUJM.js} +4 -4
  153. package/dist/{chunk-A2ZO3IR7.js.map → chunk-UIC4FUJM.js.map} +1 -1
  154. package/dist/{chunk-Z74NUTEI.js → chunk-WD7HOPT5.js} +3 -3
  155. package/dist/{chunk-Z74NUTEI.js.map → chunk-WD7HOPT5.js.map} +1 -1
  156. package/dist/{chunk-KWNLCGGT.js → chunk-WOFJ3WBJ.js} +4 -4
  157. package/dist/{chunk-KWNLCGGT.js.map → chunk-WOFJ3WBJ.js.map} +1 -1
  158. package/dist/{chunk-BVB75J3R.js → chunk-XJDQHKV6.js} +5 -5
  159. package/dist/{chunk-BVB75J3R.js.map → chunk-XJDQHKV6.js.map} +1 -1
  160. package/dist/{chunk-PJWFEMBX.js → chunk-YDU4K4M7.js} +12 -4
  161. package/dist/chunk-YDU4K4M7.js.map +1 -0
  162. package/dist/components/cart/index.js +1 -1
  163. package/dist/components/common/index.js +1 -1
  164. package/dist/components/drawer/index.js +11 -11
  165. package/dist/components/home/index.js +14 -14
  166. package/dist/components/layout/index.js +5 -5
  167. package/dist/components/product/index.js +12 -12
  168. package/dist/components/store/index.js +13 -13
  169. package/dist/document-class-QLK3MMHA.js +25 -0
  170. package/dist/{document-class-SRIHOY5T.js.map → document-class-QLK3MMHA.js.map} +1 -1
  171. package/dist/hooks/index.js +11 -11
  172. package/dist/hooks/useGtm.js +11 -11
  173. package/dist/hooks/useMoney.js +11 -11
  174. package/dist/hooks/useStore.js +11 -11
  175. package/dist/hooks/useUser.js +5 -5
  176. package/dist/index.js +11 -11
  177. package/dist/{navigation-JINL5V44.js → navigation-7ZIYPM45.js} +5 -5
  178. package/dist/{navigation-JINL5V44.js.map → navigation-7ZIYPM45.js.map} +1 -1
  179. package/dist/{navigation-ERMAPC4D.js → navigation-ZRCCK54S.js} +4 -4
  180. package/dist/{navigation-ERMAPC4D.js.map → navigation-ZRCCK54S.js.map} +1 -1
  181. package/dist/{not-found-XB353NYX.js → not-found-M6PIZHJW.js} +14 -14
  182. package/dist/{not-found-XB353NYX.js.map → not-found-M6PIZHJW.js.map} +1 -1
  183. package/dist/providers/index.js +11 -11
  184. package/dist/routes/account/orders.js +6 -6
  185. package/dist/routes/account.js +15 -15
  186. package/dist/routes/blog.js +10 -10
  187. package/dist/routes/brands.js +6 -6
  188. package/dist/routes/cart.js +19 -19
  189. package/dist/routes/home.js +16 -16
  190. package/dist/routes/index.js +3 -3
  191. package/dist/routes/loyalty.js +6 -6
  192. package/dist/routes/page.js +6 -6
  193. package/dist/routes/product-listing.js +16 -16
  194. package/dist/routes/product.js +14 -14
  195. package/dist/routes/root/beforeLoad.d.ts.map +1 -1
  196. package/dist/routes/seo-redirects.js +3 -3
  197. package/dist/routes/testimonials.js +2 -2
  198. package/dist/routes/thank-you.js +6 -6
  199. package/dist/skeleton.js +16 -16
  200. package/dist/tanstack/router.d.ts.map +1 -1
  201. package/dist/tanstack.js +15 -15
  202. package/dist/twilight/context.d.ts.map +1 -1
  203. package/dist/types/index.d.ts +15 -0
  204. package/dist/types/index.d.ts.map +1 -1
  205. package/dist/utils/index.js +4 -4
  206. package/dist/vite/index.js +2 -2
  207. package/package.json +1 -1
  208. package/dist/chunk-KT2MUSRN.js +0 -25
  209. package/dist/chunk-KT2MUSRN.js.map +0 -1
  210. package/dist/chunk-O6XXHXC4.js.map +0 -1
  211. package/dist/chunk-PJWFEMBX.js.map +0 -1
  212. package/dist/chunk-PQDWDCXJ.js.map +0 -1
  213. package/dist/chunk-QVLXGXKB.js +0 -14
  214. package/dist/document-class-SRIHOY5T.js +0 -25
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/account/wishlist/WishlistShare.tsx","../src/routes/account/wishlist/WishlistPage.tsx"],"names":["SallaSocialShare","jsxs","jsx","SallaButton","useRef"],"mappings":"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","file":"WishlistPage-6BKGGSPU.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\n// The eager (non-deferred) export: the share dialog is opened imperatively through a ref, and the\n// deferred wrapper doesn't attach it until it has hydrated — a click before that would do nothing.\nimport { SallaSocialShareCore as SallaSocialShare } from '@salla.sa/twilight-components-react/social-share';\nimport { useTranslation } from '../../../providers/I18nProvider';\n\ntype ShareResponse = { data?: { url?: string }; url?: string } | undefined;\ntype SocialShareElement = HTMLElement & {\n url?: string;\n refresh?: () => Promise<void>;\n open?: () => Promise<void>;\n close?: () => Promise<void>;\n};\n\n/**\n * Share state for the wishlist page: the \"Share\" dropdown (share the whole list / share\n * specific items), the selection used by \"specific items\", and the share request itself.\n * Mirrors what the SDK's `<salla-wishlist-actions>` does, but drives the page's own React\n * list — that component needs a sibling `<salla-products-list>`, which this page doesn't render.\n */\nexport function useWishlistShare() {\n const [menuOpen, setMenuOpen] = useState(false);\n const [selecting, setSelecting] = useState(false);\n const [selectedIds, setSelectedIds] = useState<number[]>([]);\n const [sharing, setSharing] = useState(false);\n const [shareUrl, setShareUrl] = useState('');\n /** Ids of every product currently rendered (later cursor pages included), for \"select all\". */\n const loadedIdsRef = useRef<number[]>([]);\n const socialShareRef = useRef<SocialShareElement | null>(null);\n\n const share = useCallback(async (ids: number[], selectAll: boolean) => {\n if (!window.salla?.wishlist?.share) return;\n setSharing(true);\n try {\n const response = (await window.salla.wishlist.share(ids, selectAll)) as ShareResponse;\n const url = response?.data?.url || response?.url || '';\n if (!url) return;\n setShareUrl(url);\n const element = socialShareRef.current;\n if (element) {\n element.url = url;\n await element.refresh?.();\n await element.open?.();\n }\n } catch {\n // The SDK reports a failed share itself (notification); nothing to recover here.\n } finally {\n setSharing(false);\n }\n }, []);\n\n const shareAll = useCallback(() => {\n setMenuOpen(false);\n void share([], true);\n }, [share]);\n\n const shareSelected = useCallback(() => {\n if (selectedIds.length) void share(selectedIds, false);\n }, [share, selectedIds]);\n\n const startSelecting = useCallback(() => {\n setMenuOpen(false);\n setSelecting(true);\n }, []);\n\n const cancelSelecting = useCallback(() => {\n setSelecting(false);\n setSelectedIds([]);\n setShareUrl('');\n void socialShareRef.current?.close?.();\n }, []);\n\n const toggleSelected = useCallback((id: number) => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.includes(id) ? current.filter((existing) => existing !== id) : [...current, id]\n );\n }, []);\n\n const toggleAll = useCallback(() => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.length && current.length === loadedIdsRef.current.length\n ? []\n : [...loadedIdsRef.current]\n );\n }, []);\n\n return {\n menuOpen,\n setMenuOpen,\n selecting,\n selectedIds,\n sharing,\n shareUrl,\n loadedIdsRef,\n socialShareRef,\n shareAll,\n shareSelected,\n startSelecting,\n cancelSelecting,\n toggleSelected,\n toggleAll,\n };\n}\n\nexport type WishlistShareState = ReturnType<typeof useWishlistShare>;\n\n/** The bar above the wishlist: the \"Share\" dropdown, or — while picking products — the selection controls. */\nexport function WishlistShareBar({\n state,\n hasProducts,\n}: {\n state: WishlistShareState;\n hasProducts: boolean;\n}) {\n const { t } = useTranslation();\n const rootRef = useRef<HTMLDivElement>(null);\n const { menuOpen, setMenuOpen } = state;\n\n // Close the dropdown on an outside click or Escape.\n useEffect(() => {\n if (!menuOpen) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) setMenuOpen(false);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setMenuOpen(false);\n };\n document.addEventListener('mousedown', onPointerDown);\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('mousedown', onPointerDown);\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [menuOpen, setMenuOpen]);\n\n const selectedCount = state.selectedIds.length;\n const allSelected = selectedCount > 0 && selectedCount === state.loadedIdsRef.current.length;\n\n return (\n <div ref={rootRef} className=\"s-wishlist-actions\">\n <div className=\"s-wishlist-actions-bar flex items-center justify-end gap-3 mb-3\">\n {state.selecting ? (\n <div className=\"s-wishlist-actions-selection flex items-center gap-3\">\n <label className=\"s-wishlist-actions-select-all inline-flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(input) => {\n if (input) input.indeterminate = selectedCount > 0 && !allSelected;\n }}\n onChange={state.toggleAll}\n />\n {t('pages.wishlist.select_all', 'Select all')}\n </label>\n <SallaButton\n color=\"primary\"\n disabled={selectedCount === 0 || state.sharing}\n onClick={state.shareSelected}\n >\n {t('pages.wishlist.share', 'Share')}\n {selectedCount > 0 ? ` (${selectedCount})` : ''}\n </SallaButton>\n <SallaButton fill=\"outline\" color=\"light\" onClick={state.cancelSelecting}>\n {t('common.elements.cancel', 'Cancel')}\n </SallaButton>\n </div>\n ) : (\n <div className=\"s-wishlist-actions-dropdown relative\">\n <SallaButton\n color=\"primary\"\n fill=\"outline\"\n disabled={!hasProducts || state.sharing}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen}\n onClick={() => setMenuOpen(!menuOpen)}\n >\n <span className=\"flex items-center justify-center gap-2\">\n <i className=\"sicon-share-alt\" aria-hidden=\"true\" />\n {t('pages.wishlist.share', 'Share')}\n <i className=\"sicon-keyboard_arrow_down\" aria-hidden=\"true\" />\n </span>\n </SallaButton>\n {menuOpen && (\n <ul\n role=\"menu\"\n className=\"s-wishlist-actions-menu absolute z-10 mt-2 min-w-48 rounded-md bg-white py-2 shadow-default rtl:right-0 ltr:left-0\"\n >\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.shareAll}\n >\n {t('pages.wishlist.share_all', 'Share the list')}\n </button>\n </li>\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.startSelecting}\n >\n {t('pages.wishlist.share_specific', 'Share specific items')}\n </button>\n </li>\n </ul>\n )}\n </div>\n )}\n </div>\n {/* Same setup as the SDK's <salla-wishlist-actions>: the centered modal variant, opened by the\n dropdown rather than by the component's own round share button, so the default\n `widget` slot (that button) is replaced by an empty anchor. */}\n <SallaSocialShare\n ref={state.socialShareRef as never}\n url={state.shareUrl || undefined}\n mode=\"modal\"\n modalTitle={t('pages.wishlist.share_list_title', 'Share wishlist')}\n className=\"s-wishlist-actions-social\"\n >\n <span slot=\"widget\" className=\"s-wishlist-actions-social-anchor\" aria-hidden=\"true\" />\n </SallaSocialShare>\n </div>\n );\n}\n","import { useMemo, useRef } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { wishlist } from '../../../api/wishlist';\nimport type { Product } from '../../../types';\nimport { HookSlot, useWishlist, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WishlistPageProps } from './types';\nimport { WishlistShareBar, useWishlistShare } from './WishlistShare';\nimport { NoContent, Image } from '../../../components/common';\nimport { useLocation } from '../../../providers/NavigationProvider';\n\ninterface WishlistCardSelection {\n /** \"Share specific items\" mode: the card shows a checkbox and toggles on click. */\n selecting: boolean;\n selected: boolean;\n onToggle: (id: number) => void;\n}\n\nfunction WishlistCard({\n product: prod,\n selection,\n}: {\n product: Product;\n selection?: WishlistCardSelection;\n}) {\n const { remove } = useWishlist();\n const { format } = useMoney();\n\n const handleRemove = () => {\n if (prod.id) {\n remove(Number(prod.id));\n }\n };\n\n const displayPrice = prod.sale_price ?? prod.price;\n const regularPrice = prod.regular_price;\n\n return (\n <div\n id={`wishlist-product-${prod.id}`}\n className={`product-entry product-entry--wishlist${selection?.selected ? ' is-selected' : ''}`}\n >\n {selection?.selecting && (\n <input\n type=\"checkbox\"\n className=\"s-wishlist-select shrink-0 rtl:ml-4 ltr:mr-4\"\n aria-label={prod.name}\n checked={selection.selected}\n onChange={() => selection.onToggle(Number(prod.id))}\n />\n )}\n <div className=\"flex items-center mb-4 sm:mb-0\">\n <a href={prod.url} className=\"product-entry__image\">\n <Image\n className=\"object-cover w-full h-full\"\n src={prod.image?.url}\n alt={prod.image?.alt ?? prod.name}\n aspectRatio=\"1/1\"\n />\n </a>\n <div className=\"flex-1 rtl:pr-5 ltr:pl-5\">\n <h3 className=\"text-sm text-gray-800 leading-6 mb-1.5 rtl:pl-5 ltr:pr-5 rtl:md:pl-8 ltr:md:pr-8 line-clamp-1\">\n <a href={prod.url}>{prod.name}</a>\n </h3>\n <div className=\"w-full center-between\">\n {prod.is_on_sale && regularPrice ? (\n <div className=\"space-x-1 rtl:space-x-reverse\">\n <h4 className=\"inline-block text-sm font-bold text-red-400\">\n {format(displayPrice)}\n </h4>\n <span className=\"text-sm text-gray-500 line-through\">{format(regularPrice)}</span>\n </div>\n ) : (\n <h4 className=\"text-sm font-bold\">{format(displayPrice)}</h4>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <SallaAddProductButton\n productStatus={prod.status}\n productId={prod.id}\n productType={prod.type}\n loaderPosition=\"center\"\n fill=\"outline\"\n className=\"flex-grow w-full sm:grow-0 md:w-40\"\n />\n <SallaButton\n loaderPosition=\"center\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n onClick={handleRemove}\n >\n <i className=\"sicon-cancel\" />\n </SallaButton>\n </div>\n </div>\n );\n}\n\nexport function WishlistPage({ query, products, pagination }: WishlistPageProps) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n\n // Track the next page to load (starts at page 2 since page 1 is SSR)\n const nextPageRef = useRef(query.page + 1);\n const shareState = useWishlistShare();\n const selectedIdSet = useMemo(() => new Set(shareState.selectedIds), [shareState.selectedIds]);\n\n const loader = async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wishlist.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n\n return {\n items: result.items,\n next: result.next,\n };\n };\n\n return (\n <div className=\"space-y-5\" id=\"wishlist\">\n <HookSlot name=\"customer:wishlist.items.start\" />\n <WishlistShareBar state={shareState} hasProducts={products.length > 0} />\n <ItemsList<Product>\n items={products}\n loader={loader}\n mode={pagination?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-products-list\"\n itemsClassName=\"s-products-list-wrapper s-products-list-row-cards\"\n empty={\n <div className=\"text-center py-16\">\n <NoContent\n icon=\"sicon-heart\"\n message={t('common.errors.no_wishlist', \"You don't have any wishes\")}\n actionLabel={t('pages.offer.continue_shopping', 'Continue shopping')}\n actionUrl=\"/\"\n />\n </div>\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) => {\n shareState.loadedIdsRef.current = items.map((item) => Number(item.id));\n return items.map((prod) => (\n <WishlistCard\n key={prod.id}\n product={prod}\n selection={{\n selecting: shareState.selecting,\n selected: selectedIdSet.has(Number(prod.id)),\n onToggle: shareState.toggleSelected,\n }}\n />\n ));\n }}\n </ItemsList>\n <HookSlot name=\"customer:wishlist.items.end\" />\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/account/wishlist/WishlistShare.tsx","../src/routes/account/wishlist/WishlistPage.tsx"],"names":["SallaSocialShare","jsxs","jsx","SallaButton","useRef"],"mappings":"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","file":"WishlistPage-BRB7RZEF.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\n// The eager (non-deferred) export: the share dialog is opened imperatively through a ref, and the\n// deferred wrapper doesn't attach it until it has hydrated — a click before that would do nothing.\nimport { SallaSocialShareCore as SallaSocialShare } from '@salla.sa/twilight-components-react/social-share';\nimport { useTranslation } from '../../../providers/I18nProvider';\n\ntype ShareResponse = { data?: { url?: string }; url?: string } | undefined;\ntype SocialShareElement = HTMLElement & {\n url?: string;\n refresh?: () => Promise<void>;\n open?: () => Promise<void>;\n close?: () => Promise<void>;\n};\n\n/**\n * Share state for the wishlist page: the \"Share\" dropdown (share the whole list / share\n * specific items), the selection used by \"specific items\", and the share request itself.\n * Mirrors what the SDK's `<salla-wishlist-actions>` does, but drives the page's own React\n * list — that component needs a sibling `<salla-products-list>`, which this page doesn't render.\n */\nexport function useWishlistShare() {\n const [menuOpen, setMenuOpen] = useState(false);\n const [selecting, setSelecting] = useState(false);\n const [selectedIds, setSelectedIds] = useState<number[]>([]);\n const [sharing, setSharing] = useState(false);\n const [shareUrl, setShareUrl] = useState('');\n /** Ids of every product currently rendered (later cursor pages included), for \"select all\". */\n const loadedIdsRef = useRef<number[]>([]);\n const socialShareRef = useRef<SocialShareElement | null>(null);\n\n const share = useCallback(async (ids: number[], selectAll: boolean) => {\n if (!window.salla?.wishlist?.share) return;\n setSharing(true);\n try {\n const response = (await window.salla.wishlist.share(ids, selectAll)) as ShareResponse;\n const url = response?.data?.url || response?.url || '';\n if (!url) return;\n setShareUrl(url);\n const element = socialShareRef.current;\n if (element) {\n element.url = url;\n await element.refresh?.();\n await element.open?.();\n }\n } catch {\n // The SDK reports a failed share itself (notification); nothing to recover here.\n } finally {\n setSharing(false);\n }\n }, []);\n\n const shareAll = useCallback(() => {\n setMenuOpen(false);\n void share([], true);\n }, [share]);\n\n const shareSelected = useCallback(() => {\n if (selectedIds.length) void share(selectedIds, false);\n }, [share, selectedIds]);\n\n const startSelecting = useCallback(() => {\n setMenuOpen(false);\n setSelecting(true);\n }, []);\n\n const cancelSelecting = useCallback(() => {\n setSelecting(false);\n setSelectedIds([]);\n setShareUrl('');\n void socialShareRef.current?.close?.();\n }, []);\n\n const toggleSelected = useCallback((id: number) => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.includes(id) ? current.filter((existing) => existing !== id) : [...current, id]\n );\n }, []);\n\n const toggleAll = useCallback(() => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.length && current.length === loadedIdsRef.current.length\n ? []\n : [...loadedIdsRef.current]\n );\n }, []);\n\n return {\n menuOpen,\n setMenuOpen,\n selecting,\n selectedIds,\n sharing,\n shareUrl,\n loadedIdsRef,\n socialShareRef,\n shareAll,\n shareSelected,\n startSelecting,\n cancelSelecting,\n toggleSelected,\n toggleAll,\n };\n}\n\nexport type WishlistShareState = ReturnType<typeof useWishlistShare>;\n\n/** The bar above the wishlist: the \"Share\" dropdown, or — while picking products — the selection controls. */\nexport function WishlistShareBar({\n state,\n hasProducts,\n}: {\n state: WishlistShareState;\n hasProducts: boolean;\n}) {\n const { t } = useTranslation();\n const rootRef = useRef<HTMLDivElement>(null);\n const { menuOpen, setMenuOpen } = state;\n\n // Close the dropdown on an outside click or Escape.\n useEffect(() => {\n if (!menuOpen) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) setMenuOpen(false);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setMenuOpen(false);\n };\n document.addEventListener('mousedown', onPointerDown);\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('mousedown', onPointerDown);\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [menuOpen, setMenuOpen]);\n\n const selectedCount = state.selectedIds.length;\n const allSelected = selectedCount > 0 && selectedCount === state.loadedIdsRef.current.length;\n\n return (\n <div ref={rootRef} className=\"s-wishlist-actions\">\n <div className=\"s-wishlist-actions-bar flex items-center justify-end gap-3 mb-3\">\n {state.selecting ? (\n <div className=\"s-wishlist-actions-selection flex items-center gap-3\">\n <label className=\"s-wishlist-actions-select-all inline-flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(input) => {\n if (input) input.indeterminate = selectedCount > 0 && !allSelected;\n }}\n onChange={state.toggleAll}\n />\n {t('pages.wishlist.select_all', 'Select all')}\n </label>\n <SallaButton\n color=\"primary\"\n disabled={selectedCount === 0 || state.sharing}\n onClick={state.shareSelected}\n >\n {t('pages.wishlist.share', 'Share')}\n {selectedCount > 0 ? ` (${selectedCount})` : ''}\n </SallaButton>\n <SallaButton fill=\"outline\" color=\"light\" onClick={state.cancelSelecting}>\n {t('common.elements.cancel', 'Cancel')}\n </SallaButton>\n </div>\n ) : (\n <div className=\"s-wishlist-actions-dropdown relative\">\n <SallaButton\n color=\"primary\"\n fill=\"outline\"\n disabled={!hasProducts || state.sharing}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen}\n onClick={() => setMenuOpen(!menuOpen)}\n >\n <span className=\"flex items-center justify-center gap-2\">\n <i className=\"sicon-share-alt\" aria-hidden=\"true\" />\n {t('pages.wishlist.share', 'Share')}\n <i className=\"sicon-keyboard_arrow_down\" aria-hidden=\"true\" />\n </span>\n </SallaButton>\n {menuOpen && (\n <ul\n role=\"menu\"\n className=\"s-wishlist-actions-menu absolute z-10 mt-2 min-w-48 rounded-md bg-white py-2 shadow-default rtl:right-0 ltr:left-0\"\n >\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.shareAll}\n >\n {t('pages.wishlist.share_all', 'Share the list')}\n </button>\n </li>\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.startSelecting}\n >\n {t('pages.wishlist.share_specific', 'Share specific items')}\n </button>\n </li>\n </ul>\n )}\n </div>\n )}\n </div>\n {/* Same setup as the SDK's <salla-wishlist-actions>: the centered modal variant, opened by the\n dropdown rather than by the component's own round share button, so the default\n `widget` slot (that button) is replaced by an empty anchor. */}\n <SallaSocialShare\n ref={state.socialShareRef as never}\n url={state.shareUrl || undefined}\n mode=\"modal\"\n modalTitle={t('pages.wishlist.share_list_title', 'Share wishlist')}\n className=\"s-wishlist-actions-social\"\n >\n <span slot=\"widget\" className=\"s-wishlist-actions-social-anchor\" aria-hidden=\"true\" />\n </SallaSocialShare>\n </div>\n );\n}\n","import { useMemo, useRef } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { wishlist } from '../../../api/wishlist';\nimport type { Product } from '../../../types';\nimport { HookSlot, useWishlist, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WishlistPageProps } from './types';\nimport { WishlistShareBar, useWishlistShare } from './WishlistShare';\nimport { NoContent, Image } from '../../../components/common';\nimport { useLocation } from '../../../providers/NavigationProvider';\n\ninterface WishlistCardSelection {\n /** \"Share specific items\" mode: the card shows a checkbox and toggles on click. */\n selecting: boolean;\n selected: boolean;\n onToggle: (id: number) => void;\n}\n\nfunction WishlistCard({\n product: prod,\n selection,\n}: {\n product: Product;\n selection?: WishlistCardSelection;\n}) {\n const { remove } = useWishlist();\n const { format } = useMoney();\n\n const handleRemove = () => {\n if (prod.id) {\n remove(Number(prod.id));\n }\n };\n\n const displayPrice = prod.sale_price ?? prod.price;\n const regularPrice = prod.regular_price;\n\n return (\n <div\n id={`wishlist-product-${prod.id}`}\n className={`product-entry product-entry--wishlist${selection?.selected ? ' is-selected' : ''}`}\n >\n {selection?.selecting && (\n <input\n type=\"checkbox\"\n className=\"s-wishlist-select shrink-0 rtl:ml-4 ltr:mr-4\"\n aria-label={prod.name}\n checked={selection.selected}\n onChange={() => selection.onToggle(Number(prod.id))}\n />\n )}\n <div className=\"flex items-center mb-4 sm:mb-0\">\n <a href={prod.url} className=\"product-entry__image\">\n <Image\n className=\"object-cover w-full h-full\"\n src={prod.image?.url}\n alt={prod.image?.alt ?? prod.name}\n aspectRatio=\"1/1\"\n />\n </a>\n <div className=\"flex-1 rtl:pr-5 ltr:pl-5\">\n <h3 className=\"text-sm text-gray-800 leading-6 mb-1.5 rtl:pl-5 ltr:pr-5 rtl:md:pl-8 ltr:md:pr-8 line-clamp-1\">\n <a href={prod.url}>{prod.name}</a>\n </h3>\n <div className=\"w-full center-between\">\n {prod.is_on_sale && regularPrice ? (\n <div className=\"space-x-1 rtl:space-x-reverse\">\n <h4 className=\"inline-block text-sm font-bold text-red-400\">\n {format(displayPrice)}\n </h4>\n <span className=\"text-sm text-gray-500 line-through\">{format(regularPrice)}</span>\n </div>\n ) : (\n <h4 className=\"text-sm font-bold\">{format(displayPrice)}</h4>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <SallaAddProductButton\n productStatus={prod.status}\n productId={prod.id}\n productType={prod.type}\n loaderPosition=\"center\"\n fill=\"outline\"\n className=\"flex-grow w-full sm:grow-0 md:w-40\"\n />\n <SallaButton\n loaderPosition=\"center\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n onClick={handleRemove}\n >\n <i className=\"sicon-cancel\" />\n </SallaButton>\n </div>\n </div>\n );\n}\n\nexport function WishlistPage({ query, products, pagination }: WishlistPageProps) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n\n // Track the next page to load (starts at page 2 since page 1 is SSR)\n const nextPageRef = useRef(query.page + 1);\n const shareState = useWishlistShare();\n const selectedIdSet = useMemo(() => new Set(shareState.selectedIds), [shareState.selectedIds]);\n\n const loader = async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wishlist.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n\n return {\n items: result.items,\n next: result.next,\n };\n };\n\n return (\n <div className=\"space-y-5\" id=\"wishlist\">\n <HookSlot name=\"customer:wishlist.items.start\" />\n <WishlistShareBar state={shareState} hasProducts={products.length > 0} />\n <ItemsList<Product>\n items={products}\n loader={loader}\n mode={pagination?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-products-list\"\n itemsClassName=\"s-products-list-wrapper s-products-list-row-cards\"\n empty={\n <div className=\"text-center py-16\">\n <NoContent\n icon=\"sicon-heart\"\n message={t('common.errors.no_wishlist', \"You don't have any wishes\")}\n actionLabel={t('pages.offer.continue_shopping', 'Continue shopping')}\n actionUrl=\"/\"\n />\n </div>\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) => {\n shareState.loadedIdsRef.current = items.map((item) => Number(item.id));\n return items.map((prod) => (\n <WishlistCard\n key={prod.id}\n product={prod}\n selection={{\n selecting: shareState.selecting,\n selected: selectedIdSet.has(Number(prod.id)),\n onToggle: shareState.toggleSelected,\n }}\n />\n ));\n }}\n </ItemsList>\n <HookSlot name=\"customer:wishlist.items.end\" />\n </div>\n );\n}\n"]}
package/dist/api/apps.js CHANGED
@@ -1,8 +1,8 @@
1
- export { apps } from '../chunk-3MHDV5JS.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { apps } from '../chunk-MJGW6YZQ.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=apps.js.map
@@ -1,10 +1,10 @@
1
- export { brand } from '../chunk-XEQ6ILIP.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { brand } from '../chunk-NQHOKDDF.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
package/dist/api/cart.js CHANGED
@@ -1,10 +1,10 @@
1
- export { cart } from '../chunk-QBIW266S.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { cart } from '../chunk-RA6FYDRQ.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
@@ -1,10 +1,10 @@
1
- export { category } from '../chunk-A2ZO3IR7.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { category } from '../chunk-UIC4FUJM.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
@@ -37,4 +37,13 @@ export declare const getActiveScopeId: () => string | null;
37
37
  */
38
38
  export declare const api: import("ky").KyInstance;
39
39
  export declare const cdn: import("ky").KyInstance;
40
+ /**
41
+ * The merchant uploader's public bucket, `admin-uploader-prod`.
42
+ *
43
+ * A different host from {@link cdn} and a different thing behind it: this one
44
+ * is an R2 custom domain, so a read never passes through a worker. Storefront
45
+ * translations live here, per language, under `translations/` — see
46
+ * `api/translations.ts`.
47
+ */
48
+ export declare const filesCdn: import("ky").KyInstance;
40
49
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAiC1B;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAM,GAAG,IACc,CAAC;AAsBxD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,oBAA+B,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,QAAO,WAAW,GAAG,IAiB/C,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,IAAoC,CAAC;AAelF;;;;;GAKG;AAIH,eAAO,MAAM,GAAG,yBA6Cd,CAAC;AAEH,eAAO,MAAM,GAAG,yBAGd,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAiC1B;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAM,GAAG,IACc,CAAC;AAsBxD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,oBAA+B,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,QAAO,WAAW,GAAG,IAiB/C,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,IAAoC,CAAC;AAelF;;;;;GAKG;AAIH,eAAO,MAAM,GAAG,yBA6Cd,CAAC;AAEH,eAAO,MAAM,GAAG,yBAGd,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,yBAGnB,CAAC"}
@@ -1,7 +1,7 @@
1
- export { STORE_IDENTIFIER_HEADER, api, cdn, getActiveScope, getActiveScopeId, getAuthToken } from '../chunk-O6XXHXC4.js';
2
- import '../chunk-3FIWHGCZ.js';
1
+ export { STORE_IDENTIFIER_HEADER, api, cdn, filesCdn, getActiveScope, getActiveScopeId, getAuthToken } from '../chunk-POLSCD5O.js';
2
+ import '../chunk-RLNBEDA4.js';
3
3
  import '../chunk-XTMHHLNK.js';
4
- import '../chunk-PJWFEMBX.js';
4
+ import '../chunk-YDU4K4M7.js';
5
5
  import '../chunk-T72DAX7R.js';
6
6
  import '../chunk-DGUM43GV.js';
7
7
  //# sourceMappingURL=client.js.map
package/dist/api/home.js CHANGED
@@ -1,8 +1,8 @@
1
- export { home } from '../chunk-P4DUWQU4.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { home } from '../chunk-JNB2WC5Z.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=home.js.map
@@ -1,10 +1,10 @@
1
- export { loyalty } from '../chunk-62SHHET3.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { loyalty } from '../chunk-RQOCJRHY.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
package/dist/api/menu.js CHANGED
@@ -1,8 +1,8 @@
1
- export { menu } from '../chunk-UV5BRJH4.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { menu } from '../chunk-UFOSIY3P.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=menu.js.map
@@ -1,8 +1,8 @@
1
- export { notification } from '../chunk-MENDTTOA.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { notification } from '../chunk-RL4VZU3P.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=notification.js.map
package/dist/api/order.js CHANGED
@@ -1,10 +1,10 @@
1
- export { order } from '../chunk-QM75GGXX.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { order } from '../chunk-232SREMP.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
package/dist/api/page.js CHANGED
@@ -1,10 +1,10 @@
1
- export { page } from '../chunk-TIDHWQIS.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { page } from '../chunk-K3WTFB6A.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
@@ -1,10 +1,10 @@
1
- export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-BVB75J3R.js';
2
- import '../chunk-63GHZIAG.js';
1
+ export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-XJDQHKV6.js';
2
+ import '../chunk-FLAJQXOM.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-O6XXHXC4.js';
5
- import '../chunk-3FIWHGCZ.js';
4
+ import '../chunk-POLSCD5O.js';
5
+ import '../chunk-RLNBEDA4.js';
6
6
  import '../chunk-XTMHHLNK.js';
7
- import '../chunk-PJWFEMBX.js';
7
+ import '../chunk-YDU4K4M7.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
@@ -1,7 +1,7 @@
1
- import { api } from '../chunk-O6XXHXC4.js';
2
- import '../chunk-3FIWHGCZ.js';
1
+ import { api } from '../chunk-POLSCD5O.js';
2
+ import '../chunk-RLNBEDA4.js';
3
3
  import '../chunk-XTMHHLNK.js';
4
- import '../chunk-PJWFEMBX.js';
4
+ import '../chunk-YDU4K4M7.js';
5
5
  import '../chunk-T72DAX7R.js';
6
6
  import '../chunk-DGUM43GV.js';
7
7
 
package/dist/api/store.js CHANGED
@@ -1,8 +1,8 @@
1
- export { store } from '../chunk-WMSOSA74.js';
2
- import '../chunk-O6XXHXC4.js';
3
- export { resolveStoreIdentifier } from '../chunk-3FIWHGCZ.js';
1
+ export { store } from '../chunk-JR2NYBZS.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ export { resolveStoreIdentifier } from '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=store.js.map
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @fileoverview The translations query key, on its own, importing nothing.
3
+ *
4
+ * Three places read the cached translations — `rootBeforeLoad`, the hydration
5
+ * path in `tanstack/router.tsx`, and the lazy `i18n` accessor in
6
+ * `twilight/context.ts` — and all three have to agree on the key or the
7
+ * hydrated page misses the entry it was just handed and refetches. One
8
+ * definition is the only way to keep that true.
9
+ *
10
+ * It lives here rather than in `api/translations.ts`, where it would naturally
11
+ * sit, because **`twilight/context.ts` cannot afford that module's imports**.
12
+ * `api/translations` pulls in `api/client`, which pulls in `ky`; `context.ts`
13
+ * is imported directly by tests that mock `ky`, and adding that edge made six
14
+ * of them stop being mocked and start issuing real requests to `api.salla.dev`
15
+ * (`tests/routes/rootBeforeLoad.test.ts`, bisected to exactly this import). A
16
+ * leaf module with no imports of its own cannot do that to anyone.
17
+ */
18
+ /**
19
+ * @param locale is part of the key because each file on the CDN holds one
20
+ * language. The global file this replaced carried every language and was
21
+ * sliced after the cache, so a key without the locale was correct then and is
22
+ * a wrong-language bug now: `/ar` → `/en` would reuse the Arabic entry.
23
+ */
24
+ export declare function translationsQueryKey(locale: string): [string, string];
25
+ /**
26
+ * The merchant's own wording for one store and one language.
27
+ *
28
+ * Separate from {@link translationsQueryKey} rather than folded into it,
29
+ * because the two files have different lifetimes and different audiences: the
30
+ * platform's copy is the same object for every store on the CDN, and this one
31
+ * is a single merchant's overrides. Keeping them apart means a store with no
32
+ * overrides never invalidates, refetches or dehydrates anything on its account.
33
+ *
34
+ * @param storeId is `settings.store.id` — the Optimus-encoded numeric id, which
35
+ * is what names the object. It is safe in a key even though the locale-only key
36
+ * deliberately avoids naming a store: that warning is about a store *resolved
37
+ * from the request*, which differs between server and client. This one is read
38
+ * out of the settings payload, so both sides compute it from the same
39
+ * dehydrated data and agree.
40
+ */
41
+ export declare function storeTranslationsQueryKey(storeId: string | number, locale: string): [string, string, string];
42
+ //# sourceMappingURL=translations-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations-key.d.ts","sourceRoot":"","sources":["../../src/api/translations-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAErE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,GACb,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE1B"}
@@ -1,10 +1,77 @@
1
1
  import type { TranslationMessages } from '../providers/I18nProvider';
2
+ /** One language of platform copy, shared by every store. */
3
+ export declare function commonTranslationsPath(locale: string): string;
4
+ /**
5
+ * One language of a single merchant's own wording.
6
+ *
7
+ * `storeId` is `settings.store.id`, which is the value `Languages-Module` names
8
+ * the object with (`store()->getRouteKey()`, the Optimus-encoded numeric id).
9
+ * It is **not** `resolveStoreIdentifier()`: that returns a hostname on a custom
10
+ * domain and a username on a shared host, both of which 404 here and would read
11
+ * as "this merchant has no overrides" — silently, on every store but a preview.
12
+ */
13
+ export declare function storeTranslationsPath(storeId: string | number, locale: string): string;
14
+ type Messages = Record<string, unknown>;
2
15
  export declare const translations: {
3
- get: () => Promise<TranslationMessages | null>;
16
+ /**
17
+ * The platform's copy for `locale`.
18
+ *
19
+ * One file, so one request. See the file comment for why the merchant's own
20
+ * wording is not merged in here yet and what it is waiting on.
21
+ */
22
+ get: (locale: string) => Promise<TranslationMessages | null>;
23
+ /**
24
+ * This merchant's own wording for `locale`, or `null` if they have none.
25
+ *
26
+ * Only worth calling when `settings.languages[<ISO>].has_custom_translations`
27
+ * says there is something to get. Most stores have never customised a word,
28
+ * and a miss here is an uncached round trip — `cf-cache-status: DYNAMIC` on a
29
+ * 404 — on the critical path of an SSR render. The flag is what makes this
30
+ * free for everyone who does not use it.
31
+ *
32
+ * Returned unwrapped, unlike {@link translations.get}: this is merged into
33
+ * that one's messages rather than handed to i18next on its own.
34
+ */
35
+ forStore: (storeId: string | number, locale: string) => Promise<Messages | null>;
36
+ /**
37
+ * The platform's copy for `locale` with this merchant's wording laid over it.
38
+ *
39
+ * Takes the two as values rather than fetching them, so the caller decides
40
+ * whether the second request happens at all and both stay separately cached.
41
+ */
42
+ merge: (common: TranslationMessages | null, overrides: Messages | null, locale: string) => TranslationMessages | null;
4
43
  queries: {
5
- byLocale: () => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<TranslationMessages | null, Error, TranslationMessages | null, string[]>, "queryFn"> & {
6
- queryFn?: import("@tanstack/react-query").QueryFunction<TranslationMessages | null, string[], never> | undefined;
7
- } & import("@tanstack/react-query").QueryKeyWithDataTag<string[], TranslationMessages | null, Error>;
44
+ /**
45
+ * @param locale taken as an argument rather than read from the twilight
46
+ * context, and that is load-bearing. This key is built on the server, on
47
+ * hydration, and again lazily from the context accessor; if any of the
48
+ * three read a locale the others had not been given yet, the hydrated page
49
+ * would miss the dehydrated entry and refetch both files it was just
50
+ * handed. Every caller already has the locale in hand.
51
+ *
52
+ * The store is deliberately **not** in the key. One document serves one
53
+ * store — a request that names a different one is redirected with
54
+ * `reloadDocument`, so the client never changes store under a live cache —
55
+ * and adding a value that resolves from the request on the server and from
56
+ * the injected env on the client is how a key stops matching across
57
+ * hydration.
58
+ */
59
+ byLocale: (locale: string) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<TranslationMessages | null, Error, TranslationMessages | null, [string, string]>, "queryFn"> & {
60
+ queryFn?: import("@tanstack/react-query").QueryFunction<TranslationMessages | null, [string, string], never> | undefined;
61
+ } & import("@tanstack/react-query").QueryKeyWithDataTag<[string, string], TranslationMessages | null, Error>;
62
+ /**
63
+ * This merchant's overrides, cached apart from the platform's copy.
64
+ *
65
+ * Its own entry rather than a wider `byLocale` key, so the common file is
66
+ * fetched and dehydrated once per language whatever the store does, and a
67
+ * store with no overrides never has an entry at all. Both sides compute the
68
+ * key from the settings payload, so the hydrated page finds what the server
69
+ * dehydrated instead of refetching it.
70
+ */
71
+ byStore: (storeId: string | number, locale: string) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<Messages | null, Error, Messages | null, [string, string, string]>, "queryFn"> & {
72
+ queryFn?: import("@tanstack/react-query").QueryFunction<Messages | null, [string, string, string], never> | undefined;
73
+ } & import("@tanstack/react-query").QueryKeyWithDataTag<[string, string, string], Messages | null, Error>;
8
74
  };
9
75
  };
76
+ export {};
10
77
  //# sourceMappingURL=translations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../src/api/translations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,eAAO,MAAM,YAAY;eACR,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;;;;;;CAmBnD,CAAC"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../src/api/translations.ts"],"names":[],"mappings":"AA6DA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAoFxC,eAAO,MAAM,YAAY;IACvB;;;;;OAKG;kBACiB,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAYhE;;;;;;;;;;;OAWG;wBACuB,MAAM,GAAG,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAGpF;;;;;OAKG;oBAEO,mBAAmB,GAAG,IAAI,aACvB,QAAQ,GAAG,IAAI,UAClB,MAAM,KACb,mBAAmB,GAAG,IAAI;;QAa3B;;;;;;;;;;;;;;WAcG;2BACgB,MAAM;;;QAMzB;;;;;;;;WAQG;2BACgB,MAAM,GAAG,MAAM,UAAU,MAAM;;;;CAMrD,CAAC"}
@@ -1,8 +1,8 @@
1
- export { translations } from '../chunk-KT2MUSRN.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { commonTranslationsPath, storeTranslationsPath, translations } from '../chunk-SHHF6XXL.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=translations.js.map
package/dist/api/user.js CHANGED
@@ -1,8 +1,8 @@
1
- export { user } from '../chunk-Z74NUTEI.js';
2
- import '../chunk-O6XXHXC4.js';
3
- import '../chunk-3FIWHGCZ.js';
1
+ export { user } from '../chunk-WD7HOPT5.js';
2
+ import '../chunk-POLSCD5O.js';
3
+ import '../chunk-RLNBEDA4.js';
4
4
  import '../chunk-XTMHHLNK.js';
5
- import '../chunk-PJWFEMBX.js';
5
+ import '../chunk-YDU4K4M7.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
8
  //# sourceMappingURL=user.js.map
@@ -1,11 +1,11 @@
1
- export { wishlist } from '../chunk-7XBSSGRK.js';
2
- import '../chunk-BVB75J3R.js';
3
- import '../chunk-63GHZIAG.js';
1
+ export { wishlist } from '../chunk-ODNUSQLR.js';
2
+ import '../chunk-XJDQHKV6.js';
3
+ import '../chunk-FLAJQXOM.js';
4
4
  import '../chunk-TFB3QXYH.js';
5
- import '../chunk-O6XXHXC4.js';
6
- import '../chunk-3FIWHGCZ.js';
5
+ import '../chunk-POLSCD5O.js';
6
+ import '../chunk-RLNBEDA4.js';
7
7
  import '../chunk-XTMHHLNK.js';
8
- import '../chunk-PJWFEMBX.js';
8
+ import '../chunk-YDU4K4M7.js';
9
9
  import '../chunk-T72DAX7R.js';
10
10
  import '../chunk-DF6FBKDN.js';
11
11
  import '../chunk-DGUM43GV.js';
@@ -1,5 +1,5 @@
1
- import { orThrow, orUnauthorized } from './chunk-63GHZIAG.js';
2
- import { api } from './chunk-O6XXHXC4.js';
1
+ import { orThrow, orUnauthorized } from './chunk-FLAJQXOM.js';
2
+ import { api } from './chunk-POLSCD5O.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
5
5
  var order = {
@@ -69,5 +69,5 @@ var order = {
69
69
  };
70
70
 
71
71
  export { order };
72
- //# sourceMappingURL=chunk-QM75GGXX.js.map
73
- //# sourceMappingURL=chunk-QM75GGXX.js.map
72
+ //# sourceMappingURL=chunk-232SREMP.js.map
73
+ //# sourceMappingURL=chunk-232SREMP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/order.ts"],"names":[],"mappings":"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","file":"chunk-QM75GGXX.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\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 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
+ {"version":3,"sources":["../src/api/order.ts"],"names":[],"mappings":"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","file":"chunk-232SREMP.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\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 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"]}