@salla.sa/twilight-theme-engine 1.0.22 → 1.0.23

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 (286) hide show
  1. package/dist/{AddToCartForm-GQMQI2QS.js → AddToCartForm-5P2QQGOG.js} +3 -3
  2. package/dist/{AddToCartForm-GQMQI2QS.js.map → AddToCartForm-5P2QQGOG.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-N5UYXWUR.js → BlogAuthorPage-QJLGMSK3.js} +10 -10
  4. package/dist/{BlogAuthorPage-N5UYXWUR.js.map → BlogAuthorPage-QJLGMSK3.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-TVP7B2B5.js → BlogCategoryPage-H7VYN7OV.js} +10 -10
  6. package/dist/{BlogCategoryPage-TVP7B2B5.js.map → BlogCategoryPage-H7VYN7OV.js.map} +1 -1
  7. package/dist/{BlogPage-4THEFN3C.js → BlogPage-LWAQ6ZVO.js} +8 -8
  8. package/dist/{BlogPage-4THEFN3C.js.map → BlogPage-LWAQ6ZVO.js.map} +1 -1
  9. package/dist/{BlogSinglePage-TZQHLDT4.js → BlogSinglePage-DMAMK26P.js} +8 -8
  10. package/dist/{BlogSinglePage-TZQHLDT4.js.map → BlogSinglePage-DMAMK26P.js.map} +1 -1
  11. package/dist/{BlogTagPage-TDRMBE25.js → BlogTagPage-6URVT6AD.js} +10 -10
  12. package/dist/{BlogTagPage-TDRMBE25.js.map → BlogTagPage-6URVT6AD.js.map} +1 -1
  13. package/dist/{BrandsPage-I3GPQIEZ.js → BrandsPage-AANQU2O3.js} +8 -8
  14. package/dist/{BrandsPage-I3GPQIEZ.js.map → BrandsPage-AANQU2O3.js.map} +1 -1
  15. package/dist/{Breadcrumb-MLJJREUC.js → Breadcrumb-UAMFZYT6.js} +8 -8
  16. package/dist/{Breadcrumb-MLJJREUC.js.map → Breadcrumb-UAMFZYT6.js.map} +1 -1
  17. package/dist/{CartItem-UOH6PJ75.js → CartItem-3677CNHU.js} +8 -8
  18. package/dist/{CartItem-UOH6PJ75.js.map → CartItem-3677CNHU.js.map} +1 -1
  19. package/dist/{CartSummary-CJZOEJIV.js → CartSummary-BJJNE6C5.js} +8 -8
  20. package/dist/{CartSummary-CJZOEJIV.js.map → CartSummary-BJJNE6C5.js.map} +1 -1
  21. package/dist/{Copyright-5PRVO5GN.js → Copyright-DHEUTAZQ.js} +3 -3
  22. package/dist/{Copyright-5PRVO5GN.js.map → Copyright-DHEUTAZQ.js.map} +1 -1
  23. package/dist/{CustomerLayout-E3OWHWIG.js → CustomerLayout-SG2CUIJU.js} +8 -8
  24. package/dist/{CustomerLayout-E3OWHWIG.js.map → CustomerLayout-SG2CUIJU.js.map} +1 -1
  25. package/dist/{Footer-FZEMILEI.js → Footer-OHHHBUAR.js} +8 -8
  26. package/dist/{Footer-FZEMILEI.js.map → Footer-OHHHBUAR.js.map} +1 -1
  27. package/dist/{Header-2OT52BFE.js → Header-NIEPJXYE.js} +4 -4
  28. package/dist/{Header-2OT52BFE.js.map → Header-NIEPJXYE.js.map} +1 -1
  29. package/dist/{LoyaltyPage-UFPBBUWE.js → LoyaltyPage-YBVHG57L.js} +9 -9
  30. package/dist/{LoyaltyPage-UFPBBUWE.js.map → LoyaltyPage-YBVHG57L.js.map} +1 -1
  31. package/dist/{MainMenu-KS3CULI5.js → MainMenu-U6WGGXHK.js} +5 -5
  32. package/dist/{MainMenu-KS3CULI5.js.map → MainMenu-U6WGGXHK.js.map} +1 -1
  33. package/dist/{MasterLayout-DYVOIN5O.js → MasterLayout-YOBUFJNN.js} +8 -8
  34. package/dist/{MasterLayout-DYVOIN5O.js.map → MasterLayout-YOBUFJNN.js.map} +1 -1
  35. package/dist/{MobileMenu-NK7HM3UP.js → MobileMenu-DNMUVXPY.js} +9 -9
  36. package/dist/{MobileMenu-NK7HM3UP.js.map → MobileMenu-DNMUVXPY.js.map} +1 -1
  37. package/dist/{NotificationsPage-NMMURGF6.js → NotificationsPage-X7PIHUNY.js} +8 -8
  38. package/dist/{NotificationsPage-NMMURGF6.js.map → NotificationsPage-X7PIHUNY.js.map} +1 -1
  39. package/dist/{OrderSinglePage-HV3CH3B3.js → OrderSinglePage-E7SXRGRF.js} +9 -9
  40. package/dist/{OrderSinglePage-HV3CH3B3.js.map → OrderSinglePage-E7SXRGRF.js.map} +1 -1
  41. package/dist/{OrdersPage-V7R7GDIM.js → OrdersPage-G6HBVJKI.js} +9 -9
  42. package/dist/{OrdersPage-V7R7GDIM.js.map → OrdersPage-G6HBVJKI.js.map} +1 -1
  43. package/dist/{PageSingle-RPGUD25P.js → PageSingle-PVGXNR42.js} +3 -3
  44. package/dist/{PageSingle-RPGUD25P.js.map → PageSingle-PVGXNR42.js.map} +1 -1
  45. package/dist/{ProductDetails-MH6KKUUT.js → ProductDetails-XG26QCTN.js} +3 -3
  46. package/dist/{ProductDetails-MH6KKUUT.js.map → ProductDetails-XG26QCTN.js.map} +1 -1
  47. package/dist/{ProfilePage-QAE6LWCE.js → ProfilePage-6QDPXYNR.js} +8 -8
  48. package/dist/{ProfilePage-QAE6LWCE.js.map → ProfilePage-6QDPXYNR.js.map} +1 -1
  49. package/dist/{SeoCartWidget-WYUIW5I6.js → SeoCartWidget-GR6PYXDP.js} +8 -8
  50. package/dist/{SeoCartWidget-WYUIW5I6.js.map → SeoCartWidget-GR6PYXDP.js.map} +1 -1
  51. package/dist/{SettingsPage-UU5M3DH6.js → SettingsPage-2OVEIVCT.js} +8 -8
  52. package/dist/{SettingsPage-UU5M3DH6.js.map → SettingsPage-2OVEIVCT.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-BYCN6FFR.js → StoreClosedNotification-NU5QC2TG.js} +9 -9
  54. package/dist/{StoreClosedNotification-BYCN6FFR.js.map → StoreClosedNotification-NU5QC2TG.js.map} +1 -1
  55. package/dist/{TestimonialsPage-LQHMTMUV.js → TestimonialsPage-4UJWE4X4.js} +3 -3
  56. package/dist/{TestimonialsPage-LQHMTMUV.js.map → TestimonialsPage-4UJWE4X4.js.map} +1 -1
  57. package/dist/{ThankYouPage-DKJAYXIX.js → ThankYouPage-5IDWYLTL.js} +8 -8
  58. package/dist/{ThankYouPage-DKJAYXIX.js.map → ThankYouPage-5IDWYLTL.js.map} +1 -1
  59. package/dist/{WalletPage-CLWEBMG6.js → WalletPage-MQR4UAMN.js} +9 -9
  60. package/dist/{WalletPage-CLWEBMG6.js.map → WalletPage-MQR4UAMN.js.map} +1 -1
  61. package/dist/{WishlistPage-KKGNJUXR.js → WishlistPage-4YADKHYB.js} +9 -9
  62. package/dist/{WishlistPage-KKGNJUXR.js.map → WishlistPage-4YADKHYB.js.map} +1 -1
  63. package/dist/api/apps.js +1 -1
  64. package/dist/api/brands.js +2 -2
  65. package/dist/api/cart.js +2 -2
  66. package/dist/api/category.js +2 -2
  67. package/dist/api/client.js +1 -1
  68. package/dist/api/home.js +2 -2
  69. package/dist/api/loyalty.js +2 -2
  70. package/dist/api/menu.js +2 -2
  71. package/dist/api/notification.js +2 -2
  72. package/dist/api/order.js +2 -2
  73. package/dist/api/page.js +2 -2
  74. package/dist/api/product.js +2 -2
  75. package/dist/api/profile.js +1 -1
  76. package/dist/api/store.js +2 -2
  77. package/dist/api/translations.js +2 -2
  78. package/dist/api/user.js +2 -2
  79. package/dist/api/wishlist.js +2 -2
  80. package/dist/{chunk-5QTXGXQ4.js → chunk-2PWN27HQ.js} +3 -3
  81. package/dist/{chunk-5QTXGXQ4.js.map → chunk-2PWN27HQ.js.map} +1 -1
  82. package/dist/{chunk-XBYPAJQR.js → chunk-2WBVZR4E.js} +3 -3
  83. package/dist/{chunk-XBYPAJQR.js.map → chunk-2WBVZR4E.js.map} +1 -1
  84. package/dist/{chunk-2Z6EOHMB.js → chunk-4BH3L5ZI.js} +3 -3
  85. package/dist/{chunk-2Z6EOHMB.js.map → chunk-4BH3L5ZI.js.map} +1 -1
  86. package/dist/{chunk-HNIUGQA3.js → chunk-A5XHG5DY.js} +3 -3
  87. package/dist/{chunk-HNIUGQA3.js.map → chunk-A5XHG5DY.js.map} +1 -1
  88. package/dist/{chunk-KJB6Z43Q.js → chunk-BH6NMIAK.js} +8 -8
  89. package/dist/{chunk-KJB6Z43Q.js.map → chunk-BH6NMIAK.js.map} +1 -1
  90. package/dist/{chunk-2XVLUW4F.js → chunk-DA43QUYK.js} +3 -3
  91. package/dist/{chunk-2XVLUW4F.js.map → chunk-DA43QUYK.js.map} +1 -1
  92. package/dist/{chunk-DKF6GTQ4.js → chunk-DFIZHPDP.js} +3 -3
  93. package/dist/{chunk-DKF6GTQ4.js.map → chunk-DFIZHPDP.js.map} +1 -1
  94. package/dist/{chunk-MJMMVV2D.js → chunk-DIKZRWOS.js} +4 -4
  95. package/dist/{chunk-MJMMVV2D.js.map → chunk-DIKZRWOS.js.map} +1 -1
  96. package/dist/{chunk-ZBASHNPK.js → chunk-EEYZYG36.js} +3 -3
  97. package/dist/{chunk-ZBASHNPK.js.map → chunk-EEYZYG36.js.map} +1 -1
  98. package/dist/{chunk-L7XGAVXX.js → chunk-FXXATUWJ.js} +4 -4
  99. package/dist/{chunk-L7XGAVXX.js.map → chunk-FXXATUWJ.js.map} +1 -1
  100. package/dist/{chunk-WA4A34G7.js → chunk-HPR6QACC.js} +3 -3
  101. package/dist/{chunk-WA4A34G7.js.map → chunk-HPR6QACC.js.map} +1 -1
  102. package/dist/{chunk-KZDPUWPU.js → chunk-IIQKLIII.js} +5 -5
  103. package/dist/{chunk-KZDPUWPU.js.map → chunk-IIQKLIII.js.map} +1 -1
  104. package/dist/{chunk-D2LY5L4Z.js → chunk-KOVPH7TW.js} +5 -5
  105. package/dist/chunk-KOVPH7TW.js.map +1 -0
  106. package/dist/{chunk-ELYMWPBG.js → chunk-MD35JQVL.js} +3 -3
  107. package/dist/{chunk-ELYMWPBG.js.map → chunk-MD35JQVL.js.map} +1 -1
  108. package/dist/{chunk-3SQ6C6AK.js → chunk-MSBPOHMV.js} +5 -5
  109. package/dist/{chunk-3SQ6C6AK.js.map → chunk-MSBPOHMV.js.map} +1 -1
  110. package/dist/{chunk-MV4FC2WC.js → chunk-ODXQLAF4.js} +5 -5
  111. package/dist/{chunk-MV4FC2WC.js.map → chunk-ODXQLAF4.js.map} +1 -1
  112. package/dist/{chunk-XCUNSPXR.js → chunk-OY3VMBTA.js} +3 -3
  113. package/dist/{chunk-XCUNSPXR.js.map → chunk-OY3VMBTA.js.map} +1 -1
  114. package/dist/{chunk-W7KPAKOF.js → chunk-PASKA2UT.js} +3 -3
  115. package/dist/{chunk-W7KPAKOF.js.map → chunk-PASKA2UT.js.map} +1 -1
  116. package/dist/{chunk-SATK6MSP.js → chunk-POU6ARSQ.js} +3 -3
  117. package/dist/{chunk-SATK6MSP.js.map → chunk-POU6ARSQ.js.map} +1 -1
  118. package/dist/{chunk-F7X2IHA2.js → chunk-QHDMWYJO.js} +3 -3
  119. package/dist/{chunk-F7X2IHA2.js.map → chunk-QHDMWYJO.js.map} +1 -1
  120. package/dist/{chunk-LSZEBJYM.js → chunk-QQGFEBYP.js} +3 -3
  121. package/dist/{chunk-LSZEBJYM.js.map → chunk-QQGFEBYP.js.map} +1 -1
  122. package/dist/{chunk-7WEGTIL3.js → chunk-R5VMDBV2.js} +3 -3
  123. package/dist/{chunk-7WEGTIL3.js.map → chunk-R5VMDBV2.js.map} +1 -1
  124. package/dist/{chunk-PPHY7D7Y.js → chunk-RW2WZ4BN.js} +3 -3
  125. package/dist/{chunk-PPHY7D7Y.js.map → chunk-RW2WZ4BN.js.map} +1 -1
  126. package/dist/{chunk-KVMFR4FN.js → chunk-TFDN2SKC.js} +3 -3
  127. package/dist/{chunk-KVMFR4FN.js.map → chunk-TFDN2SKC.js.map} +1 -1
  128. package/dist/{chunk-AAAYGTPY.js → chunk-UXCLRJ3Q.js} +5 -5
  129. package/dist/{chunk-AAAYGTPY.js.map → chunk-UXCLRJ3Q.js.map} +1 -1
  130. package/dist/{chunk-BB46SJTK.js → chunk-VOTDCMG3.js} +3 -3
  131. package/dist/{chunk-BB46SJTK.js.map → chunk-VOTDCMG3.js.map} +1 -1
  132. package/dist/chunk-W64WJKTH.js +14 -0
  133. package/dist/{chunk-E3UU6BXX.js.map → chunk-W64WJKTH.js.map} +1 -1
  134. package/dist/{chunk-WO2B6HL6.js → chunk-X4Z6MIBG.js} +6 -6
  135. package/dist/{chunk-WO2B6HL6.js.map → chunk-X4Z6MIBG.js.map} +1 -1
  136. package/dist/{chunk-GCXKFC34.js → chunk-Y73ZOE3I.js} +3 -3
  137. package/dist/{chunk-GCXKFC34.js.map → chunk-Y73ZOE3I.js.map} +1 -1
  138. package/dist/components/cart/CartItem.d.ts +1 -1
  139. package/dist/components/cart/CartItem.d.ts.map +1 -1
  140. package/dist/components/cart/CartSummary.d.ts +1 -1
  141. package/dist/components/cart/CartSummary.d.ts.map +1 -1
  142. package/dist/components/cart/PreOrderNotification.d.ts +1 -1
  143. package/dist/components/cart/PreOrderNotification.d.ts.map +1 -1
  144. package/dist/components/cart/PriceQuoteButton.d.ts +1 -1
  145. package/dist/components/cart/PriceQuoteButton.d.ts.map +1 -1
  146. package/dist/components/cart/index.js +1 -1
  147. package/dist/components/collapse/Collapse.d.ts +3 -3
  148. package/dist/components/collapse/Collapse.d.ts.map +1 -1
  149. package/dist/components/common/Breadcrumb.d.ts +1 -1
  150. package/dist/components/common/Breadcrumb.d.ts.map +1 -1
  151. package/dist/components/common/BreadcrumbJsonLd.d.ts +1 -1
  152. package/dist/components/common/BreadcrumbJsonLd.d.ts.map +1 -1
  153. package/dist/components/common/CurrencySymbol.d.ts +1 -1
  154. package/dist/components/common/CurrencySymbol.d.ts.map +1 -1
  155. package/dist/components/common/DeferredData.d.ts +1 -1
  156. package/dist/components/common/DeferredData.d.ts.map +1 -1
  157. package/dist/components/common/ErrorPage.d.ts +1 -1
  158. package/dist/components/common/ErrorPage.d.ts.map +1 -1
  159. package/dist/components/common/NoContent.d.ts +1 -1
  160. package/dist/components/common/NoContent.d.ts.map +1 -1
  161. package/dist/components/common/index.js +1 -1
  162. package/dist/components/drawer/Drawer.d.ts +3 -3
  163. package/dist/components/drawer/index.js +6 -6
  164. package/dist/components/dropdown/Dropdown.d.ts +5 -5
  165. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  166. package/dist/components/home/FixedProducts.d.ts +1 -1
  167. package/dist/components/home/FixedProducts.d.ts.map +1 -1
  168. package/dist/components/home/ProductsSlider.d.ts +1 -1
  169. package/dist/components/home/ProductsSlider.d.ts.map +1 -1
  170. package/dist/components/home/index.js +9 -9
  171. package/dist/components/layout/Copyright.d.ts +1 -1
  172. package/dist/components/layout/Copyright.d.ts.map +1 -1
  173. package/dist/components/layout/CustomerLayout.d.ts +1 -1
  174. package/dist/components/layout/CustomerLayout.d.ts.map +1 -1
  175. package/dist/components/layout/Footer.d.ts +1 -1
  176. package/dist/components/layout/Footer.d.ts.map +1 -1
  177. package/dist/components/layout/Header.d.ts +1 -1
  178. package/dist/components/layout/Header.d.ts.map +1 -1
  179. package/dist/components/layout/MasterLayout.d.ts +1 -1
  180. package/dist/components/layout/MasterLayout.d.ts.map +1 -1
  181. package/dist/components/layout/WidgetHead.d.ts +1 -1
  182. package/dist/components/layout/WidgetHead.d.ts.map +1 -1
  183. package/dist/components/layout/index.js +5 -5
  184. package/dist/components/modal/ImageModal.d.ts +1 -1
  185. package/dist/components/modal/ImageModal.d.ts.map +1 -1
  186. package/dist/components/modal/Modal.d.ts +3 -3
  187. package/dist/components/navigation/MainMenu.d.ts +1 -1
  188. package/dist/components/navigation/MainMenu.d.ts.map +1 -1
  189. package/dist/components/navigation/MobileMenu.d.ts +1 -1
  190. package/dist/components/navigation/MobileMenu.d.ts.map +1 -1
  191. package/dist/components/product/AddToCartForm.d.ts +1 -1
  192. package/dist/components/product/AddToCartForm.d.ts.map +1 -1
  193. package/dist/components/product/ProductDetails.d.ts +1 -1
  194. package/dist/components/product/ProductDetails.d.ts.map +1 -1
  195. package/dist/components/product/ProductGallery.d.ts +1 -1
  196. package/dist/components/product/ProductGallery.d.ts.map +1 -1
  197. package/dist/components/product/index.js +7 -7
  198. package/dist/components/store/StoreClosedNotification.d.ts +1 -1
  199. package/dist/components/store/StoreClosedNotification.d.ts.map +1 -1
  200. package/dist/components/store/index.js +8 -8
  201. package/dist/components/toast/Toaster.d.ts +1 -1
  202. package/dist/components/toast/Toaster.d.ts.map +1 -1
  203. package/dist/{document-class-XXWIYBBT.js → document-class-224GXQZQ.js} +6 -6
  204. package/dist/{document-class-XXWIYBBT.js.map → document-class-224GXQZQ.js.map} +1 -1
  205. package/dist/hooks/index.js +6 -6
  206. package/dist/hooks/useGtm.js +6 -6
  207. package/dist/hooks/useMoney.js +6 -6
  208. package/dist/hooks/useStore.js +6 -6
  209. package/dist/hooks/useUser.js +3 -3
  210. package/dist/index.js +6 -6
  211. package/dist/nextjs/navigation.d.ts +1 -1
  212. package/dist/nextjs/navigation.d.ts.map +1 -1
  213. package/dist/{not-found-SELXJ4HW.js → not-found-EMPUSRN4.js} +8 -8
  214. package/dist/{not-found-SELXJ4HW.js.map → not-found-EMPUSRN4.js.map} +1 -1
  215. package/dist/providers/DocumentClassProvider.d.ts +1 -1
  216. package/dist/providers/DocumentClassProvider.d.ts.map +1 -1
  217. package/dist/providers/index.js +6 -6
  218. package/dist/routes/account/notifications/NotificationsPage.d.ts +1 -1
  219. package/dist/routes/account/notifications/NotificationsPage.d.ts.map +1 -1
  220. package/dist/routes/account/orders/OrderSinglePage.d.ts +1 -1
  221. package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -1
  222. package/dist/routes/account/orders/OrdersPage.d.ts +1 -1
  223. package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -1
  224. package/dist/routes/account/orders.js +3 -3
  225. package/dist/routes/account/profile/ProfilePage.d.ts +1 -1
  226. package/dist/routes/account/profile/ProfilePage.d.ts.map +1 -1
  227. package/dist/routes/account/settings/SettingsPage.d.ts +1 -1
  228. package/dist/routes/account/settings/SettingsPage.d.ts.map +1 -1
  229. package/dist/routes/account/wallet/WalletPage.d.ts +1 -1
  230. package/dist/routes/account/wallet/WalletPage.d.ts.map +1 -1
  231. package/dist/routes/account/wishlist/WishlistPage.d.ts +1 -1
  232. package/dist/routes/account/wishlist/WishlistPage.d.ts.map +1 -1
  233. package/dist/routes/account.js +11 -11
  234. package/dist/routes/blog/BlogAuthorPage.d.ts +1 -1
  235. package/dist/routes/blog/BlogAuthorPage.d.ts.map +1 -1
  236. package/dist/routes/blog/BlogCategoryPage.d.ts +1 -1
  237. package/dist/routes/blog/BlogCategoryPage.d.ts.map +1 -1
  238. package/dist/routes/blog/BlogPage.d.ts +1 -1
  239. package/dist/routes/blog/BlogPage.d.ts.map +1 -1
  240. package/dist/routes/blog/BlogSinglePage.d.ts +1 -1
  241. package/dist/routes/blog/BlogSinglePage.d.ts.map +1 -1
  242. package/dist/routes/blog/BlogTagPage.d.ts +1 -1
  243. package/dist/routes/blog/BlogTagPage.d.ts.map +1 -1
  244. package/dist/routes/blog/components.d.ts +3 -3
  245. package/dist/routes/blog/components.d.ts.map +1 -1
  246. package/dist/routes/blog.js +7 -7
  247. package/dist/routes/brands/BrandsPage.d.ts +1 -1
  248. package/dist/routes/brands/BrandsPage.d.ts.map +1 -1
  249. package/dist/routes/brands/index.d.ts +2 -2
  250. package/dist/routes/brands/index.d.ts.map +1 -1
  251. package/dist/routes/brands.js +3 -3
  252. package/dist/routes/cart/CartPage.d.ts +1 -1
  253. package/dist/routes/cart/CartPage.d.ts.map +1 -1
  254. package/dist/routes/cart.js +14 -14
  255. package/dist/routes/home.js +11 -11
  256. package/dist/routes/lazy.d.ts +1 -1
  257. package/dist/routes/lazy.d.ts.map +1 -1
  258. package/dist/routes/loyalty/LoyaltyPage.d.ts +1 -1
  259. package/dist/routes/loyalty/LoyaltyPage.d.ts.map +1 -1
  260. package/dist/routes/loyalty.js +3 -3
  261. package/dist/routes/not-found.d.ts +1 -1
  262. package/dist/routes/not-found.d.ts.map +1 -1
  263. package/dist/routes/page/PageSingle.d.ts +1 -1
  264. package/dist/routes/page/PageSingle.d.ts.map +1 -1
  265. package/dist/routes/page.js +3 -3
  266. package/dist/routes/product/ProductPage.d.ts +1 -1
  267. package/dist/routes/product/ProductPage.d.ts.map +1 -1
  268. package/dist/routes/product-listing/ProductListPage.d.ts +1 -1
  269. package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -1
  270. package/dist/routes/product-listing.js +11 -11
  271. package/dist/routes/product.js +9 -9
  272. package/dist/routes/testimonials/TestimonialsPage.d.ts +1 -1
  273. package/dist/routes/testimonials/TestimonialsPage.d.ts.map +1 -1
  274. package/dist/routes/testimonials.js +1 -1
  275. package/dist/routes/thank-you/ThankYouPage.d.ts +1 -1
  276. package/dist/routes/thank-you/ThankYouPage.d.ts.map +1 -1
  277. package/dist/routes/thank-you.js +3 -3
  278. package/dist/skeleton.js +11 -11
  279. package/dist/tanstack/navigation.d.ts +2 -2
  280. package/dist/tanstack/navigation.d.ts.map +1 -1
  281. package/dist/tanstack/router.d.ts +1 -1
  282. package/dist/tanstack/router.d.ts.map +1 -1
  283. package/dist/tanstack.js +5 -5
  284. package/package.json +23 -23
  285. package/dist/chunk-D2LY5L4Z.js.map +0 -1
  286. package/dist/chunk-E3UU6BXX.js +0 -14
@@ -1,4 +1,4 @@
1
- import { LazyCurrencySymbol } from './chunk-2XVLUW4F.js';
1
+ import { LazyCurrencySymbol } from './chunk-DA43QUYK.js';
2
2
  import './chunk-AXW67SY7.js';
3
3
  import './chunk-BYMOPN2S.js';
4
4
  import './chunk-DGUM43GV.js';
@@ -299,5 +299,5 @@ function AddToCartForm({
299
299
  }
300
300
 
301
301
  export { AddToCartForm };
302
- //# sourceMappingURL=AddToCartForm-GQMQI2QS.js.map
303
- //# sourceMappingURL=AddToCartForm-GQMQI2QS.js.map
302
+ //# sourceMappingURL=AddToCartForm-5P2QQGOG.js.map
303
+ //# sourceMappingURL=AddToCartForm-5P2QQGOG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/product/AddToCartForm.tsx"],"names":["SallaProductOptions"],"mappings":";;;;;;;;;;;;;;;;;AA0BA,IAAM,YAAA,GAAe,CAAC,CAAA,KAAuB;AAC3C,EAAA,CAAA,CAAE,cAAA,EAAe;AACjB,EAAA,MAAA,CAAO,KAAA,EAAO,IAAA,CAAK,QAAA,CAAS,cAAA,EAAgB,CAAC,CAAA;AAC/C,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAAwC;AAC5D,EAAA,MAAM,OAAO,CAAA,CAAE,aAAA;AACf,EAAA,IAAI,IAAA,CAAK,gBAAe,EAAG;AACzB,IAAA,MAAA,CAAO,OAAO,OAAA,EAAS,QAAA,CAAS,IAAI,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,EACpD;AACF,CAAA;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,OAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAwB,IAAI,CAAA;AAGxE,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,EAAA,KACC,KAAK,EAAA,EAAI,cAAA,GAAiB,QAAQ,OAAkB,CAAA;AAAA,IACtD,CAAC,QAAQ,OAAO;AAAA,GAClB;AAOA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,IAAA,KAAA,CAAM,MAAA,EAAQ,GAAA,GAAM,SAAA,EAAW,OAAA,CAAQ,EAAE,CAAA;AACzC,IAAA,OAAA,CAAQ,QAAQ,KAAA,CAAM,OAAA,IAAW,CAAA,CAAE,QAAQ,MAAM;AAC/C,MAAA,IAAI,KAAA,kBAAuB,IAAI,CAAA;AAAA,IACjC,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,GAAQ,KAAA;AAAA,IACV,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,CAAQ,EAAE,CAAC,CAAA;AAEf,EAAA,MAAM,oBAAA,GAAuB,WAAA,CAAY,CAAC,EAAA,KAAe;AACvD,IAAA,iBAAA,CAAkB,CAAC,OAAA,KAAa,OAAA,KAAY,EAAA,GAAK,OAAO,EAAG,CAAA;AAAA,EAC7D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,qBAAA,IAAyB,OAAA,CAAQ,QAAA;AAC7D,EAAA,MAAM,oBAAA,GAAuB,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,cAAA;AACvD,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,YAAA,IAAgB,OAAA,CAAQ,eAAA;AAEvD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,mBAAA;AAAA,MACV,OAAA,EAAQ,qBAAA;AAAA,MACR,MAAA,EAAO,MAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAM,IAAA,EAAK,QAAA,EAAS,MAAK,IAAA,EAAK,KAAA,EAAO,QAAQ,EAAA,EAAI,CAAA;AAAA,QAEjD,aAAA;AAAA,QAEA,gBAAgB,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,OAAA,CAAQ,SAAS,CAAA,oBAC3D,GAAA;AAAA,UAACA,uBAAA;AAAA,UAAA;AAAA,YAGC,GAAA,EAAK,UAAA;AAAA,YACL,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAAA,YACvC,WAAW,OAAA,CAAQ;AAAA,WAAA;AAAA,UAJd,OAAA,CAAQ;AAAA,SAKf;AAAA,QAGD,OAAA,CAAQ,uCACP,GAAA,CAAC,0BAAA,EAAA,EAA2B,gBAAgB,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG,CAAA;AAAA,QAGtE,oBAAA,oBACC,IAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,8BAAA,EAChB,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,MAAA,oBACP,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,eAAA,EAAkB,OAAA,CAAQ,cAAA,GAAiB,6BAA6B,EAAE,CAAA,CAAA;AAAA,cAErF,QAAA,EAAA;AAAA,gCAAA,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,0CAAA,EACX,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,oBAAA,EAAqB,CAAA;AAAA,kCAClC,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,uBAAA,EAAyB,QAAQ,CAAA,EAAE;AAAA,iBAAA,EAC9C,CAAA;AAAA,gCACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,kBAAQ,MAAA,EAAO;AAAA;AAAA;AAAA,WAC3D;AAAA,UAED,OAAA,CAAQ,kCACP,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACb,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,0CAAA,EACX,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,oBAAA,EAAqB,CAAA;AAAA,gCAClC,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,4BAAA,EAA8B,aAAa,CAAA,EAAE;AAAA,eAAA,EACxD,CAAA;AAAA,8BACA,IAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAM,MAAA;AAAA,kBACN,KAAA,EAAM,SAAA;AAAA,kBACN,SAAA,EAAU,yBAAA;AAAA,kBACV,OAAA,EAAS,MACP,MAAA,CAAO,KAAA,EAAO,KAAA,EAAO,SAAS,kBAAA,EAAoB,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,kBAGrE,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,mCAAmC,kBAAkB,CAAA;AAAA,oCACxD,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B;AAAA;AAAA;AAAA;AAC3C,aAAA,EACF,CAAA;AAAA,gCACC,qBAAA,EAAA,EAAsB;AAAA,WAAA,EACzB;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,cAAA,wBACE,SAAA,EAAA,EAAQ,SAAA,EAAU,gCACjB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gDAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,OAAA,EAAS,QAAA,EAAA,CAAA,CAAE,4BAAA,EAA8B,aAAa,CAAA,EAAE,CAAA,EACvE,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oCAAA,EACZ,QAAA,EAAA;AAAA,cAAA,OAAA,CAAQ,YAAA,oBACP,IAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAS,MAAM,oBAAA,CAAqB,CAAA,KAAA,EAAQ,OAAA,CAAQ,EAAE,CAAA,CAAE,CAAA;AAAA,kBACxD,SAAA,EAAW,yBAAyB,cAAA,KAAmB,CAAA,KAAA,EAAQ,QAAQ,EAAE,CAAA,CAAA,GAAK,cAAc,WAAW,CAAA,CAAA;AAAA,kBAEvG,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+DAAA,EAAgE,CAAA;AAAA,wCAC5E,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA,EAAE;AAAA;AAAA;AAAA,eACxE;AAAA,cAED,QAAQ,eAAA,oBACP,IAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAS,MAAM,oBAAA,CAAqB,CAAA,KAAA,EAAQ,OAAA,CAAQ,EAAE,CAAA,CAAE,CAAA;AAAA,kBACxD,SAAA,EAAW,yBAAyB,cAAA,KAAmB,CAAA,KAAA,EAAQ,QAAQ,EAAE,CAAA,CAAA,GAAK,cAAc,WAAW,CAAA,CAAA;AAAA,kBAEvG,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,mDAAA,EAAoD,CAAA;AAAA,wCAChE,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA,EAAE;AAAA;AAAA;AAAA;AACxE,aAAA,EAEJ,CAAA;AAAA,YAEC,QAAQ,YAAA,oBACP,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,oBAAoB,cAAA,KAAmB,CAAA,KAAA,EAAQ,QAAQ,EAAE,CAAA,CAAA,GAAK,cAAc,WAAW,CAAA,CAAA;AAAA,gBAElG,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAA,GAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,yEAAA;AAAA,oBACV,WAAA,EAAa,CAAA,CAAE,kCAAA,EAAoC,wBAAwB,CAAA;AAAA,oBAC3E,IAAA,EAAK,OAAA;AAAA,oBACL,IAAA,EAAM,EAAA;AAAA,oBACN,IAAA,EAAM,EAAA;AAAA,oBACN,cAAc,OAAA,CAAQ;AAAA;AAAA,iBACvB,EACH;AAAA;AAAA,aACF;AAAA,YAGD,QAAQ,eAAA,oBACP,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,oBAAoB,cAAA,KAAmB,CAAA,KAAA,EAAQ,QAAQ,EAAE,CAAA,CAAA,GAAK,cAAc,WAAW,CAAA,CAAA;AAAA,gBAElG,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,kBAAA,GAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,MAAA,EAAO,uEAAA;AAAA,oBACP,SAAA,EAAU,yBAAA;AAAA,oBAEV,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,UAAK,SAAA,EAAU,yCAAA,EACd,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gBAAe,CAAA,EAC9B,CAAA;AAAA,0CACC,GAAA,EAAA,EAAE,SAAA,EAAU,oCACV,QAAA,EAAA,CAAA,CAAE,+BAAA,EAAiC,0BAA0B,CAAA,EAChE,CAAA;AAAA,0CACC,MAAA,EAAA,EAAK,SAAA,EAAU,0BACb,QAAA,EAAA,CAAA,CAAE,wBAAA,EAA0B,QAAQ,CAAA,EACvC;AAAA,qBAAA,EACF;AAAA;AAAA,iBACF,EACF;AAAA;AAAA;AACF,WAAA,EAEJ;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGD,WAAA;AAAA,4BAEA,SAAA,EAAA,EAAQ,SAAA,EAAU,uDACjB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,OAAA,EAAS,QAAA,EAAA,CAAA,CAAE,sBAAA,EAAwB,OAAO,CAAA,EAAE,CAAA,EAC3D,CAAA;AAAA,0BAEA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,wDAAA,EAA2D,OAAA,CAAQ,eAAA,GAAkB,WAAW,EAAE,CAAA,CAAA;AAAA,cAE7G,QAAA,EAAA;AAAA,gCAAA,IAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,CAAA,iEAAA,EAAoE,OAAA,CAAQ,UAAA,GAAa,KAAK,QAAQ,CAAA,CAAA;AAAA,oBAEjH,QAAA,EAAA;AAAA,sCAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yDAAA,EACb,QAAA,EAAA;AAAA,wBAAA,OAAA,CAAQ,UAAA;AAAA,wBAAW,GAAA;AAAA,wCAAC,GAAA,CAAC,kBAAA,EAAA,EAAe,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAU;AAAA,uBAAA,EACnE,CAAA;AAAA,sCACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,OAAA,CAAQ,aAAA;AAAA,wBAAc,GAAA;AAAA,wCAAC,GAAA,CAAC,kBAAA,EAAA,EAAe,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAU;AAAA,uBAAA,EACtE;AAAA;AAAA;AAAA,iBACF;AAAA,gCACA,IAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,CAAA,+BAAA,EAAkC,OAAA,CAAQ,UAAA,GAAa,WAAW,MAAM,CAAA,CAAA;AAAA,oBAElF,QAAA,EAAA;AAAA,sBAAA,OAAA,CAAQ,cAAA,wBACN,MAAA,EAAA,EAAK,SAAA,EAAU,wBACb,QAAA,EAAA,CAAA,CAAE,+BAAA,EAAiC,eAAe,CAAA,EACrD,CAAA;AAAA,sCAEF,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,MAAA,CAAO,OAAA,CAAQ,cAAA,IAAkB,OAAA,CAAQ,KAAK,CAAA;AAAA,wBAAG,GAAA;AAAA,wCAClD,GAAA,CAAC,kBAAA,EAAA,EAAe,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAU;AAAA,uBAAA,EAC9C;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,WACF;AAAA,0BAEA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,4EAAA,EAA+E,OAAA,CAAQ,eAAA,GAAkB,gBAAgB,QAAQ,CAAA,CAAA;AAAA,cAE3I,QAAA,EAAA,CAAA,CAAE,+BAA+B,cAAc;AAAA;AAAA;AAClD,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAEC,8BACC,GAAA,CAAC,SAAA,EAAA,EAAQ,WAAU,UAAA,EACjB,QAAA,kBAAA,GAAA,CAAC,kBAAe,QAAA,EAAU,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAK,MAAC,OAAA,EAAO,IAAA,EAAC,GAC5E,CAAA,GACE,IAAA;AAAA,wBAEJ,IAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,2DAAA,EAChB,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,kBAAA,IAAsB,OAAA,CAAQ,IAAA,KAAS,SAAA,mBAC9C,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAM,GAAA;AAAA,cACN,IAAA,EAAK,UAAA;AAAA,cACL,YAAA,EAAY,CAAA,CAAE,yBAAA,EAA2B,UAAU;AAAA;AAAA,WACrD,mBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kDAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA,EAAE,CAAA;AAAA,4BACjF,GAAA;AAAA,cAAC,kBAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAQ,YAAA,IAAgB,MAAA;AAAA,gBAC7B,KAAA,EAAO,CAAA;AAAA,gBACP,IAAA,EAAK,UAAA;AAAA,gBACL,YAAA,EAAY,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA;AAAA,gBACnD,SAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF,CAAA;AAAA,0BAGF,GAAA;AAAA,YAAC,qBAAA;AAAA,YAAA;AAAA,cACE,GAAI,OAAA,CAAQ,aAAA,GAAgB,EAAE,QAAA,EAAU,IAAA,KAAS,EAAC;AAAA,cAClD,GAAI,eAAA,GAAkB,EAAE,gBAAA,EAAkB,IAAA,KAAS,EAAC;AAAA,cACpD,GAAI,OAAA,CAAQ,mBAAA,GAAsB,EAAE,gBAAA,EAAkB,IAAA,KAAS,EAAC;AAAA,cAChE,GAAI,WAAA,GAAc,EAAE,WAAA,EAAa,IAAA,KAAS,EAAC;AAAA,cAC5C,MAAA,EACE,OAAO,OAAA,CAAQ,mBAAA,KAAwB,WACnC,OAAA,CAAQ,mBAAA,CAAoB,SAC5B,OAAA,CAAQ,mBAAA;AAAA,cAEd,SAAA,EAAU,qCAAA;AAAA,cACV,eAAe,OAAA,CAAQ,MAAA;AAAA,cACvB,aAAa,OAAA,CAAQ,IAAA;AAAA,cACrB,WAAW,OAAA,CAAQ,EAAA;AAAA,cACnB,cAAA,EAAe,KAAA;AAAA,cACf,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAM,MAAA;AAAA,cACL,GAAI,QAAQ,mBAAA,GACT;AAAA,gBACE,GAAI,QAAQ,mBAAA,CAAoB,UAAA,GAAa,EAAE,YAAA,EAAc,IAAA,KAAS,EAAC;AAAA,gBACvE,QAAA,EAAU,OAAA,CAAQ,mBAAA,CAAoB,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,gBACvD,GAAI,OAAA,CAAQ,mBAAA,CAAoB,kBAAA,GAC5B;AAAA,kBACE,mBAAmB,IAAA,CAAK,SAAA;AAAA,oBACtB,QAAQ,mBAAA,CAAoB;AAAA;AAC9B,oBAEF,EAAC;AAAA,gBACL,GAAI,QAAQ,mBAAA,CAAoB,OAAA,GAAU,EAAE,yBAAA,EAA2B,IAAA,KAAS;AAAC,kBAEnF,EAAC;AAAA,cAEJ,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA;AACX,SAAA,EACF,CAAA;AAAA,QAEC,QAAQ,QAAA,oBACP,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,MAAA;AAAA,YACV,cAAA,EAAgB,YAAA;AAAA,YAChB,WAAW,OAAA,CAAQ,EAAA;AAAA,YAClB,GAAI,OAAA,CAAQ,mBAAA,GAAsB,EAAE,gBAAA,EAAkB,IAAA,KAAS;AAAC;AAAA;AACnE;AAAA;AAAA,GAEJ;AAEJ","file":"AddToCartForm-GQMQI2QS.js","sourcesContent":["import { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaCountDown } from '@salla.sa/twilight-components-react/count-down';\nimport { SallaFileUpload } from '@salla.sa/twilight-components-react/file-upload';\nimport { SallaGifting } from '@salla.sa/twilight-components-react/gifting';\nimport { SallaMultipleBundleProduct } from '@salla.sa/twilight-components-react/multiple-bundle-product';\n// Use the eager (non-deferred) Core export: product options are an essential form\n// control, and the deferred wrapper's visibility-triggered hydration races with the\n// gallery's image layout shift and gets stuck on the skeleton, so options never appear.\nimport { SallaProductOptionsCore as SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\nimport { SallaProductSizeGuide } from '@salla.sa/twilight-components-react/product-size-guide';\nimport { SallaQuantityInput } from '@salla.sa/twilight-components-react/quantity-input';\nimport { useTranslation } from '@salla.sa/twilight-theme-engine/i18n';\nimport type { ReactNode } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport type { Product } from '../../types';\nimport { CurrencySymbol } from '../common';\n\ninterface AddToCartFormProps {\n product: Product;\n stickyAddToCart?: boolean;\n giftingIntro?: string;\n formStartSlot?: ReactNode;\n formEndSlot?: ReactNode;\n}\n\nconst handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n window.salla?.form.onSubmit('cart.addItem', e);\n};\n\nconst handleChange = (e: React.FormEvent<HTMLFormElement>) => {\n const form = e.currentTarget;\n if (form.reportValidity()) {\n window.salla?.product?.getPrice(new FormData(form));\n }\n};\n\nexport function AddToCartForm({\n product,\n stickyAddToCart,\n giftingIntro,\n formStartSlot,\n formEndSlot,\n}: AddToCartFormProps) {\n const { t } = useTranslation();\n const [activeCollapse, setActiveCollapse] = useState<string | null>(null);\n\n // stable ref: an inline arrow re-runs on every render and resets the user's selection\n const optionsRef = useCallback(\n (el: { setOptionsData?: (data: never[]) => void } | null) =>\n void el?.setOptionsData?.(product.options as never[]),\n [product.options]\n );\n\n // salla-product-options reads its `options` prop only in its constructor (no\n // @Watch), and on first load that constructor runs before sdk.init has set\n // page.id — so its getDetails(page.id) fallback fetches nothing and the options\n // never reflect. Seed page.id (=== product.id) and wait for the SDK to be ready\n // before mounting the element so its fallback resolves on first load too.\n const [optionsReady, setOptionsReady] = useState(false);\n useEffect(() => {\n const salla = window.salla;\n if (!salla) return;\n let alive = true;\n salla.config?.set?.('page.id', product.id);\n Promise.resolve(salla.onReady?.()).finally(() => {\n if (alive) setOptionsReady(true);\n });\n return () => {\n alive = false;\n };\n }, [product.id]);\n\n const handleCollapseToggle = useCallback((id: string) => {\n setActiveCollapse((current) => (current === id ? null : id));\n }, []);\n\n const hasPreorder = product.has_preorder_campaign && product.preorder;\n const hasWeightOrSizeGuide = product.weight || product.has_size_guide;\n const hasAttachments = product.can_add_note || product.can_upload_file;\n\n return (\n <form\n className=\"form product-form\"\n encType=\"multipart/form-data\"\n method=\"post\"\n onSubmit={handleSubmit}\n onChange={handleChange}\n >\n <input type=\"hidden\" name=\"id\" value={product.id} />\n\n {formStartSlot}\n\n {optionsReady && product.options && product.options.length > 0 && (\n <SallaProductOptions\n key={product.id}\n // constructor-only options parse: push data via ref on client remount\n ref={optionsRef}\n options={JSON.stringify(product.options)}\n productId={product.id}\n />\n )}\n\n {product.has_bundle_products && (\n <SallaMultipleBundleProduct bundleSections={JSON.stringify(product)} />\n )}\n\n {hasWeightOrSizeGuide && (\n <section className=\"bg-white p-5 rounded-md mb-5\">\n {product.weight && (\n <div\n className={`center-between ${product.has_size_guide ? 'pb-5 mb-5 border-b-[1px]' : ''}`}\n >\n <b className=\"form-label rtl:space-x-reverse space-x-1\">\n <i className=\"sicon-luggage-cart\"></i>\n <span>{t('pages.products.weight', 'Weight')}</span>\n </b>\n <span className=\"product-weight text-sm\">{product.weight}</span>\n </div>\n )}\n {product.has_size_guide && (\n <>\n <div className=\"center-between\">\n <b className=\"form-label rtl:space-x-reverse space-x-1\">\n <i className=\"sicon-pencil-ruler\"></i>\n <span>{t('pages.products.size_guides', 'Size Guides')}</span>\n </b>\n <SallaButton\n shape=\"link\"\n color=\"primary\"\n className=\"!p-0 text-sm with-arrow\"\n onClick={() =>\n window.salla?.event?.dispatch('size-guide::open', String(product.id))\n }\n >\n {t('pages.products.show_size_guides', 'Show Size Guides')}\n <i className=\"sicon-keyboard_arrow_left\"></i>\n </SallaButton>\n </div>\n <SallaProductSizeGuide />\n </>\n )}\n </section>\n )}\n\n {hasAttachments && (\n <section className=\"bg-white p-5 rounded-md mb-5\">\n <div className=\"sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start\">\n <div className=\"form-label\">\n <b className=\"block\">{t('pages.products.attachments', 'Attachments')}</b>\n </div>\n <div className=\"mt-1 sm:mt-0 sm:col-span-2 text-end\">\n <div className=\"flex rtl:space-x-reverse space-x-3\">\n {product.can_add_note && (\n <button\n type=\"button\"\n onClick={() => handleCollapseToggle(`note_${product.id}`)}\n className={`btn-tab btn--collapse ${activeCollapse === `note_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <i className=\"font-medium sicon-chat-conversation-alt rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align\">{t('pages.products.add_note', 'Add Note')}</span>\n </button>\n )}\n {product.can_upload_file && (\n <button\n type=\"button\"\n onClick={() => handleCollapseToggle(`file_${product.id}`)}\n className={`btn-tab btn--collapse ${activeCollapse === `file_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <i className=\"font-medium sicon-paperclip rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align\">{t('pages.products.add_file', 'Add File')}</span>\n </button>\n )}\n </div>\n\n {product.can_add_note && (\n <div\n className={`collapse-content ${activeCollapse === `note_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <div className=\"pt-4\">\n <textarea\n className=\"animated animatedfadeInDown fadeInDown form-input h-16 bg-gray-50 block\"\n placeholder={t('pages.products.notes_placeholder', 'Add your notes here...')}\n name=\"notes\"\n cols={30}\n rows={10}\n defaultValue={product.notes}\n ></textarea>\n </div>\n </div>\n )}\n\n {product.can_upload_file && (\n <div\n className={`collapse-content ${activeCollapse === `file_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <div className=\"pt-4 px-1\">\n <SallaFileUpload\n accept=\"image/png, image/jpeg, image/jpg, image/gif, video/*, application/pdf\"\n className=\"product-option-uploader\"\n >\n <div className=\"product-option-uploader-placholder\">\n <span className=\"product-option-uploader-placholder-icon\">\n <i className=\"sicon-camera\"></i>\n </span>\n <p className=\"profile-filepond-placholder-text\">\n {t('common.uploader.drag_and_drop', 'Drag and drop files here')}\n </p>\n <span className=\"filepond--label-action\">\n {t('common.uploader.browse', 'Browse')}\n </span>\n </div>\n </SallaFileUpload>\n </div>\n </div>\n )}\n </div>\n </div>\n </section>\n )}\n\n {formEndSlot}\n\n <section className=\"flex bg-white p-5 sm:pb-0 rounded-md rounded-b-none\">\n <div className=\"center-between w-full\">\n <div className=\"form-label\">\n <b className=\"block\">{t('pages.products.price', 'Price')}</b>\n </div>\n\n <div\n className={`flex whitespace-nowrap price-wrapper gap-4 items-center ${product.is_out_of_stock ? 'hidden' : ''}`}\n >\n <div\n className={`price_is_on_sale space-x-2 rtl:space-x-reverse whitespace-nowrap ${product.is_on_sale ? '' : 'hidden'}`}\n >\n <span className=\"total-price text-red-800 font-bold text-xl inline-block\">\n {product.sale_price} <CurrencySymbol currency={product.currency} />\n </span>\n <span className=\"before-price text-gray-500 line-through\">\n {product.regular_price} <CurrencySymbol currency={product.currency} />\n </span>\n </div>\n <div\n className={`starting-or-normal-price gap-4 ${product.is_on_sale ? 'hidden' : 'flex'}`}\n >\n {product.starting_price && (\n <span className=\"starting-price-title\">\n {t('pages.products.starting_price', 'Starting from')}\n </span>\n )}\n <span className=\"total-price font-bold text-xl inline-block\">\n {String(product.starting_price ?? product.price)}{' '}\n <CurrencySymbol currency={product.currency} />\n </span>\n </div>\n </div>\n\n <div\n className={`out-of-stock min-h-7 leading-7 text-base text-red-600 !opacity-50 font-bold ${product.is_out_of_stock ? 'scale-pulse' : 'hidden'}`}\n >\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n </div>\n </section>\n\n {hasPreorder ? (\n <section className=\"mt-5 p-5\">\n <SallaCountDown preOrder={JSON.stringify(product.preorder)} boxed labeled />\n </section>\n ) : null}\n\n <section className=\"sticky-product-bar bg-white p-5 rounded-md rounded-b-none\">\n {product.is_hidden_quantity || product.type === 'booking' ? (\n <input\n type=\"hidden\"\n value=\"1\"\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n />\n ) : (\n <div className=\"sticky-product-bar__quantity center-between mb-5\">\n <span className=\"form-label font-bold\">{t('pages.products.quantity', 'Quantity')}</span>\n <SallaQuantityInput\n max={product.max_quantity ?? undefined}\n value={1}\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n className=\"border-gray-200 flex justify-end\"\n />\n </div>\n )}\n\n <SallaAddProductButton\n {...(product.can_quick_buy ? { quickBuy: true } : {})}\n {...(stickyAddToCart ? { supportStickyBar: true } : {})}\n {...(product.is_require_shipping ? { requiredShipping: true } : {})}\n {...(hasPreorder ? { hasPreOrder: true } : {})}\n amount={\n typeof product.base_currency_price === 'object'\n ? product.base_currency_price.amount\n : product.base_currency_price\n }\n className=\"mt-5 w-full sticky-product-bar__btn\"\n productStatus={product.status}\n productType={product.type}\n productId={product.id}\n loaderPosition=\"end\"\n type=\"submit\"\n width=\"wide\"\n {...(product.notify_availability\n ? {\n ...(product.notify_availability.subscribed ? { isSubscribed: true } : {}),\n channels: product.notify_availability.channels.join(','),\n ...(product.notify_availability.subscribed_options\n ? {\n subscribedOptions: JSON.stringify(\n product.notify_availability.subscribed_options\n ),\n }\n : {}),\n ...(product.notify_availability.options ? { notifyOptionsAvailability: true } : {}),\n }\n : {})}\n >\n {product.add_to_cart_label}\n </SallaAddProductButton>\n </section>\n\n {product.giftable && (\n <SallaGifting\n className=\"mt-5\"\n widgetSubtitle={giftingIntro}\n productId={product.id}\n {...(product.is_require_shipping ? { physicalProducts: true } : {})}\n />\n )}\n </form>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/product/AddToCartForm.tsx"],"names":["SallaProductOptions"],"mappings":"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","file":"AddToCartForm-5P2QQGOG.js","sourcesContent":["import { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaCountDown } from '@salla.sa/twilight-components-react/count-down';\nimport { SallaFileUpload } from '@salla.sa/twilight-components-react/file-upload';\nimport { SallaGifting } from '@salla.sa/twilight-components-react/gifting';\nimport { SallaMultipleBundleProduct } from '@salla.sa/twilight-components-react/multiple-bundle-product';\n// Use the eager (non-deferred) Core export: product options are an essential form\n// control, and the deferred wrapper's visibility-triggered hydration races with the\n// gallery's image layout shift and gets stuck on the skeleton, so options never appear.\nimport { SallaProductOptionsCore as SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\nimport { SallaProductSizeGuide } from '@salla.sa/twilight-components-react/product-size-guide';\nimport { SallaQuantityInput } from '@salla.sa/twilight-components-react/quantity-input';\nimport { useTranslation } from '@salla.sa/twilight-theme-engine/i18n';\nimport type { ReactNode } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport type { Product } from '../../types';\nimport { CurrencySymbol } from '../common';\n\ninterface AddToCartFormProps {\n product: Product;\n stickyAddToCart?: boolean;\n giftingIntro?: string;\n formStartSlot?: ReactNode;\n formEndSlot?: ReactNode;\n}\n\nconst handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n window.salla?.form.onSubmit('cart.addItem', e);\n};\n\nconst handleChange = (e: React.FormEvent<HTMLFormElement>) => {\n const form = e.currentTarget;\n if (form.reportValidity()) {\n window.salla?.product?.getPrice(new FormData(form));\n }\n};\n\nexport function AddToCartForm({\n product,\n stickyAddToCart,\n giftingIntro,\n formStartSlot,\n formEndSlot,\n}: AddToCartFormProps) {\n const { t } = useTranslation();\n const [activeCollapse, setActiveCollapse] = useState<string | null>(null);\n\n // stable ref: an inline arrow re-runs on every render and resets the user's selection\n const optionsRef = useCallback(\n (el: { setOptionsData?: (data: never[]) => void } | null) =>\n void el?.setOptionsData?.(product.options as never[]),\n [product.options]\n );\n\n // salla-product-options reads its `options` prop only in its constructor (no\n // @Watch), and on first load that constructor runs before sdk.init has set\n // page.id — so its getDetails(page.id) fallback fetches nothing and the options\n // never reflect. Seed page.id (=== product.id) and wait for the SDK to be ready\n // before mounting the element so its fallback resolves on first load too.\n const [optionsReady, setOptionsReady] = useState(false);\n useEffect(() => {\n const salla = window.salla;\n if (!salla) return;\n let alive = true;\n salla.config?.set?.('page.id', product.id);\n Promise.resolve(salla.onReady?.()).finally(() => {\n if (alive) setOptionsReady(true);\n });\n return () => {\n alive = false;\n };\n }, [product.id]);\n\n const handleCollapseToggle = useCallback((id: string) => {\n setActiveCollapse((current) => (current === id ? null : id));\n }, []);\n\n const hasPreorder = product.has_preorder_campaign && product.preorder;\n const hasWeightOrSizeGuide = product.weight || product.has_size_guide;\n const hasAttachments = product.can_add_note || product.can_upload_file;\n\n return (\n <form\n className=\"form product-form\"\n encType=\"multipart/form-data\"\n method=\"post\"\n onSubmit={handleSubmit}\n onChange={handleChange}\n >\n <input type=\"hidden\" name=\"id\" value={product.id} />\n\n {formStartSlot}\n\n {optionsReady && product.options && product.options.length > 0 && (\n <SallaProductOptions\n key={product.id}\n // constructor-only options parse: push data via ref on client remount\n ref={optionsRef}\n options={JSON.stringify(product.options)}\n productId={product.id}\n />\n )}\n\n {product.has_bundle_products && (\n <SallaMultipleBundleProduct bundleSections={JSON.stringify(product)} />\n )}\n\n {hasWeightOrSizeGuide && (\n <section className=\"bg-white p-5 rounded-md mb-5\">\n {product.weight && (\n <div\n className={`center-between ${product.has_size_guide ? 'pb-5 mb-5 border-b-[1px]' : ''}`}\n >\n <b className=\"form-label rtl:space-x-reverse space-x-1\">\n <i className=\"sicon-luggage-cart\"></i>\n <span>{t('pages.products.weight', 'Weight')}</span>\n </b>\n <span className=\"product-weight text-sm\">{product.weight}</span>\n </div>\n )}\n {product.has_size_guide && (\n <>\n <div className=\"center-between\">\n <b className=\"form-label rtl:space-x-reverse space-x-1\">\n <i className=\"sicon-pencil-ruler\"></i>\n <span>{t('pages.products.size_guides', 'Size Guides')}</span>\n </b>\n <SallaButton\n shape=\"link\"\n color=\"primary\"\n className=\"!p-0 text-sm with-arrow\"\n onClick={() =>\n window.salla?.event?.dispatch('size-guide::open', String(product.id))\n }\n >\n {t('pages.products.show_size_guides', 'Show Size Guides')}\n <i className=\"sicon-keyboard_arrow_left\"></i>\n </SallaButton>\n </div>\n <SallaProductSizeGuide />\n </>\n )}\n </section>\n )}\n\n {hasAttachments && (\n <section className=\"bg-white p-5 rounded-md mb-5\">\n <div className=\"sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start\">\n <div className=\"form-label\">\n <b className=\"block\">{t('pages.products.attachments', 'Attachments')}</b>\n </div>\n <div className=\"mt-1 sm:mt-0 sm:col-span-2 text-end\">\n <div className=\"flex rtl:space-x-reverse space-x-3\">\n {product.can_add_note && (\n <button\n type=\"button\"\n onClick={() => handleCollapseToggle(`note_${product.id}`)}\n className={`btn-tab btn--collapse ${activeCollapse === `note_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <i className=\"font-medium sicon-chat-conversation-alt rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align\">{t('pages.products.add_note', 'Add Note')}</span>\n </button>\n )}\n {product.can_upload_file && (\n <button\n type=\"button\"\n onClick={() => handleCollapseToggle(`file_${product.id}`)}\n className={`btn-tab btn--collapse ${activeCollapse === `file_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <i className=\"font-medium sicon-paperclip rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align\">{t('pages.products.add_file', 'Add File')}</span>\n </button>\n )}\n </div>\n\n {product.can_add_note && (\n <div\n className={`collapse-content ${activeCollapse === `note_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <div className=\"pt-4\">\n <textarea\n className=\"animated animatedfadeInDown fadeInDown form-input h-16 bg-gray-50 block\"\n placeholder={t('pages.products.notes_placeholder', 'Add your notes here...')}\n name=\"notes\"\n cols={30}\n rows={10}\n defaultValue={product.notes}\n ></textarea>\n </div>\n </div>\n )}\n\n {product.can_upload_file && (\n <div\n className={`collapse-content ${activeCollapse === `file_${product.id}` ? 'is-opened' : 'is-closed'}`}\n >\n <div className=\"pt-4 px-1\">\n <SallaFileUpload\n accept=\"image/png, image/jpeg, image/jpg, image/gif, video/*, application/pdf\"\n className=\"product-option-uploader\"\n >\n <div className=\"product-option-uploader-placholder\">\n <span className=\"product-option-uploader-placholder-icon\">\n <i className=\"sicon-camera\"></i>\n </span>\n <p className=\"profile-filepond-placholder-text\">\n {t('common.uploader.drag_and_drop', 'Drag and drop files here')}\n </p>\n <span className=\"filepond--label-action\">\n {t('common.uploader.browse', 'Browse')}\n </span>\n </div>\n </SallaFileUpload>\n </div>\n </div>\n )}\n </div>\n </div>\n </section>\n )}\n\n {formEndSlot}\n\n <section className=\"flex bg-white p-5 sm:pb-0 rounded-md rounded-b-none\">\n <div className=\"center-between w-full\">\n <div className=\"form-label\">\n <b className=\"block\">{t('pages.products.price', 'Price')}</b>\n </div>\n\n <div\n className={`flex whitespace-nowrap price-wrapper gap-4 items-center ${product.is_out_of_stock ? 'hidden' : ''}`}\n >\n <div\n className={`price_is_on_sale space-x-2 rtl:space-x-reverse whitespace-nowrap ${product.is_on_sale ? '' : 'hidden'}`}\n >\n <span className=\"total-price text-red-800 font-bold text-xl inline-block\">\n {product.sale_price} <CurrencySymbol currency={product.currency} />\n </span>\n <span className=\"before-price text-gray-500 line-through\">\n {product.regular_price} <CurrencySymbol currency={product.currency} />\n </span>\n </div>\n <div\n className={`starting-or-normal-price gap-4 ${product.is_on_sale ? 'hidden' : 'flex'}`}\n >\n {product.starting_price && (\n <span className=\"starting-price-title\">\n {t('pages.products.starting_price', 'Starting from')}\n </span>\n )}\n <span className=\"total-price font-bold text-xl inline-block\">\n {String(product.starting_price ?? product.price)}{' '}\n <CurrencySymbol currency={product.currency} />\n </span>\n </div>\n </div>\n\n <div\n className={`out-of-stock min-h-7 leading-7 text-base text-red-600 !opacity-50 font-bold ${product.is_out_of_stock ? 'scale-pulse' : 'hidden'}`}\n >\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n </div>\n </section>\n\n {hasPreorder ? (\n <section className=\"mt-5 p-5\">\n <SallaCountDown preOrder={JSON.stringify(product.preorder)} boxed labeled />\n </section>\n ) : null}\n\n <section className=\"sticky-product-bar bg-white p-5 rounded-md rounded-b-none\">\n {product.is_hidden_quantity || product.type === 'booking' ? (\n <input\n type=\"hidden\"\n value=\"1\"\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n />\n ) : (\n <div className=\"sticky-product-bar__quantity center-between mb-5\">\n <span className=\"form-label font-bold\">{t('pages.products.quantity', 'Quantity')}</span>\n <SallaQuantityInput\n max={product.max_quantity ?? undefined}\n value={1}\n name=\"quantity\"\n aria-label={t('pages.products.quantity', 'Quantity')}\n className=\"border-gray-200 flex justify-end\"\n />\n </div>\n )}\n\n <SallaAddProductButton\n {...(product.can_quick_buy ? { quickBuy: true } : {})}\n {...(stickyAddToCart ? { supportStickyBar: true } : {})}\n {...(product.is_require_shipping ? { requiredShipping: true } : {})}\n {...(hasPreorder ? { hasPreOrder: true } : {})}\n amount={\n typeof product.base_currency_price === 'object'\n ? product.base_currency_price.amount\n : product.base_currency_price\n }\n className=\"mt-5 w-full sticky-product-bar__btn\"\n productStatus={product.status}\n productType={product.type}\n productId={product.id}\n loaderPosition=\"end\"\n type=\"submit\"\n width=\"wide\"\n {...(product.notify_availability\n ? {\n ...(product.notify_availability.subscribed ? { isSubscribed: true } : {}),\n channels: product.notify_availability.channels.join(','),\n ...(product.notify_availability.subscribed_options\n ? {\n subscribedOptions: JSON.stringify(\n product.notify_availability.subscribed_options\n ),\n }\n : {}),\n ...(product.notify_availability.options ? { notifyOptionsAvailability: true } : {}),\n }\n : {})}\n >\n {product.add_to_cart_label}\n </SallaAddProductButton>\n </section>\n\n {product.giftable && (\n <SallaGifting\n className=\"mt-5\"\n widgetSubtitle={giftingIntro}\n productId={product.id}\n {...(product.is_require_shipping ? { physicalProducts: true } : {})}\n />\n )}\n </form>\n );\n}\n"]}
@@ -1,16 +1,16 @@
1
- import { BlogListLayout, BlogArticleCard } from './chunk-MJMMVV2D.js';
2
- import { blog } from './chunk-ZBASHNPK.js';
3
- import './chunk-KJB6Z43Q.js';
4
- import './chunk-AAAYGTPY.js';
1
+ import { BlogListLayout, BlogArticleCard } from './chunk-DIKZRWOS.js';
2
+ import { blog } from './chunk-EEYZYG36.js';
3
+ import './chunk-BH6NMIAK.js';
4
+ import './chunk-UXCLRJ3Q.js';
5
5
  import './chunk-JKIRRMBU.js';
6
6
  import './chunk-2JV6WZ6O.js';
7
7
  import './chunk-VVZNW5CB.js';
8
8
  import { useLocation } from './chunk-ZBTCQZVO.js';
9
9
  import './chunk-MTONGOJD.js';
10
10
  import './chunk-C5X6CVXC.js';
11
- import './chunk-DKF6GTQ4.js';
12
- import './chunk-HNIUGQA3.js';
13
- import './chunk-D2LY5L4Z.js';
11
+ import './chunk-DFIZHPDP.js';
12
+ import './chunk-A5XHG5DY.js';
13
+ import './chunk-KOVPH7TW.js';
14
14
  import './chunk-FUH74TV3.js';
15
15
  import './chunk-WI7TR7RK.js';
16
16
  import './chunk-TP3LCGE7.js';
@@ -28,7 +28,7 @@ import './chunk-YMVLYYLU.js';
28
28
  import './chunk-RJPPO3ET.js';
29
29
  import { HookSlot } from './chunk-Q7VWURUR.js';
30
30
  import './chunk-GU2KUQVD.js';
31
- import { LazyBreadcrumb, LazyNoContent } from './chunk-2XVLUW4F.js';
31
+ import { LazyBreadcrumb, LazyNoContent } from './chunk-DA43QUYK.js';
32
32
  import './chunk-AXW67SY7.js';
33
33
  import './chunk-BYMOPN2S.js';
34
34
  import './chunk-6BZ5TKEV.js';
@@ -100,5 +100,5 @@ function BlogAuthorPage({
100
100
  }
101
101
 
102
102
  export { BlogAuthorPage };
103
- //# sourceMappingURL=BlogAuthorPage-N5UYXWUR.js.map
104
- //# sourceMappingURL=BlogAuthorPage-N5UYXWUR.js.map
103
+ //# sourceMappingURL=BlogAuthorPage-QJLGMSK3.js.map
104
+ //# sourceMappingURL=BlogAuthorPage-QJLGMSK3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/BlogAuthorPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,mBAAuD,EAAC;AAC9D,IAAM,iBAAmC,EAAC;AAEnC,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,gBAAA;AAAA,EACb,QAAA,GAAW,cAAA;AAAA,EACX;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,WAAA,EAAY;AAC5C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAsB,MAAA,EAAQ,IAAA,IAAQ,IAAI,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,YAAY,YAAY;AACrC,IAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,IAAA,MAAM,WAAA,GAAc,OAAA,EAAS,KAAA,CAAM,oBAAoB,CAAA;AACvD,IAAA,MAAM,cAAc,WAAA,GAAc,kBAAA,CAAmB,YAAY,CAAC,CAAC,IAAK,OAAA,IAAW,MAAA;AAEnF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,EAAE,MAAA,EAAQ,MAAA,CAAO,IAAA,EAAM,MAAA,EAAQ,WAAA,EAAa,CAAA;AACpF,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ,IAAA;AAE/C,IAAA,OAAO;AAAA,MACL,OAAO,MAAA,CAAO,IAAA;AAAA,MACd,IAAA,EAAM,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ;AAAA,KAC/B;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,CAAO,IAAI,CAAC,CAAA;AAEhB,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,sBACxB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,mBAAA,EAAoB,CAAA;AAAA,4BAClC,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,wBAC7E,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,iBAAA,EAAkB;AAAA,OAAA,EACnC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,oBAExB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,mBAAA,EAAoB,CAAA;AAAA,sBAEnC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAA,GAAA,CAAC,QAAG,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA,EACjD,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,QAAA;AAAA,UACP,MAAA,EAAQ,MAAA,EAAQ,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,UAChC,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAO,UAAA,GAAa,QAAA;AAAA,UAClC,SAAS,QAAA,GAAW,SAAA;AAAA,UACpB,SAAA,EAAU,aAAA;AAAA,UACV,cAAA,EAAe,sCAAA;AAAA,UACf,KAAA,sBAAQ,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,UACpF,GAAG,CAAC,GAAA,EAAK,aAAa,CAAA,CAAE,GAAA,EAAK,YAAY,GAAG,CAAA;AAAA,UAE3C,QAAA,EAAA,CAAC,KAAA,KACA,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,qBAAY,GAAA,CAAC,eAAA,EAAA,EAAiC,OAAA,EAAA,EAAZ,OAAA,CAAQ,EAAsB,CAAE;AAAA;AAAA,OAEjF;AAAA,sBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,iBAAA,EAAkB;AAAA,KAAA,EACnC;AAAA,GAAA,EACF,CAAA;AAEJ","file":"BlogAuthorPage-N5UYXWUR.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogAuthorLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogAuthorLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogAuthorPage({\n page,\n author,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogAuthorLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ author: author.name, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [author.name]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{author.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => <BlogArticleCard key={article.id} article={article} />)\n }\n </ItemsList>\n\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/BlogAuthorPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,mBAAuD,EAAC;AAC9D,IAAM,iBAAmC,EAAC;AAEnC,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,gBAAA;AAAA,EACb,QAAA,GAAW,cAAA;AAAA,EACX;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,WAAA,EAAY;AAC5C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAsB,MAAA,EAAQ,IAAA,IAAQ,IAAI,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,YAAY,YAAY;AACrC,IAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,IAAA,MAAM,WAAA,GAAc,OAAA,EAAS,KAAA,CAAM,oBAAoB,CAAA;AACvD,IAAA,MAAM,cAAc,WAAA,GAAc,kBAAA,CAAmB,YAAY,CAAC,CAAC,IAAK,OAAA,IAAW,MAAA;AAEnF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,EAAE,MAAA,EAAQ,MAAA,CAAO,IAAA,EAAM,MAAA,EAAQ,WAAA,EAAa,CAAA;AACpF,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ,IAAA;AAE/C,IAAA,OAAO;AAAA,MACL,OAAO,MAAA,CAAO,IAAA;AAAA,MACd,IAAA,EAAM,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ;AAAA,KAC/B;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,CAAO,IAAI,CAAC,CAAA;AAEhB,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,sBACxB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,mBAAA,EAAoB,CAAA;AAAA,4BAClC,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,wBAC7E,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,iBAAA,EAAkB;AAAA,OAAA,EACnC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,oBAExB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,mBAAA,EAAoB,CAAA;AAAA,sBAEnC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAA,GAAA,CAAC,QAAG,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA,EACjD,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,QAAA;AAAA,UACP,MAAA,EAAQ,MAAA,EAAQ,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,UAChC,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAO,UAAA,GAAa,QAAA;AAAA,UAClC,SAAS,QAAA,GAAW,SAAA;AAAA,UACpB,SAAA,EAAU,aAAA;AAAA,UACV,cAAA,EAAe,sCAAA;AAAA,UACf,KAAA,sBAAQ,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,UACpF,GAAG,CAAC,GAAA,EAAK,aAAa,CAAA,CAAE,GAAA,EAAK,YAAY,GAAG,CAAA;AAAA,UAE3C,QAAA,EAAA,CAAC,KAAA,KACA,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,qBAAY,GAAA,CAAC,eAAA,EAAA,EAAiC,OAAA,EAAA,EAAZ,OAAA,CAAQ,EAAsB,CAAE;AAAA;AAAA,OAEjF;AAAA,sBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,iBAAA,EAAkB;AAAA,KAAA,EACnC;AAAA,GAAA,EACF,CAAA;AAEJ","file":"BlogAuthorPage-QJLGMSK3.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogAuthorLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogAuthorLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogAuthorPage({\n page,\n author,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogAuthorLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ author: author.name, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [author.name]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{author.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => <BlogArticleCard key={article.id} article={article} />)\n }\n </ItemsList>\n\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
@@ -1,16 +1,16 @@
1
- import { BlogListLayout, BlogArticleCard } from './chunk-MJMMVV2D.js';
2
- import { blog } from './chunk-ZBASHNPK.js';
3
- import './chunk-KJB6Z43Q.js';
4
- import './chunk-AAAYGTPY.js';
1
+ import { BlogListLayout, BlogArticleCard } from './chunk-DIKZRWOS.js';
2
+ import { blog } from './chunk-EEYZYG36.js';
3
+ import './chunk-BH6NMIAK.js';
4
+ import './chunk-UXCLRJ3Q.js';
5
5
  import './chunk-JKIRRMBU.js';
6
6
  import './chunk-2JV6WZ6O.js';
7
7
  import './chunk-VVZNW5CB.js';
8
8
  import { useLocation } from './chunk-ZBTCQZVO.js';
9
9
  import './chunk-MTONGOJD.js';
10
10
  import './chunk-C5X6CVXC.js';
11
- import './chunk-DKF6GTQ4.js';
12
- import './chunk-HNIUGQA3.js';
13
- import './chunk-D2LY5L4Z.js';
11
+ import './chunk-DFIZHPDP.js';
12
+ import './chunk-A5XHG5DY.js';
13
+ import './chunk-KOVPH7TW.js';
14
14
  import './chunk-FUH74TV3.js';
15
15
  import './chunk-WI7TR7RK.js';
16
16
  import './chunk-TP3LCGE7.js';
@@ -28,7 +28,7 @@ import './chunk-YMVLYYLU.js';
28
28
  import './chunk-RJPPO3ET.js';
29
29
  import { HookSlot } from './chunk-Q7VWURUR.js';
30
30
  import './chunk-GU2KUQVD.js';
31
- import { LazyBreadcrumb, LazyNoContent } from './chunk-2XVLUW4F.js';
31
+ import { LazyBreadcrumb, LazyNoContent } from './chunk-DA43QUYK.js';
32
32
  import './chunk-AXW67SY7.js';
33
33
  import './chunk-BYMOPN2S.js';
34
34
  import './chunk-6BZ5TKEV.js';
@@ -100,5 +100,5 @@ function BlogCategoryPage({
100
100
  }
101
101
 
102
102
  export { BlogCategoryPage };
103
- //# sourceMappingURL=BlogCategoryPage-TVP7B2B5.js.map
104
- //# sourceMappingURL=BlogCategoryPage-TVP7B2B5.js.map
103
+ //# sourceMappingURL=BlogCategoryPage-H7VYN7OV.js.map
104
+ //# sourceMappingURL=BlogCategoryPage-H7VYN7OV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/BlogCategoryPage.tsx"],"names":[],"mappings":"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","file":"BlogCategoryPage-TVP7B2B5.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogCategoryLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogCategoryLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogCategoryPage({\n page,\n blogCategory,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogCategoryLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ category: blogCategory.id, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogCategory.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogCategory.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/BlogCategoryPage.tsx"],"names":[],"mappings":"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","file":"BlogCategoryPage-H7VYN7OV.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogCategoryLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogCategoryLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogCategoryPage({\n page,\n blogCategory,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogCategoryLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ category: blogCategory.id, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogCategory.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogCategory.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
@@ -1,14 +1,14 @@
1
- import { useDate } from './chunk-KJB6Z43Q.js';
2
- import './chunk-AAAYGTPY.js';
1
+ import { useDate } from './chunk-BH6NMIAK.js';
2
+ import './chunk-UXCLRJ3Q.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-VVZNW5CB.js';
6
6
  import './chunk-ZBTCQZVO.js';
7
7
  import './chunk-MTONGOJD.js';
8
8
  import './chunk-C5X6CVXC.js';
9
- import './chunk-DKF6GTQ4.js';
10
- import './chunk-HNIUGQA3.js';
11
- import './chunk-D2LY5L4Z.js';
9
+ import './chunk-DFIZHPDP.js';
10
+ import './chunk-A5XHG5DY.js';
11
+ import './chunk-KOVPH7TW.js';
12
12
  import './chunk-FUH74TV3.js';
13
13
  import './chunk-WI7TR7RK.js';
14
14
  import './chunk-TP3LCGE7.js';
@@ -26,7 +26,7 @@ import './chunk-YMVLYYLU.js';
26
26
  import './chunk-RJPPO3ET.js';
27
27
  import { HookSlot } from './chunk-Q7VWURUR.js';
28
28
  import './chunk-GU2KUQVD.js';
29
- import { LazyBreadcrumb, Image, LazyNoContent } from './chunk-2XVLUW4F.js';
29
+ import { LazyBreadcrumb, Image, LazyNoContent } from './chunk-DA43QUYK.js';
30
30
  import { Link } from './chunk-AXW67SY7.js';
31
31
  import './chunk-BYMOPN2S.js';
32
32
  import './chunk-6BZ5TKEV.js';
@@ -195,5 +195,5 @@ function BlogPage({
195
195
  }
196
196
 
197
197
  export { BlogPage };
198
- //# sourceMappingURL=BlogPage-4THEFN3C.js.map
199
- //# sourceMappingURL=BlogPage-4THEFN3C.js.map
198
+ //# sourceMappingURL=BlogPage-LWAQ6ZVO.js.map
199
+ //# sourceMappingURL=BlogPage-LWAQ6ZVO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/BlogPage.tsx"],"names":[],"mappings":"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","file":"BlogPage-4THEFN3C.js","sourcesContent":["import { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { HookSlot, useDate } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogPageProps, ArticleSummary } from './types';\nimport { Breadcrumb, NoContent, Link, Image } from '../../components/common';\n\nconst EMPTY_CATEGORIES: NonNullable<BlogPageProps['categories']> = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\nconst EMPTY_SLIDES: NonNullable<BlogPageProps['slides']> = [];\n\nexport function BlogPage({\n page,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n slides = EMPTY_SLIDES,\n}: BlogPageProps) {\n const { t } = useTranslation();\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <div className=\"center-between\">\n <Breadcrumb page={page} />\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n\n <div className=\"main-content lg:col-span-6\">\n <HookSlot name=\"blog:start\" />\n\n {slides.length > 0 && (\n <SallaSlider\n id=\"blog-home-slider\"\n type=\"blog\"\n autoPlay\n autoHeight\n showControls={false}\n pagination\n className=\"blog-slider block rounded overflow-hidden mb-2.5 lg:mb-8\"\n sliderConfig={{ watchOverflow: true }}\n >\n <div slot=\"items\">\n {slides.map((article, index) => (\n <div\n key={article.id}\n className=\"swiper-slide has-overlay blog-slider__slide h-[300px] md:h-[400px] relative bg-border-color flex justify-center\"\n >\n <Image\n className=\"object-cover h-full w-full\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"3/1\"\n priority={index === 0}\n />\n <div className=\"absolute z-10 bottom-0 rtl:right-0 ltr:left-0 p-4 pb-10 rtl:lg:pr-10 ltr:lg:pl-10 lg:pb-20\">\n <div className=\"blog-slider__content relative\">\n <div className=\"z-20 w-full md:w-5/6 lg:w-6/12 text-white\">\n <div className=\"block-slide-anime\">\n <div className=\"mb-2.5 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span className=\"whitespace-nowrap\">\n {formatDate(article.created_at)}\n </span>\n </div>\n <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:underline\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span className=\"whitespace-nowrap\">{article.author?.name}</span>\n </Link>\n </div>\n <h3 className=\"text-sm font-bold leading-normal mb-4\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n </div>\n <p className=\"line-clamp-2 block-slide-anime description\">\n {article.description}\n </p>\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </SallaSlider>\n )}\n\n {!slides.length && (\n <div className=\"sr-only lg:not-sr-only\">\n <h1 className=\"blog-category__title font-bold text-lg mb-8\">\n {t('blocks.footer.blog')}\n </h1>\n </div>\n )}\n\n {slides.length > 0 && <h1 className=\"sr-only\">{t('blocks.footer.blog')}</h1>}\n\n {articles.length > 0 ? (\n <>\n <HookSlot name=\"blog:items.start\" />\n <div className=\"grid md:grid-cols-2 gap-2.5 md:gap-8\">\n {articles.map((article) => (\n <div\n key={article.id}\n className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\"\n >\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n </Link>\n\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:text-dark\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author?.name}</span>\n </Link>\n </div>\n\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">\n {article.description}\n </p>\n\n {((article.stats?.likes ?? 0) > 0 || (article.stats?.comments ?? 0) > 0) && (\n <div className=\"post-entry__icons flex items-center gap-2.5 text-gray-500 text-sm\">\n {(article.stats?.likes ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-thumbs-up\"></i>\n {article.stats?.likes}\n </div>\n )}\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n </div>\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n <HookSlot name=\"blog:items.end\" />\n </>\n ) : (\n !slides.length && (\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n )\n )}\n\n <HookSlot name=\"blog:end\" />\n </div>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/BlogPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,mBAA6D,EAAC;AACpE,IAAM,iBAAmC,EAAC;AAC1C,IAAM,eAAqD,EAAC;AAErD,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA,UAAA,GAAa,gBAAA;AAAA,EACb,QAAA,GAAW,cAAA;AAAA,EACX,MAAA,GAAS;AACX,CAAA,EAAkB;AAChB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,OAAA,EAAQ;AAEvC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAW,MAAY,CAAA,EAC1B,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,SAAA,EAAU,SAAA,EAAU,sDAAA,EAClC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EAAE,CAAA;AAAA,wBACtE,GAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,qBACf,GAAA,CAAC,IAAA,EAAA,EAAqB,SAAA,EAAW,QAAA,CAAS,UAAA,GAAa,cAAA,GAAiB,EAAA,EACtE,8BAAC,IAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAwC,EAAA,EAAI,QAAA,CAAS,GAAA,EAClE,QAAA,EAAA,QAAA,CAAS,IAAA,EACZ,CAAA,EAAA,EAHO,QAAA,CAAS,EAIlB,CACD,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,YAAA,EAAa,CAAA;AAAA,QAE3B,MAAA,CAAO,SAAS,CAAA,oBACf,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,kBAAA;AAAA,YACH,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAQ,IAAA;AAAA,YACR,UAAA,EAAU,IAAA;AAAA,YACV,YAAA,EAAc,KAAA;AAAA,YACd,UAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAU,0DAAA;AAAA,YACV,YAAA,EAAc,EAAE,aAAA,EAAe,IAAA,EAAK;AAAA,YAEpC,QAAA,kBAAA,GAAA,CAAC,SAAI,IAAA,EAAK,OAAA,EACP,iBAAO,GAAA,CAAI,CAAC,SAAS,KAAA,qBACpB,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,iHAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,4BAAA;AAAA,sBACV,KAAK,OAAA,CAAQ,KAAA;AAAA,sBACb,KAAK,OAAA,CAAQ,IAAA;AAAA,sBACb,WAAA,EAAY,KAAA;AAAA,sBACZ,UAAU,KAAA,KAAU;AAAA;AAAA,mBACtB;AAAA,kCACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4FAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,oCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qEAAA,EACb,QAAA,EAAA;AAAA,wCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uCAAA,EAAwC,CAAA;AAAA,8CACpD,MAAA,EAAA,EAAK,SAAA,EAAU,qBACb,QAAA,EAAA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,EAChC;AAAA,yBAAA,EACF,CAAA;AAAA,wCACA,IAAA;AAAA,0BAAC,IAAA;AAAA,0BAAA;AAAA,4BACC,EAAA,EAAI,OAAA,CAAQ,MAAA,EAAQ,GAAA,IAAO,GAAA;AAAA,4BAC3B,SAAA,EAAU,mCAAA;AAAA,4BAEV,QAAA,EAAA;AAAA,8CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,8BAAA,EAA+B,CAAA;AAAA,kDAC3C,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,OAAA,CAAQ,QAAQ,IAAA,EAAK;AAAA;AAAA;AAAA;AAC5D,uBAAA,EACF,CAAA;AAAA,sCACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACvC;AAAA,qBAAA,EACF,CAAA;AAAA,oCACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EACV,kBAAQ,WAAA,EACX;AAAA,mBAAA,EACF,GACF,CAAA,EACF;AAAA;AAAA,eAAA;AAAA,cAtCK,OAAA,CAAQ;AAAA,aAwChB,CAAA,EACH;AAAA;AAAA,SACF;AAAA,QAGD,CAAC,MAAA,CAAO,MAAA,oBACP,GAAA,CAAC,SAAI,SAAA,EAAU,wBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,6CAAA,EACX,QAAA,EAAA,CAAA,CAAE,oBAAoB,GACzB,CAAA,EACF,CAAA;AAAA,QAGD,MAAA,CAAO,SAAS,CAAA,oBAAK,GAAA,CAAC,QAAG,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,CAAA,CAAE,oBAAoB,CAAA,EAAE,CAAA;AAAA,QAEtE,QAAA,CAAS,MAAA,GAAS,CAAA,mBACjB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,kBAAA,EAAmB,CAAA;AAAA,8BACjC,KAAA,EAAA,EAAI,SAAA,EAAU,wCACZ,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,qBACb,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,4JAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,IAAI,OAAA,CAAQ,GAAA;AAAA,oBACZ,SAAA,EAAU,0HAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,4BAAA;AAAA,wBACV,KAAK,OAAA,CAAQ,KAAA;AAAA,wBACb,KAAK,OAAA,CAAQ,IAAA;AAAA,wBACb,WAAA,EAAY;AAAA;AAAA;AACd;AAAA,iBACF;AAAA,gCAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,kCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mFAAA,EACb,QAAA,EAAA;AAAA,oCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uCAAA,EAAwC,CAAA;AAAA,sCACrD,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,EAAE;AAAA,qBAAA,EACxC,CAAA;AAAA,oCACA,IAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,EAAA,EAAI,OAAA,CAAQ,MAAA,EAAQ,GAAA,IAAO,GAAA;AAAA,wBAC3B,SAAA,EAAU,mCAAA;AAAA,wBAEV,QAAA,EAAA;AAAA,0CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,8BAAA,EAA+B,CAAA;AAAA,0CAC5C,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,MAAA,EAAQ,IAAA,EAAK;AAAA;AAAA;AAAA;AAC9B,mBAAA,EACF,CAAA;AAAA,kCAEA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oEAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACvC,CAAA;AAAA,kCACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EACV,kBAAQ,WAAA,EACX,CAAA;AAAA,kBAAA,CAAA,CAEG,OAAA,CAAQ,KAAA,EAAO,KAAA,IAAS,CAAA,IAAK,CAAA,IAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,QAAA,IAAY,CAAA,IAAK,CAAA,qBACpE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mEAAA,EACX,QAAA,EAAA;AAAA,oBAAA,CAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA,IAAK,qBAC7B,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,iBAAA,EAAkB,CAAA;AAAA,sBAC9B,QAAQ,KAAA,EAAO;AAAA,qBAAA,EAClB,CAAA;AAAA,oBAAA,CAEA,OAAA,CAAQ,OAAO,QAAA,IAAY,CAAA,IAAK,qBAChC,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,YAAA,EAAa,CAAA;AAAA,sBACzB,QAAQ,KAAA,EAAO;AAAA,qBAAA,EAClB;AAAA,mBAAA,EAEJ;AAAA,iBAAA,EAEJ,CAAA;AAAA,gBAEC,OAAA,CAAQ,IAAA,IAAQ,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,oBACrC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,qBACjB,IAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,IAAI,GAAA,CAAI,GAAA;AAAA,oBACR,SAAA,EAAU,uGAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,6CAAA,EAA8C,CAAA;AAAA,sCAC3D,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAAA,EAA+B,cAAI,IAAA,EAAK;AAAA;AAAA,mBAAA;AAAA,kBALnD,GAAA,CAAI;AAAA,iBAOZ,CAAA,EACH;AAAA;AAAA,aAAA;AAAA,YAnEG,OAAA,CAAQ;AAAA,WAsEhB,CAAA,EACH,CAAA;AAAA,0BACA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB;AAAA,SAAA,EAClC,CAAA,GAEA,CAAC,MAAA,CAAO,MAAA,oBACN,GAAA,CAAC,aAAA,EAAA,EAAU,IAAA,EAAK,aAAA,EAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,wBAIjF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,UAAA,EAAW;AAAA,OAAA,EAC5B;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"BlogPage-LWAQ6ZVO.js","sourcesContent":["import { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { HookSlot, useDate } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogPageProps, ArticleSummary } from './types';\nimport { Breadcrumb, NoContent, Link, Image } from '../../components/common';\n\nconst EMPTY_CATEGORIES: NonNullable<BlogPageProps['categories']> = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\nconst EMPTY_SLIDES: NonNullable<BlogPageProps['slides']> = [];\n\nexport function BlogPage({\n page,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n slides = EMPTY_SLIDES,\n}: BlogPageProps) {\n const { t } = useTranslation();\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <div className=\"center-between\">\n <Breadcrumb page={page} />\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n\n <div className=\"main-content lg:col-span-6\">\n <HookSlot name=\"blog:start\" />\n\n {slides.length > 0 && (\n <SallaSlider\n id=\"blog-home-slider\"\n type=\"blog\"\n autoPlay\n autoHeight\n showControls={false}\n pagination\n className=\"blog-slider block rounded overflow-hidden mb-2.5 lg:mb-8\"\n sliderConfig={{ watchOverflow: true }}\n >\n <div slot=\"items\">\n {slides.map((article, index) => (\n <div\n key={article.id}\n className=\"swiper-slide has-overlay blog-slider__slide h-[300px] md:h-[400px] relative bg-border-color flex justify-center\"\n >\n <Image\n className=\"object-cover h-full w-full\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"3/1\"\n priority={index === 0}\n />\n <div className=\"absolute z-10 bottom-0 rtl:right-0 ltr:left-0 p-4 pb-10 rtl:lg:pr-10 ltr:lg:pl-10 lg:pb-20\">\n <div className=\"blog-slider__content relative\">\n <div className=\"z-20 w-full md:w-5/6 lg:w-6/12 text-white\">\n <div className=\"block-slide-anime\">\n <div className=\"mb-2.5 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span className=\"whitespace-nowrap\">\n {formatDate(article.created_at)}\n </span>\n </div>\n <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:underline\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span className=\"whitespace-nowrap\">{article.author?.name}</span>\n </Link>\n </div>\n <h3 className=\"text-sm font-bold leading-normal mb-4\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n </div>\n <p className=\"line-clamp-2 block-slide-anime description\">\n {article.description}\n </p>\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </SallaSlider>\n )}\n\n {!slides.length && (\n <div className=\"sr-only lg:not-sr-only\">\n <h1 className=\"blog-category__title font-bold text-lg mb-8\">\n {t('blocks.footer.blog')}\n </h1>\n </div>\n )}\n\n {slides.length > 0 && <h1 className=\"sr-only\">{t('blocks.footer.blog')}</h1>}\n\n {articles.length > 0 ? (\n <>\n <HookSlot name=\"blog:items.start\" />\n <div className=\"grid md:grid-cols-2 gap-2.5 md:gap-8\">\n {articles.map((article) => (\n <div\n key={article.id}\n className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\"\n >\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n </Link>\n\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:text-dark\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author?.name}</span>\n </Link>\n </div>\n\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">\n {article.description}\n </p>\n\n {((article.stats?.likes ?? 0) > 0 || (article.stats?.comments ?? 0) > 0) && (\n <div className=\"post-entry__icons flex items-center gap-2.5 text-gray-500 text-sm\">\n {(article.stats?.likes ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-thumbs-up\"></i>\n {article.stats?.likes}\n </div>\n )}\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n </div>\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n <HookSlot name=\"blog:items.end\" />\n </>\n ) : (\n !slides.length && (\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n )\n )}\n\n <HookSlot name=\"blog:end\" />\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -1,14 +1,14 @@
1
- import { useDate } from './chunk-KJB6Z43Q.js';
2
- import './chunk-AAAYGTPY.js';
1
+ import { useDate } from './chunk-BH6NMIAK.js';
2
+ import './chunk-UXCLRJ3Q.js';
3
3
  import './chunk-JKIRRMBU.js';
4
4
  import './chunk-2JV6WZ6O.js';
5
5
  import './chunk-VVZNW5CB.js';
6
6
  import './chunk-ZBTCQZVO.js';
7
7
  import './chunk-MTONGOJD.js';
8
8
  import './chunk-C5X6CVXC.js';
9
- import './chunk-DKF6GTQ4.js';
10
- import './chunk-HNIUGQA3.js';
11
- import './chunk-D2LY5L4Z.js';
9
+ import './chunk-DFIZHPDP.js';
10
+ import './chunk-A5XHG5DY.js';
11
+ import './chunk-KOVPH7TW.js';
12
12
  import './chunk-FUH74TV3.js';
13
13
  import './chunk-WI7TR7RK.js';
14
14
  import './chunk-TP3LCGE7.js';
@@ -26,7 +26,7 @@ import { useComments } from './chunk-YMVLYYLU.js';
26
26
  import './chunk-RJPPO3ET.js';
27
27
  import { HookSlot } from './chunk-Q7VWURUR.js';
28
28
  import './chunk-GU2KUQVD.js';
29
- import { LazyBreadcrumb, Image } from './chunk-2XVLUW4F.js';
29
+ import { LazyBreadcrumb, Image } from './chunk-DA43QUYK.js';
30
30
  import { Link } from './chunk-AXW67SY7.js';
31
31
  import './chunk-BYMOPN2S.js';
32
32
  import './chunk-6BZ5TKEV.js';
@@ -185,5 +185,5 @@ function BlogSinglePage({ page, article, related = [] }) {
185
185
  }
186
186
 
187
187
  export { BlogSinglePage };
188
- //# sourceMappingURL=BlogSinglePage-TZQHLDT4.js.map
189
- //# sourceMappingURL=BlogSinglePage-TZQHLDT4.js.map
188
+ //# sourceMappingURL=BlogSinglePage-DMAMK26P.js.map
189
+ //# sourceMappingURL=BlogSinglePage-DMAMK26P.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/BlogSinglePage.tsx"],"names":[],"mappings":"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","file":"BlogSinglePage-TZQHLDT4.js","sourcesContent":["import { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot, useAsset, useDate } from '../../hooks';\nimport { useBlogLike } from '../../hooks/useBlogLike';\nimport { useComments } from '../../hooks/useComments';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogSinglePageProps } from './types';\nimport { Breadcrumb, Image, Link } from '../../components/common';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function BlogSinglePage({ page, article, related = [] }: BlogSinglePageProps) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const { cdn } = useAsset();\n const { format: formatDate } = useDate();\n const { active, count, toggle, loading } = useBlogLike(\n Number(article.id) || 0,\n article.stats?.likes ?? 0\n );\n const { commentsKey } = useComments();\n\n return (\n <div key={article.id} className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <div className=\"md:flex items-start\">\n <div className=\"main-content blog-category md:w-96 flex-1 bg-white lg:p-8 rounded-md mb-10 md:mb-0\">\n <HookSlot name=\"blog:single.start\" />\n\n <h1 className=\"font-bold text-3xl mb-5 leading-10\">{article.name}</h1>\n\n <div className=\"mb-10 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n <Link to={article.author?.url || '#'} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author?.name}</span>\n </Link>\n </div>\n\n {article.image && (\n <Image\n src={article.image}\n alt={article.name}\n className=\"h-80 mb-10 w-full rounded-md\"\n aspectRatio=\"16/9\"\n priority\n noWrapper\n />\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <div className=\"flex items-center gap-2.5 text-gray-500 text-base mb-2\">\n <button\n type=\"button\"\n id=\"blog-like\"\n data-blog-id={article.id}\n className={`flex items-center gap-1 transition-colors ${active ? 'text-primary font-semibold liked' : ''}`}\n onClick={toggle}\n disabled={loading}\n >\n {loading ? (\n <span className=\"loader loader--small\"></span>\n ) : (\n <i className={`sicon-thumbs-up ${active ? 'text-primary' : ''}`}></i>\n )}\n <span>{count}</span>\n </button>\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat text-primary\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n\n <article\n className=\"leading-7 text-sm mb-10\"\n dangerouslySetInnerHTML={{ __html: article.description?.replace(/&nbsp;/g, ' ') || '' }}\n />\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <SallaComments\n key={commentsKey}\n itemId={Number(article.id) || 0}\n type={'blog' as any}\n />\n )}\n\n <HookSlot name=\"blog:single.end\" />\n </div>\n\n <aside\n aria-label=\"Sidebar\"\n className=\"sticky shrink-0 top-24 md:w-96 rtl:lg:mr-8 ltr:lg:ml-8 pb-11\"\n >\n {related.length > 0 && (\n <>\n <h2 className=\"font-bold mb-3\">{t('pages.blog_articles.related')}</h2>\n\n <HookSlot name=\"blog:single.related.start\" />\n\n {related.map((relatedArticle) => (\n <div\n key={relatedArticle.id}\n className=\"mt-5 flex items-center bg-white p-5 rounded-md\"\n >\n <div className=\"shrink-0\">\n <Link\n to={relatedArticle.url}\n className=\"bg-border-color h-24 w-24 rounded-md overflow-hidden flex items-center justify-center\"\n >\n <span className=\"sr-only\">{relatedArticle.name}</span>\n {relatedArticle.image ? (\n <Image\n className=\"h-full w-full object-cover\"\n src={relatedArticle.image}\n alt={relatedArticle.name}\n aspectRatio=\"1/1\"\n />\n ) : (\n <Image\n className=\"sm:h-full w-10 object-contain opacity-60\"\n src={cdn('/images/placeholder.png')}\n alt=\"post image\"\n />\n )}\n </Link>\n </div>\n <div className=\"rtl:mr-3 ltr:ml-3\">\n <div className=\"flex items-center text-sm text-gray-500 mb-2\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1 rtl:pl-px ltr:pr-px\"></i>\n <time>{formatDate(relatedArticle.created_at)}</time>\n </div>\n <h3 className=\"text-sm font-bold text-gray-800 leading-6\">\n <Link to={relatedArticle.url} className=\"hover:underline\">\n {relatedArticle.name}\n </Link>\n </h3>\n </div>\n </div>\n ))}\n\n <HookSlot name=\"blog:single.related.end\" />\n </>\n )}\n </aside>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/BlogSinglePage.tsx"],"names":[],"mappings":"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","file":"BlogSinglePage-DMAMK26P.js","sourcesContent":["import { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot, useAsset, useDate } from '../../hooks';\nimport { useBlogLike } from '../../hooks/useBlogLike';\nimport { useComments } from '../../hooks/useComments';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogSinglePageProps } from './types';\nimport { Breadcrumb, Image, Link } from '../../components/common';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function BlogSinglePage({ page, article, related = [] }: BlogSinglePageProps) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const { cdn } = useAsset();\n const { format: formatDate } = useDate();\n const { active, count, toggle, loading } = useBlogLike(\n Number(article.id) || 0,\n article.stats?.likes ?? 0\n );\n const { commentsKey } = useComments();\n\n return (\n <div key={article.id} className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <div className=\"md:flex items-start\">\n <div className=\"main-content blog-category md:w-96 flex-1 bg-white lg:p-8 rounded-md mb-10 md:mb-0\">\n <HookSlot name=\"blog:single.start\" />\n\n <h1 className=\"font-bold text-3xl mb-5 leading-10\">{article.name}</h1>\n\n <div className=\"mb-10 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n <Link to={article.author?.url || '#'} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author?.name}</span>\n </Link>\n </div>\n\n {article.image && (\n <Image\n src={article.image}\n alt={article.name}\n className=\"h-80 mb-10 w-full rounded-md\"\n aspectRatio=\"16/9\"\n priority\n noWrapper\n />\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <div className=\"flex items-center gap-2.5 text-gray-500 text-base mb-2\">\n <button\n type=\"button\"\n id=\"blog-like\"\n data-blog-id={article.id}\n className={`flex items-center gap-1 transition-colors ${active ? 'text-primary font-semibold liked' : ''}`}\n onClick={toggle}\n disabled={loading}\n >\n {loading ? (\n <span className=\"loader loader--small\"></span>\n ) : (\n <i className={`sicon-thumbs-up ${active ? 'text-primary' : ''}`}></i>\n )}\n <span>{count}</span>\n </button>\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat text-primary\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n\n <article\n className=\"leading-7 text-sm mb-10\"\n dangerouslySetInnerHTML={{ __html: article.description?.replace(/&nbsp;/g, ' ') || '' }}\n />\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <SallaComments\n key={commentsKey}\n itemId={Number(article.id) || 0}\n type={'blog' as any}\n />\n )}\n\n <HookSlot name=\"blog:single.end\" />\n </div>\n\n <aside\n aria-label=\"Sidebar\"\n className=\"sticky shrink-0 top-24 md:w-96 rtl:lg:mr-8 ltr:lg:ml-8 pb-11\"\n >\n {related.length > 0 && (\n <>\n <h2 className=\"font-bold mb-3\">{t('pages.blog_articles.related')}</h2>\n\n <HookSlot name=\"blog:single.related.start\" />\n\n {related.map((relatedArticle) => (\n <div\n key={relatedArticle.id}\n className=\"mt-5 flex items-center bg-white p-5 rounded-md\"\n >\n <div className=\"shrink-0\">\n <Link\n to={relatedArticle.url}\n className=\"bg-border-color h-24 w-24 rounded-md overflow-hidden flex items-center justify-center\"\n >\n <span className=\"sr-only\">{relatedArticle.name}</span>\n {relatedArticle.image ? (\n <Image\n className=\"h-full w-full object-cover\"\n src={relatedArticle.image}\n alt={relatedArticle.name}\n aspectRatio=\"1/1\"\n />\n ) : (\n <Image\n className=\"sm:h-full w-10 object-contain opacity-60\"\n src={cdn('/images/placeholder.png')}\n alt=\"post image\"\n />\n )}\n </Link>\n </div>\n <div className=\"rtl:mr-3 ltr:ml-3\">\n <div className=\"flex items-center text-sm text-gray-500 mb-2\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1 rtl:pl-px ltr:pr-px\"></i>\n <time>{formatDate(relatedArticle.created_at)}</time>\n </div>\n <h3 className=\"text-sm font-bold text-gray-800 leading-6\">\n <Link to={relatedArticle.url} className=\"hover:underline\">\n {relatedArticle.name}\n </Link>\n </h3>\n </div>\n </div>\n ))}\n\n <HookSlot name=\"blog:single.related.end\" />\n </>\n )}\n </aside>\n </div>\n </div>\n );\n}\n"]}
@@ -1,16 +1,16 @@
1
- import { BlogListLayout, BlogArticleCard } from './chunk-MJMMVV2D.js';
2
- import { blog } from './chunk-ZBASHNPK.js';
3
- import './chunk-KJB6Z43Q.js';
4
- import './chunk-AAAYGTPY.js';
1
+ import { BlogListLayout, BlogArticleCard } from './chunk-DIKZRWOS.js';
2
+ import { blog } from './chunk-EEYZYG36.js';
3
+ import './chunk-BH6NMIAK.js';
4
+ import './chunk-UXCLRJ3Q.js';
5
5
  import './chunk-JKIRRMBU.js';
6
6
  import './chunk-2JV6WZ6O.js';
7
7
  import './chunk-VVZNW5CB.js';
8
8
  import { useLocation } from './chunk-ZBTCQZVO.js';
9
9
  import './chunk-MTONGOJD.js';
10
10
  import './chunk-C5X6CVXC.js';
11
- import './chunk-DKF6GTQ4.js';
12
- import './chunk-HNIUGQA3.js';
13
- import './chunk-D2LY5L4Z.js';
11
+ import './chunk-DFIZHPDP.js';
12
+ import './chunk-A5XHG5DY.js';
13
+ import './chunk-KOVPH7TW.js';
14
14
  import './chunk-FUH74TV3.js';
15
15
  import './chunk-WI7TR7RK.js';
16
16
  import './chunk-TP3LCGE7.js';
@@ -28,7 +28,7 @@ import './chunk-YMVLYYLU.js';
28
28
  import './chunk-RJPPO3ET.js';
29
29
  import { HookSlot } from './chunk-Q7VWURUR.js';
30
30
  import './chunk-GU2KUQVD.js';
31
- import { LazyBreadcrumb, LazyNoContent } from './chunk-2XVLUW4F.js';
31
+ import { LazyBreadcrumb, LazyNoContent } from './chunk-DA43QUYK.js';
32
32
  import './chunk-AXW67SY7.js';
33
33
  import './chunk-BYMOPN2S.js';
34
34
  import './chunk-6BZ5TKEV.js';
@@ -100,5 +100,5 @@ function BlogTagPage({
100
100
  }
101
101
 
102
102
  export { BlogTagPage };
103
- //# sourceMappingURL=BlogTagPage-TDRMBE25.js.map
104
- //# sourceMappingURL=BlogTagPage-TDRMBE25.js.map
103
+ //# sourceMappingURL=BlogTagPage-6URVT6AD.js.map
104
+ //# sourceMappingURL=BlogTagPage-6URVT6AD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/BlogTagPage.tsx"],"names":[],"mappings":"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","file":"BlogTagPage-TDRMBE25.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogTagLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogTagLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogTagPage({\n page,\n blogTag,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogTagLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ tag: String(blogTag.id), cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogTag.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogTag.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/BlogTagPage.tsx"],"names":[],"mappings":"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","file":"BlogTagPage-6URVT6AD.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogTagLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogTagLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogTagPage({\n page,\n blogTag,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogTagLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ tag: String(blogTag.id), cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogTag.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogTag.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}