@salla.sa/twilight-theme-engine 1.0.95 → 1.0.96

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 (349) hide show
  1. package/dist/{AddToCartForm-6M57VCZU.js → AddToCartForm-DASRXMY7.js} +3 -3
  2. package/dist/{AddToCartForm-6M57VCZU.js.map → AddToCartForm-DASRXMY7.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-F6RKZEXT.js → BlogAuthorPage-WFZGYSUB.js} +26 -24
  4. package/dist/BlogAuthorPage-WFZGYSUB.js.map +1 -0
  5. package/dist/{BlogCategoryPage-TMADZWDK.js → BlogCategoryPage-23PFOVVP.js} +26 -24
  6. package/dist/BlogCategoryPage-23PFOVVP.js.map +1 -0
  7. package/dist/{BlogPage-KUNTYL2L.js → BlogPage-4RFI56TW.js} +24 -22
  8. package/dist/BlogPage-4RFI56TW.js.map +1 -0
  9. package/dist/{BlogSinglePage-JCI5KX6K.js → BlogSinglePage-KMGBQUG5.js} +24 -22
  10. package/dist/BlogSinglePage-KMGBQUG5.js.map +1 -0
  11. package/dist/{BlogTagPage-6IC6HRXA.js → BlogTagPage-ZPQJKPBO.js} +26 -24
  12. package/dist/BlogTagPage-ZPQJKPBO.js.map +1 -0
  13. package/dist/{BrandsPage-CK7LZ4ZR.js → BrandsPage-FIHOZYMB.js} +25 -23
  14. package/dist/BrandsPage-FIHOZYMB.js.map +1 -0
  15. package/dist/{Breadcrumb-5RWSAJKQ.js → Breadcrumb-2IXFQL6L.js} +24 -22
  16. package/dist/Breadcrumb-2IXFQL6L.js.map +1 -0
  17. package/dist/{CartItem-AEIRNYUK.js → CartItem-GRFH5BED.js} +24 -22
  18. package/dist/CartItem-GRFH5BED.js.map +1 -0
  19. package/dist/{CartSummary-WCQL3GV5.js → CartSummary-IOCZJL26.js} +24 -22
  20. package/dist/CartSummary-IOCZJL26.js.map +1 -0
  21. package/dist/{Copyright-HRQKNNC3.js → Copyright-MDKYCKML.js} +3 -3
  22. package/dist/{Copyright-HRQKNNC3.js.map → Copyright-MDKYCKML.js.map} +1 -1
  23. package/dist/{CustomerLayout-ET4OD3VV.js → CustomerLayout-4737YCAK.js} +24 -22
  24. package/dist/CustomerLayout-4737YCAK.js.map +1 -0
  25. package/dist/{Footer-N2DCHQMO.js → Footer-2F652QDB.js} +4 -4
  26. package/dist/{Footer-N2DCHQMO.js.map → Footer-2F652QDB.js.map} +1 -1
  27. package/dist/Header-4OATF4LX.js +22 -0
  28. package/dist/{Header-SGRINHMD.js.map → Header-4OATF4LX.js.map} +1 -1
  29. package/dist/{LoyaltyPage-FLTNW6G3.js → LoyaltyPage-POFUTIPB.js} +24 -22
  30. package/dist/LoyaltyPage-POFUTIPB.js.map +1 -0
  31. package/dist/{LoyaltyPointsPage-W4QU4RDU.js → LoyaltyPointsPage-L4S4NZA2.js} +8 -7
  32. package/dist/LoyaltyPointsPage-L4S4NZA2.js.map +1 -0
  33. package/dist/{MainMenu-D5CFVBNQ.js → MainMenu-ROGX37TG.js} +7 -6
  34. package/dist/MainMenu-ROGX37TG.js.map +1 -0
  35. package/dist/{MasterLayout-DKUMEBDQ.js → MasterLayout-PGL5YU2B.js} +24 -22
  36. package/dist/{MasterLayout-DKUMEBDQ.js.map → MasterLayout-PGL5YU2B.js.map} +1 -1
  37. package/dist/{MobileMenu-3LCM35WP.js → MobileMenu-VGXWJHEF.js} +25 -23
  38. package/dist/MobileMenu-VGXWJHEF.js.map +1 -0
  39. package/dist/{NotificationsPage-KJ6WDEVH.js → NotificationsPage-PZAEKKJO.js} +24 -22
  40. package/dist/NotificationsPage-PZAEKKJO.js.map +1 -0
  41. package/dist/{OrderSinglePage-H6TGX43N.js → OrderSinglePage-KTKLXTUX.js} +25 -23
  42. package/dist/OrderSinglePage-KTKLXTUX.js.map +1 -0
  43. package/dist/{OrdersPage-BEBXUZGC.js → OrdersPage-BY6LYV5M.js} +24 -22
  44. package/dist/OrdersPage-BY6LYV5M.js.map +1 -0
  45. package/dist/{PageSingle-P5PI65M5.js → PageSingle-CJRT3HJZ.js} +6 -5
  46. package/dist/PageSingle-CJRT3HJZ.js.map +1 -0
  47. package/dist/{ProductDetails-PWS4VZWO.js → ProductDetails-O2VJVIZC.js} +7 -6
  48. package/dist/ProductDetails-O2VJVIZC.js.map +1 -0
  49. package/dist/{ProfilePage-25NC72CQ.js → ProfilePage-TB7PBODI.js} +24 -22
  50. package/dist/ProfilePage-TB7PBODI.js.map +1 -0
  51. package/dist/{RenderWhenVisible-F44J5MMG.js → RenderWhenVisible-KWAXEJOJ.js} +8 -5
  52. package/dist/RenderWhenVisible-KWAXEJOJ.js.map +1 -0
  53. package/dist/{ReviewsPage-JQJEEKR3.js → ReviewsPage-5KGCKLFR.js} +3 -3
  54. package/dist/{ReviewsPage-JQJEEKR3.js.map → ReviewsPage-5KGCKLFR.js.map} +1 -1
  55. package/dist/{SeoCartWidget-A7MCWGQ2.js → SeoCartWidget-6BU7WCTP.js} +24 -22
  56. package/dist/SeoCartWidget-6BU7WCTP.js.map +1 -0
  57. package/dist/{SettingsPage-6W32UA32.js → SettingsPage-G55AM2KS.js} +24 -22
  58. package/dist/SettingsPage-G55AM2KS.js.map +1 -0
  59. package/dist/{StoreClosedNotification-B3MQFPFY.js → StoreClosedNotification-C3BBFGAA.js} +25 -23
  60. package/dist/{StoreClosedNotification-B3MQFPFY.js.map → StoreClosedNotification-C3BBFGAA.js.map} +1 -1
  61. package/dist/{TestimonialsPage-MDYX65Z3.js → TestimonialsPage-EA4PSO7E.js} +6 -5
  62. package/dist/TestimonialsPage-EA4PSO7E.js.map +1 -0
  63. package/dist/{ThankYouPage-AFJCN3AH.js → ThankYouPage-R2OEK7ZZ.js} +24 -22
  64. package/dist/ThankYouPage-R2OEK7ZZ.js.map +1 -0
  65. package/dist/{WalletPage-S6S5ZV3A.js → WalletPage-MEWHIHUE.js} +25 -23
  66. package/dist/WalletPage-MEWHIHUE.js.map +1 -0
  67. package/dist/{WishlistPage-YH4OQPXP.js → WishlistPage-YFKG7CXU.js} +26 -24
  68. package/dist/WishlistPage-YFKG7CXU.js.map +1 -0
  69. package/dist/ambient/virtual-modules.d.ts +43 -1
  70. package/dist/api/advertisement.js +4 -3
  71. package/dist/api/apps.js +4 -3
  72. package/dist/api/blog.js +6 -5
  73. package/dist/api/brands.js +6 -5
  74. package/dist/api/cart.js +6 -5
  75. package/dist/api/category.js +6 -5
  76. package/dist/api/client.js +3 -2
  77. package/dist/api/home.js +4 -3
  78. package/dist/api/loyalty.js +6 -5
  79. package/dist/api/menu.js +4 -3
  80. package/dist/api/notification.js +4 -3
  81. package/dist/api/order.js +6 -5
  82. package/dist/api/page.js +6 -5
  83. package/dist/api/product.js +6 -5
  84. package/dist/api/profile.js +3 -2
  85. package/dist/api/profile.js.map +1 -1
  86. package/dist/api/store.js +4 -3
  87. package/dist/api/translations.js +4 -3
  88. package/dist/api/user.js +4 -3
  89. package/dist/api/wallet.js +4 -3
  90. package/dist/api/wishlist.js +7 -6
  91. package/dist/{chunk-LV6J5FMT.js → chunk-2D5TFSVG.js} +8 -8
  92. package/dist/{chunk-LV6J5FMT.js.map → chunk-2D5TFSVG.js.map} +1 -1
  93. package/dist/{chunk-HQAFPDJK.js → chunk-2FDLEB5J.js} +3 -3
  94. package/dist/{chunk-HQAFPDJK.js.map → chunk-2FDLEB5J.js.map} +1 -1
  95. package/dist/chunk-2FKZAAV7.js +90 -0
  96. package/dist/chunk-2FKZAAV7.js.map +1 -0
  97. package/dist/{chunk-FCTL7IV6.js → chunk-3GW3VFR6.js} +3 -3
  98. package/dist/{chunk-FCTL7IV6.js.map → chunk-3GW3VFR6.js.map} +1 -1
  99. package/dist/{chunk-CEYT3JER.js → chunk-56T47K7P.js} +4 -4
  100. package/dist/{chunk-CEYT3JER.js.map → chunk-56T47K7P.js.map} +1 -1
  101. package/dist/{chunk-LPQ5FUMJ.js → chunk-5SDCUGYR.js} +4 -4
  102. package/dist/{chunk-LPQ5FUMJ.js.map → chunk-5SDCUGYR.js.map} +1 -1
  103. package/dist/{chunk-QGOPTVV5.js → chunk-6EQ7G3SZ.js} +4 -3
  104. package/dist/chunk-6EQ7G3SZ.js.map +1 -0
  105. package/dist/{chunk-QFS2SHJ4.js → chunk-6RHU4TEF.js} +7 -7
  106. package/dist/{chunk-QFS2SHJ4.js.map → chunk-6RHU4TEF.js.map} +1 -1
  107. package/dist/{chunk-FZYR4BA2.js → chunk-7WTUA4WY.js} +3 -3
  108. package/dist/{chunk-FZYR4BA2.js.map → chunk-7WTUA4WY.js.map} +1 -1
  109. package/dist/{chunk-3PXONLUK.js → chunk-BH7YNCYB.js} +3 -3
  110. package/dist/{chunk-3PXONLUK.js.map → chunk-BH7YNCYB.js.map} +1 -1
  111. package/dist/{chunk-DBW7XXNE.js → chunk-BPL5H33B.js} +4 -4
  112. package/dist/{chunk-DBW7XXNE.js.map → chunk-BPL5H33B.js.map} +1 -1
  113. package/dist/{chunk-66K5P5ZX.js → chunk-CNUBL24W.js} +3 -3
  114. package/dist/{chunk-66K5P5ZX.js.map → chunk-CNUBL24W.js.map} +1 -1
  115. package/dist/chunk-COJH52VR.js +443 -0
  116. package/dist/chunk-COJH52VR.js.map +1 -0
  117. package/dist/{chunk-6OOTDFC7.js → chunk-D56TVNOG.js} +3 -3
  118. package/dist/{chunk-6OOTDFC7.js.map → chunk-D56TVNOG.js.map} +1 -1
  119. package/dist/{chunk-Y7XVWQXG.js → chunk-DNPQ2JBM.js} +4 -4
  120. package/dist/{chunk-Y7XVWQXG.js.map → chunk-DNPQ2JBM.js.map} +1 -1
  121. package/dist/{chunk-JJARU7YP.js → chunk-EWLVLDRP.js} +3 -3
  122. package/dist/{chunk-JJARU7YP.js.map → chunk-EWLVLDRP.js.map} +1 -1
  123. package/dist/{chunk-DTS3AGXT.js → chunk-FNHZEBA5.js} +9 -8
  124. package/dist/chunk-FNHZEBA5.js.map +1 -0
  125. package/dist/{chunk-HSWRYXC7.js → chunk-FO4WVGUQ.js} +3 -88
  126. package/dist/chunk-FO4WVGUQ.js.map +1 -0
  127. package/dist/{chunk-BNI6SKFL.js → chunk-G3UTLICK.js} +4 -4
  128. package/dist/{chunk-BNI6SKFL.js.map → chunk-G3UTLICK.js.map} +1 -1
  129. package/dist/{chunk-C4RXPVDF.js → chunk-GMXI6V2D.js} +6 -5
  130. package/dist/chunk-GMXI6V2D.js.map +1 -0
  131. package/dist/{chunk-RKQH63G2.js → chunk-GXHJXZBG.js} +4 -4
  132. package/dist/{chunk-RKQH63G2.js.map → chunk-GXHJXZBG.js.map} +1 -1
  133. package/dist/{chunk-43D2CG4F.js → chunk-IBSQO6LW.js} +4 -4
  134. package/dist/{chunk-43D2CG4F.js.map → chunk-IBSQO6LW.js.map} +1 -1
  135. package/dist/{chunk-ZVZGLEZ6.js → chunk-IU4KTCS3.js} +3 -3
  136. package/dist/{chunk-ZVZGLEZ6.js.map → chunk-IU4KTCS3.js.map} +1 -1
  137. package/dist/{chunk-N6OPDLCU.js → chunk-J3G4ZD76.js} +13 -12
  138. package/dist/chunk-J3G4ZD76.js.map +1 -0
  139. package/dist/{chunk-ENJ3CM5M.js → chunk-J5X4LXNM.js} +3 -3
  140. package/dist/{chunk-ENJ3CM5M.js.map → chunk-J5X4LXNM.js.map} +1 -1
  141. package/dist/{chunk-RNCISHJT.js → chunk-JKBLG344.js} +8 -7
  142. package/dist/chunk-JKBLG344.js.map +1 -0
  143. package/dist/{chunk-J47OCHM7.js → chunk-JVIPOD6M.js} +20 -19
  144. package/dist/chunk-JVIPOD6M.js.map +1 -0
  145. package/dist/{chunk-4WAUITU2.js → chunk-KNIGLCRV.js} +3 -3
  146. package/dist/{chunk-4WAUITU2.js.map → chunk-KNIGLCRV.js.map} +1 -1
  147. package/dist/{chunk-UOQR643Q.js → chunk-KQW6I5CD.js} +4 -4
  148. package/dist/{chunk-UOQR643Q.js.map → chunk-KQW6I5CD.js.map} +1 -1
  149. package/dist/{chunk-H64QXA6N.js → chunk-LXNS6CMT.js} +4 -4
  150. package/dist/{chunk-H64QXA6N.js.map → chunk-LXNS6CMT.js.map} +1 -1
  151. package/dist/chunk-MGDCJQ5P.js +14 -0
  152. package/dist/{chunk-7GBNI3AU.js.map → chunk-MGDCJQ5P.js.map} +1 -1
  153. package/dist/chunk-N45X7D55.js +63 -0
  154. package/dist/chunk-N45X7D55.js.map +1 -0
  155. package/dist/{chunk-OH2L4U2C.js → chunk-NZRJOAA7.js} +3 -3
  156. package/dist/{chunk-OH2L4U2C.js.map → chunk-NZRJOAA7.js.map} +1 -1
  157. package/dist/{chunk-TEOVJ6WU.js → chunk-O7B5JL6H.js} +4 -4
  158. package/dist/{chunk-TEOVJ6WU.js.map → chunk-O7B5JL6H.js.map} +1 -1
  159. package/dist/{chunk-UURVAJ42.js → chunk-OZP2FID7.js} +4 -4
  160. package/dist/{chunk-UURVAJ42.js.map → chunk-OZP2FID7.js.map} +1 -1
  161. package/dist/{chunk-HCA2TE4G.js → chunk-PGUKRWOY.js} +5 -5
  162. package/dist/{chunk-HCA2TE4G.js.map → chunk-PGUKRWOY.js.map} +1 -1
  163. package/dist/{chunk-3MIFT4VQ.js → chunk-Q62YEBIA.js} +4 -4
  164. package/dist/{chunk-3MIFT4VQ.js.map → chunk-Q62YEBIA.js.map} +1 -1
  165. package/dist/{chunk-6DMNJPLW.js → chunk-QS4EDTEX.js} +3 -3
  166. package/dist/{chunk-6DMNJPLW.js.map → chunk-QS4EDTEX.js.map} +1 -1
  167. package/dist/{chunk-SAGXF3MU.js → chunk-QZEQOVA5.js} +3 -3
  168. package/dist/{chunk-SAGXF3MU.js.map → chunk-QZEQOVA5.js.map} +1 -1
  169. package/dist/{chunk-JTOVO3ZU.js → chunk-RWBTMHLR.js} +5 -5
  170. package/dist/{chunk-JTOVO3ZU.js.map → chunk-RWBTMHLR.js.map} +1 -1
  171. package/dist/{chunk-DV6SJHL5.js → chunk-S34G5DL4.js} +4 -4
  172. package/dist/{chunk-DV6SJHL5.js.map → chunk-S34G5DL4.js.map} +1 -1
  173. package/dist/{chunk-MKVCFBVF.js → chunk-TIPR4JUO.js} +4 -4
  174. package/dist/{chunk-MKVCFBVF.js.map → chunk-TIPR4JUO.js.map} +1 -1
  175. package/dist/{chunk-IR47RORL.js → chunk-ULMSO2XZ.js} +7 -7
  176. package/dist/{chunk-IR47RORL.js.map → chunk-ULMSO2XZ.js.map} +1 -1
  177. package/dist/{chunk-IVBOLREE.js → chunk-VWVCSD3N.js} +3 -3
  178. package/dist/{chunk-IVBOLREE.js.map → chunk-VWVCSD3N.js.map} +1 -1
  179. package/dist/{chunk-5G7NYNX6.js → chunk-W2LNKEBF.js} +3 -3
  180. package/dist/{chunk-5G7NYNX6.js.map → chunk-W2LNKEBF.js.map} +1 -1
  181. package/dist/{chunk-ZTXEXO4W.js → chunk-XGNML7XM.js} +7 -7
  182. package/dist/{chunk-ZTXEXO4W.js.map → chunk-XGNML7XM.js.map} +1 -1
  183. package/dist/{chunk-46NBPXAI.js → chunk-XT6CLGF5.js} +3 -3
  184. package/dist/{chunk-46NBPXAI.js.map → chunk-XT6CLGF5.js.map} +1 -1
  185. package/dist/{chunk-SFZ7IIWL.js → chunk-ZEGNYJOR.js} +4 -4
  186. package/dist/{chunk-SFZ7IIWL.js.map → chunk-ZEGNYJOR.js.map} +1 -1
  187. package/dist/{chunk-6ELXANJG.js → chunk-ZPVLBXDY.js} +4 -4
  188. package/dist/{chunk-6ELXANJG.js.map → chunk-ZPVLBXDY.js.map} +1 -1
  189. package/dist/components/cart/index.js +1 -1
  190. package/dist/components/common/RenderWhenVisible.d.ts +3 -1
  191. package/dist/components/common/RenderWhenVisible.d.ts.map +1 -1
  192. package/dist/components/common/index.js +1 -1
  193. package/dist/components/common/lazy.d.ts +1 -1
  194. package/dist/components/common/lazy.d.ts.map +1 -1
  195. package/dist/components/drawer/index.js +22 -20
  196. package/dist/components/home/HomePageRenderer.d.ts.map +1 -1
  197. package/dist/components/home/index.js +26 -24
  198. package/dist/components/layout/index.js +6 -5
  199. package/dist/components/product/index.js +23 -21
  200. package/dist/components/store/index.js +24 -22
  201. package/dist/components/store/index.js.map +1 -1
  202. package/dist/components/toast/index.js +4 -3
  203. package/dist/components/toast/index.js.map +1 -1
  204. package/dist/components/tracking/index.js +1 -1
  205. package/dist/dev/DevSettingsWidget.d.ts +6 -7
  206. package/dist/dev/DevSettingsWidget.d.ts.map +1 -1
  207. package/dist/dev/dev-settings-store.d.ts +89 -46
  208. package/dist/dev/dev-settings-store.d.ts.map +1 -1
  209. package/dist/dev/editor/AddElementDrawer.d.ts +17 -0
  210. package/dist/dev/editor/AddElementDrawer.d.ts.map +1 -0
  211. package/dist/dev/editor/BuilderPanel.d.ts +23 -0
  212. package/dist/dev/editor/BuilderPanel.d.ts.map +1 -0
  213. package/dist/dev/editor/SettingsPanel.d.ts +9 -0
  214. package/dist/dev/editor/SettingsPanel.d.ts.map +1 -0
  215. package/dist/dev/editor/ThemeEditor.d.ts +20 -0
  216. package/dist/dev/editor/ThemeEditor.d.ts.map +1 -0
  217. package/dist/dev/editor/catalog.d.ts +10 -0
  218. package/dist/dev/editor/catalog.d.ts.map +1 -0
  219. package/dist/dev/editor/fields.d.ts +18 -0
  220. package/dist/dev/editor/fields.d.ts.map +1 -0
  221. package/dist/dev/editor/i18n.d.ts +72 -0
  222. package/dist/dev/editor/i18n.d.ts.map +1 -0
  223. package/dist/dev/editor/icons.d.ts +21 -0
  224. package/dist/dev/editor/icons.d.ts.map +1 -0
  225. package/dist/dev/editor/index.d.ts +8 -0
  226. package/dist/dev/editor/index.d.ts.map +1 -0
  227. package/dist/dev/editor/index.js +2059 -0
  228. package/dist/dev/editor/index.js.map +1 -0
  229. package/dist/dev/editor/lookup.d.ts +22 -0
  230. package/dist/dev/editor/lookup.d.ts.map +1 -0
  231. package/dist/dev/editor/mount.d.ts +4 -0
  232. package/dist/dev/editor/mount.d.ts.map +1 -0
  233. package/dist/dev/editor/paths.d.ts +44 -0
  234. package/dist/dev/editor/paths.d.ts.map +1 -0
  235. package/dist/dev/editor/pickers.d.ts +12 -0
  236. package/dist/dev/editor/pickers.d.ts.map +1 -0
  237. package/dist/dev/editor/styles.d.ts +8 -0
  238. package/dist/dev/editor/styles.d.ts.map +1 -0
  239. package/dist/dev/index.d.ts +1 -1
  240. package/dist/dev/index.d.ts.map +1 -1
  241. package/dist/dev/index.js +35 -309
  242. package/dist/dev/index.js.map +1 -1
  243. package/dist/dev/schema-types.d.ts +124 -4
  244. package/dist/dev/schema-types.d.ts.map +1 -1
  245. package/dist/dev/store-lookup.d.ts +13 -0
  246. package/dist/dev/store-lookup.d.ts.map +1 -0
  247. package/dist/document-class-2RROXH4K.js +29 -0
  248. package/dist/{document-class-BRRNAIKV.js.map → document-class-2RROXH4K.js.map} +1 -1
  249. package/dist/hooks/index.js +22 -20
  250. package/dist/hooks/useComments.js +3 -2
  251. package/dist/hooks/useGtm.js +22 -20
  252. package/dist/hooks/useMoney.js +22 -20
  253. package/dist/hooks/useProduct.js +3 -2
  254. package/dist/hooks/useStore.js +22 -20
  255. package/dist/hooks/useUser.js +5 -4
  256. package/dist/hooks/useWishlist.js +3 -2
  257. package/dist/index.js +22 -20
  258. package/dist/index.js.map +1 -1
  259. package/dist/native-app/index.js +3 -2
  260. package/dist/{navigation-KTFJWOWI.js → navigation-JB2CJXBF.js} +7 -6
  261. package/dist/navigation-JB2CJXBF.js.map +1 -0
  262. package/dist/navigation-KTMLD4VB.js +14 -0
  263. package/dist/{navigation-BARZWXJZ.js.map → navigation-KTMLD4VB.js.map} +1 -1
  264. package/dist/{not-found-VJDPMT6N.js → not-found-ZM6VIELR.js} +25 -23
  265. package/dist/not-found-ZM6VIELR.js.map +1 -0
  266. package/dist/providers/index.js +22 -20
  267. package/dist/routes/account/orders.js +7 -6
  268. package/dist/routes/account.js +16 -15
  269. package/dist/routes/account.js.map +1 -1
  270. package/dist/routes/blog.js +11 -10
  271. package/dist/routes/blog.js.map +1 -1
  272. package/dist/routes/brands.js +7 -6
  273. package/dist/routes/brands.js.map +1 -1
  274. package/dist/routes/cart.js +30 -28
  275. package/dist/routes/cart.js.map +1 -1
  276. package/dist/routes/home/HomePage.d.ts.map +1 -1
  277. package/dist/routes/home.js +27 -25
  278. package/dist/routes/index.js +6 -5
  279. package/dist/routes/loyalty.js +8 -7
  280. package/dist/routes/loyalty.js.map +1 -1
  281. package/dist/routes/page.js +7 -6
  282. package/dist/routes/page.js.map +1 -1
  283. package/dist/routes/product-listing.js +28 -26
  284. package/dist/routes/product-listing.js.map +1 -1
  285. package/dist/routes/product.js +26 -24
  286. package/dist/routes/product.js.map +1 -1
  287. package/dist/routes/seo-redirects.js +6 -5
  288. package/dist/routes/testimonials.js +2 -2
  289. package/dist/routes/thank-you.js +7 -6
  290. package/dist/routes/thank-you.js.map +1 -1
  291. package/dist/skeleton.js +27 -25
  292. package/dist/store-lookup-T4TK7CKA.js +114 -0
  293. package/dist/store-lookup-T4TK7CKA.js.map +1 -0
  294. package/dist/tanstack.js +17 -16
  295. package/dist/tanstack.js.map +1 -1
  296. package/dist/utils/index.js +6 -5
  297. package/dist/utils/index.js.map +1 -1
  298. package/dist/vite/index.js +415 -23
  299. package/dist/vite/index.js.map +1 -1
  300. package/dist/vite/plugins/twilight-schema.d.ts +7 -2
  301. package/dist/vite/plugins/twilight-schema.d.ts.map +1 -1
  302. package/dist/vite/plugins/twilight-schema.plugin.d.ts +26 -0
  303. package/dist/vite/plugins/twilight-schema.plugin.d.ts.map +1 -1
  304. package/package.json +5 -1
  305. package/tailwind/components/common/RenderWhenVisible.tsx.txt +9 -2
  306. package/tailwind/components/home/HomePageRenderer.tsx.txt +2 -0
  307. package/tailwind/routes/home/HomePage.tsx.txt +7 -6
  308. package/dist/BlogAuthorPage-F6RKZEXT.js.map +0 -1
  309. package/dist/BlogCategoryPage-TMADZWDK.js.map +0 -1
  310. package/dist/BlogPage-KUNTYL2L.js.map +0 -1
  311. package/dist/BlogSinglePage-JCI5KX6K.js.map +0 -1
  312. package/dist/BlogTagPage-6IC6HRXA.js.map +0 -1
  313. package/dist/BrandsPage-CK7LZ4ZR.js.map +0 -1
  314. package/dist/Breadcrumb-5RWSAJKQ.js.map +0 -1
  315. package/dist/CartItem-AEIRNYUK.js.map +0 -1
  316. package/dist/CartSummary-WCQL3GV5.js.map +0 -1
  317. package/dist/CustomerLayout-ET4OD3VV.js.map +0 -1
  318. package/dist/Header-SGRINHMD.js +0 -21
  319. package/dist/LoyaltyPage-FLTNW6G3.js.map +0 -1
  320. package/dist/LoyaltyPointsPage-W4QU4RDU.js.map +0 -1
  321. package/dist/MainMenu-D5CFVBNQ.js.map +0 -1
  322. package/dist/MobileMenu-3LCM35WP.js.map +0 -1
  323. package/dist/NotificationsPage-KJ6WDEVH.js.map +0 -1
  324. package/dist/OrderSinglePage-H6TGX43N.js.map +0 -1
  325. package/dist/OrdersPage-BEBXUZGC.js.map +0 -1
  326. package/dist/PageSingle-P5PI65M5.js.map +0 -1
  327. package/dist/ProductDetails-PWS4VZWO.js.map +0 -1
  328. package/dist/ProfilePage-25NC72CQ.js.map +0 -1
  329. package/dist/RenderWhenVisible-F44J5MMG.js.map +0 -1
  330. package/dist/SeoCartWidget-A7MCWGQ2.js.map +0 -1
  331. package/dist/SettingsPage-6W32UA32.js.map +0 -1
  332. package/dist/TestimonialsPage-MDYX65Z3.js.map +0 -1
  333. package/dist/ThankYouPage-AFJCN3AH.js.map +0 -1
  334. package/dist/WalletPage-S6S5ZV3A.js.map +0 -1
  335. package/dist/WishlistPage-YH4OQPXP.js.map +0 -1
  336. package/dist/chunk-2JV6WZ6O.js +0 -136
  337. package/dist/chunk-2JV6WZ6O.js.map +0 -1
  338. package/dist/chunk-7GBNI3AU.js +0 -14
  339. package/dist/chunk-C4RXPVDF.js.map +0 -1
  340. package/dist/chunk-DTS3AGXT.js.map +0 -1
  341. package/dist/chunk-HSWRYXC7.js.map +0 -1
  342. package/dist/chunk-J47OCHM7.js.map +0 -1
  343. package/dist/chunk-N6OPDLCU.js.map +0 -1
  344. package/dist/chunk-QGOPTVV5.js.map +0 -1
  345. package/dist/chunk-RNCISHJT.js.map +0 -1
  346. package/dist/document-class-BRRNAIKV.js +0 -28
  347. package/dist/navigation-BARZWXJZ.js +0 -13
  348. package/dist/navigation-KTFJWOWI.js.map +0 -1
  349. package/dist/not-found-VJDPMT6N.js.map +0 -1
@@ -1 +1 @@
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
+ {"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,6 +1,6 @@
1
+ export { SiftSnippet } from '../../chunk-AQANJRBD.js';
1
2
  export { GoogleTagBody } from '../../chunk-4ENPEHYZ.js';
2
3
  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,16 +1,15 @@
1
1
  /**
2
- * Optional dev-mode widget that reads the theme's local `twilight.json`
3
- * (via `virtual:twilight/schema`), fills every setting/component field with its
4
- * default, and lets the developer change those values. Enabling it merges the
5
- * setting overrides into the live theme (see `useTwilightInit`) and component
6
- * field overrides into the home page's blocks (see `useDevHomeComponentOverrides`).
2
+ * Dev-mode entry to the theme editor: a floating button that opens
3
+ * `/__twilight/editor` on the page you are looking at. The editor itself (home
4
+ * layout, theme settings, phone/desktop preview) lives in `./editor`.
7
5
  *
8
6
  * Rendered only in dev — gate the mount with `import.meta.env.DEV`. It portals
9
7
  * to <body>, styles itself inline (no theme CSS dependency), and shows nothing
10
- * when the schema is empty (e.g. a production build).
8
+ * when the schema is empty (e.g. a production build) or inside the editor's
9
+ * own frame.
11
10
  */
12
11
  import { type ReactElement } from 'react';
13
- import type { DevSchema } from './schema-types';
12
+ import { type DevSchema } from './schema-types';
14
13
  export interface DevSettingsWidgetProps {
15
14
  schema: DevSchema;
16
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DevSettingsWidget.d.ts","sourceRoot":"","sources":["../../src/dev/DevSettingsWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAA2C,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAGhE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,CAAC;CACnB;AAuID,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAsNzF;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"DevSettingsWidget.d.ts","sourceRoot":"","sources":["../../src/dev/DevSettingsWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,CAAC;CACnB;AAQD,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAoCzF;AAED,eAAe,iBAAiB,CAAC"}
@@ -1,62 +1,105 @@
1
1
  /**
2
- * Client-only external store for dev-mode theme-setting / component overrides,
3
- * persisted to localStorage. Consumed by {@link useDevSettingsState} in the
4
- * widget and by {@link useDevSettingsOverrides} in `useTwilightInit` (which
5
- * merges enabled setting overrides into the live theme).
2
+ * Client-side store for the dev editor: theme-setting overrides and a dev-owned
3
+ * home layout. Saved to `twilight.preview.json` through the dev server (see
4
+ * `twilight-schema.plugin.ts`), not to localStorage, for three reasons: the
5
+ * server render can read a file, so the page hydrates with the edited layout
6
+ * instead of flashing the store's; the state survives a port or browser
7
+ * change; and the developer can open, diff or delete it.
6
8
  *
7
- * SSR/hydration: the store hydrates from localStorage eagerly on the client,
8
- * but `useDevSettingsOverrides` returns the empty state until after mount, so
9
- * the first client render matches the server render; overrides then apply.
9
+ * The saved state reaches this module through `virtual:twilight/schema`, which
10
+ * the root route imports on both sides before anything renders and which puts
11
+ * it on `globalThis[DEV_PREVIEW_GLOBAL]`. Server snapshots read that value
12
+ * (the server's modules are re-run after each save); the browser copies it once
13
+ * and then owns the state.
14
+ *
15
+ * The theme editor (`/__twilight/editor`) frames the storefront, so two copies
16
+ * of this store run side by side. Edits reach every copy on the origin at once
17
+ * over a `BroadcastChannel` (the file save is debounced), and only the copy
18
+ * that made an edit saves it. Everything else between an editor and its frame
19
+ * (the home page's blocks, the store base, scroll-to-block) goes by
20
+ * `postMessage` to that one window, so another storefront tab never answers.
10
21
  */
11
- import type { DevSchema } from './schema-types';
12
- export interface DevSettingsState {
13
- /** Master switch — when false the theme uses the real store's values. */
14
- enabled: boolean;
15
- /** Sparse `{ [settingId]: value }` overrides for theme settings. */
16
- settings: Record<string, unknown>;
17
- /** `{ [componentPath]: { [fieldId]: value } }` overrides, keyed by the
18
- * twilight.json path (e.g. "home.main-links"). Merged into the matching home
19
- * block's data by {@link useDevHomeComponentOverrides}. */
20
- components: Record<string, Record<string, unknown>>;
22
+ import { type DevLookupItem, type DevLookupSource, type DevPreviewState, type DevSchema } from './schema-types';
23
+ export type DevSettingsState = DevPreviewState;
24
+ export type DevSaveStatus = 'idle' | 'saving' | 'saved' | 'error';
25
+ type LiveBlocks = {
26
+ path?: string;
27
+ }[];
28
+ /** What the editor shows besides the saved state. */
29
+ export interface DevEditorMeta {
30
+ /** The blocks the framed home page shows; `null` when it is not on the home page. */
31
+ liveBlocks: LiveBlocks | null;
32
+ saveStatus: DevSaveStatus;
33
+ /** The frame's store segment; `undefined` until the frame has said. */
34
+ frameBase: string | null | undefined;
21
35
  }
36
+ /** Home loader spelling of a twilight.json path. */
37
+ export declare function blockPath(path: string): string;
22
38
  export declare const devSettingsStore: {
23
- get: () => DevSettingsState;
24
- getServer: () => DevSettingsState;
39
+ get: () => DevPreviewState;
40
+ /** What the server rendered: the saved file as of this page load. */
41
+ getServer: () => DevPreviewState;
25
42
  subscribe(listener: () => void): () => void;
26
43
  /** Turn overrides on, seeding any unset setting with its twilight.json default. */
27
44
  enable(schema: DevSchema): void;
28
45
  disable(): void;
29
46
  setSetting(id: string, value: unknown): void;
30
- setComponentField(path: string, fieldId: string, value: unknown): void;
31
- /** Restore every value to its twilight.json default (keeps enabled state). */
32
- reset(schema: DevSchema): void;
47
+ /** Restore every setting to its twilight.json default (keeps enabled and the layout). */
48
+ resetSettings(schema: DevSchema): void;
49
+ /** The editor tells the store which window is its storefront frame. */
50
+ connectFrame(getFrame: () => Window | null): () => void;
51
+ /** A storefront's home page reports its blocks (`null` when it leaves); in the editor's frame they go to the editor. Not saved. */
52
+ setLiveBlocks(blocks: LiveBlocks | null): void;
53
+ /** Ask the frame for its home page's blocks and its store base. */
54
+ requestLiveBlocks(): void;
55
+ /**
56
+ * Search the dev store through the editor's frame. Rejects when there is no
57
+ * frame, it doesn't answer in time, or the store refuses; pickers then fall
58
+ * back to samples.
59
+ */
60
+ lookup(source: DevLookupSource, query: string): Promise<DevLookupItem[]>;
61
+ /** Scroll the editor's frame to the home block at `index`. */
62
+ focusBlock(index: number): void;
63
+ getMeta: () => DevEditorMeta;
64
+ subscribeMeta(listener: () => void): () => void;
65
+ /**
66
+ * Take over the home layout. Starts from the blocks the home page showed (the
67
+ * frame's in the editor; an empty page stays empty), otherwise from every
68
+ * twilight.json component.
69
+ */
70
+ customizeLayout(schema: DevSchema): void;
71
+ startEmptyLayout(): void;
72
+ /** Back to the store's own blocks. */
73
+ clearLayout(): void;
74
+ /** Insert a twilight.json component at `at` (default: the end); returns the new block's id. */
75
+ addBlock(schema: DevSchema, path: string, at?: number): string;
76
+ removeBlock(id: string): void;
77
+ duplicateBlock(id: string): void;
78
+ /** Move a block to index `to` (its position after the move). */
79
+ moveBlock(id: string, to: number): void;
80
+ setBlockField(id: string, fieldId: string, value: unknown): void;
33
81
  };
34
- /** Raw store subscription — safe to call only in client-mounted components. */
35
- export declare function useDevSettingsState(): DevSettingsState;
36
- /**
37
- * Overrides for SSR-rendered consumers (the theme). Returns the empty state on
38
- * the server and during the first client render, then the live store state —
39
- * avoiding a hydration mismatch while still applying overrides after mount.
40
- *
41
- * In production `import.meta.env.DEV` is a static `false`, so the early return
42
- * is all that survives bundling: the store subscription (and the whole store
43
- * module, which has no other prod consumer) is dead-code-eliminated. The
44
- * conditional hook calls below are therefore safe — the branch is entirely
45
- * present or entirely absent per build, never toggled at runtime.
46
- */
47
- export declare function useDevSettingsOverrides(): DevSettingsState;
82
+ /** The frame's blocks and store base, and the save status, for the editor. */
83
+ export declare function useDevEditorMeta(): DevEditorMeta;
84
+ /** Raw store subscription. */
85
+ export declare function useDevSettingsState(): DevPreviewState;
48
86
  /**
49
- * Overlay enabled component-field overrides onto the home page's component
50
- * list. Override keys are twilight.json paths ("home.main-links") while the
51
- * home loader strips the "home." prefix from page data, so each block is
52
- * looked up under both spellings. Values merge shallowly onto the block's
53
- * data, mirroring how the API delivers configured field values.
87
+ * Overrides for SSR-rendered consumers (the theme). The server and the first
88
+ * browser render both read the saved file, so they agree and nothing flashes.
54
89
  *
55
- * Same production story as {@link useDevSettingsOverrides}: the early return
56
- * is all that survives bundling, so the conditional hooks are build-time
57
- * constant, never toggled at runtime.
90
+ * Which hook this is gets decided once, when the module loads: in production
91
+ * `import.meta.env.DEV` is a static `false`, so only the empty one survives
92
+ * bundling and the store subscription (and the whole store module, which has
93
+ * no other prod consumer) is dead-code-eliminated. No hook is ever called
94
+ * conditionally.
58
95
  */
59
- export declare function useDevHomeComponentOverrides<T extends {
96
+ export declare const useDevSettingsOverrides: () => DevPreviewState;
97
+ /** A rendered home block; `__dev_id` keys a dev-layout block across reorders. */
98
+ export type DevHomeBlock<T> = T & {
99
+ __dev_id?: string;
100
+ };
101
+ export declare const useDevHomeBlocks: <T extends {
60
102
  path?: string;
61
- }>(components: T[]): T[];
103
+ }>(components: T[]) => DevHomeBlock<T>[];
104
+ export {};
62
105
  //# sourceMappingURL=dev-settings-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-settings-store.d.ts","sourceRoot":"","sources":["../../src/dev/dev-settings-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;+DAE2D;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD;AAwED,eAAO,MAAM,gBAAgB;eAClB,gBAAgB;qBACV,gBAAgB;wBACX,MAAM,IAAI,GAAG,MAAM,IAAI;IAW3C,mFAAmF;mBACpE,SAAS,GAAG,IAAI;eASpB,IAAI;mBAIA,MAAM,SAAS,OAAO,GAAG,IAAI;4BAKpB,MAAM,WAAW,MAAM,SAAS,OAAO,GAAG,IAAI;IAMtE,8EAA8E;kBAChE,SAAS,GAAG,IAAI;CAQ/B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,mBAAmB,IAAI,gBAAgB,CAMtD;AAED;;;;;;;;;;GAUG;AAEH,wBAAgB,uBAAuB,IAAI,gBAAgB,CAM1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAiB9F"}
1
+ {"version":3,"file":"dev-settings-store.d.ts","sourceRoot":"","sources":["../../src/dev/dev-settings-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,eAAe,EAEpB,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAClE,KAAK,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AA8BtC,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC;AAkVD,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAkBD,eAAO,MAAM,gBAAgB;eAClB,eAAe;IACxB,qEAAqE;qBACtD,eAAe;wBACV,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C,mFAAmF;mBACpE,SAAS,GAAG,IAAI;eAQpB,IAAI;mBAGA,MAAM,SAAS,OAAO,GAAG,IAAI;IAI5C,yFAAyF;0BACnE,SAAS,GAAG,IAAI;IAMtC,uEAAuE;2BAChD,MAAM,MAAM,GAAG,IAAI,GAAG,MAAM,IAAI;IAOvD,mIAAmI;0BAC7G,UAAU,GAAG,IAAI,GAAG,IAAI;IAK9C,mEAAmE;yBAC9C,IAAI;IAGzB;;;;OAIG;mBACY,eAAe,SAAS,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAaxE,8DAA8D;sBAC5C,MAAM,GAAG,IAAI;mBAGlB,aAAa;4BACF,MAAM,IAAI,GAAG,MAAM,IAAI;IAU/C;;;;OAIG;4BACqB,SAAS,GAAG,IAAI;wBAYpB,IAAI;IAGxB,sCAAsC;mBACvB,IAAI;IAGnB,+FAA+F;qBAC9E,SAAS,QAAQ,MAAM,OAAO,MAAM,GAAG,MAAM;oBAS9C,MAAM,GAAG,IAAI;uBAGV,MAAM,GAAG,IAAI;IAQhC,gEAAgE;kBAClD,MAAM,MAAM,MAAM,GAAG,IAAI;sBAYrB,MAAM,WAAW,MAAM,SAAS,OAAO,GAAG,IAAI;CAOjE,CAAC;AAIF,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,aAAa,CAMhD;AAED,8BAA8B;AAC9B,wBAAgB,mBAAmB,IAAI,eAAe,CAMrD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,eAEf,CAAC;AAE9B,iFAAiF;AACjF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAyBxD,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * "Add new element": a wide drawer beside the side panel, over the preview,
3
+ * like the dashboard's. Every twilight.json component as a card with its
4
+ * preview image (`image`) and icon, filtered by a search box.
5
+ */
6
+ import { type ReactElement } from 'react';
7
+ import type { DevSchema } from '../schema-types';
8
+ import type { EditorStrings } from './i18n';
9
+ export interface AddElementDrawerProps {
10
+ schema: DevSchema;
11
+ t: EditorStrings;
12
+ locale: string;
13
+ onPick: (path: string) => void;
14
+ onClose: () => void;
15
+ }
16
+ export declare function AddElementDrawer({ schema, t, locale, onPick, onClose, }: AddElementDrawerProps): ReactElement;
17
+ //# sourceMappingURL=AddElementDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddElementDrawer.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/AddElementDrawer.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA+C,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,CAAC,EAAE,aAAa,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAyCD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,CAAC,EACD,MAAM,EACN,MAAM,EACN,OAAO,GACR,EAAE,qBAAqB,GAAG,YAAY,CAuEtC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * "Page elements": the home page's blocks. Three views, like the dashboard:
3
+ * the list (drag to reorder, add, remove), one block's fields, and the picker
4
+ * of twilight.json components to add.
5
+ */
6
+ import { type ReactElement } from 'react';
7
+ import { type DevSchema } from '../schema-types';
8
+ import type { EditorStrings } from './i18n';
9
+ interface PanelProps {
10
+ schema: DevSchema;
11
+ t: EditorStrings;
12
+ locale: string;
13
+ isHome: boolean;
14
+ onGoHome: () => void;
15
+ /** The block open in the panel, if any. Held by the shell so the add drawer can open a new one. */
16
+ openId: string | null;
17
+ onOpenId: (id: string | null) => void;
18
+ /** Open the drawer of twilight.json components to add. */
19
+ onAddElement: () => void;
20
+ }
21
+ export declare function BuilderPanel({ schema, t, locale, isHome, onGoHome, openId, onOpenId, onAddElement, }: PanelProps): ReactElement;
22
+ export {};
23
+ //# sourceMappingURL=BuilderPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderPanel.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/BuilderPanel.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAY5C,UAAU,UAAU;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,CAAC,EAAE,aAAa,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mGAAmG;IACnG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,0DAA0D;IAC1D,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAkVD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,CAAC,EACD,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,YAAY,GACb,EAAE,UAAU,GAAG,YAAY,CAmD3B"}
@@ -0,0 +1,9 @@
1
+ /** "Theme settings": every setting twilight.json declares, merged into the live theme. */
2
+ import type { ReactElement } from 'react';
3
+ import { type DevSchema } from '../schema-types';
4
+ import type { EditorStrings } from './i18n';
5
+ export declare function SettingsPanel({ schema, t, }: {
6
+ schema: DevSchema;
7
+ t: EditorStrings;
8
+ }): ReactElement;
9
+ //# sourceMappingURL=SettingsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/SettingsPanel.tsx"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAGrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,CAAC,GACF,EAAE;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,CAAC,EAAE,aAAa,CAAC;CAClB,GAAG,YAAY,CA8Cf"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The local theme editor, laid out like the Salla dashboard's: a top bar (theme,
3
+ * page, phone/desktop switch, save state), an icon rail that switches the side
4
+ * panel between the home page's elements and the theme settings, and the
5
+ * storefront in a frame on a dotted canvas.
6
+ *
7
+ * The storefront runs in an iframe so the phone switch is real: the frame's
8
+ * width is the page's viewport, so the theme's own breakpoints apply. Edits
9
+ * reach the frame over the store's `BroadcastChannel` (see
10
+ * `dev-settings-store.ts`); this page never touches the frame's DOM.
11
+ */
12
+ import { type ReactElement } from 'react';
13
+ import { type DevSchema } from '../schema-types';
14
+ export interface ThemeEditorProps {
15
+ schema: DevSchema;
16
+ /** Storefront path to open first. Default: `?path=` from the URL, else `/ar`. */
17
+ initialPath?: string;
18
+ }
19
+ export declare function ThemeEditor({ schema, initialPath }: ThemeEditorProps): ReactElement;
20
+ //# sourceMappingURL=ThemeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeEditor.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/ThemeEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAA4C,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AACpG,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA0BxE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6RD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,gBAAgB,GAAG,YAAY,CAkGnF"}
@@ -0,0 +1,10 @@
1
+ /** Looking up and labelling twilight.json components, shared by the page list and the add drawer. */
2
+ import type { ReactElement } from 'react';
3
+ import type { DevSchema, DevSchemaComponent } from '../schema-types';
4
+ export declare function componentFor(schema: DevSchema, path: string | undefined): DevSchemaComponent | undefined;
5
+ export declare function titleOf(component: DevSchemaComponent | undefined, path: string, locale: string): string;
6
+ /** The component's own Salla icon (`sallaicons.css` is loaded by the editor page), else a generic one. */
7
+ export declare function ComponentIcon({ component, }: {
8
+ component: DevSchemaComponent | undefined;
9
+ }): ReactElement;
10
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/catalog.tsx"],"names":[],"mappings":"AAAA,qGAAqG;AAErG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKrE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,kBAAkB,GAAG,SAAS,CAEhC;AAED,wBAAgB,OAAO,CACrB,SAAS,EAAE,kBAAkB,GAAG,SAAS,EACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,CAGR;AAED,0GAA0G;AAC1G,wBAAgB,aAAa,CAAC,EAC5B,SAAS,GACV,EAAE;IACD,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC3C,GAAG,YAAY,CAGf"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * One editable twilight.json field, laid out like the dashboard's form: label
3
+ * above control, the field's description under it. A collection renders its
4
+ * items as collapsible cards, each made of the same fields.
5
+ */
6
+ import { type ReactElement } from 'react';
7
+ import { type DevSchemaField } from '../schema-types';
8
+ import type { EditorStrings } from './i18n';
9
+ /** A field's value in a block or collection row, falling back to its twilight.json default. */
10
+ export declare function blockValue(fields: DevSchemaField[], data: Record<string, unknown>, id: string): unknown;
11
+ export interface FieldProps {
12
+ field: DevSchemaField;
13
+ value: unknown;
14
+ onChange: (value: unknown) => void;
15
+ t: EditorStrings;
16
+ }
17
+ export declare function Field(props: FieldProps): ReactElement;
18
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/fields.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsC,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAC9F,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAQ5C,+FAA+F;AAC/F,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EAAE,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,CAAC,EAAE,aAAa,CAAC;CAClB;AAscD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAGrD"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The editor's own strings. It follows the storefront's language (the locale in
3
+ * the framed page's path), like the dashboard editor follows the merchant's, so
4
+ * an Arabic store gets an Arabic, right-to-left editor.
5
+ */
6
+ declare const en: {
7
+ homePage: string;
8
+ builder: string;
9
+ showPanel: string;
10
+ hidePanel: string;
11
+ settings: string;
12
+ addElement: string;
13
+ pickFromStore: string;
14
+ change: string;
15
+ done: string;
16
+ searchStore: string;
17
+ searching: string;
18
+ noResults: string;
19
+ sampleNotice: string;
20
+ sampleProducts: string;
21
+ linkTo: string;
22
+ typeUrl: string;
23
+ searchElements: string;
24
+ noMatches: string;
25
+ close: string;
26
+ cancel: string;
27
+ storeLayoutHint: string;
28
+ customize: string;
29
+ startEmpty: string;
30
+ backToStore: string;
31
+ confirm: string;
32
+ noBlocks: string;
33
+ noFields: string;
34
+ storeBlock: string;
35
+ notDeclared: string;
36
+ back: string;
37
+ duplicate: string;
38
+ remove: string;
39
+ moveUp: string;
40
+ moveDown: string;
41
+ mobile: string;
42
+ desktop: string;
43
+ preview: string;
44
+ saving: string;
45
+ saved: string;
46
+ saveError: string;
47
+ savedTo: string;
48
+ openStorefront: string;
49
+ reload: string;
50
+ notHome: string;
51
+ goHome: string;
52
+ previewOff: string;
53
+ resetSettings: string;
54
+ noSettings: string;
55
+ waitingForStore: string;
56
+ items: (n: number) => string;
57
+ item: string;
58
+ language: string;
59
+ outOfRange: (min?: number, max?: number) => string;
60
+ uploading: string;
61
+ uploadFailed: string;
62
+ addItem: (label: string) => string;
63
+ minItems: (n: number) => string;
64
+ chooseImage: string;
65
+ imageTooLarge: string;
66
+ };
67
+ export type EditorStrings = typeof en;
68
+ export declare function stringsFor(locale: string): EditorStrings;
69
+ /** Pick a `{ ar, en }` value in the editor's language, falling back to any. */
70
+ export declare function pick(values: Record<string, string> | undefined, locale: string): string;
71
+ export {};
72
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAoDK,MAAM;;;uBAGE,MAAM,QAAQ,MAAM;;;qBAQtB,MAAM;kBACT,MAAM;;;CAGrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,EAAE,CAAC;AAwEtC,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAExD;AAED,+EAA+E;AAC/E,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvF"}
@@ -0,0 +1,21 @@
1
+ /** Stroke icons for the editor chrome, 20px on a 24 grid, `currentColor`. */
2
+ export declare const HomeIcon: () => import("react").JSX.Element;
3
+ /** A sidebar beside the page: its bar sits at the inline start, so it flips with the direction. */
4
+ export declare const SidebarIcon: () => import("react").JSX.Element;
5
+ export declare const PaletteIcon: () => import("react").JSX.Element;
6
+ export declare const PhoneIcon: () => import("react").JSX.Element;
7
+ export declare const DesktopIcon: () => import("react").JSX.Element;
8
+ export declare const PlusCircleIcon: () => import("react").JSX.Element;
9
+ export declare const GripIcon: () => import("react").JSX.Element;
10
+ export declare const BlockIcon: () => import("react").JSX.Element;
11
+ export declare const CopyIcon: () => import("react").JSX.Element;
12
+ export declare const TrashIcon: () => import("react").JSX.Element;
13
+ export declare const ArrowUpIcon: () => import("react").JSX.Element;
14
+ export declare const ArrowDownIcon: () => import("react").JSX.Element;
15
+ /** Points to the inline start: flips with the document direction. */
16
+ export declare const BackIcon: () => import("react").JSX.Element;
17
+ export declare const ReloadIcon: () => import("react").JSX.Element;
18
+ export declare const ExternalIcon: () => import("react").JSX.Element;
19
+ export declare const CloseIcon: () => import("react").JSX.Element;
20
+ export declare const SearchIcon: () => import("react").JSX.Element;
21
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/icons.tsx"],"names":[],"mappings":"AAAA,6EAA6E;AAsB7E,eAAO,MAAM,QAAQ,mCAKpB,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,WAAW,mCAOvB,CAAC;AAEF,eAAO,MAAM,WAAW,mCAOvB,CAAC;AAEF,eAAO,MAAM,SAAS,mCAKrB,CAAC;AAEF,eAAO,MAAM,WAAW,mCAKvB,CAAC;AAEF,eAAO,MAAM,cAAc,mCAK1B,CAAC;AAEF,eAAO,MAAM,QAAQ,mCASpB,CAAC;AAEF,eAAO,MAAM,SAAS,mCAMrB,CAAC;AAEF,eAAO,MAAM,QAAQ,mCAKpB,CAAC;AAEF,eAAO,MAAM,SAAS,mCAIrB,CAAC;AAEF,eAAO,MAAM,WAAW,mCAIvB,CAAC;AAEF,eAAO,MAAM,aAAa,mCAIzB,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,QAAQ,mCAMpB,CAAC;AAEF,eAAO,MAAM,UAAU,mCAItB,CAAC;AAEF,eAAO,MAAM,YAAY,mCAIxB,CAAC;AAEF,eAAO,MAAM,SAAS,mCAIrB,CAAC;AAEF,eAAO,MAAM,UAAU,mCAKtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The theme editor page's entry (`@salla.sa/twilight-theme-engine/dev/editor`),
3
+ * loaded only by `/__twilight/editor`. Kept apart from `/dev`, which storefronts
4
+ * import for the button that opens it, so they never load the editor itself.
5
+ */
6
+ export { ThemeEditor, type ThemeEditorProps } from './ThemeEditor';
7
+ export { mountThemeEditor } from './mount';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dev/editor/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}