@salla.sa/twilight-theme-engine 1.0.71 → 1.0.72

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 (258) hide show
  1. package/dist/{AddToCartForm-XA5X2C5K.js → AddToCartForm-5KE3LZSE.js} +5 -5
  2. package/dist/AddToCartForm-5KE3LZSE.js.map +1 -0
  3. package/dist/{BlogAuthorPage-YWR52G5S.js → BlogAuthorPage-ZE2H4IIQ.js} +22 -22
  4. package/dist/BlogAuthorPage-ZE2H4IIQ.js.map +1 -0
  5. package/dist/{BlogCategoryPage-N644DZTN.js → BlogCategoryPage-Y5GBZV2E.js} +20 -20
  6. package/dist/{BlogCategoryPage-N644DZTN.js.map → BlogCategoryPage-Y5GBZV2E.js.map} +1 -1
  7. package/dist/{BlogPage-5Z4X3Y2H.js → BlogPage-WJ46QFWA.js} +18 -18
  8. package/dist/{BlogPage-5Z4X3Y2H.js.map → BlogPage-WJ46QFWA.js.map} +1 -1
  9. package/dist/{BlogSinglePage-NSNVBBUS.js → BlogSinglePage-TWAW5FYE.js} +18 -18
  10. package/dist/{BlogSinglePage-NSNVBBUS.js.map → BlogSinglePage-TWAW5FYE.js.map} +1 -1
  11. package/dist/{BlogTagPage-GRYZRHDL.js → BlogTagPage-GDSNBEUM.js} +20 -20
  12. package/dist/{BlogTagPage-GRYZRHDL.js.map → BlogTagPage-GDSNBEUM.js.map} +1 -1
  13. package/dist/{BrandsPage-3Q4ZYOT7.js → BrandsPage-S5J5LPBJ.js} +19 -19
  14. package/dist/{BrandsPage-3Q4ZYOT7.js.map → BrandsPage-S5J5LPBJ.js.map} +1 -1
  15. package/dist/{Breadcrumb-WNSVFI75.js → Breadcrumb-JID6FMRH.js} +18 -18
  16. package/dist/{Breadcrumb-WNSVFI75.js.map → Breadcrumb-JID6FMRH.js.map} +1 -1
  17. package/dist/{CartItem-A66ZG64I.js → CartItem-65SS67V5.js} +18 -18
  18. package/dist/{CartItem-A66ZG64I.js.map → CartItem-65SS67V5.js.map} +1 -1
  19. package/dist/{CartSummary-BQC2IGQD.js → CartSummary-N4JVOPO5.js} +18 -18
  20. package/dist/{CartSummary-BQC2IGQD.js.map → CartSummary-N4JVOPO5.js.map} +1 -1
  21. package/dist/{Copyright-UNROFFOC.js → Copyright-KMWFNZEF.js} +4 -4
  22. package/dist/{Copyright-UNROFFOC.js.map → Copyright-KMWFNZEF.js.map} +1 -1
  23. package/dist/{CustomerLayout-TKS5QZMJ.js → CustomerLayout-RFFISOFD.js} +18 -18
  24. package/dist/{CustomerLayout-TKS5QZMJ.js.map → CustomerLayout-RFFISOFD.js.map} +1 -1
  25. package/dist/{Footer-2WD77PFB.js → Footer-NDSP2GVD.js} +18 -18
  26. package/dist/{Footer-2WD77PFB.js.map → Footer-NDSP2GVD.js.map} +1 -1
  27. package/dist/{Header-3BANLNYK.js → Header-524EF77Y.js} +7 -7
  28. package/dist/{Header-3BANLNYK.js.map → Header-524EF77Y.js.map} +1 -1
  29. package/dist/{ImageModal-LHFSYPSU.js → ImageModal-4FNL5UC5.js} +3 -3
  30. package/dist/{ImageModal-LHFSYPSU.js.map → ImageModal-4FNL5UC5.js.map} +1 -1
  31. package/dist/{LoyaltyPage-OAGJLFD2.js → LoyaltyPage-4BTICEVT.js} +18 -18
  32. package/dist/{LoyaltyPage-OAGJLFD2.js.map → LoyaltyPage-4BTICEVT.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-G5FB2QTQ.js → LoyaltyPointsPage-D6S4DMGL.js} +6 -6
  34. package/dist/{LoyaltyPointsPage-G5FB2QTQ.js.map → LoyaltyPointsPage-D6S4DMGL.js.map} +1 -1
  35. package/dist/{MainMenu-FFLJR2EK.js → MainMenu-KXNWUVAF.js} +6 -6
  36. package/dist/{MainMenu-FFLJR2EK.js.map → MainMenu-KXNWUVAF.js.map} +1 -1
  37. package/dist/{MasterLayout-H54QAUUY.js → MasterLayout-4PV6RJJN.js} +18 -18
  38. package/dist/{MasterLayout-H54QAUUY.js.map → MasterLayout-4PV6RJJN.js.map} +1 -1
  39. package/dist/{MobileMenu-OVAY7EFJ.js → MobileMenu-VJJ7BG56.js} +19 -19
  40. package/dist/{MobileMenu-OVAY7EFJ.js.map → MobileMenu-VJJ7BG56.js.map} +1 -1
  41. package/dist/{NotificationsPage-SEAEJEE7.js → NotificationsPage-PCWYS2WC.js} +18 -18
  42. package/dist/{NotificationsPage-SEAEJEE7.js.map → NotificationsPage-PCWYS2WC.js.map} +1 -1
  43. package/dist/{OrderSinglePage-L7OCFF7N.js → OrderSinglePage-6MS5Q5GD.js} +19 -19
  44. package/dist/{OrderSinglePage-L7OCFF7N.js.map → OrderSinglePage-6MS5Q5GD.js.map} +1 -1
  45. package/dist/{OrdersPage-IOEC2JR2.js → OrdersPage-UBGWPLRU.js} +18 -18
  46. package/dist/{OrdersPage-IOEC2JR2.js.map → OrdersPage-UBGWPLRU.js.map} +1 -1
  47. package/dist/{PageSingle-YYUIJVFP.js → PageSingle-YFIFFSON.js} +4 -4
  48. package/dist/{PageSingle-YYUIJVFP.js.map → PageSingle-YFIFFSON.js.map} +1 -1
  49. package/dist/{ProductDetails-KSB3OC25.js → ProductDetails-PYWNF2YH.js} +8 -9
  50. package/dist/ProductDetails-PYWNF2YH.js.map +1 -0
  51. package/dist/{ProfilePage-SVQRTF55.js → ProfilePage-F72TLSO5.js} +18 -18
  52. package/dist/{ProfilePage-SVQRTF55.js.map → ProfilePage-F72TLSO5.js.map} +1 -1
  53. package/dist/{SeoCartWidget-G4Y4NRMH.js → SeoCartWidget-TK2BVDFT.js} +18 -18
  54. package/dist/{SeoCartWidget-G4Y4NRMH.js.map → SeoCartWidget-TK2BVDFT.js.map} +1 -1
  55. package/dist/{SettingsPage-ZVBMBGZL.js → SettingsPage-4W5YIWPU.js} +18 -18
  56. package/dist/{SettingsPage-ZVBMBGZL.js.map → SettingsPage-4W5YIWPU.js.map} +1 -1
  57. package/dist/{StoreClosedNotification-PRXVWUV7.js → StoreClosedNotification-IV2JTVDU.js} +19 -19
  58. package/dist/{StoreClosedNotification-PRXVWUV7.js.map → StoreClosedNotification-IV2JTVDU.js.map} +1 -1
  59. package/dist/{TestimonialsPage-QENPQ2JK.js → TestimonialsPage-YOQJQ2HD.js} +4 -4
  60. package/dist/{TestimonialsPage-QENPQ2JK.js.map → TestimonialsPage-YOQJQ2HD.js.map} +1 -1
  61. package/dist/{ThankYouPage-GB6M5I4Z.js → ThankYouPage-CRSSRVY7.js} +18 -18
  62. package/dist/{ThankYouPage-GB6M5I4Z.js.map → ThankYouPage-CRSSRVY7.js.map} +1 -1
  63. package/dist/{WalletPage-IG5B33XQ.js → WalletPage-26HBCIHR.js} +19 -19
  64. package/dist/{WalletPage-IG5B33XQ.js.map → WalletPage-26HBCIHR.js.map} +1 -1
  65. package/dist/WidgetHead-BCRIXIJQ.js +7 -0
  66. package/dist/{WidgetHead-RWL7D3CT.js.map → WidgetHead-BCRIXIJQ.js.map} +1 -1
  67. package/dist/{WishlistPage-SYNLUIGO.js → WishlistPage-AZ3DGIYV.js} +20 -20
  68. package/dist/{WishlistPage-SYNLUIGO.js.map → WishlistPage-AZ3DGIYV.js.map} +1 -1
  69. package/dist/api/apps.js +2 -2
  70. package/dist/api/blog.js +12 -0
  71. package/dist/api/blog.js.map +1 -0
  72. package/dist/api/brands.js +2 -2
  73. package/dist/api/cart.js +2 -2
  74. package/dist/api/category.js +2 -2
  75. package/dist/api/client.d.ts +0 -6
  76. package/dist/api/client.d.ts.map +1 -1
  77. package/dist/api/client.js +1 -1
  78. package/dist/api/home.js +2 -2
  79. package/dist/api/loyalty.js +2 -2
  80. package/dist/api/menu.js +2 -2
  81. package/dist/api/notification.js +2 -2
  82. package/dist/api/order.js +2 -2
  83. package/dist/api/page.js +2 -2
  84. package/dist/api/product.js +2 -2
  85. package/dist/api/profile.js +1 -1
  86. package/dist/api/store.js +2 -2
  87. package/dist/api/translations.js +2 -2
  88. package/dist/api/types.d.ts +5 -0
  89. package/dist/api/types.d.ts.map +1 -1
  90. package/dist/api/user.js +2 -2
  91. package/dist/api/wallet.js +9 -0
  92. package/dist/api/wallet.js.map +1 -0
  93. package/dist/api/wishlist.js +3 -3
  94. package/dist/{chunk-7PYHB3PP.js → chunk-25FWAL3O.js} +3 -3
  95. package/dist/{chunk-7PYHB3PP.js.map → chunk-25FWAL3O.js.map} +1 -1
  96. package/dist/{chunk-USN5NHJ5.js → chunk-2ALN2BPM.js} +3 -3
  97. package/dist/{chunk-USN5NHJ5.js.map → chunk-2ALN2BPM.js.map} +1 -1
  98. package/dist/{chunk-GVJHDJW7.js → chunk-34VXOUQT.js} +10 -10
  99. package/dist/chunk-34VXOUQT.js.map +1 -0
  100. package/dist/{chunk-5HOD4BKK.js → chunk-3CYIB6BL.js} +3 -3
  101. package/dist/{chunk-5HOD4BKK.js.map → chunk-3CYIB6BL.js.map} +1 -1
  102. package/dist/{chunk-VYJDRAWX.js → chunk-3EE62REP.js} +3 -3
  103. package/dist/{chunk-VYJDRAWX.js.map → chunk-3EE62REP.js.map} +1 -1
  104. package/dist/{chunk-R2BAI6QI.js → chunk-4S3XHNUG.js} +5 -5
  105. package/dist/{chunk-R2BAI6QI.js.map → chunk-4S3XHNUG.js.map} +1 -1
  106. package/dist/{chunk-P6EOXGUE.js → chunk-52ETYODY.js} +4 -4
  107. package/dist/{chunk-P6EOXGUE.js.map → chunk-52ETYODY.js.map} +1 -1
  108. package/dist/{chunk-N3BSUMD7.js → chunk-5AFTFN72.js} +3 -3
  109. package/dist/{chunk-N3BSUMD7.js.map → chunk-5AFTFN72.js.map} +1 -1
  110. package/dist/{chunk-GTG22RZG.js → chunk-5DPR7GWH.js} +3 -3
  111. package/dist/{chunk-GTG22RZG.js.map → chunk-5DPR7GWH.js.map} +1 -1
  112. package/dist/{chunk-Q7VWURUR.js → chunk-5XDPAKF5.js} +3 -3
  113. package/dist/{chunk-Q7VWURUR.js.map → chunk-5XDPAKF5.js.map} +1 -1
  114. package/dist/chunk-7V5HOZW4.js +10 -0
  115. package/dist/{chunk-CUG6VOLM.js.map → chunk-7V5HOZW4.js.map} +1 -1
  116. package/dist/{chunk-LDMLFJGQ.js → chunk-7VYI6EF4.js} +4 -4
  117. package/dist/{chunk-LDMLFJGQ.js.map → chunk-7VYI6EF4.js.map} +1 -1
  118. package/dist/{chunk-7W7SLN5M.js → chunk-B5FDWE4U.js} +3 -3
  119. package/dist/{chunk-7W7SLN5M.js.map → chunk-B5FDWE4U.js.map} +1 -1
  120. package/dist/{chunk-BQURS54V.js → chunk-BD4V56PZ.js} +13 -13
  121. package/dist/{chunk-BQURS54V.js.map → chunk-BD4V56PZ.js.map} +1 -1
  122. package/dist/chunk-DRMTTDZU.js +14 -0
  123. package/dist/{chunk-IHZVVSPW.js.map → chunk-DRMTTDZU.js.map} +1 -1
  124. package/dist/{chunk-VX2T7JCB.js → chunk-EXBH6RGD.js} +5 -5
  125. package/dist/chunk-EXBH6RGD.js.map +1 -0
  126. package/dist/{chunk-GU2KUQVD.js → chunk-GCPEMNSU.js} +14 -3
  127. package/dist/chunk-GCPEMNSU.js.map +1 -0
  128. package/dist/{chunk-C5X6CVXC.js → chunk-HI5V5X3S.js} +4 -7
  129. package/dist/chunk-HI5V5X3S.js.map +1 -0
  130. package/dist/{chunk-ILMX45PO.js → chunk-IO77BQGI.js} +6 -6
  131. package/dist/{chunk-ILMX45PO.js.map → chunk-IO77BQGI.js.map} +1 -1
  132. package/dist/{chunk-DY5WGKDX.js → chunk-JZ7BOB4G.js} +3 -3
  133. package/dist/{chunk-DY5WGKDX.js.map → chunk-JZ7BOB4G.js.map} +1 -1
  134. package/dist/{chunk-FGROIU3Y.js → chunk-L5K7VBOH.js} +3 -3
  135. package/dist/{chunk-FGROIU3Y.js.map → chunk-L5K7VBOH.js.map} +1 -1
  136. package/dist/chunk-LOMFLRJI.js +21 -0
  137. package/dist/{chunk-DZDSTTHW.js.map → chunk-LOMFLRJI.js.map} +1 -1
  138. package/dist/{chunk-5O6PTKI5.js → chunk-MEPYG77L.js} +6 -4
  139. package/dist/chunk-MEPYG77L.js.map +1 -0
  140. package/dist/{chunk-6F5QZKIY.js → chunk-MFR2WJBJ.js} +8 -13
  141. package/dist/chunk-MFR2WJBJ.js.map +1 -0
  142. package/dist/chunk-MVT5AF2A.js +94 -0
  143. package/dist/chunk-MVT5AF2A.js.map +1 -0
  144. package/dist/{chunk-2JL4S2LE.js → chunk-N56EGFBC.js} +6 -6
  145. package/dist/{chunk-2JL4S2LE.js.map → chunk-N56EGFBC.js.map} +1 -1
  146. package/dist/{chunk-LGT3T7VF.js → chunk-NZOXKPCW.js} +3 -3
  147. package/dist/{chunk-LGT3T7VF.js.map → chunk-NZOXKPCW.js.map} +1 -1
  148. package/dist/{chunk-A32NANNC.js → chunk-OYP5CGHU.js} +3 -3
  149. package/dist/{chunk-A32NANNC.js.map → chunk-OYP5CGHU.js.map} +1 -1
  150. package/dist/{chunk-NFE2H5JE.js → chunk-RO6KBURF.js} +3 -3
  151. package/dist/{chunk-NFE2H5JE.js.map → chunk-RO6KBURF.js.map} +1 -1
  152. package/dist/{chunk-GBWCXUPD.js → chunk-RSVAPXXI.js} +39 -16
  153. package/dist/chunk-RSVAPXXI.js.map +1 -0
  154. package/dist/{chunk-MSUGP566.js → chunk-UAY6LTWB.js} +3 -3
  155. package/dist/{chunk-MSUGP566.js.map → chunk-UAY6LTWB.js.map} +1 -1
  156. package/dist/{chunk-RJPPO3ET.js → chunk-V2ZDTY6H.js} +3 -3
  157. package/dist/{chunk-RJPPO3ET.js.map → chunk-V2ZDTY6H.js.map} +1 -1
  158. package/dist/{chunk-H2DXJCJP.js → chunk-VFYT2VWC.js} +3 -3
  159. package/dist/{chunk-H2DXJCJP.js.map → chunk-VFYT2VWC.js.map} +1 -1
  160. package/dist/{chunk-IXG6BF2M.js → chunk-WNGLJJVH.js} +7 -7
  161. package/dist/{chunk-IXG6BF2M.js.map → chunk-WNGLJJVH.js.map} +1 -1
  162. package/dist/{chunk-5H4NIOTY.js → chunk-WSXRUOI2.js} +3 -3
  163. package/dist/{chunk-5H4NIOTY.js.map → chunk-WSXRUOI2.js.map} +1 -1
  164. package/dist/{chunk-7BGEGHAI.js → chunk-XVNXXF67.js} +3 -3
  165. package/dist/{chunk-7BGEGHAI.js.map → chunk-XVNXXF67.js.map} +1 -1
  166. package/dist/{chunk-HX3YKS5W.js → chunk-YA6ABQB7.js} +16 -10
  167. package/dist/chunk-YA6ABQB7.js.map +1 -0
  168. package/dist/{chunk-4YHSQSM6.js → chunk-YKFGUVF7.js} +3 -3
  169. package/dist/{chunk-4YHSQSM6.js.map → chunk-YKFGUVF7.js.map} +1 -1
  170. package/dist/{chunk-E7PYHBCX.js → chunk-YLSG4MEK.js} +3 -3
  171. package/dist/{chunk-E7PYHBCX.js.map → chunk-YLSG4MEK.js.map} +1 -1
  172. package/dist/components/cart/index.js +1 -1
  173. package/dist/components/common/Image.d.ts.map +1 -1
  174. package/dist/components/common/index.js +2 -2
  175. package/dist/components/drawer/index.js +16 -16
  176. package/dist/components/home/index.js +20 -20
  177. package/dist/components/layout/index.js +4 -4
  178. package/dist/components/modal/Modal.d.ts.map +1 -1
  179. package/dist/components/modal/index.js +2 -2
  180. package/dist/components/product/ProductDetails.d.ts.map +1 -1
  181. package/dist/components/product/index.js +17 -17
  182. package/dist/components/store/index.js +18 -18
  183. package/dist/components/toast/index.js +8 -6
  184. package/dist/components/toast/index.js.map +1 -1
  185. package/dist/components/toast/useToast.d.ts.map +1 -1
  186. package/dist/components/tracking/index.js +1 -1
  187. package/dist/contexts/CartContext.d.ts +14 -6
  188. package/dist/contexts/CartContext.d.ts.map +1 -1
  189. package/dist/contexts/index.js.map +1 -1
  190. package/dist/{document-class-7U45CO5V.js → document-class-FIAXRNEM.js} +8 -8
  191. package/dist/{document-class-7U45CO5V.js.map → document-class-FIAXRNEM.js.map} +1 -1
  192. package/dist/hooks/HookRegistry.d.ts +3 -1
  193. package/dist/hooks/HookRegistry.d.ts.map +1 -1
  194. package/dist/hooks/HookRegistry.js +1 -1
  195. package/dist/hooks/HookSlot.js +2 -2
  196. package/dist/hooks/index.js +16 -16
  197. package/dist/hooks/useGtm.js +16 -16
  198. package/dist/hooks/useHook.d.ts.map +1 -1
  199. package/dist/hooks/useHook.js +2 -2
  200. package/dist/hooks/useMoney.js +16 -16
  201. package/dist/hooks/useStore.js +16 -16
  202. package/dist/hooks/useUser.js +3 -3
  203. package/dist/hooks/useWishlist.d.ts.map +1 -1
  204. package/dist/hooks/useWishlist.js +3 -1
  205. package/dist/index.js +16 -16
  206. package/dist/{not-found-W7RACNK7.js → not-found-SCNJYKWP.js} +19 -19
  207. package/dist/{not-found-W7RACNK7.js.map → not-found-SCNJYKWP.js.map} +1 -1
  208. package/dist/providers/index.js +16 -16
  209. package/dist/routes/account/orders/index.d.ts.map +1 -1
  210. package/dist/routes/account/orders.js +3 -3
  211. package/dist/routes/account.js +12 -12
  212. package/dist/routes/blog/loader.d.ts.map +1 -1
  213. package/dist/routes/blog.js +23 -13
  214. package/dist/routes/blog.js.map +1 -1
  215. package/dist/routes/brands/types.d.ts +16 -2
  216. package/dist/routes/brands/types.d.ts.map +1 -1
  217. package/dist/routes/brands.js +3 -3
  218. package/dist/routes/cart.js +24 -24
  219. package/dist/routes/home.js +21 -21
  220. package/dist/routes/loyalty.js +4 -4
  221. package/dist/routes/page.js +3 -3
  222. package/dist/routes/product/ProductPage.d.ts.map +1 -1
  223. package/dist/routes/product-listing/loader.d.ts.map +1 -1
  224. package/dist/routes/product-listing.js +24 -23
  225. package/dist/routes/product-listing.js.map +1 -1
  226. package/dist/routes/product.js +23 -25
  227. package/dist/routes/product.js.map +1 -1
  228. package/dist/routes/testimonials.js +1 -1
  229. package/dist/routes/thank-you.js +3 -3
  230. package/dist/skeleton.js +21 -21
  231. package/dist/tanstack.js +7 -7
  232. package/dist/types/hooks.d.ts +61 -1
  233. package/dist/types/hooks.d.ts.map +1 -1
  234. package/dist/types/hooks.js +1 -1
  235. package/dist/types/index.d.ts +626 -53
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +1 -1
  238. package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
  239. package/dist/vite/index.js +11 -3
  240. package/dist/vite/index.js.map +1 -1
  241. package/package.json +9 -1
  242. package/dist/AddToCartForm-XA5X2C5K.js.map +0 -1
  243. package/dist/BlogAuthorPage-YWR52G5S.js.map +0 -1
  244. package/dist/ProductDetails-KSB3OC25.js.map +0 -1
  245. package/dist/WidgetHead-RWL7D3CT.js +0 -7
  246. package/dist/chunk-5O6PTKI5.js.map +0 -1
  247. package/dist/chunk-6F5QZKIY.js.map +0 -1
  248. package/dist/chunk-C5X6CVXC.js.map +0 -1
  249. package/dist/chunk-CUG6VOLM.js +0 -10
  250. package/dist/chunk-DZDSTTHW.js +0 -21
  251. package/dist/chunk-GBWCXUPD.js.map +0 -1
  252. package/dist/chunk-GU2KUQVD.js.map +0 -1
  253. package/dist/chunk-GVJHDJW7.js.map +0 -1
  254. package/dist/chunk-HX3YKS5W.js.map +0 -1
  255. package/dist/chunk-IHZVVSPW.js +0 -14
  256. package/dist/chunk-TP3LCGE7.js +0 -34
  257. package/dist/chunk-TP3LCGE7.js.map +0 -1
  258. package/dist/chunk-VX2T7JCB.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/modal/Modal.tsx"],"names":[],"mappings":"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","file":"chunk-YA6ABQB7.js","sourcesContent":["/**\n * Modal Component\n *\n * A controlled modal dialog with backdrop, close button, and keyboard support.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const [isOpen, setIsOpen] = useState(false);\n *\n * return (\n * <>\n * <button onClick={() => setIsOpen(true)}>Open Modal</button>\n * <Modal isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <Modal.Header>Modal Title</Modal.Header>\n * <Modal.Body>Modal content here</Modal.Body>\n * <Modal.Footer>\n * <Button onClick={() => setIsOpen(false)}>Close</Button>\n * </Modal.Footer>\n * </Modal>\n * </>\n * );\n * }\n * ```\n */\n\nimport React, { useEffect, useCallback, useRef, type ReactNode, type HTMLAttributes } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n /**\n * Close modal when clicking backdrop\n * @default true\n */\n closeOnBackdropClick?: boolean;\n /**\n * Close modal on Escape key\n * @default true\n */\n closeOnEscape?: boolean;\n /**\n * Prevent body scroll when modal is open\n * @default true\n */\n preventBodyScroll?: boolean;\n /**\n * Size of the modal\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /**\n * Position of the modal\n * @default 'center'\n */\n position?: 'center' | 'top';\n /**\n * Additional className for the modal content\n */\n className?: string;\n}\n\nconst sizeClasses = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n full: 'max-w-full mx-4',\n};\n\nconst positionClasses = {\n center: 'items-center',\n top: 'items-start pt-10',\n};\n\nexport function Modal({\n isOpen,\n onClose,\n children,\n closeOnBackdropClick = true,\n closeOnEscape = true,\n preventBodyScroll = true,\n size = 'md',\n position = 'center',\n className,\n}: ModalProps) {\n const modalRef = useRef<HTMLDivElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n // Handle Escape key\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape' && closeOnEscape) {\n onClose();\n }\n },\n [closeOnEscape, onClose]\n );\n\n // Bound to the backdrop, which covers the wrapper and is a sibling of the panel\n const handleBackdropClick = useCallback(\n (event: React.MouseEvent) => {\n if (closeOnBackdropClick && event.target === event.currentTarget) {\n onClose();\n }\n },\n [closeOnBackdropClick, onClose]\n );\n\n // Focus management and body scroll\n useEffect(() => {\n if (isOpen) {\n // Store the previously focused element\n previousActiveElement.current = document.activeElement as HTMLElement;\n\n // Focus the modal\n modalRef.current?.focus();\n\n // Prevent body scroll\n if (preventBodyScroll) {\n document.body.classList.add('menu-opened');\n }\n\n // Add keyboard listener\n document.addEventListener('keydown', handleKeyDown);\n }\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n\n // Restore body scroll\n if (preventBodyScroll) {\n document.body.classList.remove('menu-opened');\n }\n\n // Restore focus\n previousActiveElement.current?.focus();\n };\n }, [isOpen, handleKeyDown, preventBodyScroll]);\n\n if (!isOpen || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n className={`fixed inset-0 z-50 flex justify-center ${positionClasses[position]}`}\n aria-modal=\"true\"\n role=\"dialog\"\n >\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-black/50 transition-opacity\"\n role=\"presentation\"\n onClick={handleBackdropClick}\n onKeyDown={(e) => {\n if ((e.key === 'Enter' || e.key === ' ') && closeOnBackdropClick) {\n e.preventDefault();\n onClose();\n }\n }}\n />\n\n {/* Modal Content */}\n <div\n ref={modalRef}\n tabIndex={-1}\n className={`relative z-10 w-full rounded-lg bg-white shadow-xl transform transition-all duration-200 ease-out ${sizeClasses[size]} ${isOpen ? 'scale-100 opacity-100' : 'scale-95 opacity-0'} ${className || ''}`}\n >\n {children}\n </div>\n </div>,\n document.body\n );\n}\n\n// Modal Sub-components\nexport interface ModalHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n showCloseButton?: boolean;\n onClose?: () => void;\n}\n\nModal.Header = function ModalHeader({\n children,\n showCloseButton = true,\n onClose,\n className,\n ...props\n}: ModalHeaderProps) {\n return (\n <div\n className={`flex items-center justify-between border-b border-gray-200 px-6 py-4 ${className || ''}`}\n {...props}\n >\n <h2 className=\"text-lg font-semibold text-gray-900\">{children}</h2>\n {showCloseButton && onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-500\"\n >\n <span className=\"sr-only\">Close</span>\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n );\n};\n\nexport interface ModalBodyProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nModal.Body = function ModalBody({ children, className, ...props }: ModalBodyProps) {\n return (\n <div className={`px-6 py-4 ${className || ''}`} {...props}>\n {children}\n </div>\n );\n};\n\nexport interface ModalFooterProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nModal.Footer = function ModalFooter({ children, className, ...props }: ModalFooterProps) {\n return (\n <div\n className={`flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4 ${className || ''}`}\n {...props}\n >\n {children}\n </div>\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { getActiveScope, requestedThemeVersionId, api, STORE_IDENTIFIER_HEADER } from './chunk-VX2T7JCB.js';
1
+ import { getActiveScope, requestedThemeVersionId, api, STORE_IDENTIFIER_HEADER } from './chunk-EXBH6RGD.js';
2
2
  import { resolveStoreIdentifier } from './chunk-QVJDYSCT.js';
3
3
  import { getTwilightContext } from './chunk-N2S25NXP.js';
4
4
  import { queryOptions } from '@tanstack/react-query';
@@ -81,5 +81,5 @@ var store = {
81
81
  };
82
82
 
83
83
  export { store };
84
- //# sourceMappingURL=chunk-4YHSQSM6.js.map
85
- //# sourceMappingURL=chunk-4YHSQSM6.js.map
84
+ //# sourceMappingURL=chunk-YKFGUVF7.js.map
85
+ //# sourceMappingURL=chunk-YKFGUVF7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/store.ts"],"names":[],"mappings":"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","file":"chunk-4YHSQSM6.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api, getActiveScope, STORE_IDENTIFIER_HEADER } from './client';\nimport type { Store, Theme, Language } from '../types';\nimport { getTwilightContext } from '../twilight/context';\nimport { resolveStoreIdentifier } from '../utils/store-identity';\nimport { requestedThemeVersionId } from '../utils/theme-version';\n\nexport { resolveStoreIdentifier };\n\nconst DEFAULT_INCLUDE_ITEMS = [\n 'store',\n 'settings',\n 'theme',\n 'theme_settings',\n 'external_services',\n 'currencies',\n 'languages',\n 'payments',\n 'product_widgets',\n 'rating',\n 'ratings',\n 'user',\n];\n\n/** Twig's `salla.init({ user })` object; the endpoint ignores the token, so always the guest. */\nexport interface SettingsUser {\n type: 'guest' | 'user';\n id?: number | string | null;\n language_code?: string;\n currency_code?: string;\n country_code?: string;\n [key: string]: unknown;\n}\n\n/**\n * Raw API response for settings endpoint.\n * Languages come as object: { \"AR\": { code, name, ... }, \"EN\": {...} }\n */\ninterface SettingsApiResponse {\n store?: Store;\n theme?: Theme;\n languages?: Record<string, Language>;\n currencies?: Record<\n string,\n { code: string; name: string; symbol: string; amount: number; country_code: string }\n >;\n external_services?: Record<string, unknown>;\n headers?: Record<string, unknown>;\n login?: { url: string; turnstile_site_key: string };\n affiliate?: { utm_url: string; cta_enabled: boolean };\n debug?: boolean;\n trace_console?: boolean;\n policy_url?: string;\n user?: SettingsUser;\n swoole?: string[];\n}\n\n/**\n * Central settings context - single source of truth for all API data.\n * Contains everything from the settings endpoint response after processing.\n */\nexport interface StoreContext {\n store?: Store;\n theme?: Theme;\n /** Languages as array after conversion from API object format */\n languages?: Language[];\n currencies?: Record<\n string,\n { code: string; name: string; symbol: string; amount: number; country_code: string }\n >;\n external_services?: Record<string, unknown>;\n headers?: Record<string, unknown>;\n login?: { url: string; turnstile_site_key: string };\n affiliate?: { utm_url: string; cta_enabled: boolean };\n debug?: boolean;\n trace_console?: boolean; // todo:: remove it\n policy_url?: string;\n user?: SettingsUser;\n /** API paths the SDK sends with `s-store-api-version: swoole` */\n swoole?: string[];\n /**\n * The scope these settings were requested with; absent when none was. Not from\n * the API: stamped by `store.settings`, so `resolveThemeVersionId` can tell\n * whether the version they name still answers the scope that is active now.\n */\n requestedScopeId?: string;\n}\n\n/**\n * Converts languages object from API to array format.\n * API returns: { \"AR\": { code, name, ... }, \"EN\": { ... } }\n * We need: [{ code, name, ... }, { code, name, ... }]\n * todo:: return the languages as object from the APIs to avoid this\n */\nfunction languagesToArray(languages?: Record<string, Language>): Language[] | undefined {\n if (!languages) return undefined;\n // The SDK's localization modal reads `lang.iso_code` (not `code`) when a language is\n // selected — without it the switch navigates to `/undefined/...`.\n return Object.values(languages).map((lang) => ({ iso_code: lang.code, ...lang }));\n}\n\nexport const store = {\n settings: async (storeIdentifier?: string): Promise<StoreContext | null> => {\n const identifier = storeIdentifier ?? resolveStoreIdentifier();\n\n if (!identifier) {\n console.warn('[store.settings] No store identifier available');\n return null;\n }\n\n const includeParams = DEFAULT_INCLUDE_ITEMS.map((i) => `include[]=${i}`).join('&');\n const scope = getActiveScope();\n const params = scope != null ? `${includeParams}&scope=${scope.id}` : includeParams;\n\n try {\n const json = await api\n // Sent explicitly rather than left to the client's own resolution, so\n // the identifier this function checked is the identifier that travels.\n // They agree today; a caller passing one and being answered about\n // another is the failure this makes impossible rather than unlikely.\n .get(`store/settings?${params}`, {\n timeout: 5000,\n headers: { [STORE_IDENTIFIER_HEADER]: identifier },\n })\n .json<{ data?: SettingsApiResponse }>();\n\n const data = json?.data;\n if (!data) return null;\n\n // Convert languages from object to array\n const languages = languagesToArray(data.languages);\n\n return {\n store: data.store,\n theme: data.theme,\n languages,\n currencies: data.currencies,\n external_services: data.external_services,\n headers: data.headers,\n login: data.login,\n affiliate: data.affiliate,\n policy_url: data.policy_url,\n user: data.user,\n swoole: data.swoole,\n ...(scope && { requestedScopeId: scope.id }),\n };\n } catch (error) {\n console.error('[store.settings] Failed:', error);\n return null;\n }\n },\n\n queries: {\n settings: (storeIdentifier?: string) =>\n queryOptions<StoreContext | null>({\n queryKey: [\n 'store',\n 'settings',\n storeIdentifier,\n getTwilightContext().locale,\n getActiveScope(),\n // Two versions of one store's settings are two different answers, and\n // this is the query whose answer decides what every other call is\n // pinned to. `requestedThemeVersionId` rather than the resolved one:\n // the resolved value falls back to what these settings report, so it\n // is not knowable until after this query has run — the key would be\n // one thing on the server and another on the client, and the hydrated\n // page would refetch the settings it was just handed.\n requestedThemeVersionId(),\n ],\n queryFn: () => store.settings(storeIdentifier),\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/store.ts"],"names":[],"mappings":"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","file":"chunk-YKFGUVF7.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api, getActiveScope, STORE_IDENTIFIER_HEADER } from './client';\nimport type { Store, Theme, Language } from '../types';\nimport { getTwilightContext } from '../twilight/context';\nimport { resolveStoreIdentifier } from '../utils/store-identity';\nimport { requestedThemeVersionId } from '../utils/theme-version';\n\nexport { resolveStoreIdentifier };\n\nconst DEFAULT_INCLUDE_ITEMS = [\n 'store',\n 'settings',\n 'theme',\n 'theme_settings',\n 'external_services',\n 'currencies',\n 'languages',\n 'payments',\n 'product_widgets',\n 'rating',\n 'ratings',\n 'user',\n];\n\n/** Twig's `salla.init({ user })` object; the endpoint ignores the token, so always the guest. */\nexport interface SettingsUser {\n type: 'guest' | 'user';\n id?: number | string | null;\n language_code?: string;\n currency_code?: string;\n country_code?: string;\n [key: string]: unknown;\n}\n\n/**\n * Raw API response for settings endpoint.\n * Languages come as object: { \"AR\": { code, name, ... }, \"EN\": {...} }\n */\ninterface SettingsApiResponse {\n store?: Store;\n theme?: Theme;\n languages?: Record<string, Language>;\n currencies?: Record<\n string,\n { code: string; name: string; symbol: string; amount: number; country_code: string }\n >;\n external_services?: Record<string, unknown>;\n headers?: Record<string, unknown>;\n login?: { url: string; turnstile_site_key: string };\n affiliate?: { utm_url: string; cta_enabled: boolean };\n debug?: boolean;\n trace_console?: boolean;\n policy_url?: string;\n user?: SettingsUser;\n swoole?: string[];\n}\n\n/**\n * Central settings context - single source of truth for all API data.\n * Contains everything from the settings endpoint response after processing.\n */\nexport interface StoreContext {\n store?: Store;\n theme?: Theme;\n /** Languages as array after conversion from API object format */\n languages?: Language[];\n currencies?: Record<\n string,\n { code: string; name: string; symbol: string; amount: number; country_code: string }\n >;\n external_services?: Record<string, unknown>;\n headers?: Record<string, unknown>;\n login?: { url: string; turnstile_site_key: string };\n affiliate?: { utm_url: string; cta_enabled: boolean };\n debug?: boolean;\n trace_console?: boolean; // todo:: remove it\n policy_url?: string;\n user?: SettingsUser;\n /** API paths the SDK sends with `s-store-api-version: swoole` */\n swoole?: string[];\n /**\n * The scope these settings were requested with; absent when none was. Not from\n * the API: stamped by `store.settings`, so `resolveThemeVersionId` can tell\n * whether the version they name still answers the scope that is active now.\n */\n requestedScopeId?: string;\n}\n\n/**\n * Converts languages object from API to array format.\n * API returns: { \"AR\": { code, name, ... }, \"EN\": { ... } }\n * We need: [{ code, name, ... }, { code, name, ... }]\n * todo:: return the languages as object from the APIs to avoid this\n */\nfunction languagesToArray(languages?: Record<string, Language>): Language[] | undefined {\n if (!languages) return undefined;\n // The SDK's localization modal reads `lang.iso_code` (not `code`) when a language is\n // selected — without it the switch navigates to `/undefined/...`.\n return Object.values(languages).map((lang) => ({ iso_code: lang.code, ...lang }));\n}\n\nexport const store = {\n settings: async (storeIdentifier?: string): Promise<StoreContext | null> => {\n const identifier = storeIdentifier ?? resolveStoreIdentifier();\n\n if (!identifier) {\n console.warn('[store.settings] No store identifier available');\n return null;\n }\n\n const includeParams = DEFAULT_INCLUDE_ITEMS.map((i) => `include[]=${i}`).join('&');\n const scope = getActiveScope();\n const params = scope != null ? `${includeParams}&scope=${scope.id}` : includeParams;\n\n try {\n const json = await api\n // Sent explicitly rather than left to the client's own resolution, so\n // the identifier this function checked is the identifier that travels.\n // They agree today; a caller passing one and being answered about\n // another is the failure this makes impossible rather than unlikely.\n .get(`store/settings?${params}`, {\n timeout: 5000,\n headers: { [STORE_IDENTIFIER_HEADER]: identifier },\n })\n .json<{ data?: SettingsApiResponse }>();\n\n const data = json?.data;\n if (!data) return null;\n\n // Convert languages from object to array\n const languages = languagesToArray(data.languages);\n\n return {\n store: data.store,\n theme: data.theme,\n languages,\n currencies: data.currencies,\n external_services: data.external_services,\n headers: data.headers,\n login: data.login,\n affiliate: data.affiliate,\n policy_url: data.policy_url,\n user: data.user,\n swoole: data.swoole,\n ...(scope && { requestedScopeId: scope.id }),\n };\n } catch (error) {\n console.error('[store.settings] Failed:', error);\n return null;\n }\n },\n\n queries: {\n settings: (storeIdentifier?: string) =>\n queryOptions<StoreContext | null>({\n queryKey: [\n 'store',\n 'settings',\n storeIdentifier,\n getTwilightContext().locale,\n getActiveScope(),\n // Two versions of one store's settings are two different answers, and\n // this is the query whose answer decides what every other call is\n // pinned to. `requestedThemeVersionId` rather than the resolved one:\n // the resolved value falls back to what these settings report, so it\n // is not knowable until after this query has run — the key would be\n // one thing on the server and another on the client, and the hydrated\n // page would refetch the settings it was just handed.\n requestedThemeVersionId(),\n ],\n queryFn: () => store.settings(storeIdentifier),\n }),\n },\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { orThrow } from './chunk-SDIQHTDG.js';
2
- import { getActiveScope, api } from './chunk-VX2T7JCB.js';
2
+ import { getActiveScope, api } from './chunk-EXBH6RGD.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
5
5
  var category = {
@@ -26,5 +26,5 @@ var category = {
26
26
  };
27
27
 
28
28
  export { category };
29
- //# sourceMappingURL=chunk-E7PYHBCX.js.map
30
- //# sourceMappingURL=chunk-E7PYHBCX.js.map
29
+ //# sourceMappingURL=chunk-YLSG4MEK.js.map
30
+ //# sourceMappingURL=chunk-YLSG4MEK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/category.ts"],"names":[],"mappings":";;;;AAKO,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAM,OAAO,EAAA,KAAkC;AAC7C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,EAAyB;AAC5E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAa,CAAC,EAAA,KAAkC,QAAQ,QAAA,CAAS,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,EAEzE,MAAM,YAAiC;AACrC,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,YAAY,EAAE,IAAA,EAA2B;AACxE,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,EAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,YAAA,EAAc,QAAA,EAAU,EAAE,CAAA;AAAA,MACrC,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE;AAAA,KAChC,CAAA;AAAA,IAEH,IAAA,EAAM,MACJ,YAAA,CAAa;AAAA;AAAA,MAEX,QAAA,EAAU,CAAC,YAAA,EAAc,MAAA,EAAQ,EAAE,KAAA,EAAO,cAAA,IAAkB,CAAA;AAAA,MAC5D,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA;AAAK,KAC9B;AAAA;AAEP","file":"chunk-E7PYHBCX.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api, getActiveScope } from './client';\nimport type { Category } from '../types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport const category = {\n find: async (id: string): Promise<Category> => {\n const { data } = await api.get(`categories/${id}`).json<{ data: Category }>();\n return data;\n },\n\n findOrThrow: (id: string): Promise<Category> => orThrow(category.find(id)),\n\n list: async (): Promise<Category[]> => {\n const { data } = await api.get('categories').json<{ data: Category[] }>();\n return data ?? [];\n },\n\n queries: {\n detail: (id: string) =>\n queryOptions({\n queryKey: ['categories', 'detail', id],\n queryFn: () => category.find(id),\n }),\n\n list: () =>\n queryOptions({\n // Scope (branch) varies the API response — key must include it.\n queryKey: ['categories', 'list', { scope: getActiveScope() }],\n queryFn: () => category.list(),\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/category.ts"],"names":[],"mappings":";;;;AAKO,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAM,OAAO,EAAA,KAAkC;AAC7C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,EAAyB;AAC5E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAa,CAAC,EAAA,KAAkC,QAAQ,QAAA,CAAS,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,EAEzE,MAAM,YAAiC;AACrC,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,YAAY,EAAE,IAAA,EAA2B;AACxE,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,EAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,YAAA,EAAc,QAAA,EAAU,EAAE,CAAA;AAAA,MACrC,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE;AAAA,KAChC,CAAA;AAAA,IAEH,IAAA,EAAM,MACJ,YAAA,CAAa;AAAA;AAAA,MAEX,QAAA,EAAU,CAAC,YAAA,EAAc,MAAA,EAAQ,EAAE,KAAA,EAAO,cAAA,IAAkB,CAAA;AAAA,MAC5D,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA;AAAK,KAC9B;AAAA;AAEP","file":"chunk-YLSG4MEK.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api, getActiveScope } from './client';\nimport type { Category } from '../types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport const category = {\n find: async (id: string): Promise<Category> => {\n const { data } = await api.get(`categories/${id}`).json<{ data: Category }>();\n return data;\n },\n\n findOrThrow: (id: string): Promise<Category> => orThrow(category.find(id)),\n\n list: async (): Promise<Category[]> => {\n const { data } = await api.get('categories').json<{ data: Category[] }>();\n return data ?? [];\n },\n\n queries: {\n detail: (id: string) =>\n queryOptions({\n queryKey: ['categories', 'detail', id],\n queryFn: () => category.find(id),\n }),\n\n list: () =>\n queryOptions({\n // Scope (branch) varies the API response — key must include it.\n queryKey: ['categories', 'list', { scope: getActiveScope() }],\n queryFn: () => category.list(),\n }),\n },\n};\n"]}
@@ -1,4 +1,4 @@
1
- export { LazyCartItem as CartItem, LazyCartSummary as CartSummary, LazySeoCartWidget as SeoCartWidget } from '../../chunk-IHZVVSPW.js';
1
+ export { LazyCartItem as CartItem, LazyCartSummary as CartSummary, LazySeoCartWidget as SeoCartWidget } from '../../chunk-DRMTTDZU.js';
2
2
  import '../../chunk-DGUM43GV.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/common/Image.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;IACjE,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,kNAiBf,UAAU,wCA6DX,CAAC"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/common/Image.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;IACjE,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,kNAiBf,UAAU,wCAiEX,CAAC"}
@@ -1,7 +1,7 @@
1
- export { BlogSkeleton, LazyBreadcrumb as Breadcrumb, BreadcrumbSkeleton, LazyCurrencySymbol as CurrencySymbol, CustomerLayoutSkeleton, CustomerPageSkeleton, DeferredData, LazyErrorPage as ErrorPage, Image, LazyNoContent as NoContent, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, LazyRenderWhenVisible as RenderWhenVisible, SkeletonPulse, resolveDeferred } from '../../chunk-5O6PTKI5.js';
1
+ export { BlogSkeleton, LazyBreadcrumb as Breadcrumb, BreadcrumbSkeleton, LazyCurrencySymbol as CurrencySymbol, CustomerLayoutSkeleton, CustomerPageSkeleton, DeferredData, LazyErrorPage as ErrorPage, Image, LazyNoContent as NoContent, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, LazyRenderWhenVisible as RenderWhenVisible, SkeletonPulse, resolveDeferred } from '../../chunk-MEPYG77L.js';
2
2
  export { Link } from '../../chunk-AXW67SY7.js';
3
- import '../../chunk-BYMOPN2S.js';
4
3
  import '../../chunk-SKLEJJ6M.js';
4
+ import '../../chunk-BYMOPN2S.js';
5
5
  import '../../chunk-DGUM43GV.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
@@ -1,19 +1,19 @@
1
1
  export { Drawer } from '../../chunk-6TKIUG5C.js';
2
- import '../../chunk-BQURS54V.js';
3
- import '../../chunk-ILMX45PO.js';
2
+ import '../../chunk-BD4V56PZ.js';
3
+ import '../../chunk-IO77BQGI.js';
4
4
  import '../../chunk-JKIRRMBU.js';
5
5
  import '../../chunk-2JV6WZ6O.js';
6
- import '../../chunk-A32NANNC.js';
6
+ import '../../chunk-OYP5CGHU.js';
7
7
  import '../../chunk-VVZNW5CB.js';
8
8
  import '../../chunk-HBTIZWT2.js';
9
9
  import '../../chunk-SDIQHTDG.js';
10
10
  import '../../chunk-ZGHRSRDO.js';
11
11
  import '../../chunk-DIVEHHMD.js';
12
- import '../../chunk-C5X6CVXC.js';
13
- import '../../chunk-VYJDRAWX.js';
14
- import '../../chunk-FGROIU3Y.js';
15
- import '../../chunk-VX2T7JCB.js';
16
- import '../../chunk-TP3LCGE7.js';
12
+ import '../../chunk-HI5V5X3S.js';
13
+ import '../../chunk-3EE62REP.js';
14
+ import '../../chunk-L5K7VBOH.js';
15
+ import '../../chunk-EXBH6RGD.js';
16
+ import '../../chunk-MVT5AF2A.js';
17
17
  import '../../chunk-Z653O7MX.js';
18
18
  import '../../chunk-ZCH7W7DZ.js';
19
19
  import '../../chunk-OGVUFMLX.js';
@@ -21,20 +21,20 @@ import '../../chunk-JWXJPJBO.js';
21
21
  import '../../chunk-CW625T2E.js';
22
22
  import '../../chunk-7V36I5GT.js';
23
23
  import '../../chunk-BVSJPBJ6.js';
24
- import '../../chunk-GBWCXUPD.js';
24
+ import '../../chunk-RSVAPXXI.js';
25
25
  import '../../chunk-OAMIDZKW.js';
26
26
  import '../../chunk-TYNZ5B2B.js';
27
- import '../../chunk-RJPPO3ET.js';
28
- import '../../chunk-Q7VWURUR.js';
29
- import '../../chunk-GU2KUQVD.js';
30
- import '../../chunk-5O6PTKI5.js';
27
+ import '../../chunk-V2ZDTY6H.js';
28
+ import '../../chunk-5XDPAKF5.js';
29
+ import '../../chunk-GCPEMNSU.js';
30
+ import '../../chunk-MEPYG77L.js';
31
31
  import '../../chunk-AXW67SY7.js';
32
- import '../../chunk-BYMOPN2S.js';
33
32
  import '../../chunk-SKLEJJ6M.js';
33
+ import '../../chunk-BYMOPN2S.js';
34
34
  import '../../chunk-6BZ5TKEV.js';
35
35
  import '../../chunk-FZKRSGLP.js';
36
- import '../../chunk-CUG6VOLM.js';
37
- import '../../chunk-HX3YKS5W.js';
36
+ import '../../chunk-7V5HOZW4.js';
37
+ import '../../chunk-YA6ABQB7.js';
38
38
  import '../../chunk-MISI3T6V.js';
39
39
  import '../../chunk-3IHFA2X5.js';
40
40
  import '../../chunk-QVJDYSCT.js';
@@ -1,23 +1,23 @@
1
- export { BundleComponent, ComponentErrorBoundary, DefaultHomeComponents, FeaturedProductsStyle1, FeaturedProductsStyle2, FeaturedProductsStyle3, FixedBanner, FixedProducts, HomeComponentRenderer, PageBlocks, ParallaxBackground, PhotosSlider, ProductsSlider, SquarePhotos, StoreFeatures, LazyTestimonials as Testimonials, Youtube, registerHomeComponentConfig, registerHomeComponents } from '../../chunk-2JL4S2LE.js';
2
- import '../../chunk-5HOD4BKK.js';
3
- import '../../chunk-H2DXJCJP.js';
4
- import '../../chunk-GVJHDJW7.js';
1
+ export { BundleComponent, ComponentErrorBoundary, DefaultHomeComponents, FeaturedProductsStyle1, FeaturedProductsStyle2, FeaturedProductsStyle3, FixedBanner, FixedProducts, HomeComponentRenderer, PageBlocks, ParallaxBackground, PhotosSlider, ProductsSlider, SquarePhotos, StoreFeatures, LazyTestimonials as Testimonials, Youtube, registerHomeComponentConfig, registerHomeComponents } from '../../chunk-N56EGFBC.js';
2
+ import '../../chunk-3CYIB6BL.js';
3
+ import '../../chunk-VFYT2VWC.js';
4
+ import '../../chunk-34VXOUQT.js';
5
5
  import '../../chunk-342EPVXN.js';
6
- import '../../chunk-BQURS54V.js';
7
- import '../../chunk-ILMX45PO.js';
6
+ import '../../chunk-BD4V56PZ.js';
7
+ import '../../chunk-IO77BQGI.js';
8
8
  import '../../chunk-JKIRRMBU.js';
9
9
  import '../../chunk-2JV6WZ6O.js';
10
- import '../../chunk-A32NANNC.js';
10
+ import '../../chunk-OYP5CGHU.js';
11
11
  import '../../chunk-VVZNW5CB.js';
12
12
  import '../../chunk-HBTIZWT2.js';
13
13
  import '../../chunk-SDIQHTDG.js';
14
14
  import '../../chunk-ZGHRSRDO.js';
15
15
  import '../../chunk-DIVEHHMD.js';
16
- import '../../chunk-C5X6CVXC.js';
17
- import '../../chunk-VYJDRAWX.js';
18
- import '../../chunk-FGROIU3Y.js';
19
- import '../../chunk-VX2T7JCB.js';
20
- import '../../chunk-TP3LCGE7.js';
16
+ import '../../chunk-HI5V5X3S.js';
17
+ import '../../chunk-3EE62REP.js';
18
+ import '../../chunk-L5K7VBOH.js';
19
+ import '../../chunk-EXBH6RGD.js';
20
+ import '../../chunk-MVT5AF2A.js';
21
21
  import '../../chunk-Z653O7MX.js';
22
22
  import '../../chunk-ZCH7W7DZ.js';
23
23
  import '../../chunk-OGVUFMLX.js';
@@ -25,20 +25,20 @@ import '../../chunk-JWXJPJBO.js';
25
25
  import '../../chunk-CW625T2E.js';
26
26
  import '../../chunk-7V36I5GT.js';
27
27
  import '../../chunk-BVSJPBJ6.js';
28
- import '../../chunk-GBWCXUPD.js';
28
+ import '../../chunk-RSVAPXXI.js';
29
29
  import '../../chunk-OAMIDZKW.js';
30
30
  import '../../chunk-TYNZ5B2B.js';
31
- import '../../chunk-RJPPO3ET.js';
32
- import '../../chunk-Q7VWURUR.js';
33
- import '../../chunk-GU2KUQVD.js';
34
- import '../../chunk-5O6PTKI5.js';
31
+ import '../../chunk-V2ZDTY6H.js';
32
+ import '../../chunk-5XDPAKF5.js';
33
+ import '../../chunk-GCPEMNSU.js';
34
+ import '../../chunk-MEPYG77L.js';
35
35
  import '../../chunk-AXW67SY7.js';
36
- import '../../chunk-BYMOPN2S.js';
37
36
  import '../../chunk-SKLEJJ6M.js';
37
+ import '../../chunk-BYMOPN2S.js';
38
38
  import '../../chunk-6BZ5TKEV.js';
39
39
  import '../../chunk-FZKRSGLP.js';
40
- import '../../chunk-CUG6VOLM.js';
41
- import '../../chunk-HX3YKS5W.js';
40
+ import '../../chunk-7V5HOZW4.js';
41
+ import '../../chunk-YA6ABQB7.js';
42
42
  import '../../chunk-MISI3T6V.js';
43
43
  import '../../chunk-3IHFA2X5.js';
44
44
  import '../../chunk-QVJDYSCT.js';
@@ -1,7 +1,7 @@
1
- export { LazyCopyright as Copyright, LazyCustomerLayout as CustomerLayout, LazyFooter as Footer, LazyHeader as Header, LazyMasterLayout as MasterLayout, LazyWidgetHead as WidgetHead } from '../../chunk-DZDSTTHW.js';
2
- export { pushEqualHeightConfig } from '../../chunk-RJPPO3ET.js';
3
- import '../../chunk-Q7VWURUR.js';
4
- import '../../chunk-GU2KUQVD.js';
1
+ export { LazyCopyright as Copyright, LazyCustomerLayout as CustomerLayout, LazyFooter as Footer, LazyHeader as Header, LazyMasterLayout as MasterLayout, LazyWidgetHead as WidgetHead } from '../../chunk-LOMFLRJI.js';
2
+ export { pushEqualHeightConfig } from '../../chunk-V2ZDTY6H.js';
3
+ import '../../chunk-5XDPAKF5.js';
4
+ import '../../chunk-GCPEMNSU.js';
5
5
  import '../../chunk-DF6FBKDN.js';
6
6
  import '../../chunk-DGUM43GV.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,EAAkC,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGnG,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,oBAA2B,EAC3B,aAAoB,EACpB,iBAAwB,EACxB,IAAW,EACX,QAAmB,EACnB,SAAS,GACV,EAAE,UAAU,4BAsFZ;yBAhGe,KAAK;8EA+GlB,gBAAgB;kDAgCgD,cAAc;oDAYV,gBAAgB;;AAxDvF,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAoCD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAUD,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;CACrB"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,EAAkC,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGnG,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,oBAA2B,EAC3B,aAAoB,EACpB,iBAAwB,EACxB,IAAW,EACX,QAAmB,EACnB,SAAS,GACV,EAAE,UAAU,4BAyFZ;yBAnGe,KAAK;8EAkHlB,gBAAgB;kDAgCgD,cAAc;oDAYV,gBAAgB;;AAxDvF,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAoCD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAUD,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;CACrB"}
@@ -1,5 +1,5 @@
1
- export { LazyImageModal as ImageModal } from '../../chunk-CUG6VOLM.js';
2
- export { Modal } from '../../chunk-HX3YKS5W.js';
1
+ export { LazyImageModal as ImageModal } from '../../chunk-7V5HOZW4.js';
2
+ export { Modal } from '../../chunk-YA6ABQB7.js';
3
3
  import '../../chunk-DGUM43GV.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductDetails.d.ts","sourceRoot":"","sources":["../../../src/components/product/ProductDetails.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAe,EAAE,EAAE,mBAAmB,+BAiJ/E"}
1
+ {"version":3,"file":"ProductDetails.d.ts","sourceRoot":"","sources":["../../../src/components/product/ProductDetails.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAe,EAAE,EAAE,mBAAmB,+BA+I/E"}
@@ -1,20 +1,20 @@
1
- export { LazyAddToCartForm as AddToCartForm, ProductCard, LazyProductDetails as ProductDetails, ProductGallery } from '../../chunk-GVJHDJW7.js';
1
+ export { LazyAddToCartForm as AddToCartForm, ProductCard, LazyProductDetails as ProductDetails, ProductGallery } from '../../chunk-34VXOUQT.js';
2
2
  import '../../chunk-342EPVXN.js';
3
- import '../../chunk-BQURS54V.js';
4
- import '../../chunk-ILMX45PO.js';
3
+ import '../../chunk-BD4V56PZ.js';
4
+ import '../../chunk-IO77BQGI.js';
5
5
  import '../../chunk-JKIRRMBU.js';
6
6
  import '../../chunk-2JV6WZ6O.js';
7
- import '../../chunk-A32NANNC.js';
7
+ import '../../chunk-OYP5CGHU.js';
8
8
  import '../../chunk-VVZNW5CB.js';
9
9
  import '../../chunk-HBTIZWT2.js';
10
10
  import '../../chunk-SDIQHTDG.js';
11
11
  import '../../chunk-ZGHRSRDO.js';
12
12
  import '../../chunk-DIVEHHMD.js';
13
- import '../../chunk-C5X6CVXC.js';
14
- import '../../chunk-VYJDRAWX.js';
15
- import '../../chunk-FGROIU3Y.js';
16
- import '../../chunk-VX2T7JCB.js';
17
- import '../../chunk-TP3LCGE7.js';
13
+ import '../../chunk-HI5V5X3S.js';
14
+ import '../../chunk-3EE62REP.js';
15
+ import '../../chunk-L5K7VBOH.js';
16
+ import '../../chunk-EXBH6RGD.js';
17
+ import '../../chunk-MVT5AF2A.js';
18
18
  import '../../chunk-Z653O7MX.js';
19
19
  import '../../chunk-ZCH7W7DZ.js';
20
20
  import '../../chunk-OGVUFMLX.js';
@@ -22,20 +22,20 @@ import '../../chunk-JWXJPJBO.js';
22
22
  import '../../chunk-CW625T2E.js';
23
23
  import '../../chunk-7V36I5GT.js';
24
24
  import '../../chunk-BVSJPBJ6.js';
25
- import '../../chunk-GBWCXUPD.js';
25
+ import '../../chunk-RSVAPXXI.js';
26
26
  import '../../chunk-OAMIDZKW.js';
27
27
  import '../../chunk-TYNZ5B2B.js';
28
- import '../../chunk-RJPPO3ET.js';
29
- import '../../chunk-Q7VWURUR.js';
30
- import '../../chunk-GU2KUQVD.js';
31
- import '../../chunk-5O6PTKI5.js';
28
+ import '../../chunk-V2ZDTY6H.js';
29
+ import '../../chunk-5XDPAKF5.js';
30
+ import '../../chunk-GCPEMNSU.js';
31
+ import '../../chunk-MEPYG77L.js';
32
32
  import '../../chunk-AXW67SY7.js';
33
- import '../../chunk-BYMOPN2S.js';
34
33
  import '../../chunk-SKLEJJ6M.js';
34
+ import '../../chunk-BYMOPN2S.js';
35
35
  import '../../chunk-6BZ5TKEV.js';
36
36
  import '../../chunk-FZKRSGLP.js';
37
- import '../../chunk-CUG6VOLM.js';
38
- import '../../chunk-HX3YKS5W.js';
37
+ import '../../chunk-7V5HOZW4.js';
38
+ import '../../chunk-YA6ABQB7.js';
39
39
  import '../../chunk-MISI3T6V.js';
40
40
  import '../../chunk-3IHFA2X5.js';
41
41
  import '../../chunk-QVJDYSCT.js';
@@ -1,19 +1,19 @@
1
- export { StoreClosedNotification } from '../../chunk-LGT3T7VF.js';
2
- import '../../chunk-BQURS54V.js';
3
- import '../../chunk-ILMX45PO.js';
1
+ export { StoreClosedNotification } from '../../chunk-NZOXKPCW.js';
2
+ import '../../chunk-BD4V56PZ.js';
3
+ import '../../chunk-IO77BQGI.js';
4
4
  import '../../chunk-JKIRRMBU.js';
5
5
  import '../../chunk-2JV6WZ6O.js';
6
- import '../../chunk-A32NANNC.js';
6
+ import '../../chunk-OYP5CGHU.js';
7
7
  import '../../chunk-VVZNW5CB.js';
8
8
  import '../../chunk-HBTIZWT2.js';
9
9
  import '../../chunk-SDIQHTDG.js';
10
10
  import '../../chunk-ZGHRSRDO.js';
11
11
  import '../../chunk-DIVEHHMD.js';
12
- import '../../chunk-C5X6CVXC.js';
13
- import '../../chunk-VYJDRAWX.js';
14
- import '../../chunk-FGROIU3Y.js';
15
- import '../../chunk-VX2T7JCB.js';
16
- import '../../chunk-TP3LCGE7.js';
12
+ import '../../chunk-HI5V5X3S.js';
13
+ import '../../chunk-3EE62REP.js';
14
+ import '../../chunk-L5K7VBOH.js';
15
+ import '../../chunk-EXBH6RGD.js';
16
+ import '../../chunk-MVT5AF2A.js';
17
17
  import '../../chunk-Z653O7MX.js';
18
18
  import '../../chunk-ZCH7W7DZ.js';
19
19
  import '../../chunk-OGVUFMLX.js';
@@ -21,20 +21,20 @@ import '../../chunk-JWXJPJBO.js';
21
21
  import '../../chunk-CW625T2E.js';
22
22
  import '../../chunk-7V36I5GT.js';
23
23
  import '../../chunk-BVSJPBJ6.js';
24
- import '../../chunk-GBWCXUPD.js';
24
+ import '../../chunk-RSVAPXXI.js';
25
25
  import '../../chunk-OAMIDZKW.js';
26
26
  import '../../chunk-TYNZ5B2B.js';
27
- import '../../chunk-RJPPO3ET.js';
28
- import '../../chunk-Q7VWURUR.js';
29
- import '../../chunk-GU2KUQVD.js';
30
- import '../../chunk-5O6PTKI5.js';
27
+ import '../../chunk-V2ZDTY6H.js';
28
+ import '../../chunk-5XDPAKF5.js';
29
+ import '../../chunk-GCPEMNSU.js';
30
+ import '../../chunk-MEPYG77L.js';
31
31
  import '../../chunk-AXW67SY7.js';
32
- import '../../chunk-BYMOPN2S.js';
33
32
  import '../../chunk-SKLEJJ6M.js';
33
+ import '../../chunk-BYMOPN2S.js';
34
34
  import '../../chunk-6BZ5TKEV.js';
35
35
  import '../../chunk-FZKRSGLP.js';
36
- import '../../chunk-CUG6VOLM.js';
37
- import '../../chunk-HX3YKS5W.js';
36
+ import '../../chunk-7V5HOZW4.js';
37
+ import '../../chunk-YA6ABQB7.js';
38
38
  import '../../chunk-MISI3T6V.js';
39
39
  import '../../chunk-3IHFA2X5.js';
40
40
  import '../../chunk-QVJDYSCT.js';
@@ -46,7 +46,7 @@ import '../../chunk-DGUM43GV.js';
46
46
  import { lazy } from 'react';
47
47
 
48
48
  var LazyStoreClosedNotification = lazy(
49
- () => import('../../StoreClosedNotification-PRXVWUV7.js').then((m) => ({
49
+ () => import('../../StoreClosedNotification-IV2JTVDU.js').then((m) => ({
50
50
  default: m.StoreClosedNotification
51
51
  }))
52
52
  );
@@ -18,18 +18,20 @@ var useToast = Object.assign(
18
18
  loading: (title, options) => toast.loading(title, options),
19
19
  update: (id, options) => {
20
20
  const { title, type, ...rest } = options;
21
+ const opts = { ...rest, id };
22
+ const message = title ?? toast.getToasts().find((t) => t.id === id && "title" in t)?.title;
21
23
  if (type === "success") {
22
- toast.success(id, { ...rest, description: title });
24
+ toast.success(message, opts);
23
25
  } else if (type === "error") {
24
- toast.error(id, { ...rest, description: title });
26
+ toast.error(message, opts);
25
27
  } else if (type === "warning") {
26
- toast.warning(id, { ...rest, description: title });
28
+ toast.warning(message, opts);
27
29
  } else if (type === "info") {
28
- toast.info(id, { ...rest, description: title });
30
+ toast.info(message, opts);
29
31
  } else if (type === "loading") {
30
- toast.loading(id, { ...rest, description: title });
32
+ toast.loading(message, opts);
31
33
  } else {
32
- toast(id, { ...rest, description: title });
34
+ toast(message, opts);
33
35
  }
34
36
  },
35
37
  dismiss: (id) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toast/useToast.ts"],"names":["sonnerToast"],"mappings":";;;;;;;;;;AAGO,IAAM,WAAoB,MAAA,CAAO,MAAA;AAAA,EACtC,CAAC,KAAA,EAAe,OAAA,KAA2BA,KAAA,CAAY,OAAO,OAAO,CAAA;AAAA,EACrE;AAAA,IACE,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,OAAO,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,IAClF,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,MAAM,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,IAAA,CAAK,OAAO,OAAO,CAAA;AAAA,IAChF,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,MAAA,EAAQ,CAAC,EAAA,EAAqB,OAAA,KAAgC;AAC5D,MAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,GAAG,MAAK,GAAI,OAAA;AACjC,MAAA,IAAI,SAAS,SAAA,EAAW;AACtB,QAAAA,KAAA,CAAY,QAAQ,EAAA,EAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACzD,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,QAAAA,KAAA,CAAY,MAAM,EAAA,EAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACvD,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,QAAAA,KAAA,CAAY,QAAQ,EAAA,EAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACzD,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,QAAAA,KAAA,CAAY,KAAK,EAAA,EAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACtD,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,QAAAA,KAAA,CAAY,QAAQ,EAAA,EAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACzD,CAAA,MAAO;AACL,QAAAA,KAAA,CAAY,IAAI,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,EAAA,KAAyB;AACjC,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAAA,KAAA,CAAY,QAAQ,EAAE,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAAA,KAAA,CAAY,OAAA,EAAQ;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,CAAI,OAAA,EAAqB,OAAA,KAAgD;AAChF,MAAAA,KAAA,CAAY,QAAQ,OAAA,EAAS;AAAA,QAC3B,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,OAAO,OAAA,CAAQ;AAAA,OAChB,CAAA;AACD,MAAA,OAAO,OAAA;AAAA,IACT;AAAA;AAEJ","file":"index.js","sourcesContent":["import { toast as sonnerToast } from 'sonner';\nimport type { ToastFn, ToastOptions, ToastUpdateOptions, ToastPromiseOptions } from './types';\n\nexport const useToast: ToastFn = Object.assign(\n (title: string, options?: ToastOptions) => sonnerToast(title, options),\n {\n success: (title: string, options?: ToastOptions) => sonnerToast.success(title, options),\n error: (title: string, options?: ToastOptions) => sonnerToast.error(title, options),\n warning: (title: string, options?: ToastOptions) => sonnerToast.warning(title, options),\n info: (title: string, options?: ToastOptions) => sonnerToast.info(title, options),\n loading: (title: string, options?: ToastOptions) => sonnerToast.loading(title, options),\n update: (id: string | number, options: ToastUpdateOptions) => {\n const { title, type, ...rest } = options;\n if (type === 'success') {\n sonnerToast.success(id, { ...rest, description: title });\n } else if (type === 'error') {\n sonnerToast.error(id, { ...rest, description: title });\n } else if (type === 'warning') {\n sonnerToast.warning(id, { ...rest, description: title });\n } else if (type === 'info') {\n sonnerToast.info(id, { ...rest, description: title });\n } else if (type === 'loading') {\n sonnerToast.loading(id, { ...rest, description: title });\n } else {\n sonnerToast(id, { ...rest, description: title });\n }\n },\n dismiss: (id?: string | number) => {\n if (id !== undefined) {\n sonnerToast.dismiss(id);\n } else {\n sonnerToast.dismiss();\n }\n },\n promise: <T>(promise: Promise<T>, options: ToastPromiseOptions<T>): Promise<T> => {\n sonnerToast.promise(promise, {\n loading: options.loading,\n success: options.success,\n error: options.error,\n });\n return promise;\n },\n }\n) as ToastFn;\n\nexport { useToast as toast };\nexport type {\n ToastOptions,\n ToastType,\n ToastPosition,\n ToastUpdateOptions,\n ToastPromiseOptions,\n} from './types';\n"]}
1
+ {"version":3,"sources":["../../../src/components/toast/useToast.ts"],"names":["sonnerToast"],"mappings":";;;;;;;;;;AAIO,IAAM,WAAoB,MAAA,CAAO,MAAA;AAAA,EACtC,CAAC,KAAA,EAAe,OAAA,KAA2BA,KAAA,CAAY,OAAO,OAAO,CAAA;AAAA,EACrE;AAAA,IACE,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,OAAO,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,IAClF,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,MAAM,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,IAAA,CAAK,OAAO,OAAO,CAAA;AAAA,IAChF,SAAS,CAAC,KAAA,EAAe,YAA2BA,KAAA,CAAY,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,IACtF,MAAA,EAAQ,CAAC,EAAA,EAAqB,OAAA,KAAgC;AAG5D,MAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,GAAG,MAAK,GAAI,OAAA;AACjC,MAAA,MAAM,IAAA,GAAO,EAAE,GAAG,IAAA,EAAM,EAAA,EAAG;AAE3B,MAAA,MAAM,OAAA,GACJ,KAAA,IACAA,KAAA,CAAY,SAAA,EAAU,CAAE,IAAA,CAAK,CAAC,CAAA,KAAmB,CAAA,CAAE,EAAA,KAAO,EAAA,IAAM,OAAA,IAAW,CAAC,CAAA,EAAG,KAAA;AACjF,MAAA,IAAI,SAAS,SAAA,EAAW;AACtB,QAAAA,KAAA,CAAY,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA,MACnC,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,QAAAA,KAAA,CAAY,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,MACjC,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,QAAAA,KAAA,CAAY,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA,MACnC,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,QAAAA,KAAA,CAAY,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,MAChC,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,QAAAA,KAAA,CAAY,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAAA,KAAA,CAAY,SAAS,IAAI,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,EAAA,KAAyB;AACjC,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAAA,KAAA,CAAY,QAAQ,EAAE,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAAA,KAAA,CAAY,OAAA,EAAQ;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,CAAI,OAAA,EAAqB,OAAA,KAAgD;AAChF,MAAAA,KAAA,CAAY,QAAQ,OAAA,EAAS;AAAA,QAC3B,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,OAAO,OAAA,CAAQ;AAAA,OAChB,CAAA;AACD,MAAA,OAAO,OAAA;AAAA,IACT;AAAA;AAEJ","file":"index.js","sourcesContent":["import { toast as sonnerToast } from 'sonner';\nimport type { ToastT } from 'sonner';\nimport type { ToastFn, ToastOptions, ToastUpdateOptions, ToastPromiseOptions } from './types';\n\nexport const useToast: ToastFn = Object.assign(\n (title: string, options?: ToastOptions) => sonnerToast(title, options),\n {\n success: (title: string, options?: ToastOptions) => sonnerToast.success(title, options),\n error: (title: string, options?: ToastOptions) => sonnerToast.error(title, options),\n warning: (title: string, options?: ToastOptions) => sonnerToast.warning(title, options),\n info: (title: string, options?: ToastOptions) => sonnerToast.info(title, options),\n loading: (title: string, options?: ToastOptions) => sonnerToast.loading(title, options),\n update: (id: string | number, options: ToastUpdateOptions) => {\n // sonner updates an existing toast when `id` is passed in the options;\n // the first argument is the message (title), not the id.\n const { title, type, ...rest } = options;\n const opts = { ...rest, id };\n // sonner overwrites the title with the message, so reuse the current one when none is given.\n const message =\n title ??\n sonnerToast.getToasts().find((t): t is ToastT => t.id === id && 'title' in t)?.title;\n if (type === 'success') {\n sonnerToast.success(message, opts);\n } else if (type === 'error') {\n sonnerToast.error(message, opts);\n } else if (type === 'warning') {\n sonnerToast.warning(message, opts);\n } else if (type === 'info') {\n sonnerToast.info(message, opts);\n } else if (type === 'loading') {\n sonnerToast.loading(message, opts);\n } else {\n sonnerToast(message, opts);\n }\n },\n dismiss: (id?: string | number) => {\n if (id !== undefined) {\n sonnerToast.dismiss(id);\n } else {\n sonnerToast.dismiss();\n }\n },\n promise: <T>(promise: Promise<T>, options: ToastPromiseOptions<T>): Promise<T> => {\n sonnerToast.promise(promise, {\n loading: options.loading,\n success: options.success,\n error: options.error,\n });\n return promise;\n },\n }\n) as ToastFn;\n\nexport { useToast as toast };\nexport type {\n ToastOptions,\n ToastType,\n ToastPosition,\n ToastUpdateOptions,\n ToastPromiseOptions,\n} from './types';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/useToast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAyD,MAAM,SAAS,CAAC;AAE9F,eAAO,MAAM,QAAQ,EAAE,OAwCX,CAAC;AAEb,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAC;AAC7B,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/useToast.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAyD,MAAM,SAAS,CAAC;AAE9F,eAAO,MAAM,QAAQ,EAAE,OA+CX,CAAC;AAEb,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAC;AAC7B,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
- export { SiftSnippet } from '../../chunk-AQANJRBD.js';
2
1
  export { GoogleTagBody } from '../../chunk-DNCQIT6S.js';
3
2
  export { TwilightBundles } from '../../chunk-RBEYMAKM.js';
3
+ export { SiftSnippet } from '../../chunk-AQANJRBD.js';
4
4
  import '../../chunk-DGUM43GV.js';
5
5
  import { lazy } from 'react';
6
6
 
@@ -1,23 +1,31 @@
1
1
  import React from 'react';
2
2
  import type { Cart } from '../types';
3
3
  /**
4
- * CartContext - Provides cart data to hooks with `cart:*` prefix
4
+ * CartContext - Optional React context that carries a `Cart` down a subtree.
5
5
  *
6
- * Used by HookSlot to automatically inject cart context into cart-related hooks.
7
- * This avoids repetitive context passing for hooks like CART_ITEMS_START, CART_SUMMARY, etc.
6
+ * Read it with `useCartContext()` (returns `null` outside a provider). The engine
7
+ * itself neither mounts `CartContextProvider` nor reads this context: `HookSlot`
8
+ * does NOT inject it into `cart:*` hooks, so a hook handler only receives the
9
+ * `context` prop you pass to `<HookSlot context={{ cart }} />` plus `twilight`.
10
+ * This is a convenience for theme code that wants to share the cart without prop
11
+ * drilling.
8
12
  *
9
13
  * @example
10
14
  * ```tsx
11
- * import { CartContextProvider, HookSlot, HookName } from '@salla.sa/twilight-theme-engine';
15
+ * import { CartContextProvider, useCartContext } from '@salla.sa/twilight-theme-engine';
12
16
  *
13
17
  * function CartPage({ cart }) {
14
18
  * return (
15
19
  * <CartContextProvider value={{ cart }}>
16
- * <HookSlot name={HookName.CART_ITEMS_START} />
17
- * // No need to pass context={{ cart }}
20
+ * <CartSummary />
18
21
  * </CartContextProvider>
19
22
  * );
20
23
  * }
24
+ *
25
+ * function CartSummary() {
26
+ * const ctx = useCartContext(); // { cart } | null
27
+ * return <span>{ctx?.cart.count}</span>;
28
+ * }
21
29
  * ```
22
30
  */
23
31
  export interface CartContextValue {
@@ -1 +1 @@
1
- {"version":3,"file":"CartContext.d.ts","sourceRoot":"","sources":["../../src/contexts/CartContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,QAAA,MAAM,WAAW,wCAA+C,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,KAAK,GACN,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAG/C;AAED,wBAAgB,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAExD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"CartContext.d.ts","sourceRoot":"","sources":["../../src/contexts/CartContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,QAAA,MAAM,WAAW,wCAA+C,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,KAAK,GACN,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAG/C;AAED,wBAAgB,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAExD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/contexts/ProductContext.tsx","../../src/contexts/CartContext.tsx"],"names":["createContext","useMemo","jsx","useContext"],"mappings":";;;;AA4BA,IAAM,cAAA,GAAiB,cAA0C,IAAI;AAO9D,SAAS,sBAAA,CAAuB;AAAA,EACrC,QAAA;AAAA,EACA;AACF,CAAA,EAAoD;AAClD,EAAA,MAAM,gBAAgB,OAAA,CAAQ,MAAM,OAAO,CAAC,KAAA,CAAM,OAAO,CAAC,CAAA;AAC1D,EAAA,2BAAQ,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAO,eAAgB,QAAA,EAAS,CAAA;AAClE;AAEO,SAAS,iBAAA,GAAgD;AAC9D,EAAA,OAAO,WAAW,cAAc,CAAA;AAClC;ACjBA,IAAM,WAAA,GAAcA,cAAuC,IAAI;AAOxD,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,gBAAgBC,OAAAA,CAAQ,MAAM,OAAO,CAAC,KAAA,CAAM,IAAI,CAAC,CAAA;AACvD,EAAA,uBAAOC,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,eAAgB,QAAA,EAAS,CAAA;AAC/D;AAEO,SAAS,cAAA,GAA0C;AACxD,EAAA,OAAOC,WAAW,WAAW,CAAA;AAC/B","file":"index.js","sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport type { Product } from '../types';\n\n/**\n * ProductContext - Provides product data to hooks with `product:*` prefix\n *\n * Used by HookSlot to automatically inject product context into product-related hooks.\n * This avoids repetitive context passing for hooks like PRODUCT_DESCRIPTION, PRODUCT_FORM, etc.\n *\n * @example\n * ```tsx\n * import { ProductContextProvider, HookSlot, HookName } from '@salla.sa/twilight-theme-engine';\n *\n * function ProductDetails({ product }) {\n * return (\n * <ProductContextProvider value={{ product }}>\n * <HookSlot name={HookName.PRODUCT_DESCRIPTION} />\n * // No need to pass context={{ product }}\n * </ProductContextProvider>\n * );\n * }\n * ```\n */\n\nexport interface ProductContextValue {\n product: Product;\n}\n\nconst ProductContext = createContext<ProductContextValue | null>(null);\n\nexport interface ProductContextProviderProps {\n children: React.ReactNode;\n value: ProductContextValue;\n}\n\nexport function ProductContextProvider({\n children,\n value,\n}: ProductContextProviderProps): React.ReactElement {\n const memoizedValue = useMemo(() => value, [value.product]);\n return <ProductContext.Provider value={memoizedValue}>{children}</ProductContext.Provider>;\n}\n\nexport function useProductContext(): ProductContextValue | null {\n return useContext(ProductContext);\n}\n\nexport { ProductContext };\n","import React, { createContext, useContext, useMemo } from 'react';\nimport type { Cart } from '../types';\n\n/**\n * CartContext - Provides cart data to hooks with `cart:*` prefix\n *\n * Used by HookSlot to automatically inject cart context into cart-related hooks.\n * This avoids repetitive context passing for hooks like CART_ITEMS_START, CART_SUMMARY, etc.\n *\n * @example\n * ```tsx\n * import { CartContextProvider, HookSlot, HookName } from '@salla.sa/twilight-theme-engine';\n *\n * function CartPage({ cart }) {\n * return (\n * <CartContextProvider value={{ cart }}>\n * <HookSlot name={HookName.CART_ITEMS_START} />\n * // No need to pass context={{ cart }}\n * </CartContextProvider>\n * );\n * }\n * ```\n */\n\nexport interface CartContextValue {\n cart: Cart;\n}\n\nconst CartContext = createContext<CartContextValue | null>(null);\n\nexport interface CartContextProviderProps {\n children: React.ReactNode;\n value: CartContextValue;\n}\n\nexport function CartContextProvider({\n children,\n value,\n}: CartContextProviderProps): React.ReactElement {\n const memoizedValue = useMemo(() => value, [value.cart]);\n return <CartContext.Provider value={memoizedValue}>{children}</CartContext.Provider>;\n}\n\nexport function useCartContext(): CartContextValue | null {\n return useContext(CartContext);\n}\n\nexport { CartContext };\n"]}
1
+ {"version":3,"sources":["../../src/contexts/ProductContext.tsx","../../src/contexts/CartContext.tsx"],"names":["createContext","useMemo","jsx","useContext"],"mappings":";;;;AA4BA,IAAM,cAAA,GAAiB,cAA0C,IAAI;AAO9D,SAAS,sBAAA,CAAuB;AAAA,EACrC,QAAA;AAAA,EACA;AACF,CAAA,EAAoD;AAClD,EAAA,MAAM,gBAAgB,OAAA,CAAQ,MAAM,OAAO,CAAC,KAAA,CAAM,OAAO,CAAC,CAAA;AAC1D,EAAA,2BAAQ,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAO,eAAgB,QAAA,EAAS,CAAA;AAClE;AAEO,SAAS,iBAAA,GAAgD;AAC9D,EAAA,OAAO,WAAW,cAAc,CAAA;AAClC;ACTA,IAAM,WAAA,GAAcA,cAAuC,IAAI;AAOxD,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,gBAAgBC,OAAAA,CAAQ,MAAM,OAAO,CAAC,KAAA,CAAM,IAAI,CAAC,CAAA;AACvD,EAAA,uBAAOC,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,eAAgB,QAAA,EAAS,CAAA;AAC/D;AAEO,SAAS,cAAA,GAA0C;AACxD,EAAA,OAAOC,WAAW,WAAW,CAAA;AAC/B","file":"index.js","sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport type { Product } from '../types';\n\n/**\n * ProductContext - Provides product data to hooks with `product:*` prefix\n *\n * Used by HookSlot to automatically inject product context into product-related hooks.\n * This avoids repetitive context passing for hooks like PRODUCT_DESCRIPTION, PRODUCT_FORM, etc.\n *\n * @example\n * ```tsx\n * import { ProductContextProvider, HookSlot, HookName } from '@salla.sa/twilight-theme-engine';\n *\n * function ProductDetails({ product }) {\n * return (\n * <ProductContextProvider value={{ product }}>\n * <HookSlot name={HookName.PRODUCT_DESCRIPTION} />\n * // No need to pass context={{ product }}\n * </ProductContextProvider>\n * );\n * }\n * ```\n */\n\nexport interface ProductContextValue {\n product: Product;\n}\n\nconst ProductContext = createContext<ProductContextValue | null>(null);\n\nexport interface ProductContextProviderProps {\n children: React.ReactNode;\n value: ProductContextValue;\n}\n\nexport function ProductContextProvider({\n children,\n value,\n}: ProductContextProviderProps): React.ReactElement {\n const memoizedValue = useMemo(() => value, [value.product]);\n return <ProductContext.Provider value={memoizedValue}>{children}</ProductContext.Provider>;\n}\n\nexport function useProductContext(): ProductContextValue | null {\n return useContext(ProductContext);\n}\n\nexport { ProductContext };\n","import React, { createContext, useContext, useMemo } from 'react';\nimport type { Cart } from '../types';\n\n/**\n * CartContext - Optional React context that carries a `Cart` down a subtree.\n *\n * Read it with `useCartContext()` (returns `null` outside a provider). The engine\n * itself neither mounts `CartContextProvider` nor reads this context: `HookSlot`\n * does NOT inject it into `cart:*` hooks, so a hook handler only receives the\n * `context` prop you pass to `<HookSlot context={{ cart }} />` plus `twilight`.\n * This is a convenience for theme code that wants to share the cart without prop\n * drilling.\n *\n * @example\n * ```tsx\n * import { CartContextProvider, useCartContext } from '@salla.sa/twilight-theme-engine';\n *\n * function CartPage({ cart }) {\n * return (\n * <CartContextProvider value={{ cart }}>\n * <CartSummary />\n * </CartContextProvider>\n * );\n * }\n *\n * function CartSummary() {\n * const ctx = useCartContext(); // { cart } | null\n * return <span>{ctx?.cart.count}</span>;\n * }\n * ```\n */\n\nexport interface CartContextValue {\n cart: Cart;\n}\n\nconst CartContext = createContext<CartContextValue | null>(null);\n\nexport interface CartContextProviderProps {\n children: React.ReactNode;\n value: CartContextValue;\n}\n\nexport function CartContextProvider({\n children,\n value,\n}: CartContextProviderProps): React.ReactElement {\n const memoizedValue = useMemo(() => value, [value.cart]);\n return <CartContext.Provider value={memoizedValue}>{children}</CartContext.Provider>;\n}\n\nexport function useCartContext(): CartContextValue | null {\n return useContext(CartContext);\n}\n\nexport { CartContext };\n"]}
@@ -1,17 +1,17 @@
1
- export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-IXG6BF2M.js';
1
+ export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-WNGLJJVH.js';
2
2
  import './chunk-Z4Y55HWX.js';
3
3
  import './chunk-BE3JDKE2.js';
4
4
  import './chunk-5ZR2HKZ7.js';
5
5
  import './chunk-GD26FI4J.js';
6
- import './chunk-4YHSQSM6.js';
7
- import './chunk-7BGEGHAI.js';
6
+ import './chunk-YKFGUVF7.js';
7
+ import './chunk-XVNXXF67.js';
8
8
  import './chunk-TZ3E5BN4.js';
9
- import './chunk-H2DXJCJP.js';
10
- import './chunk-A32NANNC.js';
9
+ import './chunk-VFYT2VWC.js';
10
+ import './chunk-OYP5CGHU.js';
11
11
  import './chunk-HBTIZWT2.js';
12
12
  import './chunk-SDIQHTDG.js';
13
13
  import './chunk-ZGHRSRDO.js';
14
- import './chunk-VX2T7JCB.js';
14
+ import './chunk-EXBH6RGD.js';
15
15
  import './chunk-JWXJPJBO.js';
16
16
  import './chunk-CW625T2E.js';
17
17
  import './chunk-TYNZ5B2B.js';
@@ -21,5 +21,5 @@ import './chunk-N2S25NXP.js';
21
21
  import './chunk-T72DAX7R.js';
22
22
  import './chunk-DF6FBKDN.js';
23
23
  import './chunk-DGUM43GV.js';
24
- //# sourceMappingURL=document-class-7U45CO5V.js.map
25
- //# sourceMappingURL=document-class-7U45CO5V.js.map
24
+ //# sourceMappingURL=document-class-FIAXRNEM.js.map
25
+ //# sourceMappingURL=document-class-FIAXRNEM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-7U45CO5V.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-FIAXRNEM.js"}