@fluid-app/portal-sdk 0.1.286 → 0.1.288

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 (881) hide show
  1. package/dist/AddressAutocompleteInput-C_H7gSJt.mjs +2214 -0
  2. package/dist/AddressAutocompleteInput-C_H7gSJt.mjs.map +1 -0
  3. package/dist/AddressAutocompleteInput-tZX9kPwb.cjs +2310 -0
  4. package/dist/AddressAutocompleteInput-tZX9kPwb.cjs.map +1 -0
  5. package/dist/ContactsScreen-BaNFVTVX.cjs +10 -0
  6. package/dist/ContactsScreen-CLLyfNru.mjs +3397 -0
  7. package/dist/ContactsScreen-CLLyfNru.mjs.map +1 -0
  8. package/dist/ContactsScreen-D8M6J3nC.cjs +3405 -0
  9. package/dist/ContactsScreen-D8M6J3nC.cjs.map +1 -0
  10. package/dist/ProfileScreen-BDvruZ90.mjs +1232 -0
  11. package/dist/ProfileScreen-BDvruZ90.mjs.map +1 -0
  12. package/dist/ProfileScreen-BH0A6Y3R.mjs +46 -0
  13. package/dist/ProfileScreen-CT5nLt3E.cjs +1244 -0
  14. package/dist/ProfileScreen-CT5nLt3E.cjs.map +1 -0
  15. package/dist/ProfileScreen-DrTa9Boy.cjs +48 -0
  16. package/dist/ShareablesScreen-BT3H1Omb.cjs +13896 -0
  17. package/dist/ShareablesScreen-BT3H1Omb.cjs.map +1 -0
  18. package/dist/ShareablesScreen-BrsJQqia.mjs +13880 -0
  19. package/dist/ShareablesScreen-BrsJQqia.mjs.map +1 -0
  20. package/dist/ShareablesScreen-IU9JBJzD.mjs +14 -0
  21. package/dist/ShareablesScreen-RxdJqjda.cjs +16 -0
  22. package/dist/ShopScreen-BLo9zSmm.mjs +45 -0
  23. package/dist/ShopScreen-BgiNBkIk.cjs +1295 -0
  24. package/dist/ShopScreen-BgiNBkIk.cjs.map +1 -0
  25. package/dist/ShopScreen-Bjo-5mdC.mjs +1282 -0
  26. package/dist/ShopScreen-Bjo-5mdC.mjs.map +1 -0
  27. package/dist/ShopScreen-BzaTY9cV.cjs +47 -0
  28. package/dist/SubscriptionsScreen-5IsYJnvc.cjs +5791 -0
  29. package/dist/SubscriptionsScreen-5IsYJnvc.cjs.map +1 -0
  30. package/dist/SubscriptionsScreen-B9_Cmmrc.mjs +5723 -0
  31. package/dist/SubscriptionsScreen-B9_Cmmrc.mjs.map +1 -0
  32. package/dist/SubscriptionsScreen-BpiWZf9J.cjs +11 -0
  33. package/dist/UpgradeScreen-DjCkknBC.cjs +6 -0
  34. package/dist/UpgradeScreen-Dqe70qIt.cjs +203 -0
  35. package/dist/UpgradeScreen-Dqe70qIt.cjs.map +1 -0
  36. package/dist/UpgradeScreen-WLq4bFhS.mjs +196 -0
  37. package/dist/UpgradeScreen-WLq4bFhS.mjs.map +1 -0
  38. package/dist/de-B2xuRzqB.mjs +125 -0
  39. package/dist/de-B2xuRzqB.mjs.map +1 -0
  40. package/dist/de-BMzN6pvJ.mjs +37 -0
  41. package/dist/de-BMzN6pvJ.mjs.map +1 -0
  42. package/dist/de-BP_BwSkX.mjs +24 -0
  43. package/dist/de-BP_BwSkX.mjs.map +1 -0
  44. package/dist/de-BcjRy6IX.mjs +74 -0
  45. package/dist/de-BcjRy6IX.mjs.map +1 -0
  46. package/dist/de-CA1BpazO.cjs +43 -0
  47. package/dist/de-CA1BpazO.cjs.map +1 -0
  48. package/dist/de-CQojBku3.cjs +131 -0
  49. package/dist/de-CQojBku3.cjs.map +1 -0
  50. package/dist/de-DLKXYoUC.cjs +80 -0
  51. package/dist/de-DLKXYoUC.cjs.map +1 -0
  52. package/dist/de-DLVI44iM.cjs +12 -0
  53. package/dist/de-DLVI44iM.cjs.map +1 -0
  54. package/dist/de-DZXu_Lma.mjs +6 -0
  55. package/dist/de-DZXu_Lma.mjs.map +1 -0
  56. package/dist/de-d5sXuDlc.cjs +12 -0
  57. package/dist/de-d5sXuDlc.cjs.map +1 -0
  58. package/dist/de-hW77cwjn.cjs +30 -0
  59. package/dist/de-hW77cwjn.cjs.map +1 -0
  60. package/dist/de-ndSZ5ykY.mjs +6 -0
  61. package/dist/de-ndSZ5ykY.mjs.map +1 -0
  62. package/dist/el-3T5wNvmF.cjs +12 -0
  63. package/dist/el-3T5wNvmF.cjs.map +1 -0
  64. package/dist/el-BVROkdqG.cjs +43 -0
  65. package/dist/el-BVROkdqG.cjs.map +1 -0
  66. package/dist/el-C1QZdoK1.cjs +131 -0
  67. package/dist/el-C1QZdoK1.cjs.map +1 -0
  68. package/dist/el-CT5RY-mx.mjs +125 -0
  69. package/dist/el-CT5RY-mx.mjs.map +1 -0
  70. package/dist/el-CWq1GFO2.mjs +37 -0
  71. package/dist/el-CWq1GFO2.mjs.map +1 -0
  72. package/dist/el-ChL3zQdm.mjs +6 -0
  73. package/dist/el-ChL3zQdm.mjs.map +1 -0
  74. package/dist/el-Dji5p2km.cjs +80 -0
  75. package/dist/el-Dji5p2km.cjs.map +1 -0
  76. package/dist/el-DtirnL7N.cjs +12 -0
  77. package/dist/el-DtirnL7N.cjs.map +1 -0
  78. package/dist/el-XW2NR7Vh.mjs +74 -0
  79. package/dist/el-XW2NR7Vh.mjs.map +1 -0
  80. package/dist/el-XwgbXcif.cjs +30 -0
  81. package/dist/el-XwgbXcif.cjs.map +1 -0
  82. package/dist/el-epEJkauy.mjs +6 -0
  83. package/dist/el-epEJkauy.mjs.map +1 -0
  84. package/dist/el-xbVPoQUL.mjs +24 -0
  85. package/dist/el-xbVPoQUL.mjs.map +1 -0
  86. package/dist/es-BSkjqnkF.cjs +12 -0
  87. package/dist/es-BSkjqnkF.cjs.map +1 -0
  88. package/dist/es-BX5djVHQ.cjs +30 -0
  89. package/dist/es-BX5djVHQ.cjs.map +1 -0
  90. package/dist/es-Bh1xngyE.mjs +6 -0
  91. package/dist/es-Bh1xngyE.mjs.map +1 -0
  92. package/dist/es-BjDZEneQ.cjs +80 -0
  93. package/dist/es-BjDZEneQ.cjs.map +1 -0
  94. package/dist/es-C2uchKja.cjs +43 -0
  95. package/dist/es-C2uchKja.cjs.map +1 -0
  96. package/dist/es-C2zfJQck.mjs +37 -0
  97. package/dist/es-C2zfJQck.mjs.map +1 -0
  98. package/dist/es-CWW1uLK3.mjs +6 -0
  99. package/dist/es-CWW1uLK3.mjs.map +1 -0
  100. package/dist/es-CyPr-juY.cjs +131 -0
  101. package/dist/es-CyPr-juY.cjs.map +1 -0
  102. package/dist/es-DYAui4cM.cjs +12 -0
  103. package/dist/es-DYAui4cM.cjs.map +1 -0
  104. package/dist/es-DjcSUa7j.mjs +125 -0
  105. package/dist/es-DjcSUa7j.mjs.map +1 -0
  106. package/dist/es-DnX0XFqD.mjs +74 -0
  107. package/dist/es-DnX0XFqD.mjs.map +1 -0
  108. package/dist/es-O3pQS-dk.mjs +24 -0
  109. package/dist/es-O3pQS-dk.mjs.map +1 -0
  110. package/dist/fr-7IjPHZxW.mjs +74 -0
  111. package/dist/fr-7IjPHZxW.mjs.map +1 -0
  112. package/dist/fr-BiJrmc6t.mjs +125 -0
  113. package/dist/fr-BiJrmc6t.mjs.map +1 -0
  114. package/dist/fr-BzVQUMC0.cjs +131 -0
  115. package/dist/fr-BzVQUMC0.cjs.map +1 -0
  116. package/dist/fr-C-2Pj7D2.cjs +43 -0
  117. package/dist/fr-C-2Pj7D2.cjs.map +1 -0
  118. package/dist/fr-CT47eWK_.mjs +6 -0
  119. package/dist/fr-CT47eWK_.mjs.map +1 -0
  120. package/dist/fr-DYML7Hb_.cjs +12 -0
  121. package/dist/fr-DYML7Hb_.cjs.map +1 -0
  122. package/dist/fr-DfMQoI8H.mjs +6 -0
  123. package/dist/fr-DfMQoI8H.mjs.map +1 -0
  124. package/dist/fr-MJsdTksK.mjs +24 -0
  125. package/dist/fr-MJsdTksK.mjs.map +1 -0
  126. package/dist/fr-XWBehwDw.cjs +30 -0
  127. package/dist/fr-XWBehwDw.cjs.map +1 -0
  128. package/dist/fr-_zhbWJHh.cjs +12 -0
  129. package/dist/fr-_zhbWJHh.cjs.map +1 -0
  130. package/dist/fr-jXtwm66y.mjs +37 -0
  131. package/dist/fr-jXtwm66y.mjs.map +1 -0
  132. package/dist/fr-wYZdZtt7.cjs +80 -0
  133. package/dist/fr-wYZdZtt7.cjs.map +1 -0
  134. package/dist/he-BNgtWUzu.cjs +43 -0
  135. package/dist/he-BNgtWUzu.cjs.map +1 -0
  136. package/dist/he-BcBh-9RB.cjs +12 -0
  137. package/dist/he-BcBh-9RB.cjs.map +1 -0
  138. package/dist/he-C4xGY_O5.cjs +30 -0
  139. package/dist/he-C4xGY_O5.cjs.map +1 -0
  140. package/dist/he-CBny3yj_.cjs +131 -0
  141. package/dist/he-CBny3yj_.cjs.map +1 -0
  142. package/dist/he-Cai6j3oW.mjs +6 -0
  143. package/dist/he-Cai6j3oW.mjs.map +1 -0
  144. package/dist/he-CsOIjabt.mjs +24 -0
  145. package/dist/he-CsOIjabt.mjs.map +1 -0
  146. package/dist/he-Cu_YCy1f.cjs +12 -0
  147. package/dist/he-Cu_YCy1f.cjs.map +1 -0
  148. package/dist/he-D-R8pe0L.mjs +125 -0
  149. package/dist/he-D-R8pe0L.mjs.map +1 -0
  150. package/dist/he-Dv0k0pX-.cjs +80 -0
  151. package/dist/he-Dv0k0pX-.cjs.map +1 -0
  152. package/dist/he-OAQhQxWm.mjs +74 -0
  153. package/dist/he-OAQhQxWm.mjs.map +1 -0
  154. package/dist/he-gcmGB1-C.mjs +6 -0
  155. package/dist/he-gcmGB1-C.mjs.map +1 -0
  156. package/dist/he-z0iIyfGu.mjs +37 -0
  157. package/dist/he-z0iIyfGu.mjs.map +1 -0
  158. package/dist/hu-BLBHZrAu.mjs +37 -0
  159. package/dist/hu-BLBHZrAu.mjs.map +1 -0
  160. package/dist/hu-BR0rOtJC.cjs +43 -0
  161. package/dist/hu-BR0rOtJC.cjs.map +1 -0
  162. package/dist/hu-BTBlTUaQ.cjs +131 -0
  163. package/dist/hu-BTBlTUaQ.cjs.map +1 -0
  164. package/dist/hu-BTvnBj9a.cjs +30 -0
  165. package/dist/hu-BTvnBj9a.cjs.map +1 -0
  166. package/dist/hu-CDvVhWXF.mjs +74 -0
  167. package/dist/hu-CDvVhWXF.mjs.map +1 -0
  168. package/dist/hu-CYFjRrQD.cjs +80 -0
  169. package/dist/hu-CYFjRrQD.cjs.map +1 -0
  170. package/dist/hu-Czc1FPg9.cjs +12 -0
  171. package/dist/hu-Czc1FPg9.cjs.map +1 -0
  172. package/dist/hu-D4fy_GxO.mjs +125 -0
  173. package/dist/hu-D4fy_GxO.mjs.map +1 -0
  174. package/dist/hu-DGyykLlw.mjs +24 -0
  175. package/dist/hu-DGyykLlw.mjs.map +1 -0
  176. package/dist/hu-DS-6XHh5.mjs +6 -0
  177. package/dist/hu-DS-6XHh5.mjs.map +1 -0
  178. package/dist/hu-DqI8hdAt.cjs +12 -0
  179. package/dist/hu-DqI8hdAt.cjs.map +1 -0
  180. package/dist/hu-pswRdooT.mjs +6 -0
  181. package/dist/hu-pswRdooT.mjs.map +1 -0
  182. package/dist/id-4tl2Uj7F.mjs +6 -0
  183. package/dist/id-4tl2Uj7F.mjs.map +1 -0
  184. package/dist/id-52itow18.cjs +43 -0
  185. package/dist/id-52itow18.cjs.map +1 -0
  186. package/dist/id-Bbvk8MDA.mjs +125 -0
  187. package/dist/id-Bbvk8MDA.mjs.map +1 -0
  188. package/dist/id-BxQgqmXd.cjs +131 -0
  189. package/dist/id-BxQgqmXd.cjs.map +1 -0
  190. package/dist/id-C4zO4qio.cjs +30 -0
  191. package/dist/id-C4zO4qio.cjs.map +1 -0
  192. package/dist/id-Cdurf_cc.mjs +24 -0
  193. package/dist/id-Cdurf_cc.mjs.map +1 -0
  194. package/dist/id-DGh6JGZ5.mjs +37 -0
  195. package/dist/id-DGh6JGZ5.mjs.map +1 -0
  196. package/dist/id-DP5zxg41.mjs +74 -0
  197. package/dist/id-DP5zxg41.mjs.map +1 -0
  198. package/dist/id-Dhws7LdN.mjs +6 -0
  199. package/dist/id-Dhws7LdN.mjs.map +1 -0
  200. package/dist/id-DqK8hygJ.cjs +12 -0
  201. package/dist/id-DqK8hygJ.cjs.map +1 -0
  202. package/dist/id-Vw9DQ3V1.cjs +12 -0
  203. package/dist/id-Vw9DQ3V1.cjs.map +1 -0
  204. package/dist/id-tlOQCFLJ.cjs +80 -0
  205. package/dist/id-tlOQCFLJ.cjs.map +1 -0
  206. package/dist/index.cjs +152 -61
  207. package/dist/index.cjs.map +1 -1
  208. package/dist/index.d.cts.map +1 -1
  209. package/dist/index.d.mts.map +1 -1
  210. package/dist/index.mjs +152 -61
  211. package/dist/index.mjs.map +1 -1
  212. package/dist/it--DHBKc26.cjs +12 -0
  213. package/dist/it--DHBKc26.cjs.map +1 -0
  214. package/dist/it-BODMi-FY.cjs +30 -0
  215. package/dist/it-BODMi-FY.cjs.map +1 -0
  216. package/dist/it-C34p5klu.mjs +24 -0
  217. package/dist/it-C34p5klu.mjs.map +1 -0
  218. package/dist/it-CPXF5aFi.cjs +80 -0
  219. package/dist/it-CPXF5aFi.cjs.map +1 -0
  220. package/dist/it-CbZjaErj.cjs +43 -0
  221. package/dist/it-CbZjaErj.cjs.map +1 -0
  222. package/dist/it-CfLSq25e.mjs +37 -0
  223. package/dist/it-CfLSq25e.mjs.map +1 -0
  224. package/dist/it-CpnrX6Qu.cjs +12 -0
  225. package/dist/it-CpnrX6Qu.cjs.map +1 -0
  226. package/dist/it-CqvzV23C.mjs +74 -0
  227. package/dist/it-CqvzV23C.mjs.map +1 -0
  228. package/dist/it-ELWZ1sxy.mjs +125 -0
  229. package/dist/it-ELWZ1sxy.mjs.map +1 -0
  230. package/dist/it-Hj3LCvz1.mjs +6 -0
  231. package/dist/it-Hj3LCvz1.mjs.map +1 -0
  232. package/dist/it-L0NVZqjU.cjs +131 -0
  233. package/dist/it-L0NVZqjU.cjs.map +1 -0
  234. package/dist/it-dsOgAn3r.mjs +6 -0
  235. package/dist/it-dsOgAn3r.mjs.map +1 -0
  236. package/dist/ja-B1DQXHgd.mjs +74 -0
  237. package/dist/ja-B1DQXHgd.mjs.map +1 -0
  238. package/dist/ja-B2NQ5sR-.cjs +80 -0
  239. package/dist/ja-B2NQ5sR-.cjs.map +1 -0
  240. package/dist/ja-BYGHlw8d.cjs +30 -0
  241. package/dist/ja-BYGHlw8d.cjs.map +1 -0
  242. package/dist/ja-BaU2QXo2.cjs +43 -0
  243. package/dist/ja-BaU2QXo2.cjs.map +1 -0
  244. package/dist/ja-BqySbP-W.mjs +6 -0
  245. package/dist/ja-BqySbP-W.mjs.map +1 -0
  246. package/dist/ja-C1QZfTGN.mjs +125 -0
  247. package/dist/ja-C1QZfTGN.mjs.map +1 -0
  248. package/dist/ja-C3C0k99E.cjs +12 -0
  249. package/dist/ja-C3C0k99E.cjs.map +1 -0
  250. package/dist/ja-Cft4ODrl.mjs +24 -0
  251. package/dist/ja-Cft4ODrl.mjs.map +1 -0
  252. package/dist/ja-CuLC8KzH.mjs +6 -0
  253. package/dist/ja-CuLC8KzH.mjs.map +1 -0
  254. package/dist/ja-D5fpLCDT.cjs +131 -0
  255. package/dist/ja-D5fpLCDT.cjs.map +1 -0
  256. package/dist/ja-JVcCjBJ9.cjs +12 -0
  257. package/dist/ja-JVcCjBJ9.cjs.map +1 -0
  258. package/dist/ja-kM5CUvdg.mjs +37 -0
  259. package/dist/ja-kM5CUvdg.mjs.map +1 -0
  260. package/dist/ko-BREsc9Rl.mjs +24 -0
  261. package/dist/ko-BREsc9Rl.mjs.map +1 -0
  262. package/dist/ko-BX4GXxaa.mjs +125 -0
  263. package/dist/ko-BX4GXxaa.mjs.map +1 -0
  264. package/dist/ko-C0Q33hJ9.cjs +80 -0
  265. package/dist/ko-C0Q33hJ9.cjs.map +1 -0
  266. package/dist/ko-Cdb4MyCC.mjs +6 -0
  267. package/dist/ko-Cdb4MyCC.mjs.map +1 -0
  268. package/dist/ko-D2TLG_3_.mjs +37 -0
  269. package/dist/ko-D2TLG_3_.mjs.map +1 -0
  270. package/dist/ko-D64no-WM.cjs +131 -0
  271. package/dist/ko-D64no-WM.cjs.map +1 -0
  272. package/dist/ko-DDBkvKT3.mjs +6 -0
  273. package/dist/ko-DDBkvKT3.mjs.map +1 -0
  274. package/dist/ko-DROYufGO.cjs +12 -0
  275. package/dist/ko-DROYufGO.cjs.map +1 -0
  276. package/dist/ko-HEegPkOi.cjs +30 -0
  277. package/dist/ko-HEegPkOi.cjs.map +1 -0
  278. package/dist/ko-PUpIJgsU.mjs +74 -0
  279. package/dist/ko-PUpIJgsU.mjs.map +1 -0
  280. package/dist/ko-WIfVodYY.cjs +12 -0
  281. package/dist/ko-WIfVodYY.cjs.map +1 -0
  282. package/dist/ko-vQjiRfrX.cjs +43 -0
  283. package/dist/ko-vQjiRfrX.cjs.map +1 -0
  284. package/dist/nl-BdRkpB-f.mjs +74 -0
  285. package/dist/nl-BdRkpB-f.mjs.map +1 -0
  286. package/dist/nl-Byk7MZjq.cjs +12 -0
  287. package/dist/nl-Byk7MZjq.cjs.map +1 -0
  288. package/dist/nl-C5U5y6gr.cjs +12 -0
  289. package/dist/nl-C5U5y6gr.cjs.map +1 -0
  290. package/dist/nl-C8T6RqHI.cjs +131 -0
  291. package/dist/nl-C8T6RqHI.cjs.map +1 -0
  292. package/dist/nl-CxaUAerZ.mjs +24 -0
  293. package/dist/nl-CxaUAerZ.mjs.map +1 -0
  294. package/dist/nl-D0dcnS-5.mjs +6 -0
  295. package/dist/nl-D0dcnS-5.mjs.map +1 -0
  296. package/dist/nl-D5y8p_At.cjs +80 -0
  297. package/dist/nl-D5y8p_At.cjs.map +1 -0
  298. package/dist/nl-DFUHK5ta.mjs +6 -0
  299. package/dist/nl-DFUHK5ta.mjs.map +1 -0
  300. package/dist/nl-DRxCBp_v.cjs +43 -0
  301. package/dist/nl-DRxCBp_v.cjs.map +1 -0
  302. package/dist/nl-Dww7O0AO.mjs +37 -0
  303. package/dist/nl-Dww7O0AO.mjs.map +1 -0
  304. package/dist/nl-ayPagHJ_.cjs +30 -0
  305. package/dist/nl-ayPagHJ_.cjs.map +1 -0
  306. package/dist/nl-mL8uL7cu.mjs +125 -0
  307. package/dist/nl-mL8uL7cu.mjs.map +1 -0
  308. package/dist/pl-AsC20yM9.cjs +43 -0
  309. package/dist/pl-AsC20yM9.cjs.map +1 -0
  310. package/dist/pl-Beb7Fiam.mjs +125 -0
  311. package/dist/pl-Beb7Fiam.mjs.map +1 -0
  312. package/dist/pl-BvfqoRfV.cjs +80 -0
  313. package/dist/pl-BvfqoRfV.cjs.map +1 -0
  314. package/dist/pl-COP9NGch.mjs +6 -0
  315. package/dist/pl-COP9NGch.mjs.map +1 -0
  316. package/dist/pl-CcIcOxXb.mjs +6 -0
  317. package/dist/pl-CcIcOxXb.mjs.map +1 -0
  318. package/dist/pl-CgKBvrJr.mjs +24 -0
  319. package/dist/pl-CgKBvrJr.mjs.map +1 -0
  320. package/dist/pl-DJKAFKNJ.cjs +12 -0
  321. package/dist/pl-DJKAFKNJ.cjs.map +1 -0
  322. package/dist/pl-DZZ1e6TM.cjs +12 -0
  323. package/dist/pl-DZZ1e6TM.cjs.map +1 -0
  324. package/dist/pl-DpVEpGL0.cjs +131 -0
  325. package/dist/pl-DpVEpGL0.cjs.map +1 -0
  326. package/dist/pl-LHrd1s6r.cjs +30 -0
  327. package/dist/pl-LHrd1s6r.cjs.map +1 -0
  328. package/dist/pl-PV9rlOz1.mjs +37 -0
  329. package/dist/pl-PV9rlOz1.mjs.map +1 -0
  330. package/dist/pl-XfyC_jQs.mjs +74 -0
  331. package/dist/pl-XfyC_jQs.mjs.map +1 -0
  332. package/dist/pt-B4hr_uJO.mjs +125 -0
  333. package/dist/pt-B4hr_uJO.mjs.map +1 -0
  334. package/dist/pt-BBFH5zDu.cjs +43 -0
  335. package/dist/pt-BBFH5zDu.cjs.map +1 -0
  336. package/dist/pt-BC56DXTY.mjs +37 -0
  337. package/dist/pt-BC56DXTY.mjs.map +1 -0
  338. package/dist/pt-BrnvgQRs.cjs +12 -0
  339. package/dist/pt-BrnvgQRs.cjs.map +1 -0
  340. package/dist/pt-CSvh02ed.mjs +6 -0
  341. package/dist/pt-CSvh02ed.mjs.map +1 -0
  342. package/dist/pt-CW6UZk1v.cjs +30 -0
  343. package/dist/pt-CW6UZk1v.cjs.map +1 -0
  344. package/dist/pt-CifIYahI.cjs +131 -0
  345. package/dist/pt-CifIYahI.cjs.map +1 -0
  346. package/dist/pt-CpQN7iPy.cjs +12 -0
  347. package/dist/pt-CpQN7iPy.cjs.map +1 -0
  348. package/dist/pt-DG1WQnTO.mjs +24 -0
  349. package/dist/pt-DG1WQnTO.mjs.map +1 -0
  350. package/dist/pt-DLFLkEpR.mjs +74 -0
  351. package/dist/pt-DLFLkEpR.mjs.map +1 -0
  352. package/dist/pt-D_Fxu0mz.mjs +6 -0
  353. package/dist/pt-D_Fxu0mz.mjs.map +1 -0
  354. package/dist/pt-Dx69fLab.cjs +80 -0
  355. package/dist/pt-Dx69fLab.cjs.map +1 -0
  356. package/dist/ro-B6ExafZC.cjs +131 -0
  357. package/dist/ro-B6ExafZC.cjs.map +1 -0
  358. package/dist/ro-BY4QQCns.cjs +30 -0
  359. package/dist/ro-BY4QQCns.cjs.map +1 -0
  360. package/dist/ro-CGOwHLvs.cjs +12 -0
  361. package/dist/ro-CGOwHLvs.cjs.map +1 -0
  362. package/dist/ro-CJJKGRs9.mjs +37 -0
  363. package/dist/ro-CJJKGRs9.mjs.map +1 -0
  364. package/dist/ro-Cu3cJnmT.mjs +74 -0
  365. package/dist/ro-Cu3cJnmT.mjs.map +1 -0
  366. package/dist/ro-D2WH48l8.mjs +6 -0
  367. package/dist/ro-D2WH48l8.mjs.map +1 -0
  368. package/dist/ro-DS3mARiW.cjs +43 -0
  369. package/dist/ro-DS3mARiW.cjs.map +1 -0
  370. package/dist/ro-DStH8jqQ.cjs +80 -0
  371. package/dist/ro-DStH8jqQ.cjs.map +1 -0
  372. package/dist/ro-Dg398PV0.mjs +24 -0
  373. package/dist/ro-Dg398PV0.mjs.map +1 -0
  374. package/dist/ro-DhGoI55Z.mjs +125 -0
  375. package/dist/ro-DhGoI55Z.mjs.map +1 -0
  376. package/dist/ro-dpJtFKiA.cjs +12 -0
  377. package/dist/ro-dpJtFKiA.cjs.map +1 -0
  378. package/dist/ro-lFxvLN7R.mjs +6 -0
  379. package/dist/ro-lFxvLN7R.mjs.map +1 -0
  380. package/dist/ru-9zdAxTCI.cjs +30 -0
  381. package/dist/ru-9zdAxTCI.cjs.map +1 -0
  382. package/dist/ru-BCP_P-Kw.mjs +6 -0
  383. package/dist/ru-BCP_P-Kw.mjs.map +1 -0
  384. package/dist/ru-BymfL4lY.mjs +125 -0
  385. package/dist/ru-BymfL4lY.mjs.map +1 -0
  386. package/dist/ru-C9sTu8KO.mjs +74 -0
  387. package/dist/ru-C9sTu8KO.mjs.map +1 -0
  388. package/dist/ru-CKfstS2M.cjs +43 -0
  389. package/dist/ru-CKfstS2M.cjs.map +1 -0
  390. package/dist/ru-CW4wBDfy.cjs +12 -0
  391. package/dist/ru-CW4wBDfy.cjs.map +1 -0
  392. package/dist/ru-CyoLQlWx.cjs +12 -0
  393. package/dist/ru-CyoLQlWx.cjs.map +1 -0
  394. package/dist/ru-DHNcAvHk.mjs +37 -0
  395. package/dist/ru-DHNcAvHk.mjs.map +1 -0
  396. package/dist/ru-DPs8Axnb.cjs +80 -0
  397. package/dist/ru-DPs8Axnb.cjs.map +1 -0
  398. package/dist/ru-JgTYyWIt.mjs +6 -0
  399. package/dist/ru-JgTYyWIt.mjs.map +1 -0
  400. package/dist/ru-fz-F75f4.cjs +131 -0
  401. package/dist/ru-fz-F75f4.cjs.map +1 -0
  402. package/dist/ru-k8yUinAx.mjs +24 -0
  403. package/dist/ru-k8yUinAx.mjs.map +1 -0
  404. package/dist/th-B83Fh-0G.cjs +12 -0
  405. package/dist/th-B83Fh-0G.cjs.map +1 -0
  406. package/dist/th-BVg0Jjgr.cjs +131 -0
  407. package/dist/th-BVg0Jjgr.cjs.map +1 -0
  408. package/dist/th-BYXBW0X2.cjs +43 -0
  409. package/dist/th-BYXBW0X2.cjs.map +1 -0
  410. package/dist/th-C7VrhPP5.cjs +12 -0
  411. package/dist/th-C7VrhPP5.cjs.map +1 -0
  412. package/dist/th-CZxqRIHs.mjs +6 -0
  413. package/dist/th-CZxqRIHs.mjs.map +1 -0
  414. package/dist/th-CmX6_2CM.mjs +74 -0
  415. package/dist/th-CmX6_2CM.mjs.map +1 -0
  416. package/dist/th-D8Prwe8n.cjs +30 -0
  417. package/dist/th-D8Prwe8n.cjs.map +1 -0
  418. package/dist/th-DkjnkI6P.mjs +6 -0
  419. package/dist/th-DkjnkI6P.mjs.map +1 -0
  420. package/dist/th-KyxBje7z.cjs +80 -0
  421. package/dist/th-KyxBje7z.cjs.map +1 -0
  422. package/dist/th-cad5Cap4.mjs +37 -0
  423. package/dist/th-cad5Cap4.mjs.map +1 -0
  424. package/dist/th-ge5FSv6T.mjs +125 -0
  425. package/dist/th-ge5FSv6T.mjs.map +1 -0
  426. package/dist/th-nYdqpaRn.mjs +24 -0
  427. package/dist/th-nYdqpaRn.mjs.map +1 -0
  428. package/dist/tl-B888TBzV.mjs +37 -0
  429. package/dist/tl-B888TBzV.mjs.map +1 -0
  430. package/dist/tl-Bua5-krl.mjs +24 -0
  431. package/dist/tl-Bua5-krl.mjs.map +1 -0
  432. package/dist/tl-CATDGPeB.cjs +12 -0
  433. package/dist/tl-CATDGPeB.cjs.map +1 -0
  434. package/dist/tl-CKjLSF_S.cjs +131 -0
  435. package/dist/tl-CKjLSF_S.cjs.map +1 -0
  436. package/dist/tl-CT5Bevzy.mjs +6 -0
  437. package/dist/tl-CT5Bevzy.mjs.map +1 -0
  438. package/dist/tl-CsRFJOIR.cjs +80 -0
  439. package/dist/tl-CsRFJOIR.cjs.map +1 -0
  440. package/dist/tl-D4iI7i02.cjs +30 -0
  441. package/dist/tl-D4iI7i02.cjs.map +1 -0
  442. package/dist/tl-DCKUBvuV.mjs +6 -0
  443. package/dist/tl-DCKUBvuV.mjs.map +1 -0
  444. package/dist/tl-DI0F6h6a.mjs +74 -0
  445. package/dist/tl-DI0F6h6a.mjs.map +1 -0
  446. package/dist/tl-DzIwhz3k.cjs +12 -0
  447. package/dist/tl-DzIwhz3k.cjs.map +1 -0
  448. package/dist/tl-icpkJ5RY.mjs +125 -0
  449. package/dist/tl-icpkJ5RY.mjs.map +1 -0
  450. package/dist/tl-lZlSu-sM.cjs +43 -0
  451. package/dist/tl-lZlSu-sM.cjs.map +1 -0
  452. package/dist/tr-9nLGvy6N.mjs +24 -0
  453. package/dist/tr-9nLGvy6N.mjs.map +1 -0
  454. package/dist/tr-B96yy4BZ.mjs +37 -0
  455. package/dist/tr-B96yy4BZ.mjs.map +1 -0
  456. package/dist/tr-BdEGICrX.cjs +80 -0
  457. package/dist/tr-BdEGICrX.cjs.map +1 -0
  458. package/dist/tr-Bsdv5dWu.cjs +12 -0
  459. package/dist/tr-Bsdv5dWu.cjs.map +1 -0
  460. package/dist/tr-Bu5HeGRu.cjs +30 -0
  461. package/dist/tr-Bu5HeGRu.cjs.map +1 -0
  462. package/dist/tr-COlHtN47.mjs +6 -0
  463. package/dist/tr-COlHtN47.mjs.map +1 -0
  464. package/dist/tr-CVK6oefd.cjs +12 -0
  465. package/dist/tr-CVK6oefd.cjs.map +1 -0
  466. package/dist/tr-CifdAA_w.cjs +43 -0
  467. package/dist/tr-CifdAA_w.cjs.map +1 -0
  468. package/dist/tr-D1KVbmGI.mjs +74 -0
  469. package/dist/tr-D1KVbmGI.mjs.map +1 -0
  470. package/dist/tr-DMnXKPnI.cjs +131 -0
  471. package/dist/tr-DMnXKPnI.cjs.map +1 -0
  472. package/dist/tr-DuFbZrRu.mjs +6 -0
  473. package/dist/tr-DuFbZrRu.mjs.map +1 -0
  474. package/dist/tr-QaTfqnit.mjs +125 -0
  475. package/dist/tr-QaTfqnit.mjs.map +1 -0
  476. package/dist/zh_CN-2FPc1yGp.mjs +6 -0
  477. package/dist/zh_CN-2FPc1yGp.mjs.map +1 -0
  478. package/dist/zh_CN-BJnhvkc0.mjs +37 -0
  479. package/dist/zh_CN-BJnhvkc0.mjs.map +1 -0
  480. package/dist/zh_CN-BT8zi4ct.mjs +125 -0
  481. package/dist/zh_CN-BT8zi4ct.mjs.map +1 -0
  482. package/dist/zh_CN-BUDga7b8.cjs +12 -0
  483. package/dist/zh_CN-BUDga7b8.cjs.map +1 -0
  484. package/dist/zh_CN-BWIy2qoV.cjs +43 -0
  485. package/dist/zh_CN-BWIy2qoV.cjs.map +1 -0
  486. package/dist/zh_CN-BrkBDK-m.cjs +131 -0
  487. package/dist/zh_CN-BrkBDK-m.cjs.map +1 -0
  488. package/dist/zh_CN-Bzo7sqbA.cjs +12 -0
  489. package/dist/zh_CN-Bzo7sqbA.cjs.map +1 -0
  490. package/dist/zh_CN-CEwzKvT8.mjs +74 -0
  491. package/dist/zh_CN-CEwzKvT8.mjs.map +1 -0
  492. package/dist/zh_CN-CLqN3qJp.mjs +24 -0
  493. package/dist/zh_CN-CLqN3qJp.mjs.map +1 -0
  494. package/dist/zh_CN-DZFGqn6D.cjs +30 -0
  495. package/dist/zh_CN-DZFGqn6D.cjs.map +1 -0
  496. package/dist/zh_CN-oOeDsP-B.mjs +6 -0
  497. package/dist/zh_CN-oOeDsP-B.mjs.map +1 -0
  498. package/dist/zh_CN-wE1DUfsY.cjs +80 -0
  499. package/dist/zh_CN-wE1DUfsY.cjs.map +1 -0
  500. package/dist/zh_TW-BeBQ0pV1.mjs +74 -0
  501. package/dist/zh_TW-BeBQ0pV1.mjs.map +1 -0
  502. package/dist/zh_TW-Bz5_kUpI.mjs +37 -0
  503. package/dist/zh_TW-Bz5_kUpI.mjs.map +1 -0
  504. package/dist/zh_TW-CZhSh3BU.cjs +80 -0
  505. package/dist/zh_TW-CZhSh3BU.cjs.map +1 -0
  506. package/dist/zh_TW-D-xI7JBs.mjs +6 -0
  507. package/dist/zh_TW-D-xI7JBs.mjs.map +1 -0
  508. package/dist/zh_TW-D86GUR9C.cjs +43 -0
  509. package/dist/zh_TW-D86GUR9C.cjs.map +1 -0
  510. package/dist/zh_TW-DPLNY3Sh.cjs +12 -0
  511. package/dist/zh_TW-DPLNY3Sh.cjs.map +1 -0
  512. package/dist/zh_TW-DQdWK1u9.cjs +12 -0
  513. package/dist/zh_TW-DQdWK1u9.cjs.map +1 -0
  514. package/dist/zh_TW-Dg6LeVzh.mjs +24 -0
  515. package/dist/zh_TW-Dg6LeVzh.mjs.map +1 -0
  516. package/dist/zh_TW-DoDLHILX.cjs +30 -0
  517. package/dist/zh_TW-DoDLHILX.cjs.map +1 -0
  518. package/dist/zh_TW-Dqcoo0F5.mjs +6 -0
  519. package/dist/zh_TW-Dqcoo0F5.mjs.map +1 -0
  520. package/dist/zh_TW-DzFlj-kU.cjs +131 -0
  521. package/dist/zh_TW-DzFlj-kU.cjs.map +1 -0
  522. package/dist/zh_TW-idE0Evam.mjs +125 -0
  523. package/dist/zh_TW-idE0Evam.mjs.map +1 -0
  524. package/package.json +16 -16
  525. package/dist/AddressAutocompleteInput-DiXfEThY.mjs +0 -2214
  526. package/dist/AddressAutocompleteInput-DiXfEThY.mjs.map +0 -1
  527. package/dist/AddressAutocompleteInput-DmsSlPVz.cjs +0 -2310
  528. package/dist/AddressAutocompleteInput-DmsSlPVz.cjs.map +0 -1
  529. package/dist/ContactsScreen-9SzNlWEb.cjs +0 -10
  530. package/dist/ContactsScreen-BIPKKITz.mjs +0 -3397
  531. package/dist/ContactsScreen-BIPKKITz.mjs.map +0 -1
  532. package/dist/ContactsScreen-Comv_f_d.cjs +0 -3405
  533. package/dist/ContactsScreen-Comv_f_d.cjs.map +0 -1
  534. package/dist/ProfileScreen-B4OYJdd1.cjs +0 -1244
  535. package/dist/ProfileScreen-B4OYJdd1.cjs.map +0 -1
  536. package/dist/ProfileScreen-Be3RVQ2L.mjs +0 -1232
  537. package/dist/ProfileScreen-Be3RVQ2L.mjs.map +0 -1
  538. package/dist/ProfileScreen-D9YYYFK-.mjs +0 -46
  539. package/dist/ProfileScreen-j7Eyy4tk.cjs +0 -48
  540. package/dist/ShareablesScreen-CPvylNL7.mjs +0 -13
  541. package/dist/ShareablesScreen-CQZBq1Hl.cjs +0 -13457
  542. package/dist/ShareablesScreen-CQZBq1Hl.cjs.map +0 -1
  543. package/dist/ShareablesScreen-DYOIQwK-.mjs +0 -13441
  544. package/dist/ShareablesScreen-DYOIQwK-.mjs.map +0 -1
  545. package/dist/ShareablesScreen-ljPcmGLg.cjs +0 -15
  546. package/dist/ShopScreen-BEKSgvCp.mjs +0 -45
  547. package/dist/ShopScreen-CU0ynA2v.mjs +0 -1282
  548. package/dist/ShopScreen-CU0ynA2v.mjs.map +0 -1
  549. package/dist/ShopScreen-Cr_XcWdY.cjs +0 -1295
  550. package/dist/ShopScreen-Cr_XcWdY.cjs.map +0 -1
  551. package/dist/ShopScreen-QjSfEvCZ.cjs +0 -47
  552. package/dist/SubscriptionsScreen-Ces1Pv8k.mjs +0 -5723
  553. package/dist/SubscriptionsScreen-Ces1Pv8k.mjs.map +0 -1
  554. package/dist/SubscriptionsScreen-Cu-WeJ7L.cjs +0 -11
  555. package/dist/SubscriptionsScreen-DMqKtptN.cjs +0 -5791
  556. package/dist/SubscriptionsScreen-DMqKtptN.cjs.map +0 -1
  557. package/dist/UpgradeScreen-B4CnkCjg.cjs +0 -203
  558. package/dist/UpgradeScreen-B4CnkCjg.cjs.map +0 -1
  559. package/dist/UpgradeScreen-C9TjaPoJ.mjs +0 -196
  560. package/dist/UpgradeScreen-C9TjaPoJ.mjs.map +0 -1
  561. package/dist/UpgradeScreen-jvHU1at7.cjs +0 -6
  562. package/dist/de-14i_YO8a.mjs +0 -125
  563. package/dist/de-14i_YO8a.mjs.map +0 -1
  564. package/dist/de-8f8CBqQz.mjs +0 -74
  565. package/dist/de-8f8CBqQz.mjs.map +0 -1
  566. package/dist/de-C2d-Wmdy.cjs +0 -80
  567. package/dist/de-C2d-Wmdy.cjs.map +0 -1
  568. package/dist/de-CjPctz3q.cjs +0 -43
  569. package/dist/de-CjPctz3q.cjs.map +0 -1
  570. package/dist/de-DBGj2OFs.cjs +0 -30
  571. package/dist/de-DBGj2OFs.cjs.map +0 -1
  572. package/dist/de-DCq1H3bn.mjs +0 -24
  573. package/dist/de-DCq1H3bn.mjs.map +0 -1
  574. package/dist/de-DbKC3CDA.mjs +0 -37
  575. package/dist/de-DbKC3CDA.mjs.map +0 -1
  576. package/dist/de-MxH9dP_P.cjs +0 -131
  577. package/dist/de-MxH9dP_P.cjs.map +0 -1
  578. package/dist/el-B0l-Q1qT.mjs +0 -37
  579. package/dist/el-B0l-Q1qT.mjs.map +0 -1
  580. package/dist/el-B8bnnoKc.mjs +0 -24
  581. package/dist/el-B8bnnoKc.mjs.map +0 -1
  582. package/dist/el-BGxr23AZ.mjs +0 -74
  583. package/dist/el-BGxr23AZ.mjs.map +0 -1
  584. package/dist/el-BKGArK2f.cjs +0 -80
  585. package/dist/el-BKGArK2f.cjs.map +0 -1
  586. package/dist/el-BdbemgXl.cjs +0 -43
  587. package/dist/el-BdbemgXl.cjs.map +0 -1
  588. package/dist/el-C_EpDLLk.mjs +0 -125
  589. package/dist/el-C_EpDLLk.mjs.map +0 -1
  590. package/dist/el-DJbG54c1.cjs +0 -30
  591. package/dist/el-DJbG54c1.cjs.map +0 -1
  592. package/dist/el-v1A4TFkT.cjs +0 -131
  593. package/dist/el-v1A4TFkT.cjs.map +0 -1
  594. package/dist/es-BMW1EA1c.cjs +0 -30
  595. package/dist/es-BMW1EA1c.cjs.map +0 -1
  596. package/dist/es-BaMIh5FA.mjs +0 -125
  597. package/dist/es-BaMIh5FA.mjs.map +0 -1
  598. package/dist/es-CT2hq6ZJ.mjs +0 -24
  599. package/dist/es-CT2hq6ZJ.mjs.map +0 -1
  600. package/dist/es-C_4clFHt.cjs +0 -80
  601. package/dist/es-C_4clFHt.cjs.map +0 -1
  602. package/dist/es-CiGfOfqA.cjs +0 -43
  603. package/dist/es-CiGfOfqA.cjs.map +0 -1
  604. package/dist/es-CtRMRF22.mjs +0 -37
  605. package/dist/es-CtRMRF22.mjs.map +0 -1
  606. package/dist/es-DwVnFc84.mjs +0 -74
  607. package/dist/es-DwVnFc84.mjs.map +0 -1
  608. package/dist/es-OY_6uXf5.cjs +0 -131
  609. package/dist/es-OY_6uXf5.cjs.map +0 -1
  610. package/dist/fr-6k1dLzPa.cjs +0 -30
  611. package/dist/fr-6k1dLzPa.cjs.map +0 -1
  612. package/dist/fr-BXkj4XVE.cjs +0 -43
  613. package/dist/fr-BXkj4XVE.cjs.map +0 -1
  614. package/dist/fr-BcnTVvSD.mjs +0 -24
  615. package/dist/fr-BcnTVvSD.mjs.map +0 -1
  616. package/dist/fr-C0Oj4xnv.mjs +0 -74
  617. package/dist/fr-C0Oj4xnv.mjs.map +0 -1
  618. package/dist/fr-Ce2tevwP.mjs +0 -125
  619. package/dist/fr-Ce2tevwP.mjs.map +0 -1
  620. package/dist/fr-DSG1yVZR.cjs +0 -80
  621. package/dist/fr-DSG1yVZR.cjs.map +0 -1
  622. package/dist/fr-Zh7yPXbQ.cjs +0 -131
  623. package/dist/fr-Zh7yPXbQ.cjs.map +0 -1
  624. package/dist/fr-kd7QtgdA.mjs +0 -37
  625. package/dist/fr-kd7QtgdA.mjs.map +0 -1
  626. package/dist/he-Alro4HT4.cjs +0 -30
  627. package/dist/he-Alro4HT4.cjs.map +0 -1
  628. package/dist/he-B4cg1J00.mjs +0 -74
  629. package/dist/he-B4cg1J00.mjs.map +0 -1
  630. package/dist/he-Bsinkol5.mjs +0 -125
  631. package/dist/he-Bsinkol5.mjs.map +0 -1
  632. package/dist/he-CTOKIYzG.cjs +0 -80
  633. package/dist/he-CTOKIYzG.cjs.map +0 -1
  634. package/dist/he-CdDmyq0k.cjs +0 -43
  635. package/dist/he-CdDmyq0k.cjs.map +0 -1
  636. package/dist/he-CuuLh6US.cjs +0 -131
  637. package/dist/he-CuuLh6US.cjs.map +0 -1
  638. package/dist/he-CvNcU3F-.mjs +0 -24
  639. package/dist/he-CvNcU3F-.mjs.map +0 -1
  640. package/dist/he-oOy2HM0e.mjs +0 -37
  641. package/dist/he-oOy2HM0e.mjs.map +0 -1
  642. package/dist/hu-B84oEeJZ.mjs +0 -125
  643. package/dist/hu-B84oEeJZ.mjs.map +0 -1
  644. package/dist/hu-BSPTfhWR.cjs +0 -43
  645. package/dist/hu-BSPTfhWR.cjs.map +0 -1
  646. package/dist/hu-CF_ikpEl.cjs +0 -80
  647. package/dist/hu-CF_ikpEl.cjs.map +0 -1
  648. package/dist/hu-CYlsbrG1.mjs +0 -24
  649. package/dist/hu-CYlsbrG1.mjs.map +0 -1
  650. package/dist/hu-D5x1eDHD.cjs +0 -30
  651. package/dist/hu-D5x1eDHD.cjs.map +0 -1
  652. package/dist/hu-Dv5s1IMB.mjs +0 -37
  653. package/dist/hu-Dv5s1IMB.mjs.map +0 -1
  654. package/dist/hu-IZ3Wz8XP.mjs +0 -74
  655. package/dist/hu-IZ3Wz8XP.mjs.map +0 -1
  656. package/dist/hu-Vw6dogZo.cjs +0 -131
  657. package/dist/hu-Vw6dogZo.cjs.map +0 -1
  658. package/dist/id-1z_sYwiV.cjs +0 -131
  659. package/dist/id-1z_sYwiV.cjs.map +0 -1
  660. package/dist/id-C30Gd0ig.mjs +0 -24
  661. package/dist/id-C30Gd0ig.mjs.map +0 -1
  662. package/dist/id-C4q84iQs.mjs +0 -37
  663. package/dist/id-C4q84iQs.mjs.map +0 -1
  664. package/dist/id-CKzznQLP.cjs +0 -80
  665. package/dist/id-CKzznQLP.cjs.map +0 -1
  666. package/dist/id-CXL-L1qX.mjs +0 -125
  667. package/dist/id-CXL-L1qX.mjs.map +0 -1
  668. package/dist/id-DI4Mmfx0.mjs +0 -74
  669. package/dist/id-DI4Mmfx0.mjs.map +0 -1
  670. package/dist/id-Duby505w.cjs +0 -30
  671. package/dist/id-Duby505w.cjs.map +0 -1
  672. package/dist/id-NeJHVkY8.cjs +0 -43
  673. package/dist/id-NeJHVkY8.cjs.map +0 -1
  674. package/dist/it-5pXu8eWE.cjs +0 -43
  675. package/dist/it-5pXu8eWE.cjs.map +0 -1
  676. package/dist/it-BSiMXbIw.cjs +0 -30
  677. package/dist/it-BSiMXbIw.cjs.map +0 -1
  678. package/dist/it-BbNDdOME.mjs +0 -37
  679. package/dist/it-BbNDdOME.mjs.map +0 -1
  680. package/dist/it-CQY4tm5S.cjs +0 -131
  681. package/dist/it-CQY4tm5S.cjs.map +0 -1
  682. package/dist/it-CTPG4nXE.mjs +0 -24
  683. package/dist/it-CTPG4nXE.mjs.map +0 -1
  684. package/dist/it-CnIs_n8L.mjs +0 -74
  685. package/dist/it-CnIs_n8L.mjs.map +0 -1
  686. package/dist/it-CwAg1PPt.mjs +0 -125
  687. package/dist/it-CwAg1PPt.mjs.map +0 -1
  688. package/dist/it-IEJYmwzw.cjs +0 -80
  689. package/dist/it-IEJYmwzw.cjs.map +0 -1
  690. package/dist/ja-B-YZ7YHO.mjs +0 -74
  691. package/dist/ja-B-YZ7YHO.mjs.map +0 -1
  692. package/dist/ja-BBOP6z7P.cjs +0 -131
  693. package/dist/ja-BBOP6z7P.cjs.map +0 -1
  694. package/dist/ja-CDnUJv_3.mjs +0 -37
  695. package/dist/ja-CDnUJv_3.mjs.map +0 -1
  696. package/dist/ja-D5845TL0.mjs +0 -24
  697. package/dist/ja-D5845TL0.mjs.map +0 -1
  698. package/dist/ja-DobSeN1K.cjs +0 -43
  699. package/dist/ja-DobSeN1K.cjs.map +0 -1
  700. package/dist/ja-X6HQT0aD.cjs +0 -80
  701. package/dist/ja-X6HQT0aD.cjs.map +0 -1
  702. package/dist/ja-lCgyxNWH.mjs +0 -125
  703. package/dist/ja-lCgyxNWH.mjs.map +0 -1
  704. package/dist/ja-pSbdkRSW.cjs +0 -30
  705. package/dist/ja-pSbdkRSW.cjs.map +0 -1
  706. package/dist/ko-B3Oa-b5c.mjs +0 -24
  707. package/dist/ko-B3Oa-b5c.mjs.map +0 -1
  708. package/dist/ko-B4GjXpnY.mjs +0 -125
  709. package/dist/ko-B4GjXpnY.mjs.map +0 -1
  710. package/dist/ko-BIi-F1dV.cjs +0 -131
  711. package/dist/ko-BIi-F1dV.cjs.map +0 -1
  712. package/dist/ko-BfySQ1ZI.mjs +0 -74
  713. package/dist/ko-BfySQ1ZI.mjs.map +0 -1
  714. package/dist/ko-C-DvBsfj.cjs +0 -80
  715. package/dist/ko-C-DvBsfj.cjs.map +0 -1
  716. package/dist/ko-CuJFyarb.cjs +0 -43
  717. package/dist/ko-CuJFyarb.cjs.map +0 -1
  718. package/dist/ko-ir7yEsoy.cjs +0 -30
  719. package/dist/ko-ir7yEsoy.cjs.map +0 -1
  720. package/dist/ko-o5PlsiO4.mjs +0 -37
  721. package/dist/ko-o5PlsiO4.mjs.map +0 -1
  722. package/dist/nl-B3aJ9t79.cjs +0 -30
  723. package/dist/nl-B3aJ9t79.cjs.map +0 -1
  724. package/dist/nl-B8i6Eran.mjs +0 -125
  725. package/dist/nl-B8i6Eran.mjs.map +0 -1
  726. package/dist/nl-Casz-6t5.mjs +0 -37
  727. package/dist/nl-Casz-6t5.mjs.map +0 -1
  728. package/dist/nl-D6QZWEm6.mjs +0 -74
  729. package/dist/nl-D6QZWEm6.mjs.map +0 -1
  730. package/dist/nl-DOW7O3Ls.cjs +0 -80
  731. package/dist/nl-DOW7O3Ls.cjs.map +0 -1
  732. package/dist/nl-DlW0bd6G.mjs +0 -24
  733. package/dist/nl-DlW0bd6G.mjs.map +0 -1
  734. package/dist/nl-L3QBBaKe.cjs +0 -131
  735. package/dist/nl-L3QBBaKe.cjs.map +0 -1
  736. package/dist/nl-UaKnUkiF.cjs +0 -43
  737. package/dist/nl-UaKnUkiF.cjs.map +0 -1
  738. package/dist/pl-BTpBOJRd.mjs +0 -74
  739. package/dist/pl-BTpBOJRd.mjs.map +0 -1
  740. package/dist/pl-Bc5PLKWA.cjs +0 -30
  741. package/dist/pl-Bc5PLKWA.cjs.map +0 -1
  742. package/dist/pl-BhYoyqAF.mjs +0 -125
  743. package/dist/pl-BhYoyqAF.mjs.map +0 -1
  744. package/dist/pl-CK-QOBHU.cjs +0 -43
  745. package/dist/pl-CK-QOBHU.cjs.map +0 -1
  746. package/dist/pl-CMFgAXzQ.mjs +0 -24
  747. package/dist/pl-CMFgAXzQ.mjs.map +0 -1
  748. package/dist/pl-CuCpTUw8.cjs +0 -80
  749. package/dist/pl-CuCpTUw8.cjs.map +0 -1
  750. package/dist/pl-Dhgn2yX2.cjs +0 -131
  751. package/dist/pl-Dhgn2yX2.cjs.map +0 -1
  752. package/dist/pl-QhF51ZKE.mjs +0 -37
  753. package/dist/pl-QhF51ZKE.mjs.map +0 -1
  754. package/dist/pt-BLHjWaSa.cjs +0 -43
  755. package/dist/pt-BLHjWaSa.cjs.map +0 -1
  756. package/dist/pt-BNcmRTXF.mjs +0 -125
  757. package/dist/pt-BNcmRTXF.mjs.map +0 -1
  758. package/dist/pt-Bk5lU5Bq.cjs +0 -30
  759. package/dist/pt-Bk5lU5Bq.cjs.map +0 -1
  760. package/dist/pt-Bo9r1x0D.cjs +0 -131
  761. package/dist/pt-Bo9r1x0D.cjs.map +0 -1
  762. package/dist/pt-CRWFsKEU.mjs +0 -37
  763. package/dist/pt-CRWFsKEU.mjs.map +0 -1
  764. package/dist/pt-DK2uIFjk.mjs +0 -24
  765. package/dist/pt-DK2uIFjk.mjs.map +0 -1
  766. package/dist/pt-DidvCPJO.mjs +0 -74
  767. package/dist/pt-DidvCPJO.mjs.map +0 -1
  768. package/dist/pt-gwAOG4ye.cjs +0 -80
  769. package/dist/pt-gwAOG4ye.cjs.map +0 -1
  770. package/dist/ro-0CezOHmT.cjs +0 -80
  771. package/dist/ro-0CezOHmT.cjs.map +0 -1
  772. package/dist/ro-B3zGlIxa.cjs +0 -30
  773. package/dist/ro-B3zGlIxa.cjs.map +0 -1
  774. package/dist/ro-D7ttD6wI.mjs +0 -24
  775. package/dist/ro-D7ttD6wI.mjs.map +0 -1
  776. package/dist/ro-DIuZ_x0Y.mjs +0 -125
  777. package/dist/ro-DIuZ_x0Y.mjs.map +0 -1
  778. package/dist/ro-DPmaLEta.cjs +0 -131
  779. package/dist/ro-DPmaLEta.cjs.map +0 -1
  780. package/dist/ro-DeurRKLx.mjs +0 -37
  781. package/dist/ro-DeurRKLx.mjs.map +0 -1
  782. package/dist/ro-nugOenVq.cjs +0 -43
  783. package/dist/ro-nugOenVq.cjs.map +0 -1
  784. package/dist/ro-uWPaYSks.mjs +0 -74
  785. package/dist/ro-uWPaYSks.mjs.map +0 -1
  786. package/dist/ru-AaRaNSOD.cjs +0 -80
  787. package/dist/ru-AaRaNSOD.cjs.map +0 -1
  788. package/dist/ru-B9QN1Xa3.cjs +0 -30
  789. package/dist/ru-B9QN1Xa3.cjs.map +0 -1
  790. package/dist/ru-C127BOjG.mjs +0 -125
  791. package/dist/ru-C127BOjG.mjs.map +0 -1
  792. package/dist/ru-C72sfdMa.mjs +0 -24
  793. package/dist/ru-C72sfdMa.mjs.map +0 -1
  794. package/dist/ru-CYExV0AV.cjs +0 -131
  795. package/dist/ru-CYExV0AV.cjs.map +0 -1
  796. package/dist/ru-D9P2Trsv.mjs +0 -74
  797. package/dist/ru-D9P2Trsv.mjs.map +0 -1
  798. package/dist/ru-DH4xf5h_.cjs +0 -43
  799. package/dist/ru-DH4xf5h_.cjs.map +0 -1
  800. package/dist/ru-DbmM_yGB.mjs +0 -37
  801. package/dist/ru-DbmM_yGB.mjs.map +0 -1
  802. package/dist/th-BFt4w61B.cjs +0 -30
  803. package/dist/th-BFt4w61B.cjs.map +0 -1
  804. package/dist/th-BG8R3dAP.cjs +0 -43
  805. package/dist/th-BG8R3dAP.cjs.map +0 -1
  806. package/dist/th-BJlArNGG.mjs +0 -24
  807. package/dist/th-BJlArNGG.mjs.map +0 -1
  808. package/dist/th-BavxQWOu.cjs +0 -131
  809. package/dist/th-BavxQWOu.cjs.map +0 -1
  810. package/dist/th-CGTuBtiC.mjs +0 -37
  811. package/dist/th-CGTuBtiC.mjs.map +0 -1
  812. package/dist/th-a1Jy5C_d.cjs +0 -80
  813. package/dist/th-a1Jy5C_d.cjs.map +0 -1
  814. package/dist/th-h90suc6n.mjs +0 -125
  815. package/dist/th-h90suc6n.mjs.map +0 -1
  816. package/dist/th-zwlwoiv6.mjs +0 -74
  817. package/dist/th-zwlwoiv6.mjs.map +0 -1
  818. package/dist/tl-BHwQDhWD.mjs +0 -125
  819. package/dist/tl-BHwQDhWD.mjs.map +0 -1
  820. package/dist/tl-BoIi6HWk.cjs +0 -131
  821. package/dist/tl-BoIi6HWk.cjs.map +0 -1
  822. package/dist/tl-BsGu5Py0.mjs +0 -24
  823. package/dist/tl-BsGu5Py0.mjs.map +0 -1
  824. package/dist/tl-ByorVCxH.cjs +0 -43
  825. package/dist/tl-ByorVCxH.cjs.map +0 -1
  826. package/dist/tl-C2azJUgn.mjs +0 -74
  827. package/dist/tl-C2azJUgn.mjs.map +0 -1
  828. package/dist/tl-Ce-0Cpm6.cjs +0 -30
  829. package/dist/tl-Ce-0Cpm6.cjs.map +0 -1
  830. package/dist/tl-DN6DtBpZ.cjs +0 -80
  831. package/dist/tl-DN6DtBpZ.cjs.map +0 -1
  832. package/dist/tl-DytTStSw.mjs +0 -37
  833. package/dist/tl-DytTStSw.mjs.map +0 -1
  834. package/dist/tr-5RnbIa4c.mjs +0 -24
  835. package/dist/tr-5RnbIa4c.mjs.map +0 -1
  836. package/dist/tr-8c97dqrL.cjs +0 -131
  837. package/dist/tr-8c97dqrL.cjs.map +0 -1
  838. package/dist/tr-BT6N_Wus.mjs +0 -74
  839. package/dist/tr-BT6N_Wus.mjs.map +0 -1
  840. package/dist/tr-BedGdI5d.cjs +0 -80
  841. package/dist/tr-BedGdI5d.cjs.map +0 -1
  842. package/dist/tr-BouBqgCB.mjs +0 -125
  843. package/dist/tr-BouBqgCB.mjs.map +0 -1
  844. package/dist/tr-D6eImzZD.mjs +0 -37
  845. package/dist/tr-D6eImzZD.mjs.map +0 -1
  846. package/dist/tr-DcRheecc.cjs +0 -43
  847. package/dist/tr-DcRheecc.cjs.map +0 -1
  848. package/dist/tr-De6vY4Jr.cjs +0 -30
  849. package/dist/tr-De6vY4Jr.cjs.map +0 -1
  850. package/dist/zh_CN-BQsZQZhr.mjs +0 -74
  851. package/dist/zh_CN-BQsZQZhr.mjs.map +0 -1
  852. package/dist/zh_CN-BokVyKnZ.cjs +0 -80
  853. package/dist/zh_CN-BokVyKnZ.cjs.map +0 -1
  854. package/dist/zh_CN-COIJjtl4.mjs +0 -37
  855. package/dist/zh_CN-COIJjtl4.mjs.map +0 -1
  856. package/dist/zh_CN-Cj5fwlCh.mjs +0 -24
  857. package/dist/zh_CN-Cj5fwlCh.mjs.map +0 -1
  858. package/dist/zh_CN-Cr8k96O_.cjs +0 -131
  859. package/dist/zh_CN-Cr8k96O_.cjs.map +0 -1
  860. package/dist/zh_CN-CtrM9Bt7.mjs +0 -125
  861. package/dist/zh_CN-CtrM9Bt7.mjs.map +0 -1
  862. package/dist/zh_CN-CubDPpC6.cjs +0 -43
  863. package/dist/zh_CN-CubDPpC6.cjs.map +0 -1
  864. package/dist/zh_CN-CyFIfnPm.cjs +0 -30
  865. package/dist/zh_CN-CyFIfnPm.cjs.map +0 -1
  866. package/dist/zh_TW-BQjHIF9g.cjs +0 -80
  867. package/dist/zh_TW-BQjHIF9g.cjs.map +0 -1
  868. package/dist/zh_TW-BrH-zluV.cjs +0 -43
  869. package/dist/zh_TW-BrH-zluV.cjs.map +0 -1
  870. package/dist/zh_TW-Cs0GkiU5.cjs +0 -30
  871. package/dist/zh_TW-Cs0GkiU5.cjs.map +0 -1
  872. package/dist/zh_TW-DB4Om9FX.mjs +0 -37
  873. package/dist/zh_TW-DB4Om9FX.mjs.map +0 -1
  874. package/dist/zh_TW-DdCGAeE-.mjs +0 -125
  875. package/dist/zh_TW-DdCGAeE-.mjs.map +0 -1
  876. package/dist/zh_TW-MAOS8yS2.mjs +0 -74
  877. package/dist/zh_TW-MAOS8yS2.mjs.map +0 -1
  878. package/dist/zh_TW-Q6KxkIVE.mjs +0 -24
  879. package/dist/zh_TW-Q6KxkIVE.mjs.map +0 -1
  880. package/dist/zh_TW-jgCKq0gP.cjs +0 -131
  881. package/dist/zh_TW-jgCKq0gP.cjs.map +0 -1
@@ -0,0 +1,1295 @@
1
+ const require_chunk = require("./chunk-9hOWP6kD.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-IQDml4f2.cjs");
3
+ const require_static_dict_adapter = require("./static-dict-adapter-D1ErNskC.cjs");
4
+ const require_src = require("./src-B0ut9PTw.cjs");
5
+ const require_ScreenHeaderContext = require("./ScreenHeaderContext-CsfhnuJk.cjs");
6
+ const require_use_store = require("./use-store-DvtLtZ3f.cjs");
7
+ const require_AppNavigationContext = require("./AppNavigationContext-C1-hd9Rw.cjs");
8
+ const require_PortalProductsApiProvider = require("./PortalProductsApiProvider-BNsaexxl.cjs");
9
+ let react = require("react");
10
+ react = require_chunk.__toESM(react);
11
+ let _tanstack_react_query = require("@tanstack/react-query");
12
+ let react_jsx_runtime = require("react/jsx-runtime");
13
+ let lucide_react = require("lucide-react");
14
+ let react_dom = require("react-dom");
15
+ //#region ../../shop/core/src/translation-api-context.ts
16
+ const { Provider, useTranslation } = require_static_dict_adapter.createTranslationContext("Shop");
17
+ const ShopTranslationProvider = Provider;
18
+ const useShopTranslation = useTranslation;
19
+ //#endregion
20
+ //#region ../../shop/ui/src/utils/media-helpers.ts
21
+ const VIDEO_EXTENSIONS = [
22
+ ".mp4",
23
+ ".webm",
24
+ ".mov",
25
+ ".avi",
26
+ ".m4v",
27
+ ".mkv",
28
+ ".ogv",
29
+ ".ogg",
30
+ ".wmv",
31
+ ".flv",
32
+ ".3gp"
33
+ ];
34
+ function isVideoUrl(url) {
35
+ if (!url) return false;
36
+ const lowerUrl = url.toLowerCase();
37
+ return VIDEO_EXTENSIONS.some((ext) => lowerUrl.includes(ext));
38
+ }
39
+ function getVideoThumbnailUrl(videoUrl) {
40
+ if (videoUrl.includes("ik.imagekit.io")) return `${videoUrl}/ik-thumbnail.jpg`;
41
+ return videoUrl;
42
+ }
43
+ //#endregion
44
+ //#region ../../shop/ui/src/components/product-card.tsx
45
+ function tagPortalProduct(product) {
46
+ return {
47
+ ...product,
48
+ __portalProduct: true
49
+ };
50
+ }
51
+ function isPortalProduct(product) {
52
+ return "__portalProduct" in product && product.__portalProduct === true;
53
+ }
54
+ function getPortalProductCoverImage(product) {
55
+ if (product.images && product.images.length > 0) return product.images[0]?.url ?? null;
56
+ return null;
57
+ }
58
+ function defaultRenderImage$1({ src, alt, fill, className, onError }) {
59
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
60
+ src,
61
+ alt,
62
+ className: `${fill ? "absolute inset-0 h-full w-full" : ""} ${className ?? ""}`,
63
+ onError
64
+ });
65
+ }
66
+ function formatPortalPrice(price, currency) {
67
+ if (!price) return null;
68
+ const numericPrice = Number(price);
69
+ if (Number.isNaN(numericPrice)) return `${currency ?? ""}${price}`;
70
+ try {
71
+ return new Intl.NumberFormat(void 0, {
72
+ style: "currency",
73
+ currency: currency || "USD"
74
+ }).format(numericPrice);
75
+ } catch {
76
+ return `$${price}`;
77
+ }
78
+ }
79
+ function ProductCardContent({ product, countryIso, companyLogoUrl, renderImage = defaultRenderImage$1 }) {
80
+ const [isHovered, setIsHovered] = (0, react.useState)(false);
81
+ const { t } = useShopTranslation();
82
+ const isPortal = isPortalProduct(product);
83
+ const coverImage = isPortal ? getPortalProductCoverImage(product) : require_PortalProductsApiProvider.getProductImageUrl(product);
84
+ const isVideo = isVideoUrl(coverImage);
85
+ const productName = isPortal ? product.name || t("no_title") : product.title || t("no_title");
86
+ let repPrice = null;
87
+ let price = null;
88
+ if (isPortal) if (product.wholesale_price) {
89
+ repPrice = formatPortalPrice(product.wholesale_price, product.currency);
90
+ const retailFormatted = formatPortalPrice(product.price, product.currency);
91
+ if (retailFormatted !== repPrice) price = retailFormatted;
92
+ } else repPrice = formatPortalPrice(product.price, product.currency);
93
+ else if (countryIso) {
94
+ const prices = require_PortalProductsApiProvider.determineProductPrice(product, countryIso);
95
+ repPrice = prices.repPrice;
96
+ price = prices.price;
97
+ }
98
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99
+ className: "bg-muted relative aspect-square overflow-hidden",
100
+ onMouseEnter: () => isVideo && setIsHovered(true),
101
+ onMouseLeave: () => isVideo && setIsHovered(false),
102
+ children: [isVideo && isHovered ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("video", {
103
+ src: coverImage || "",
104
+ className: "absolute inset-0 h-full w-full object-cover",
105
+ autoPlay: true,
106
+ muted: true,
107
+ loop: true,
108
+ playsInline: true
109
+ }) : renderImage({
110
+ src: isVideo && coverImage ? getVideoThumbnailUrl(coverImage) : coverImage || "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png",
111
+ alt: productName,
112
+ fill: true,
113
+ className: "object-cover transition-transform group-hover:scale-105",
114
+ onError: (e) => {
115
+ e.currentTarget.src = companyLogoUrl || "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
116
+ },
117
+ unoptimized: true
118
+ }), isVideo && !isHovered && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
119
+ className: "absolute inset-0 flex items-center justify-center",
120
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
121
+ className: "flex h-16 w-16 items-center justify-center rounded-full bg-black/50 backdrop-blur-sm",
122
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CirclePlay, { className: "h-12 w-12 text-white" })
123
+ })
124
+ })]
125
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
126
+ className: "px-3 pt-2 pb-4",
127
+ children: [
128
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
129
+ className: "text-foreground line-clamp-1 text-sm font-bold",
130
+ children: productName
131
+ }),
132
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
133
+ className: "flex items-center gap-2",
134
+ children: [repPrice && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
135
+ className: "text-foreground text-sm font-bold",
136
+ children: repPrice
137
+ }), price && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
138
+ className: "text-muted-foreground text-sm line-through",
139
+ children: price
140
+ })]
141
+ }),
142
+ !isPortal && countryIso && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
143
+ className: "text-muted-foreground text-sm",
144
+ children: [
145
+ "CV",
146
+ " ",
147
+ getVariantCountryValue(getSelectedVariant(product), countryIso, "cv") || "-",
148
+ " ",
149
+ "| QV",
150
+ " ",
151
+ getVariantCountryValue(getSelectedVariant(product), countryIso, "qv") || "-"
152
+ ]
153
+ }),
154
+ isPortal && product.wholesale_price != null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
155
+ className: "text-muted-foreground text-sm",
156
+ children: [
157
+ "CV ",
158
+ product.cv ?? "-",
159
+ " | QV ",
160
+ product.qv ?? "-"
161
+ ]
162
+ })
163
+ ]
164
+ })] });
165
+ }
166
+ function getSelectedVariant(product) {
167
+ if (!product.variants || product.variants.length === 0) return null;
168
+ const masterVariant = product.variants.find((v) => {
169
+ return "is_master" in v && v.is_master;
170
+ });
171
+ if (masterVariant) return masterVariant;
172
+ return product.variants[0] || null;
173
+ }
174
+ function getVariantCountryValue(variant, countryIso, field) {
175
+ if (!variant || !variant.variant_countries) return null;
176
+ if (typeof variant.variant_countries === "object" && !Array.isArray(variant.variant_countries)) return variant.variant_countries[countryIso]?.[field] ?? null;
177
+ if (Array.isArray(variant.variant_countries)) return variant.variant_countries.find((vc) => vc.country_iso === countryIso)?.[field] ?? null;
178
+ return null;
179
+ }
180
+ function ProductCard({ product, countryIso, companyLogoUrl, showShareModal = false, setShareModalOpen, setSelectedProduct, renderLink, renderImage, onClick }) {
181
+ const cardContent = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductCardContent, {
182
+ product,
183
+ countryIso,
184
+ companyLogoUrl,
185
+ renderImage
186
+ });
187
+ const cardClassName = "overflow-hidden border-0 shadow-none pt-0 gap-0";
188
+ if (showShareModal && !isPortalProduct(product)) {
189
+ const handleShareClick = () => {
190
+ if (setSelectedProduct && setShareModalOpen) {
191
+ setSelectedProduct(product);
192
+ setShareModalOpen(true);
193
+ }
194
+ };
195
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
196
+ className: cardClassName,
197
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
198
+ onClick: handleShareClick,
199
+ className: "group block w-full cursor-pointer text-left",
200
+ children: cardContent
201
+ })
202
+ });
203
+ }
204
+ if (onClick) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
205
+ className: cardClassName,
206
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
207
+ onClick,
208
+ className: "group block w-full cursor-pointer text-left",
209
+ children: cardContent
210
+ })
211
+ });
212
+ const href = `/portal/shop/${product.id}`;
213
+ if (renderLink) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
214
+ className: cardClassName,
215
+ children: renderLink({
216
+ href,
217
+ children: cardContent
218
+ })
219
+ });
220
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
221
+ className: cardClassName,
222
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
223
+ href,
224
+ className: "group block cursor-pointer",
225
+ children: cardContent
226
+ })
227
+ });
228
+ }
229
+ //#endregion
230
+ //#region ../../shop/ui/src/components/image-gallery.tsx
231
+ function defaultRenderImage({ src, alt, fill, className, onError }) {
232
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
233
+ src,
234
+ alt,
235
+ className: `${fill ? "absolute inset-0 h-full w-full" : ""} ${className ?? ""}`,
236
+ onError
237
+ });
238
+ }
239
+ function ImageGallery({ images, fallbackImageUrl, productTitle, renderImage = defaultRenderImage }) {
240
+ const [currentImageIndex, setCurrentImageIndex] = (0, react.useState)(0);
241
+ const hasMultipleImages = images && images.length > 0;
242
+ const displayImages = (0, react.useMemo)(() => hasMultipleImages ? [...images].sort((a, b) => a.position - b.position) : [{
243
+ id: 0,
244
+ image_url: fallbackImageUrl,
245
+ position: 0
246
+ }], [
247
+ images,
248
+ hasMultipleImages,
249
+ fallbackImageUrl
250
+ ]);
251
+ (0, react.useEffect)(() => {
252
+ setCurrentImageIndex(0);
253
+ }, [displayImages]);
254
+ const nextImage = () => {
255
+ if (displayImages.length > 1) setCurrentImageIndex((prev) => (prev + 1) % displayImages.length);
256
+ };
257
+ const prevImage = () => {
258
+ if (displayImages.length > 1) setCurrentImageIndex((prev) => (prev - 1 + displayImages.length) % displayImages.length);
259
+ };
260
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
261
+ className: "space-y-4",
262
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
263
+ className: "group relative aspect-square overflow-hidden rounded-sm bg-gray-100",
264
+ children: [
265
+ isVideoUrl(displayImages[currentImageIndex]?.image_url) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("video", {
266
+ src: displayImages[currentImageIndex]?.image_url,
267
+ className: "absolute inset-0 h-full w-full object-cover",
268
+ controls: true,
269
+ loop: true,
270
+ playsInline: true
271
+ }, displayImages[currentImageIndex]?.id) : renderImage({
272
+ src: displayImages[currentImageIndex]?.image_url || fallbackImageUrl,
273
+ alt: productTitle,
274
+ fill: true,
275
+ className: "object-cover",
276
+ onError: (e) => {
277
+ e.currentTarget.src = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
278
+ },
279
+ unoptimized: true
280
+ }),
281
+ displayImages.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
282
+ type: "button",
283
+ "aria-label": "Previous image",
284
+ className: "absolute top-1/2 left-3 z-10 flex h-8 w-8 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full bg-white/40 shadow-sm transition-colors group-hover:bg-white/80 hover:bg-white",
285
+ onClick: prevImage,
286
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronLeft, { className: "h-5 w-5 text-black/40 transition-colors group-hover:text-black" })
287
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
288
+ type: "button",
289
+ "aria-label": "Next image",
290
+ className: "absolute top-1/2 right-3 z-10 flex h-8 w-8 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full bg-white/40 shadow-sm transition-colors group-hover:bg-white/80 hover:bg-white",
291
+ onClick: nextImage,
292
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRight, { className: "h-5 w-5 text-black/40 transition-colors group-hover:text-black" })
293
+ })] }),
294
+ displayImages.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
295
+ className: "absolute bottom-3 left-1/2 flex -translate-x-1/2 gap-3",
296
+ children: displayImages.map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
297
+ type: "button",
298
+ className: `h-1.5 w-6 cursor-pointer rounded-lg transition-colors ${index === currentImageIndex ? "bg-gray-800" : "bg-gray-400 hover:bg-gray-600"}`,
299
+ "aria-label": `Go to image ${index + 1}`,
300
+ onClick: () => setCurrentImageIndex(index)
301
+ }, index))
302
+ })
303
+ ]
304
+ })
305
+ });
306
+ }
307
+ //#endregion
308
+ //#region ../../shop/ui/src/components/quantity-selector.tsx
309
+ function QuantitySelector({ quantity, setQuantity }) {
310
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
311
+ className: "flex items-center gap-3",
312
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
313
+ className: "flex items-center rounded-lg",
314
+ children: [
315
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
316
+ variant: "default",
317
+ onClick: () => setQuantity(Math.max(1, quantity - 1)),
318
+ className: "border-0 px-3 py-2 shadow-none",
319
+ children: "−"
320
+ }),
321
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
322
+ className: "text-foreground min-w-8 px-4 py-2 text-center text-sm font-medium",
323
+ children: quantity
324
+ }),
325
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
326
+ variant: "default",
327
+ onClick: () => setQuantity(quantity + 1),
328
+ className: "border-0 px-3 py-2 shadow-none",
329
+ children: "+"
330
+ })
331
+ ]
332
+ })
333
+ });
334
+ }
335
+ //#endregion
336
+ //#region ../../shop/ui/src/components/purchase-options.tsx
337
+ function PurchaseOptions({ showBuyOnce, showSubscribe, isSubscribe, onSubscribeChange, product_subscription_plans, selectedSubscriptionPlan, onSubscriptionPlanChange, userSelectedSubscribe, wholesalePrice, wholesaleSubscriptionPrice }) {
338
+ const { t } = useShopTranslation();
339
+ const defaultSubscriptionPlan = (0, react.useMemo)(() => {
340
+ if (!product_subscription_plans?.length) return null;
341
+ return product_subscription_plans.find((plan) => plan.default) || product_subscription_plans[0];
342
+ }, [product_subscription_plans]);
343
+ const currentSubscriptionPlan = selectedSubscriptionPlan || defaultSubscriptionPlan;
344
+ const savingsPercentage = (0, react.useMemo)(() => {
345
+ if (wholesalePrice === void 0 || wholesaleSubscriptionPrice === void 0 || wholesalePrice <= 0) return null;
346
+ const savings = wholesalePrice - wholesaleSubscriptionPrice;
347
+ if (savings <= 0) return null;
348
+ const pct = Math.round(savings / wholesalePrice * 100);
349
+ return pct > 0 ? pct : null;
350
+ }, [wholesalePrice, wholesaleSubscriptionPrice]);
351
+ const formatSubscriptionPlan = (plan) => {
352
+ return `${plan.subscription_plan.billing_interval} ${plan.subscription_plan.billing_interval_unit} (${plan.subscription_plan.name})`;
353
+ };
354
+ const subscriptionPlanOptions = (0, react.useMemo)(() => {
355
+ if (!product_subscription_plans?.length) return [];
356
+ return product_subscription_plans.map((plan) => ({
357
+ value: plan.subscription_plan.id.toString(),
358
+ label: formatSubscriptionPlan(plan)
359
+ }));
360
+ }, [product_subscription_plans]);
361
+ if (showBuyOnce && !showSubscribe) return null;
362
+ const handleSubscriptionPlanChange = (planId) => {
363
+ const selectedPlan = product_subscription_plans?.find((plan) => plan.subscription_plan.id.toString() === planId);
364
+ if (selectedPlan && onSubscriptionPlanChange) onSubscriptionPlanChange(selectedPlan);
365
+ };
366
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
367
+ className: "mb-3 flex flex-col",
368
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.RadioGroup, {
369
+ value: isSubscribe ? "subscribe" : "once",
370
+ onValueChange: (value) => onSubscribeChange(value === "subscribe"),
371
+ className: "gap-0 space-y-0",
372
+ children: [showSubscribe && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
373
+ onClick: () => onSubscribeChange(true),
374
+ className: `cursor-pointer rounded-t-lg p-4 text-left transition-all duration-200 ${showBuyOnce ? "border border-b-0" : "rounded-b-lg"} ${userSelectedSubscribe ? "bg-muted" : "bg-background"}`,
375
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
376
+ className: "flex items-start space-x-3",
377
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.RadioGroupItem, {
378
+ value: "subscribe",
379
+ onClick: (e) => e.stopPropagation(),
380
+ className: `flex items-center justify-center [&_svg]:h-1.5 [&_svg]:w-1.5 [&_svg]:fill-white ${isSubscribe ? "border-contrast bg-contrast text-foreground" : "border-border bg-background text-muted-foreground"}`
381
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
382
+ className: "flex-1",
383
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
384
+ className: "text-foreground mb-1 text-sm leading-tight font-medium",
385
+ children: savingsPercentage ? t("subscribe_and_save", { percentage: savingsPercentage }) : t("subscribe")
386
+ }), product_subscription_plans?.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
387
+ className: "bg-muted mt-3 rounded-lg p-2",
388
+ onClick: (e) => e.stopPropagation(),
389
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
390
+ className: "text-foreground mb-1 text-xs font-medium",
391
+ children: t("delivery_frequency")
392
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
393
+ value: currentSubscriptionPlan?.subscription_plan.id.toString() || "",
394
+ onValueChange: handleSubscriptionPlanChange,
395
+ disabled: product_subscription_plans?.length === 1,
396
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
397
+ className: "bg-background text-foreground! w-full text-xs",
398
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: t("select_delivery_schedule") })
399
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, { children: subscriptionPlanOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
400
+ value: option.value,
401
+ children: option.label
402
+ }, option.value)) })]
403
+ })]
404
+ })]
405
+ })]
406
+ })
407
+ }), showBuyOnce && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
408
+ onClick: () => onSubscribeChange(false),
409
+ className: `cursor-pointer rounded-b-lg border p-4 text-left transition-all duration-200 ${showSubscribe ? "border-t-0" : "rounded-t-lg"} ${!userSelectedSubscribe ? "bg-muted" : "bg-background"}`,
410
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
411
+ className: "flex items-center space-x-3",
412
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.RadioGroupItem, {
413
+ value: "once",
414
+ onClick: (e) => e.stopPropagation(),
415
+ className: `flex items-center justify-center [&_svg]:h-1.5 [&_svg]:w-1.5 [&_svg]:fill-white ${!isSubscribe ? "border-contrast bg-contrast text-foreground" : "border-border bg-background text-muted-foreground"}`
416
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
417
+ className: "text-foreground mb-1 text-sm leading-tight font-medium",
418
+ children: t("one_time_purchase")
419
+ })]
420
+ })
421
+ })]
422
+ })
423
+ });
424
+ }
425
+ //#endregion
426
+ //#region ../../shop/ui/src/components/shop-app.tsx
427
+ const PAGE_SIZE = 25;
428
+ function sanitizeHtml(html) {
429
+ const doc = new DOMParser().parseFromString(html, "text/html");
430
+ for (const el of doc.querySelectorAll("script, iframe, object, embed, form, base, meta, link, style")) el.remove();
431
+ for (const el of doc.querySelectorAll("*")) for (const attr of [...el.attributes]) if (attr.name.toLowerCase().startsWith("on") || attr.value.toLowerCase().trim().startsWith("javascript:")) el.removeAttribute(attr.name);
432
+ return doc.body.innerHTML;
433
+ }
434
+ const GRID_CLASS = "grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-4";
435
+ function SkeletonGrid({ count = 8 }) {
436
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
437
+ className: GRID_CLASS,
438
+ children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
439
+ className: "space-y-2",
440
+ children: [
441
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "aspect-square w-full rounded-lg" }),
442
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-3/4" }),
443
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-1/2" }),
444
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3 w-1/3" })
445
+ ]
446
+ }, i))
447
+ });
448
+ }
449
+ function ProductListing({ companyLogoUrl, renderImage, onSelectProduct, cartButton }) {
450
+ const observerTarget = (0, react.useRef)(null);
451
+ const { t } = useShopTranslation();
452
+ const catalog = require_PortalProductsApiProvider.usePortalProductCatalog({ perPage: PAGE_SIZE });
453
+ const { data, isLoading, isFetchingNextPage, hasNextPage, fetchNextPage, error, isFetched } = (0, _tanstack_react_query.useInfiniteQuery)({
454
+ queryKey: catalog.queryKey,
455
+ queryFn: ({ pageParam }) => catalog.fetchProducts(pageParam),
456
+ getNextPageParam: catalog.getNextPageParam,
457
+ initialPageParam: void 0
458
+ });
459
+ const handleIntersect = (0, react.useCallback)((entries) => {
460
+ if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) fetchNextPage();
461
+ }, [
462
+ hasNextPage,
463
+ isFetchingNextPage,
464
+ fetchNextPage
465
+ ]);
466
+ (0, react.useEffect)(() => {
467
+ const target = observerTarget.current;
468
+ if (!target) return;
469
+ const observer = new IntersectionObserver(handleIntersect, {
470
+ threshold: .1,
471
+ rootMargin: "200px"
472
+ });
473
+ observer.observe(target);
474
+ return () => observer.disconnect();
475
+ }, [handleIntersect]);
476
+ const allProducts = data?.pages.flatMap((page) => page.products) ?? [];
477
+ const sortOptions = (0, react.useMemo)(() => [
478
+ {
479
+ id: "title_asc",
480
+ label: t("sort_title_asc")
481
+ },
482
+ {
483
+ id: "title_desc",
484
+ label: t("sort_title_desc")
485
+ },
486
+ {
487
+ id: "price_asc",
488
+ label: t("sort_price_asc")
489
+ },
490
+ {
491
+ id: "price_desc",
492
+ label: t("sort_price_desc")
493
+ },
494
+ {
495
+ id: "created_at_desc",
496
+ label: t("sort_recent")
497
+ },
498
+ {
499
+ id: "created_at_asc",
500
+ label: t("sort_oldest")
501
+ }
502
+ ], [t]);
503
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
504
+ className: "mx-auto px-2 md:px-10",
505
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
506
+ className: "flex items-center justify-end gap-2 py-4",
507
+ children: [
508
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
509
+ className: "w-full max-w-sm",
510
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PortalProductsApiProvider.SearchSort, {
511
+ searchValue: catalog.searchTerm,
512
+ onSearchChange: catalog.setSearchTerm,
513
+ placeholder: t("search_placeholder")
514
+ })
515
+ }),
516
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
517
+ asChild: true,
518
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
519
+ variant: "outline",
520
+ size: "icon",
521
+ className: "border-foreground/10 shadow-input h-9 w-9 shrink-0",
522
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowUpDown, { className: "h-3 w-3" })
523
+ })
524
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuContent, {
525
+ align: "end",
526
+ className: "w-60",
527
+ children: [
528
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuLabel, { children: t("sort_by") }),
529
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuSeparator, {}),
530
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuRadioGroup, {
531
+ value: catalog.currentSort,
532
+ onValueChange: catalog.setCurrentSort,
533
+ children: sortOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuRadioItem, {
534
+ value: opt.id,
535
+ children: opt.label
536
+ }, opt.id))
537
+ })
538
+ ]
539
+ })] }),
540
+ cartButton && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
541
+ className: "flex shrink-0 items-center gap-3",
542
+ children: cartButton
543
+ })
544
+ ]
545
+ })
546
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
547
+ className: "mx-auto space-y-8 px-2 md:px-10 md:py-8",
548
+ children: isLoading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonGrid, {}) : error ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
549
+ className: "mx-auto my-6 rounded-lg bg-red-100 px-3 py-2 text-red-500",
550
+ children: t("error_generic")
551
+ }) : isFetched && allProducts.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
552
+ className: "flex flex-col items-center justify-center py-8 text-center",
553
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
554
+ className: "text-muted-foreground text-sm",
555
+ children: catalog.searchTerm ? t("no_search_results", { term: catalog.searchTerm }) : t("no_products")
556
+ })
557
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
558
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
559
+ className: GRID_CLASS,
560
+ children: allProducts.map((product) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductCard, {
561
+ product: tagPortalProduct(product),
562
+ companyLogoUrl,
563
+ renderImage,
564
+ onClick: () => onSelectProduct(String(product.id))
565
+ }, product.id))
566
+ }),
567
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { ref: observerTarget }),
568
+ isFetchingNextPage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkeletonGrid, { count: 4 })
569
+ ] })
570
+ })] });
571
+ }
572
+ /**
573
+ * Build the variant options map by grouping option_values across non-master variants.
574
+ * Groups by option_id, collecting unique value entries.
575
+ */
576
+ function buildOptionGroups(variants) {
577
+ const groupMap = /* @__PURE__ */ new Map();
578
+ for (const variant of variants) {
579
+ if (variant.is_master) continue;
580
+ for (const ov of variant.option_values ?? []) {
581
+ if (ov.option_id == null || ov.id == null) continue;
582
+ if (!groupMap.has(ov.option_id)) groupMap.set(ov.option_id, {
583
+ name: ov.option_name ?? `Option ${ov.option_id}`,
584
+ values: /* @__PURE__ */ new Map()
585
+ });
586
+ groupMap.get(ov.option_id).values.set(ov.id, ov.name ?? String(ov.id));
587
+ }
588
+ }
589
+ return [...groupMap.entries()].map(([optionId, group]) => ({
590
+ optionId,
591
+ name: group.name,
592
+ values: [...group.values.entries()].map(([id, name]) => ({
593
+ id,
594
+ name
595
+ }))
596
+ }));
597
+ }
598
+ /**
599
+ * Find the variant matching a set of selected option value IDs.
600
+ * selections is a map of optionId → selected value id.
601
+ */
602
+ function findVariantBySelections(variants, selections) {
603
+ const entries = Object.entries(selections).map(([k, v]) => [Number(k), v]);
604
+ if (entries.length === 0) return void 0;
605
+ return variants.find((v) => !v.is_master && entries.every(([optionId, valueId]) => v.option_values?.some((ov) => ov.option_id === optionId && ov.id === valueId)));
606
+ }
607
+ /**
608
+ * Map BFF flat subscription plans to the legacy ProductSubscriptionPlan shape
609
+ * expected by the PurchaseOptions component.
610
+ */
611
+ function mapToLegacySubscriptionPlans(plans) {
612
+ return plans.map((plan, idx) => ({
613
+ id: plan.id,
614
+ default: idx === 0,
615
+ products_count: null,
616
+ subscribers_count: null,
617
+ active: true,
618
+ subscription_plan: {
619
+ id: plan.id ?? 0,
620
+ name: plan.name ?? "",
621
+ billing_interval: plan.billing_interval ?? 1,
622
+ billing_interval_unit: plan.billing_interval_unit ?? "month",
623
+ billing_frequency_in_words: plan.billing_frequency ?? `${plan.billing_interval} ${plan.billing_interval_unit}`,
624
+ active: true,
625
+ price_adjustment_amount: null,
626
+ price_adjustment_type: null
627
+ }
628
+ }));
629
+ }
630
+ function formatPrice(price, currency) {
631
+ if (!price) return null;
632
+ const numericPrice = Number(price);
633
+ if (Number.isNaN(numericPrice)) return `${currency ?? ""}${price}`;
634
+ try {
635
+ return new Intl.NumberFormat(void 0, {
636
+ style: "currency",
637
+ currency: currency || "USD"
638
+ }).format(numericPrice);
639
+ } catch {
640
+ return `$${price}`;
641
+ }
642
+ }
643
+ function ProductDetail({ productId, renderImage }) {
644
+ const [quantity, setQuantity] = (0, react.useState)(1);
645
+ const [selections, setSelections] = (0, react.useState)({});
646
+ const [userSelectedSubscribe, setUserSelectedSubscribe] = (0, react.useState)(false);
647
+ const [selectedSubscriptionPlan, setSelectedSubscriptionPlan] = (0, react.useState)(void 0);
648
+ const { t } = useShopTranslation();
649
+ const { product, isLoading, error, images } = require_PortalProductsApiProvider.usePortalProductDetail({ productId });
650
+ const variants = (0, react.useMemo)(() => product?.variants ?? [], [product?.variants]);
651
+ const subscriptionPlans = (0, react.useMemo)(() => product?.subscription_plans ?? [], [product?.subscription_plans]);
652
+ const masterVariant = (0, react.useMemo)(() => variants.find((v) => v.is_master) ?? variants[0], [variants]);
653
+ const optionGroups = (0, react.useMemo)(() => buildOptionGroups(variants), [variants]);
654
+ const showVariantChoices = optionGroups.length === 0 && variants.length > 1;
655
+ const [selectedVariantId, setSelectedVariantId] = (0, react.useState)(null);
656
+ (0, react.useEffect)(() => {
657
+ if (optionGroups.length === 0) return;
658
+ const source = variants.find((v) => !v.is_master) ?? masterVariant;
659
+ if (!source?.option_values?.length) return;
660
+ const defaults = {};
661
+ for (const ov of source.option_values) if (ov.option_id != null && ov.id != null) defaults[ov.option_id] = ov.id;
662
+ setSelections(defaults);
663
+ }, [
664
+ optionGroups,
665
+ variants,
666
+ masterVariant
667
+ ]);
668
+ (0, react.useEffect)(() => {
669
+ if (!showVariantChoices) return;
670
+ if (selectedVariantId != null) return;
671
+ if (masterVariant?.id == null) return;
672
+ setSelectedVariantId(masterVariant.id);
673
+ }, [
674
+ showVariantChoices,
675
+ selectedVariantId,
676
+ masterVariant?.id
677
+ ]);
678
+ const selectedVariant = (0, react.useMemo)(() => {
679
+ if (showVariantChoices) return variants.find((v) => v.id === selectedVariantId) ?? masterVariant;
680
+ if (optionGroups.length === 0) return masterVariant;
681
+ return findVariantBySelections(variants, selections) ?? masterVariant;
682
+ }, [
683
+ variants,
684
+ optionGroups,
685
+ selections,
686
+ masterVariant,
687
+ showVariantChoices,
688
+ selectedVariantId
689
+ ]);
690
+ const legacySubscriptionPlans = (0, react.useMemo)(() => mapToLegacySubscriptionPlans(subscriptionPlans), [subscriptionPlans]);
691
+ const isSubscribe = selectedVariant?.subscription_only === true || userSelectedSubscribe;
692
+ const showSubscribe = legacySubscriptionPlans.length > 0;
693
+ const showBuyOnce = selectedVariant?.subscription_only !== true;
694
+ (0, react.useEffect)(() => {
695
+ if (selectedVariant?.subscription_only && legacySubscriptionPlans.length > 0) setUserSelectedSubscribe(true);
696
+ }, [selectedVariant, legacySubscriptionPlans]);
697
+ const galleryImages = (0, react.useMemo)(() => {
698
+ const variantImages = selectedVariant?.images;
699
+ if (variantImages && variantImages.length > 0) return variantImages.map((img, idx) => ({
700
+ id: idx,
701
+ image_url: img.url ?? "",
702
+ image_path: null,
703
+ position: idx
704
+ }));
705
+ return images.map((img, idx) => ({
706
+ id: img.id ?? idx,
707
+ image_url: img.url,
708
+ image_path: null,
709
+ position: idx
710
+ }));
711
+ }, [selectedVariant?.images, images]);
712
+ const coverImage = galleryImages[0]?.image_url ?? null;
713
+ const selectedPricing = selectedVariant?.subscription_pricing?.find((sp) => sp.plan_id === (selectedSubscriptionPlan?.subscription_plan.id ?? legacySubscriptionPlans[0]?.subscription_plan.id));
714
+ const wholesalePrice = selectedVariant?.wholesale_price ? Number(selectedVariant.wholesale_price) : void 0;
715
+ const wholesaleSubscriptionPrice = selectedPricing?.wholesale_price ? Number(selectedPricing.wholesale_price) : void 0;
716
+ const currency = selectedVariant?.currency ?? product?.currency;
717
+ const displayPrice = formatPrice(selectedVariant?.price ?? product?.price, currency);
718
+ const displayWholesalePrice = formatPrice(selectedVariant?.wholesale_price ?? selectedVariant?.price ?? product?.price, currency);
719
+ const displayWholesaleSubscriptionPrice = formatPrice(selectedPricing?.wholesale_price ?? selectedPricing?.price ?? selectedVariant?.wholesale_price ?? void 0, currency);
720
+ const resolvedPlanId = selectedSubscriptionPlan?.subscription_plan.id ?? legacySubscriptionPlans.find((p) => p.default)?.subscription_plan.id ?? legacySubscriptionPlans[0]?.subscription_plan.id;
721
+ const cartVariantId = String(selectedVariant?.id ?? product?.id ?? "");
722
+ if (isLoading) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
723
+ className: "mx-auto max-w-7xl py-8 pr-4 pl-0 md:pr-6 lg:pr-8 lg:pl-0",
724
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
725
+ className: "grid grid-cols-1 gap-5 lg:grid-cols-2",
726
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "aspect-square w-full rounded-lg" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
727
+ className: "space-y-4 pl-2 lg:pl-20",
728
+ children: [
729
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-8 w-3/4" }),
730
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-1/4" }),
731
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-20 w-full" }),
732
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-10 w-1/2" }),
733
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-10 w-full" })
734
+ ]
735
+ })]
736
+ })
737
+ });
738
+ if (error) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
739
+ className: "flex min-h-[400px] items-center justify-center",
740
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
741
+ className: "text-center",
742
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
743
+ className: "text-foreground mb-2 text-lg font-medium",
744
+ children: t("error_loading")
745
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
746
+ className: "text-muted-foreground",
747
+ children: t("error_generic")
748
+ })]
749
+ })
750
+ });
751
+ if (!product) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
752
+ className: "flex min-h-[400px] items-center justify-center",
753
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
754
+ className: "text-center",
755
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
756
+ className: "text-foreground mb-2 text-lg font-medium",
757
+ children: t("product_not_found")
758
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
759
+ className: "text-muted-foreground",
760
+ children: t("product_not_found_description")
761
+ })]
762
+ })
763
+ });
764
+ const title = product.name || t("product_fallback_name");
765
+ const isBundle = product.bundle === true;
766
+ const bundleUrl = isBundle && product.canonical_url ? product.canonical_url : null;
767
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
768
+ className: "pb-5 md:pl-8",
769
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
770
+ className: "mx-auto max-w-7xl px-4 py-8 md:pr-6 md:pl-0 lg:pr-8 lg:pl-0",
771
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
772
+ className: "grid grid-cols-1 gap-5 lg:grid-cols-2",
773
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ImageGallery, {
774
+ images: galleryImages,
775
+ fallbackImageUrl: coverImage ?? "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png",
776
+ productTitle: title,
777
+ renderImage
778
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
779
+ className: "max-w-lg pl-2 lg:pl-20",
780
+ children: [
781
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
782
+ className: "text-foreground text-3xl font-bold",
783
+ children: title
784
+ }),
785
+ !isBundle && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
786
+ className: "mb-2 flex items-center gap-2",
787
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
788
+ className: "text-foreground text-sm",
789
+ children: isSubscribe ? displayWholesaleSubscriptionPrice : displayWholesalePrice
790
+ }), (isSubscribe && displayWholesaleSubscriptionPrice !== displayWholesalePrice || !isSubscribe && displayWholesalePrice !== displayPrice) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
791
+ className: "text-muted-foreground text-sm line-through",
792
+ children: isSubscribe ? displayWholesalePrice : displayPrice
793
+ })]
794
+ }),
795
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
796
+ className: "pt-2",
797
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
798
+ className: "text-foreground mb-1 text-sm font-medium",
799
+ children: t("product_description")
800
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
801
+ className: "text-foreground mb-3 text-[12px]",
802
+ dangerouslySetInnerHTML: { __html: sanitizeHtml(product.description ?? "") }
803
+ })]
804
+ }),
805
+ product.wholesale_price != null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
806
+ className: "text-muted-foreground mb-3 text-sm",
807
+ children: [
808
+ "CV ",
809
+ selectedVariant?.cv ?? "-",
810
+ " | QV",
811
+ " ",
812
+ selectedVariant?.qv ?? "-"
813
+ ]
814
+ }),
815
+ isBundle ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
816
+ className: "pt-4",
817
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
818
+ variant: "default",
819
+ className: "w-full gap-2 py-2 text-base font-medium",
820
+ disabled: !bundleUrl,
821
+ onClick: () => {
822
+ if (bundleUrl) window.open(bundleUrl, "_blank", "noopener,noreferrer");
823
+ },
824
+ children: t("purchase_bundle")
825
+ }), !bundleUrl && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
826
+ className: "text-muted-foreground mt-2 text-center text-xs",
827
+ children: t("bundle_unavailable")
828
+ })]
829
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
830
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PurchaseOptions, {
831
+ showBuyOnce,
832
+ showSubscribe,
833
+ isSubscribe,
834
+ userSelectedSubscribe,
835
+ onSubscribeChange: setUserSelectedSubscribe,
836
+ wholesalePrice,
837
+ wholesaleSubscriptionPrice,
838
+ product_subscription_plans: legacySubscriptionPlans,
839
+ selectedSubscriptionPlan,
840
+ onSubscriptionPlanChange: setSelectedSubscriptionPlan
841
+ }),
842
+ optionGroups.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
843
+ className: "mb-4 pt-4",
844
+ children: optionGroups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
845
+ className: "mb-3 flex items-center",
846
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
847
+ className: "text-md text-foreground w-24 font-bold",
848
+ children: group.name.charAt(0).toUpperCase() + group.name.slice(1)
849
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
850
+ value: String(selections[group.optionId] ?? ""),
851
+ onValueChange: (value) => setSelections((prev) => ({
852
+ ...prev,
853
+ [group.optionId]: Number(value)
854
+ })),
855
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
856
+ className: "w-48 max-w-full",
857
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: t("select_option", { name: group.name }) })
858
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, {
859
+ position: "popper",
860
+ className: "max-h-60",
861
+ children: group.values.map((v) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
862
+ value: String(v.id),
863
+ children: v.name
864
+ }, v.id))
865
+ })]
866
+ })]
867
+ }, group.optionId))
868
+ }),
869
+ showVariantChoices && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
870
+ className: "mb-4 pt-4",
871
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
872
+ className: "mb-3 flex items-center",
873
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
874
+ className: "text-md text-foreground w-24 font-bold",
875
+ children: "Variant"
876
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
877
+ value: selectedVariantId != null ? String(selectedVariantId) : "",
878
+ onValueChange: (value) => setSelectedVariantId(Number(value)),
879
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
880
+ className: "w-48 max-w-full",
881
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: "Select variant" })
882
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, {
883
+ position: "popper",
884
+ className: "max-h-60",
885
+ children: variants.map((v, idx) => v.id == null ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
886
+ value: String(v.id),
887
+ children: v.title || `Variant ${idx + 1}`
888
+ }, v.id))
889
+ })]
890
+ })]
891
+ })
892
+ }),
893
+ selectedVariant?.subscription_only && !selectedVariant?.allow_subscription && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
894
+ className: "text-muted-foreground text-sm",
895
+ children: t("product_unavailable")
896
+ }),
897
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "mt-4 mb-3" }),
898
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
899
+ className: "flex items-center gap-3 pb-3",
900
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuantitySelector, {
901
+ quantity,
902
+ setQuantity
903
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
904
+ variant: "default",
905
+ className: "flex-1 gap-2 py-2 text-base font-medium",
906
+ disabled: selectedVariant?.subscription_only === true && !selectedVariant?.allow_subscription,
907
+ "data-fluid-add-to-cart": cartVariantId,
908
+ "data-fluid-quantity": quantity,
909
+ "data-fluid-subscribe": isSubscribe,
910
+ "data-fluid-subscription-plan-id": isSubscribe ? String(resolvedPlanId ?? "") : "",
911
+ "data-fluid-open-cart-after-add": "false",
912
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ShoppingCart, { className: "h-4 w-4" }), isSubscribe ? t("subscribe") : t("add_to_cart")]
913
+ })]
914
+ })
915
+ ] })
916
+ ]
917
+ })]
918
+ })
919
+ })
920
+ });
921
+ }
922
+ function ShopApp({ companyLogoUrl, renderImage, productId: controlledProductId, onSelectProduct: onSelectProductProp, onBack: _onBack, cartButton }) {
923
+ const [internalProductId, setInternalProductId] = (0, react.useState)(null);
924
+ const activeProductId = controlledProductId !== void 0 ? controlledProductId : internalProductId;
925
+ const handleSelectProduct = onSelectProductProp ?? setInternalProductId;
926
+ if (activeProductId) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductDetail, {
927
+ productId: activeProductId,
928
+ renderImage
929
+ });
930
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductListing, {
931
+ companyLogoUrl,
932
+ renderImage,
933
+ onSelectProduct: handleSelectProduct,
934
+ cartButton
935
+ });
936
+ }
937
+ //#endregion
938
+ //#region ../../cart/ui/src/components/cart-script.tsx
939
+ const SCRIPT_ID = "fluid-cdn-script";
940
+ const LEAD_CAPTURE_ID = "fluid-lead-capture-suppress";
941
+ const DEFAULT_SCRIPT_SRC = "https://assets.fluid.app/scripts/fluid-sdk/latest/web-widgets/index.js";
942
+ function CartScript({ subdomain, authJwt, bffMode, scriptSrc, apiBaseUrl, debug }) {
943
+ const authJwtRef = (0, react.useRef)(authJwt);
944
+ authJwtRef.current = authJwt;
945
+ (0, react.useEffect)(() => {
946
+ if (!subdomain) return;
947
+ if (document.getElementById(SCRIPT_ID)) return;
948
+ const script = document.createElement("script");
949
+ script.id = SCRIPT_ID;
950
+ script.src = scriptSrc ?? DEFAULT_SCRIPT_SRC;
951
+ script.type = "module";
952
+ script.crossOrigin = "anonymous";
953
+ script.dataset.fluidShop = subdomain;
954
+ if (bffMode) script.dataset.bffMode = "true";
955
+ else if (authJwtRef.current) script.dataset.authJwt = authJwtRef.current;
956
+ if (apiBaseUrl) script.dataset.fluidApiBaseUrl = apiBaseUrl;
957
+ if (debug) script.dataset.debug = "true";
958
+ document.head.appendChild(script);
959
+ const leadCapture = document.createElement("fluid-lead-capture-widget");
960
+ leadCapture.id = LEAD_CAPTURE_ID;
961
+ leadCapture.setAttribute("hide-widget", "true");
962
+ document.body.appendChild(leadCapture);
963
+ return () => {
964
+ const existing = document.getElementById(SCRIPT_ID);
965
+ if (existing) existing.remove();
966
+ const existingLeadCapture = document.getElementById(LEAD_CAPTURE_ID);
967
+ if (existingLeadCapture) existingLeadCapture.remove();
968
+ };
969
+ }, [
970
+ subdomain,
971
+ bffMode,
972
+ scriptSrc,
973
+ apiBaseUrl,
974
+ debug
975
+ ]);
976
+ return null;
977
+ }
978
+ //#endregion
979
+ //#region ../../cart/ui/src/components/cart-widget.tsx
980
+ function CartWidget({ theme }) {
981
+ const [mounted, setMounted] = (0, react.useState)(false);
982
+ const widgetRef = (0, react.useRef)(null);
983
+ (0, react.useEffect)(() => {
984
+ setMounted(true);
985
+ }, []);
986
+ (0, react.useEffect)(() => {
987
+ if (!mounted) return;
988
+ const el = widgetRef.current;
989
+ if (!el) return;
990
+ if (theme) el.setAttribute("theme", JSON.stringify(theme));
991
+ else el.removeAttribute("theme");
992
+ }, [theme, mounted]);
993
+ const widget = react.default.createElement("fluid-cart-widget", {
994
+ ref: (el) => {
995
+ widgetRef.current = el;
996
+ },
997
+ "data-fluid-widget": "true",
998
+ "hide-widget": "true",
999
+ "is-primary": "true"
1000
+ });
1001
+ if (mounted) return (0, react_dom.createPortal)(widget, document.body);
1002
+ return null;
1003
+ }
1004
+ //#endregion
1005
+ //#region ../../cart/ui/src/components/cart-button.tsx
1006
+ const MAX_SDK_POLL_ATTEMPTS = 50;
1007
+ function CartButton({ onCheckout }) {
1008
+ const [initialCount, setInitialCount] = (0, react.useState)(0);
1009
+ const navigateToCheckout = (0, react.useCallback)(() => {
1010
+ if (!window.FluidCommerceSDK) {
1011
+ console.error("FluidCommerceSDK not available");
1012
+ return;
1013
+ }
1014
+ try {
1015
+ const checkoutUrl = window.FluidCommerceSDK.getCheckoutUrl();
1016
+ if (!checkoutUrl) {
1017
+ console.error("No checkout URL available");
1018
+ return;
1019
+ }
1020
+ onCheckout?.(checkoutUrl);
1021
+ } catch (error) {
1022
+ console.error("Error getting checkout URL:", error);
1023
+ }
1024
+ }, [onCheckout]);
1025
+ (0, react.useEffect)(() => {
1026
+ let timeoutId = null;
1027
+ let attempts = 0;
1028
+ let cancelled = false;
1029
+ const setupSDK = () => {
1030
+ if (cancelled) return;
1031
+ if (window.FluidCommerceSDK) {
1032
+ if (onCheckout) window.FluidCommerceSDK.setOnCheckout(navigateToCheckout);
1033
+ const count = window.FairShareSDK?.getCartItemCount?.();
1034
+ if (count != null) setInitialCount(count);
1035
+ } else if (attempts < MAX_SDK_POLL_ATTEMPTS) {
1036
+ attempts++;
1037
+ timeoutId = setTimeout(setupSDK, 100);
1038
+ }
1039
+ };
1040
+ setupSDK();
1041
+ return () => {
1042
+ cancelled = true;
1043
+ if (timeoutId) clearTimeout(timeoutId);
1044
+ };
1045
+ }, [navigateToCheckout, onCheckout]);
1046
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
1047
+ className: "bg-primary text-primary-foreground hover:bg-primary/70 relative flex h-8 items-center gap-2 rounded-sm px-3 py-1 text-xs",
1048
+ onClick: () => {
1049
+ window.fluidCart?.open();
1050
+ },
1051
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1052
+ className: "relative",
1053
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ShoppingCart, { className: "size-4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1054
+ id: "fluid-cart-count",
1055
+ className: "bg-primary-foreground text-primary absolute -top-1 -right-2 flex h-3.5 w-3.5 items-center justify-center rounded-full text-[8px] font-bold",
1056
+ children: initialCount
1057
+ })]
1058
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Cart" })]
1059
+ });
1060
+ }
1061
+ //#endregion
1062
+ //#region ../../cart/ui/src/components/shop-container.tsx
1063
+ function ShopContainer({ children, className = "", cartScript, cartWidget }) {
1064
+ const containerRef = (0, react.useRef)(null);
1065
+ const [portalContainer, setPortalContainer] = (0, react.useState)(null);
1066
+ (0, react.useEffect)(() => {
1067
+ const currentContainer = containerRef.current;
1068
+ if (!currentContainer) return;
1069
+ const reactContentWrapper = document.createElement("div");
1070
+ reactContentWrapper.id = "react-content-wrapper";
1071
+ reactContentWrapper.style.cssText = `
1072
+ position: relative;
1073
+ `;
1074
+ reactContentWrapper.className = "min-h-full";
1075
+ currentContainer.appendChild(reactContentWrapper);
1076
+ setPortalContainer(reactContentWrapper);
1077
+ return () => {
1078
+ if (currentContainer && reactContentWrapper) try {
1079
+ currentContainer.removeChild(reactContentWrapper);
1080
+ } catch (e) {
1081
+ console.warn("Failed to cleanup isolated container:", e);
1082
+ }
1083
+ setPortalContainer(null);
1084
+ };
1085
+ }, []);
1086
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1087
+ ref: containerRef,
1088
+ className: `isolated-shop-wrapper ${className} h-full`,
1089
+ children: portalContainer && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1090
+ cartScript,
1091
+ cartWidget,
1092
+ children
1093
+ ] }), portalContainer)
1094
+ }) });
1095
+ }
1096
+ //#endregion
1097
+ //#region ../../shop/core/src/translation-adapter.ts
1098
+ const shopDomain = require_static_dict_adapter.createDomainTranslations({
1099
+ fallback: {
1100
+ breadcrumb: "Shop",
1101
+ product_fallback_name: "Product",
1102
+ search_placeholder: "Search products...",
1103
+ sort_by: "Sort By",
1104
+ sort_title_asc: "Title (A-Z)",
1105
+ sort_title_desc: "Title (Z-A)",
1106
+ sort_price_asc: "Price (Low to High)",
1107
+ sort_price_desc: "Price (High to Low)",
1108
+ sort_recent: "Recently Updated",
1109
+ sort_oldest: "Oldest Updated",
1110
+ no_products: "There are no products available at the moment.",
1111
+ no_search_results: "No products match \"{{term}}\". Try a different search term.",
1112
+ error_loading: "Unable to load product",
1113
+ error_generic: "Something went wrong. Please try again later.",
1114
+ product_not_found: "Product not found",
1115
+ product_not_found_description: "The product you're looking for doesn't exist.",
1116
+ product_description: "Product Description",
1117
+ no_title: "No title available",
1118
+ add_to_cart: "Add to Cart",
1119
+ subscribe: "Subscribe",
1120
+ subscribe_and_save: "Subscribe & Save {{percentage}}%",
1121
+ one_time_purchase: "One-Time Purchase",
1122
+ delivery_frequency: "Delivery Frequency:",
1123
+ select_delivery_schedule: "Select delivery schedule",
1124
+ purchase_bundle: "Purchase Bundle",
1125
+ bundle_unavailable: "Bundle configuration is unavailable. Please contact support.",
1126
+ product_unavailable: "This product is unavailable for purchase.",
1127
+ ratings_and_reviews: "Ratings and reviews",
1128
+ ratings_count: "{{count}} ratings",
1129
+ select_option: "Select {{name}}"
1130
+ },
1131
+ loaders: {
1132
+ de: () => Promise.resolve().then(() => require("./de-CA1BpazO.cjs")).then((m) => m.default),
1133
+ el: () => Promise.resolve().then(() => require("./el-BVROkdqG.cjs")).then((m) => m.default),
1134
+ es: () => Promise.resolve().then(() => require("./es-C2uchKja.cjs")).then((m) => m.default),
1135
+ fr: () => Promise.resolve().then(() => require("./fr-C-2Pj7D2.cjs")).then((m) => m.default),
1136
+ he: () => Promise.resolve().then(() => require("./he-BNgtWUzu.cjs")).then((m) => m.default),
1137
+ hu: () => Promise.resolve().then(() => require("./hu-BR0rOtJC.cjs")).then((m) => m.default),
1138
+ id: () => Promise.resolve().then(() => require("./id-52itow18.cjs")).then((m) => m.default),
1139
+ it: () => Promise.resolve().then(() => require("./it-CbZjaErj.cjs")).then((m) => m.default),
1140
+ ja: () => Promise.resolve().then(() => require("./ja-BaU2QXo2.cjs")).then((m) => m.default),
1141
+ ko: () => Promise.resolve().then(() => require("./ko-vQjiRfrX.cjs")).then((m) => m.default),
1142
+ nl: () => Promise.resolve().then(() => require("./nl-DRxCBp_v.cjs")).then((m) => m.default),
1143
+ pl: () => Promise.resolve().then(() => require("./pl-AsC20yM9.cjs")).then((m) => m.default),
1144
+ pt: () => Promise.resolve().then(() => require("./pt-BBFH5zDu.cjs")).then((m) => m.default),
1145
+ ro: () => Promise.resolve().then(() => require("./ro-DS3mARiW.cjs")).then((m) => m.default),
1146
+ ru: () => Promise.resolve().then(() => require("./ru-CKfstS2M.cjs")).then((m) => m.default),
1147
+ th: () => Promise.resolve().then(() => require("./th-BYXBW0X2.cjs")).then((m) => m.default),
1148
+ tl: () => Promise.resolve().then(() => require("./tl-lZlSu-sM.cjs")).then((m) => m.default),
1149
+ tr: () => Promise.resolve().then(() => require("./tr-CifdAA_w.cjs")).then((m) => m.default),
1150
+ zh_CN: () => Promise.resolve().then(() => require("./zh_CN-BWIy2qoV.cjs")).then((m) => m.default),
1151
+ zh_TW: () => Promise.resolve().then(() => require("./zh_TW-D86GUR9C.cjs")).then((m) => m.default)
1152
+ }
1153
+ });
1154
+ function createShopTranslationAdapter(locale, dict) {
1155
+ return require_static_dict_adapter.createStaticDictAdapter(locale, dict);
1156
+ }
1157
+ //#endregion
1158
+ //#region src/providers/ShopTranslationBridge.tsx
1159
+ function ShopTranslationBridge({ children }) {
1160
+ const { locale } = require_static_dict_adapter.useActiveLocale();
1161
+ const dict = require_static_dict_adapter.useDomainDict(shopDomain, locale);
1162
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShopTranslationProvider, {
1163
+ value: (0, react.useMemo)(() => createShopTranslationAdapter(locale, dict), [locale, dict]),
1164
+ children
1165
+ });
1166
+ }
1167
+ //#endregion
1168
+ //#region src/screens/ShopScreen.tsx
1169
+ function ShopScreen(props) {
1170
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShopTranslationBridge, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShopScreenContent, { ...props }) });
1171
+ }
1172
+ function ShopScreenContent({ background, textColor, accentColor, padding, borderRadius, ...divProps }) {
1173
+ const { config } = require_FluidProvider.useFluidContext();
1174
+ const { t } = useShopTranslation();
1175
+ const { data: store } = require_use_store.useStore();
1176
+ const { currentSlug, navigate } = require_AppNavigationContext.useAppNavigation();
1177
+ const countryCode = config.countryIso ?? "US";
1178
+ const subdomain = store?.subdomain;
1179
+ const productId = currentSlug.split("/")[1] ?? null;
1180
+ (0, react.useEffect)(() => {
1181
+ if (!countryCode) return;
1182
+ const sdk = () => window.FairShareSDK;
1183
+ let done = false;
1184
+ let inFlight = false;
1185
+ const tryUpdate = async () => {
1186
+ const fairShareSdk = sdk();
1187
+ if (done || inFlight || !fairShareSdk) return;
1188
+ inFlight = true;
1189
+ try {
1190
+ await fairShareSdk.updateLocaleSettings({ country: countryCode });
1191
+ done = true;
1192
+ clearInterval(id);
1193
+ } catch {} finally {
1194
+ inFlight = false;
1195
+ }
1196
+ };
1197
+ let attempts = 0;
1198
+ const id = setInterval(() => {
1199
+ if (attempts >= 50) {
1200
+ console.warn("[FairShare] updateLocaleSettings: gave up after 50 attempts — session never became ready", { country: countryCode });
1201
+ clearInterval(id);
1202
+ return;
1203
+ }
1204
+ attempts++;
1205
+ tryUpdate();
1206
+ }, 100);
1207
+ return () => {
1208
+ done = true;
1209
+ clearInterval(id);
1210
+ };
1211
+ }, [countryCode]);
1212
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1213
+ !productId && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScreenHeaderContext.ScreenHeaderBreadcrumbs, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
1214
+ className: "text-lg",
1215
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
1216
+ className: "font-semibold",
1217
+ children: t("breadcrumb")
1218
+ }) })
1219
+ }) }) }),
1220
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScreenHeaderContext.ScreenHeaderActions, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1221
+ className: "flex items-center gap-4",
1222
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CartButton, {})
1223
+ }) }),
1224
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1225
+ ...divProps,
1226
+ className: divProps.className ?? "",
1227
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShopContainer, {
1228
+ cartScript: subdomain ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CartScript, {
1229
+ subdomain,
1230
+ bffMode: true,
1231
+ scriptSrc: {}.env.DEV ? String({}.env.VITE_FAIRSHARE_SDK_URL || "http://localhost:4444/index.js") : void 0,
1232
+ apiBaseUrl: {}.env.DEV ? String({}.env.VITE_FAIRSHARE_API_BASE_URL || "http://api.fluid.localhost:3000") : void 0,
1233
+ debug: {}.env.DEV
1234
+ }) : null,
1235
+ cartWidget: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CartWidget, {}),
1236
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PortalProductsApiProvider.PortalProductsApiProvider, { children: [productId && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductBreadcrumb, { productId }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShopApp, {
1237
+ companyLogoUrl: store?.logo_url ?? void 0,
1238
+ productId,
1239
+ onSelectProduct: (id) => navigate(`shop/${id}`),
1240
+ onBack: () => navigate("shop")
1241
+ })] })
1242
+ })
1243
+ })
1244
+ ] });
1245
+ }
1246
+ const shopScreenPropertySchema = {
1247
+ widgetType: "ShopScreen",
1248
+ displayName: "Shop Screen",
1249
+ tabsConfig: [{
1250
+ id: "styling",
1251
+ label: "Styling"
1252
+ }],
1253
+ fields: []
1254
+ };
1255
+ /**
1256
+ * Renders inside PortalProductsCoreProvider to set breadcrumbs with the
1257
+ * product name: "Shop > {product name}". Overrides the parent's "Shop"
1258
+ * breadcrumb once product data loads.
1259
+ */
1260
+ function ProductBreadcrumb({ productId }) {
1261
+ const { navigate } = require_AppNavigationContext.useAppNavigation();
1262
+ const { t } = useShopTranslation();
1263
+ const { product } = require_PortalProductsApiProvider.usePortalProductDetail({ productId });
1264
+ const productName = product?.name ?? t("product_fallback_name");
1265
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScreenHeaderContext.ScreenHeaderBreadcrumbs, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
1266
+ className: "text-lg",
1267
+ children: [
1268
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
1269
+ onClick: () => navigate("shop"),
1270
+ className: "cursor-pointer font-semibold",
1271
+ children: t("breadcrumb")
1272
+ }) }),
1273
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
1274
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
1275
+ className: "font-semibold",
1276
+ children: productName
1277
+ }) })
1278
+ ]
1279
+ }) }) });
1280
+ }
1281
+ //#endregion
1282
+ Object.defineProperty(exports, "ShopScreen", {
1283
+ enumerable: true,
1284
+ get: function() {
1285
+ return ShopScreen;
1286
+ }
1287
+ });
1288
+ Object.defineProperty(exports, "shopScreenPropertySchema", {
1289
+ enumerable: true,
1290
+ get: function() {
1291
+ return shopScreenPropertySchema;
1292
+ }
1293
+ });
1294
+
1295
+ //# sourceMappingURL=ShopScreen-BgiNBkIk.cjs.map