@salla.sa/twilight-theme-engine 1.0.37 → 1.0.38

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 (143) hide show
  1. package/dist/{AddToCartForm-BAXWUVBW.js → AddToCartForm-NS4UB73S.js} +3 -3
  2. package/dist/{AddToCartForm-BAXWUVBW.js.map → AddToCartForm-NS4UB73S.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-C7ENIUKC.js → BlogAuthorPage-Z7VWPXE5.js} +7 -7
  4. package/dist/{BlogAuthorPage-C7ENIUKC.js.map → BlogAuthorPage-Z7VWPXE5.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-QODJTKFE.js → BlogCategoryPage-ZB5IQAHL.js} +7 -7
  6. package/dist/{BlogCategoryPage-QODJTKFE.js.map → BlogCategoryPage-ZB5IQAHL.js.map} +1 -1
  7. package/dist/{BlogPage-N5BKRIWD.js → BlogPage-IQQWDW4A.js} +6 -6
  8. package/dist/{BlogPage-N5BKRIWD.js.map → BlogPage-IQQWDW4A.js.map} +1 -1
  9. package/dist/{BlogSinglePage-HVSCXCCV.js → BlogSinglePage-YXMOWFET.js} +6 -6
  10. package/dist/{BlogSinglePage-HVSCXCCV.js.map → BlogSinglePage-YXMOWFET.js.map} +1 -1
  11. package/dist/{BlogTagPage-YXYYHD5S.js → BlogTagPage-6ZNUK36E.js} +7 -7
  12. package/dist/{BlogTagPage-YXYYHD5S.js.map → BlogTagPage-6ZNUK36E.js.map} +1 -1
  13. package/dist/{BrandsPage-UP3HKHGR.js → BrandsPage-SRSDK6DP.js} +6 -6
  14. package/dist/{BrandsPage-UP3HKHGR.js.map → BrandsPage-SRSDK6DP.js.map} +1 -1
  15. package/dist/{Breadcrumb-5464BOGG.js → Breadcrumb-DNLZTRKM.js} +6 -6
  16. package/dist/{Breadcrumb-5464BOGG.js.map → Breadcrumb-DNLZTRKM.js.map} +1 -1
  17. package/dist/{CartItem-TARZW35A.js → CartItem-RVA2ZQGR.js} +6 -6
  18. package/dist/{CartItem-TARZW35A.js.map → CartItem-RVA2ZQGR.js.map} +1 -1
  19. package/dist/{CartSummary-2KSBKQM7.js → CartSummary-EDCVRCEG.js} +6 -6
  20. package/dist/{CartSummary-2KSBKQM7.js.map → CartSummary-EDCVRCEG.js.map} +1 -1
  21. package/dist/{Copyright-2D7W6OS4.js → Copyright-E3L2IWRR.js} +3 -3
  22. package/dist/{Copyright-2D7W6OS4.js.map → Copyright-E3L2IWRR.js.map} +1 -1
  23. package/dist/{CustomerLayout-Z3JGXMO7.js → CustomerLayout-4MWXBPRF.js} +6 -6
  24. package/dist/{CustomerLayout-Z3JGXMO7.js.map → CustomerLayout-4MWXBPRF.js.map} +1 -1
  25. package/dist/{Footer-DFZFOH5E.js → Footer-6CAS63OH.js} +6 -6
  26. package/dist/{Footer-DFZFOH5E.js.map → Footer-6CAS63OH.js.map} +1 -1
  27. package/dist/{Header-CF5TQMWR.js → Header-DNTX6HW4.js} +4 -4
  28. package/dist/{Header-CF5TQMWR.js.map → Header-DNTX6HW4.js.map} +1 -1
  29. package/dist/{LoyaltyPage-TOXOPXEU.js → LoyaltyPage-NRKL6GTJ.js} +6 -6
  30. package/dist/{LoyaltyPage-TOXOPXEU.js.map → LoyaltyPage-NRKL6GTJ.js.map} +1 -1
  31. package/dist/{MainMenu-6VTPCMMJ.js → MainMenu-P5BQYKOA.js} +3 -3
  32. package/dist/{MainMenu-6VTPCMMJ.js.map → MainMenu-P5BQYKOA.js.map} +1 -1
  33. package/dist/{MasterLayout-PQ2XGL6A.js → MasterLayout-YHPOUKFI.js} +6 -6
  34. package/dist/{MasterLayout-PQ2XGL6A.js.map → MasterLayout-YHPOUKFI.js.map} +1 -1
  35. package/dist/{MobileMenu-UWDB2BHQ.js → MobileMenu-EC7EBF5I.js} +6 -6
  36. package/dist/{MobileMenu-UWDB2BHQ.js.map → MobileMenu-EC7EBF5I.js.map} +1 -1
  37. package/dist/{NotificationsPage-3WUAFRTU.js → NotificationsPage-G2Z6UV6J.js} +6 -6
  38. package/dist/{NotificationsPage-3WUAFRTU.js.map → NotificationsPage-G2Z6UV6J.js.map} +1 -1
  39. package/dist/{OrderSinglePage-T2UE2EJI.js → OrderSinglePage-BULRAABK.js} +6 -6
  40. package/dist/{OrderSinglePage-T2UE2EJI.js.map → OrderSinglePage-BULRAABK.js.map} +1 -1
  41. package/dist/{OrdersPage-762O24YK.js → OrdersPage-YFNYQREC.js} +6 -6
  42. package/dist/{OrdersPage-762O24YK.js.map → OrdersPage-YFNYQREC.js.map} +1 -1
  43. package/dist/{PageSingle-Y6IVAY3E.js → PageSingle-EQPKQGNU.js} +3 -3
  44. package/dist/{PageSingle-Y6IVAY3E.js.map → PageSingle-EQPKQGNU.js.map} +1 -1
  45. package/dist/{ProductDetails-7G7QOLTB.js → ProductDetails-GR5PQOHW.js} +3 -3
  46. package/dist/{ProductDetails-7G7QOLTB.js.map → ProductDetails-GR5PQOHW.js.map} +1 -1
  47. package/dist/{ProfilePage-H2JWTJJY.js → ProfilePage-YMLTVERJ.js} +6 -6
  48. package/dist/{ProfilePage-H2JWTJJY.js.map → ProfilePage-YMLTVERJ.js.map} +1 -1
  49. package/dist/{SeoCartWidget-XYWATIV3.js → SeoCartWidget-PZXSPNZI.js} +6 -6
  50. package/dist/{SeoCartWidget-XYWATIV3.js.map → SeoCartWidget-PZXSPNZI.js.map} +1 -1
  51. package/dist/{SettingsPage-WQX22FTS.js → SettingsPage-4T6VLWRX.js} +6 -6
  52. package/dist/{SettingsPage-WQX22FTS.js.map → SettingsPage-4T6VLWRX.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-TL4XY6OS.js → StoreClosedNotification-JK4VNQJJ.js} +7 -7
  54. package/dist/{StoreClosedNotification-TL4XY6OS.js.map → StoreClosedNotification-JK4VNQJJ.js.map} +1 -1
  55. package/dist/{TestimonialsPage-PWVTHBOS.js → TestimonialsPage-NMHIF3RD.js} +3 -3
  56. package/dist/{TestimonialsPage-PWVTHBOS.js.map → TestimonialsPage-NMHIF3RD.js.map} +1 -1
  57. package/dist/{ThankYouPage-C573J2KJ.js → ThankYouPage-UYWL3TLE.js} +6 -6
  58. package/dist/{ThankYouPage-C573J2KJ.js.map → ThankYouPage-UYWL3TLE.js.map} +1 -1
  59. package/dist/{WalletPage-7JE6PELL.js → WalletPage-SE7QXD2E.js} +6 -6
  60. package/dist/{WalletPage-7JE6PELL.js.map → WalletPage-SE7QXD2E.js.map} +1 -1
  61. package/dist/{WishlistPage-XTQ6IRG7.js → WishlistPage-KIXGHGO3.js} +8 -7
  62. package/dist/WishlistPage-KIXGHGO3.js.map +1 -0
  63. package/dist/api/product.d.ts +40 -12
  64. package/dist/api/product.d.ts.map +1 -1
  65. package/dist/api/product.js +1 -1
  66. package/dist/api/wishlist.d.ts +10 -4
  67. package/dist/api/wishlist.d.ts.map +1 -1
  68. package/dist/api/wishlist.js +5 -1
  69. package/dist/{chunk-SSRNIBVV.js → chunk-3U26OMNO.js} +4 -4
  70. package/dist/chunk-3U26OMNO.js.map +1 -0
  71. package/dist/{chunk-XLVAVCUV.js → chunk-46W6R5ZI.js} +5 -5
  72. package/dist/{chunk-XLVAVCUV.js.map → chunk-46W6R5ZI.js.map} +1 -1
  73. package/dist/{chunk-FKOBOGLQ.js → chunk-4F6BCPN4.js} +4 -4
  74. package/dist/{chunk-FKOBOGLQ.js.map → chunk-4F6BCPN4.js.map} +1 -1
  75. package/dist/{chunk-5R5IGGI3.js → chunk-5N5YKYIY.js} +3 -3
  76. package/dist/{chunk-5R5IGGI3.js.map → chunk-5N5YKYIY.js.map} +1 -1
  77. package/dist/{chunk-63WNORBK.js → chunk-IXDDHM7D.js} +5 -5
  78. package/dist/{chunk-63WNORBK.js.map → chunk-IXDDHM7D.js.map} +1 -1
  79. package/dist/{chunk-KLTQ2UST.js → chunk-KOZYZQH4.js} +8 -5
  80. package/dist/chunk-KOZYZQH4.js.map +1 -0
  81. package/dist/{chunk-4PLGRQAS.js → chunk-QTBH2A72.js} +3 -3
  82. package/dist/{chunk-4PLGRQAS.js.map → chunk-QTBH2A72.js.map} +1 -1
  83. package/dist/chunk-SR6GZ6DD.js +14 -0
  84. package/dist/{chunk-BK4VEUF3.js.map → chunk-SR6GZ6DD.js.map} +1 -1
  85. package/dist/{chunk-CZS4ZHQK.js → chunk-TDPAK42O.js} +3 -3
  86. package/dist/{chunk-CZS4ZHQK.js.map → chunk-TDPAK42O.js.map} +1 -1
  87. package/dist/{chunk-EFHSAWDQ.js → chunk-W47EYBH2.js} +7 -7
  88. package/dist/{chunk-EFHSAWDQ.js.map → chunk-W47EYBH2.js.map} +1 -1
  89. package/dist/chunk-XLJPUFN4.js +141 -0
  90. package/dist/chunk-XLJPUFN4.js.map +1 -0
  91. package/dist/{chunk-YOA3UVDE.js → chunk-XOJDJW3H.js} +4 -4
  92. package/dist/{chunk-YOA3UVDE.js.map → chunk-XOJDJW3H.js.map} +1 -1
  93. package/dist/{chunk-ZZA7L3RI.js → chunk-XXWH2MUF.js} +6 -6
  94. package/dist/{chunk-ZZA7L3RI.js.map → chunk-XXWH2MUF.js.map} +1 -1
  95. package/dist/{chunk-5FH6E2FQ.js → chunk-Y7AHVMVQ.js} +7 -3
  96. package/dist/chunk-Y7AHVMVQ.js.map +1 -0
  97. package/dist/components/cart/index.js +1 -1
  98. package/dist/components/common/index.js +1 -1
  99. package/dist/components/drawer/index.js +4 -4
  100. package/dist/components/home/index.js +7 -7
  101. package/dist/components/layout/index.js +5 -5
  102. package/dist/components/product/index.js +5 -5
  103. package/dist/components/store/index.js +6 -6
  104. package/dist/{document-class-5BBGX5LN.js → document-class-N2TRN7J5.js} +4 -3
  105. package/dist/{document-class-5BBGX5LN.js.map → document-class-N2TRN7J5.js.map} +1 -1
  106. package/dist/hooks/index.d.ts +1 -1
  107. package/dist/hooks/index.d.ts.map +1 -1
  108. package/dist/hooks/index.js +4 -4
  109. package/dist/hooks/useGtm.js +4 -4
  110. package/dist/hooks/useMoney.js +4 -4
  111. package/dist/hooks/useProduct.d.ts +12 -2
  112. package/dist/hooks/useProduct.d.ts.map +1 -1
  113. package/dist/hooks/useProduct.js +1 -1
  114. package/dist/hooks/useStore.js +4 -4
  115. package/dist/index.js +4 -4
  116. package/dist/{not-found-QM2L2D7P.js → not-found-SMNPMHRL.js} +6 -6
  117. package/dist/{not-found-QM2L2D7P.js.map → not-found-SMNPMHRL.js.map} +1 -1
  118. package/dist/providers/index.js +4 -4
  119. package/dist/routes/account/orders.js +1 -1
  120. package/dist/routes/account.js +8 -7
  121. package/dist/routes/account.js.map +1 -1
  122. package/dist/routes/blog.js +5 -5
  123. package/dist/routes/brands.js +1 -1
  124. package/dist/routes/cart.js +9 -9
  125. package/dist/routes/home.js +8 -8
  126. package/dist/routes/loyalty.js +1 -1
  127. package/dist/routes/page.js +1 -1
  128. package/dist/routes/product-listing.js +7 -7
  129. package/dist/routes/product.js +7 -7
  130. package/dist/routes/testimonials.js +1 -1
  131. package/dist/routes/thank-you.js +1 -1
  132. package/dist/skeleton.js +8 -8
  133. package/dist/tanstack/router.d.ts.map +1 -1
  134. package/dist/tanstack.js +3 -2
  135. package/dist/tanstack.js.map +1 -1
  136. package/package.json +1 -1
  137. package/dist/WishlistPage-XTQ6IRG7.js.map +0 -1
  138. package/dist/chunk-5FH6E2FQ.js.map +0 -1
  139. package/dist/chunk-BK4VEUF3.js +0 -14
  140. package/dist/chunk-KLTQ2UST.js.map +0 -1
  141. package/dist/chunk-SSRNIBVV.js.map +0 -1
  142. package/dist/chunk-VZHYSYKG.js +0 -67
  143. package/dist/chunk-VZHYSYKG.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/brands/BrandsPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,SAAS,mBAAA,CAAoB,EAAE,IAAA,EAAM,MAAA,EAAO,EAAoB;AAC9D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAE1C,EAAA,MAAM,SAAA,GAAY,aAAa,MAAA,GAAS,CAAA;AACxC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,WAAA,GAAc,MAAA,CAA2C,EAAE,CAAA;AAGjE,EAAA,MAAM,CAAC,EAAE,CAAA,EAAG,IAAI,eAAA,EAAgB;AAChC,EAAA,MAAM,QAAA,GAAA,CAAY,KAAK,CAAA,IAAK,GAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,CAAA,KAA2C;AAC/E,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,EAAA;AACrC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,WAAA,CAAY,QAAQ,IAAI,CAAA,EAAG,eAAe,EAAE,QAAA,EAAU,UAAU,CAAA;AAAA,IAClE;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,oBAExB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACb,QAAA,kBAAA,GAAA,CAAC,QAAG,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA,EACrD,CAAA;AAAA,IAEC,4BACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACb,QAAA,kBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAG,YAAA;AAAA,UACH,SAAA,EAAW,CAAA,WAAA,EAAc,QAAA,GAAW,WAAA,GAAc,eAAe,CAAA,CAAA;AAAA,UAEjE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,CAAA;AAAA,YACH,cAAc,GAAA,CAAI,CAAC,CAAC,IAAI,CAAA,yBACtB,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,CAAA,iBAAA,EAAoB,YAAA,KAAiB,IAAA,GAAO,gBAAgB,YAAY,CAAA,CAAA;AAAA,gBACnF,IAAA,EAAM,kBAAkB,IAAI,CAAA,CAAA;AAAA,gBAC5B,OAAA,EAAS,gBAAA;AAAA,gBACT,SAAA,EAAS,IAAA;AAAA,gBAET,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA,aACpC,EAAA,EARO,IAST,CACD;AAAA;AAAA;AAAA,OACH,EACF,CAAA;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,0BAAA,EAA2B,CAAA;AAAA,QAEzC,aAAa,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,UAAU,CAAA,qBAClC,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YAEC,EAAA,EAAI,iBAAiB,IAAI,CAAA,CAAA;AAAA,YACzB,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,cAAA,WAAA,CAAY,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAA;AAAA,YAC9B,CAAA;AAAA,YACA,SAAA,EAAU,kCAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAM,SAAA,EAAU,YAAA,EAC7B,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,IAAA,EAAK,CAAA,EACpC,CAAA;AAAA,gCACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EAA8B;AAAA,eAAA,EAC/C,CAAA;AAAA,kCACC,KAAA,EAAA,EAAI,SAAA,EAAU,4FAAA,EACZ,QAAA,EAAA,UAAA,CAAW,IAAI,CAAC,KAAA,qBACf,GAAA,CAAC,IAAA,EAAA,EAAoB,IAAI,CAAA,QAAA,EAAW,KAAA,CAAM,EAAE,CAAA,CAAA,EAAI,WAAU,YAAA,EACxD,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,YAAA;AAAA,kBACV,KAAA,EAAO,GAAA;AAAA,kBACP,MAAA,EAAQ,GAAA;AAAA,kBACR,KAAK,KAAA,CAAM,IAAA;AAAA,kBACX,KAAK,KAAA,CAAM;AAAA;AAAA,eACb,EAAA,EAPS,KAAA,CAAM,EAQjB,CACD,CAAA,EACH;AAAA;AAAA,WAAA;AAAA,UAzBK;AAAA,SA2BR,CAAA;AAAA,wBAED,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,wBAAA,EAAyB;AAAA,OAAA,EAC1C;AAAA,KAAA,EACF,CAAA,mBAEA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,oBAAA;AAAA,QACL,OAAA,EAAS,EAAE,yBAAyB,CAAA;AAAA,QACpC,WAAA,EAAa,EAAE,2BAA2B;AAAA;AAAA;AAC5C,GAAA,EAEJ,CAAA;AAEJ;AAEO,IAAM,UAAA,GAAa,KAAK,mBAAmB","file":"BrandsPage-UP3HKHGR.js","sourcesContent":["import { memo, useState, useRef, useCallback } from 'react';\nimport { useWindowScroll } from '@uidotdev/usehooks';\nimport { Link, Breadcrumb, NoContent, Image } from '../../components/common';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BrandsPageProps } from './types';\n\nfunction BrandsPageComponent({ page, brands }: BrandsPageProps) {\n const { t } = useTranslation();\n const brandEntries = Object.entries(brands);\n\n const hasBrands = brandEntries.length > 0;\n const [selectedChar, setSelectedChar] = useState<string | null>(null);\n const sectionRefs = useRef<Record<string, HTMLElement | null>>({});\n\n // Use useWindowScroll hook instead of manual listener\n const [{ y }] = useWindowScroll();\n const isSticky = (y ?? 0) > 200;\n\n // Handle brand nav item click - matches brands.js toggle class logic\n const handleBrandClick = useCallback((e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n const char = e.currentTarget.dataset.id;\n if (char) {\n setSelectedChar(char);\n sectionRefs.current[char]?.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return (\n <div className=\"container mb-20\">\n <Breadcrumb page={page} />\n\n <div className=\"flex justify-between pt-2 pb-6\">\n <h1 className=\"font-bold mb-6 md:mb-0\">{page.title}</h1>\n </div>\n\n {hasBrands ? (\n <>\n <div className=\"brands-nav-wrap\">\n <ul\n id=\"brands-nav\"\n className={`brands-nav ${isSticky ? 'is-sticky' : 'is-not-sticky'}`}\n >\n <li></li>\n {brandEntries?.map(([char]) => (\n <li key={char}>\n <a\n className={`brands-nav__item ${selectedChar === char ? 'is-selected' : 'unselected'}`}\n href={`#brand-section-${char}`}\n onClick={handleBrandClick}\n data-id={char}\n >\n <span className=\"fix-align\">{char}</span>\n </a>\n </li>\n ))}\n </ul>\n </div>\n\n <div className=\"px-8 xl:px-0\">\n <HookSlot name=\"brands:index.items.start\" />\n\n {brandEntries.map(([char, brandGroup]) => (\n <section\n key={char}\n id={`brand-section-${char}`}\n ref={(el) => {\n sectionRefs.current[char] = el;\n }}\n className=\"pt-24 first:pt-16 md:first:pt-24\"\n >\n <div className=\"flex items-center mb-10\">\n <span data-id={char} className=\"brand-char\">\n <span className=\"fix-align\">{char}</span>\n </span>\n <div className=\"bg-border-color h-px flex-1\"></div>\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 grid-flow-row gap-4 md:gap-8\">\n {brandGroup.map((brand) => (\n <Link key={brand.id} to={`/brands/${brand.id}`} className=\"brand-item\">\n <Image\n className=\"max-h-full\"\n width={400}\n height={300}\n src={brand.logo}\n alt={brand.name}\n />\n </Link>\n ))}\n </div>\n </section>\n ))}\n\n <HookSlot name=\"brands:index.items.end\" />\n </div>\n </>\n ) : (\n <NoContent\n icon=\"sicon-award-ribbon\"\n message={t('pages.brands.non_brands')}\n actionLabel={t('common.elements.back_home')}\n />\n )}\n </div>\n );\n}\n\nexport const BrandsPage = memo(BrandsPageComponent);\n"]}
1
+ {"version":3,"sources":["../src/routes/brands/BrandsPage.tsx"],"names":[],"mappings":"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","file":"BrandsPage-SRSDK6DP.js","sourcesContent":["import { memo, useState, useRef, useCallback } from 'react';\nimport { useWindowScroll } from '@uidotdev/usehooks';\nimport { Link, Breadcrumb, NoContent, Image } from '../../components/common';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BrandsPageProps } from './types';\n\nfunction BrandsPageComponent({ page, brands }: BrandsPageProps) {\n const { t } = useTranslation();\n const brandEntries = Object.entries(brands);\n\n const hasBrands = brandEntries.length > 0;\n const [selectedChar, setSelectedChar] = useState<string | null>(null);\n const sectionRefs = useRef<Record<string, HTMLElement | null>>({});\n\n // Use useWindowScroll hook instead of manual listener\n const [{ y }] = useWindowScroll();\n const isSticky = (y ?? 0) > 200;\n\n // Handle brand nav item click - matches brands.js toggle class logic\n const handleBrandClick = useCallback((e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n const char = e.currentTarget.dataset.id;\n if (char) {\n setSelectedChar(char);\n sectionRefs.current[char]?.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return (\n <div className=\"container mb-20\">\n <Breadcrumb page={page} />\n\n <div className=\"flex justify-between pt-2 pb-6\">\n <h1 className=\"font-bold mb-6 md:mb-0\">{page.title}</h1>\n </div>\n\n {hasBrands ? (\n <>\n <div className=\"brands-nav-wrap\">\n <ul\n id=\"brands-nav\"\n className={`brands-nav ${isSticky ? 'is-sticky' : 'is-not-sticky'}`}\n >\n <li></li>\n {brandEntries?.map(([char]) => (\n <li key={char}>\n <a\n className={`brands-nav__item ${selectedChar === char ? 'is-selected' : 'unselected'}`}\n href={`#brand-section-${char}`}\n onClick={handleBrandClick}\n data-id={char}\n >\n <span className=\"fix-align\">{char}</span>\n </a>\n </li>\n ))}\n </ul>\n </div>\n\n <div className=\"px-8 xl:px-0\">\n <HookSlot name=\"brands:index.items.start\" />\n\n {brandEntries.map(([char, brandGroup]) => (\n <section\n key={char}\n id={`brand-section-${char}`}\n ref={(el) => {\n sectionRefs.current[char] = el;\n }}\n className=\"pt-24 first:pt-16 md:first:pt-24\"\n >\n <div className=\"flex items-center mb-10\">\n <span data-id={char} className=\"brand-char\">\n <span className=\"fix-align\">{char}</span>\n </span>\n <div className=\"bg-border-color h-px flex-1\"></div>\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 grid-flow-row gap-4 md:gap-8\">\n {brandGroup.map((brand) => (\n <Link key={brand.id} to={`/brands/${brand.id}`} className=\"brand-item\">\n <Image\n className=\"max-h-full\"\n width={400}\n height={300}\n src={brand.logo}\n alt={brand.name}\n />\n </Link>\n ))}\n </div>\n </section>\n ))}\n\n <HookSlot name=\"brands:index.items.end\" />\n </div>\n </>\n ) : (\n <NoContent\n icon=\"sicon-award-ribbon\"\n message={t('pages.brands.non_brands')}\n actionLabel={t('common.elements.back_home')}\n />\n )}\n </div>\n );\n}\n\nexport const BrandsPage = memo(BrandsPageComponent);\n"]}
@@ -1,5 +1,5 @@
1
- import { useBreadcrumbs } from './chunk-EFHSAWDQ.js';
2
- import './chunk-63WNORBK.js';
1
+ import { useBreadcrumbs } from './chunk-W47EYBH2.js';
2
+ import './chunk-IXDDHM7D.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-6IATCGID.js';
@@ -17,7 +17,7 @@ import './chunk-6XWMNQ52.js';
17
17
  import './chunk-TP3LCGE7.js';
18
18
  import './chunk-Z653O7MX.js';
19
19
  import './chunk-ZCH7W7DZ.js';
20
- import './chunk-SSRNIBVV.js';
20
+ import './chunk-3U26OMNO.js';
21
21
  import './chunk-JWXJPJBO.js';
22
22
  import './chunk-CW625T2E.js';
23
23
  import './chunk-BVSJPBJ6.js';
@@ -29,7 +29,7 @@ import './chunk-YMVLYYLU.js';
29
29
  import './chunk-RJPPO3ET.js';
30
30
  import './chunk-Q7VWURUR.js';
31
31
  import './chunk-GU2KUQVD.js';
32
- import './chunk-CZS4ZHQK.js';
32
+ import './chunk-TDPAK42O.js';
33
33
  import { Link } from './chunk-AXW67SY7.js';
34
34
  import './chunk-BYMOPN2S.js';
35
35
  import './chunk-6BZ5TKEV.js';
@@ -152,5 +152,5 @@ function Breadcrumb({ page, className }) {
152
152
  }
153
153
 
154
154
  export { Breadcrumb };
155
- //# sourceMappingURL=Breadcrumb-5464BOGG.js.map
156
- //# sourceMappingURL=Breadcrumb-5464BOGG.js.map
155
+ //# sourceMappingURL=Breadcrumb-DNLZTRKM.js.map
156
+ //# sourceMappingURL=Breadcrumb-DNLZTRKM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/common/BreadcrumbTrail.tsx","../src/components/common/BreadcrumbJsonLd.tsx","../src/components/common/Breadcrumb.tsx"],"names":["BreadcrumbTrail","jsx","jsxs","Fragment"],"mappings":"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","file":"Breadcrumb-5464BOGG.js","sourcesContent":["import { memo, useState, useEffect } from 'react';\nimport type { Breadcrumb } from '../../types';\nimport { Link } from './Link';\n\nconst MAX_VISIBLE_ITEMS = 4;\n\ninterface BreadcrumbTrailProps {\n items: Breadcrumb[];\n className?: string;\n}\n\nconst ChevronIcon = () => (\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <title>keyboard_arrow_left</title>\n <path d=\"M20.563 22.104l-1.875 1.875-8-8 8-8 1.875 1.875-6.125 6.125z\"></path>\n </svg>\n);\n\nfunction truncateItems(items: Breadcrumb[]): Breadcrumb[] {\n if (items.length <= MAX_VISIBLE_ITEMS) return items;\n\n return [items[0], { name: '…', url: '' }, ...items.slice(-2)];\n}\n\nexport const BreadcrumbTrail = memo(function BreadcrumbTrail({\n items,\n className,\n}: BreadcrumbTrailProps) {\n const [expanded, setExpanded] = useState(false);\n\n useEffect(() => {\n setExpanded(false);\n }, [items]);\n\n if (items.length === 0) return null;\n\n const displayItems = expanded ? items : truncateItems(items);\n\n return (\n <nav className={className ?? 'breadcrumbs w-full py-5'} aria-label=\"Breadcrumb\">\n <ol className=\"s-breadcrumb-wrapper\" itemScope itemType=\"https://schema.org/BreadcrumbList\">\n {displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1;\n const isEllipsis = item.name === '…' && !item.url;\n\n return (\n <li\n key={`${item.url}-${item.name}`}\n className={['s-breadcrumb-item', isEllipsis ? 'cursor-pointer select-none' : ''].join(\n ' '\n )}\n aria-current={isLast ? 'page' : undefined}\n itemProp=\"itemListElement\"\n itemScope\n itemType=\"https://schema.org/ListItem\"\n >\n {isEllipsis ? (\n <button\n type=\"button\"\n onClick={() => {\n setExpanded(true);\n }}\n className=\"inline-flex items-center gap-1 hover:underline\"\n aria-label=\"Show all breadcrumbs\"\n >\n <span aria-hidden=\"true\" className=\"text-xs\">\n •••\n </span>\n </button>\n ) : isLast ? (\n <span itemProp=\"name\">{item.name}</span>\n ) : (\n <>\n <Link to={item.url} itemProp=\"item\">\n <span itemProp=\"name\">{item.name}</span>\n </Link>\n <span aria-hidden=\"true\" className=\"s-breadcrumb-arrow inline-flex\">\n <ChevronIcon />\n </span>\n <meta itemProp=\"position\" content={String(index + 1)} />\n </>\n )}\n {isLast && <meta itemProp=\"position\" content={String(index + 1)} />}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n","import type { Breadcrumb } from '../../types';\n\ninterface BreadcrumbJsonLdProps {\n items: Breadcrumb[];\n origin: string;\n}\n\nfunction toAbsoluteUrl(origin: string, path: string): string {\n if (path.startsWith('http')) return path;\n return origin + path;\n}\n\nexport function BreadcrumbJsonLd({ items, origin }: BreadcrumbJsonLdProps) {\n if (items.length === 0) return null;\n\n const schema = {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items.map((item, index) => {\n const isLast = index === items.length - 1;\n const url = toAbsoluteUrl(origin, item.url);\n return {\n '@type': 'ListItem',\n position: index + 1,\n name: item.name,\n ...(isLast ? { '@id': url } : { item: url }),\n };\n }),\n };\n\n const html = JSON.stringify(schema);\n\n return (\n <script\n type=\"application/ld+json\"\n suppressHydrationWarning\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n}\n","import type { Page } from '../../types';\nimport { useBreadcrumbs } from '../../hooks/useBreadcrumbs';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { BreadcrumbTrail } from './BreadcrumbTrail';\nimport { BreadcrumbJsonLd } from './BreadcrumbJsonLd';\n\nexport interface BreadcrumbProps {\n page?: Page | null;\n className?: string;\n}\n\nexport function Breadcrumb({ page, className }: BreadcrumbProps) {\n const { theme, store } = useTwilight();\n const breadcrumbsEnabled = theme.settings.is_breadcrumbs_enabled ?? true;\n const origin = store.url;\n\n const items = useBreadcrumbs(page);\n\n if (!breadcrumbsEnabled) return null;\n\n return (\n <>\n <BreadcrumbTrail items={items} className={className} />\n <BreadcrumbJsonLd items={items} origin={origin} />\n </>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/common/BreadcrumbTrail.tsx","../src/components/common/BreadcrumbJsonLd.tsx","../src/components/common/Breadcrumb.tsx"],"names":["BreadcrumbTrail","jsx","jsxs","Fragment"],"mappings":"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","file":"Breadcrumb-DNLZTRKM.js","sourcesContent":["import { memo, useState, useEffect } from 'react';\nimport type { Breadcrumb } from '../../types';\nimport { Link } from './Link';\n\nconst MAX_VISIBLE_ITEMS = 4;\n\ninterface BreadcrumbTrailProps {\n items: Breadcrumb[];\n className?: string;\n}\n\nconst ChevronIcon = () => (\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n >\n <title>keyboard_arrow_left</title>\n <path d=\"M20.563 22.104l-1.875 1.875-8-8 8-8 1.875 1.875-6.125 6.125z\"></path>\n </svg>\n);\n\nfunction truncateItems(items: Breadcrumb[]): Breadcrumb[] {\n if (items.length <= MAX_VISIBLE_ITEMS) return items;\n\n return [items[0], { name: '…', url: '' }, ...items.slice(-2)];\n}\n\nexport const BreadcrumbTrail = memo(function BreadcrumbTrail({\n items,\n className,\n}: BreadcrumbTrailProps) {\n const [expanded, setExpanded] = useState(false);\n\n useEffect(() => {\n setExpanded(false);\n }, [items]);\n\n if (items.length === 0) return null;\n\n const displayItems = expanded ? items : truncateItems(items);\n\n return (\n <nav className={className ?? 'breadcrumbs w-full py-5'} aria-label=\"Breadcrumb\">\n <ol className=\"s-breadcrumb-wrapper\" itemScope itemType=\"https://schema.org/BreadcrumbList\">\n {displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1;\n const isEllipsis = item.name === '…' && !item.url;\n\n return (\n <li\n key={`${item.url}-${item.name}`}\n className={['s-breadcrumb-item', isEllipsis ? 'cursor-pointer select-none' : ''].join(\n ' '\n )}\n aria-current={isLast ? 'page' : undefined}\n itemProp=\"itemListElement\"\n itemScope\n itemType=\"https://schema.org/ListItem\"\n >\n {isEllipsis ? (\n <button\n type=\"button\"\n onClick={() => {\n setExpanded(true);\n }}\n className=\"inline-flex items-center gap-1 hover:underline\"\n aria-label=\"Show all breadcrumbs\"\n >\n <span aria-hidden=\"true\" className=\"text-xs\">\n •••\n </span>\n </button>\n ) : isLast ? (\n <span itemProp=\"name\">{item.name}</span>\n ) : (\n <>\n <Link to={item.url} itemProp=\"item\">\n <span itemProp=\"name\">{item.name}</span>\n </Link>\n <span aria-hidden=\"true\" className=\"s-breadcrumb-arrow inline-flex\">\n <ChevronIcon />\n </span>\n <meta itemProp=\"position\" content={String(index + 1)} />\n </>\n )}\n {isLast && <meta itemProp=\"position\" content={String(index + 1)} />}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n","import type { Breadcrumb } from '../../types';\n\ninterface BreadcrumbJsonLdProps {\n items: Breadcrumb[];\n origin: string;\n}\n\nfunction toAbsoluteUrl(origin: string, path: string): string {\n if (path.startsWith('http')) return path;\n return origin + path;\n}\n\nexport function BreadcrumbJsonLd({ items, origin }: BreadcrumbJsonLdProps) {\n if (items.length === 0) return null;\n\n const schema = {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items.map((item, index) => {\n const isLast = index === items.length - 1;\n const url = toAbsoluteUrl(origin, item.url);\n return {\n '@type': 'ListItem',\n position: index + 1,\n name: item.name,\n ...(isLast ? { '@id': url } : { item: url }),\n };\n }),\n };\n\n const html = JSON.stringify(schema);\n\n return (\n <script\n type=\"application/ld+json\"\n suppressHydrationWarning\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n}\n","import type { Page } from '../../types';\nimport { useBreadcrumbs } from '../../hooks/useBreadcrumbs';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { BreadcrumbTrail } from './BreadcrumbTrail';\nimport { BreadcrumbJsonLd } from './BreadcrumbJsonLd';\n\nexport interface BreadcrumbProps {\n page?: Page | null;\n className?: string;\n}\n\nexport function Breadcrumb({ page, className }: BreadcrumbProps) {\n const { theme, store } = useTwilight();\n const breadcrumbsEnabled = theme.settings.is_breadcrumbs_enabled ?? true;\n const origin = store.url;\n\n const items = useBreadcrumbs(page);\n\n if (!breadcrumbsEnabled) return null;\n\n return (\n <>\n <BreadcrumbTrail items={items} className={className} />\n <BreadcrumbJsonLd items={items} origin={origin} />\n </>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { useMoney } from './chunk-EFHSAWDQ.js';
2
- import './chunk-63WNORBK.js';
1
+ import { useMoney } from './chunk-W47EYBH2.js';
2
+ import './chunk-IXDDHM7D.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-6IATCGID.js';
@@ -17,7 +17,7 @@ import './chunk-6XWMNQ52.js';
17
17
  import './chunk-TP3LCGE7.js';
18
18
  import './chunk-Z653O7MX.js';
19
19
  import './chunk-ZCH7W7DZ.js';
20
- import './chunk-SSRNIBVV.js';
20
+ import './chunk-3U26OMNO.js';
21
21
  import './chunk-JWXJPJBO.js';
22
22
  import './chunk-CW625T2E.js';
23
23
  import './chunk-BVSJPBJ6.js';
@@ -29,7 +29,7 @@ import './chunk-YMVLYYLU.js';
29
29
  import './chunk-RJPPO3ET.js';
30
30
  import './chunk-Q7VWURUR.js';
31
31
  import './chunk-GU2KUQVD.js';
32
- import { Image } from './chunk-CZS4ZHQK.js';
32
+ import { Image } from './chunk-TDPAK42O.js';
33
33
  import { Link } from './chunk-AXW67SY7.js';
34
34
  import './chunk-BYMOPN2S.js';
35
35
  import './chunk-6BZ5TKEV.js';
@@ -171,5 +171,5 @@ function CartItem({ item, isFirst = false }) {
171
171
  }
172
172
 
173
173
  export { CartItem };
174
- //# sourceMappingURL=CartItem-TARZW35A.js.map
175
- //# sourceMappingURL=CartItem-TARZW35A.js.map
174
+ //# sourceMappingURL=CartItem-RVA2ZQGR.js.map
175
+ //# sourceMappingURL=CartItem-RVA2ZQGR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/cart/CartItem.tsx"],"names":[],"mappings":"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","file":"CartItem-TARZW35A.js","sourcesContent":["import type { Money, CartItem as CartItemType } from '../../types';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useMoney } from '../../hooks/useMoney';\nimport { Link, Image } from '../common';\nimport { SallaCartItemOffers } from '@salla.sa/twilight-components-react/cart-item-offers';\nimport { SallaQuantityInput } from '@salla.sa/twilight-components-react/quantity-input';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\n\ninterface CartItemProps {\n item: CartItemType;\n isFirst?: boolean;\n}\n\nfunction toNumber(value: number | Money | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return value.amount;\n}\n\nfunction moneyCurrency(value: number | Money | undefined): string | undefined {\n if (typeof value !== 'object') return undefined;\n return value.currency;\n}\n\nconst handleChange = (e: React.ChangeEvent<HTMLFormElement>) => {\n window.salla?.form.onChange('cart.updateItem', e);\n};\n\nexport function CartItem({ item, isFirst = false }: CartItemProps) {\n const { t } = useTranslation();\n const { format } = useMoney();\n\n const handleDelete = async () => {\n await window.salla?.cart.deleteItem(item.id);\n document.querySelector(`#item-${item.id}`)?.remove();\n };\n\n const isFreeProduct = toNumber(item.price) === 0 && item.has_discount;\n\n return (\n <form onChange={handleChange} id={`item-${item.id}`}>\n <section className=\"cart-item bg-white p-5 xs:p-7 rounded-md mb-5 relative\">\n <input type=\"hidden\" name=\"id\" value={item.id} />\n\n <div className=\"md:flex rtl:space-x-reverse md:space-x-12 items-start justify-between mb-8 last:mb-0\">\n <div className=\"flex flex-1 rtl:space-x-reverse space-x-4\">\n <Link to={item.url} className=\"relative overflow-hidden shrink-0\">\n <Image\n src={item.product_image}\n alt={item.product_name}\n className=\"flex-none w-24 h-20 border border-gray-200 bg-gray-100 rounded-md object-center object-cover\"\n aspectRatio=\"6/5\"\n priority={isFirst}\n />\n\n {isFreeProduct && (\n <div className=\"free-ribbon absolute top-[11px] right-[-38px] w-32 bg-red-600 text-white text-xs font-bold text-center py-1 rotate-45 shadow-md\">\n {/* Twig: trans('pages.loyalty_program.free_product') */}\n {t('pages.loyalty_program.free_product', 'Free')}\n </div>\n )}\n </Link>\n\n <div className=\"space-y-1\">\n <div className=\"text-gray-900 leading-6 text-lg font-bold\">\n <Link to={item.url} className=\"text-base\">\n {item.product_name}\n </Link>\n </div>\n\n <div className=\"flex items-center gap-2 flex-wrap\">\n {item.offer && (\n <span className=\"text-sm text-gray-500 line-through item-regular-price\">\n {format(toNumber(item.product_price), {\n currency: moneyCurrency(item.product_price),\n })}\n </span>\n )}\n\n {item.is_on_sale && (\n <span className=\"inline-flex gap-1 leading-4 text-sm text-gray-500 line-through item-original-price\">\n {format(toNumber(item.original_price), {\n currency: moneyCurrency(item.original_price),\n })}\n </span>\n )}\n\n <span\n className={`inline-flex gap-1 leading-4 item-price ${item.has_discount ? 'text-red-800' : 'text-sm text-gray-500'}`}\n >\n {format(toNumber(item.price), { currency: moneyCurrency(item.price) })}\n </span>\n </div>\n\n {item.weight_label && (\n <p className=\"text-sm text-gray-500\">\n {t('pages.cart.weight', 'Weight')}: <span>{item.weight_label}</span>\n </p>\n )}\n\n {/* Twig: class=\"{{ item.detailed_offers ? 'hidden' : '' }}\" — hide old offer when detailed_offers present */}\n {item.offer && !item.detailed_offers?.length && (\n <span className=\"old-offers flex items-center gap-1 mx-1.5\">\n <i className=\"sicon-discount-calculator text-gray-500 offer-icon\"></i>\n <span className=\"text-sm text-gray-500 offer-name\">{item.offer.names}</span>\n </span>\n )}\n\n {item.detailed_offers && item.detailed_offers.length > 0 && (\n <SallaCartItemOffers\n quantity={item.quantity}\n itemId={String(item.id) as any}\n productPrice={toNumber(item.product_price) ?? 0}\n offers={JSON.stringify(item.detailed_offers)}\n />\n )}\n </div>\n </div>\n\n <div className=\"border-t border-b border-gray-200 py-3 md:p-0 md:border-none mt-5 md:mt-0 flex gap-8 justify-between items-center md:items-start\">\n {item.type === 'donating' ? (\n <span></span>\n ) : item.is_hidden_quantity ? (\n <>\n <input\n type=\"hidden\"\n value={item.quantity}\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n />\n <span className=\"w-10 text-center\">{item.quantity}</span>\n </>\n ) : (\n <SallaQuantityInput\n cartItemId={item.id}\n max={item.max_quantity ?? undefined}\n className=\"transition transition-color duration-300\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n value={item.quantity}\n name=\"quantity\"\n />\n )}\n\n <p className=\"text-primary flex-none font-bold text-sm rtl:md:pl-12 ltr:md:pr-12\">\n <span>{t('pages.cart.total', 'Total')}:</span>\n <span className=\"inline-block item-total\">\n {item.is_available\n ? item.detailed_offers?.length\n ? format(toNumber(item.total_special_price), {\n currency: moneyCurrency(item.total_special_price),\n })\n : format(toNumber(item.total), { currency: moneyCurrency(item.total) })\n : t('pages.products.out_of_stock', 'Out of Stock')}\n </span>\n </p>\n </div>\n </div>\n\n {/* Twig: {% include 'pages.partials.product.options' with {product:item} %} */}\n {item.options && item.options.length > 0 && (\n <SallaProductOptions options={JSON.stringify(item.options)} productId={item.product_id} />\n )}\n\n <span className=\"absolute top-1.5 rtl:left-1.5 ltr:right-1.5 rtl:xs:left-5 ltr:xs:right-5 xs:top-5\">\n <SallaButton\n type=\"button\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n ariaLabel={t('common.elements.remove', 'Remove from the cart')}\n onClick={handleDelete}\n >\n <i className=\"sicon-cancel\"></i>\n </SallaButton>\n </span>\n </section>\n </form>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/cart/CartItem.tsx"],"names":[],"mappings":"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","file":"CartItem-RVA2ZQGR.js","sourcesContent":["import type { Money, CartItem as CartItemType } from '../../types';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useMoney } from '../../hooks/useMoney';\nimport { Link, Image } from '../common';\nimport { SallaCartItemOffers } from '@salla.sa/twilight-components-react/cart-item-offers';\nimport { SallaQuantityInput } from '@salla.sa/twilight-components-react/quantity-input';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\n\ninterface CartItemProps {\n item: CartItemType;\n isFirst?: boolean;\n}\n\nfunction toNumber(value: number | Money | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return value.amount;\n}\n\nfunction moneyCurrency(value: number | Money | undefined): string | undefined {\n if (typeof value !== 'object') return undefined;\n return value.currency;\n}\n\nconst handleChange = (e: React.ChangeEvent<HTMLFormElement>) => {\n window.salla?.form.onChange('cart.updateItem', e);\n};\n\nexport function CartItem({ item, isFirst = false }: CartItemProps) {\n const { t } = useTranslation();\n const { format } = useMoney();\n\n const handleDelete = async () => {\n await window.salla?.cart.deleteItem(item.id);\n document.querySelector(`#item-${item.id}`)?.remove();\n };\n\n const isFreeProduct = toNumber(item.price) === 0 && item.has_discount;\n\n return (\n <form onChange={handleChange} id={`item-${item.id}`}>\n <section className=\"cart-item bg-white p-5 xs:p-7 rounded-md mb-5 relative\">\n <input type=\"hidden\" name=\"id\" value={item.id} />\n\n <div className=\"md:flex rtl:space-x-reverse md:space-x-12 items-start justify-between mb-8 last:mb-0\">\n <div className=\"flex flex-1 rtl:space-x-reverse space-x-4\">\n <Link to={item.url} className=\"relative overflow-hidden shrink-0\">\n <Image\n src={item.product_image}\n alt={item.product_name}\n className=\"flex-none w-24 h-20 border border-gray-200 bg-gray-100 rounded-md object-center object-cover\"\n aspectRatio=\"6/5\"\n priority={isFirst}\n />\n\n {isFreeProduct && (\n <div className=\"free-ribbon absolute top-[11px] right-[-38px] w-32 bg-red-600 text-white text-xs font-bold text-center py-1 rotate-45 shadow-md\">\n {/* Twig: trans('pages.loyalty_program.free_product') */}\n {t('pages.loyalty_program.free_product', 'Free')}\n </div>\n )}\n </Link>\n\n <div className=\"space-y-1\">\n <div className=\"text-gray-900 leading-6 text-lg font-bold\">\n <Link to={item.url} className=\"text-base\">\n {item.product_name}\n </Link>\n </div>\n\n <div className=\"flex items-center gap-2 flex-wrap\">\n {item.offer && (\n <span className=\"text-sm text-gray-500 line-through item-regular-price\">\n {format(toNumber(item.product_price), {\n currency: moneyCurrency(item.product_price),\n })}\n </span>\n )}\n\n {item.is_on_sale && (\n <span className=\"inline-flex gap-1 leading-4 text-sm text-gray-500 line-through item-original-price\">\n {format(toNumber(item.original_price), {\n currency: moneyCurrency(item.original_price),\n })}\n </span>\n )}\n\n <span\n className={`inline-flex gap-1 leading-4 item-price ${item.has_discount ? 'text-red-800' : 'text-sm text-gray-500'}`}\n >\n {format(toNumber(item.price), { currency: moneyCurrency(item.price) })}\n </span>\n </div>\n\n {item.weight_label && (\n <p className=\"text-sm text-gray-500\">\n {t('pages.cart.weight', 'Weight')}: <span>{item.weight_label}</span>\n </p>\n )}\n\n {/* Twig: class=\"{{ item.detailed_offers ? 'hidden' : '' }}\" — hide old offer when detailed_offers present */}\n {item.offer && !item.detailed_offers?.length && (\n <span className=\"old-offers flex items-center gap-1 mx-1.5\">\n <i className=\"sicon-discount-calculator text-gray-500 offer-icon\"></i>\n <span className=\"text-sm text-gray-500 offer-name\">{item.offer.names}</span>\n </span>\n )}\n\n {item.detailed_offers && item.detailed_offers.length > 0 && (\n <SallaCartItemOffers\n quantity={item.quantity}\n itemId={String(item.id) as any}\n productPrice={toNumber(item.product_price) ?? 0}\n offers={JSON.stringify(item.detailed_offers)}\n />\n )}\n </div>\n </div>\n\n <div className=\"border-t border-b border-gray-200 py-3 md:p-0 md:border-none mt-5 md:mt-0 flex gap-8 justify-between items-center md:items-start\">\n {item.type === 'donating' ? (\n <span></span>\n ) : item.is_hidden_quantity ? (\n <>\n <input\n type=\"hidden\"\n value={item.quantity}\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n />\n <span className=\"w-10 text-center\">{item.quantity}</span>\n </>\n ) : (\n <SallaQuantityInput\n cartItemId={item.id}\n max={item.max_quantity ?? undefined}\n className=\"transition transition-color duration-300\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n value={item.quantity}\n name=\"quantity\"\n />\n )}\n\n <p className=\"text-primary flex-none font-bold text-sm rtl:md:pl-12 ltr:md:pr-12\">\n <span>{t('pages.cart.total', 'Total')}:</span>\n <span className=\"inline-block item-total\">\n {item.is_available\n ? item.detailed_offers?.length\n ? format(toNumber(item.total_special_price), {\n currency: moneyCurrency(item.total_special_price),\n })\n : format(toNumber(item.total), { currency: moneyCurrency(item.total) })\n : t('pages.products.out_of_stock', 'Out of Stock')}\n </span>\n </p>\n </div>\n </div>\n\n {/* Twig: {% include 'pages.partials.product.options' with {product:item} %} */}\n {item.options && item.options.length > 0 && (\n <SallaProductOptions options={JSON.stringify(item.options)} productId={item.product_id} />\n )}\n\n <span className=\"absolute top-1.5 rtl:left-1.5 ltr:right-1.5 rtl:xs:left-5 ltr:xs:right-5 xs:top-5\">\n <SallaButton\n type=\"button\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n ariaLabel={t('common.elements.remove', 'Remove from the cart')}\n onClick={handleDelete}\n >\n <i className=\"sicon-cancel\"></i>\n </SallaButton>\n </span>\n </section>\n </form>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { stripUnsafeHtml } from './chunk-RUHSV4Z6.js';
2
- import { useMoney } from './chunk-EFHSAWDQ.js';
3
- import './chunk-63WNORBK.js';
2
+ import { useMoney } from './chunk-W47EYBH2.js';
3
+ import './chunk-IXDDHM7D.js';
4
4
  import './chunk-JKIRRMBU.js';
5
5
  import './chunk-2JV6WZ6O.js';
6
6
  import './chunk-6IATCGID.js';
@@ -18,7 +18,7 @@ import './chunk-6XWMNQ52.js';
18
18
  import './chunk-TP3LCGE7.js';
19
19
  import './chunk-Z653O7MX.js';
20
20
  import './chunk-ZCH7W7DZ.js';
21
- import './chunk-SSRNIBVV.js';
21
+ import './chunk-3U26OMNO.js';
22
22
  import './chunk-JWXJPJBO.js';
23
23
  import './chunk-CW625T2E.js';
24
24
  import { useCoupon } from './chunk-BVSJPBJ6.js';
@@ -30,7 +30,7 @@ import './chunk-YMVLYYLU.js';
30
30
  import './chunk-RJPPO3ET.js';
31
31
  import { HookSlot } from './chunk-Q7VWURUR.js';
32
32
  import './chunk-GU2KUQVD.js';
33
- import './chunk-CZS4ZHQK.js';
33
+ import './chunk-TDPAK42O.js';
34
34
  import './chunk-AXW67SY7.js';
35
35
  import './chunk-BYMOPN2S.js';
36
36
  import './chunk-6BZ5TKEV.js';
@@ -236,5 +236,5 @@ function CouponInput({ initialCoupon }) {
236
236
  }
237
237
 
238
238
  export { CartSummary };
239
- //# sourceMappingURL=CartSummary-2KSBKQM7.js.map
240
- //# sourceMappingURL=CartSummary-2KSBKQM7.js.map
239
+ //# sourceMappingURL=CartSummary-EDCVRCEG.js.map
240
+ //# sourceMappingURL=CartSummary-EDCVRCEG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/cart/CartSummary.tsx"],"names":[],"mappings":"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","file":"CartSummary-2KSBKQM7.js","sourcesContent":["import { useCallback } from 'react';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useCoupon } from '../../hooks/useCoupon';\nimport { useMoney } from '../../hooks/useMoney';\nimport { stripUnsafeHtml } from '../../utils/sanitize';\nimport { SallaLoyalty } from '@salla.sa/twilight-components-react/loyalty';\nimport { SallaGifting } from '@salla.sa/twilight-components-react/gifting';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaTieredOffer } from '@salla.sa/twilight-components-react/tiered-offer';\nimport type { Cart } from '../../types';\n\ninterface CartSummaryProps {\n cart: Cart;\n applyCouponEnabled?: boolean;\n taxAmount?: number;\n loyalty?: Cart['loyalty'];\n gift?: Cart['gift'];\n loyaltyPoints?: number;\n}\n\nexport function CartSummary({\n cart,\n applyCouponEnabled = true,\n taxAmount,\n loyalty,\n gift,\n loyaltyPoints,\n}: CartSummaryProps) {\n const { t } = useTranslation();\n const { format } = useMoney();\n\n const handleCartSubmit = useCallback(async () => {\n try {\n await window.salla?.cart.submit();\n } catch {\n // Error handling\n }\n }, []);\n\n return (\n <div className=\"sticky top-24 w-full lg:w-96 rtl:lg:mr-8 ltr:lg:ml-8\">\n <HookSlot name=\"cart:summary.start\" />\n {cart.free_shipping_bar && <FreeShippingBar freeShippingBar={cart.free_shipping_bar} />}\n\n {/* Twig: {% if loyalty and user.loyalty_points %} — top-level page vars rendered inside sidebar */}\n {loyalty && loyaltyPoints && (\n <div className=\"shadow-default mb-5 rounded-md p-3 xs:p-7 bg-white\">\n <SallaLoyalty\n customerPoints={loyaltyPoints}\n prizePoints={loyalty.prize.points}\n prizeTitle={loyalty.prize.title}\n />\n </div>\n )}\n\n {/* Twig: {{gift.enabled ? '' : 'hidden'}} — top-level page var rendered inside sidebar */}\n {gift?.enabled && (\n <div id=\"cart-gifting\" className=\"shadow-default bg-white xs:p-2 rounded-md mb-5 relative\">\n <SallaGifting\n id=\"salla-gifting\"\n className=\"mt-5\"\n widgetTitle={t('pages.cart.gift_widget_title', 'Send as a gift')}\n widgetSubtitle={gift.text}\n {...(gift.type ? { [gift.type + 'Products']: true } : {})}\n vertical\n />\n </div>\n )}\n\n <div className=\"shadow-default bg-white p-5 xs:p-7 rounded-md mb-5 relative transition-height duration-1000\">\n <h2 className=\"font-bold text-sm mb-5\">{t('pages.cart.summary', 'Order Summary')}</h2>\n\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {taxAmount\n ? t('pages.cart.items_total_without_tax', 'Items total (excl. tax)')\n : t('pages.cart.items_total', 'Items total')}\n </span>\n <b id=\"sub-total\">{format(cart.sub_total)}</b>\n </div>\n\n {cart.options?.length > 0 && (\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {t('pages.cart.order_options_total', 'Options total')}\n </span>\n <b id=\"cart-options-total\">{format(cart.options_total ?? undefined)}</b>\n </div>\n )}\n\n {cart.has_shipping && (\n <div id=\"shipping-cost\" className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">{t('pages.cart.shipping_cost', 'Shipping cost')}</span>\n <b>{format(cart.real_shipping_cost)}</b>\n </div>\n )}\n\n {applyCouponEnabled && <CouponInput initialCoupon={cart.coupon ?? undefined} />}\n\n {!!cart.total_discount && (\n <div id=\"total-discount\" className=\"flex justify-between text-sm\">\n <span className=\"text-gray-500 block h-10\">{t('pages.cart.discount', 'Discount')}</span>\n <b>- {format(cart.total_discount)}</b>\n </div>\n )}\n\n {!!taxAmount && (\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {t('pages.cart.VAT_tax_amount', 'VAT Tax Amount')}\n </span>\n <b id=\"tax-amount\">{format(taxAmount)}</b>\n </div>\n )}\n\n <div className=\"flex justify-between text-lg mb-5\">\n <span className=\"text-gray-500\">{t('pages.cart.final_total', 'Total')}</span>\n <b data-cart-total>{format(cart.total)}</b>\n </div>\n\n <div className=\"cart-submit-wrap\">\n <HookSlot name=\"cart:submit.start\" />\n <SallaButton\n id=\"cart-submit\"\n loaderPosition=\"center\"\n width=\"wide\"\n onClick={handleCartSubmit}\n >\n {t('pages.cart.complete_order', 'Complete Order')}\n </SallaButton>\n <HookSlot name=\"cart:submit.end\" />\n </div>\n\n <HookSlot name=\"cart:summary.end\" />\n </div>\n\n <SallaTieredOffer />\n </div>\n );\n}\n\nfunction FreeShippingBar({\n freeShippingBar,\n}: {\n freeShippingBar: NonNullable<Cart['free_shipping_bar']>;\n}) {\n const isFree = freeShippingBar.has_free_shipping;\n const { t } = useTranslation();\n\n return (\n <div className=\"shadow-default bg-white p-5 xs:p-7 rounded-md mb-5 relative\" id=\"free-shipping\">\n <div className=\"flex rtl:space-x-reverse space-x-3 items-center\">\n <i className=\"bg-primary text-white rounded-icon sicon-shipping-fast\"></i>\n <div className=\"flex-1\">\n <h4 className=\"shipping-item font-bold text-sm mb-1.5\">\n {t('pages.cart.free_shipping', 'Free Shipping')}\n </h4>\n <p className=\"shipping-item text-sm text-gray-500\">\n {isFree ? (\n <>\n <span\n id=\"free-shipping-msg\"\n dangerouslySetInnerHTML={{\n __html: stripUnsafeHtml(\n t('pages.cart.has_free_shipping', 'You have free shipping!')\n ),\n }}\n />\n <span className=\"emoji\" id=\"free-shipping-applied\">\n 🎉\n </span>\n </>\n ) : (\n <span\n id=\"free-shipping-msg\"\n dangerouslySetInnerHTML={{\n __html: stripUnsafeHtml(\n t(\n 'pages.cart.free_shipping_alert',\n 'Get free shipping when you add :amount more'\n ).replace(':amount', String(freeShippingBar.remaining))\n ),\n }}\n />\n )}\n </p>\n </div>\n </div>\n {!isFree && (\n <div className=\"mt-8 bg-border-color rounded-full\" id=\"free-shipping-bar\">\n <div\n className=\"progress-bg transition-all duration-500 h-2.5 bg-primary relative rounded-full flex justify-end\"\n style={{ width: `${freeShippingBar.percent}%` }}\n >\n <i className=\"inline-block sicon-shipping-fast absolute -top-5 rtl:left-0 ltr:right-0\"></i>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction CouponInput({ initialCoupon }: { initialCoupon?: string }) {\n const { t } = useTranslation();\n const { value, error, apply, remove } = useCoupon();\n\n // Use initial coupon from cart if available\n const appliedCoupon = value ?? initialCoupon;\n\n const handleApplyCoupon = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const code = formData.get('coupon') as string;\n if (code?.trim()) {\n await apply(code.trim());\n }\n },\n [apply]\n );\n\n const handleRemoveCoupon = useCallback(async () => {\n await remove();\n }, [remove]);\n\n return (\n <form className=\"border-t border-gray-200 border-b py-5 mb-5\" onSubmit={handleApplyCoupon}>\n <label htmlFor=\"coupon-input\" className=\"block text-sm\">\n {t('pages.cart.have_coupon', 'Have a coupon?')}\n </label>\n <div className=\"mt-2.5 relative\">\n <input\n placeholder={t('pages.cart.coupon_placeholder', 'Enter coupon code')}\n disabled={!!appliedCoupon}\n className=\"rtl:pl-24 ltr:pr-24 form-input\"\n defaultValue={appliedCoupon}\n id=\"coupon-input\"\n name=\"coupon\"\n aria-label={t('pages.cart.apply_coupon', 'Apply coupon')}\n type=\"text\"\n />\n\n <SallaButton\n type=\"submit\"\n className={`btn--coupon ${appliedCoupon ? 'has-coupon btn--danger' : 'has-not-coupon btn--default'}`}\n loaderPosition=\"center\"\n onClick={appliedCoupon ? handleRemoveCoupon : undefined}\n >\n <span className=\"coupon-text\">\n {appliedCoupon ? '' : t('pages.cart.apply_coupon_btn', 'Apply')}\n </span>\n {appliedCoupon && <i className=\"sicon-cancel icon text-xl w-8\"></i>}\n </SallaButton>\n </div>\n {error && (\n <span className=\"text-xs text-red-700\" id=\"coupon-error\">\n {error}\n </span>\n )}\n </form>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/cart/CartSummary.tsx"],"names":[],"mappings":"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","file":"CartSummary-EDCVRCEG.js","sourcesContent":["import { useCallback } from 'react';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useCoupon } from '../../hooks/useCoupon';\nimport { useMoney } from '../../hooks/useMoney';\nimport { stripUnsafeHtml } from '../../utils/sanitize';\nimport { SallaLoyalty } from '@salla.sa/twilight-components-react/loyalty';\nimport { SallaGifting } from '@salla.sa/twilight-components-react/gifting';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaTieredOffer } from '@salla.sa/twilight-components-react/tiered-offer';\nimport type { Cart } from '../../types';\n\ninterface CartSummaryProps {\n cart: Cart;\n applyCouponEnabled?: boolean;\n taxAmount?: number;\n loyalty?: Cart['loyalty'];\n gift?: Cart['gift'];\n loyaltyPoints?: number;\n}\n\nexport function CartSummary({\n cart,\n applyCouponEnabled = true,\n taxAmount,\n loyalty,\n gift,\n loyaltyPoints,\n}: CartSummaryProps) {\n const { t } = useTranslation();\n const { format } = useMoney();\n\n const handleCartSubmit = useCallback(async () => {\n try {\n await window.salla?.cart.submit();\n } catch {\n // Error handling\n }\n }, []);\n\n return (\n <div className=\"sticky top-24 w-full lg:w-96 rtl:lg:mr-8 ltr:lg:ml-8\">\n <HookSlot name=\"cart:summary.start\" />\n {cart.free_shipping_bar && <FreeShippingBar freeShippingBar={cart.free_shipping_bar} />}\n\n {/* Twig: {% if loyalty and user.loyalty_points %} — top-level page vars rendered inside sidebar */}\n {loyalty && loyaltyPoints && (\n <div className=\"shadow-default mb-5 rounded-md p-3 xs:p-7 bg-white\">\n <SallaLoyalty\n customerPoints={loyaltyPoints}\n prizePoints={loyalty.prize.points}\n prizeTitle={loyalty.prize.title}\n />\n </div>\n )}\n\n {/* Twig: {{gift.enabled ? '' : 'hidden'}} — top-level page var rendered inside sidebar */}\n {gift?.enabled && (\n <div id=\"cart-gifting\" className=\"shadow-default bg-white xs:p-2 rounded-md mb-5 relative\">\n <SallaGifting\n id=\"salla-gifting\"\n className=\"mt-5\"\n widgetTitle={t('pages.cart.gift_widget_title', 'Send as a gift')}\n widgetSubtitle={gift.text}\n {...(gift.type ? { [gift.type + 'Products']: true } : {})}\n vertical\n />\n </div>\n )}\n\n <div className=\"shadow-default bg-white p-5 xs:p-7 rounded-md mb-5 relative transition-height duration-1000\">\n <h2 className=\"font-bold text-sm mb-5\">{t('pages.cart.summary', 'Order Summary')}</h2>\n\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {taxAmount\n ? t('pages.cart.items_total_without_tax', 'Items total (excl. tax)')\n : t('pages.cart.items_total', 'Items total')}\n </span>\n <b id=\"sub-total\">{format(cart.sub_total)}</b>\n </div>\n\n {cart.options?.length > 0 && (\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {t('pages.cart.order_options_total', 'Options total')}\n </span>\n <b id=\"cart-options-total\">{format(cart.options_total ?? undefined)}</b>\n </div>\n )}\n\n {cart.has_shipping && (\n <div id=\"shipping-cost\" className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">{t('pages.cart.shipping_cost', 'Shipping cost')}</span>\n <b>{format(cart.real_shipping_cost)}</b>\n </div>\n )}\n\n {applyCouponEnabled && <CouponInput initialCoupon={cart.coupon ?? undefined} />}\n\n {!!cart.total_discount && (\n <div id=\"total-discount\" className=\"flex justify-between text-sm\">\n <span className=\"text-gray-500 block h-10\">{t('pages.cart.discount', 'Discount')}</span>\n <b>- {format(cart.total_discount)}</b>\n </div>\n )}\n\n {!!taxAmount && (\n <div className=\"flex justify-between text-sm mb-5\">\n <span className=\"text-gray-500\">\n {t('pages.cart.VAT_tax_amount', 'VAT Tax Amount')}\n </span>\n <b id=\"tax-amount\">{format(taxAmount)}</b>\n </div>\n )}\n\n <div className=\"flex justify-between text-lg mb-5\">\n <span className=\"text-gray-500\">{t('pages.cart.final_total', 'Total')}</span>\n <b data-cart-total>{format(cart.total)}</b>\n </div>\n\n <div className=\"cart-submit-wrap\">\n <HookSlot name=\"cart:submit.start\" />\n <SallaButton\n id=\"cart-submit\"\n loaderPosition=\"center\"\n width=\"wide\"\n onClick={handleCartSubmit}\n >\n {t('pages.cart.complete_order', 'Complete Order')}\n </SallaButton>\n <HookSlot name=\"cart:submit.end\" />\n </div>\n\n <HookSlot name=\"cart:summary.end\" />\n </div>\n\n <SallaTieredOffer />\n </div>\n );\n}\n\nfunction FreeShippingBar({\n freeShippingBar,\n}: {\n freeShippingBar: NonNullable<Cart['free_shipping_bar']>;\n}) {\n const isFree = freeShippingBar.has_free_shipping;\n const { t } = useTranslation();\n\n return (\n <div className=\"shadow-default bg-white p-5 xs:p-7 rounded-md mb-5 relative\" id=\"free-shipping\">\n <div className=\"flex rtl:space-x-reverse space-x-3 items-center\">\n <i className=\"bg-primary text-white rounded-icon sicon-shipping-fast\"></i>\n <div className=\"flex-1\">\n <h4 className=\"shipping-item font-bold text-sm mb-1.5\">\n {t('pages.cart.free_shipping', 'Free Shipping')}\n </h4>\n <p className=\"shipping-item text-sm text-gray-500\">\n {isFree ? (\n <>\n <span\n id=\"free-shipping-msg\"\n dangerouslySetInnerHTML={{\n __html: stripUnsafeHtml(\n t('pages.cart.has_free_shipping', 'You have free shipping!')\n ),\n }}\n />\n <span className=\"emoji\" id=\"free-shipping-applied\">\n 🎉\n </span>\n </>\n ) : (\n <span\n id=\"free-shipping-msg\"\n dangerouslySetInnerHTML={{\n __html: stripUnsafeHtml(\n t(\n 'pages.cart.free_shipping_alert',\n 'Get free shipping when you add :amount more'\n ).replace(':amount', String(freeShippingBar.remaining))\n ),\n }}\n />\n )}\n </p>\n </div>\n </div>\n {!isFree && (\n <div className=\"mt-8 bg-border-color rounded-full\" id=\"free-shipping-bar\">\n <div\n className=\"progress-bg transition-all duration-500 h-2.5 bg-primary relative rounded-full flex justify-end\"\n style={{ width: `${freeShippingBar.percent}%` }}\n >\n <i className=\"inline-block sicon-shipping-fast absolute -top-5 rtl:left-0 ltr:right-0\"></i>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction CouponInput({ initialCoupon }: { initialCoupon?: string }) {\n const { t } = useTranslation();\n const { value, error, apply, remove } = useCoupon();\n\n // Use initial coupon from cart if available\n const appliedCoupon = value ?? initialCoupon;\n\n const handleApplyCoupon = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const code = formData.get('coupon') as string;\n if (code?.trim()) {\n await apply(code.trim());\n }\n },\n [apply]\n );\n\n const handleRemoveCoupon = useCallback(async () => {\n await remove();\n }, [remove]);\n\n return (\n <form className=\"border-t border-gray-200 border-b py-5 mb-5\" onSubmit={handleApplyCoupon}>\n <label htmlFor=\"coupon-input\" className=\"block text-sm\">\n {t('pages.cart.have_coupon', 'Have a coupon?')}\n </label>\n <div className=\"mt-2.5 relative\">\n <input\n placeholder={t('pages.cart.coupon_placeholder', 'Enter coupon code')}\n disabled={!!appliedCoupon}\n className=\"rtl:pl-24 ltr:pr-24 form-input\"\n defaultValue={appliedCoupon}\n id=\"coupon-input\"\n name=\"coupon\"\n aria-label={t('pages.cart.apply_coupon', 'Apply coupon')}\n type=\"text\"\n />\n\n <SallaButton\n type=\"submit\"\n className={`btn--coupon ${appliedCoupon ? 'has-coupon btn--danger' : 'has-not-coupon btn--default'}`}\n loaderPosition=\"center\"\n onClick={appliedCoupon ? handleRemoveCoupon : undefined}\n >\n <span className=\"coupon-text\">\n {appliedCoupon ? '' : t('pages.cart.apply_coupon_btn', 'Apply')}\n </span>\n {appliedCoupon && <i className=\"sicon-cancel icon text-xl w-8\"></i>}\n </SallaButton>\n </div>\n {error && (\n <span className=\"text-xs text-red-700\" id=\"coupon-error\">\n {error}\n </span>\n )}\n </form>\n );\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  export { Copyright } from './chunk-JKIRRMBU.js';
2
2
  import './chunk-TYNZ5B2B.js';
3
3
  import './chunk-T72DAX7R.js';
4
- import './chunk-CZS4ZHQK.js';
4
+ import './chunk-TDPAK42O.js';
5
5
  import './chunk-AXW67SY7.js';
6
6
  import './chunk-BYMOPN2S.js';
7
7
  import './chunk-DGUM43GV.js';
8
- //# sourceMappingURL=Copyright-2D7W6OS4.js.map
9
- //# sourceMappingURL=Copyright-2D7W6OS4.js.map
8
+ //# sourceMappingURL=Copyright-E3L2IWRR.js.map
9
+ //# sourceMappingURL=Copyright-E3L2IWRR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"Copyright-2D7W6OS4.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Copyright-E3L2IWRR.js"}
@@ -1,5 +1,5 @@
1
- import './chunk-EFHSAWDQ.js';
2
- import './chunk-63WNORBK.js';
1
+ import './chunk-W47EYBH2.js';
2
+ import './chunk-IXDDHM7D.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-6IATCGID.js';
@@ -17,7 +17,7 @@ import './chunk-6XWMNQ52.js';
17
17
  import './chunk-TP3LCGE7.js';
18
18
  import './chunk-Z653O7MX.js';
19
19
  import './chunk-ZCH7W7DZ.js';
20
- import './chunk-SSRNIBVV.js';
20
+ import './chunk-3U26OMNO.js';
21
21
  import './chunk-JWXJPJBO.js';
22
22
  import './chunk-CW625T2E.js';
23
23
  import './chunk-BVSJPBJ6.js';
@@ -29,7 +29,7 @@ import './chunk-YMVLYYLU.js';
29
29
  import './chunk-RJPPO3ET.js';
30
30
  import './chunk-Q7VWURUR.js';
31
31
  import './chunk-GU2KUQVD.js';
32
- import { LazyBreadcrumb } from './chunk-CZS4ZHQK.js';
32
+ import { LazyBreadcrumb } from './chunk-TDPAK42O.js';
33
33
  import './chunk-AXW67SY7.js';
34
34
  import './chunk-BYMOPN2S.js';
35
35
  import './chunk-6BZ5TKEV.js';
@@ -68,5 +68,5 @@ function CustomerLayout({ children, page }) {
68
68
  }
69
69
 
70
70
  export { CustomerLayout };
71
- //# sourceMappingURL=CustomerLayout-Z3JGXMO7.js.map
72
- //# sourceMappingURL=CustomerLayout-Z3JGXMO7.js.map
71
+ //# sourceMappingURL=CustomerLayout-4MWXBPRF.js.map
72
+ //# sourceMappingURL=CustomerLayout-4MWXBPRF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/layout/CustomerLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,IAAA,EAAK,EAAwB;AACtE,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,OAAA,EAAQ;AAE/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,6DAAA,EACZ,QAAA,EAAA,IAAA,oBAAQ,GAAA,CAAC,cAAA,EAAA,EAAW,IAAA,EAAY,SAAA,EAAU,oCAAA,EAAqC,GAClF,CAAA,EACF,CAAA;AAAA,wBAGC,KAAA,EAAA,EAAI,SAAA,EAAU,sBACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sDAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,SAAA;AAAA,UACX,SAAA,EAAU,yJAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,IAAA,EAAM,IAAA,KAAS,SAAA,oBACd,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,YAAA,EAAY,IAAA,EAAC,KAAA,EAAO,IAAA,EAAM,MAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4EAAA,EACd,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mCAAA,EAAoC,CAAA,EACtD,CAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA;AAAA,4BAGF,GAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EACb,8BAAC,aAAA,EAAA,EAAc,MAAA,EAAM,MAAC,CAAA,EACxB;AAAA;AAAA;AAAA,OACF;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACZ,QAAA,EAAA;AAAA,QAAA,IAAA,EAAM,yBACL,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uEAAA,EACX,eAAK,KAAA,EACR,CAAA;AAAA,QAED;AAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"CustomerLayout-Z3JGXMO7.js","sourcesContent":["import { useUser } from '../../hooks';\nimport { SallaFileUpload } from '@salla.sa/twilight-components-react/file-upload';\nimport { SallaUserMenu } from '@salla.sa/twilight-components-react/user-menu';\nimport { Breadcrumb } from '../common';\nimport type { LayoutProps } from './types';\nimport type { Page } from '../../types';\n\ninterface CustomerLayoutProps extends LayoutProps {\n page?: Page;\n}\n\nexport function CustomerLayout({ children, page }: CustomerLayoutProps) {\n const { data: user } = useUser();\n\n return (\n <>\n <div className=\"profile-header gradient-bg\">\n <div className=\"container relative flex justify-between h-full items-center\">\n {page && <Breadcrumb page={page} className=\"breadcrumbs w-full py-5 self-start\" />}\n </div>\n </div>\n\n {/* Main content area */}\n <div className=\"container lg:mb-24\">\n <div className=\"flex items-start flex-col lg:flex-row justify-center\">\n <nav\n aria-label=\"Sidebar\"\n className=\"shrink-0 lg:sticky top-24 lg:-mt-28 lg:shadow-default rounded-md lg:bg-white w-full lg:w-72 rtl:lg:ml-8 ltr:lg:mr-8 lg:pt-8 lg:pb-11 sidebar space-y-px\"\n >\n {page?.slug === 'profile' && (\n <div className=\"text-center md:mb-9\">\n <div className=\"h-20 w-20 m-auto avatar-wrap bg-gray-100 rounded-full overflow-hidden\">\n <SallaFileUpload profileImage value={user?.avatar}>\n <span className=\"avatar-placeholder flex justify-center items-center flex-col w-full h-full\">\n <span className=\"sicon-user text-2xl text-gray-400\"></span>\n </span>\n </SallaFileUpload>\n </div>\n </div>\n )}\n\n <div className=\"hidden lg:block\">\n <SallaUserMenu inline />\n </div>\n </nav>\n\n <div className=\"main-content w-full flex-1 lg:pt-10 max-w-3xl\">\n {page?.title && (\n <h1 className=\"font-bold text-lg text-center sm:rtl:text-right sm:ltr:text-left mb-2\">\n {page.title}\n </h1>\n )}\n {children}\n </div>\n </div>\n </div>\n </>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/layout/CustomerLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,IAAA,EAAK,EAAwB;AACtE,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,OAAA,EAAQ;AAE/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,6DAAA,EACZ,QAAA,EAAA,IAAA,oBAAQ,GAAA,CAAC,cAAA,EAAA,EAAW,IAAA,EAAY,SAAA,EAAU,oCAAA,EAAqC,GAClF,CAAA,EACF,CAAA;AAAA,wBAGC,KAAA,EAAA,EAAI,SAAA,EAAU,sBACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sDAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,SAAA;AAAA,UACX,SAAA,EAAU,yJAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,IAAA,EAAM,IAAA,KAAS,SAAA,oBACd,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,YAAA,EAAY,IAAA,EAAC,KAAA,EAAO,IAAA,EAAM,MAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4EAAA,EACd,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mCAAA,EAAoC,CAAA,EACtD,CAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA;AAAA,4BAGF,GAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EACb,8BAAC,aAAA,EAAA,EAAc,MAAA,EAAM,MAAC,CAAA,EACxB;AAAA;AAAA;AAAA,OACF;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACZ,QAAA,EAAA;AAAA,QAAA,IAAA,EAAM,yBACL,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uEAAA,EACX,eAAK,KAAA,EACR,CAAA;AAAA,QAED;AAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"CustomerLayout-4MWXBPRF.js","sourcesContent":["import { useUser } from '../../hooks';\nimport { SallaFileUpload } from '@salla.sa/twilight-components-react/file-upload';\nimport { SallaUserMenu } from '@salla.sa/twilight-components-react/user-menu';\nimport { Breadcrumb } from '../common';\nimport type { LayoutProps } from './types';\nimport type { Page } from '../../types';\n\ninterface CustomerLayoutProps extends LayoutProps {\n page?: Page;\n}\n\nexport function CustomerLayout({ children, page }: CustomerLayoutProps) {\n const { data: user } = useUser();\n\n return (\n <>\n <div className=\"profile-header gradient-bg\">\n <div className=\"container relative flex justify-between h-full items-center\">\n {page && <Breadcrumb page={page} className=\"breadcrumbs w-full py-5 self-start\" />}\n </div>\n </div>\n\n {/* Main content area */}\n <div className=\"container lg:mb-24\">\n <div className=\"flex items-start flex-col lg:flex-row justify-center\">\n <nav\n aria-label=\"Sidebar\"\n className=\"shrink-0 lg:sticky top-24 lg:-mt-28 lg:shadow-default rounded-md lg:bg-white w-full lg:w-72 rtl:lg:ml-8 ltr:lg:mr-8 lg:pt-8 lg:pb-11 sidebar space-y-px\"\n >\n {page?.slug === 'profile' && (\n <div className=\"text-center md:mb-9\">\n <div className=\"h-20 w-20 m-auto avatar-wrap bg-gray-100 rounded-full overflow-hidden\">\n <SallaFileUpload profileImage value={user?.avatar}>\n <span className=\"avatar-placeholder flex justify-center items-center flex-col w-full h-full\">\n <span className=\"sicon-user text-2xl text-gray-400\"></span>\n </span>\n </SallaFileUpload>\n </div>\n </div>\n )}\n\n <div className=\"hidden lg:block\">\n <SallaUserMenu inline />\n </div>\n </nav>\n\n <div className=\"main-content w-full flex-1 lg:pt-10 max-w-3xl\">\n {page?.title && (\n <h1 className=\"font-bold text-lg text-center sm:rtl:text-right sm:ltr:text-left mb-2\">\n {page.title}\n </h1>\n )}\n {children}\n </div>\n </div>\n </div>\n </>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
- export { Footer } from './chunk-EFHSAWDQ.js';
2
- import './chunk-63WNORBK.js';
1
+ export { Footer } from './chunk-W47EYBH2.js';
2
+ import './chunk-IXDDHM7D.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-6IATCGID.js';
@@ -17,7 +17,7 @@ import './chunk-6XWMNQ52.js';
17
17
  import './chunk-TP3LCGE7.js';
18
18
  import './chunk-Z653O7MX.js';
19
19
  import './chunk-ZCH7W7DZ.js';
20
- import './chunk-SSRNIBVV.js';
20
+ import './chunk-3U26OMNO.js';
21
21
  import './chunk-JWXJPJBO.js';
22
22
  import './chunk-CW625T2E.js';
23
23
  import './chunk-BVSJPBJ6.js';
@@ -29,7 +29,7 @@ import './chunk-YMVLYYLU.js';
29
29
  import './chunk-RJPPO3ET.js';
30
30
  import './chunk-Q7VWURUR.js';
31
31
  import './chunk-GU2KUQVD.js';
32
- import './chunk-CZS4ZHQK.js';
32
+ import './chunk-TDPAK42O.js';
33
33
  import './chunk-AXW67SY7.js';
34
34
  import './chunk-BYMOPN2S.js';
35
35
  import './chunk-6BZ5TKEV.js';
@@ -39,5 +39,5 @@ import './chunk-HX3YKS5W.js';
39
39
  import './chunk-OBSAH7K6.js';
40
40
  import './chunk-DF6FBKDN.js';
41
41
  import './chunk-DGUM43GV.js';
42
- //# sourceMappingURL=Footer-DFZFOH5E.js.map
43
- //# sourceMappingURL=Footer-DFZFOH5E.js.map
42
+ //# sourceMappingURL=Footer-6CAS63OH.js.map
43
+ //# sourceMappingURL=Footer-6CAS63OH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"Footer-DFZFOH5E.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Footer-6CAS63OH.js"}
@@ -1,4 +1,4 @@
1
- export { Header } from './chunk-63WNORBK.js';
1
+ export { Header } from './chunk-IXDDHM7D.js';
2
2
  import './chunk-XLGVT7QF.js';
3
3
  import './chunk-MTONGOJD.js';
4
4
  import './chunk-6XWMNQ52.js';
@@ -6,10 +6,10 @@ import './chunk-TYNZ5B2B.js';
6
6
  import './chunk-T72DAX7R.js';
7
7
  import './chunk-Q7VWURUR.js';
8
8
  import './chunk-GU2KUQVD.js';
9
- import './chunk-CZS4ZHQK.js';
9
+ import './chunk-TDPAK42O.js';
10
10
  import './chunk-AXW67SY7.js';
11
11
  import './chunk-BYMOPN2S.js';
12
12
  import './chunk-DF6FBKDN.js';
13
13
  import './chunk-DGUM43GV.js';
14
- //# sourceMappingURL=Header-CF5TQMWR.js.map
15
- //# sourceMappingURL=Header-CF5TQMWR.js.map
14
+ //# sourceMappingURL=Header-DNTX6HW4.js.map
15
+ //# sourceMappingURL=Header-DNTX6HW4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"Header-CF5TQMWR.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Header-DNTX6HW4.js"}
@@ -1,6 +1,6 @@
1
1
  import { loyalty } from './chunk-ZNWNJZSM.js';
2
- import './chunk-EFHSAWDQ.js';
3
- import './chunk-63WNORBK.js';
2
+ import './chunk-W47EYBH2.js';
3
+ import './chunk-IXDDHM7D.js';
4
4
  import './chunk-JKIRRMBU.js';
5
5
  import './chunk-2JV6WZ6O.js';
6
6
  import './chunk-6IATCGID.js';
@@ -18,7 +18,7 @@ import './chunk-6XWMNQ52.js';
18
18
  import './chunk-TP3LCGE7.js';
19
19
  import './chunk-Z653O7MX.js';
20
20
  import './chunk-ZCH7W7DZ.js';
21
- import './chunk-SSRNIBVV.js';
21
+ import './chunk-3U26OMNO.js';
22
22
  import './chunk-JWXJPJBO.js';
23
23
  import './chunk-CW625T2E.js';
24
24
  import './chunk-BVSJPBJ6.js';
@@ -30,7 +30,7 @@ import './chunk-YMVLYYLU.js';
30
30
  import './chunk-RJPPO3ET.js';
31
31
  import './chunk-Q7VWURUR.js';
32
32
  import './chunk-GU2KUQVD.js';
33
- import { LazyBreadcrumb, Image } from './chunk-CZS4ZHQK.js';
33
+ import { LazyBreadcrumb, Image } from './chunk-TDPAK42O.js';
34
34
  import { Link } from './chunk-AXW67SY7.js';
35
35
  import './chunk-BYMOPN2S.js';
36
36
  import './chunk-6BZ5TKEV.js';
@@ -188,5 +188,5 @@ function LoyaltyPage({ loyalty: loyaltyData, page }) {
188
188
  }
189
189
 
190
190
  export { LoyaltyPage };
191
- //# sourceMappingURL=LoyaltyPage-TOXOPXEU.js.map
192
- //# sourceMappingURL=LoyaltyPage-TOXOPXEU.js.map
191
+ //# sourceMappingURL=LoyaltyPage-NRKL6GTJ.js.map
192
+ //# sourceMappingURL=LoyaltyPage-NRKL6GTJ.js.map