@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
@@ -1,1295 +0,0 @@
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-CjPctz3q.cjs")).then((m) => m.default),
1133
- el: () => Promise.resolve().then(() => require("./el-BdbemgXl.cjs")).then((m) => m.default),
1134
- es: () => Promise.resolve().then(() => require("./es-CiGfOfqA.cjs")).then((m) => m.default),
1135
- fr: () => Promise.resolve().then(() => require("./fr-BXkj4XVE.cjs")).then((m) => m.default),
1136
- he: () => Promise.resolve().then(() => require("./he-CdDmyq0k.cjs")).then((m) => m.default),
1137
- hu: () => Promise.resolve().then(() => require("./hu-BSPTfhWR.cjs")).then((m) => m.default),
1138
- id: () => Promise.resolve().then(() => require("./id-NeJHVkY8.cjs")).then((m) => m.default),
1139
- it: () => Promise.resolve().then(() => require("./it-5pXu8eWE.cjs")).then((m) => m.default),
1140
- ja: () => Promise.resolve().then(() => require("./ja-DobSeN1K.cjs")).then((m) => m.default),
1141
- ko: () => Promise.resolve().then(() => require("./ko-CuJFyarb.cjs")).then((m) => m.default),
1142
- nl: () => Promise.resolve().then(() => require("./nl-UaKnUkiF.cjs")).then((m) => m.default),
1143
- pl: () => Promise.resolve().then(() => require("./pl-CK-QOBHU.cjs")).then((m) => m.default),
1144
- pt: () => Promise.resolve().then(() => require("./pt-BLHjWaSa.cjs")).then((m) => m.default),
1145
- ro: () => Promise.resolve().then(() => require("./ro-nugOenVq.cjs")).then((m) => m.default),
1146
- ru: () => Promise.resolve().then(() => require("./ru-DH4xf5h_.cjs")).then((m) => m.default),
1147
- th: () => Promise.resolve().then(() => require("./th-BG8R3dAP.cjs")).then((m) => m.default),
1148
- tl: () => Promise.resolve().then(() => require("./tl-ByorVCxH.cjs")).then((m) => m.default),
1149
- tr: () => Promise.resolve().then(() => require("./tr-DcRheecc.cjs")).then((m) => m.default),
1150
- zh_CN: () => Promise.resolve().then(() => require("./zh_CN-CubDPpC6.cjs")).then((m) => m.default),
1151
- zh_TW: () => Promise.resolve().then(() => require("./zh_TW-BrH-zluV.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-Cr_XcWdY.cjs.map